The timetable already named a teacher; learning ignored whether they were in the toilet, still walking, or not a person at all. Co-authored-by: Cursor <cursoragent@cursor.com>
44 lines
2.5 KiB
Markdown
44 lines
2.5 KiB
Markdown
# Фаза 48. Учитель в кабинете
|
||
|
||
## Зависимости
|
||
|
||
- [Фаза 21](21-decisions.md)
|
||
- [Фаза 18](18-presence-walking.md)
|
||
|
||
## Зачем
|
||
|
||
Ученик в кабинете больше не качает навык в пустоту. Нет учителя на месте — нет роста.
|
||
|
||
## Задачи
|
||
|
||
- [x] `LessonLearningSystem` растёт навык, только если назначенный учитель стоит в
|
||
`lesson.RoomId`: на кампусе, путь пуст, остаток минут 0
|
||
- [x] Нет человека с `TeacherId` в мире — как отсутствующий
|
||
- [x] Действие учителя урок не отменяет
|
||
- [x] Формула `LessonLearning.Gain` не меняется
|
||
- [x] Лог ученика `lesson-no-teacher` один раз на предмет в сутки, не каждый тик; `thingDef` —
|
||
предмет; подпись из каталога
|
||
- [x] `docs/protocol.md` — новый `type` у HTTP лога, без бампа сокета
|
||
- [x] Фикстуры, где учитель был строкой `t1` вне ростера, нанимают живого человека — иначе
|
||
существующий тест роста навыка зелёный впустую
|
||
|
||
## Тесты, без которых фаза не закрыта
|
||
|
||
- [x] Ученик и учитель стоят в кабинете → навык за урок вырос
|
||
- [x] Ученик в кабинете, учитель в другом узле → навык не вырос
|
||
- [x] Учитель идёт по коридору в этот кабинет → пока идёт, роста нет
|
||
- [x] Нет человека с id учителя → роста нет
|
||
- [x] За урок без учителя в логе ученика одна строка `lesson-no-teacher`, не по числу тиков
|
||
- [x] Голодный по-прежнему учится хуже сытого, когда учитель на месте
|
||
|
||
## Критерий готовности
|
||
|
||
- Учитель ушёл в туалет посреди математики — класс в кабинете есть, навык за эти минуты не
|
||
ползёт
|
||
- `dotnet test` проходит
|
||
|
||
## Стоп
|
||
|
||
Не масштабировать рост навыком учителя. Не трогать тепло, учебник и дорогу. Не бампить
|
||
протокол. Не писать лог учителю.
|