45 lines
3.1 KiB
Markdown
45 lines
3.1 KiB
Markdown
# Журнал ревью
|
||
|
||
Сводка: [`../reviewed.md`](../reviewed.md). Индекс среза: [`README.md`](README.md).
|
||
|
||
## Срез 3. Штат
|
||
|
||
- **Фазы:** 10–13
|
||
- **Проверен на:** `bdb1253`, 2026-08-20
|
||
- **Пути:** `src/HSchool.People/Staffing.cs`, `src/HSchool.People/ApplicantPool.cs`,
|
||
`src/HSchool.Content/SubjectDef` и `defs/staffing`, `src/HSchool.Server/Api/SchoolEndpoints.cs`
|
||
(staffing/hire/subjects), `src/HSchool.Server/mods/core/defs/{subjects,positions,rooms,staffing,traits}`,
|
||
`src/HSchool.Client/src/ui/managementPanel.ts`, `src/HSchool.Client/src/net/api.ts`,
|
||
`tests/HSchool.People.Tests/{StaffingTests,ApplicantPoolTests}.cs`,
|
||
`tests/HSchool.AppHost.Tests/StaffingApiTests.cs`,
|
||
`src/HSchool.Client/src/ui/managementPanel.test.ts`
|
||
- **Итог:** обещания фаз 10–13 целы; дописаны 3 теста; `docs/protocol.md` дополнен `?lang=`
|
||
|
||
Что подтверждено:
|
||
|
||
- `PETeacher` нет; кабинеты без учительской должности; места через `defaultSeats`.
|
||
Неизвестный навык в предмете роняет каталог. Стартовая дата 31 марта 2012.
|
||
- Пул: детерминизм по сиду и неделе, частичное обновление, устойчивый размер, «сильный просит
|
||
больше», пустой штат, соискатель вне ростера до найма. Пул 32.
|
||
- Фонд оплаты, деление часов, пол ставки, покрытие. `GET /staffing` читает снимок, наём и
|
||
назначение — `GameCommand` с `TaskCompletionSource`. `MaxWeeklyHours` не запрещает назначение,
|
||
а оставляет предмет непокрытым. `PrimarySchool` на ванили требует трёх учителей (`teachersShort`).
|
||
- Экран: деньги, непокрытые, пул, штат, назначение с карточки, отказ по пределу текстом,
|
||
всё через `t(...)`.
|
||
- Полностью укомплектованная школа влезает в 100 000 впритык (запас 5–13%). Нанять пул целиком
|
||
без назначений предела достигает. Раскладка «каждому все предметы» — самая дешёвая, не
|
||
«укомплектованная школа».
|
||
|
||
Дописано:
|
||
|
||
- `StaffingApiTests.AssigningPastTheCap_IsRejectedWithTheNumbers` — фаза 12 требовала API-тест
|
||
на отказ по пределу; единственное место было написано через `if (over.StatusCode == Conflict)`
|
||
и проходило при любом исходе.
|
||
- `ApplicantPoolTests.ConfidentTraits_AskForMoreAndQuietOnesForLess`
|
||
- В `AssignAndUnassign_HonourTheCap_AndReloadKeepsAssignments` — тот же пул с теми же ставками
|
||
после перезапуска.
|
||
|
||
Исправлено:
|
||
|
||
- `docs/protocol.md` не упоминал `?lang=` у hire/subjects, хотя клиент его шлёт.
|