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
56 lines
2.6 KiB
Markdown
56 lines
2.6 KiB
Markdown
# Отчёт о Миграции База Данных 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
|
||
```
|
||
|
||
Миграция автоматически проверит и добавит отсутствующие столбцы. |