feat(candidates): список отобранных между кандидатами и опубликованными

- новый статус selected; в кандидатах только «⭐ Отобрать» (single+bulk)
- /selected — отдельный список: вся обработка (классификация/переписывание/комментарий/публикация)
- классификация только по кнопке (токены на кандидатов не тратятся)
- рядом с оригиналом — поле «✍️ Мой пост» (rewritten_text всегда виден), туда ложится черновик «Переписать»
- все обработчики учитывают src (candidates|selected) для редиректов
This commit is contained in:
kpa39l
2026-09-15 17:37:11 +00:00
parent b542e9b4fa
commit ae8af8de9c
9 changed files with 469 additions and 98 deletions
+14
View File
@@ -0,0 +1,14 @@
# selected-list
- [x] OpenSpec change создан (proposal/design) — skip_specs
- [x] openspec validate selected-list
- [x] web/app.py: GET /selected (двухпанельный, status=selected) + выбор поста (переклики с candidates)
- [x] web/app.py: POST /posts/{id}/select (new → selected) + bulk action=select
- [x] web/app.py: _cand_back(+src), все обработчики (reject/comment/reclassify/rewrite/rewrite-save/approve/bulk) — учитывают src
- [x] web/templates/selected.html: список + полный функционал + редактор «Мой пост» рядом с оригиналом
- [x] web/templates/candidates.html: только «⭐ Отобрать» (single + bulk) — убраны approve/reject/process/rewrite/comment/редактор
- [x] web/templates/base.html: навбар «⭐ Отобранные»
- [x] bulk rewrite (переписать выбранные)
- [x] Тесты: select single/bulk → /selected; кнопки; rewrite (реальный Ollama) → rewritten_text; живой HTTP
- [x] Откат тестовых мутаций (85/109 → new)
- [x] Обновить STATUS.md + коммит/пуш