fix(progress): перенести профильную миграцию на V13 после аттестаций

This commit is contained in:
2026-10-27 13:29:50 +03:00
parent 07a223b759
commit cbd98f55f0
8 changed files with 298 additions and 22 deletions

View File

@@ -200,14 +200,38 @@
## 4. Ориентировочные миграции
Номера уточняются при реализации, чтобы не конфликтовать с текущими максимумами
(identity V3, academic V5, progress V9).
Номера уточняются при реализации, чтобы не конфликтовать с максимумами master
**до этой ветки** (identity V3, academic V5, progress V12); максимумы этой ветки
больше.
| Сервис | Миграции | Содержание |
|---|---|---|
| identity | V4–V9 | роли, поля групп, статусы студентов, `membership_history`, `promotion_runs/items`, `accounts.status` |
| academic | V6–V9 + post-bootstrap V10 | курсы, преподаватели, группы курса, `labs.course_id` (nullable), материалы курса/аудитории, частичные индексы, активы; `SET NOT NULL` — отдельный шаг после bootstrap |
| progress | V10 (+ V11 при необходимости аудита) | `grade_comments.author_account_id`, `lab_grades.updated_by_account_id`, индекс `lab_grades(lab_id)`; аудит скачиваний — этап 6 |
| progress | V13 (+ V14 при необходимости аудита) | `grade_comments.author_account_id`, `lab_grades.updated_by_account_id`, индекс `lab_grades(lab_id)`; аудит скачиваний — этап 6 |
### Переход со старой feature-миграции V10 на V13
Старая `progress V10__profile_authors.sql` — временная feature-миграция, её нет
в master.
- **Production / master:** есть только V11 и V12, записи V10 нет — V13 применяется
обычным порядком, ничего делать не нужно.
- **Dev/feature-БД, где `V10__profile_authors.sql` уже применена и имеет
`success=true`:** удалить только эту запись истории, ничего не удаляя из схемы;
V13 идемпотентна и сама создаст недостающие колонки и индекс. Используйте
`flyway repair` или точечно:
`DELETE FROM progress.flyway_schema_history WHERE version = '10' AND script = 'V10__profile_authors.sql' AND success;`.
- **Staging-БД**, которые ненадолго запускали master-коммит `bfdae41` (out-of-order
+ V10), тоже содержат запись V10 — для них действует тот же порядок.
- **Если V10 осталась с `success=false`:** сначала убедитесь, что её частичные
изменения откатились на уровне объектов, затем `flyway repair` или удаление
неуспешной строки; V13 досоздаст недостающее.
- Перед очисткой и деплоем проверьте состояние через
`deploy/preflight/progress-v10-v13.sql`.
- Переход **forward-only**: после V13 откат на сборку без V13 не пройдёт валидацию
Flyway. Не оставляйте `out-of-order` включённым.
- **Нельзя** переставлять V11/V12.
---