Исправление схемы template базы данных (2 октября 2025)¶
Проблема¶
При запуске интеграционных тестов возникала критическая ошибка:
Корневая причина¶
Template база данных saga_empty_template имела устаревшую схему таблицы users БЕЗ DEFAULT значения для поля id:
Архитектурный контекст¶
Система изолированного тестирования (backend/tests/isolated_db_helper.go) создаёт копии template базы для каждого теста:
// Строка 84 в isolated_db_helper.go
createSQL := fmt.Sprintf("CREATE DATABASE %s TEMPLATE %s", dbName, templateName)
Все тестовые базы наследовали устаревшую схему от template, что приводило к массовым падениям тестов.
Решение¶
Исправлена схема template базы добавлением DEFAULT значения для автогенерации UUID:
Результат¶
Template база теперь имеет правильную схему:
Все новые тестовые базы создаются с корректной схемой.
Проверка¶
До исправления: - ❌ Core тесты: массовые падения с "null value in column id" - ❌ Integration тесты: те же ошибки
После исправления: - ✅ Тесты создают пользователей успешно - ✅ UUID генерируется автоматически - ✅ Больше нет ошибок constraint violation
Дальнейшие шаги¶
- ✅ Template база исправлена
- ⏳ Необходимо обновить устаревшие тесты (проблемы с balance/deposits API)
- ⏳ Исправить 20 analyzer issues (SOLID, interface{}, API types)
Техническая деталь¶
Основная база vs Template база¶
- saga (основная) - имела правильную схему с DEFAULT ✅
- saga_empty_template - имела устаревшую схему БЕЗ DEFAULT ❌
Тесты используют template, поэтому проблема проявлялась только при тестировании, не в production.