Сбой AI-перевода при ошибках LLM 503 — отсутствует логика повторных попыток
Баг: Когда любой провайдер LLM (Mistral, OpenAI) возвращает ошибку 503, модуль DiscourseAi::Translation молча пропускает перевод без повторных попыток.
Пример лога:
DiscourseAi::Completions::Endpoints::Mistral: status: 503
{“type”:“unreachable_backend”,“code”:“1100”}
DiscourseAi::Translation: Не удалось перевести тему X на русский язык
Корневая причина: В модуле DiscourseAi::Completions::Endpoints отсутствует логика повторных попыток для временных ошибок сервера. Это не специфично для конкретного провайдера — аналогичное поведение ранее наблюдалось и с OpenAI.
Ожидаемое поведение: Выполнять повторные попытки с экспоненциальной задержкой при получении ответов 503/504 перед тем, как помечать перевод как неудачный.
Предлагаемое решение: Добавить логику повторных попыток в модуле DiscourseAi::Completions::Endpoints для всех провайдеров единообразно.
Это влияет на любые экземпляры Discourse, использующие AI-перевод с поддержкой нескольких языков.