5.4 KiB
5.4 KiB
Context
Реализация — PR RSHB/arm-core#114 (AURORA-1537). Шахматка — чистая функция от сводной ОСВ версии, периметра и выбранных счетов; в БД не хранится (инвариант «производные консолидации не хранятся», DECISION-5).
Decisions
- Матрица считается поверх
ConsolidatedOsvService.build_with_members(бывший приватный_build): строки свода и участники периметра берутся из того же расчёта, что и сводная ОСВ; вSourceRow/ConsolidatedRowдобавленоaccount_id. - Пара
(A, B): сторона 1 — дебет ОСВ A по контрагенту B, сторона 2 — кредит ОСВ B по контрагенту A. Расчёт поддерживает показателиclosing/turnover, но в режимах ALL и MANUAL всегда используется конечное сальдо (closing). - Режим ALL берёт все счета вида
A/AP(дебет) иP/AP(кредит); MANUAL раскрывает выбранные счета по иерархииchart_of_accountи фильтрует по виду. - Порог расхождения 5 % проверяется по точному значению до округления; суммы в JSON — десятичные строки с двумя
знаками (
ROUND_HALF_UP). - Строки пары без
account_idв суммы не входят и считаются вskipped_osv_entry_count. - Результирующая таблица — пять фиксированных статей (
RESULT_ARTICLES) со списками кодов счетов и исключений; отсутствие любого кода в плане счетов — 422RESULT_ACCOUNTS_MISSING. - xlsx: имя файла
intercompany-matrix_<ГК>_<год>-<квартал>_v<n>.xlsx; каждая выгрузка пишет собственное событиеaudit_event(EXPORT). - Сверка с эталоном «Русский бисквит» — только по точным парам счетов и компаний; общая сумма элиминации эталона не приравнивается к минимуму по паре (решение владельца 08.10.2026).
Known issues
Требования ниже описывают текущее поведение; дефекты вынесены в задачи Jira и в этом change не исправляются.
- AURORA-1651:
one_sidedсчитается по наличию исходных записей, а не по суммам и строкам-основаниям — пара «100 млн против строки с нулевым сальдо» не подсвечивается, «0 против 0» подсвечивается ложно; подсветка таких пар в xlsx; режим ALL захватывает забалансовые счета 001–012. - AURORA-1652:
GET …/elimination-rulesпуст до задачи 1536, хотя требование описывает непустой ответ; формат сумм результирующей таблицы"0"вместо"0.00"(расхождение с форматом матрицы); ссылки на §§ в docstring; ссылка README на гайд фронта. - AURORA-1653: переход «ячейка → сводная ОСВ» — фильтр по паре в
GET …/osv;osv_entry_ids_*содержат ID нулевых строк и не отсортированы.
Decisions made without discussion
- 16.10.2026. Требования автора перенесены из
openspec/specs/*в дельтыADDEDдословно, без правки содержания. Обоснование: владелец поручил оформить change процессно, а содержательные замечания ревью уже вынесены в задачи. Цена ошибки: низкая — текст можно поправить в этом же change'е до архивации. - 16.10.2026. Спека фиксирует текущее поведение, включая семантику
one_sidedи формат"0"результирующей таблицы; исправление требований идёт вместе с кодом в AURORA-1651/1652/1653 (там же MODIFIED-дельты). Обоснование: иначе спека разойдётся с кодом PR. Цена ошибки: до исправления спека описывает известные дефекты (отмечены в## Known issues). - 16.10.2026. Все требования оформлены как
ADDEDв существующих capability, новая capability не заводится. Обоснование: шахматка — отчёт по сводной ОСВ (consolidated-osv), API версий (consolidations-api), справочников и аудита; отдельная capability дробила бы уже согласованную структуру. Цена ошибки: низкая, перенос между capability — правка путей дельт.