bot: модель данных и миграции #5
Notifications
Due Date
No due date set.
Blocks
Depends on
Reference: HSE/tgit#5
Reference in New Issue
Block a user
Описание
Таблицы из ARCHITECTURE §2.10 (v2): users, invites, access_attempts, fsm_state, drafts, draft_changes, pushes, pipeline_runs, container_snapshots, alerts, alert_deliveries, log_queries, agent_requests.
Желаемый результат
Подзадачи
app/bot/fsm_storage.py— FSM-хранилище aiogram поверх таблицыfsm_state(перенесено из #4), подключить вapp/bot/fsm.py::make_storage; тест: состояние переживает пересоздание Dispatcherapp/db/models.pyapp/db/session.pyalembic.ini,app/db/migrations/, первая ревизияinvites.token_hash,pushes.sha,alerts(kind, service, resolved_at)Анализ
Затрагиваемые файлы
app/db/alembic.iniОграничения и риски
tg_id— BIGINT. Содержимое черновика — BYTEA (≤ 100 КБ на файл). TTL-таблицы (container_snapshots, черновики) чистит фоновая задача.Как проверить
make test;alembic upgrade head && alembic downgrade baseна чистой БД.Лог выполнения
2026-10-13
2026-10-14
app/db/models.py— 13 таблиц; перечисления VARCHAR + CHECK (create_constraint=True— в SQLAlchemy 2 без этого CHECK не создаётся), JSON → JSONB на Postgres, BIGINT/INTEGER-ключи. Вpipeline_runsполеstage(ci/cd) вместоworkflow: вtgit-uploadsCI и CD — задачи одного workflow (ARCHITECTURE поправлен).0001автогенерацией + ручная чистка: импортsa.Textдля JSONB, удалены 18 дублей CHECK (колонка Enum создаёт свой).app.db.migrate,script_location = app.db:migrations— работает из site-packages). CLI:alembic.ini.SqlStorage— FSM поверхfsm_state(перенесено из #4), подключён вmake_storage. Тест поймал баг:state.clear()на несуществующий ключ пытался удалить несохранённую строку —/startупал бы в проде.cleanup_loopраз в час: истёкшие черновики, снимки контейнеров и попытки входа старше суток.ck_users_roleотклоняетroot,jsonb/bigint, дрейфа нет, downgrade base → upgrade head ✅.bot: модель данных, миграции и доступ по белому спискуto bot: модель данных и миграцииСмержено в
devчерез PR #32 (282920e) — закрываю.