Миллион изменений, создание вкладки "Расписание занятий"
This commit is contained in:
@@ -6,7 +6,7 @@
|
||||
|
||||
Реализован первый рабочий срез динамического расписания. Новая модель теперь является базовой схемой проекта и создаётся сразу в `V1__init.sql`.
|
||||
|
||||
Старые таблицы `lessons` и `schedule_data` пока физически остаются в `V1__init.sql`, потому что связанный старый код будет удаляться отдельным шагом. Они больше не заполняются тестовыми данными и не являются источником для новой модели расписания.
|
||||
Старые таблицы `lessons` и `schedule_data`, старые контроллеры, DTO, модели, репозитории и админские вызовы старых API удалены. Новая модель расписания является единственным базовым способом хранения и генерации расписания.
|
||||
|
||||
## Что добавлено
|
||||
|
||||
@@ -78,7 +78,7 @@
|
||||
| `AcademicDateService` | Календарная математика: семестр по дате, номер недели, чётность, праздник, курс группы, тип активности |
|
||||
| `ScheduleGeneratorService` | Генерация расписания группы или преподавателя на диапазон дат |
|
||||
|
||||
Старый `LessonsController` пока физически присутствует в коде и помечен как `@Deprecated`. Это технический хвост до удаления старых экранов и таблиц, а не целевой слой совместимости.
|
||||
Старый ручной слой занятий удалён: в backend больше нет `LessonsController`, `ScheduleDataController`, сущностей `Lesson`/`ScheduleData`, их DTO, репозиториев и валидаторов старых строк расписания.
|
||||
|
||||
### API
|
||||
|
||||
@@ -134,6 +134,8 @@ GET /api/schedule?teacherId={userId}&startDate=...&endDate=...
|
||||
|
||||
Заглушки кабинетов заменены на базовые экраны просмотра расписания.
|
||||
|
||||
Админский экран `schedule` показывает текущие `schedule_rules` и сетку `time_slots` через новые admin API.
|
||||
|
||||
#### Кабинет студента
|
||||
|
||||
Файл: `frontend/student/index.html`.
|
||||
@@ -268,8 +270,8 @@ docker run --rm -v /mnt/HDD/magistr/magistr/backend:/app -w /app maven:3.9-eclip
|
||||
| `schedule_rule_slots` | 4 |
|
||||
| `time_slots` | 7 |
|
||||
| `academic_calendar_matrix` | 132 |
|
||||
| `lessons` | 0 |
|
||||
| `schedule_data` | 0 |
|
||||
| `lessons` | таблица отсутствует |
|
||||
| `schedule_data` | таблица отсутствует |
|
||||
|
||||
Также выполнен:
|
||||
|
||||
@@ -285,27 +287,19 @@ git diff --check
|
||||
|
||||
Ограничения:
|
||||
|
||||
- полноценный UI конструктора правил в админке ещё не реализован;
|
||||
- визуальный редактор матрицы учебного графика в админке ещё не реализован;
|
||||
- UI управления праздниками и учебными годами пока доступен только через API;
|
||||
- строгая проверка конфликтов преподавателей, аудиторий и групп при сохранении правил ещё не реализована;
|
||||
- студент пока выбирает группу вручную, потому что в модели пользователя нет связи `student -> group`;
|
||||
- старые таблицы и контроллеры `lessons` / `schedule_data` ещё физически есть, но больше не используются для seed-расписания.
|
||||
- студент пока выбирает группу вручную, потому что в модели пользователя нет связи `student -> group`.
|
||||
|
||||
## Следующий этап
|
||||
|
||||
Рекомендуемый следующий этап:
|
||||
|
||||
1. Добавить в админку вкладку настройки временных слотов.
|
||||
2. Добавить UI учебных годов, семестров и праздников.
|
||||
3. Добавить визуальную матрицу учебного графика.
|
||||
4. Добавить конструктор правил расписания.
|
||||
5. Реализовать backend-валидацию конфликтов:
|
||||
1. Реализовать backend-валидацию конфликтов:
|
||||
- преподаватель не может вести разные занятия одновременно;
|
||||
- аудитория не может быть занята двумя разными занятиями одновременно;
|
||||
- группа не может быть на двух занятиях одновременно, кроме корректного деления по подгруппам.
|
||||
6. Удалить старые экраны, контроллеры, DTO, модели и репозитории `lessons` / `schedule_data`.
|
||||
7. Удалить старые таблицы `lessons` и `schedule_data` из `V1__init.sql`.
|
||||
2. Добавить модель связи студента с учебной группой, чтобы кабинет студента не требовал ручного выбора группы.
|
||||
3. Добавить отдельное управление подгруппами и подключить выбор `subgroupId` в конструкторе правил.
|
||||
|
||||
## Связанные документы
|
||||
|
||||
|
||||
Reference in New Issue
Block a user