Add lesson marks 2-5 from lesson quality once per slot.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Leonid Pershin
2026-08-21 11:45:14 +03:00
co-authored by Cursor
parent 4c8d91c6f3
commit b359bebb41
16 changed files with 702 additions and 21 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/сокет не принимает «поставить оценку»
## Критерий готовности