feat: Добавлена миграция 006 для исправления схемы БД
Some checks reported errors
continuous-integration/drone/push Build encountered an error
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:
56
MIGRATION_006_REPORT.md
Normal file
56
MIGRATION_006_REPORT.md
Normal 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
|
||||
```
|
||||
|
||||
Миграция автоматически проверит и добавит отсутствующие столбцы.
|
||||
Reference in New Issue
Block a user