add-report-shahmatka #114
Loading…
x
Reference in New Issue
Block a user
No description provided.
Delete Branch "add-report-shahmatka"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
пока все сделано на основе сводной осв, далее требуется доработка учета таблицы корректировок
Ревью PR #114 (AURORA-1537)
Спасибо! Расчёт по §6 в целом верный: прогнали код ветки на демо-стенде (версии «Русский бисквит» Q3 2024 и Q1 2025, только чтение) — суммы сходятся с данными построчно, ничего не сохраняется, всё на Decimal, права через
require(...), сводная ОСВ не сломана. Q3 2024: Счастливочная 62.01 = 107 712 446,46 против РБ 60.01 = 106 311 116,46, разница 1 401 330 — строка «БП Аренда», расчёт с данными согласован.make checkмы довели до зелёного коммитом1ebd5b9в эту ветку: убраны дваprint()в MANUAL,# type: ignore[prop-decorator]уis_debit/is_credit(как в остальных схемах), флагis_more_5_percentбез сравненияDecimalсNone(поведение прежнее),ruff format, новые маршруты — вEXPECTED_ROUTES. Сейчас: ruff/format/mypy чисто, pytest 1303 passed. Перед продолжением сделайgit pull, дальше перед PR —make check-fullи его вывод в описание.Границы с AURORA-1536. Сопоставление пар по правилам Прил. 3, элиминируемая сумма (
min(A, B)по §5) и фиксация версии правил у версии консолидации — это AURORA-1536, в этом PR они не нужны. Шахматка по §6 строится по выбранным наборам счетов (предустановки «58.03 vs 67.03 + 66.03», «60 + 62 + 76 vs 60 + 62 + 76», «все счета» и произвольный выбор).Ниже — содержательные правки.
Обязательно перед merge
services/intercompany_matrix.py, расчёт ячейки). Приmin(amount_a, amount_b) == 0процентNoneиis_more_5_percent = False— пара «100 млн у А против 0 у Б» выглядит как сошедшаяся. Это главный случай для аналитика и прямо в критериях задачи. Подсвечивать приvariance > 0, еслиmin == 0(процент оставитьnullили отдельный признакone_sided), и тест.audit_event(EXPORT), а экспорт сводной ОСВ пишет (services/consolidated_osv.py). Инвариант append-only аудита; payload —{report: "intercompany_matrix", mode, счета, число ячеек}.ACCOUNT_NOT_FOUND/ACCOUNT_KIND_MISMATCH, 403 безCONSOLIDATION_VIEW,RESULT_ACCOUNTS_MISSING; golden-тест на эталоне «Русский бисквит» — только по точным парам (эталон элиминирует полную сумму каждой стороны, а система — минимум по паре, решение владельца 08.10.2026). Тест с неокруглённым процентом (== Decimal("100")/Decimal("9")) переписать после п. 6 ниже; проверки"/intercompany-matrix/presets/"и"exceeds_threshold"— остатки прошлых итераций, убрать.Желательно
GET …/elimination-rulesсейчас всегда пустой: репозиторий соединяет правила сconsolidation_version.elimination_rules_version, а поле нигде не заполняется. Фиксация версии правил — AURORA-1536; здесь либо убрать эндпоинт до 1536, либо оставить и описать в README/гайде, что он заполнится после 1536 (пустой список вводит фронт в заблуждение).Исключения в MANUAL — сейчас правило вида «76 кроме 76.07.5, 76.07.9» вручную не воспроизвести (на стенде, Q1 2025, РБ → Счастливочная, пресет «60+62+76» дал 16 514 753,77, из них 952 714,57 — 76.07.5 и 8 676 330,29 — 76.07.9). Можно добавить
debit_excluded_account_ids/credit_excluded_account_ids(какexcluded_codesв result-table); точный расчёт по правилу — в 1536.Формат чисел: процент сейчас — Decimal на 28 знаков (
"3.873533480903112697872235289"), нули —"0". Суммы и процент округлять до0.01(ROUND_HALF_UP), как деньги в остальном API.entry_osv_ids_*собираются изset— порядок случайный; в списки попадают строки с нулевым вкладом (переход «из ячейки в свод» покажет лишнее). Брать только ненулевые и сортировать.Состав статей result-table зашит в код (
RESULT_ARTICLES) и дублирует счета правила 6 изelimination_rule— при изменении правил разойдётся. Минимум — комментарий-ссылка на §6, лучше строить из правил версии.Мёртвый код:
list_rules,list_rule_accounts,IntercompanyMatrixService.build()не вызываются;measureвсегда"closing"; кодыACCOUNTS_NOT_ALLOWED/INVALID_MODEиз API недостижимы.Слои: сервис делает
select(ChartOfAccount)сам, хотя в этом же PR естьrepositories.directories.list_accounts;repo.membersвызывается повторно послеosv.build.Выгрузка: имя файла всегда
intercompany-matrix.xlsx— по образцу свода (svod-osv_<ГК>_<год>-<квартал>_v<n>.xlsx); в книге нет шапки (версия, период, единицы, выбранные счета) и процента расхождения.Имена в контракте лучше выровнять до первого клиента:
entry_osv_ids_debit/credit(в своде —entry_ids, в описании PR —osv_entry_ids),is_more_5_percent→exceeds_threshold. ВEliminationRuleOutне хватаетid, строк статей иelimination_mode— пресет в UI нечем подписать.Строки с
account_id IS NULLмолча выпадают — по §6 это верно, но стоит отдавать счётчик пропущенных строк, чтобы расхождение с ОСВ было видно.Процесс
openspec/specs/directories-api/spec.mdправится прямо вspecs/— по процессу изменения идут через change вopenspec/changes/<id>/; требований на шахматку, result-table и правила нет ни в одном spec (consolidations-api,consolidated-osv,audit-trailне обновлены).ACCOUNT_NOT_FOUND,ACCOUNT_KIND_MISMATCH,ACCOUNTS_REQUIRED,RESULT_ACCOUNTS_MISSING, …); строка «шахматка и ВГО — Срез 5» устарела.Пункты, которые будут делаться в рамках AURORA-1536
остальное исправила (в jira актуализировала контракт бэк фронт)
Требования AURORA-1537, дописанные в openspec/specs/{audit-trail,consolidated-osv, consolidations-api,directories-api}, перенесены в дельты change'а; specs/ возвращены к main. Известные дефекты (AURORA-1651/1652/1653) зафиксированы в design.md. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>Принято: аудит выгрузки, тесты по критериям, формат чисел в ячейках, выгрузка (имя, шапка, процент), слои, счётчик пропущенных строк, коды ошибок в README. Доводы по исключениям в MANUAL и построению результирующей таблицы приняты.
Чтобы не задерживать merge, оставшиеся замечания вынесены в задачи:
one_sidedсчитать по суммам, а не по наличию строк ОСВ), та же подсветка в xlsx, режим «все счета» без забалансовых счетов 001–012;elimination-rulesдо 1536, формат сумм результирующей таблицы, ссылки на §§ в docstring, ссылка README на гайд фронта;osv_entry_ids_*без нулевых строк, отсортированные.В ветку добавлены merge main и OpenSpec change
intercompany-matrix: требования перенесены изopenspec/specs/в дельты change'а, вspecs/они попадут при архивации после merge.make checkиmake test-integrationзелёные.aep referenced this pull request2026-10-16 17:49:06 +03:00