Files
LMS/deploy/preflight/README.md

53 lines
2.5 KiB
Markdown
Raw 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: проверка результата.
## До миграций
```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`.