4.7 KiB
selected-layout-stay: отбор без ухода со страницы + удобный layout отобранных
Why
Два замечания пользователя по веб-интерфейсу:
-
«⭐ Отобрать» уводит со страницы кандидатов. При отметке поста (single-кнопка или bulk) редирект идёт на
/selected— поток отбора разрывается: после каждого отбора нужно возвращаться назад в очередь кандидатов. Пользователь: «При отметке поста на странице кандидатов не нужно открывать страницу отобранных — остаёмся на странице кандидатов». -
Layout страницы отобранных неудобный:
- поля «Мой пост» и «Оригинальный пост» высотой всего несколько строчек (textarea rows=8, оригинал max-height:300px) — не хватает места для работы с текстом;
- резюме оригинального поста спрятано внизу блока оригинала — должно быть под блоком кнопок «Обработать моделью»;
- поле комментария и кнопки публикации стоят в середине страницы — должны быть в самом низу;
- внизу страницы остаётся пустое место (панели
height: 82vh, контент не растягивается) — нужно использовать всё окно браузера по высоте.
What Changes
1. Отбор остаётся на кандидатах (web/app.py)
post_select()(POST /posts/{id}/select): редирект после отбора —_cand_back(group_by, direction, own, q, src="candidates")вместоsrc="selected"(пост ушёл из очереди, возвращаемся в кандидаты в той же группировке/фильтрах).candidates_bulk()action == "select": редирект наback(текущая группировка + фильтры, src=candidates из скрытого поля формы) вместо перехода в/selected.
2. Layout отобранных (web/templates/selected.html)
Правая панель перестраивается по вертикали (flex-колонка на всю высоту окна):
- Заголовок поста + бейджи (как сейчас).
- Блок кнопок «🤖 Обработать моделью / ✍️ Переписать / 🚫 Отклонить».
- Резюме (
selected.summary) — сразу под кнопками, отдельный блок. - Разделитель.
- «Мой пост» (textarea) + «Оригинальный пост» (текст+медиа) — растянуты на всю оставшуюся высоту (flex-grow-1, min-height:0, оригинал — overflow-auto).
- В самом низу: поле «💬 Мой комментарий» + «✅ Опубликовать» / «💾 Сохранить комментарий» (border-top поверх).
Высота панелей: 82vh → calc(100vh - 160px) (navbar 4.5rem + заголовок +
форма фильтров) — страница использует всё окно, пустого места внизу нет.
То же для левой панели (max-height) и для страницы кандидатов
(web/templates/candidates.html), чтобы поведение было консистентным.
Why Not
- Не менять переход после «✅ Опубликовать» (на опубликованные) — осознанное поведение, не просили.
- Не добавлять «вернуться к следующему кандидату» автоматом — редирект в очередь с сохранением фильтров достаточен и предсказуем.
Impact
- Файлы:
web/app.py(2 точки редиректа),web/templates/selected.html(правая панель),web/templates/candidates.html(высоты панелей). - Данные: без изменений.
- Сервис:
vesti-web(:8400) — перезапуск. - Rollback: откатить коммит/вернуть редиректы на
src="selected"и высоты82vh, перезапустить.