40 lines
2.6 KiB
Markdown
40 lines
2.6 KiB
Markdown
# Фаза 8. Просмотр людей
|
|
|
|
## Зависимости
|
|
|
|
- [Фаза 7](07-people-in-school.md)
|
|
- [Фаза 1](01-manager-shell.md)
|
|
|
|
## Зачем
|
|
|
|
Игрок видит, кто учится и работает в его школе, не теряя из виду часы, карту и события.
|
|
|
|
## Задачи
|
|
|
|
- [x] `GET /api/schools/{id}/people`: фильтры (роль, параллель, должность, пол, диапазон
|
|
возраста), сортировка, страница. Читает **опубликованный снимок** ростера и не трогает
|
|
воркер — инвариант «только поток школы касается школы» остаётся целым
|
|
- [x] `GET /api/schools/{id}/people/{personId}`: карточка через мейлбокс воркера с
|
|
`TaskCompletionSource`, потому что нужды живые
|
|
- [x] Панель «Люди» нижним рядом оболочки менеджера, во всю ширину: фильтры, сортируемые
|
|
колонки, пейджер
|
|
- [x] Строка списка — только лёгкие поля: ФИО, роль, класс или должность, возраст, пол
|
|
- [x] Карточка: тело, навыки, черты, нужды, семья со ссылками на родных — по ссылке открывается
|
|
карточка родственника
|
|
- [x] Строки и подписи через `t(...)`, как всё остальное
|
|
- [x] `docs/protocol.md` пополняется в том же коммите, что и обработчики
|
|
- [x] Тесты API: фильтр по роли и параллели, сортировка, границы страниц, неизвестная школа,
|
|
неизвестный человек
|
|
|
|
## Критерий готовности
|
|
|
|
- Открыть школу, отфильтровать учеников пятой параллели, отсортировать по фамилии
|
|
- Открыть карточку ученика, увидеть родителей, перейти по ссылке к матери
|
|
- Тысяча строк не роняет и не подвешивает панель
|
|
- `dotnet test` и клиентские `npm test` / `build` проходят
|
|
|
|
## Стоп
|
|
|
|
Не редактировать людей. Не нанимать и не увольнять руками. Не показывать характеристики в списке —
|
|
только в карточке.
|