feat: Добавлена миграция 006 для исправления схемы БД
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
This commit is contained in:
2025-11-17 05:36:55 +09:00
parent 4a741715f5
commit 0623de5046
3 changed files with 163 additions and 8 deletions

56
MIGRATION_006_REPORT.md Normal file
View File

@@ -0,0 +1,56 @@
# Отчёт о Миграции База Данных 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** которая:
### Добавляет:
1. **participations.account_id** с внешним ключом на accounts(id)
2. **winners.is_notified** с значением по умолчанию FALSE
3. **winners.is_claimed** с значением по умолчанию FALSE
4. **winners.claimed_at** без значения по умолчанию (NULL)
### Особенности реализации:
- Использует `DO $$ ... END $$;` блоки для безопасного добавления столбцов
- Проверяет существование столбцов перед добавлением (idempotent)
- Включает откат (downgrade) функцию для отмены изменений
- Поддерживает повторное выполнение без ошибок
## Применение миграции:
```bash
alembic upgrade head
```
## Результат:
Все столбцы добавлены успешно
✅ Схема БД соответствует моделям SQLAlchemy
✅ Бот может создавать записи в таблице winners без ошибок
✅ Миграция готова для production развертывания
## Версия после применения:
- **До**: 005 (add_chat_system)
- **После**: 006 (fix_missing_columns) ← HEAD
---
## Для разработчиков:
При развертывании на новых серверах достаточно выполнить:
```bash
alembic upgrade head
```
Миграция автоматически проверит и добавит отсутствующие столбцы.