Record slice 3 recheck after later slices drifted staffing paths.

Pin homeroom seats, the management money row and assign-from-card, and drop the stale top-three skills claim from the protocol.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Leonid Pershin
2026-08-20 15:01:22 +03:00
co-authored by Cursor
parent 67b7f7ec08
commit a0f0152914
6 changed files with 325 additions and 4 deletions
+45
View File
@@ -42,3 +42,48 @@
Исправлено:
- `docs/protocol.md` не упоминал `?lang=` у hire/subjects, хотя клиент его шлёт.
## Перепроверка среза 3. Штат
- **Фазы:** 1013
- **Проверен на:** `67b7f7e`, 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,mapEditor,applicantsDialog}.ts`,
`src/HSchool.Client/src/net/api.ts`, `docs/protocol.md` (staffing),
`tests/HSchool.People.Tests/{StaffingTests,ApplicantPoolTests}.cs`,
`tests/HSchool.AppHost.Tests/StaffingApiTests.cs`,
`tests/HSchool.Content.Tests/VanillaCoreTests.cs`,
`src/HSchool.Client/src/ui/{managementPanel,mapEditor}.test.ts`
- **Итог:** перепроверка после дрейфа с `bdb1253`. Обещания фаз 10–13 целы. Дописаны 3 теста;
в `protocol.md` у соискателя — все навыки, не «три сильных».
Что подтверждено:
- `PETeacher` нет; кабинет — `defaultSeats`, без учительской должности; слоты у столовой,
медкабинета, кабинета директора и библиотеки. Неизвестный навык роняет каталог.
Старт — суббота 31 марта 2012. `GET /api/catalog` отдаёт предметы.
- Пул 32, детерминизм по сиду и неделе, частичное обновление, устойчивый размер, навыки и черты
в цене часа, пустой штат при полных местах, соискатель вне ростера до найма.
- Фонд = цена часа × нагрузка, не ниже ставки; часы делятся; `MaxWeeklyHours` не запрещает
назначение. `GET /staffing` читает снимок; наём и назначение — мейлбокс с `TaskCompletionSource`.
Предел 100 000 проверяется в момент действия. `PrimarySchool` на ванили — трое (`teachersShort`).
- Экран: Обзор / Управление, строка денег, непокрытые, окно пула, штат, назначение с карточки,
отказ по пределу текстом, `t(...)`.
Дрейф с прошлой проверки (не регрессия среза 3):
- `ApplicantPool` берёт имена страны, не набор имён; новым соискателям назначается ориентация.
- Во «Управлении» рядом вкладка правил одежды и речи; пул по-прежнему отдельным окном.
Дописано:
- `VanillaCoreTests` — у столовой, медкабинета, кабинета директора и библиотеки слоты на месте.
- `mapEditor.test.ts` — у кабинета поле «мест», у столовой именованные слоты, не доска.
- `ManagementPanel` — строка денег; назначение и снятие предмета с карточки нанятого.
Исправлено:
- `docs/protocol.md` всё ещё писал, что у соискателя в `GET /staffing` «три сильных навыка»;
API давно отдаёт все навыки (окно пула сравнивает целиком).