fix: обработка ошибки 'message is not modified' в conduct_lottery_draw_confirm
Some checks reported errors
continuous-integration/drone/push Build encountered an error

This commit is contained in:
2025-11-17 15:46:34 +09:00
parent 0eabb1bc75
commit 1551b8b29f
31 changed files with 8 additions and 10789 deletions

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