# Фаза 16. Расписание в школе ## Зависимости - [Фаза 15](15-timetable-planner.md) ## Зачем Расписание живёт в школе, переживает перезапуск и отвечает на вопрос «кто где сейчас». Экрана ещё нет. ## Задачи - [x] Расписание пересобирается при найме, увольнении и изменении назначений — **не по тику** - [x] Хранится в сейве рядом с составом; пишется при изменении, не по таймеру. Закреплённые игроком уроки сохраняются вместе с ним - [x] Воркер публикует расписание снимком, как ростер - [x] «Кто где сейчас» **вычисляется** из расписания и часов, а не хранится вторым состоянием - [x] Команда закрепления и снятия закрепления урока — через мейлбокс воркера - [x] `GET /api/schools/{id}/timetable` — расписание класса и расписание человека; читает опубликованный снимок - [x] Снимок карты отдаёт по узлу, что там сейчас идёт и у кого; протокол и `docs/protocol.md` правятся тем же коммитом, версия бумпится - [x] Панель локации получает данные для «Сейчас» и «Персонажей» ## Критерий готовности - Нанять учителя математики — в расписании появились уроки математики - Снять назначение — уроки исчезли, предмет стал непокрытым - Передвинуть урок, нанять ещё одного человека — передвинутый остался на месте - Перемотать время на ×4 через звонок — «кто где сейчас» меняется вместе с уроком - В каникулы и в выходной никто нигде не находится - Перезапуск сервера поднимает то же расписание с теми же закреплениями - `dotnet test` проходит ## Стоп Не рисовать расписание на экране. Не перемещать людей по карте.