Files

9.9 KiB
Raw Permalink Blame History

Журнал ревью

Сводка: ../reviewed.md. Индекс среза: README.md.

Срез 3. Штат

  • Фазы: 1013
  • Проверен на: 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. Штат

  • Фазы: 1013
  • Проверен на: 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)

  • Фазы: 1013
  • Проверен на: 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 — у владельца видны вкладки «Обзор» и «Управление» рядом с часами.
  • ManagementPanel payroll-тест — в строке пула имя, ставка и навык, не только отказ по пределу.

Исправлено: ничего.

Открытое:

  • Дизайн среза 3 всё ещё пишет «классное руководство — не сейчас»; это закрыл срез 12, док среза 3 намеренно исторический — править не стал.