diff --git a/openspec/changes/intercompany-matrix-presets/design.md b/openspec/changes/intercompany-matrix-presets/design.md index 87e4f73..5b8a0f2 100644 --- a/openspec/changes/intercompany-matrix-presets/design.md +++ b/openspec/changes/intercompany-matrix-presets/design.md @@ -23,24 +23,35 @@ 7. xlsx пресета: имя `intercompany-matrix_<ГК>_<год>-<квартал>_v_preset-.xlsx`, в шапке «Режим = Пресет», коды счетов сторон (отсортированы) и строка «Показатель» (Сальдо/Оборот) для всех режимов. -## Known issues / вопросы владельцу +## Решения владельца (2026-10-21, ревью PR #141) -Спека описывает фактическое поведение PR; пункты ниже не закреплены как окончательные и ждут решения автора и владельца. +1. **Фиксация версии правил — в AURORA-1536.** Пока `consolidation_version.elimination_rules_version` пуст, шахматка + берёт открытые правила (`valid_to IS NULL`); сейчас версия правил одна (`seed/core/elimination_rules_v1.yaml`, + `valid_to` не задаётся, API управления правилами нет), поэтому результат не плавает. Фиксировать версию — при + создании версии консолидации или при первом расчёте, но не в GET-запросе. +2. **Какая версия правил берётся — действующая на дату составления консолидации**, а не на отчётный период версии. + Реализация — вместе с п. 1 в AURORA-1536. +3. **Корректировки из шахматки убираются** (решение 4 выше и `correction_ids_*` в ячейке). Причины: корректировки в + ядре никто не создаёт (спринт корректировок), семантика ключа `(rule, A, B)` относительно ячейки (A, B) / (B, A) не + утверждена, счета корректировки и `parent_correction_id` не учитывались; §6 описывает шахматку как суммы первички. + Код сохранён в ветке `wip/shahmatka-corrections-unpaired` (`0e95f95`) и возвращается с задачей корректировок. +4. **Ручка `…/preset/{rule_id}/unpaired-osv` убирается** (решение 5 выше). Причины: «без пары» по наличию строк + (дефект AURORA-1651), ложные срабатывания при пересечении счетов сторон (76 в правиле № 6), нет ячейки и стороны + строки, расхождение с «без пары» §5. Сценарий закрывают AURORA-1653 (строки ОСВ ячейки) и AURORA-1536 (строки без + пары по упаковке §5). Код — в той же ветке `wip/shahmatka-corrections-unpaired`. +5. **Пресет = правило Прил. 3 — дополнение к пресетам §6** (наборы счетов), не замена. PRESET ограничивается + правилами ББ (`statement_type = balance`): правил ОФР в seed нет, ОФР в §4 открыт. Правка §6 — в `../docs`. -1. При пустом `consolidation_version.elimination_rules_version` берутся текущие открытые правила. Это расходится с - DBML («фиксируется при первом расчёте, замораживается при VERIFIED») и критерием AURORA-1536; нужно решение - владельца, в том числе для версий в статусе `VERIFIED`. -2. «Актуальные» правила — `valid_to IS NULL` на сегодня, а не на отчётную дату консолидации. -3. Если открытыми остаются несколько `version_no`, список правил даёт дубли `rule_no`. -4. Семантика корректировки: `(rule, A, B)` дебетовой частью правит ячейку `(A, B)`, кредитовой — ячейку `(B, A)`; - `debit_account_id`, `credit_account_id` и `parent_correction_id` не учитываются; корректировки в ядре пока никто - не создаёт. -5. `unpaired-osv` построена на `one_sided` по наличию строк — это дефект AURORA-1651, и «без пары» здесь не равно - «без пары» по §5 и AURORA-1536. -6. Пресет здесь — правило Прил. 3, а §6 описывает пресеты как наборы счетов; PRESET по ОФР на оборотах - (`measure = turnover`) не подтверждён §5/§6. -7. Имя файла содержит UUID правила, шапка xlsx не содержит номер правила и версию; audit не пишет номер/версию правил - и ID применённых корректировок. +После выноса п. 3–4 автором соответствующие требования дельты `consolidated-osv` удаляются из change. + +## Known issues + +1. Если открытыми остаются несколько `version_no`, список правил даёт дубли `rule_no` (обязательно в PR: одна версия + или явная ошибка, тест). +2. При незафиксированной версии ответ `elimination-rules` отдаёт `version_no = null` — фронт не видит, по какой версии + посчитано (желательно отдавать фактический номер открытых правил). +3. Имя файла содержит UUID правила, шапка xlsx не содержит номер правила и версию; audit EXPORT не пишет номер и + версию правил. ## Decisions made without discussion diff --git a/openspec/changes/intercompany-matrix-presets/tasks.md b/openspec/changes/intercompany-matrix-presets/tasks.md index 7428843..53dca62 100644 --- a/openspec/changes/intercompany-matrix-presets/tasks.md +++ b/openspec/changes/intercompany-matrix-presets/tasks.md @@ -2,3 +2,12 @@ Реализация выполнена автором в PR RSHB/arm-core#141; задач плана нет. Доработки по замечаниям ревью — см. `design.md`, `## Known issues`. + +## 2. Доработки по решениям владельца 2026-10-21 (автор) + +- [ ] 2.1 Отдельным коммитом убрать учёт корректировок (`_apply_corrections`, `correction_for_version_consolidation`, + `correction_ids_*`) и ручку `unpaired-osv` (`get_unpaired_rows`, `UnpairedOsvOut`, маршрут) вместе с тестами; + код сохранён в `wip/shahmatka-corrections-unpaired`. +- [ ] 2.2 PRESET — только правила `statement_type = balance`; правило ОФР — 422 `INVALID_RULE`, тест. +- [ ] 2.3 Несколько открытых `version_no` — одна версия (max) или явная ошибка, тест. +- [ ] 2.4 Ревьюер: убрать из дельты `consolidated-osv` требования про корректировки и `unpaired-osv`, обновить README.