Split SchoolWorker and the person card along existing seams without a second thread or public API.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Leonid Pershin
2026-08-20 13:51:39 +03:00
co-authored by Cursor
parent 8d07b3606d
commit b48bbbcf7c
18 changed files with 2307 additions and 2193 deletions
+9 -9
View File
@@ -12,22 +12,22 @@ DOM. Разрезать по существующим границам, не м
## Задачи
- [ ] `SchoolWorker``partial` (почта / тик / запись или эквивалент по швам). Один тип,
- [x] `SchoolWorker``partial` (почта / тик / запись или эквивалент по швам). Один тип,
тот же `LongRunning`-поток, тот же mailbox. Без `lock` вокруг `School`/`World`
- [ ] `PersonCardReader`: публичный вход по-прежнему `Read(School, personId, locale)`;
- [x] `PersonCardReader`: публичный вход по-прежнему `Read(School, personId, locale)`;
сборка вкладок — соседние `internal` helper или `partial`, не второй публичный API
- [ ] `personCard.ts`: вкладки в отдельных модулях; `personCardHost.ts` по-прежнему fetch
- [ ] Инверсия Game → типы из `HSchool.Server.Api` **не** входит: `using` можно оставить
- [x] `personCard.ts`: вкладки в отдельных модулях; `personCardHost.ts` по-прежнему fetch
- [x] Инверсия Game → типы из `HSchool.Server.Api` **не** входит: `using` можно оставить
## Тесты, без которых фаза не закрыта
- [ ] Карточка: нужды, одежда/ноша, связи — как сейчас (`PeopleApiTests`,
- [x] Карточка: нужды, одежда/ноша, связи — как сейчас (`PeopleApiTests`,
`InventoryApiTests`, `Card_ConnectionsCarryOnlyThisPersonsOpinions`)
- [ ] `personCard.test.ts` (вкладки, портрет-кнопки, связи) проходит
- [ ] Пауза одной школы не останавливает другую (существующий хостовый факт)
- [ ] Дамп школы по-прежнему 200 на известный id (`Dump_ReturnsPeopleNodesAndTimetable`
- [x] `personCard.test.ts` (вкладки, портрет-кнопки, связи) проходит
- [x] Пауза одной школы не останавливает другую (существующий хостовый факт)
- [x] Дамп школы по-прежнему 200 на известный id (`Dump_ReturnsPeopleNodesAndTimetable`
текущий оракул, ужесточение — фаза 59)
- [ ] `SchoolWorker` остаётся одним `internal sealed` типом (рефлексия или исходник: нет
- [x] `SchoolWorker` остаётся одним `internal sealed` типом (рефлексия или исходник: нет
второго worker-класса с mailbox)
## Критерий готовности