Document off-queue lesson coherence (phases 48-52).

Teacher presence, teacher skill, warmth, textbooks and weather commute are already visible numbers that do not affect the lesson or the walk to school.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Leonid Pershin
2026-08-20 08:21:14 +03:00
co-authored by Cursor
parent 9d96108516
commit 254c43535e
8 changed files with 296 additions and 0 deletions
+90
View File
@@ -0,0 +1,90 @@
# Вне очереди
Задачи, которых нет в нумерованных срезах. Сюда не дописывают срез 9 и не заводят срез 10:
это склейка уже живых систем, после любой фазы школа целая.
Люди: [`people.md`](people.md). Штат: [`staffing.md`](staffing.md). Расписание:
[`schedule.md`](schedule.md). Присутствие: [`ai.md`](ai.md). Одежда и климат:
[`inventory.md`](inventory.md).
## Связность урока
Урок уже растёт навык, если ученик стоит в кабинете и не голоден. Рядом лежат числа, которые
игрок видит и которые на этот рост не влияют: учитель в туалете, навык учителя, тепло,
учебник в сумке, снег на дороге.
Этот кусок отвечает на вопрос «почему нанимать сильного, чинить тепло и класть учебник в
сумку». Оценок, посещаемости как журнала и приказов нет.
### Что меняется в уже принятом
| Было | Стало | Почему |
| --- | --- | --- |
| Ученик в кабинете качает навык, учитель может быть где угодно | Рост только если назначенный учитель стоит в том же узле и не идёт | Зазор «обязанность / место» уже есть; урок его не смотрел |
| Зарплата зависит от навыков, урок — нет | Навык учителя по предмету масштабирует `Gain` | Иначе «математика 78» в пуле — только цена |
| Голод режет урок, тепло — нет | Та же `NeedFactor` на тепло | Полоска уже живая; [`inventory.md`](inventory.md) откладывал штраф |
| Учебники сегодняшних предметов едут в сумке | Нет в сумке на этом уроке — половинный рост | Переноска и шкафчик иначе остаются двумя числами |
| Погода одевает, на приход не влияет | Дождь и снег добавляют минуты к запасу на дорогу | Часы уже показывают осадки; ленивый уже опаздывает от черты |
### Формула
`HSchool.Ai.LessonLearning.Gain` по-прежнему чистое число. Множители:
- **нужды** — `NeedFactor(голод) × NeedFactor(тепло)`; нет нужды в каталоге — множитель 1;
- **черты ученика** — как сейчас;
- **учитель** — `NeedFactor(навык / 100)`, навык — среднее по `SubjectDef.skills` у учителя,
нет ключа — `Range.Min` этого навыка; учителя нет в комнате — множитель 0, рост не пишется;
- **учебник** — 1, если в сумке есть экземпляр с `subject` этого урока; иначе
`BehaviorDef.lessonNoTextbookFactor` (ваниль 0.5).
Учитель «стоит в комнате»: `NodeId` = кабинет урока, путь пуст, остаток минут 0. Действие
учителя не отменяет урок (дежурство — не `ActionDef`). Нет человека с этим id — учителя нет.
Дорога: к нынешнему `SlackMinutes` (черты + бросок) прибавляются минуты из
`BehaviorDef.commuteRainMinutes` / `commuteSnowMinutes`, если в момент сборки плана дня на
улице дождь или снег. `HSchool.Ai` осадки не знает — симуляция передаёт уже посчитанные минуты.
### Что видит игрок
Числа на карточке. Плюс строка в сегодняшней истории, **один раз на ключ в сутки**, не каждый
тик:
| Тип | Когда | `thingDef` |
| --- | --- | --- |
| `lesson-no-teacher` | Урок шёл, учителя не было в кабинете | предмет |
| `lesson-cold` | На уроке, который иначе учил, тепло ниже `needThreshold` | предмет |
| `lesson-no-textbook` | На уроке нет учебника этого предмета в сумке | предмет |
Опоздание из-за снега в лог не пишем: весь состав получил бы одну и ту же строку, а место
человека и так видно.
Клиент по-прежнему рисует `label` с сервера. Сокет и сейв не меняются. Версию протокола не
бампить.
### Где живёт код
Нового проекта нет. Формула и план дня — `HSchool.Ai`. Присутствие учителя, тепло, сумка,
погода на входе в план — `HSchool.Simulation`. Подписи лога — каталог. Список типов —
`docs/protocol.md` (HTTP лога).
### Заведомо не сейчас
- Оценки, журнал посещаемости, выговор за прогул.
- Перегруз замедляет ходьбу.
- Насмешки над формой и мнения — срез 9.
- Вызов родителей, деньги за одежду, болезнь от промокания.
- Клиент сам считает «учится хуже».
### Зафиксировано этим разговором
| Тема | Решение |
| --- | --- |
| Нарезка | Пять фаз во «Вне очереди», не срез 10 |
| Стоп | После каждой фазы школа целая |
| Протокол | Не бампить; новые `type` только в HTTP лога |
| Сейв | Не трогать |
| Учитель на уроке | Тот же узел, не идёт; нет id — нет роста |
| Навык учителя | Среднее по скиллам предмета, та же кривая что у нужды |
| Тепло | Рядом с голодом, произведение двух `NeedFactor` |
| Учебник | Только сумка, не шкафчик и не дом; ваниль ×0.5 |
| Погода на дорогу | Минуты в `BehaviorDef`; лога нет |