Update design documentation for inventory and climate phases, clarify staffing test results, and add new presence test for hiring and assigning a teacher during lessons.
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
# Фаза 29. Страна
|
||||
|
||||
## Зависимости
|
||||
|
||||
- [Фаза 5](05-people-defs.md)
|
||||
- [Фаза 26](26-school-seed.md)
|
||||
|
||||
## Зачем
|
||||
|
||||
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` проходят
|
||||
|
||||
## Стоп
|
||||
|
||||
Не считать живую погоду. Не одевать людей. Не менять кадр часов.
|
||||
Reference in New Issue
Block a user