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