6.3 KiB
6.3 KiB
Журнал ревью
Сводка: ../reviewed.md. Индекс среза: README.md.
Срез 4. Расписание — перепроверка
- Фазы: 14–17
- Проверен на:
01ef277, 2026-08-20 - Пути:
src/HSchool.Schedule,src/HSchool.Content(каркас дня, каникулы,SubjectDef.room),src/HSchool.Simulation/SchoolTimetables.cs,src/HSchool.Server/Api/TimetableEndpoints.cs,src/HSchool.Server/Api/TimetableModels.cs,src/HSchool.Server/Game/SchoolWorker.Mailbox.cs(пин),src/HSchool.Server/Game/SchoolWorker.Persist.cs(сейв и перестроение),src/HSchool.Server/Game/SchoolWorker.Tick.cs(PeopleChanged+TimetableDirty),src/HSchool.Client/src/ui/timetableGrid.ts,src/HSchool.Client/src/ui/gameScreen.ts,tests/HSchool.Schedule.Tests,tests/HSchool.Content.Tests/CalendarTests.cs,tests/HSchool.Content.Tests/LunchBreakTests.cs,tests/HSchool.AppHost.Tests/TimetableApiTests.cs,src/HSchool.Client/src/ui/timetableGrid.test.ts - Итог: перепроверка после дрейфа с
bdb1253; обещания фаз 14–17 целы; дописаны тесты фильтровGETиpersonTimetableQuery
Что подтверждено:
- Календарь: суббота, каникулы и ночь — «вне учебного дня»; 10:20 вторника — третий урок; шестидневка; зима через 1 января. Физкультура в спортзале. Обеденные смены в каркасе дня (младшие после 3-го, старшие после 4-го).
- Планировщик: все шесть тестов фазы 15 на месте; запреты Arch/ASP.NET/
DateTime.Nowживут вLayerBoundaryTests(срез 10), не вSchedule.Tests. - Перестроение только при
PeopleChanged+TimetableDirty, не по тику — после раскола воркера этоSchoolWorker.Tick.cs.GET /timetableчитает снимок; пин требует владельца (срез 8) и идёт черезTaskCompletionSource.Reload_RestoresLockedLessons. - Сетка, закрепление, тексты отказа, скобки в дереве из присутствия (ещё и с числом людей),
личное расписание: учитель
?personId=, ученик?classId=, родитель без сетки. Всё черезt(...). - Занятость узла в протоколе v7 живёт в кадре
Presence, не в снимке карты — фаза 19.
Дописано:
TimetableApiTests.GetTimetable_ClassAndPersonFilters_NarrowTheLessons—?classId=и?personId=сужают уроки; это обещание фазы 16 без отдельного теста.personTimetableQuery: staff →personId, ученик →classId, родитель не staff →null.- Закреплённая ячейка несёт класс
timetable__cell--lockedиtitleизt('timetableLocked').
Исправлено:
- Комментарий у
TimetableGridвсё ещё писал, что занятость живёт в снимке карты. Saturday_HasNoOccupancyOnTheMapне проверял занятость — переименован вSaturday_StillStoresTheWeekTable(пустой стол в выходной уже вTimetableClockTests).
Открыто:
GET /api/catalogпо-прежнему отдаёт каркас дня безlunchBreaks(толькоlongBreakAfter). Сетке смены не нужны; молча расширять HTTP ревью не стало.
Срез 4. Расписание
- Фазы: 14–17
- Проверен на:
bdb1253, 2026-08-20 - Пути:
src/HSchool.Schedule,src/HSchool.Content(каркас дня, каникулы,SubjectDef.room),src/HSchool.Simulation/SchoolTimetables.cs,src/HSchool.Server/Api/TimetableEndpoints.cs,src/HSchool.Server/Game/SchoolWorker.cs(пин, перестроение),src/HSchool.Client/src/ui/timetableGrid.ts,src/HSchool.Client/src/ui/gameScreen.ts,tests/HSchool.Schedule.Tests,tests/HSchool.Content.Tests/CalendarTests.cs,tests/HSchool.Content.Tests/LunchBreakTests.cs,tests/HSchool.AppHost.Tests/TimetableApiTests.cs,src/HSchool.Client/src/ui/timetableGrid.test.ts - Итог: обещания фаз 14–17 целы; дописан тест на коды отказа пина; две строки дизайна помечены как отменённые срезом 5
Что подтверждено:
- Календарь: суббота, каникулы и ночь — «вне учебного дня»; 10:20 вторника — третий урок; шестидневка; зима через 1 января. Физкультура в спортзале. Обеденные смены в каркасе дня (младшие после 3-го, старшие после 4-го).
- Планировщик: четыре запрета, класс не влезает в меньший кабинет, без Arch/ASP.NET/
DateTime.Now. - Перестроение только при
PeopleChanged+TimetableDirty, не по тику.GET /timetableчитает снимок, пин —TaskCompletionSource.Reload_RestoresLockedLessons. - Сетка, закрепление, тексты отказа (
pin-rejected/no-teacher/unknown-lesson), скобки в дереве из присутствия, личное расписание в карточке. Всё черезt(...). - Занятость узла в протоколе v7 живёт в кадре
Presence, не в снимке карты — фаза 19.
Дописано:
TimetableApiTests.PinAndUnpinRefusals_CarryTheDocumentedCodes—no-teacher,unknown-class,unknown-subject,unknown-room,unknown-lesson,invalid-query.
Исправлено:
- В
../../design/04-schedule/schedule.md«панель локации из расписания» и «люди находятся по расписанию» помечены как отменённые срезом 5.