feat(candidates): флаг прочитанности (is_read), жирные непрочитанные, голубая заливка выбранного, дефолтная группировка по дате

This commit is contained in:
kpa39l
2026-09-15 16:42:55 +00:00
parent 562d787f1b
commit c09dff08ac
8 changed files with 211 additions and 5 deletions
@@ -0,0 +1,15 @@
# candidates-read-flag
- [x] Создан OpenSpec change (proposal/design) — `skip_specs: true`
- [x] `openspec validate candidates-read-flag` — чисто
- [x] db/schema.sql: колонка posts.is_read INTEGER DEFAULT 0
- [x] web/app.py: миграция is_read при старте (_migrate, идемпотентно)
- [x] web/app.py: GET /candidates и POST select/bulk: group_by по умолчанию 'date'
- [x] web/app.py: при selected → UPDATE posts SET is_read=1
- [x] candidates.html: непрочитанные — fw-bold, выбранный — active-row (светло-голубая заливка)
- [x] base.html: CSS .list-group-item.active-row (#dcecfc)
- [x] Тест (TestClient): миграция, прочтение при selected, дефолт date, классы карточек
- [x] Перезапуск `sudo systemctl restart vesti-web`
- [x] Ручная проверка в браузере: дата по умолчанию, жирные непрочитанные, голубая заливка выбранного
- [x] Обновить STATUS.md / TODO.md
- [x] Бэкап (крон 2:45 делает сам, вручную НЕ запускать)