openspec: архив 14 завершённых change-ов (веб-фиксы, crawler-queue, own-content-hub, publisher-service); спеки влиты в openspec/specs

This commit is contained in:
kpa39l
2026-09-16 17:01:00 +00:00
parent 584582a48c
commit 771f6a8276
88 changed files with 1632 additions and 3 deletions
@@ -0,0 +1,45 @@
## Why
Список кандидатов — «почтовый клиент»: слева список карточек, справа детали.
Сейчас все карточки выглядят одинаково, не видно, какие посты уже смотрели,
а какой пост выбран (открыт) — не выделен, кроме цвета текста ссылки.
Пользователь хочет как в почтовых клиентах:
- непрочитанные посты — жирным шрифтом;
- прочитанные — обычным (как сейчас);
- выбранный (открытый) пост — светло-голубая заливка всей карточки.
Плюс: по умолчанию группировка должна быть ПО ДАТЕ (хронология получения),
а не по источнику.
## What Changes
- БД: колонка `posts.is_read INTEGER DEFAULT 0` (0 = не прочитан, 1 = прочитан).
- Web:
- выбор поста (GET /candidates?selected=N или POST /candidates/select)
помечает его `is_read=1`;
- карточка непрочитанного поста в списке — жирный текст (`fw-bold` на
заголовке/тексте), прочитанного — обычный (как сейчас);
- карточка выбранного поста — светло-голубая заливка всей карточки
(вместо текущего `fw-bold text-primary` на ссылке);
- дефолт `group_by` в GET /candidates и POST /candidates/select — `date`
вместо `source` (хронологический порядок получения: сегодня → вчера →
неделя → раньше).
## Why Not
- Не менять статус при публикации/отклонении: прочитанность — отдельный
флаг просмотра, не связан со статусом.
- Не делать авто-прочтение всех при заходе на страницу: только выбранный
пост становится прочитанным (как в почте).
- Группировка по дате — дефолт, но переключатель (источник/статус) остаётся.
## Impact
- Файлы: `db/schema.sql` (колонка), `web/app.py` (миграция при старте +
дефолт группировки + прочтение при выборе), `web/templates/candidates.html`
(классы карточек).
- Данные: ALTER TABLE (новые посты is_read=0 — непрочитанные; старые
после миграции тоже 0).
- Сервис: `vesti-web` (:8400) — перезапуск.
- Rollback: убрать колонку/правки и перезапустить.