Add foundational phase documentation for mod development
ci / server (push) Failing after 3m39s
ci / client (push) Successful in 14s

This commit is contained in:
Leonid Pershin
2026-08-19 23:35:30 +03:00
parent 5eabc90d53
commit c27d43f66a
9 changed files with 495 additions and 0 deletions
+41
View File
@@ -0,0 +1,41 @@
# Фаза 26. Свой сид у школы
## Зависимости
- [Фаза 7](07-people-in-school.md) — сид уже лежит в файле людей
## Зачем
Сегодня сид генерации — это `school.Id`. Отсюда три неприятности сразу: у двух игроков школа №1
населена одинаково, состав школы зависит от того, сколько школ создали до неё, и воспроизвести
чужой баг нельзя, не повторив последовательность идентификаторов. Ревью споткнулось об это
дважды — тест, зелёный на машине разработчика и красный на чистом клоне, был ровно про это.
Сид уже хранится в файле людей. Не хватает одного: чтобы он был **свой**, а не производный.
## Задачи
- [ ] При создании школы сид берётся из генератора случайных чисел сервера, а не из id
- [ ] `POST /api/schools` принимает необязательный `seed`; передали — берётся он, нет — бросается
- [ ] Сид виден: в ответе `GET /api/schools` и на экране школы, чтобы его можно было переслать
- [ ] Существующие школы не меняются: сид читается из файла людей, как и сейчас
- [ ] Тесты хоста, которым нужен предсказуемый состав, передают сид явно, а не полагаются на
порядок создания
- [ ] `docs/protocol.md` и [`../design/people.md`](../design/people.md) правятся тем же коммитом
## Тесты, без которых фаза не закрыта
- [ ] Две школы, созданные с одним сидом, населены одинаково; с разными — по-разному
- [ ] Школа, созданная без сида, после перезапуска поднимает тот же состав
- [ ] Старый сейв, где сид совпадал с id, грузится и состав не меняется
- [ ] Переданный сид виден в списке школ
## Критерий готовности
- Создать две школы подряд без сида и увидеть разные фамилии в пятых классах
- Создать школу с чужим сидом и получить ту же школу
- `dotnet test` и клиентские `npm test` / `run build` проходят
## Стоп
Не делать сид редактируемым у живой школы. Не показывать его там, где он мешает.