Реальный контракт AURORA-1540/1751 не дал единой POST .../allocations: решение по строке разбито на PUT/DELETE .../vgo-assignments/rule (привязка/снятие правила) и PUT .../vgo-assignments/exclude (КФО), ответ — список VgoAssignmentOut, а не вся таблица. allocate() маршрутизирует по action и перечитывает таблицу сама — вызывающий код (CorrectionContent, CorrectionEditorModal) не менялся. Фейк контракта (CORRECTIONS_MOCK) убран — API уже есть. mockData/mockCalc остаются тестовыми фикстурами (R-27). Проверено на реальном стенде (Русский Бисквит — 2025 К1): загрузка таблицы, EXCLUDE/INCLUDE, ASSIGN, снятие правила, сохранение корректировки, экспорт — без ошибок в консоли.
8.9 KiB
8.9 KiB
1. Типы контракта, клиент API, флаг фейка
- 1.1 Типы
src/types/corrections.tsпо контрактуdocs/dev/api-contract-corrections.md - 1.2 Клиент
src/services/api/corrections.ts(таблица, сохранение, отмена, разнесение, экспорт) и флагConfig.CORRECTIONS_MOCK
2. Фейк контракта и модель таблицы
- 2.1 Фейк
correctionsFakeи данные дизайнаmockData/mockCalcпод флагомREACT_APP_CORRECTIONS_MOCK - 2.2 Чистая модель таблицы
tableModel.ts: строки, фильтры, пресет правила, итоги
3. Модель окна корректировки и черновик
- 3.1
editorModel.ts: состояние окна, проверки ввода, контроль баланса, кандидаты для выбора строки - 3.2 Деньги копейками в
utils/money.ts, черновик вdraftStorage.ts
4. Вкладка и таблица только на чтение
- 4.1 Вкладка «Таблица корректировки»: загрузка, ошибка с «Повторить», пусто, экспорт, полный экран
- 4.2 Таблица с группами колонок, раскрытием агрегата, нераспределёнными записями, «Итого»
- 4.3 Панель: отображение, пресет правила, тип записи, единицы, знаки, сброс фильтров, настройка таблицы; фильтры в заголовках
5. Решения по строкам, отмена корректировки, только чтение
- 5.1 Флажок «Учитывать в КФО» и меню строки (перенос в правило, убрать из правила, вернуть к автоматике)
- 5.2 Отмена корректировки с комментарием, подсказки режима «только чтение», обработка 409
6. Окно «Корректировка операции»
- 6.1 Окно: стороны, строки ОСВ, распределение корректировки, контроль баланса, комментарий, сохранение
- 6.2 Выбор нераспределённой строки (picker), черновик, плашки конфликта, доступность с клавиатуры
7. Сверка с дизайном, проверки, документация
- 7.1 Проход сценариев спеки в браузере на фейке (ширина 1920, headless Chrome по CDP) и сверка частей экрана с дизайном. Проверено: таблица и группы колонок, панель, фильтры в заголовках, раскрытие, нераспределённые, пресет, настройка таблицы, окно корректировки, решения по строкам (в т.ч. повторный INCLUDE), «Убрать из правила», ошибка загрузки с «Повторить», экспорт,
composition_changedи «черновик». Не проверено — вынесено в 8.1: полный экран, 409 /CORRECTION_VERSION_CONFLICT, недоступныйlocalStorage, «Вернуть к автоматике» внутри агрегата, реальный API - 7.2
make web-check,npm test,npm run lint,openspec validate corrections-table-ui --strict - 7.3 README (флаг фейка) и ARCHITECTURE (виджет
CorrectionTable)
8. Подключение к API (после слияния AURORA-1540)
- 8.1 Влит
main(AURORA-1540/1751, arm-core #208 — к моменту слияния уже на main), запущено без флага на стенде (docs/dev,make up, API из основного checkout на 5432/4222/9000,REACT_APP_ROOT_PATH=/ npm run startиз этого worktree) на реальной версии «Русский Бисквит — 2025 К1» (d747cef8-c0d2-4dc5-b556-175dcb8055c7, входka_go@armka.local). Проверено в браузере на реальных данных: загрузка таблицы (аггрегаты + нераспределённые), флажок «Учитывать в КФО» (PUT vgo-assignments/exclude, round-trip туда-обратно), «Вернуть к автоматике» (DELETE vgo-assignments/rule, тело реально дошло — ради этого пришлось научитьapi.delотправлять тело, см. 8.2), «Отнести к правилу» (PUT vgo-assignments/rule, проверено прямым вызовом с теми же данными, что шлётallocate, — подменю antd не открывалось под Playwright-автоматизацией, не баг продукта), окно «Корректировать» →saveCorrection(реальный агрегат ПЕКАРНЯ СЧАСТЛИВОЧНАЯ/РУССКИЙ БИСКВИТ, 200 OK), экспорт xlsx. Консоль браузера чистая на всех шагах. Не проверено (нет готовых данных/инфраструктуры под это в локальном стенде, не блокирует подключение): полноэкранный режим; 409/CORRECTION_VERSION_CONFLICT; приватное окно безlocalStorage; именные сценарии спеки Сатурн — Архол, Бековский 62.01/60.02/62.03/76.01, ПМП — Бековский комбинат (это фикстуры pytest бэкенда, не демо-данные стенда);allocate/VALIDATION_ERRORна несколькихentry_ids(M-10, по-прежнему не воспроизведено — фейк удалён, а не на чём стало труднее). Оставляю как переносимый пункт проверки на QA/контур, не блокер PR. - 8.2 Расхождение с контрактом найдено и устранено на фронте: реальный API 1540/1751 (#208) не дал единой
POST …/corrections/allocations— решение по строке разбито наPUT/DELETE …/vgo-assignments/rule(привязка/снятие) иPUT …/vgo-assignments/exclude(КФО);allocate()вcorrections.tsсама выбирает ручку поactionи перечитывает таблицу, вызывающий код (CorrectionContent,CorrectionEditorModal) не тронут.api.del(api/client.ts) научен отправлять тело — раньше толькоDELETEбез тела. Попутно R-35 (design.md): порог 5 % в живом контроле окна и подписи фильтра приведены к факту (строго>, не≥) — API 1540 считает строго больше. Фейк контракта (correctionsFake.ts+ тест) и ветка флагаCORRECTIONS_MOCK/REACT_APP_CORRECTIONS_MOCKудалены (corrections.ts,config.ts);mockData/mockCalcостались тестовыми фикстурами (R-27), не тронуты. README/ARCHITECTURE/spec.md обновлены под реальный контракт. - 8.3
npm test(544/544),npm run lint,make web-check(biome+tsc+build) зелёные до коммита;make check-fullзапущен отдельно (см. итог прогона в PR) — не блокирует коммит правок, PR открыт по готовности.
9. Ответы Лысенко 29.10 (AURORA-1395, #9920570) и WIP API 1540 (arm-core #208)
- 9.1 Убрать отзыв корректировки и
statusиз телаPUT(п. 9; R-29, R-30) - 9.2 «Учитывать в КФО»: агрегат закреплён, у строк агрегата флажка нет, у нераспределённых —
EXCLUDE/INCLUDE;excludedу строки агрегата убран (п. 4; R-31, R-32) - 9.3 Строка баланса владельца у нераспределённой (
line_code), фильтр «Строка баланса» по ней (п. 11; R-33) - 9.4 Фейк:
ENTRY_ALLOCATEDдляEXCLUDE/INCLUDEстроки агрегата,ENTRY_EXCLUDEDдляASSIGNисключённой; проверка на фейке в браузере (агрегат, раскрытие, нераспределённые, «×» в окне) - 9.5 Спека, design.md, README/ARCHITECTURE; контракт docs — отдельным PR