41 lines
2.3 KiB
Markdown
41 lines
2.3 KiB
Markdown
# Фаза 68. Классный руководитель
|
||
|
||
## Зависимости
|
||
|
||
- [Фаза 13](../03-staffing/13-management-tab.md)
|
||
- [Фаза 7](../02-people/07-people-in-school.md)
|
||
|
||
## Зачем
|
||
|
||
У класса появляется учитель-классный. Без него собраниям некого инициировать; игрок впервые
|
||
в этом срезе что-то решает.
|
||
|
||
## Задачи
|
||
|
||
- [x] У `SchoolClass` опциональный `classTeacherId` (или эквивалент); сейв в ростере
|
||
- [x] Назначить / снять — HTTP через мейлбокс школы; только хозяин; гость `403`
|
||
- [x] Кандидат — нанятый с должностью `Teacher`; иначе отказ с текстом, не молчание
|
||
- [x] Один учитель может быть классным у нескольких классов
|
||
- [x] UI в «Управлении»: список классов со слотом классного (выбор / снять)
|
||
- [x] Имя классного видно там, где уже показывают класс (карточка ученика / управление)
|
||
- [x] Строки через `t(...)`, обе локали
|
||
- [x] Пустой слот — школа живёт как сейчас; собраний ещё нет
|
||
|
||
## Тесты, без которых фаза не закрыта
|
||
|
||
- [x] Назначение учителя класса пишет id в ростер и переживает сейв / reload
|
||
- [x] Не-учитель и чужой id отклоняются
|
||
- [x] Гость не назначает (API)
|
||
- [x] Снятие очищает слот; класс без классного валиден
|
||
- [x] Два класса могут указать одного и того же учителя
|
||
|
||
## Критерий готовности
|
||
|
||
- В Управлении назначить классного 5А, открыть карточку ученика / список — имя видно; F5 / reload
|
||
сохраняет
|
||
- Отфильтрованные тесты проекта по Testing policy проходят
|
||
|
||
## Стоп
|
||
|
||
Не вызов к директору. Не проступки. Не собрания. Не новый `PositionDef`.
|