feat(db): миграции групп, курсов, статусов и профиля
This commit is contained in:
52
deploy/preflight/README.md
Normal file
52
deploy/preflight/README.md
Normal file
@@ -0,0 +1,52 @@
|
||||
# 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`.
|
||||
Reference in New Issue
Block a user