Files
kpa39l fc6d725bd1 candidates-mail-ui: двухпанельный интерфейс кандидатов (почтовый клиент)
- БД: posts.comment TEXT, posts.rewritten_text TEXT (ALTER TABLE, миграция применена)
- GET /candidates: двухпанельный рендер — слева список с группировкой
  (source/date/status, свертываемые <details>) + чекбоксы bulk,
  справа детали поста (действия, комментарий, пересказ, оригинал с медиа)
- Роуты: POST /candidates/select, /candidates/bulk (approve/reject/reject-old),
  /posts/{id}/comment, /posts/{id}/reclassify (qwen), /posts/{id}/rewrite (qwen)
- approve вынесен в impl_approve (переиспользуется bulk-approve: publisher + бандл)
- без JS (только формы); HTML: Jinja2 + Bootstrap 5.3
- Протестировано TestClient: группировка, bulk-reject, comment, reclassify
  (реальный qwen), rewrite (реальный qwen), поиск, media, published — зелёные
- openspec: change candidates-mail-ui архивирован (2026-09-13-candidates-mail-ui),
  spec влита в openspec/specs/candidates-mail-ui; validate — чисто
- docs: STATUS.md, WALKTHROUGH.md обновлены
2026-09-13 20:53:53 +00:00

1.9 KiB

tasks.md — candidates-mail-ui

Proposal

  • proposal.md — двухпанельный интерфейс кандидатов (почтовый клиент), группировка, bulk
  • design.md — архитектура (роуты, БД, шаблоны, минимум JS)

Implement

  • Проверить схему posts (status, поля) — уточнить, какие статусы есть (new/rejected/published)
  • Миграция: ALTER TABLE posts ADD COLUMN comment TEXT + rewritten_text TEXT (сделано в БД)
  • GET /candidates — двухпанельный рендер (левая колонка список+группировка, правая — детально)
  • Левая панель: группировка по source/date/status (сворачиваемые
    ), чекбоксы
  • POST /candidates/bulk — approve/reject/reject-old по ids[] (транзакция)
  • POST /posts/{id}/comment — сохранить комментарий (comment TEXT)
  • POST /posts/{id}/reclassify — перезапуск классификатора на посте (реальный qwen, протестирован)
  • POST /posts/{id}/rewrite — LLM-пересказ (qwen), возврат черновика для редактирования (реальный qwen, протестирован)
  • Правая панель: меню действий, блок комментария, оригинальный пост со всеми медиа
  • Шаблоны: candidates.html (двухколоночная), формы новых действий
  • Тест: группировка, bulk-отклонение, коммент, реклассификация, rewrite, поиск (TestClient, все зелёные)
  • openspec validate candidates-mail-ui — чисто
  • Обновить STATUS.md / WALKTHROUGH.md