7.0 KiB
7.0 KiB
Журнал ревью
Сводка: ../reviewed.md. Индекс среза: README.md.
Срез 2. Люди
- Фазы: 5–9
- Проверен на:
bdb1253, 2026-08-20 - Пути:
src/HSchool.People,src/HSchool.Content/PeopleDefs.cs,src/HSchool.Simulation/RosterSpawner.cs,src/HSchool.Simulation/School.cs,src/HSchool.Server/Api/SchoolEndpoints.cs,src/HSchool.Server/Game/PersonCardReader.cs,src/HSchool.Server/Game/SchoolWorker.cs,src/HSchool.Client/src/ui/peoplePanel.ts,src/HSchool.Client/src/ui/personCard.ts,tests/HSchool.People.Tests,tests/HSchool.Content.Tests/PeopleDefTests.cs,tests/HSchool.Simulation.Tests/PeopleInSchoolTests.cs,tests/HSchool.AppHost.Tests/PeopleApiTests.cs,tests/HSchool.AppHost.Tests/SchoolSeedTests.cs - Итог: обещания фаз 5–9 целы; починены два API-теста, дописан один на reload после набора
Что подтверждено:
- Дефы человека: разбор, наследование, патч, неизвестная ссылка, склонение, мод со своим набором.
- Генератор: шесть тестов списка фазы, без Arch/ASP.NET/
DateTime.Now. Неполные семьи 5–10%. Сид — поле школы, неschool.Id; хостовые тесты, которым нужен состав, передают сид явно. - Одиннадцать кабинетов, сущности в
World,PersistPeopleтолько при смене состава. Штат при создании пуст — это фаза 11. - Список с опубликованного снимка, карточка через
TaskCompletionSource. Фильтры, пейджер, семейные ссылки, всё черезt(...). Вкладка рядом с картой, не нижний ряд — так записано в фазе 8 и в../../design/02-people/people.md. - Выпуск старшей имеющейся, вместимость, семьи через поколения, reload после набора.
Дописано:
PeopleApiTests.ReloadAfterTheYearlyIntake_RestoresTheNewComposition— ждёт 1 сентября и требует состав после набора, отличный от исходного (детерминизм от сида иначе скрыл бы потерянный файл).
Исправлено:
Card_IncludesFamilyAndLiveNeedsбралPeople[0]и требовал двух родителей. Состав зависит от сида; на чистом клоне первый ученик иногда из неполной семьи. Теперь ищет ученика с матерью и проверяет диапазон.List_SortsBySurnameтребовал ordinal-порядок, сервер ставит Ё на место Е. Совпадали, пока вcoreне было фамилий на Ё.
Срез 2. Люди — перепроверка
- Фазы: 5–9
- Проверен на:
c2e01f0, 2026-08-20 - Пути:
src/HSchool.People,src/HSchool.Content/PeopleDefs.cs,src/HSchool.Simulation/RosterSpawner.cs,src/HSchool.Simulation/School.cs,src/HSchool.Server/Api/SchoolEndpoints.cs,src/HSchool.Server/Game/PersonCardReader.cs,src/HSchool.Server/Game/SchoolWorker.cs,src/HSchool.Client/src/ui/peoplePanel.ts,src/HSchool.Client/src/ui/personCard.ts,tests/HSchool.People.Tests,tests/HSchool.Content.Tests/PeopleDefTests.cs,tests/HSchool.Simulation.Tests/PeopleInSchoolTests.cs,tests/HSchool.AppHost.Tests/PeopleApiTests.cs,tests/HSchool.AppHost.Tests/SchoolSeedTests.cs - Итог: перепроверка после дрейфа с
bdb1253(страна, одежда, вкладки карточки, мнения, речь). Обещания фаз 5–9 целы; код не чинился; дописаны тесты фильтров списка и работающего родителя на наборе
Что подтверждено:
- Дефы, наследование, патч, неизвестная ссылка, склонение, мод со своей страной и чертами.
GET /api/catalogотдаёт страны, не наборы имён — так решила фаза 29, не регрессия среза 2. - Генератор: тот же сид → тот же ростер; 13-я семья не двигает первые двенадцать; отчества
отцовские; полное телосложение зажимает ловкость; 1 и 11 кабинетов собираются; неполные
семьи 5–10% и не все материнские. Arch / ASP.NET /
DateTime.NowвHSchool.Peopleнет. - Одиннадцать кабинетов-номеров,
Homeroomне компьютерный класс, сущности вWorld,PersistPeopleне с таймера часов. Штат при создании пуст — фаза 11. Нужды вcoreуже с ненулевымdecayPerHour— срез 5. - Список читает опубликованный снимок (
FindPeople), карточка идёт в мейлбокс сTaskCompletionSource. Фильтры роли/параллели/литеры/должности/пола/возраста живут вRosterBrowser; панель — вкладка рядом с картой, строки черезt(...). - Выпуск старшей имеющейся, вместимость, младший брат в том же роде, reload после набора (тест прошлого прохода на месте).
Дописано:
RosterBrowserTests.FilterBySex_KeepsOnlyThatSexRosterBrowserTests.FilterByLetter_KeepsOnlyThatClassLetterRosterBrowserTests.FilterByAgeRange_KeepsAgesInsideRosterBrowserTests.FilterByPosition_KeepsThatJob— фаза 8 обещает эти фильтры; после дрейфа их гонял только клиентский «отправил query».YearlyIntakeTests.StaffParentOfOnlyGraduates_StaysAfterIntake— ветка «родитель выпускников остаётся, если работает здесь» после фазы 11 была пустой: генератор больше не ставит штат, и старый тест её не касался.
Исправлено: ничего в коде среза.
Открытое:
- Хостовые
PeopleApiTests/SchoolSeedTestsв этом проходе не гонялись (Testing policy: HTTP не менялся). Симуляционный переход 1 сентября и библиотечный набор зелёные. people.jsonтеперь ещё пишется после разговора и ссоры — это срез 9, не состав среза 2.