mirror of
https://gitverse.ru/kpa39l/vesti.git
synced 2026-09-29 09:55:03 +00:00
docs: приём незакоммиченных наработок в контекст — задачи (выполненные/планируемые), статус, tasks.md
This commit is contained in:
@@ -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: sources/extract.py, _post_sources, POST /sources/add-from-post),
|
||||
manual-direction (impl_reclassify пишет manual_direction без LLM, select в selected.html),
|
||||
crawler-очередь (crawler/worker.py ThreadPoolExecutor, crawl_sources.py, /crawlers + crawlers.html).
|
||||
Код в HEAD (кроме untracked: worker.py, crawl_sources.py, extract.py, crawlers.html, CONTEXT.md, docs/).
|
||||
Не коммитил (по указанию пользователя). Добавлены задачи: выполненные и планируемые.
|
||||
2026-09-18 — post-translate: кнопка «🌐 Перевести» в карточках кандидатов и отобранных.
|
||||
Перевод на русский локальной моделью (qwen3:8b-nothink), результат в
|
||||
posts.translated_text (колонка добавляется идемпотентно при старте).
|
||||
@@ -40,6 +46,12 @@
|
||||
-->
|
||||
|
||||
## Текущее состояние
|
||||
- **ПРИНЯТЫ В КОНТЕКСТ НЕЗАКОММИЧЕННЫЕ НАРАБОТКИ** (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 независимыми ключами. Попутно исправлен скрытый баг: чекбоксы лежат вне `<form>` (атрибут form="bulk-form") → селектор `#bulk-form input[name="ids"]` не находил их; заменён на глобальный `input[name="ids"]`. Изменены только web/templates/candidates.html и selected.html (frontend, рестарт не нужен).
|
||||
- **address-field-enhancement — ЗААРХИВИРОВАН** (2026-09-16). Сделано и в проде: форма добавления источника — одно поле Address. Для telegram: `https://t.me/mknewsru` → slug=`mknewsru`, название «Мой Компьютер» (Telethon get_entity); для rss: `https://lwn.net/headlines/rss` → slug=`lwn`, название «LWN.net» (feedparser). Кнопка «🔎 Найти» в форме. direction — datalist из реальных значений (DIRECTIONS + БД), свободный ввод остаётся. БД не менялась (address — только UI-концепция, в yaml по-прежнему url/channel/feed_url).
|
||||
@@ -118,6 +130,10 @@ vesti-web (:8400) ──HTTP POST──▶ publisher-service (:8410) ──Bot A
|
||||
- [x] Тест e2e (dry-run): approve с dirs [linux,ai] → /published с distributed_dirs
|
||||
|
||||
## В работе / Следующие шаги
|
||||
- [ ] **archive-navigation** (2026-09-20, план готов): дерево годов/месяцев в /published — роут с year/month/page, `_archive_tree(conn)` GROUP BY, шаблон col-lg-3 sticky, collapse на мобильных, пагинация по 10 (tasks.md — 8 задач)
|
||||
- [ ] **extract-post-sources — остаток**: блок «Источники из поста» в candidates.html/selected.html (backend готов, шаблоны нет)
|
||||
- [ ] **rich-repost-card — аудит**: tasks 0/13, формат уже в publisher/card.py — проставить статус/закрыть или доделать
|
||||
- [ ] **Коммит незакоммиченных наработок** (ждёт решения пользователя): worker.py, crawl_sources.py, crawlers.html, sources/extract.py, CONTEXT.md, docs/, openspec changes, правки classifier/config/backup.sh/card.py/.env.example/AGENT*.md
|
||||
- [x] Бэкфилл своего канала @dedinit (задача 2.3) — **ЗАВЕРШЁН** (2026-09-10): fetched=1040, max_post_id=1092, 846 постов is_own=1 в БД
|
||||
- [x] publisher: медиа при Docker-запуске — **исправлено**: compose маунтит ../../media/media:/srv/publisher/media:ro
|
||||
- [x] systemd vesti-web.service + cron per-source + тихий watchdog — **юнит установлен** (подхватится при перезагрузке); **cron**: vesti-crawler-all-sources (`*/30`, тихий) + vesti-watchdog (`*/15`, Telegram при проблемах)
|
||||
|
||||
Reference in New Issue
Block a user