Files
h-school/docs/phases/16-timetable-in-school.md
T
Leonid Pershin cad3068bac
ci / server (push) Failing after 3m53s
ci / client (push) Successful in 15s
Update wire protocol to version 6 and enhance timetable functionality
- Bumped the wire protocol version to 6, reflecting changes in the communication structure.
- Expanded the timetable API with new endpoints for fetching and managing lesson schedules, including `GET /api/schools/{id}/timetable` and `POST /api/schools/{id}/timetable/pin`.
- Updated the protocol documentation to include detailed descriptions of the new timetable features and message structures.
- Enhanced the client-side implementation to support the new timetable functionalities, including lesson pinning and unpinning.
- Revised server-side logic to handle timetable operations and ensure proper integration with existing school management features.
- Added tests to validate the new timetable functionalities and ensure robustness in handling lesson data.
2026-08-19 10:05:05 +03:00

2.6 KiB

Фаза 16. Расписание в школе

Зависимости

Зачем

Расписание живёт в школе, переживает перезапуск и отвечает на вопрос «кто где сейчас». Экрана ещё нет.

Задачи

  • Расписание пересобирается при найме, увольнении и изменении назначений — не по тику
  • Хранится в сейве рядом с составом; пишется при изменении, не по таймеру. Закреплённые игроком уроки сохраняются вместе с ним
  • Воркер публикует расписание снимком, как ростер
  • «Кто где сейчас» вычисляется из расписания и часов, а не хранится вторым состоянием
  • Команда закрепления и снятия закрепления урока — через мейлбокс воркера
  • GET /api/schools/{id}/timetable — расписание класса и расписание человека; читает опубликованный снимок
  • Снимок карты отдаёт по узлу, что там сейчас идёт и у кого; протокол и docs/protocol.md правятся тем же коммитом, версия бумпится
  • Панель локации получает данные для «Сейчас» и «Персонажей»

Критерий готовности

  • Нанять учителя математики — в расписании появились уроки математики
  • Снять назначение — уроки исчезли, предмет стал непокрытым
  • Передвинуть урок, нанять ещё одного человека — передвинутый остался на месте
  • Перемотать время на ×4 через звонок — «кто где сейчас» меняется вместе с уроком
  • В каникулы и в выходной никто нигде не находится
  • Перезапуск сервера поднимает то же расписание с теми же закреплениями
  • dotnet test проходит

Стоп

Не рисовать расписание на экране. Не перемещать людей по карте.