Files
h-school/docs/phases/07-inventory/reviewed.md
T
Leonid Pershin d42af2569a
ci / server (push) Failing after 3m37s
ci / client (push) Successful in 21s
Point slice 7 A recheck journal at the merge.
2026-08-20 15:58:11 +03:00

106 lines
7.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Журнал ревью
Сводка: [`../reviewed.md`](../reviewed.md). Индекс среза: [`README.md`](README.md).
## Срез 7. Этап A — данные и гардероб
- **Фазы:** 2931
- **Проверен на:** `5468852`, 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 2
`nameSetId: 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 — климат, жизнь одежды и правила
- **Фазы:** 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
регрессии тестов (не протокол)
Что подтверждено:
- **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_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-сборка не падала.