## 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: убрать колонку/правки и перезапустить.