Files
kpa39l 4a166fa9d6 feat(web): перевод поста на русский локальной моделью (openspec post-translate)
Кнопка «🌐 Перевести» в карточках кандидатов и отобранных переводит пост
локальной моделью (qwen3:8b-nothink), результат в posts.translated_text
(идемпотентный ALTER при старте). Метка «Оригинальный пост» стала закладкой,
при готовом переводе рядом появляется закладка «Перевод» (активна по умолчанию),
переключение на vanilla JS. Повторный клик не тратит токены: перевод в БД.
call_ollama из classifier не подошла (парсит ответ как JSON) — прямой запрос
к Ollama /v1/chat/completions. POST /posts/{id}/translate, лимит 6000 символов.
2026-09-18 05:40:59 +00:00

11 lines
1.0 KiB
Markdown

# Задачи
- [x] web/app.py: идемпотентный ALTER TABLE posts ADD COLUMN translated_text (при старте)
- [x] web/app.py: helper _translate_text (прямой запрос к Ollama — call_ollama жёстко парсит JSON, для перевода непригоден; лимит 6000)
- [x] web/app.py: POST /posts/{post_id}/translate (повторный клик — без LLM, проверено)
- [x] web/templates/candidates.html: закладки «Оригинал»/«Перевод» + кнопка «🌐 Перевести»
- [x] web/templates/selected.html: то же в колонке оригинала
- [x] vanilla JS переключения вкладок (scripts-блок, паттерн bulk-чекбоксов)
- [x] openspec validate post-translate — чисто
- [x] Рестарт vesti-web, ручная проверка: пост EN → «Перевести» → закладка «Перевод»; повторный клик — без модели
- [ ] Обновить STATUS.md