Files

3.0 KiB
Raw Permalink Blame History

Фаза 26. Свой сид у школы

Зависимости

  • Фаза 7 — сид уже лежит в файле людей

Зачем

Сегодня сид генерации — это school.Id. Отсюда три неприятности сразу: у двух игроков школа №1 населена одинаково, состав школы зависит от того, сколько школ создали до неё, и воспроизвести чужой баг нельзя, не повторив последовательность идентификаторов. Ревью споткнулось об это дважды — тест, зелёный на машине разработчика и красный на чистом клоне, был ровно про это.

Сид уже хранится в файле людей. Не хватает одного: чтобы он был свой, а не производный.

Задачи

  • При создании школы сид берётся из генератора случайных чисел сервера, а не из id
  • POST /api/schools принимает необязательный seed; передали — берётся он, нет — бросается
  • Сид виден: в ответе GET /api/schools и на экране школы, чтобы его можно было переслать
  • Существующие школы не меняются: сид читается из файла людей, как и сейчас
  • Тесты хоста, которым нужен предсказуемый состав, передают сид явно, а не полагаются на порядок создания
  • docs/protocol.md и people.md правятся тем же коммитом

Тесты, без которых фаза не закрыта

  • Две школы, созданные с одним сидом, населены одинаково; с разными — по-разному
  • Школа, созданная без сида, после перезапуска поднимает тот же состав
  • Старый сейв, где сид совпадал с id, грузится и состав не меняется
  • Переданный сид виден в списке школ

Критерий готовности

  • Создать две школы подряд без сида и увидеть разные фамилии в пятых классах
  • Создать школу с чужим сидом и получить ту же школу
  • dotnet test и клиентские npm test / run build проходят

Стоп

Не делать сид редактируемым у живой школы. Не показывать его там, где он мешает.