45 lines
2.9 KiB
Markdown
45 lines
2.9 KiB
Markdown
# Фаза 11. Пустая школа и пул соискателей
|
|
|
|
## Зависимости
|
|
|
|
- [Фаза 10](10-subjects.md)
|
|
- [Фаза 6](../02-people/06-people-generator.md)
|
|
|
|
## Зачем
|
|
|
|
Школа открывается без единого сотрудника, а рядом появляется пул людей, готовых наняться.
|
|
Нанимать пока нечем — это фаза про данные.
|
|
|
|
## Задачи
|
|
|
|
- [x] `RosterGenerator` больше не закрывает должности: новая школа получает учеников, родителей
|
|
и ноль сотрудников
|
|
- [x] Пул соискателей в `HSchool.People`: список полноценных `Person`, детерминированный от сида
|
|
школы и номера недели
|
|
- [x] Соискателем может стать родитель ученика — тот же человек, без второй сущности
|
|
- [x] Базовый запрос по зарплате считается из навыков соискателя; шкала — в данных, не в коде
|
|
- [x] Еженедельное обновление: часть уходит, часть остаётся с теми же именами и запросом,
|
|
приходят новые. Полная замена запрещена
|
|
- [x] Пул живёт в `saves/{id}.people.json` рядом с ростером и пишется по тем же правилам —
|
|
при изменении состава, не по таймеру
|
|
- [x] Воркер публикует пул вместе со снимком ростера
|
|
|
|
## Тесты, без которых фаза не закрыта
|
|
|
|
- [x] Тот же сид и та же неделя — тот же пул
|
|
- [x] После обновления часть людей та же самая, с теми же навыками и тем же запросом
|
|
- [x] Пул не пустеет и не растёт бесконечно за пятьдесят недель
|
|
- [x] Запрос по зарплате у сильного кандидата выше, чем у слабого
|
|
- [x] Новая школа не имеет ни одного сотрудника, но все ученические места заняты
|
|
- [x] Соискатель не попадает в ростер школы, пока не нанят
|
|
|
|
## Критерий готовности
|
|
|
|
- Создать школу — в списке людей есть ученики и родители, работников нет
|
|
- Перезапуск сервера поднимает тот же пул
|
|
- `dotnet test` проходит
|
|
|
|
## Стоп
|
|
|
|
Ни найма, ни денег, ни назначения предметов. Пул только существует и обновляется.
|