много всего и тестовые данные

This commit is contained in:
Zuev
2026-09-06 19:17:06 +03:00
parent a1c4ee4298
commit e3b6797713
39 changed files with 2121 additions and 521 deletions

View File

@@ -251,18 +251,18 @@ public class AbsenceController {
### Правила
1. **Никогда** не изменяйте уже закоммиченные файлы миграций без прямой просьбы пользователя
2. Имя файла: `V{номер}__{описание}.sql` (два подчёркивания!)
3. Нумерация строго инкрементальная: `V1`, `V2`, `V3`, ...
4. После добавления — перезапустите backend для применения
1. До отдельного решения владельца вся постоянная схема изменяется только в `V1__init.sql`
2. `V2__test_data.sql` предназначена исключительно для тестовых и демонстрационных данных;
постоянный DDL в ней запрещён
3. Не создавайте `V3` и следующие миграции, пока владелец не отменит режим пересобираемого baseline
4. Любое изменение V1/V2 требует полного сброса затронутых tenant-БД из-за checksum mismatch
5. Не сбрасывайте tenant-БД без прямой команды владельца
Изменение `V1__init.sql` допустимо только как осознанное исключение на этапе разработки. Для уже применённой `V1` требуется полный сброс tenant-схем или удаление истории Flyway перед запуском backend, иначе будет checksum mismatch.
`V1__init.sql` зафиксирован как baseline: по прямому решению владельца в него объединено
содержимое прежних разработческих V2–V7, а также таблицы отсутствий, решений по заменам,
пожеланий и заявок преподавателей. Новые изменения существующих tenant-БД оформляются только
отдельными инкрементальными миграциями. Текущая `V2__backfill_default_theory_periods.sql`
заполняет кодом `Т` полностью пустые календарные графики и не изменяет V1.
`V1__init.sql` содержит только структуру: таблицы, функции, триггеры, индексы, ограничения
и комментарии. `V2__test_data.sql` содержит все прежние seed-записи, большой связанный набор
и заполнение периодов `Т` для полностью пустых календарных графиков. Такое разделение позволяет
отдельно проверить schema-only V1, но обе миграции по-прежнему автоматически применяются ко
всем tenant-БД.
### Применение
@@ -270,6 +270,10 @@ public class AbsenceController {
# Локально — сброс и повтор всех миграций
docker compose down -v && docker compose up -d
# Интеграционная проверка V1/V2 на PostgreSQL через Testcontainers
cd backend
mvn -Dtest='com.magistr.app.migration.*IntegrationTest' test
# Продакшн — применить к существующим тенантам
kubectl rollout restart deployment backend -n magistr
```