Перейти к основному содержимому

Tables

NameColumnsComment
agent_tokens10Таблица персональных токенов агента. Сам секрет НЕ хранится — только его sha-256 хеш. Токен несёт личность владельца, поэтому внешний клиент (MCP-сервер) работает только со своими проектами.
app_settings3Таблица настроек приложения в формате ключ-значение. Используется для хранения глобальных параметров конфигурации, например флага завершения мастера первоначальной настройки. [CI test] проверка автосинка docs/database.
bot_env_variables7Таблица пользовательских переменных окружения бота Хранит кастомные key=value переменные, привязанные к конкретному токену
bot_groups25Таблица групп бота
bot_instances9Таблица запущенных экземпляров ботов ВАЖНО: После изменения этой схемы необходимо применить миграцию к базе данных!
bot_launch_history8Таблица истории запусков ботов — накапливает все запуски
bot_logs7Таблица логов ботов — хранит строки вывода stdout/stderr/status
bot_message_media6Таблица связи сообщений с медиафайлами
bot_messages13Таблица истории сообщений между ботом и пользователями
bot_projects18Таблица проектов ботов
bot_table_columns4Таблица bot_table_columns — колонки пользовательской таблицы
bot_table_rows4Таблица bot_table_rows — строки пользовательской таблицы (данные в JSONB)
bot_tables4Таблица bot_tables — пользовательские таблицы проекта
bot_templates28Таблица сценариев ботов
bot_tokens37Таблица токенов ботов
bot_users19Таблица пользователей бота
broadcast_campaigns19Таблица кампаний рассылок — одна запись на «большую рассылку», дочерние записи хранятся в broadcasts с ссылкой campaign_id
broadcast_results7Таблица результатов рассылки — по одной записи на каждого получателя
broadcasts20Таблица рассылок — хранит задания на массовую отправку сообщений. Рассылка может быть дочерней записью кампании («большой рассылки») — тогда заполнен campaignId
group_members18Таблица участников групп
media_file_tokens5Таблица file_id медиафайла по токенам ботов (денормализация fileIdsByToken). Уникальность пары (медиафайл, токен) гарантирует один file_id на бота.
media_files21Таблица медиафайлов
message_activity_daily5Дневные счётчики входящих/исходящих сообщений. Увеличиваются при записи сообщения; удаление из bot_messages их не уменьшает.
project_collaborators4Таблица коллабораторов проекта. Хранит связи между проектами и пользователями, имеющими доступ к ним.
project_versions8Таблица версий проектов — хранит снимки данных проекта (BotDataWithSheets)
storage_configs8Таблица реестра хранилищ: несколько S3 (разные бакеты/endpoint'ы/креды) и несколько локальных папок. Одно хранилище помечено активным для новых загрузок; читать можно из всех.
telegram_users8Таблица аутентифицированных пользователей Telegram
user_project_archives3Личный архив проектов: каждый пользователь может скрыть проект только у себя.
user_telegram_settings9Таблица пользовательских настроек для Telegram Client API
worker_processes8Таблица процессов воркеров — мониторинг Python worker pool

ER Diagram

erDiagram
agent_tokens }o--|| telegram_users : "owner_id"
bot_env_variables }o--|| bot_tokens : "token_id"
bot_groups }o--|| bot_projects : "project_id"
bot_groups }o--o| bot_tokens : "token_id"
bot_instances }o--|| bot_projects : "project_id"
bot_instances }o--|| bot_tokens : "token_id"
bot_launch_history }o--|| bot_projects : "project_id"
bot_launch_history }o--|| bot_tokens : "token_id"
bot_logs }o--|| bot_projects : "project_id"
bot_logs }o--|| bot_tokens : "token_id"
bot_logs }o--o| bot_launch_history : "launch_id"
bot_message_media }o--|| bot_messages : "message_id"
bot_message_media }o--|| media_files : "media_file_id"
bot_messages }o--|| bot_projects : "project_id"
bot_messages }o--o| media_files : "primary_media_id"
bot_projects }o--o| telegram_users : "owner_id"
bot_table_columns }o--|| bot_tables : "table_id"
bot_table_rows }o--|| bot_tables : "table_id"
bot_tables }o--|| bot_projects : "project_id"
bot_templates }o--o| telegram_users : "owner_id"
bot_tokens }o--|| bot_projects : "project_id"
bot_tokens }o--o| telegram_users : "owner_id"
broadcast_campaigns }o--|| bot_projects : "project_id"
broadcast_results }o--|| broadcasts : "broadcast_id"
broadcasts }o--|| bot_projects : "project_id"
broadcasts }o--o| broadcast_campaigns : "campaign_id"
group_members }o--|| bot_groups : "group_id"
media_file_tokens }o--|| media_files : "media_file_id"
media_file_tokens }o--|| bot_tokens : "token_id"
media_files }o--|| bot_projects : "project_id"
media_files }o--o| media_files : "thumbnail_media_id"
media_files }o--o| telegram_users : "uploaded_by"
media_files }o--o| storage_configs : "storage_config_id"
message_activity_daily }o--|| bot_projects : "project_id"
project_collaborators }o--|| bot_projects : "project_id"
project_collaborators }o--|| telegram_users : "user_id"
project_collaborators }o--o| telegram_users : "invited_by"
project_versions }o--|| bot_projects : "project_id"
project_versions }o--o| telegram_users : "author_id"
user_project_archives }o--|| telegram_users : "user_id"
user_project_archives }o--|| bot_projects : "project_id"