Состояния задания
Минимальная цепочка: принято, отправлено, генерируется, ответ получен, доставлено. Вместе с ней сохраняют внешний questionId и номер уже отправленного фрагмента.
Почему нельзя повторять весь запрос
Сетевой таймаут не означает, что сервис не принял вопрос. Повторная отправка создаёт две генерации. Безопаснее продолжать опрос уже полученного идентификатора.
Параллельность
Ограниченный пул воркеров защищает сервис и делает очередь предсказуемой. Один пользователь держит один активный вопрос, остальные видят своё положение или статус ожидания.
Очистка данных
После успешной доставки текст вопроса и ответа можно удалить, оставив технический статус и обезличенные метрики. Это снижает риск хранения чувствительной информации.
Проверка перед запуском
- Состояния хранятся в БД
- Есть внешний идентификатор
- Повтор ограничен безопасным этапом
- Данные очищаются после доставки