diff --git a/STATUS.md b/STATUS.md index f7f07f6..aa2c6e2 100644 --- a/STATUS.md +++ b/STATUS.md @@ -1,8 +1,14 @@ # VESTI — Статус -Обновлено: 2026-09-18 (активны: extract-post-sources, manual-direction, post-translate) +Обновлено: 2026-09-20 (активны: post-translate, archive-navigation, extract-post-sources-остаток, rich-repost-card-аудит) ## Текущее состояние +- **ПРИНЯТЫ В КОНТЕКСТ НЕЗАКОММИЧЕННЫЕ НАРАБОТКИ** (2026-09-20, проверена реализация): + - **extract-post-sources** — backend готов и в HEAD: `sources/extract.py` (extract_sources_from_text: Telegram-каналы + сайты, дедуп, лимит 5), `_post_sources` в app.py, `POST /sources/add-from-post`. **Остаток**: блок «Источники из поста» в candidates.html/selected.html НЕ добавлен (задача 4 в tasks.md открыта). Change валиден. + - **manual-direction** — готов и в HEAD: `post_reclassify` принимает `manual_direction`, `impl_reclassify` пишет его в БД без LLM; select направлений в selected.html. Change валиден. (Пост 1086 → tech, проверено автором.) + - **crawler-очередь** — worker.py (ThreadPoolExecutor, атомарный claim по posts, LLM-семафор к Ollama) + crawl_sources.py (фаза 1: сбор кандидатов) + страница /crawlers (статус alive/dead, очередь, кнопки «Запустить воркер»/«Сбросить dead»). **Файлы UNTRACKED** (worker.py, crawl_sources.py, crawlers.html, sources/extract.py, CONTEXT.md, docs/) — не коммитил (указание пользователя). + - **archive-navigation** — ТОЛЬКО ПЛАН (proposal/design/tasks + CONTEXT.md глоссарий): дерево годов/месяцев в /published, роут /published с year/month/page, пагинация по 10, правая колонка sticky, collapse на мобильных. Реализация НЕ начата (все задачи `[ ]`, /published — плоский список). + - **rich-repost-card** — tasks 0/13 (не начат), хотя формат публикации уже живёт в publisher/card.py. Требует аудита: проставить статус/закрыть или доделать. - **post-translate — В РАЗРАБОТКЕ** (2026-09-18): в карточках кандидатов и отобранных появилась кнопка **«🌐 Перевести»** — переводит пост на русский локальной моделью (qwen3:8b-nothink, Ollama). Результат сохраняется в `posts.translated_text` (новые посты — колонка добавляется при старте веба), кнопка после перевода скрывается, вместо неё — закладка «Перевод» рядом с «Оригинал» (активна по умолчанию, переключение без перезагрузки на vanilla JS). Повторный клик токены не тратит. Ошибки модели — редирект с `?error=translate:...`. Тест e2e на реальной модели пройден (пост 123: «Kali Purple Essential Training»). - **keep-bulk-checkboxes — ЗААРХИВИРОВАН И ЗАПУШЕН** (2026-09-17, коммит c8fe5f7): проверки массового выбора постов сохраняются между перезагрузками страницы при навигации по постам. Отметки хранятся в sessionStorage браузера (`vesti_bulk_candidates` / `vesti_bulk_selected`); при открытии поста (?selected=N) восстановленные чекбоксы остаются отмеченными, badge sel-count пересчитывается; при submit bulk-формы (Отобрать/Отклонить/Обработать/Опубликовать) отметки очищаются. Изоляция /candidates и /selected независимыми ключами. Попутно исправлен скрытый баг: чекбоксы лежат вне `