Files
h-school/docs/phases/07-inventory/reviewed.md
T

7.2 KiB
Raw Blame History

Журнал ревью

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

Срез 7. Этап A — данные и гардероб

  • Фазы: 2931
  • Проверен на: d5547b7, 2026-08-20
  • Пути: src/HSchool.Content/{CountryDef,ApparelDefs,CatalogLoader}.cs, src/HSchool.People/{DressGenerator,CountryClimate,RosterJson}.cs, src/HSchool.Server/{Game/SchoolStore.cs,Api/{ModEndpoints,SchoolEndpoints}.cs,Api/PeopleModels.cs}, src/HSchool.Client/src/ui/{createSchoolDialog.ts,personCard.ts}, tests/HSchool.Content.Tests/{CountryDefTests,ApparelDefTests,VanillaCoreTests}.cs, tests/HSchool.People.Tests/{DressGeneratorTests,GoldenRosterTests}.cs, tests/HSchool.AppHost.Tests/{SchoolApiTests,InventoryApiTests,GoldenSaveTests,ServiceabilityTests}.cs, src/HSchool.Client/src/ui/createSchoolDialog.test.ts
  • Итог: все 17 тестов из списков фаз на месте; исправлен дубликат peopleTabOverview в strings.ts (ломал npm run build); одно замечание рядом про вкладки карточки

Что подтверждено:

  • 29: CountryDef/ClimatePresetDef; namesets/ убран; ваниль Russia с двумя пресетами; каталог отдаёт countries; create принимает countryId, unknown-country на чужую страну; пресет от сида (CreateSchool_WithTheSameSeed_GetsTheSameClimatePreset); nameSetId: Slavic поднимается через UpgradeOlderSave (GoldenSaveTests, legacy-no-native/); формат без страны не стартует (ServiceabilityTests); диалог — страны и языки (createSchoolDialog.test.ts); золотой ростер обновлён (GoldenRosterTests).
  • 30: поля ThingDef/ColorDef, слои как роли, мебель без layers; ванильная палитра и одежда в VanillaCoreTests; локали ru/en (EveryVanillaLabel_ExistsInBothLocales); учебник один def без subject на def.
  • 31: InventoryItem с def/color/condition/location/subject; DressGenerator детерминирован (DressGeneratorTests, InventoryApiTests.SameSeed_YieldsTheSameShirt); слои без пересечения, платье на два слоя; пол/яркость/учебник/родители/соискатели/масса/Hauling; карточка отдаёт worn+carried, список — нет (InventoryApiTests); старый people.json без items одевается на reload (PeopleJsonWithoutInventory_IsDressedOnReloadAndRewritten); HSchool.People/HSchool.Content без ASP.NET; протокол не тронут.

Дописано:

  • (нет новых тестов — списки фаз закрыты существующими)

Исправлено:

  • Дубликат ключа peopleTabOverview в strings.ts (ru/en): vitest не ловит TS2300/TS1117, npm run build падал; ключ перенесён, peopleTabPortrait рядом с остальными вкладками.
  • Повтор using HSchool.Content в SchoolStore.cs (CS0105).

Замечено рядом:

  • Карточка уже с вкладками (personCard.ts, фаза 31 обещала один свиток — позже по ../../design/07-inventory/inventory.md); портрет/SwarmUI-строки в strings.ts — не этап A.
  • ResolveClimatePreset в SchoolWorker при reload без сохранённого пресета берёт первый пресет страны (schoolSeed: 0, rollIfOmitted: false) — по дизайну для legacy; create кидает пресет из GameLoopService до spawn.

Срез 7. Этап B–C — климат, жизнь одежды и правила

  • Фазы: 3237
  • Проверен на: 5dcdee6, 2026-08-20
  • Пути: src/HSchool.Simulation/{WeatherSampler,WarmthDecay,PlaceClimate,ApparelDresser,ApparelWear,MorningDress,PersonLogBrowser}.cs, src/HSchool.People/LockerAssigner.cs, src/HSchool.Content/{Appropriateness,ClimatePreset,DressRules}.cs, src/HSchool.Ai/ApparelGoals.cs, src/HSchool.Protocol, src/HSchool.Server/Api/{SchoolEndpoints,DressRulesModels}.cs, src/HSchool.Server/Game/{PersonCardReader,SchoolWorker}.cs, src/HSchool.Client/src/{ui/dressRulesPanel.ts,ui/managementPanel.ts,format/weather.ts,net/api.ts}, docs/protocol.md, tests/HSchool.Simulation.Tests, tests/HSchool.People.Tests/LockerAssignerTests.cs, tests/HSchool.Content.Tests/{ClimatePresetTests,AppropriatenessTests,ChangingRoomMapTests}.cs, tests/HSchool.AppHost.Tests/{PersonLogApiTests,DressRulesApiTests}.cs, tests/HSchool.Protocol.Tests, src/HSchool.Client/src/ui/{personCard,dressRulesPanel,managementPanel}.test.ts
  • Итог: фазы 32–37 подтверждены; дописано 5 тестов симуляции; исправлены 2 бага переодевания и 2 регрессии тестов (не протокол)

Что подтверждено:

  • 3236: погода детерминирована; skip выставляет утро; кадр часов v8 (27 байт) в трёх местах; Warmth и техник; шкафчики; износ и утренняя замена; уместность и PE; вкладки карточки и HTTP-лог.
  • 37: вкладка «Правила» в «Управлении»; четыре комбобокса; GET/POST dress-rules с pending; unknown-form/unknown-color400; правило с завтра; ColorAllowed для whiteTopBlackBottom; dressRulesPanel.test.ts — combobox без API до Apply, ошибка текстом; ManagementPanel не ломает штат и сетку.

Дописано (32–36, прошлый проход):

  • AppropriatenessSimulationTests.MorningDress_StagesPeKitForTodaysLesson
  • AppropriatenessSimulationTests.PeBreak_CompletesChangeBeforeLesson
  • AppropriatenessSimulationTests.PeLesson_WearsPeThenReturnsToEveryday
  • AppropriatenessSimulationTests.AfterPeBreak_ModeExpectsEveryday
  • PresenceTests.PhysicalEducationBeforeLesson_GoesToChangingRoomOnTheBreak

Исправлено:

  • PresenceSystem: ходьба по duty не обрывает активный ChangeClothes.
  • ApparelPresence.ModeAt: после перемены following PE — режим everyday.
  • managementPanel.test.ts: панель штата скрывается через hidden, не удаляется из DOM.
  • PortraitApiTests.GetSwarmUiSettings_ReturnsPresets: URL /api/settings/swarmui (CS1503).
  • dressRulesPanel.ts: неиспользуемый импорт clear — TS6133 на npm run build.

Замечено рядом:

  • PhysicalEducationBeforeLesson_… не гоняет полный цикл «зал с формой» — это в AppropriatenessSimulationTests.PeLesson_….
  • Портреты/SwarmUI — вне среза 7, но PortraitApiTests чинился, чтобы AppHost-сборка не падала.