2.9 KiB
2.9 KiB
Фаза 26. Свой сид у школы
Зависимости
- Фаза 7 — сид уже лежит в файле людей
Зачем
Сегодня сид генерации — это school.Id. Отсюда три неприятности сразу: у двух игроков школа №1
населена одинаково, состав школы зависит от того, сколько школ создали до неё, и воспроизвести
чужой баг нельзя, не повторив последовательность идентификаторов. Ревью споткнулось об это
дважды — тест, зелёный на машине разработчика и красный на чистом клоне, был ровно про это.
Сид уже хранится в файле людей. Не хватает одного: чтобы он был свой, а не производный.
Задачи
- При создании школы сид берётся из генератора случайных чисел сервера, а не из id
POST /api/schoolsпринимает необязательныйseed; передали — берётся он, нет — бросается- Сид виден: в ответе
GET /api/schoolsи на экране школы, чтобы его можно было переслать - Существующие школы не меняются: сид читается из файла людей, как и сейчас
- Тесты хоста, которым нужен предсказуемый состав, передают сид явно, а не полагаются на порядок создания
docs/protocol.mdи../design/people.mdправятся тем же коммитом
Тесты, без которых фаза не закрыта
- Две школы, созданные с одним сидом, населены одинаково; с разными — по-разному
- Школа, созданная без сида, после перезапуска поднимает тот же состав
- Старый сейв, где сид совпадал с id, грузится и состав не меняется
- Переданный сид виден в списке школ
Критерий готовности
- Создать две школы подряд без сида и увидеть разные фамилии в пятых классах
- Создать школу с чужим сидом и получить ту же школу
dotnet testи клиентскиеnpm test/run buildпроходят
Стоп
Не делать сид редактируемым у живой школы. Не показывать его там, где он мешает.