Files
h-school/docs/phases/12-hiring-budget.md
T
2026-08-18 23:51:10 +03:00

3.0 KiB
Raw Blame History

Фаза 12. Наём, предметы и предел бюджета

Зависимости

Зачем

Игрок нанимает людей и раздаёт предметы, а выделенная сумма ограничивает, сколько он может себе позволить. Экрана ещё нет — всё через API.

Задачи

  • Выделяемая на месяц сумма — в SimulationOptions, с умолчанием
  • Фонд оплаты школы: сумма базовых ставок плюс надбавки за предметы сверх первого
  • Наём: соискатель уходит из пула, становится работником, попадает в ростер. Родитель остаётся родителем — новой сущности не заводится
  • Назначение предмета нанятому и снятие предмета
  • Предел проверяется в момент действия: наём или назначение, выводящее фонд за выделенную сумму, отклоняется с внятным кодом ошибки, а не откладывается до конца месяца
  • Покрытие предметов: какие предметы преподаются в существующих параллелях и не имеют ни одного учителя
  • GET /api/schools/{id}/staffing — деньги, покрытие, пул и штат; читает опубликованный снимок, воркер не трогает
  • Наём и назначение идут в воркер через мейлбокс с TaskCompletionSource, как create и delete
  • Состав пишется на диск при изменении, снимок публикуется заново
  • docs/protocol.md пополняется в том же коммите, что и обработчики

Критерий готовности

  • Нанять двоих на 3 000 и 7 000 при выделенных 10 000 — третий наём отклонён
  • Снять предмет — фонд уменьшился, наём снова возможен
  • Назначение, не влезающее в предел, отклонено, и в ответе видно почему
  • Перезапуск сервера поднимает школу с тем же штатом и теми же назначениями
  • Тесты API: наём, повторный наём того же человека, отклонение по пределу, неизвестная школа, неизвестный соискатель
  • dotnet test проходит

Стоп

Не увольнять. Не платить зарплату по месяцам — предел проверяется, деньги не движутся. Не расписание.