This commit is contained in:
@@ -326,6 +326,7 @@ erDiagram
|
||||
BIGSERIAL id PK
|
||||
BIGINT base_rule_slot_id FK
|
||||
DATE lesson_date
|
||||
DATE target_lesson_date
|
||||
VARCHAR action
|
||||
BIGINT new_time_slot_id FK
|
||||
BIGINT new_classroom_id FK
|
||||
@@ -873,7 +874,8 @@ V1 добавляет `uq_schedule_rule_slots_exact_payload`: в одном пр
|
||||
|---------|-----|----------|
|
||||
| `id` | BIGSERIAL PK | ID изменения |
|
||||
| `base_rule_slot_id` | BIGINT FK → schedule_rule_slots | Базовый слот правила |
|
||||
| `lesson_date` | DATE | Дата конкретной пары |
|
||||
| `lesson_date` | DATE | Исходная дата конкретной пары из базового правила |
|
||||
| `target_lesson_date` | DATE NULL | Новая дата единственного занятия при `MOVE` |
|
||||
| `action` | VARCHAR(20) | `MOVE`, `CANCEL`, `REPLACE` |
|
||||
| `new_time_slot_id` | BIGINT FK → time_slots | Новый временной слот |
|
||||
| `new_classroom_id` | BIGINT FK → classrooms | Новая аудитория |
|
||||
@@ -887,12 +889,19 @@ V1 добавляет `uq_schedule_rule_slots_exact_payload`: в одном пр
|
||||
одной и той же пары. Базовая схема V1 добавляет структурные инварианты:
|
||||
|
||||
- `CANCEL` не содержит новых ресурсов;
|
||||
- `MOVE` содержит новый временной слот или аудиторию;
|
||||
- `REPLACE` содержит нового преподавателя, аудиторию или формат;
|
||||
- `MOVE` содержит новый временной слот;
|
||||
- `REPLACE` не содержит нового времени и содержит нового преподавателя, аудиторию или формат;
|
||||
- `new_lesson_format` равен `Очно`, `Онлайн` либо `NULL`.
|
||||
- `target_lesson_date` отличается от `lesson_date`, разрешена только для `MOVE` и требует
|
||||
`new_time_slot_id`.
|
||||
|
||||
Фактическое существование пары, реальность изменения и ресурсные конфликты зависят от
|
||||
календаря конкретной даты и проверяются транзакционным сервисом, а не SQL CHECK.
|
||||
Частичный индекс `idx_schedule_overrides_target_date` ускоряет выборку входящих переносов,
|
||||
а индекс исходной даты `idx_schedule_overrides_date` обслуживает исходящие изменения и
|
||||
отмены. Диапазонный реестр и поиск используют обе даты.
|
||||
|
||||
Фактическое существование пары, тот же семестр, учебный календарь затронутых групп,
|
||||
lifecycle ресурсов, эффективная сетка целевого дня, реальность изменения и ресурсные
|
||||
конфликты проверяются транзакционным сервисом, а не SQL CHECK.
|
||||
|
||||
---
|
||||
|
||||
@@ -910,7 +919,7 @@ V1 добавляет `uq_schedule_rule_slots_exact_payload`: в одном пр
|
||||
|
||||
| Файл | Описание |
|
||||
|------|----------|
|
||||
| `V1__init.sql` | Полная baseline-схема: справочники, роли, refresh-сессии JWT, PostgreSQL rate limit и аудит входа, lifecycle-поля, история кафедр, календарные графики, динамическое расписание, точечные изменения, seed, CHECK/UNIQUE/GiST-ограничения, конкурентно безопасные триггеры и комментарии |
|
||||
| `V1__init.sql` | Полная baseline-схема: справочники, роли, refresh-сессии JWT, PostgreSQL rate limit и аудит входа, lifecycle-поля, история кафедр, календарные графики, динамическое расписание, точечные изменения с переносом даты, seed, CHECK/UNIQUE/GiST-ограничения, конкурентно безопасные триггеры и комментарии |
|
||||
|
||||
### Этап разработки
|
||||
|
||||
|
||||
Reference in New Issue
Block a user