Merge branch 'phase/73-lesson-marks'

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Leonid Pershin
2026-08-21 12:00:53 +03:00
co-authored by Cursor
17 changed files with 703 additions and 22 deletions
+2 -2
View File
@@ -55,8 +55,8 @@
за слот урока, если ученик хотя бы частично присутствовал и рост мог бы идти).
Шкала классическая: 2, 3, 4, 5. Пороги от нормализованного «качества урока» — данные, не UI.
Нет учителя в кабинете / множитель 0 → не пятёрка «за воздух»: либо пропуск оценки, либо 2 по
правилу в данных (явно в фазе).
Нет учителя в кабинете → ваниль пишет **2** (`BehaviorDef.lessonMarkWhenNoTeacher`; `null`
пропуск оценки). Множитель 0 (например учебник) → качество 0 → оценка 2 по порогам.
Сейв — на ученике, разреженно (последние N по предмету / общий потолок).
+10 -10
View File
@@ -13,20 +13,20 @@
## Задачи
- [ ] Из качества урока (те же входы, что `LessonLearning.Gain`) писать оценку **2, 3, 4 или 5**
- [ ] Пороги и «когда писать» (раз за слот урока) — в `BehaviorDef` / данных `core`
- [ ] Нет учителя / множитель 0 — явное правило (нет оценки или 2), зафиксировать в данных и тесте
- [ ] Хранение на ученике, потолок недавних; сейв
- [ ] Детерминизм: тот же сид и те же входы → та же оценка
- [ ] Игрок оценку не ставит и не правит (нет API правки)
- [x] Из качества урока (те же входы, что `LessonLearning.Gain`) писать оценку **2, 3, 4 или 5**
- [x] Пороги и «когда писать» (раз за слот урока) — в `BehaviorDef` / данных `core`
- [x] Нет учителя / множитель 0 — явное правило (нет оценки или 2), зафиксировать в данных и тесте
- [x] Хранение на ученике, потолок недавних; сейв
- [x] Детерминизм: тот же сид и те же входы → та же оценка
- [x] Игрок оценку не ставит и не правит (нет API правки)
## Тесты, без которых фаза не закрыта
- [ ] Урок с сильным учителем и полными множителями даёт не ниже урока с пустым кабинетом учителя
- [x] Урок с сильным учителем и полными множителями даёт не ниже урока с пустым кабинетом учителя
при тех же прочих
- [ ] За один слот не пишется пачка оценок каждую минуту
- [ ] Сейв сохраняет последние оценки
- [ ] HTTP/сокет не принимает «поставить оценку»
- [x] За один слот не пишется пачка оценок каждую минуту
- [x] Сейв сохраняет последние оценки
- [x] HTTP/сокет не принимает «поставить оценку»
## Критерий готовности
+1 -1
View File
@@ -11,7 +11,7 @@
| Фаза | Статус | Зачем |
| --- | --- | --- |
| [73. Оценка с урока](73-lesson-marks.md) | 🔄 | 2–5 из качества урока, сейв |
| [73. Оценка с урока](73-lesson-marks.md) | | 2–5 из качества урока, сейв |
**Этап B — явка.**