Files
LMS/deploy/preflight/README.md

83 lines
4.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Preflight перед миграциями групп и курсов
**Перед любыми миграциями обязателен backup:** `./deploy/backup.sh backup`
(см. [`../BACKUP.md`](../BACKUP.md)). Preflight не заменяет backup.
Скрипты только читают данные:
- `groups-courses.sql` — до миграций: проблемы, которые могут помешать;
- `groups-courses-post.sql` — после миграций и bootstrap курса C: проверка результата;
- `progress-v10-v13.sql` — проверка истории Flyway и колонок/индекса при переходе
старой feature-миграции V10 на V13.
## До миграций
```bash
psql -h localhost -U lms -d lms -f deploy/preflight/groups-courses.sql
```
Проверяет:
- группы, имя которых не разбирается шаблоном;
- одинаковые кортежи `(stream, degree, number, course, enrollment_year)`;
- группы без полного набора полей;
- одинаковые имена групп;
- студентов без текущей группы;
- дубли номеров лабораторных при переносе в один курс;
- дубли slug глав;
- объём материалов и активов.
## После миграций и bootstrap
```bash
psql -h localhost -U lms -d lms -f deploy/preflight/groups-courses-post.sql
```
Проверяет:
- лабы без курса (должно быть `0` перед `SET NOT NULL`);
- главы без курса (должно быть `0`, если все текущие материалы курсовые);
- наличие ровно одного курса C;
- комментарии без автора;
- статусы аккаунтов;
- группы без полного разбора.
## Переход 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. Группы с нестандартными именами — разобрать вручную и заполнить поля до
перехода на `NOT NULL`.
2. Одинаковые кортежи — исправить номер или год набора.
3. Дубли номеров лаб — перенумеровать или разнести по разным курсам до
включения `UNIQUE (number, course_id)` / `NOT NULL`.
4. Дубли slug — переименовать главы до частичных индексов.
5. После bootstrap курса C проверить, что `labs_without_course = 0` и
`chapters_without_course = 0`.