Recheck of slice 7 stage A found UpgradeOlderSave removed after UpperUnderwear, so format-2 nameSetId saves never started, and golden people.json wearing abstract Underwear failed RequireKnownApparel. Bring back the lift, treat unusable items as undressed, and restore GoldenSaveTests.
7.8 KiB
7.8 KiB
Журнал ревью
Сводка: ../reviewed.md. Индекс среза: README.md.
Срез 7. Этап A — данные и гардероб
- Фазы: 29–31
- Проверен на:
PENDING, 2026-08-20 — перепроверка послеd5547b7 - Пути:
src/HSchool.Content/{ApparelDefs,CatalogLoader}.cs,src/HSchool.People/{DressGenerator,CountryClimate,RosterJson}.cs,src/HSchool.Server/{Game/SchoolStore.cs,Game/SchoolWorker.Tick.cs,Api/{ModEndpoints,SchoolEndpoints}.cs,Api/PeopleModels.cs},src/HSchool.Client/src/ui/{createSchoolDialog.ts,personCard.ts,personCardApparel.ts,personCardCarry.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 - Итог: обещания 29–31 после дрейфа (сессия, владельцы, UpperUnderwear, сплит карточки)
в целом держатся; снятый в
660340cподъёмnameSetId: Slavicвозвращён; золотой сейв с абстрактнымUnderwearснова одевается. B–C не трогался.
Что подтверждено:
- 29:
CountryDef/ClimatePresetDef;namesets/нет; ванильRussiaс двумя пресетами; каталог отдаётcountries, неnameSets; create —countryId,unknown-country; пресет от сида (CreateSchool_WithTheSameSeed_GetsTheSameClimatePreset); формат 3 безcountryIdне стартует (ServiceabilityTests); диалог — страны и языки; золотой ростер (GoldenRosterTests).UpgradeOlderSaveснова вSchoolStore: format 2nameSetId: Slavicподнимается какRussia+ первый пресет в памяти, файл не переписывается, пока школа сама не сохранится (GoldenSaveTests,legacy-no-native/). - 30: поля
ThingDef/ColorDef, слои включаяUpperUnderwear; мебель безlayers; каталог редактора без футболки/учебника; ваниль и локали (VanillaCoreTests); учебник — один def без предмета на def. - 31:
InventoryItem;DressGeneratorотApparelSalt; слои без пересечения, платье, пол/яркость/учебник/родители/соискатели/масса/Hauling; карточка worn+carried, список — нет; пустойpeople.jsonодевается на reload. Протокол этапа A не тронут;HSchool.People/Contentбез ASP.NET.
Дописано:
GoldenSaveTests.CurrentFormatSave_LoadsTheSamePeopleAndTime— возвращён (снят в фазе 39)GoldenSaveTests.SaveWithoutNativeLanguage_LoadsWithoutReshuffling— Slavic-сейв стартует, одежда дописываетсяDressGeneratorTests.AbstractUnderwearInASave_IsRedressedOnEnsure
Исправлено:
660340cвыкинулNameSetId/UpgradeOlderSaveи сузилCanStartдо format == 3: старые сейвы сnameSetId: Slavicне стартовали. Подъём возвращён;CanStart— format ≤ 3 и непустойcountryId.- После
UpperUnderwearзолотойpeople.jsonносил абстрактныйUnderwear, иRequireKnownApparelне пускал школу.NeedsDressing/EnsureDressedпереодевают неизвестный или абстрактный def тем же сидом.
Замечено рядом:
- Карточка с вкладками — этап C (фаза 36); сплит в
personCardApparel.ts/personCardCarry.ts. ResolveClimatePresetна reload без сохранённого пресета берёт первый пресет страны.- POST
nameSetIdпо-прежнему игнорируется (поля нет на create); пустойcountryIdна create берёт первую страну каталога — это create, не сейв. - Этап B–C в этом проходе не проверялся.
Срез 7. Этап B–C — климат, жизнь одежды и правила
- Фазы: 32–37
- Проверен на:
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 регрессии тестов (не протокол)
Что подтверждено:
- 32–36: погода детерминирована; skip выставляет утро; кадр часов v8 (27 байт) в трёх местах;
Warmthи техник; шкафчики; износ и утренняя замена; уместность и PE; вкладки карточки и HTTP-лог. - 37: вкладка «Правила» в «Управлении»; четыре комбобокса; GET/POST
dress-rulesс pending;unknown-form/unknown-color→400; правило с завтра;ColorAllowedдляwhiteTopBlackBottom;dressRulesPanel.test.ts— combobox без API до Apply, ошибка текстом;ManagementPanelне ломает штат и сетку.
Дописано (32–36, прошлый проход):
AppropriatenessSimulationTests.MorningDress_StagesPeKitForTodaysLessonAppropriatenessSimulationTests.PeBreak_CompletesChangeBeforeLessonAppropriatenessSimulationTests.PeLesson_WearsPeThenReturnsToEverydayAppropriatenessSimulationTests.AfterPeBreak_ModeExpectsEverydayPresenceTests.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-сборка не падала.