Add nurse care queue and person-card health tab.

Sick people seek MedicalOffice for tend by Medicine skill; symptoms cut talk weight; no heal API.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Leonid Pershin
2026-08-21 16:17:51 +03:00
co-authored by Cursor
parent afab014572
commit 33f253c9e3
33 changed files with 1568 additions and 34 deletions
+12 -12
View File
@@ -12,22 +12,22 @@
## Задачи
- [ ] Больной с дискомфортом выше порога стремится в `MedicalOffice`; медсестра с `MedicalDuty`
- [x] Больной с дискомфортом выше порога стремится в `MedicalOffice`; медсестра с `MedicalDuty`
снижает тяжесть / ускоряет иммунитет (навык Medicine)
- [ ] Нет медсестры — болезнь идёт натурально (хуже/дольше по данным)
- [ ] Очередь у медкабинета проще директора, но не телепорт
- [ ] Вкладка «Здоровье» на карточке: условия, стадия/тяжесть, краткий эффект
- [ ] Связность: симптомы режут вес кружка / общения (поле на def); явка-болезнь уже из 78
- [ ] Игрок не жмёт «вылечи»; гость только смотрит
- [ ] Локали RU/EN
- [x] Нет медсестры — болезнь идёт натурально (хуже/дольше по данным)
- [x] Очередь у медкабинета проще директора, но не телепорт
- [x] Вкладка «Здоровье» на карточке: условия, стадия/тяжесть, краткий эффект
- [x] Связность: симптомы режут вес кружка / общения (поле на def); явка-болезнь уже из 78
- [x] Игрок не жмёт «вылечи»; гость только смотрит
- [x] Локали RU/EN
## Тесты, без которых фаза не закрыта
- [ ] С медсестрой в кабинете тяжесть падает быстрее контроля без неё
- [ ] Карточка показывает активные условия
- [ ] Нет API лечения от клиента
- [ ] Сильный симптом снижает шанс начать Chat относительно контроля
- [ ] Skip ночи не оставляет вечную очередь в медкабинете без разрешения
- [x] С медсестрой в кабинете тяжесть падает быстрее контроля без неё
- [x] Карточка показывает активные условия
- [x] Нет API лечения от клиента
- [x] Сильный симптом снижает шанс начать Chat относительно контроля
- [x] Skip ночи не оставляет вечную очередь в медкабинете без разрешения
## Критерий готовности
+17 -1
View File
@@ -377,10 +377,16 @@ the client. HTTP JSON is additive — no protocol version bump.
in the world and in `people.json`. Mark rows carry `subject`, `subjectLabel`, `value` (25),
`time`, `period`. Attendance rows carry `subject`, `subjectLabel`, `status`
(`present` / `late` / `absent`), `statusLabel` (mod locale), `time`, `period`, and optional
`absenceReason` (vanilla `truancy`; illness comes later). Empty is `[]`. Ceilings live on
`absenceReason` (vanilla `truancy` or `illness`). Empty is `[]`. Ceilings live on
`BehaviorDef` (`lessonMarkMax`, `attendanceMax`). There is **no** POST/PUT to set marks or
attendance — guests and owners only read. The people list does not include these fields.
`healthConditions` is the **Здоровье** tab (slice 14 phase 80): active medical conditions in the
same order as on the person. Each row has `defName`, `label` (mod locale), `severity` / `progress`
(01), optional `stageLabel`, and optional `effect` (short symptom line from the disease stage).
Empty is `[]` when healthy. There is **no** POST/PUT to heal or tend — the nurse system is
simulation-only; guests and owners only read. The people list does not include these fields.
```json
{
"id": "f0.c0",
@@ -467,6 +473,16 @@ attendance — guests and owners only read. The people list does not include the
"absenceReason": null
}
],
"healthConditions": [
{
"defName": "CommonCold",
"label": "ОРВИ",
"severity": 0.55,
"progress": 0.2,
"stageLabel": null,
"effect": "Слабость, реже болтает"
}
],
"connections": {
"family": {
"parents": [