35 lines
3.2 KiB
Markdown
35 lines
3.2 KiB
Markdown
# Задачи: динамическое расписание и календарный учебный график
|
||
|
||
Актуальная декомпозиция относится к модели, где календарный учебный график хранится дневной сеткой и назначается группе на учебный год.
|
||
|
||
## Выполнено
|
||
|
||
- [x] Переписана базовая схема `V1__init.sql` под полный сброс БД.
|
||
- [x] Добавлены специальности, профили обучения и связь группы с профилем.
|
||
- [x] Добавлены формы обучения календарного графика.
|
||
- [x] Добавлен справочник кодов активностей Excel-графика.
|
||
- [x] Добавлены календарные графики, дневная сетка и назначения графиков группам.
|
||
- [x] Обновлён `AcademicDateService`: активность дня определяется по назначенному группе графику.
|
||
- [x] Обновлён `ScheduleGeneratorService`: обычные пары генерируются только на разрешённых днях.
|
||
- [x] В `V1__init.sql` добавлены отдельные часы и недели начала для лекций, лабораторных и практик.
|
||
- [x] Добавлены подгруппы для лабораторных слотов, включая выбор разных подгрупп разных групп в одном поточном лабораторном слоте; лекции и практики не делятся на подгруппы.
|
||
- [x] Добавлены API профилей, календарей, дневной сетки, кодов активностей и назначений группам.
|
||
- [x] Обновлены админские экраны специальностей, групп и расписания.
|
||
- [x] Добавлена документация `docs/ACADEMIC_CALENDAR.md`.
|
||
|
||
## Оставшиеся задачи
|
||
|
||
- [ ] Добавить интеграционные тесты генерации расписания для кодов `Т`, `Э`, `К`, `*`, `=`.
|
||
- [ ] Добавить проверку конфликтов преподавателей, аудиторий и групп при сохранении правил.
|
||
- [ ] Добавить модель связи пользователя-студента с учебной группой.
|
||
- [ ] Добавить импорт календарного графика из Excel, если он понадобится после ручного редактора.
|
||
|
||
## Проверочный сценарий
|
||
|
||
1. Полностью сбросить локальную БД.
|
||
2. Запустить приложение и применить `V1__init.sql`.
|
||
3. Создать профиль специальности.
|
||
4. Создать календарный график и заполнить дневную сетку.
|
||
5. Назначить график группе.
|
||
6. Проверить `GET /api/schedule` на дне теории и на днях, где пары запрещены.
|