доработал отображение учебного графика
This commit is contained in:
@@ -17,8 +17,9 @@
|
||||
- `specialties` хранит код и название специальности, например `09.03.04`.
|
||||
- `specialty_profiles` хранит профили внутри специальности. У одной специальности может быть несколько профилей.
|
||||
- `academic_calendars` хранит график профиля, формы обучения и учебного года.
|
||||
- Форма обучения графика берётся из общего справочника `education_forms`; отдельной таблицы форм для календаря нет.
|
||||
- `academic_calendar_days` хранит дневную сетку графика по курсу и дате.
|
||||
- `student_groups` связана со специальностью и профилем обучения.
|
||||
- `student_groups` связана со специальностью, профилем и той же таблицей форм обучения.
|
||||
- `student_group_calendar_assignments` назначает группе конкретный график на учебный год.
|
||||
|
||||
Группа выбирает не код активности напрямую, а календарный график. Поэтому один график можно назначить нескольким группам.
|
||||
@@ -60,8 +61,8 @@
|
||||
|
||||
1. В разделе кафедр и специальностей администратор создаёт специальность и её профили.
|
||||
2. В разделе групп администратор создаёт группу, выбирая специальность и профиль обучения.
|
||||
3. В разделе расписания администратор создаёт учебный год и семестры.
|
||||
4. Там же создаётся календарный учебный график: название, учебный год, специальность, профиль, форма обучения и количество курсов.
|
||||
3. В разделе календарного графика администратор создаёт учебный год и семестры.
|
||||
4. Там же создаётся календарный учебный график: название, учебный год, специальность, профиль, форма обучения из общего справочника и количество курсов.
|
||||
5. Администратор открывает сетку графика, заполняет дни вручную или массово через диапазон дат.
|
||||
6. В разделе групп администратор назначает календарный график группе на нужный учебный год.
|
||||
|
||||
@@ -72,5 +73,6 @@
|
||||
- Старый отдельный механизм праздников не используется: праздник хранится кодом `*` в дневной сетке.
|
||||
- Дни вне учебного года или пустые периоды Excel хранятся кодом `=`.
|
||||
- График привязан к профилю обучения, а не только к коду специальности.
|
||||
- Форма обучения графика должна совпадать с формой обучения группы при назначении графика.
|
||||
- Название группы не является уникальным ключом; идентичные названия допустимы, если различаются другие параметры.
|
||||
- Excel-импорт в первой реализации не предусмотрен: редактор заполняет данные через сайт.
|
||||
|
||||
@@ -212,7 +212,6 @@ GET /api/schedule?groupId=1&startDate=2026-04-27&endDate=2026-05-03
|
||||
| Метод | URL | Назначение |
|
||||
|-------|-----|------------|
|
||||
| `GET` | `/api/admin/academic-calendars` | Список графиков, фильтры `academicYearId`, `specialtyId`, `profileId` |
|
||||
| `GET` | `/api/admin/academic-calendars/study-forms` | Формы обучения графика |
|
||||
| `GET` | `/api/admin/academic-calendars/{id}` | Один график |
|
||||
| `POST` | `/api/admin/academic-calendars` | Создать график |
|
||||
| `PUT` | `/api/admin/academic-calendars/{id}` | Обновить график |
|
||||
@@ -232,6 +231,8 @@ GET /api/schedule?groupId=1&startDate=2026-04-27&endDate=2026-05-03
|
||||
}
|
||||
```
|
||||
|
||||
`studyFormId` берётся из общего справочника форм обучения `GET /api/education-forms`; отдельного справочника форм для календарных графиков нет.
|
||||
|
||||
**Ячейка сетки графика:**
|
||||
```json
|
||||
{
|
||||
@@ -558,7 +559,7 @@ CRUD доступен по:
|
||||
|
||||
### `DELETE /api/education-forms/{id}`
|
||||
|
||||
Удаление формы обучения. **Невозможно**, если к ней привязаны группы.
|
||||
Удаление формы обучения. **Невозможно**, если к ней привязаны группы или календарные учебные графики.
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -35,10 +35,10 @@
|
||||
|
||||
### Формы обучения (Education Forms)
|
||||
|
||||
Уровни/формы обучения для привязки к группам.
|
||||
Уровни/формы обучения для привязки к группам и календарным учебным графикам.
|
||||
|
||||
- Предзаполнены: Бакалавриат, Магистратура, Специалитет
|
||||
- Нельзя удалить форму обучения, если к ней привязаны группы
|
||||
- Нельзя удалить форму обучения, если к ней привязаны группы или календарные графики
|
||||
|
||||
### Учебные группы (Student Groups)
|
||||
|
||||
|
||||
@@ -148,12 +148,6 @@ erDiagram
|
||||
DATE end_date
|
||||
}
|
||||
|
||||
calendar_study_forms {
|
||||
BIGSERIAL id PK
|
||||
VARCHAR name UK
|
||||
TEXT description
|
||||
}
|
||||
|
||||
academic_calendar_activity_types {
|
||||
BIGSERIAL id PK
|
||||
VARCHAR code UK
|
||||
@@ -244,7 +238,7 @@ erDiagram
|
||||
semesters ||--o{ schedule_rules : "semester_id"
|
||||
specialties ||--o{ academic_calendars : "specialty_id"
|
||||
specialty_profiles ||--o{ academic_calendars : "specialty_profile_id"
|
||||
calendar_study_forms ||--o{ academic_calendars : "study_form_id"
|
||||
education_forms ||--o{ academic_calendars : "study_form_id"
|
||||
academic_calendars ||--o{ academic_calendar_days : "calendar_id"
|
||||
academic_calendars ||--o{ student_group_calendar_assignments : "calendar_id"
|
||||
academic_calendar_activity_types ||--o{ academic_calendar_days : "activity_type_id"
|
||||
@@ -309,6 +303,8 @@ erDiagram
|
||||
| `name` | VARCHAR(100) UNIQUE | Название (Бакалавриат, Магистратура, Специалитет) |
|
||||
| `description` | TEXT | Описание |
|
||||
|
||||
Эта таблица используется и группами (`student_groups.education_form_id`), и календарными учебными графиками (`academic_calendars.study_form_id`). Отдельного справочника форм обучения для календарей нет.
|
||||
|
||||
#### `student_groups` — Учебные группы
|
||||
| Колонка | Тип | Описание |
|
||||
|---------|-----|----------|
|
||||
@@ -420,13 +416,6 @@ erDiagram
|
||||
| `start_date` | DATE | Дата начала, от неё считается неделя 1 |
|
||||
| `end_date` | DATE | Дата окончания |
|
||||
|
||||
#### `calendar_study_forms` — Формы обучения календарного графика
|
||||
| Колонка | Тип | Описание |
|
||||
|---------|-----|----------|
|
||||
| `id` | BIGSERIAL PK | ID |
|
||||
| `name` | VARCHAR(100) UNIQUE | Форма обучения графика, seed: `очная` |
|
||||
| `description` | TEXT | Описание |
|
||||
|
||||
#### `academic_calendar_activity_types` — Коды активностей графика
|
||||
| Колонка | Тип | Описание |
|
||||
|---------|-----|----------|
|
||||
@@ -446,7 +435,7 @@ erDiagram
|
||||
| `academic_year_id` | BIGINT FK → academic_years | Учебный год |
|
||||
| `specialty_id` | BIGINT FK → specialties | Специальность |
|
||||
| `specialty_profile_id` | BIGINT FK → specialty_profiles | Профиль обучения |
|
||||
| `study_form_id` | BIGINT FK → calendar_study_forms | Форма обучения графика |
|
||||
| `study_form_id` | BIGINT FK → education_forms | Форма обучения из общего справочника |
|
||||
| `course_count` | INT CHECK(> 0) | Количество курсов в сетке |
|
||||
| `created_at` | TIMESTAMP | Дата создания |
|
||||
| `updated_at` | TIMESTAMP | Дата обновления |
|
||||
|
||||
@@ -42,7 +42,9 @@ frontend/
|
||||
│ │ ├── subjects.js # Управление дисциплинами
|
||||
│ │ ├── equipments.js # Управление оборудованием
|
||||
│ │ ├── edu-forms.js # Формы обучения
|
||||
│ │ ├── schedule.js # Конструктор правил, сетки пар и учебного графика
|
||||
│ │ ├── profiles.js # Профили обучения специальностей
|
||||
│ │ ├── schedule.js # Конструктор правил расписания и сетки пар
|
||||
│ │ ├── academic-calendar.js # Календарные учебные графики
|
||||
│ │ ├── database.js # Управление тенантами
|
||||
│ │ └── departments-data.js # Создание кафедры/специальности
|
||||
│ ├── views/ # HTML-шаблоны представлений
|
||||
@@ -52,7 +54,9 @@ frontend/
|
||||
│ │ ├── subjects.html
|
||||
│ │ ├── equipments.html
|
||||
│ │ ├── edu-forms.html
|
||||
│ │ ├── profiles.html
|
||||
│ │ ├── schedule.html
|
||||
│ │ ├── academic-calendar.html
|
||||
│ │ ├── database.html
|
||||
│ │ └── departments-data.html
|
||||
│ │
|
||||
@@ -85,6 +89,7 @@ frontend/
|
||||
<a href="#" class="nav-item" data-tab="users">Пользователи</a>
|
||||
<a href="#" class="nav-item" data-tab="groups">Группы</a>
|
||||
<a href="#" class="nav-item" data-tab="schedule">Расписание занятий</a>
|
||||
<a href="#" class="nav-item" data-tab="academic-calendar">Календарный график</a>
|
||||
```
|
||||
|
||||
При клике на пункт меню `main.js`:
|
||||
@@ -100,10 +105,12 @@ frontend/
|
||||
| `users` | CRUD пользователей | `/api/users` |
|
||||
| `groups` | CRUD групп | `/api/groups` |
|
||||
| `edu-forms` | Формы обучения | `/api/education-forms` |
|
||||
| `profiles` | Создание, редактирование и удаление профилей обучения специальностей | `/api/specialties/{id}/profiles` |
|
||||
| `equipments` | Оборудование | `/api/equipments` |
|
||||
| `classrooms` | Аудитории | `/api/classrooms` |
|
||||
| `subjects` | Дисциплины | `/api/subjects` |
|
||||
| `schedule` | Конструктор правил динамического расписания, сетка пар, учебные годы, семестры и Excel-подобный редактор календарного учебного графика | `/api/admin/schedule-rules`, `/api/admin/time-slots`, `/api/admin/calendar`, `/api/admin/academic-calendars`, `/api/lesson-types` |
|
||||
| `schedule` | Конструктор правил динамического расписания и сетка пар | `/api/admin/schedule-rules`, `/api/admin/time-slots`, `/api/admin/calendar/years`, `/api/lesson-types` |
|
||||
| `academic-calendar` | Учебные годы, семестры, создание календарных графиков и Excel-подобный редактор дневной сетки | `/api/admin/calendar`, `/api/admin/academic-calendars`, `/api/admin/calendar/activity-types`, `/api/education-forms` |
|
||||
| `auditorium-workload` | Загруженность аудиторий: аудитории в строках, временные слоты в столбцах | mock-данные |
|
||||
| `database` | Тенанты | `/api/database` |
|
||||
| `departments-data` | Создание, редактирование и удаление кафедр/специальностей | `/api/departments`, `/api/specialties` |
|
||||
@@ -112,8 +119,11 @@ frontend/
|
||||
|
||||
- Вкладка `groups` загружает кафедры, специальности, профили, учебные годы и календарные графики. Группа создаётся через `/api/groups` с `specialtyId` и `specialtyProfileId`, а блок назначений использует `/api/groups/{id}/calendar-assignments`.
|
||||
- Вкладка `auditorium-workload` показывает матрицу загруженности: строки — аудитории, столбцы — временные слоты.
|
||||
- Вкладка `schedule` не обращается к старым `lessons` API. Создание и редактирование расписания выполняется через правила `/api/admin/schedule-rules`, где каждое правило содержит группы и набор слотов. В этом же модуле администратор создаёт календарные графики, заполняет дневную сетку по курсам и кодам активностей, а сохранение сетки идёт через `/api/admin/academic-calendars/{id}/grid`.
|
||||
- Вкладка `departments-data` использует модальные формы редактирования и маршруты `PUT/DELETE /api/departments/{id}`, `PUT/DELETE /api/specialties/{id}` и CRUD профилей `/api/specialties/{id}/profiles`.
|
||||
- Вкладка `profiles` выделена под профили обучения: администратор выбирает специальность, создаёт профиль, редактирует описание и удаляет неиспользуемые профили.
|
||||
- Вкладка `schedule` не обращается к старым `lessons` API. Создание и редактирование расписания выполняется через правила `/api/admin/schedule-rules`, где каждое правило содержит группы и набор слотов. Из календарной системы здесь используется только список семестров для выбора периода действия правила.
|
||||
- Вкладка `academic-calendar` полностью отделяет календарную систему от расписания занятий: администратор создаёт учебные годы и семестры, заводит календарные графики, выбирает форму обучения из общего справочника `/api/education-forms`, заполняет дневную сетку по курсам и кодам активностей, а сохранение сетки идёт через `/api/admin/academic-calendars/{id}/grid`.
|
||||
- Редактор годового графика во вкладке `academic-calendar` показывает мелкую табличную сетку: каждый курс разделён на семестры (`1`/`2`, `3`/`4` и далее), внутри семестра столбцы подписаны номерами недель учебного года, строки — днями недели, а ячейки содержат буквенный код активности. Подробная расшифровка и изменение кода открываются в модальном окне по клику на ячейку.
|
||||
- Вкладка `departments-data` использует модальные формы редактирования и маршруты `PUT/DELETE /api/departments/{id}` и `PUT/DELETE /api/specialties/{id}`.
|
||||
|
||||
### Страница настроек (`/admin/settings/`)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user