53 lines
2.5 KiB
Markdown
53 lines
2.5 KiB
Markdown
# Preflight перед миграциями групп и курсов
|
||
|
||
**Перед любыми миграциями обязателен backup:** `./deploy/backup.sh backup`
|
||
(см. [`../BACKUP.md`](../BACKUP.md)). Preflight не заменяет backup.
|
||
|
||
Два скрипта только читают данные:
|
||
|
||
- `groups-courses.sql` — до миграций: проблемы, которые могут помешать;
|
||
- `groups-courses-post.sql` — после миграций и bootstrap курса C: проверка результата.
|
||
|
||
## До миграций
|
||
|
||
```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;
|
||
- комментарии без автора;
|
||
- статусы аккаунтов;
|
||
- группы без полного разбора.
|
||
|
||
## Что делать с результатами
|
||
|
||
1. Группы с нестандартными именами — разобрать вручную и заполнить поля до
|
||
перехода на `NOT NULL`.
|
||
2. Одинаковые кортежи — исправить номер или год набора.
|
||
3. Дубли номеров лаб — перенумеровать или разнести по разным курсам до
|
||
включения `UNIQUE (number, course_id)` / `NOT NULL`.
|
||
4. Дубли slug — переименовать главы до частичных индексов.
|
||
5. После bootstrap курса C проверить, что `labs_without_course = 0` и
|
||
`chapters_without_course = 0`.
|