Files

142 lines
9.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Учёба и журнал
Договорённость на срез после кабинета и классного, не текущий код.
Урок: [`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.
Нет учителя в кабинете → ваниль пишет **2** (`BehaviorDef.lessonMarkWhenNoTeacher`; `null`
пропуск оценки). Множитель 0 (например учебник) → качество 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` |