# Модели базы данных

В основе лежит реляционная база данных (PostgreSQL). Основные сущности:

## Пользователи (users)
Хранит информацию об аккаунтах. Каждый пользователь может быть идентифицирован через один или несколько способов:
- Идентификатор в российском ID-сервисе (VK, MAX, Яндекс)
- Привязанный Telegram ID (опционально, для доставки лент)
- Email (для входа по почте)

Поля: уникальные идентификаторы, флаги премиум-статуса, настройки (время отправки), дата последней активности, согласие на обработку данных.

## Подписки на источники (subscriptions)
Связывает пользователя с источниками новостей. Каждая запись содержит:
- Тип источника (rss, telegram, vk)
- Значение (URL, username и т.д.)
- Статус активности

## Очередь сбора (collector_queue)
Задачи на сбор новостей для конкретного пользователя. Поля: приоритет, статус (pending/running/done/failed), время создания и завершения, идентификатор сообщения о прогрессе.

## Кэш источников (source_cache)
Сохраняет результаты парсинга для повторного использования в течение заданного TTL.

## Платёжные логи (payment_log)
История транзакций и подписок.

## Категории источников (source_categories)
Иерархическая структура для каталога готовых источников (доступна через WebApp).

## Вспомогательные таблицы
- Токены авторизации для ботов (bot_auth_tokens)
- Сессии MAX (max_auth_sessions)
- Коды подтверждения email (email_verification_codes)
- Логины попыток (login_attempts)

Все таблицы содержат стандартные поля `created_at`, `updated_at` (где нужно), индексы для быстрого поиска по идентификаторам пользователей и статусам.
