fix(candidates): после Отклонить остаёмся на кандидатах, кнопки действий над комментарием

- reject/reject-old (single + bulk): редирект на /candidates с текущей
  группировкой вместо /candidates?status=rejected — не прерываем отбор.
  Отклонённые доступны через фильтр статуса.
- candidates.html: Обработать/Переписать/Отклонить — один ряд над полем
  комментария (после переноса Опубликовать в approve-форму кнопки съехали).

changes: candidates-buttons-order, reject-stay-candidates (skip_specs, валидны).
This commit is contained in:
kpa39l
2026-09-15 16:30:19 +00:00
parent ee2f8ac61a
commit 562d787f1b
11 changed files with 551 additions and 29 deletions
@@ -0,0 +1,46 @@
## Why
В прошлой сессии кнопку «Опубликовать» перенесли в approve-форму (вместе с
полем комментария). В результате в правой панели деталей кандидата кнопки
«Обработать моделью», «Переписать», «Отклонить» оказались ПОСЛЕ блока
комментария отдельным flex-рядом — визуально «съехали» и разорвали основной
ряд действий.
Пользователь: действия модератора должны быть над полем комментария, в одном
ряду с «Опубликовать».
## What Changes
- В `web/templates/candidates.html`, правая панель выбранного поста:
- Перенести кнопки «🤖 Обработать моделью», «✍️ Переписать», «🚫 Отклонить»
из отдельного flex-ряда ПОСЛЕ approve-формы в ОДИН ряд с кнопкой
«✅ Опубликовать» — НАД полем комментария.
- Итоговая структура блока действий (когда пост не опубликован/не отклонён):
```
[✅ Опубликовать] [🤖 Обработать моделью] [✍️ Переписать] [🚫 Отклонить]
💬 Мой комментарий (будет первым в канале):
[textarea комментария]
[💾 Сохранить комментарий]
```
- Логика видимости кнопок не меняется:
- «Опубликовать» — статус != published;
- «Обработать моделью», «Переписать» — статус != published;
- «Отклонить» — статус != rejected и != published.
## Why Not
- Не объединять все кнопки в одну approve-форму: «Сохранить комментарий»
использует отдельный эндпоинт (`/posts/{id}/comment`), а «Обработать
моделью»/«Переписать»/«Отклонить» — свои POST-эндпоинты; в одну форму их
не собрать без JS (а htmx/JS-сложная логика в проекте запрещены).
- Оставлять текущий порядок нельзя — кнопки визуально разорваны.
## Impact
- Файл: `web/templates/candidates.html` (правка только разметки, без JS и
эндпоинтов).
- Данные: без изменений.
- Сервис: `vesti-web` (:8400) — нужен перезапуск (Jinja2-кеш без --reload).
- Rollback: вернуть разметку и перезапустить сервис.