Files
h-school/docs/bugs/03-users-json-as-school.md
Leonid PershinandCursor 0b1a52a5e5 Skip users.json when loading school saves.
The session user list sits beside {id}.json; LoadAll treated it as a school with id 0.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 12:46:52 +03:00

1.9 KiB
Raw Permalink Blame History

Баг 3. SchoolStore принимает users.json за сейв школы

Симптом

После первого входа в логе при старте сервера:

warn: HSchool.Server.Game.SchoolStore[0]
      Save D:\Github\h-school\src\HSchool.Server\saves\users.json has id 0; ids start at 1. Leaving the file in place.

Ожидали, что список игроков рядом со школами не попадает в загрузку сейвов.

Причина

Фаза 38 положила saves/users.json в тот же каталог, что и {id}.json. SchoolStore.LoadAll обходит все *.json, пропуская только index.json, *.people.json и *.timetable.json. У документа пользователей нет поля id, десериализация в SchoolSave даёт Id = 0, срабатывает предупреждение. Файл на месте остаётся, карточки школы из него нет.

Путь

Пропускать users.json так же, как index.json. Не сужать обход до {digits}.json — это другой контракт сканера.

Задачи

  • LoadAll не читает users.json как сейв
  • Тест: каталог с 1.json и users.json возвращает одну школу

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

HSchool.Server.Tests: LoadAll рядом с валидным {id}.json и users.json (документ пользователей, без id) возвращает только школу.

dotnet test tests/HSchool.Server.Tests --filter FullyQualifiedName~SchoolStore

Стоп

Форму users.json и HTTP сессии не трогать. wwwroot / UseFileServer — соседнее предупреждение при старте, не этот баг.