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:
@@ -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] Те же входы дают те же значения нужд на тот же момент
|
||||
|
||||
## Критерий готовности
|
||||
|
||||
|
||||
@@ -89,5 +89,5 @@
|
||||
|
||||
| Фаза | Статус | Зачем |
|
||||
| --- | --- | --- |
|
||||
| [20. Нужды и действия](20-needs-actions.md) | ⬜ | `ActionDef` с полями, декей, восполнение |
|
||||
| [20. Нужды и действия](20-needs-actions.md) | ✅ | `ActionDef` с полями, декей, восполнение |
|
||||
| [21. Выбор действия](21-decisions.md) | ⬜ | Цели и веса, «дойти → сделать», уход с урока, рост навыка |
|
||||
|
||||
@@ -218,6 +218,9 @@ and partners for a parent. The client opens another card by id; this response do
|
||||
cards. `classId` is the homeroom class for a pupil and `null` otherwise — the personal timetable
|
||||
grid fetches `GET .../timetable?classId=` with it.
|
||||
|
||||
`activity` is the ActionDef name currently in progress, or `null` when idle. `activityLabel`
|
||||
is that def in the request locale. HTTP JSON is additive — no protocol version bump.
|
||||
|
||||
```json
|
||||
{
|
||||
"id": "f0.c0",
|
||||
@@ -233,6 +236,8 @@ grid fetches `GET .../timetable?classId=` with it.
|
||||
"skills": [{ "id": "Math", "label": "Математика", "value": "62" }],
|
||||
"traits": [{ "defName": "Diligent", "label": "Усидчивый" }],
|
||||
"needs": [{ "id": "Sleep", "label": "Сон", "value": 1 }],
|
||||
"activity": null,
|
||||
"activityLabel": null,
|
||||
"family": {
|
||||
"parents": [{ "id": "f0.p1", "fullName": "Иванова Ольга Михайловна", "female": true }],
|
||||
"children": [],
|
||||
|
||||
Reference in New Issue
Block a user