- Introduced a new project for timetable planning, dependent on HSchool.Content. - Updated documentation to reflect the addition of timetable planning and its dependencies. - Added tests for timetable planning to ensure deterministic behavior with the same staff and map. - Revised architecture documentation to include the new HSchool.Schedule component and its interactions.
42 lines
2.5 KiB
Markdown
42 lines
2.5 KiB
Markdown
# Фаза 15. Планировщик
|
|
|
|
## Зависимости
|
|
|
|
- [Фаза 14](14-school-calendar.md)
|
|
- [Фаза 12](12-hiring-budget.md)
|
|
|
|
## Зачем
|
|
|
|
Из учебного плана, назначений и карты получается таблица уроков. Библиотека проверяется тестами,
|
|
без мира и без хоста, как генератор людей.
|
|
|
|
## Задачи
|
|
|
|
- [x] Новый проект рядом с `HSchool.People`: зависит только на `HSchool.Content`, без Arch и
|
|
ASP.NET; отдаёт простую таблицу уроков
|
|
- [x] Раскладка часов учебного плана по слотам недели для каждого класса
|
|
- [x] Кабинет урока: требование предмета, иначе кабинет класса
|
|
- [x] Четыре запрета соблюдаются: учитель, класс и кабинет не заняты дважды, класс влезает в кабинет
|
|
- [x] Непокрытые часы не ставятся, а возвращаются отдельным списком — их покажет «Управление»
|
|
- [x] Закреплённые игроком уроки принимаются на вход и переживают перестроение; остальное
|
|
раскладывается вокруг них
|
|
- [x] Детерминированность: те же штат, назначения и карта дают ту же таблицу
|
|
|
|
## Тесты, без которых фаза не закрыта
|
|
|
|
- [x] Один спортзал на одиннадцать классов — физкультура разъезжается по слотам, а не дублируется
|
|
- [x] Учитель с двумя предметами не стоит в двух местах в одном слоте
|
|
- [x] Класс на 16 не попадает в кабинет на 12
|
|
- [x] Предмет без учителя даёт дыру и запись в непокрытых
|
|
- [x] Закреплённый урок остаётся на месте после найма ещё одного учителя
|
|
- [x] Те же входы — та же таблица
|
|
|
|
## Критерий готовности
|
|
|
|
- Тесты библиотеки зелёные
|
|
- В проекте нет упоминаний сокетов, ECS и `DateTime.Now`
|
|
|
|
## Стоп
|
|
|
|
Не трогать сервер, сейв и клиент. Таблица пока никуда не уезжает.
|