AI Translation пропускает локаль португальского языка (pt) — пост переведён на все языки, кроме португальского

Сбой 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-перевод с поддержкой нескольких языков.