Some checks reported errors
continuous-integration/drone/push Build encountered an error
- Создана миграция 006_fix_missing_columns.py - Автоматически добавляет отсутствующие столбцы: * participations.account_id с FK на accounts * winners.is_notified, is_claimed, claimed_at - Миграция идемпотентна (безопасна для повторного выполнения) - Добавлен откат (downgrade) функционал - Обновлена документация в README.md - Создан отчет MIGRATION_006_REPORT.md Теперь изменения БД применяются через alembic upgrade head
2.6 KiB
2.6 KiB
Отчёт о Миграции База Данных 006
Дата: 17 ноября 2025 г.
Проблема
При рефакторинге и применении новой архитектуры выяснилось, что в базе данных отсутствуют некоторые столбцы, которые присутствуют в моделях SQLAlchemy.
Отсутствующие столбцы:
1. Таблица participations:
account_id(INTEGER) - внешний ключ на таблицуaccounts
2. Таблица winners:
is_notified(BOOLEAN) - флаг уведомления победителяis_claimed(BOOLEAN) - флаг получения призаclaimed_at(TIMESTAMP WITH TIME ZONE) - время получения приза
Решение
Создана миграция 006_fix_missing_columns.py которая:
Добавляет:
- participations.account_id с внешним ключом на accounts(id)
- winners.is_notified с значением по умолчанию FALSE
- winners.is_claimed с значением по умолчанию FALSE
- winners.claimed_at без значения по умолчанию (NULL)
Особенности реализации:
- Использует
DO $$ ... END $$;блоки для безопасного добавления столбцов - Проверяет существование столбцов перед добавлением (idempotent)
- Включает откат (downgrade) функцию для отмены изменений
- Поддерживает повторное выполнение без ошибок
Применение миграции:
alembic upgrade head
Результат:
✅ Все столбцы добавлены успешно
✅ Схема БД соответствует моделям SQLAlchemy
✅ Бот может создавать записи в таблице winners без ошибок
✅ Миграция готова для production развертывания
Версия после применения:
- До: 005 (add_chat_system)
- После: 006 (fix_missing_columns) ← HEAD
Для разработчиков:
При развертывании на новых серверах достаточно выполнить:
alembic upgrade head
Миграция автоматически проверит и добавит отсутствующие столбцы.