3.5 KiB
3.5 KiB
Фаза 27. Версия сейва и взгляд внутрь
Зависимости
- Фаза 2 — сейв и дев-поверхность уже есть
Зачем
Две дыры в обслуживании. Первая: Format в сейве штампуется при записи и копируется при чтении,
но никогда не сравнивается — файл из будущей версии загрузится молча и будет понят неправильно, а
места для миграции просто нет. Вторая: посмотреть внутрь живой школы нечем. Всё ревью замеры
делались временными тестами, потому что другого способа узнать, кто где и с какими нуждами, не
существует.
Задачи
- Загрузка читает
Format: новее своего — школу не стартовать, файл не трогать, в лог. Как с пропавшей папкой мода - Формат старее своего — явный шов для апгрейда: сегодня пустой, но названный и с комментарием
GET /api/dev/schools/{id}/dump— ростер, присутствие, расписание и нужды одним JSON. За тем же переключателем, что иreload-schools, и никогда в проде по умолчанию- Дамп читает опубликованные снимки и мейлбокс, а не лезет в
Worldмимо работника - Раздел «Things that will bite you» в
AGENTS.mdпополняется тем, что нашло ревью: сид школы был её id; тесты хоста делят один сервер и одну папку сейвов, поэтому начинают с очистки; на паузе кадры присутствия не приходят вовсе - Классы тестов вокруг Arch перестают идти параллельно:
HSchool.Simulation.Testsполучает запрет параллельности, потому что нативная память Arch этого не любит docs/protocol.mdописывает дамп в разделе дев-ручек
Тесты, без которых фаза не закрыта
- Сейв с
formatбольше текущего оставляет школу незапущенной и файл нетронутым - Сейв текущего формата грузится как раньше
- Дамп отдаёт людей, их узлы и текущее расписание для живой школы
- Дамп неизвестной школы —
404
Критерий готовности
- Подсунуть сейв из будущего — сервер стартует, эта школа не поднимается, в логе понятно почему
- Снять дамп с идущей школы и увидеть, кто где стоит
dotnet testпроходит; полный прогон решения стабилен
Стоп
Не писать миграции, которых пока не нужно. Не открывать дев-ручки без переключателя.