Remove off-queue.md and add new design documentation files including README.md, defs.md, near-term.md, projects.md, runtime.md, people.md, staffing.md, and schedule.md to outline the structure and agreements for the game's design phases.
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
# Фаза 26. Свой сид у школы
|
||||
|
||||
## Зависимости
|
||||
|
||||
- [Фаза 7](../02-people/07-people-in-school.md) — сид уже лежит в файле людей
|
||||
|
||||
## Зачем
|
||||
|
||||
Сегодня сид генерации — это `school.Id`. Отсюда три неприятности сразу: у двух игроков школа №1
|
||||
населена одинаково, состав школы зависит от того, сколько школ создали до неё, и воспроизвести
|
||||
чужой баг нельзя, не повторив последовательность идентификаторов. Ревью споткнулось об это
|
||||
дважды — тест, зелёный на машине разработчика и красный на чистом клоне, был ровно про это.
|
||||
|
||||
Сид уже хранится в файле людей. Не хватает одного: чтобы он был **свой**, а не производный.
|
||||
|
||||
## Задачи
|
||||
|
||||
- [x] При создании школы сид берётся из генератора случайных чисел сервера, а не из id
|
||||
- [x] `POST /api/schools` принимает необязательный `seed`; передали — берётся он, нет — бросается
|
||||
- [x] Сид виден: в ответе `GET /api/schools` и на экране школы, чтобы его можно было переслать
|
||||
- [x] Существующие школы не меняются: сид читается из файла людей, как и сейчас
|
||||
- [x] Тесты хоста, которым нужен предсказуемый состав, передают сид явно, а не полагаются на
|
||||
порядок создания
|
||||
- [x] `docs/protocol.md` и [`docs/design/02-people/people.md`](../../design/02-people/people.md) правятся тем же коммитом
|
||||
|
||||
## Тесты, без которых фаза не закрыта
|
||||
|
||||
- [x] Две школы, созданные с одним сидом, населены одинаково; с разными — по-разному
|
||||
- [x] Школа, созданная без сида, после перезапуска поднимает тот же состав
|
||||
- [x] Старый сейв, где сид совпадал с id, грузится и состав не меняется
|
||||
- [x] Переданный сид виден в списке школ
|
||||
|
||||
## Критерий готовности
|
||||
|
||||
- Создать две школы подряд без сида и увидеть разные фамилии в пятых классах
|
||||
- Создать школу с чужим сидом и получить ту же школу
|
||||
- `dotnet test` и клиентские `npm test` / `run build` проходят
|
||||
|
||||
## Стоп
|
||||
|
||||
Не делать сид редактируемым у живой школы. Не показывать его там, где он мешает.
|
||||
Reference in New Issue
Block a user