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.
This commit is contained in:
Leonid Pershin
2026-08-19 15:57:12 +03:00
parent 207e7ecdb3
commit c16c34a83c
7 changed files with 578 additions and 2 deletions
+51
View File
@@ -0,0 +1,51 @@
# Фаза 21. Выбор действия
## Зависимости
- [Фаза 20](20-needs-actions.md)
## Зачем
Последний кусок среза: обязанность перестаёт быть приказом. Ученик с критической нуждой уходит с
урока и возвращается, и это видно в кабинете и в его карточке.
## Задачи
- [ ] Цели, веса и планирование — целиком в `HSchool.Ai`: на вход значения, на выход решение.
В `HSchool.Simulation` — только сбор входов и запись ответа
- [ ] Цели и их вес: обязанность — постоянный высокий, нужда — тем больше, чем ближе к нулю,
досуг — низкий и только при отсутствии обязанности
- [ ] Побеждает наибольший вес. Уход с урока получается из сравнения, а не из отдельного правила
- [ ] Планирование «дойти → сделать»: цель выбирает действие, планировщик достраивает дорогу до
подходящей комнаты
- [ ] Начатое доводится до конца: переключение только при заметном перевесе новой цели
- [ ] Решения по событиям — звонок, конец действия, приход в назначенный узел, пересечение
нуждой порога, — а не каждый тик
- [ ] Очередь решений с потолком за тик: отложенное принимается следующим тиком, а не пропадает
- [ ] Возвращение к обязанности после закрытия нужды, если урок ещё идёт
- [ ] Навык растёт на уроке: от предмета, с поправкой на черты и на состояние нужд
- [ ] Опоздание и отсутствие видны: в панели локации на уроке не весь класс, в карточке написано,
где человек
- [ ] Строки через `t(...)`, обе локали
## Тесты, без которых фаза не закрыта
- [ ] Ученик с нулевым «туалетом» уходит с урока, доходит до санузла и возвращается в кабинет
- [ ] Нужда чуть ниже порога урок не срывает
- [ ] Две почти равные нужды не заставляют метаться: действие доводится до конца
- [ ] На перемене выбирается досуг, на уроке — нет
- [ ] Навык после учебного дня вырос, у голодного — меньше
- [ ] Потолок решений за тик не теряет решения, а сдвигает их
- [ ] Тот же сид и те же действия игрока дают ту же школу через игровую неделю
- [ ] Разбор решения таблицей входов и выходов, без мира и без хоста
## Критерий готовности
- Прогнать школу на ×4 через учебный день и увидеть осмысленную картину: уроки, перемены с
коридором и столовой, редкие отлучки посреди урока
- `dotnet test`, `npm test` и `npm run build` проходят
## Стоп
Не добавлять оценки, настроение, конфликты и дружбу. Не давать игроку приказы. Не углублять
планировщик до полного GOAP.