142 lines
9.7 KiB
Markdown
142 lines
9.7 KiB
Markdown
# Учёба и журнал
|
||
|
||
Договорённость на срез после кабинета и классного, не текущий код.
|
||
Урок: [`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).
|
||
|
||
Урок перестаёт быть только ростом навыка: появляется **оценка 2–5** и **посещаемость**. Игрок
|
||
их **не ставит** — считает мир. Карточка и класс показывают журнал. Плохой след сам тянет
|
||
внимание классного / авто-вызов из среза 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) (уже соседний срез).
|
||
|
||
## Зафиксировано этим разговором
|
||
|
||
| Тема | Решение |
|
||
| --- | --- |
|
||
| Шкала | Классические **2–5** |
|
||
| Приказы | Нет; менеджер / симулятор бога |
|
||
| Weave | Отдельного среза нет; этап D внутри 13 |
|
||
| Болезнь | Срез 14 |
|
||
| Стоп | После A/B/C школа целая |
|
||
| Ваниль | `core` |
|