- Updated `protocol.md` to clarify the concept of uncovered subjects and the number of additional teachers required. - Introduced `teachersShort` property in the `StaffingSubject` interface to indicate how many more teachers are needed for a subject. - Enhanced localization strings to reflect the new uncovered teacher information in both English and Russian. - Updated the management panel UI to display the number of teachers short for each uncovered subject. - Revised the `Uncovered` method in the staffing logic to return detailed information about uncovered subjects, including the shortfall of teachers. - Added tests to validate the new uncovered teacher tracking functionality and ensure accurate reporting in the staffing API. - Marked related tasks as complete in the documentation for the golden fixtures phase.
44 lines
3.3 KiB
Markdown
44 lines
3.3 KiB
Markdown
# Фаза 25. Золотые файлы и мелкие долги
|
|
|
|
## Зависимости
|
|
|
|
Нет. Можно вести параллельно с 22–24.
|
|
|
|
## Зачем
|
|
|
|
Две регрессии сейчас ловятся только глазами: молчаливая смена генерации людей и сейв, который
|
|
перестал грузиться после нового поля. Обе дешёвы в защите и дороги в разборе постфактум.
|
|
|
|
## Задачи
|
|
|
|
- [x] Отпечаток ростера файлом в фикстурах: фиксированные сид, карта, набор имён и родной язык
|
|
- [x] Тест печатает **первую** несовпавшую строку, а не «строки различаются»
|
|
- [x] Правило записано рядом с фикстурой: отпечаток обновляется в том же коммите, что и генерация,
|
|
и коммит объясняет, что поменялось
|
|
- [x] Файл сейва текущего формата в фикстурах хоста; тест поднимает из него школу
|
|
- [x] Рядом с ним — файл сейва **без** новых полей, чтобы «отсутствующее поле имеет разумное
|
|
значение» проверялось, а не подразумевалось
|
|
- [x] Форма голодного дня закрепляется тестом: приходят сытыми, к своей смене около 0.4, уходят
|
|
голодными, к утру снова полны. Числа подобраны замером и сейчас ничем не защищены
|
|
- [x] `uncovered` в staffing говорит, скольких учителей не хватает предмету
|
|
- [x] Клиент показывает это число в списке непокрытых, через `t(...)`
|
|
|
|
## Тесты, без которых фаза не закрыта
|
|
|
|
- [x] Отпечаток ростера совпадает с файлом
|
|
- [x] Школа поднимается из сохранённого файла: те же люди, то же время, тот же штат
|
|
- [x] Сейв без поля родного языка грузится и не перетасовывает набор
|
|
- [x] Кривая голода за учебный день держится в заявленных границах
|
|
- [x] `PrimarySchool` на ванильной карте требует трёх учителей, и ответ это говорит
|
|
- [x] Назначение второго учителя уменьшает нехватку, но не закрывает её
|
|
|
|
## Критерий готовности
|
|
|
|
- Изменить порядок бросков в генераторе — золотой тест краснеет
|
|
- Добавить поле в сейв — старый файл по-прежнему грузится
|
|
- `dotnet test` и клиентские `npm test` / `run build` проходят
|
|
|
|
## Стоп
|
|
|
|
Не превращать золотой файл в снимок всего мира: отпечаток должен читаться человеком.
|