fix: resume interrupted translations without losing saved progress

This commit is contained in:
mrleo1nid committed 2026-10-27 04:41:17 +03:00
1 parent a8902deaf7
commit e14184435c
6 files changed
+321 -44

No files matched your search

+17 -2
View File
@@ -222,8 +222,11 @@ translate russian strings:
записывается в `localStorage` (`pg.translation.run`: что переводится, где
остановились, какое задание отправлено в переводчик). После обновления страницы
сайт сам продолжает: забирает готовое задание из переводчика, сохраняет его и идёт
дальше, а карточка и бейджи снова обновляются. Запись старше 30 минут не
подхватывается;
дальше, а карточка и бейджи снова обновляются. После ошибки или остановки
карточка и панель редактора предлагают «Возобновить»: сохранённые строки
остаются на месте, непереведённые (включая прошлые ошибки) повторяются.
Запись старше 30 минут тоже доступна для возобновления, но сама не запускается.
Состояние удаляется после успешного завершения или кнопкой «Убрать»;
* автоперевод идёт по списку так, как его видит пользователь: текущая
вкладка («Реплики» или «Имена и меню»), фильтр по файлу и поиск, сверху вниз.
Берутся строки «не переведено» (и «устарело» по желанию) страницами по 40;
@@ -265,6 +268,18 @@ translate russian strings:
цикл перевода, `MachineTranslate.tsx` — панель, `TranslatorSetup.tsx` —
страница настройки); проверки в `frontend/tests/translator-run.test.mjs`.
Сообщение `Model output was truncated or filtered` приходит от local-translator,
когда LM Studio возвращает `finish_reason=length` (исчерпан лимит ответа) либо
`content_filter`. По одному этому тексту отличить причины нельзя: для диагностики
нужны метрики вызова переводчика. Пачка ограничивается отдельно по числу строк
и по символам; лимит выходных токенов задаётся в конфигурации провайдера
local-translator. Повтор после такой ошибки использует вдвое меньшую пачку
(минимум одну строку). Успешный повтор убирает устаревшее сообщение ошибки модели.
Сбой получения строк или сохранения в библиотеку показывается отдельно с этапом
и HTTP-кодом, если сервер не вернул текст ошибки. Готовые результаты задания
и ключи уже сохранённых строк остаются в контрольной точке: возобновление не
отправляет готовое задание заново и не перезаписывает эти строки.
Ограничения: перевод идёт, пока открыта страница редактора; контекст
(кто говорит, соседние реплики) модели пока не передаётся, только текст строки;
Safari может запрещать https-странице обращаться к локальному http.