docs(openspec): решения владельца по шахматке пресетов (ревью #141)

Фиксация версии правил и выбор по дате составления консолидации — в AURORA-1536;
корректировки и unpaired-osv выносятся из PR (код — ветка
wip/shahmatka-corrections-unpaired); пресет = правило ББ Прил. 3 как дополнение к §6.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Andrey Epifancev 2026-10-21 15:10:29 +04:00
parent 0e95f95c71
commit 3adaf6f3c3
2 changed files with 36 additions and 16 deletions

View File

@ -23,24 +23,35 @@
7. xlsx пресета: имя `intercompany-matrix_<ГК>_<год>-<квартал>_v<n>_preset-<rule_id>.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

View File

@ -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.