- маршрут result-table/export в EXPECTED_ROUTES, ruff format - общие VersionExportInfo, _write_details, _group_name, _xlsx_response вместо копий шапки и ответа - сумма компании в книге без молчаливого 0 (KeyError при пропуске в расчёте) - своё описание 422 у маршрутов результирующей таблицы в OpenAPI - тесты: 422 RESULT_ACCOUNTS_MISSING для экспорта без события EXPORT, схема OpenAPI экспорта - требование перенесено из openspec/specs в change intercompany-result-table-export (+ audit-trail), README Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
3.9 KiB
3.9 KiB
Context
Реализация — PR RSHB/arm-core#159. Результирующая таблица ВГО (§6) — чистая функция от сводной ОСВ версии и периметра
(calculate_result_table); в БД не хранится (DECISION-5). Выгрузка повторяет устройство выгрузки шахматки
(intercompany_matrix_export.py, change intercompany-matrix).
Decisions
- JSON и xlsx строятся одним методом сервиса
_build_result_table(build_with_members→calculate_result_table), поэтому состав и порядок компаний, статьи иgroup_totalсовпадают; параметров у таблицы нет. - Книга: лист «Результирующая таблица», шапка (ГК, период, версия, единицы «руб.»), строка заголовка «Статья ВГО» /
компании / «Итого по группе», суммы —
Decimalс форматом#,##0.00, закреплены заголовок и первая колонка. Имя файла —intercompany-result-table_<ГК>_<год>-<квартал>_v<n>.xlsx(RFC 5987, запасное ASCII-имя). - Аудит
EXPORTпишется после построения книги: ошибка расчёта (404, 422) или сборки книги события не оставляет. - Реквизиты версии в шапке и имени файла общие для шахматки и результирующей таблицы (
VersionExportInfo,_write_details,_group_name,_xlsx_response) — без копий кода.
Decisions made without discussion
- 22.10.2026. Требование автора перенесено из
openspec/specs/consolidations-apiв дельтуADDEDотдельным требованием со сценариями (у автора — абзац внутри требования «Результирующая таблица ВГО» без сценария); событие аудита добавлено вaudit-trail. Обоснование: владелец поручил закрыть замечания ревью силами ревьюера, прецедент — changeintercompany-matrix. Цена ошибки: низкая — текст правится в этом change'е до архивации. - 22.10.2026. Аудит экспорта результирующей таблицы оформлен отдельным
ADDED-требованием, а неMODIFIED«Аудит экспорта шахматки». Обоснование: у событий разный payload (articlesвместо режима и счетов), отдельное требование не переписывает согласованный текст. Цена ошибки: низкая. - 22.10.2026. Компания без суммы в статье при сборке книги даёт
KeyErrorвместо молчаливого 0. Обоснование:calculate_result_tableвыдаёт сумму на каждую компанию периметра, пропуск — ошибка расчёта, которую нельзя прятать в файле. Цена ошибки: при таком дефекте расчёта выгрузка ответит 500 вместо файла с нулём. - 22.10.2026. Общие реквизиты книги вынесены в базовый
VersionExportInfo, затронут и код выгрузки шахматки. Обоснование: замечание ревью о копиях шапки и имени файла. Цена ошибки: конфликт слияния с PR #141 (тот меняетMatrixExportInfo); порядок — сначала #141, затем ребейз #159.