mirror of
https://gitverse.ru/kpa39l/vesti.git
synced 2026-09-29 09:55:03 +00:00
68 lines
4.7 KiB
Markdown
68 lines
4.7 KiB
Markdown
# selected-layout-stay: отбор без ухода со страницы + удобный layout отобранных
|
||
|
||
## Why
|
||
|
||
Два замечания пользователя по веб-интерфейсу:
|
||
|
||
1. **«⭐ Отобрать» уводит со страницы кандидатов.** При отметке поста
|
||
(single-кнопка или bulk) редирект идёт на `/selected` — поток отбора
|
||
разрывается: после каждого отбора нужно возвращаться назад в очередь
|
||
кандидатов. Пользователь: «При отметке поста на странице кандидатов не
|
||
нужно открывать страницу отобранных — остаёмся на странице кандидатов».
|
||
|
||
2. **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-колонка на всю высоту окна):
|
||
|
||
1. Заголовок поста + бейджи (как сейчас).
|
||
2. Блок кнопок «🤖 Обработать моделью / ✍️ Переписать / 🚫 Отклонить».
|
||
3. **Резюме** (`selected.summary`) — сразу под кнопками, отдельный блок.
|
||
4. Разделитель.
|
||
5. «Мой пост» (textarea) + «Оригинальный пост» (текст+медиа) — **растянуты на
|
||
всю оставшуюся высоту** (flex-grow-1, min-height:0, оригинал — overflow-auto).
|
||
6. **В самом низу**: поле «💬 Мой комментарий» + «✅ Опубликовать» /
|
||
«💾 Сохранить комментарий» (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`, перезапустить. |