- 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.
7.0 KiB
7.0 KiB
Фаза 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.