9.9 KiB
9.9 KiB
Журнал ревью
Сводка: ../reviewed.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, хотя клиент его шлёт.
Перепроверка среза 3. Штат
- Фазы: 10–13
- Проверен на:
cf1403e, 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 давно отдаёт все навыки (окно пула сравнивает целиком).
Перепроверка среза 3. Штат (после 11–14)
- Фазы: 10–13
- Проверен на:
52ace87, 2026-08-21 - Пути:
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,gameScreen}.ts,src/HSchool.Client/src/net/api.ts,docs/protocol.md(staffing),tests/HSchool.People.Tests/{StaffingTests,ApplicantPoolTests,RosterGeneratorTests}.cs,tests/HSchool.AppHost.Tests/StaffingApiTests.cs,tests/HSchool.Content.Tests/{VanillaCoreTests,PeopleDefTests}.cs,src/HSchool.Client/src/ui/{managementPanel,mapEditor,gameScreen}.test.ts - Итог: перепроверка после дрейфа с
cf1403e(notices, class teachers, summons,PrincipalPosition). Обещания фаз 10–13 целы. Дописаны 2 клиентских якоря. Код среза не чинился.
Что подтверждено:
- Нет
PETeacher; кабинет —defaultSeatsбез учительской должности; слоты у столовой, медкабинета, кабинета директора и библиотеки. Неизвестный навык роняет каталог. Старт — суббота 31 марта 2012.GET /api/catalogотдаёт предметы. - Пул 32; те же шесть обещаний фазы 11 в
ApplicantPoolTests/RosterGeneratorTests.NewSchool_HasNoStaff. - Фонд, деление часов,
MaxWeeklyHours→ непокрытость, предел 100 000 в момент действия,GET /staffingсо снимка, hire/assign через мейлбокс. ДевятьStaffingApiTestsзелёные.PrimarySchoolна ванили — трое (teachersShort). - Экран: Обзор / Управление у владельца, деньги, непокрытые, окно пула (имя, ставка, навыки),
штат, назначение с карточки, отказ по пределу текстом,
t(...).
Дрейф с прошлой проверки (не регрессия среза 3):
- В
Staffingпоявилась константаPrincipalPosition(вызовы директора). - Во «Управлении» — классные руководители и вкладка правил;
SchoolEndpoints/protocol.mdразрослись notices и class-teacher API.
Дописано:
GameScreen— у владельца видны вкладки «Обзор» и «Управление» рядом с часами.ManagementPanelpayroll-тест — в строке пула имя, ставка и навык, не только отказ по пределу.
Исправлено: ничего.
Открытое:
- Дизайн среза 3 всё ещё пишет «классное руководство — не сейчас»; это закрыл срез 12, док среза 3 намеренно исторический — править не стал.