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

@@ -3,10 +3,12 @@
**Перед любыми миграциями обязателен backup:** `./deploy/backup.sh backup`
(см. [`../BACKUP.md`](../BACKUP.md)). Preflight не заменяет backup.
Два скрипта только читают данные:
Скрипты только читают данные:
- `groups-courses.sql` — до миграций: проблемы, которые могут помешать;
- `groups-courses-post.sql` — после миграций и bootstrap курса C: проверка результата.
- `groups-courses-post.sql` — после миграций и bootstrap курса C: проверка результата;
- `progress-v10-v13.sql` — проверка истории Flyway и колонок/индекса при переходе
старой feature-миграции V10 на V13.
## До миграций
@@ -40,6 +42,34 @@ psql -h localhost -U lms -d lms -f deploy/preflight/groups-courses-post.sql
- статусы аккаунтов;
- группы без полного разбора.
## Переход V10 → V13
Нужен для любой БД, которая когда-либо применяла старую feature-миграцию
`V10__profile_authors.sql`: dev/feature-БД и staging, ненадолго запускавший
master-коммит `bfdae41` (out-of-order + V10). На production/master записи V10
нет — раздел можно пропустить.
Порядок:
1. Backup: `./deploy/backup.sh backup`.
2. Проверить состояние:
```bash
psql -h localhost -U lms -d lms -f deploy/preflight/progress-v10-v13.sql
```
Колонки должны быть `uuid`/nullable, индекс `lab_grades_lab_idx` — существовать
и быть валидным; `columns_ok` и `index_ok` должны быть `true`.
3. Если V10 есть в истории с `success=true`, удалить только эту запись истории
(`flyway repair` или точечный `DELETE` из примера в конце скрипта). При
`success=false` сначала проверить откат объектов; V13 идемпотентна и создаст
недостающее.
4. Deploy: обычный запуск применит V13.
5. Postflight: `psql -h localhost -U lms -d lms -f deploy/preflight/groups-courses-post.sql`.
После V13 переход forward-only: откат на сборку без V13 не пройдёт валидацию
Flyway. Не оставляйте `out-of-order` включённым.
## Что делать с результатами
1. Группы с нестандартными именами — разобрать вручную и заполнить поля до