From d5547b7b02c3761406db19733a6e955a377d2e85 Mon Sep 17 00:00:00 2001 From: Leonid Pershin Date: Thu, 20 Aug 2026 06:17:32 +0300 Subject: [PATCH 1/2] Review slice 7A phases 29-31: fix strings duplicate, journal --- docs/phases/reviewed.md | 52 ++++++++++++++++++++++++++ src/HSchool.Client/src/i18n/strings.ts | 6 +-- src/HSchool.Server/Game/SchoolStore.cs | 1 - 3 files changed, 54 insertions(+), 5 deletions(-) diff --git a/docs/phases/reviewed.md b/docs/phases/reviewed.md index df8b1d0..e8aaf88 100644 --- a/docs/phases/reviewed.md +++ b/docs/phases/reviewed.md @@ -257,3 +257,55 @@ - `Dump_ReturnsPeopleNodesAndTimetable` принимает `NodeId is not null || Needs.Count > 0`. Нужды есть у всех, так что узлы на кампусе не проверяются. Усиливать до явки — срез 5. - Срез 7 (одежда) в работе: не писать в журнал как закрытый. + +## Срез 7. Этап A — данные и гардероб + +- **Фазы:** 29–31 +- **Проверен на:** `73a2937`, 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). + +Замечено рядом (фазы 32–37, не правилось): + +- Карточка уже с вкладками (`personCard.ts`, фаза 31 обещала один свиток — позже по + `design/inventory.md`); портрет/SwarmUI-строки в `strings.ts` — не этап A. +- `ResolveClimatePreset` в `SchoolWorker` при reload без сохранённого пресета берёт первый + пресет страны (`schoolSeed: 0`, `rollIfOmitted: false`) — по дизайну для legacy; create + кидает пресет из `GameLoopService` до spawn. +- Погода, тепло, уместность, журнал дня — срез 7B–C у соседнего ревьюера. diff --git a/src/HSchool.Client/src/i18n/strings.ts b/src/HSchool.Client/src/i18n/strings.ts index dca2acd..1f3042d 100644 --- a/src/HSchool.Client/src/i18n/strings.ts +++ b/src/HSchool.Client/src/i18n/strings.ts @@ -140,6 +140,7 @@ const ru = { peopleTabApparel: 'Одежда', peopleTabCarry: 'Ноша', peopleTabNow: 'Сейчас', + peopleTabPortrait: 'Портрет', peopleAtHome: 'дома', peopleApparelFit: 'Уместность: {value}', peopleLockerYes: 'Есть шкафчик', @@ -152,8 +153,6 @@ const ru = { peopleLogEvent: 'Событие', peopleLogEmpty: 'Сегодня записей нет.', - peopleTabOverview: 'Обзор', - peopleTabPortrait: 'Портрет', peoplePortraitAvatar: 'Аватар', peoplePortraitFull: 'В полный рост', peoplePortraitCustom: 'Свой промпт', @@ -406,6 +405,7 @@ const en: Messages = { peopleTabApparel: 'Clothes', peopleTabCarry: 'Carried', peopleTabNow: 'Now', + peopleTabPortrait: 'Portrait', peopleAtHome: 'home', peopleApparelFit: 'Fit: {value}', peopleLockerYes: 'Has a locker', @@ -418,8 +418,6 @@ const en: Messages = { peopleLogEvent: 'Event', peopleLogEmpty: 'Nothing logged today.', - peopleTabOverview: 'Overview', - peopleTabPortrait: 'Portrait', peoplePortraitAvatar: 'Avatar', peoplePortraitFull: 'Full body', peoplePortraitCustom: 'Custom prompt', diff --git a/src/HSchool.Server/Game/SchoolStore.cs b/src/HSchool.Server/Game/SchoolStore.cs index db80d5f..3c36cd0 100644 --- a/src/HSchool.Server/Game/SchoolStore.cs +++ b/src/HSchool.Server/Game/SchoolStore.cs @@ -1,6 +1,5 @@ using System.Text.Json; using HSchool.Content; -using HSchool.Content; using HSchool.People; using HSchool.Schedule; using HSchool.Simulation; From beb882123d98972e951e19cd2de133cdee19a7da Mon Sep 17 00:00:00 2001 From: Leonid Pershin Date: Thu, 20 Aug 2026 06:21:43 +0300 Subject: [PATCH 2/2] Journal hash for slice 7A review --- docs/phases/reviewed.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/phases/reviewed.md b/docs/phases/reviewed.md index e8aaf88..6329d92 100644 --- a/docs/phases/reviewed.md +++ b/docs/phases/reviewed.md @@ -261,7 +261,7 @@ ## Срез 7. Этап A — данные и гардероб - **Фазы:** 29–31 -- **Проверен на:** `73a2937`, 2026-08-20 +- **Проверен на:** `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}`,