Фронт закладывал >= 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, снятие правила, сохранение
корректировки, экспорт — без ошибок в консоли.
Нужно для DELETE .../vgo-assignments/rule (снятие правила) — API
ждёт statement_type/entry_ids в теле. Единственный прежний вызов
(files.ts, без тела) не затронут.
Тест не обновили вместе с .env.test (ревью #208, I-5): докстринг и
сам .env.test уже говорят про стандартный docker-compose порт 5432,
а assert всё ещё сверял 5431.
test_all_golden_snapshots_mapped сравнивал документы 1:1 с листами
снимка. Синтетика s48_other_system_titles, s49_balance_and_turnover_by_side,
s50_sap_in_out_glued_side, s53_balance_by_side (tp#81, AURORA-1717/1732)
намеренно кладёт несколько листов под один счёт/период в одном файле,
проверяя распознавание разных названий ведомости — по D-7
(services/result_mapping._split_duplicates) core оставляет только
первый лист документом, остальные — предупреждением. Ожидаемый набор
локаторов теперь считается той же _split_duplicates, что и продакшен-код.
attach_corrections молча пропускала (continue) корректировку, чей
агрегат (rule_id, пара ЮЛ) больше не существует после пересчёта
разнесения ВГО — вместо этого, как и в остальных ветках функции,
поднимаем ConflictError("CORRECTION_REVIEW_REQUIRED").
Был 5431 вместо 5432 из docs/dev/docker-compose.yml, как и утверждает
комментарий в шапке файла — интеграционные тесты не подключались к
стенду, поднятому make up.
- README: вернуть потерянный абзац-предупреждение про e2e и queue group
(был затёрт вставкой нового раздела); описание раздела про корректировки
поправлено под архитектуру CorrectionAggregateSource (1540 не читает
vgo_assignment напрямую, см. design.md Decision 1).
- design.md: Non-Goals ложно утверждал "DBML/ORM/миграция не меняются",
хотя в ветке есть миграция 0011 (vgo_assignment, AURORA-1751); уточнена
граница ответственности и добавлено пояснение в Migration Plan.
- tasks.md: зафиксировано, что make dbml-check не выполнялся — DBML v5.24
ещё не существует в arm-ka-docs, вопрос поднимается отдельно.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
AppModal не задаёт margin у ant-modal-header, только padding — без
инлайн-override возвращался зазор, убранный в AURORA-1589 раньше.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- отзыв корректировки убран (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>
- режим запроса вынесен в utils/chessMatrixMode (all / manual / half) с тестами;
при «одна сторона» запрос матрицы не уходит, индикатор загрузки снимается;
- подсказка по спеке intercompany-matrix-ui: один текст в таблице и у фильтров,
у фильтров — только в состоянии «одна сторона»;
- высота шахматки: min-height только для состояния подсказки, обёртка снова auto
(в обычном режиме «Итого» сразу под строками);
- откат pairs?.length в shouldWarnCounterPairs (маскировал старый API);
- вернули комментарий про сумму, лишний columns || [] и дубль CSS убраны;
опечатка CataloguGroupTabsI.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
AllocationIn получил side: строка с дебетовым и кредитовым сальдо даёт
две позиции, решение касается одной. Флажок, меню строки, окно
корректировки и фейк передают и ищут позицию по строке и стороне.
Контракт — docs PR #184.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
I-2: sourceDiff = суммы сторон, отклонение и порог из агрегата; diffOf только для распределения.
M-1: целая часть суммы не более 16 цифр («Слишком большая сумма»). M-6, M-7: комментарий, один percentText.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
I-1: локальный notification.useNotification с getContainer на бокс вкладки; M-6, M-8: комментарии.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
T6.11: при пересборке окна из нового агрегата (правок не было) база черновика
обновляется до текущей редакции корректировки, иначе при следующем открытии
показывалась ложная плашка об изменении.
T6.12: подпись кнопки «Выбрать» называет контрагента; ошибки полей статьи
объявляются role=alert.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>