Фронт закладывал >= 5% (R-34, из неоднозначного текста контракта
«от 5% включительно»), а API 1540 (domain/corrections.py) считает
строго больше. Приведены к факту: живой контроль окна (editorModel),
подпись фильтра «Отклонение, %», тест на границе (ровно 5.00% больше
не красный, добавлен случай 5.01%).
Реальный контракт 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, снятие правила, сохранение
корректировки, экспорт — без ошибок в консоли.
- отзыв корректировки убран (RevokeModal, revokeCorrection, пункт меню агрегата);
`status` из тела PUT убран — сервер сразу применяет (R-29, R-30);
- «Учитывать в КФО»: у агрегата отмечен и закреплён, у строк агрегата флажка нет,
у нераспределённых — EXCLUDE/INCLUDE; `excluded` у строки агрегата убран (R-31, R-32);
- у нераспределённой — строка баланса владельца `line_code`, фильтр «Строка баланса»
действует и на неё (R-33);
- фейк: ENTRY_ALLOCATED для EXCLUDE/INCLUDE строки агрегата, ENTRY_EXCLUDED для ASSIGN
исключённой; «Убрать из правила» отдаёт строку с line_code;
- спека, design.md (R-29…R-34), tasks §9, план Task 9, README/ARCHITECTURE.
Источник: AURORA-1395 #9920570, WIP API arm-core #208.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Флажок «Учитывать в КФО» и меню строк (перенести, убрать, вернуть к
автоматике) отправляют allocate; «Отменить корректировку» открывает окно
с обязательным комментарием и вызывает revoke. Ошибки — уведомление с
текстом сервера, 409 — ещё перечитывание таблицы. Подсказки режима только
чтения вынесены в readOnly.ts, подсказка «Недоступно» убрана (T4.14).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Копейки, процент и порог 5 % вынесены из mockCalc в utils/money;
editorModel больше не зависит от фейка, тесты перенесены.
- Один разбор суммы строки ввода для проверки, живого контроля и сравнения;
некорректные строки в живой контроль не входят.
- isDirty сравнивает суммы копейками; комментарий — точно.
- Черновик: savedAt проверяется через Date.parse.
- Тесты границ порога, пустых сторон и неизвестного rule_id.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Состояние окна «Корректировка операции», проверки ввода, живой контроль
(исходные суммы и распределение), кандидаты «Добавить строку ОСВ» и
черновик в localStorage. Деньги — строки, сложение через sumAmounts,
ввод через parseAmountInput; процент — percentOfSmaller из mockCalc.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Типы 1:1 с components.schemas контракта корректировок, клиент API
(таблица, сохранение, отзыв, разнесение, экспорт), флаг
REACT_APP_CORRECTIONS_MOCK в Config. Ветка фейка пока бросает ошибку
(фейк — в следующей задаче). Строка R-1 в design.md.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>