# Фаза 29. Страна ## Зависимости - [Фаза 5](05-people-defs.md) - [Фаза 26](26-school-seed.md) ## Зачем Create выбирает страну, а не набор имён. Имена и климатические пресеты перестают быть двумя несвязанными пикерами. ## Задачи - [x] `CountryDef` и `ClimatePresetDef` в `HSchool.Content`: страна вкладывает нынешние поля набора имён в `names`, ссылается на пресеты списками id - [x] Набор имён больше не выбираемый вид; папка `namesets/` в `core` уезжает в страну - [x] Ваниль: одна страна `Russia` с нынешним славянским набором и хотя бы одним пресетом (числа погоды можно заглушить — живая улица в фазе 32) - [x] `GET /api/catalog` отдаёт `countries` (`defName`, подпись, `nativeLanguages`, `climatePresets`) вместо `nameSets` - [x] `POST /api/schools` принимает `countryId`; неизвестный — `400` `unknown-country`. `nameSetId` не принимается - [x] Пресет климата записывается на школу: случайный из списка страны, от сида. Живой школе его не сменить - [x] Форма создания: подпись «Страна»; язык — если у страны их несколько - [x] Старый сейв с `nameSetId: Slavic` поднимается как `Russia` + первый пресет; формат новее без `countryId` — как с прочими полями сейва, школа не стартует - [x] `docs/protocol.md` и `AGENTS.md` (ориентир create / каталог) в том же коммите - [x] Золотой отпечаток ростера обновляется, если вход генератора сменил имя поля ## Тесты, без которых фаза не закрыта - [x] Каталог `core` грузится; страна без имён или с неизвестным пресетом — ошибка загрузки - [x] Create с `countryId: Russia` и без языка даёт тот же родной язык, что прежний сид без `nativeLanguage` - [x] Create с неизвестной страной — `400` `unknown-country` - [x] Два create с одним сидом получают один и тот же пресет - [x] Старый сейв без страны поднимается - [x] Диалог создания показывает страны, не наборы имён; смена страны обновляет список языков ## Критерий готовности - Создать школу, выбрав страну; люди и язык как раньше на том же сиде - `dotnet test` и `npm test` / `build` проходят ## Стоп Не считать живую погоду. Не одевать людей. Не менять кадр часов.