Enhance protocol and simulation features with activity tracking and behavior definitions

- Updated protocol documentation to include new `activity` and `activityLabel` fields in the person card response, reflecting real-time activity status.
- Introduced `BehaviorDef` to define behavior rules, including need thresholds and lesson skill gains, enhancing AI decision-making.
- Revised the `DefCatalog` to incorporate behavior definitions and updated validation logic to ensure proper behavior handling.
- Enhanced the simulation to manage presence and activity states, allowing for more dynamic interactions within the school environment.
- Updated tests to validate the new activity tracking and behavior functionalities, ensuring robust performance and reliability.
- Improved localization strings to support new activity and behavior features, enhancing user experience.
This commit is contained in:
Leonid Pershin
2026-08-19 19:49:44 +03:00
parent 3c54f981b7
commit b135a9caad
42 changed files with 1134 additions and 59 deletions
+14 -14
View File
@@ -11,27 +11,27 @@
## Задачи
- [ ] `ActionDef` получает поля: комната, вещь, длительность, восполняемая нужда и величина,
- [x] `ActionDef` получает поля: комната, вещь, длительность, восполняемая нужда и величина,
роли, вес досуга
- [ ] Действия в `core`: поесть в столовой, санузел, отдохнуть на перемене, пообщаться,
- [x] Действия в `core`: поесть в столовой, санузел, отдохнуть на перемене, пообщаться,
прогуляться по коридору и по двору
- [ ] Деф правил поведения — как `StaffingDef` у штата: пороги нужд, скорость обучения на уроке,
- [x] Деф правил поведения — как `StaffingDef` у штата: пороги нужд, скорость обучения на уроке,
разброс запаса на дорогу, порог переключения решения
- [ ] Декей нужд включается в `core`. Сон восстанавливается вне школы, а не действием
- [ ] Действие занимает вещь на время: за один стол не садятся вдвоём
- [ ] Выполнение действия: начало, отсчёт минут, восполнение нужды по завершении. Правила — в
- [x] Декей нужд включается в `core`. Сон восстанавливается вне школы, а не действием
- [x] Действие занимает вещь на время: за один стол не садятся вдвоём
- [x] Выполнение действия: начало, отсчёт минут, восполнение нужды по завершении. Правила — в
`HSchool.Ai`, компоненты и мир — в `HSchool.Simulation`
- [ ] Валидатор дефов ловит действие без комнаты, с неизвестной нуждой и с неизвестной вещью
- [ ] Карточка человека показывает, что он делает; полоски нужд начинают шевелиться
- [x] Валидатор дефов ловит действие без комнаты, с неизвестной нуждой и с неизвестной вещью
- [x] Карточка человека показывает, что он делает; полоски нужд начинают шевелиться
## Тесты, без которых фаза не закрыта
- [ ] Голод падает за игровой час ровно на `decayPerHour`
- [ ] Обед в столовой поднимает голод на заявленную величину и занимает заявленное время
- [ ] Столов меньше, чем желающих: лишние не начинают действие, а не садятся сквозь друг друга
- [ ] Ночь вне школы возвращает сон к максимуму
- [ ] Действие с неизвестной нуждой роняет загрузку каталога с внятной ошибкой
- [ ] Те же входы дают те же значения нужд на тот же момент
- [x] Голод падает за игровой час ровно на `decayPerHour`
- [x] Обед в столовой поднимает голод на заявленную величину и занимает заявленное время
- [x] Столов меньше, чем желающих: лишние не начинают действие, а не садятся сквозь друг друга
- [x] Ночь вне школы возвращает сон к максимуму
- [x] Действие с неизвестной нуждой роняет загрузку каталога с внятной ошибкой
- [x] Те же входы дают те же значения нужд на тот же момент
## Критерий готовности