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

3.2 KiB
Raw Blame History

Фаза 29. Страна

Зависимости

Зачем

Create выбирает страну, а не набор имён. Имена и климатические пресеты перестают быть двумя несвязанными пикерами.

Задачи

  • CountryDef и ClimatePresetDef в HSchool.Content: страна вкладывает нынешние поля набора имён в names, ссылается на пресеты списками id
  • Набор имён больше не выбираемый вид; папка namesets/ в core уезжает в страну
  • Ваниль: одна страна Russia с нынешним славянским набором и хотя бы одним пресетом (числа погоды можно заглушить — живая улица в фазе 32)
  • GET /api/catalog отдаёт countries (defName, подпись, nativeLanguages, climatePresets) вместо nameSets
  • POST /api/schools принимает countryId; неизвестный — 400 unknown-country. nameSetId не принимается
  • Пресет климата записывается на школу: случайный из списка страны, от сида. Живой школе его не сменить
  • Форма создания: подпись «Страна»; язык — если у страны их несколько
  • Старый сейв с nameSetId: Slavic поднимается как Russia + первый пресет; формат новее без countryId — как с прочими полями сейва, школа не стартует
  • docs/protocol.md и AGENTS.md (ориентир create / каталог) в том же коммите
  • Золотой отпечаток ростера обновляется, если вход генератора сменил имя поля

Тесты, без которых фаза не закрыта

  • Каталог core грузится; страна без имён или с неизвестным пресетом — ошибка загрузки
  • Create с countryId: Russia и без языка даёт тот же родной язык, что прежний сид без nativeLanguage
  • Create с неизвестной страной — 400 unknown-country
  • Два create с одним сидом получают один и тот же пресет
  • Старый сейв без страны поднимается
  • Диалог создания показывает страны, не наборы имён; смена страны обновляет список языков

Критерий готовности

  • Создать школу, выбрав страну; люди и язык как раньше на том же сиде
  • dotnet test и npm test / build проходят

Стоп

Не считать живую погоду. Не одевать людей. Не менять кадр часов.