Mark phase 73 in progress; register slice 13.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Leonid Pershin
2026-08-21 11:30:32 +03:00
co-authored by Cursor
parent f76201cd35
commit 4c8d91c6f3
9 changed files with 325 additions and 0 deletions
+141
View File
@@ -0,0 +1,141 @@
# Учёба и журнал
Договорённость на срез после кабинета и классного, не текущий код.
Урок: [`lesson-consequences.md`](../off-queue/lesson-consequences.md). Расписание: [`schedule.md`](../04-schedule/schedule.md).
ИИ: [`ai.md`](../05-ai/ai.md). Кабинет: [`office.md`](../12-office/office.md). Общение: [`social.md`](../09-social/social.md).
Одежда: [`inventory.md`](../07-inventory/inventory.md). Здоровье (следующий): [`health.md`](../14-health/health.md).
Урок перестаёт быть только ростом навыка: появляется **оценка 25** и **посещаемость**. Игрок
их **не ставит** — считает мир. Карточка и класс показывают журнал. Плохой след сам тянет
внимание классного / авто-вызов из среза 12.
## Роль игрока: менеджер / симулятор бога
Тот же жест, что в [`office.md`](../12-office/office.md): рамка школы (учителя, расписание,
классный, правила), не ручной журнал и не «поставь пятёрку». Оценок от игрока нет.
## Что увидит игрок
- На карточке ученика — журнал: недавние оценки по предметам (2–5) и отметки явки.
- У класса — сводка (средний след / кто часто отсутствует), без таблицы на весь год в одной
простыне.
- Тост или авто-следствие, когда след совсем плохой (данные `BehaviorDef`), без кнопки «поставить
двойку».
## На какие вопросы отвечает
- Как из уже живого роста навыка на уроке получить школьную оценку 2–5.
- Как посещаемость берётся из присутствия (узел = кабинет урока), а не из отдельного чекбокса.
- Как журнал пишется в сейв и отдаётся по HTTP, не по сокету 20 Гц.
- Какие уже существующие множители (учитель, тепло, учебник, шёпот, голод) входят в оценку.
- Как плохой журнал стыкуется с классным и кабинетом директора **без** приказов игрока.
## Чего нет
- Ручных оценок и правок журнала игроком.
- Приказов «вызови Иванова» / «исправь оценку».
- Электронного дневника родителя и облачной выгрузки.
- Четвертных/годовых аттестаций как отдельной кампании (можно средний след, не «аттестация»).
- Болезней — срез 14; здесь только шов «отсутствие → прогул», который 14 заполнит причиной.
## Что меняется в уже принятом
| Было | Стало | Почему |
| --- | --- | --- |
| Урок пишет рост навыка и лог | Плюс оценка 2–5 по правилам | Иначе учёба не видна как школа |
| «Кто в кабинете» видно | Плюс явка/прогул/опоздание в журнале | Присутствие уже есть |
| Оценок нет ([`lesson-consequences`](../off-queue/lesson-consequences.md)) | Журнал есть | Этот срез |
| Классный только для собраний (12) | Плюс реакция на плохой след (авто) | Связность систем |
| Уместность одежды → тема разговора (9) | Может слегка двигать оценку / лог, если урок «на виду» — по данным | Связность без отдельного среза weave |
## Этап A — оценка с урока
После осмысленного куска урока (не каждый тик): из тех же входов, что `LessonLearning.Gain`,
мир пишет **одну** оценку 2–5 за урок (или за день-предмет — правило в `BehaviorDef`, ваниль:
за слот урока, если ученик хотя бы частично присутствовал и рост мог бы идти).
Шкала классическая: 2, 3, 4, 5. Пороги от нормализованного «качества урока» — данные, не UI.
Нет учителя в кабинете / множитель 0 → не пятёрка «за воздух»: либо пропуск оценки, либо 2 по
правилу в данных (явно в фазе).
Сейв — на ученике, разреженно (последние N по предмету / общий потолок).
После этапа школа целая: оценки пишутся, журнала на карточке может ещё не быть.
## Этап B — посещаемость
На каждый слот урока класса: **присутствовал** (в узле кабинета, не идёт), **опоздал**
(пришёл после начала — порог минут в данных), **отсутствовал**. Источник — присутствие и
обязанность, не чекбокс.
Пишется рядом с журналом оценок. Прогул без уважительной причины (здоровье — срез 14) может
добавлять проступок / вес к авто-вызову, если 12 уже в мире — пороги в данных.
После этапа явка есть даже без красивой сводки класса.
## Этап C — экран журнала
Вкладка или блок на карточке: оценки и явка. Сводка класса в Управлении или у классного —
коротко. HTTP через мейлбокс. Список людей журнал не раздувает.
Локали RU/EN.
## Этап D — связность и реакция
Явно в этом срезе, не «потом»:
| Уже есть | Влияние на журнал |
| --- | --- |
| Учитель в кабинете, навык, тепло, учебник, голод, шёпот | Качество → оценка |
| Уместность формы (7/9) | Лёгкий модификатор или только лог — число в `BehaviorDef` |
| Плохие оценки / прогулы | Info-тост; вес к авто-вызову (12); классный «замечает» в логе |
Игрок по-прежнему не ставит отметок.
После этапа срез 13 закрыт; болезни подключат причину отсутствия в 14.
## Поток данных
Оценки и явка — состояние человека / класса, считает симуляция + `HSchool.Ai` (качество урока).
Карточка — HTTP. Тосты — `EventDef` (срез 11). Сокет присутствия не несёт весь журнал.
Инварианты 1, 3, 4, 7: клиент не считает пятёрки; воркер пишет; симуляция без ASP.NET.
## Где живёт код
Нового проекта нет.
| Что | Куда |
| --- | --- |
| Пороги 2–5, потолки журнала | `BehaviorDef` / JSONC `core` |
| Качество урока → оценка | `HSchool.Ai` (+ уже существующий `LessonLearning`) |
| Явка из присутствия | `HSchool.Simulation` адаптер |
| Сейв журнала | ростер / people рядом с человеком |
| Карточка, сводка | Server + Client |
| Тосты / стык с вызовом | EventDef + хуки среза 12 |
## Советы, которые стоит принять сразу
- Не давать игроку редактировать оценку.
- Не слать журнал по WS 20 Гц.
- Одна оценка за урок (или явное правило), не спам каждую минуту.
- Связность — таблица в этапе D, не размазанные «заодно» по фазам без тестов.
- Уважительный пропуск (болезнь) — контракт для 14: вид явки или флаг причины.
## Заведомо не сейчас
- Приказы игрока, ручной журнал.
- ЕГЭ, олимпиады, переводные экзамены, родительский дневник онлайн.
- Больной учитель как дыра в дне, точечный вызов родителя — [`fallout.md`](../15-fallout/fallout.md).
- Болезни как система — [`health.md`](../14-health/health.md) (уже соседний срез).
## Зафиксировано этим разговором
| Тема | Решение |
| --- | --- |
| Шкала | Классические **25** |
| Приказы | Нет; менеджер / симулятор бога |
| Weave | Отдельного среза нет; этап D внутри 13 |
| Болезнь | Срез 14 |
| Стоп | После A/B/C школа целая |
| Ваниль | `core` |