# Фаза 48. Учитель в кабинете ## Зависимости - [Фаза 21](../05-ai/21-decisions.md) - [Фаза 18](../05-ai/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` проходит ## Стоп Не масштабировать рост навыком учителя. Не трогать тепло, учебник и дорогу. Не бампить протокол. Не писать лог учителю.