Register slice 12 and mark phase 68 in progress.
EOF Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
# Фаза 68. Классный руководитель
|
||||
|
||||
## Зависимости
|
||||
|
||||
- [Фаза 13](../03-staffing/13-management-tab.md)
|
||||
- [Фаза 7](../02-people/07-people-in-school.md)
|
||||
|
||||
## Зачем
|
||||
|
||||
У класса появляется учитель-классный. Без него собраниям некого инициировать; игрок впервые
|
||||
в этом срезе что-то решает.
|
||||
|
||||
## Задачи
|
||||
|
||||
- [ ] У `SchoolClass` опциональный `classTeacherId` (или эквивалент); сейв в ростере
|
||||
- [ ] Назначить / снять — HTTP через мейлбокс школы; только хозяин; гость `403`
|
||||
- [ ] Кандидат — нанятый с должностью `Teacher`; иначе отказ с текстом, не молчание
|
||||
- [ ] Один учитель может быть классным у нескольких классов
|
||||
- [ ] UI в «Управлении»: список классов со слотом классного (выбор / снять)
|
||||
- [ ] Имя классного видно там, где уже показывают класс (карточка ученика / управление)
|
||||
- [ ] Строки через `t(...)`, обе локали
|
||||
- [ ] Пустой слот — школа живёт как сейчас; собраний ещё нет
|
||||
|
||||
## Тесты, без которых фаза не закрыта
|
||||
|
||||
- [ ] Назначение учителя класса пишет id в ростер и переживает сейв / reload
|
||||
- [ ] Не-учитель и чужой id отклоняются
|
||||
- [ ] Гость не назначает (API)
|
||||
- [ ] Снятие очищает слот; класс без классного валиден
|
||||
- [ ] Два класса могут указать одного и того же учителя
|
||||
|
||||
## Критерий готовности
|
||||
|
||||
- В Управлении назначить классного 5А, открыть карточку ученика / список — имя видно; F5 / reload
|
||||
сохраняет
|
||||
- Отфильтрованные тесты проекта по Testing policy проходят
|
||||
|
||||
## Стоп
|
||||
|
||||
Не вызов к директору. Не проступки. Не собрания. Не новый `PositionDef`.
|
||||
Reference in New Issue
Block a user