Replace selectable name sets with a country that owns names and climate presets.

Create picks a country; climate is rolled from the school seed and stored. Old Slavic saves lift as Russia.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Leonid Pershin
2026-08-20 02:55:13 +03:00
co-authored by Cursor
parent 450495f666
commit 1b66c89cd7
58 changed files with 902 additions and 477 deletions
+16 -16
View File
@@ -12,32 +12,32 @@ Create выбирает страну, а не набор имён. Имена и
## Задачи
- [ ] `CountryDef` и `ClimatePresetDef` в `HSchool.Content`: страна вкладывает нынешние поля
- [x] `CountryDef` и `ClimatePresetDef` в `HSchool.Content`: страна вкладывает нынешние поля
набора имён в `names`, ссылается на пресеты списками id
- [ ] Набор имён больше не выбираемый вид; папка `namesets/` в `core` уезжает в страну
- [ ] Ваниль: одна страна `Russia` с нынешним славянским набором и хотя бы одним пресетом
- [x] Набор имён больше не выбираемый вид; папка `namesets/` в `core` уезжает в страну
- [x] Ваниль: одна страна `Russia` с нынешним славянским набором и хотя бы одним пресетом
(числа погоды можно заглушить — живая улица в фазе 32)
- [ ] `GET /api/catalog` отдаёт `countries` (`defName`, подпись, `nativeLanguages`,
- [x] `GET /api/catalog` отдаёт `countries` (`defName`, подпись, `nativeLanguages`,
`climatePresets`) вместо `nameSets`
- [ ] `POST /api/schools` принимает `countryId`; неизвестный — `400` `unknown-country`.
- [x] `POST /api/schools` принимает `countryId`; неизвестный — `400` `unknown-country`.
`nameSetId` не принимается
- [ ] Пресет климата записывается на школу: случайный из списка страны, от сида. Живой школе
- [x] Пресет климата записывается на школу: случайный из списка страны, от сида. Живой школе
его не сменить
- [ ] Форма создания: подпись «Страна»; язык — если у страны их несколько
- [ ] Старый сейв с `nameSetId: Slavic` поднимается как `Russia` + первый пресет; формат
- [x] Форма создания: подпись «Страна»; язык — если у страны их несколько
- [x] Старый сейв с `nameSetId: Slavic` поднимается как `Russia` + первый пресет; формат
новее без `countryId` — как с прочими полями сейва, школа не стартует
- [ ] `docs/protocol.md` и `AGENTS.md` (ориентир create / каталог) в том же коммите
- [ ] Золотой отпечаток ростера обновляется, если вход генератора сменил имя поля
- [x] `docs/protocol.md` и `AGENTS.md` (ориентир create / каталог) в том же коммите
- [x] Золотой отпечаток ростера обновляется, если вход генератора сменил имя поля
## Тесты, без которых фаза не закрыта
- [ ] Каталог `core` грузится; страна без имён или с неизвестным пресетом — ошибка загрузки
- [ ] Create с `countryId: Russia` и без языка даёт тот же родной язык, что прежний сид без
- [x] Каталог `core` грузится; страна без имён или с неизвестным пресетом — ошибка загрузки
- [x] Create с `countryId: Russia` и без языка даёт тот же родной язык, что прежний сид без
`nativeLanguage`
- [ ] Create с неизвестной страной — `400` `unknown-country`
- [ ] Два create с одним сидом получают один и тот же пресет
- [ ] Старый сейв без страны поднимается
- [ ] Диалог создания показывает страны, не наборы имён; смена страны обновляет список языков
- [x] Create с неизвестной страной — `400` `unknown-country`
- [x] Два create с одним сидом получают один и тот же пресет
- [x] Старый сейв без страны поднимается
- [x] Диалог создания показывает страны, не наборы имён; смена страны обновляет список языков
## Критерий готовности