diff --git a/AGENTS.md b/AGENTS.md index 28bec94..2df68d1 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -30,6 +30,7 @@ way; this file is *how to work in them*. | class teachers, director summons queue, parent meetings | [`docs/design/12-office/`](docs/design/12-office/office.md) — slice 12, phases 68–72 | | marks 2–5, attendance journal | [`docs/design/13-grades/`](docs/design/13-grades/grades.md) — slice 13, phases 73–76 | | health conditions, diseases, contagion, nurse | [`docs/design/14-health/`](docs/design/14-health/health.md) — slice 14, phases 77–80 | +| fight injuries, sick teachers, parent summons, wet/aftereffect | [`docs/design/15-fallout/`](docs/design/15-fallout/fallout.md) — slice 15, phases 81–84 | | a bug in already-shipped behaviour | `.claude/skills/bug-work` — document in `docs/bugs/`, discuss only if the fix has a fork, then patch | | a task that is not in any slice | `.claude/skills/side-work` — discuss, document in [`docs/phases/off-queue/`](docs/phases/off-queue/README.md), then implement | | a new named slice of the game | `.claude/skills/slice-work` — discuss, write design and phases, then `/phase-orch` | diff --git a/docs/design/12-office/office.md b/docs/design/12-office/office.md index 4b0ddfb..253f7bd 100644 --- a/docs/design/12-office/office.md +++ b/docs/design/12-office/office.md @@ -13,6 +13,12 @@ Игрок **назначает классных** и **смотрит**. Кнопки «вызвать к директору» и «назначить собрание» нет: авто и ИИ классного. +### Роль игрока: менеджер / симулятор бога + +Экран школы — **менеджер**, не контроллер юнитов. Игрок задаёт рамку (штат, расписание, +правила, классные) и смотрит, как мир сам ходит, ссорится и вызывается к директору. Приказов +«этому ученику — сюда» нет и в соседних срезах учёбы и здоровья не появляется. + ## Что увидит игрок - В **Управлении** — у каждого класса слот «классный»: только из нанятых учителей; снять / @@ -163,9 +169,8 @@ info. После — родители уходят с карты (снова « ## Заведомо не сейчас - Кнопка «вызвать к директору» / «назначить собрание». -- Вызов одного родителя к директору по проступку. -- Оценки, журнал посещаемости, «отправить домой». -- Травмы, медпункт как лечение после драки. +- Оценки и журнал — [`grades.md`](../13-grades/grades.md); болезни — [`health.md`](../14-health/health.md). +- Вызов одного родителя, травмы драки — [`fallout.md`](../15-fallout/fallout.md). - Завуч, рассадка, настроение-нужда. - Календарь собраний на четверть. @@ -183,3 +188,4 @@ info. После — родители уходят с карты (снова « | Стоп | После A — классные; после B — кабинет без собраний | | Протокол | Бамп только если фазе нужен новый статус присутствия | | Оценки / шкала дисциплины | Не в срезе | +| Роль игрока | Менеджер / симулятор бога: рамка школы, не приказы юнитам | diff --git a/docs/design/15-fallout/fallout.md b/docs/design/15-fallout/fallout.md new file mode 100644 index 0000000..7acf3ec --- /dev/null +++ b/docs/design/15-fallout/fallout.md @@ -0,0 +1,121 @@ +# Последствия + +Договорённость на срез после кабинета, журнала и здоровья, не текущий код. +Кабинет: [`office.md`](../12-office/office.md). Журнал: [`grades.md`](../13-grades/grades.md). +Здоровье: [`health.md`](../14-health/health.md). Общение: [`social.md`](../09-social/social.md). + +Срезы 12–14 оставили дыры, которые **теперь** куда класть: лёгкая травма после драки, +учитель на больничном, вызов **одного** родителя, «мокрый» после дождя, лёгкий след после +болезни. Этот срез их закрывает. Игрок по-прежнему **менеджер / симулятор бога** — без кнопок +«вызови маму» и «полечи синяк». + +## Роль игрока: менеджер / симулятор бога + +Рамка школы уже есть. Здесь мир дожимает последствия сам. Новых приказов юнитам нет. + +## Что увидит игрок + +- После драки — синяк/ушиб на вкладке здоровья, путь к медсестре, не «оба живы и как новые». +- Больной учитель не ведёт урок: кабинет без него, оценки/явка это отражают (шов 13/14). +- Редко — родитель **одного** ученика идёт в школу к классному или директору (не собрание класса). +- После ливня — состояние «мокрый» кормит простуду; после тяжёлой болезни — короткий ослабленный + хвост. + +## На какие вопросы отвечает + +- Как травма драки живёт в том же слое состояний, что болезнь (14), без хирургии. +- Как болезнь сотрудника гасит урок и журнал, не ломая расписание файлом. +- Как вызов одного родителя отличается от собрания класса (12) и от авто-вызова ученика. +- Как «мокрый» и пост-болезнь стыкуют климат, здоровье и учёбу. + +## Чего нет (и не переезжает сюда) + +- Кнопок игрока и карантинных приказов. +- Хирургии, крови, шрамов как кампании, госпиталя на недели. +- ЕГЭ, олимпиад, переводных экзаменов, электронного дневника родителя. +- Завуча, рассадки, настроения-нужды. +- Календаря собраний на четверть. + +## Что меняется в уже принятом + +| Было | Стало | Почему | +| --- | --- | --- | +| Драка без травм (9/12/14) | Лёгкие условия-травмы на слое 14 | Медкабинет уже умеет ухаживать | +| Родитель на карте только на собрании (12) | Плюс точечный вызов по поводу | Журнал и проступки дают повод | +| Учитель болеет как человек (14) | Урок без него / дыра в журнале явная | Иначе болезнь штата незаметна | +| Промокание «через тепло» (14) | Явное короткое состояние «мокрый» | Вектор болезней честнее | +| Тяжёлая болезнь кончилась — сразу норма | Короткий aftereffect | Реализм без хроники на год | + +## Этап A — травмы драки + +Драка (уже есть) может повесить лёгкое `HealthCondition` (ушиб, ссадина — defs в `core`). +Тяжесть низкая, крови нет, хирургии нет. Медсестра ускоряет сход. На урок/общение — лёгкий +множитель. Тост info редко (не на каждый синяк). + +После этапа школа целая: драки оставляют след на вкладке здоровья. + +## Этап B — больной сотрудник и урок + +Сотрудник с тяжёлой стадией болезни с высоким шансом не приходит (уже дух 14). Явно: + +- учитель отсутствует → урок без учителя (оценка/рост по правилам 13/48); +- тост или лог «урок сорван / без учителя»; +- зарплатный больничный лист **не** моделируем (как в 14). + +После этапа болезнь учителя видна в учебном дне. + +## Этап C — вызов одного родителя + +Авто, пороги в данных: тяжёлый проступок, череда двоек, повторные прогулы (не болезнь). + +Не собрание класса: один ученик → один (или двое) родителей идут в школу к классному или в +очередь директора. Ходьба как у собрания. Короткий разговор, сдвиг мнений, тост. Игрок не +назначает. + +После этапа «вызов родителей» из 12 закрыт точечно. + +## Этап D — мокрый, хвост болезни, лёгкая сводка + +- Состояние «мокрый» после дождя/снега на улице (короткое); кормит респираторные def. +- Aftereffect после тяжёлой болезни (усталость/ослабленный иммунный хвост) — короткий, данные. +- Опционально в этой же фазе: info «средний след за период» без аттестации и ЕГЭ — если дёшево; + иначе только мокрый+хвост, сводку не раздувать. + +После этапа срез 15 закрыт. + +## Поток данных + +Травмы и мокрый — тот же слой, что 14. Вызов родителя — ИИ + присутствие + EventDef, как +собрание. Дыры урока — уже присутствие учителя + журнал 13. + +## Где живёт код + +Нового проекта нет. Content (defs травм/мокрого), Ai + Simulation, Server/Client для тостов и +карточки. + +## Советы, которые стоит принять сразу + +- Не возвращать кнопку игрока «заодно с родителем». +- Не делать травму смертельной или хирургической. +- Не плодить второй слой здоровья рядом с 14. +- Точечный вызов родителя ≠ собрание: разные триггеры и состав. + +## Заведомо не сейчас + +- ЕГЭ, четвертная аттестация как режим, дневник онлайн. +- Завуч, рассадка, карантин-UI, хирургия. +- Приказы игрока. + +## Зафиксировано этим разговором + +| Тема | Решение | +| --- | --- | +| Форма | Срез 15, дожим 12–14, не свалка | +| Травмы драки | Лёгкие условия на слое 14 | +| Учитель болен | Дыра в уроке/журнале, без больничного листа | +| Родитель | Точечный авто-вызов, ходьба | +| Мокрый / aftereffect | Да | +| Приказы / ЕГЭ / хирургия | Нет | +| Роль | Менеджер / симулятор бога | +| Ваниль | `core` | +| Стоп | После каждого этапа школа целая | diff --git a/docs/design/README.md b/docs/design/README.md index d652f6a..4a3bdb0 100644 --- a/docs/design/README.md +++ b/docs/design/README.md @@ -18,4 +18,5 @@ | 12. Кабинет и классный | [12-office](12-office/office.md) | | 13. Учёба и журнал | [13-grades](13-grades/grades.md) | | 14. Здоровье и болезни | [14-health](14-health/health.md) | +| 15. Последствия | [15-fallout](15-fallout/fallout.md) | | Вне очереди | [off-queue](off-queue/) | diff --git a/docs/phases/15-fallout/81-fight-injuries.md b/docs/phases/15-fallout/81-fight-injuries.md new file mode 100644 index 0000000..725448a --- /dev/null +++ b/docs/phases/15-fallout/81-fight-injuries.md @@ -0,0 +1,36 @@ +# Фаза 81. Травмы драки + +## Зависимости + +- [Фаза 44](../09-social/44-quarrel-fight.md) +- [Фаза 77](../14-health/77-health-conditions.md) +- [Фаза 80](../14-health/80-nurse-health-ui.md) + +## Зачем + +Драка оставляет лёгкий след на том же слое здоровья, что болезнь. + +## Задачи + +- [ ] После драки с шансом/по тяжести исхода — лёгкие `HealthCondition` (ушиб и т.п.) в `core` +- [ ] Без крови, хирургии, смерти; потолки тяжести в данных +- [ ] Медсестра ускоряет сход (тот же уход, что 80) +- [ ] Лёгкий штраф к уроку/общению — поля на def +- [ ] Info-тост только по порогу (редко), не на каждый синяк +- [ ] Игрок не лечит кнопкой + +## Тесты, без которых фаза не закрыта + +- [ ] Драка чаще оставляет условие, чем дружеский Chat +- [ ] Условие видно в слое здоровья и сходит быстрее с медсестрой +- [ ] Нет нового API «вылечи травму» +- [ ] Skip не оставляет вечную травму без тика схода + +## Критерий готовности + +- Задира после драки на вкладке здоровья с ушибом; уход в медкабинете помогает +- Отфильтрованные тесты по Testing policy проходят + +## Стоп + +Не шрамы-кампания. Не вызов родителя (83). Не мокрый (84). diff --git a/docs/phases/15-fallout/82-sick-staff-lessons.md b/docs/phases/15-fallout/82-sick-staff-lessons.md new file mode 100644 index 0000000..b88a25b --- /dev/null +++ b/docs/phases/15-fallout/82-sick-staff-lessons.md @@ -0,0 +1,35 @@ +# Фаза 82. Больной учитель и урок + +## Зависимости + +- [Фаза 78](../14-health/78-diseases.md) +- [Фаза 48](../off-queue/48-lesson-teacher-present.md) +- [Фаза 73](../13-grades/73-lesson-marks.md) + +## Зачем + +Болезнь сотрудника бьёт по учебному дню, а не только по полоске на карточке. + +## Задачи + +- [ ] Учитель с тяжёлой стадией / «остаться дома» не появляется на уроке (явная стыковка с 14) +- [ ] Урок без учителя → рост/оценка по уже принятым правилам 48/73 +- [ ] Лог и/или `EventDef` info «без учителя» / сорванный урок — без спама каждый тик +- [ ] Больничный лист и перерасчёт зарплаты не моделируем +- [ ] Детерминизм: тот же сид болезни → тот же приход/неприход + +## Тесты, без которых фаза не закрыта + +- [ ] Больной учитель вне школы → у учеников нет роста «как с учителем в кабинете» +- [ ] Здоровый контроль при тех же слотах растёт +- [ ] Notice/лог не чаще порога +- [ ] Явка учеников при сорванном уроке не помечается как их прогул ошибочно + +## Критерий готовности + +- Грипп у математика → в журнале дыра/слабые оценки за слот без него; тост или лог понятен +- Отфильтрованные тесты по Testing policy проходят + +## Стоп + +Не замена учителем-дублёром как отдельная должность. Не вызов родителя. Не травмы. diff --git a/docs/phases/15-fallout/83-parent-summons.md b/docs/phases/15-fallout/83-parent-summons.md new file mode 100644 index 0000000..54d1b80 --- /dev/null +++ b/docs/phases/15-fallout/83-parent-summons.md @@ -0,0 +1,39 @@ +# Фаза 83. Вызов одного родителя + +## Зависимости + +- [Фаза 68](../12-office/68-class-teacher.md) +- [Фаза 70](../12-office/70-director-summons.md) +- [Фаза 72](../12-office/72-parent-meetings.md) +- [Фаза 76](../13-grades/76-grades-coupling.md) + +## Зачем + +Собрание класса — не единственный повод родителю прийти. Точечный разговор по поводу. + +## Задачи + +- [ ] Авто-триггеры в данных: тяжёлый проступок, череда плохих оценок, повторные прогулы (не + болезнь) +- [ ] Один ученик → один или оба родителя идут в школу (доля/кто — сид); не весь класс +- [ ] Цель: классный (если есть) или кабинет директора / очередь как у ученика +- [ ] Ходьба по карте; после разговора — снова вне школы +- [ ] Сдвиг мнений, строка лога, info-тост +- [ ] Кнопки игрока нет; не путать с собранием 72 + +## Тесты, без которых фаза не закрыта + +- [ ] Порог двоек/прогулов запускает вызов; болезнь-явка — нет +- [ ] На карте появляются только родители этого ученика, не весь класс +- [ ] Без классного и без директора вызов не зависает навечно (явное гашение) +- [ ] Нет API «вызови родителей» от клиента +- [ ] Skip не оставляет родителя вечно в коридоре + +## Критерий готовности + +- После череды прогулов мама идёт к классному/директору; тост; уходит +- Отфильтрованные тесты по Testing policy проходят + +## Стоп + +Не электронный дневник. Не собрание класса (уже 72). Не приказы игрока. diff --git a/docs/phases/15-fallout/84-wet-aftereffect.md b/docs/phases/15-fallout/84-wet-aftereffect.md new file mode 100644 index 0000000..f061002 --- /dev/null +++ b/docs/phases/15-fallout/84-wet-aftereffect.md @@ -0,0 +1,37 @@ +# Фаза 84. Мокрый и aftereffect + +## Зависимости + +- [Фаза 78](../14-health/78-diseases.md) +- [Фаза 32](../07-inventory/32-weather-warmth.md) +- [Фаза 53](../off-queue/53-weather-commute.md) + +## Зачем + +Дождь и тяжёлая болезнь оставляют короткий хвост, не только мгновенный шанс заболеть. + +## Задачи + +- [ ] Короткое состояние «мокрый» после улицы под дождём/снегом (или эквивалент на слое 14) +- [ ] Мокрый повышает вектор респираторных болезней (поля def) +- [ ] Aftereffect после тяжёлой болезни — короткий ослабленный хвост (урок/нужды), данные +- [ ] Сход сами / у медсестры не обязателен для мокрого (высох), aftereffect — по кривой +- [ ] Без новой вкладки, если здоровье (80) уже показывает условия +- [ ] Опционально: один info «средний след за период» без аттестации — только если не раздувает + фазу; иначе не делать + +## Тесты, без которых фаза не закрыта + +- [ ] Приход под дождём чаще даёт «мокрый», чем ясная погода +- [ ] Мокрый повышает шанс ванильной респираторной относительно сухого контроля +- [ ] После тяжёлой болезни aftereffect появляется и сходит за ограниченное время +- [ ] Сейв сохраняет оба вида условий + +## Критерий готовности + +- Ливень → мокрые ученики → выше простуды; тяжёлый грипп оставляет короткий хвост на карточке +- Отфильтрованные тесты по Testing policy проходят + +## Стоп + +Не ЕГЭ. Не карантин-UI. Не хроника на год. Не хирургия. diff --git a/docs/phases/15-fallout/README.md b/docs/phases/15-fallout/README.md new file mode 100644 index 0000000..7a11d87 --- /dev/null +++ b/docs/phases/15-fallout/README.md @@ -0,0 +1,35 @@ +Индекс срезов: [`../README.md`](../README.md). + +## Срез 15. Последствия + +Дизайн: [`fallout.md`](../../design/15-fallout/fallout.md). + +Дожим петель 12–14: травма после драки, больной учитель, вызов одного родителя, мокрый и хвост +болезни. Менеджер / симулятор бога. Срез можно остановить после этапа A — синяки есть, даже если +родителей ещё не вызывают. + +**Этап A — травмы.** + +| Фаза | Статус | Зачем | +| --- | --- | --- | +| [81. Травмы драки](81-fight-injuries.md) | ⬜ | Лёгкие условия, медсестра | + +**Этап B — штат.** + +| Фаза | Статус | Зачем | +| --- | --- | --- | +| [82. Больной учитель](82-sick-staff-lessons.md) | ⬜ | Нет на уроке → журнал/тост | + +**Этап C — семья.** + +| Фаза | Статус | Зачем | +| --- | --- | --- | +| [83. Вызов родителя](83-parent-summons.md) | ⬜ | Один ученик, авто, ходьба | + +**Этап D — климат и хвост.** + +| Фаза | Статус | Зачем | +| --- | --- | --- | +| [84. Мокрый и aftereffect](84-wet-aftereffect.md) | ⬜ | Дождь → мокрый; хвост болезни | + +81 стоит на 44 и 77; 82 — на 78 и 73/48; 83 — на 68/70/76; 84 — на 78 и 32. diff --git a/docs/phases/README.md b/docs/phases/README.md index cb21cd1..ce5ce51 100644 --- a/docs/phases/README.md +++ b/docs/phases/README.md @@ -25,4 +25,5 @@ | 12. Кабинет и классный | 68–72 | [12-office](12-office/README.md) | [office](../design/12-office/office.md) | | 13. Учёба и журнал | 73–76 | [13-grades](13-grades/README.md) | [grades](../design/13-grades/grades.md) | | 14. Здоровье и болезни | 77–80 | [14-health](14-health/README.md) | [health](../design/14-health/health.md) | +| 15. Последствия | 81–84 | [15-fallout](15-fallout/README.md) | [fallout](../design/15-fallout/fallout.md) | | Вне очереди | 48–55 | [off-queue](off-queue/README.md) | [off-queue](../design/off-queue/) |