Files
h-school/docs/phases/18-presence-walking.md
T
Leonid Pershin c16c34a83c Refactor project structure and enhance AI and simulation components
- Updated project roles to include a new `HSchool.Ai` component, detailing its responsibilities in routing and decision-making.
- Revised the `HSchool.Simulation` component to integrate with the new AI functionalities, improving the interaction between simulation and AI.
- Expanded documentation to reflect the changes in project roles and the introduction of AI features.
- Added tests for the new AI functionalities, ensuring robust pathfinding and decision-making capabilities.
- Updated phase documentation to outline the new stages of school life, focusing on presence and behavior.
2026-08-19 15:57:12 +03:00

7.0 KiB
Raw Blame History

Фаза 18. Присутствие и ходьба

Зависимости

Зачем

Человек перестаёт быть записью в расписании и получает место. Он приходит утром, идёт коридором в кабинет и уходит после последнего урока. Экрана ещё нет — всё проверяется тестами и логом.

Задачи

  • Новый проект HSchool.Ai рядом с People и Schedule: зависит на Content, People и Schedule, без Arch и ASP.NET. Рядом — tests/HSchool.Ai.Tests
  • travelMinutes на RoomDef и TerritoryDef; в core проставлены кабинет 0.5, коридор 1.5, лестница 1.5, вестибюль 1, двор 3
  • Маршрутизация по MapLayout.Links — в библиотеке: матрица следующих шагов считается один раз при загрузке школы, не на каждом шаге
  • План дня человека — тоже в библиотеке: во сколько выходить, чтобы успеть, и когда уходить. Часы, компоненты и мир туда не проникают
  • Место человека — компонент в World: узел, остаток пути, минуты до выхода из узла. Человек всегда в узле; рёбер как состояний нет
  • Состояние «вне школы» — не удаление сущности: человек остаётся в списке и в карточке
  • Приход и уход: у кого сегодня нет уроков, тот не приходит вовсе. Ученик и учитель — по своим урокам, прочий штат — по дню школы
  • Запас на дорогу свой у каждого: путь от двора плюс несколько минут из своего потока случайности, с поправкой на черты
  • Обязанность как место назначения: урок — кабинет из расписания, должность — комната из RoomDef.works. Выбора действий пока нет
  • Движение по тику: остаток минут в узле уменьшается, при нуле человек переходит в следующий узел пути
  • Стабильный порядок обхода людей — собственный список, а не порядок сущностей в Arch
  • Адаптер в HSchool.Simulation: собирает значения из компонентов, зовёт библиотеку, записывает ответ обратно. Горячий путь — движение — границу не пересекает
  • Ориентир в AGENTS.md, docs/architecture.md и docs/design/projects.md знает про новый проект
  • Место, путь и назначение едут в файл часов; кого в файле нет, тот расставляется по обязанности
  • Потолок решений за тик — в SimulationOptions, как очередь, а не как отсечка
  • Предикат «школа пуста»: в здании и во дворе нет никого
  • Рабочее окно дня — от шести утра до последнего звонка по каркасу дня, а не по фактическому расписанию
  • «Ближайшее шесть утра рабочего дня впереди»: ночь ведёт в то же утро, вечер — в следующее, выходные, праздники и каникулы пропускаются. Поиск ограничен разумным числом дней и честно отвечает «нет такого»
  • Прыжок часов туда одним шагом: разрешён только при пустой школе и вне рабочего окна, отрабатывает первое сентября и обновление пула за весь пропуск, после себя пишет сейв

Тесты, без которых фаза не закрыта

  • Путь из кабинета 201 в санузел первого этажа идёт через лестницу и коридор, а не напрямую
  • Сумма travelMinutes совпадает с временем, за которое человек реально доходит
  • В воскресенье и в каникулы школа пуста: все вне школы
  • Класс без уроков сегодня не приходит, а его учитель с уроками у другого класса — приходит
  • К началу первого урока ученик находится в своём кабинете
  • Физкультура после урока в главном корпусе: класс доходит до спортзала, и видно, что перемены на это едва хватает
  • Тот же сид и та же карта дают то же расположение людей на тот же момент
  • Сохранение и загрузка посреди перемены не телепортируют людей
  • Прыжок с субботы попадает в понедельник, 6:00; с трёх ночи вторника — в утро того же вторника; с десяти вечера — в утро среды
  • Прыжок в учебное время отклоняется. В семь утра рабочего дня, когда школа ещё пуста, — тоже: это уже рабочее окно
  • У школы без единого учителя рабочий день не пропускается
  • Прыжок через летние каникулы проводит первое сентября: классы перешли, выпуск состоялся, набор пришёл
  • Промотанная неделя и прожитая неделя дают одно состояние школы

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

  • dotnet test проходит
  • Маршруты и план дня проверены без мира: в HSchool.Ai.Tests нет Arch
  • В HSchool.Ai нет упоминаний Arch, ASP.NET и DateTime.Now; в HSchool.Simulation — сокетов

Стоп

Не трогать протокол и клиент. Не заводить нужды, действия и выбор — это фазы 20 и 21.