mirror of
https://gitverse.ru/kpa39l/vesti.git
synced 2026-09-29 18:05:03 +00:00
3.2 KiB
3.2 KiB
archive-navigation
Страница «Опубликовано» (/published) — настоящий архив с навигацией по годам и месяцам.
Why
Сейчас /published — просто плоский список последних 100 опубликованных постов
без какой-либо навигации. С ростом архива найти пост по дате невозможно: нет ни
периодов, ни фильтров, ни разбивки. Это противоречит назначению страницы —
«архив опубликованного».
Пользователь хочет классический архив: дерево лет/месяцев слева или справа, посты — за выбранный период. Чтобы не занимать место вверху страницы (навигация вверху слишком громоздкая), выбрана правая колонка (Q1–Q10, grill-with-docs 2026-09-20, записано в AGENT.MD).
What Changes
- web/app.py, роут
GET /published:- принимает query-параметры
year(YYYY),month(MM),page(по умолчанию 1). - строит дерево навигации:
SELECT strftime('%Y', published_at) y, strftime('%m', published_at) m, COUNT(*) n FROM posts WHERE status='published' GROUP BY y, m→ группировка по годам, внутри — месяцы с количеством. Группа «Без даты» — посты с пустымpublished_at(характер: могут появиться; сейчас 0). - фильтрует посты по выбранному периоду:
year+month(все посты за год, если месяц не указан), либо «Все посты» (без параметров). - пагинация по 10 постов (LIMIT 10 OFFSET).
- рендер в
published.htmlс деревом навигации, списком постов, подсветкой активного периода.
- принимает query-параметры
- web/templates/published.html:
- правая колонка (Bootstrap
col-md-3+ sticky) — дерево годов/месяцев со счётчиками, ссылка «Все посты», группа «Без даты»; пустые периоды не выводятся. - слева — список постов за выбранный период + Bootstrap pagination по 10 (prev/next + номера).
- на мобильных — колонка сворачивается (Bootstrap collapse).
- правая колонка (Bootstrap
- web/app.py: хелпер построения дерева (чистая функция, тестируемая).
- Обновить
STATUS.md,CONTEXT.md(глоссарий уже добавлен).
Rollback
- Откат:
git checkout -- web/app.py web/templates/published.html(change фиксирует состояние до правок), рестарт vesti-web.
Затронутые сервисы/порты
- vesti-web (:8400), внешний https://vesti.nixg.ru. БД SQLite — только чтение
через существующий
_db()(WAL + busy_timeout).