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

@@ -95,9 +95,11 @@
### progress
Данные привязаны к `lab_id` и студенту (сдачи, оценки, комментарии, защиты, назначения вариантов,
публикации). Схема **в основном не меняется**: доступ регулируется по цепочке
`lab → course → (преподаватель | группа)`. Для профиля студента курса добавляется
`grade_comments.author_account_id` (nullable) и индекс `(student_id, lab_id)`;
остальное — рантайм-проверки.
`lab → course → (преподаватель | группа)`. Для профиля студента курса добавляются
`grade_comments.author_account_id` (nullable) и `lab_grades.updated_by_account_id`
(nullable); существующий индекс `(student_id, lab_id)` (`grade_comments_grade_idx`)
переиспользуется, дополнительно добавляется индекс `lab_grades(lab_id)`.
Остальное — рантайм-проверки.
---
@@ -270,7 +272,7 @@ CREATE UNIQUE INDEX chapters_slug_course_uidx ON chapters (course_id, slug) WHER
Признак видимости актив наследует от статьи→раздела→главы (course/audience). Требуется проверка доступа в
маршруте выдачи активов (см. §6). Отдельных колонок достаточно опционально; минимум — корректная авторизация.
**V10 — курс C: завершение привязки лаб (post-bootstrap шаг)**
**Post-bootstrap шаг academic (условный «V10», не файл `db/migration` и вне обычной цепочки Flyway) — курс C: завершение привязки лаб**
```sql
-- Выполняется после bootstrap-сервиса, когда все лабы получили course_id.
-- Это отдельный шаг/миграция: обычный Flyway-старт применяет миграции раньше
@@ -281,12 +283,14 @@ ALTER TABLE labs ALTER COLUMN course_id SET NOT NULL;
### progress
Схема **в основном не меняется**. Проверки доступа — рантайм (по `lab_id → course`).
**V10 — профиль студента курса: автор комментария**
**V13 — профиль студента курса: автор комментария**
```sql
ALTER TABLE grade_comments ADD COLUMN author_account_id uuid;
ALTER TABLE lab_grades ADD COLUMN updated_by_account_id uuid;
CREATE INDEX lab_grades_lab_idx ON lab_grades (lab_id);
ALTER TABLE grade_comments ADD COLUMN IF NOT EXISTS author_account_id uuid;
ALTER TABLE lab_grades ADD COLUMN IF NOT EXISTS updated_by_account_id uuid;
CREATE INDEX IF NOT EXISTS lab_grades_lab_idx ON lab_grades (lab_id);
```
V13 идемпотентна: если старая feature-миграция V10 уже применялась в dev-БД,
достаточно убрать её запись из истории Flyway (см. план реализации).
Индекс `grade_comments (student_id, lab_id)` уже существует (`grade_comments_grade_idx`).
Старые комментарии остаются без автора и отображаются как «автор не указан».