сделал настройку временных слотов
This commit is contained in:
@@ -19,7 +19,7 @@ erDiagram
|
||||
VARCHAR name
|
||||
BIGINT code UK
|
||||
}
|
||||
|
||||
|
||||
specialties {
|
||||
BIGSERIAL id PK
|
||||
VARCHAR name
|
||||
@@ -125,14 +125,31 @@ erDiagram
|
||||
BIGINT lesson_type_id FK,PK
|
||||
}
|
||||
|
||||
time_slot_scopes {
|
||||
BIGSERIAL id PK
|
||||
VARCHAR code UK
|
||||
VARCHAR name
|
||||
VARCHAR apply_mode
|
||||
INT day_of_week
|
||||
BOOLEAN system_scope
|
||||
INT display_order
|
||||
}
|
||||
|
||||
time_slots {
|
||||
BIGSERIAL id PK
|
||||
INT order_number UK
|
||||
BIGINT time_slot_scope_id FK
|
||||
INT order_number
|
||||
TIME start_time
|
||||
TIME end_time
|
||||
INT duration_minutes
|
||||
}
|
||||
|
||||
time_slot_date_assignments {
|
||||
BIGSERIAL id PK
|
||||
DATE assignment_date UK
|
||||
BIGINT time_slot_scope_id FK
|
||||
}
|
||||
|
||||
academic_years {
|
||||
BIGSERIAL id PK
|
||||
VARCHAR title UK
|
||||
@@ -244,6 +261,8 @@ erDiagram
|
||||
academic_calendar_activity_types ||--o{ academic_calendar_days : "activity_type_id"
|
||||
schedule_rules ||--o{ schedule_rule_groups : "schedule_rule_id"
|
||||
schedule_rules ||--o{ schedule_rule_slots : "schedule_rule_id"
|
||||
time_slot_scopes ||--o{ time_slots : "time_slot_scope_id"
|
||||
time_slot_scopes ||--o{ time_slot_date_assignments : "time_slot_scope_id"
|
||||
time_slots ||--o{ schedule_rule_slots : "time_slot_id"
|
||||
subgroups ||--o{ schedule_rule_slots : "subgroup_id"
|
||||
users ||--o{ schedule_rule_slots : "teacher_id"
|
||||
@@ -390,15 +409,38 @@ erDiagram
|
||||
| `subject_id` | BIGINT PK, FK → subjects (CASCADE) | Дисциплина |
|
||||
| `lesson_type_id` | BIGINT PK, FK → lesson_types (CASCADE) | Тип занятия |
|
||||
|
||||
#### `time_slot_scopes` — Сетки времени
|
||||
| Колонка | Тип | Описание |
|
||||
|---------|-----|----------|
|
||||
| `id` | BIGSERIAL PK | ID |
|
||||
| `code` | VARCHAR(50) UNIQUE | Системный код сетки |
|
||||
| `name` | VARCHAR(120) | Название в интерфейсе |
|
||||
| `apply_mode` | VARCHAR(20) | `DEFAULT`, `WEEKDAY`, `MANUAL` |
|
||||
| `day_of_week` | INT NULL | День недели для автоматической сетки |
|
||||
| `system_scope` | BOOLEAN | Защищает базовую и субботнюю сетки от удаления |
|
||||
| `display_order` | INT | Порядок в списках |
|
||||
|
||||
Seed создаёт `Базовая сетка` (`DEFAULT`) и `Субботняя сетка` (`WEEKDAY`, `day_of_week = 6`). Дополнительные сетки создаются как `MANUAL` и применяются только через ручные назначения дат.
|
||||
|
||||
#### `time_slots` — Временные слоты занятий
|
||||
| Колонка | Тип | Описание |
|
||||
|---------|-----|----------|
|
||||
| `id` | BIGSERIAL PK | ID |
|
||||
| `order_number` | INT UNIQUE | Номер пары в дне |
|
||||
| `time_slot_scope_id` | BIGINT FK → time_slot_scopes | Сетка времени |
|
||||
| `order_number` | INT | Номер пары в дне |
|
||||
| `start_time` | TIME | Время начала |
|
||||
| `end_time` | TIME | Время окончания |
|
||||
| `duration_minutes` | INT | Длительность в минутах |
|
||||
|
||||
Уникальность задаётся индексом `(time_slot_scope_id, order_number)`: в одной сетке может быть только один слот с номером пары.
|
||||
|
||||
#### `time_slot_date_assignments` — Ручные назначения сеток времени
|
||||
| Колонка | Тип | Описание |
|
||||
|---------|-----|----------|
|
||||
| `id` | BIGSERIAL PK | ID |
|
||||
| `assignment_date` | DATE UNIQUE | Дата ручного применения |
|
||||
| `time_slot_scope_id` | BIGINT FK → time_slot_scopes | Ручная сетка времени |
|
||||
|
||||
#### `academic_years` — Учебные годы
|
||||
| Колонка | Тип | Описание |
|
||||
|---------|-----|----------|
|
||||
@@ -481,7 +523,7 @@ erDiagram
|
||||
| `schedule_rule_id` | BIGINT FK → schedule_rules | Правило |
|
||||
| `day_of_week` | INT CHECK(1–7) | День недели: 1 — понедельник |
|
||||
| `parity` | VARCHAR(10) | `BOTH`, `EVEN`, `ODD` |
|
||||
| `time_slot_id` | BIGINT FK → time_slots | Временной слот |
|
||||
| `time_slot_id` | BIGINT FK → time_slots | Базовый временной слот |
|
||||
| `subgroup_id` | BIGINT FK → subgroups, NULL | Подгруппа |
|
||||
| `teacher_id` | BIGINT FK → users | Преподаватель |
|
||||
| `classroom_id` | BIGINT FK → classrooms | Аудитория |
|
||||
|
||||
Reference in New Issue
Block a user