Files
new_lottery_bot/docs/MIGRATION_006_REPORT.md
Andrew K. Choi 1551b8b29f
Some checks reported errors
continuous-integration/drone/push Build encountered an error
fix: обработка ошибки 'message is not modified' в conduct_lottery_draw_confirm
2025-11-17 15:46:34 +09:00

56 lines
2.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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