This commit is contained in:
Leonid Pershin
2026-08-18 23:51:10 +03:00
parent d8f8db6a48
commit 65feda3756
50 changed files with 1485 additions and 224 deletions
+42
View File
@@ -0,0 +1,42 @@
# Фаза 12. Наём, предметы и предел бюджета
## Зависимости
- [Фаза 11](11-applicants.md)
## Зачем
Игрок нанимает людей и раздаёт предметы, а выделенная сумма ограничивает, сколько он может себе
позволить. Экрана ещё нет — всё через API.
## Задачи
- [ ] Выделяемая на месяц сумма — в `SimulationOptions`, с умолчанием
- [ ] Фонд оплаты школы: сумма базовых ставок плюс надбавки за предметы сверх первого
- [ ] Наём: соискатель уходит из пула, становится работником, попадает в ростер. Родитель
остаётся родителем — новой сущности не заводится
- [ ] Назначение предмета нанятому и снятие предмета
- [ ] Предел проверяется **в момент действия**: наём или назначение, выводящее фонд за
выделенную сумму, отклоняется с внятным кодом ошибки, а не откладывается до конца месяца
- [ ] Покрытие предметов: какие предметы преподаются в существующих параллелях и не имеют ни
одного учителя
- [ ] `GET /api/schools/{id}/staffing` — деньги, покрытие, пул и штат; читает опубликованный
снимок, воркер не трогает
- [ ] Наём и назначение идут в воркер через мейлбокс с `TaskCompletionSource`, как create и delete
- [ ] Состав пишется на диск при изменении, снимок публикуется заново
- [ ] `docs/protocol.md` пополняется в том же коммите, что и обработчики
## Критерий готовности
- Нанять двоих на 3 000 и 7 000 при выделенных 10 000 — третий наём отклонён
- Снять предмет — фонд уменьшился, наём снова возможен
- Назначение, не влезающее в предел, отклонено, и в ответе видно почему
- Перезапуск сервера поднимает школу с тем же штатом и теми же назначениями
- Тесты API: наём, повторный наём того же человека, отклонение по пределу, неизвестная школа,
неизвестный соискатель
- `dotnet test` проходит
## Стоп
Не увольнять. Не платить зарплату по месяцам — предел проверяется, деньги не движутся.
Не расписание.