README: возвращена фраза про XLSX результирующей таблицы, потерянная при merge. Change: отменённое решение 4, ветка-закладка wip/shahmatka-corrections-unpaired, ссылки на снятый раздел Known issues, шапка xlsx пресета — счета правила и «кроме», статьи сторон при side_1 = K, tasks раунда 2. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
34 lines
2.6 KiB
Markdown
34 lines
2.6 KiB
Markdown
## Why
|
||
|
||
Шахматка ВГО (ТЗ §6) считалась только по всем счетам (ALL) или по счетам, выбранным вручную (MANUAL). Аналитику нужен
|
||
режим «пресет»: счета и показатель берутся из правила элиминации (Прил. 3).
|
||
Реализация — PR RSHB/arm-core#141 (ветка `add-preset-shahmatka`, автор — Потапова).
|
||
Требования оформлены как дельты этого change'а при ревью (решение владельца 21.10.2026); решения владельца и ревью —
|
||
`design.md`.
|
||
|
||
## What Changes
|
||
|
||
- Режим PRESET шахматки: `GET …/intercompany-matrix/preset/{rule_id}`, выгрузка `…/preset/{rule_id}/export`.
|
||
- Показатель пресета (`closing` / `turnover`) берётся из правила.
|
||
- `GET …/elimination-rules` возвращает объект `{version_no, is_version_fixed, rules}` вместо массива; у правила есть
|
||
`id`. Для версии без зафиксированного `elimination_rules_version` отдаются открытые правила (`valid_to IS NULL`)
|
||
с максимальным `version_no`; ответ содержит этот номер.
|
||
- xlsx: для PRESET имя файла с `_rule-balance-<rule_no>`, в шапке номер, статьи, версия правила и «Показатель»; audit `EXPORT` пишет `mode`
|
||
`ALL`/`MANUAL`/`PRESET`, а для PRESET также `rule_id`, `rule_no` и фактический `rule_version_no`.
|
||
|
||
## Capabilities
|
||
|
||
### New Capabilities
|
||
Нет.
|
||
|
||
### Modified Capabilities
|
||
- `consolidations-api`: ответ правил элиминации версии.
|
||
- `consolidated-osv`: режим PRESET шахматки и xlsx пресета.
|
||
- `audit-trail`: аудит экспорта шахматки (режим PRESET).
|
||
|
||
## Impact
|
||
|
||
Только `arm-core` (API, сервисы, схемы), таблицы и DBML не меняются. Ломающее изменение контракта
|
||
`GET …/elimination-rules` (массив → объект); поле `as_of` в ответ не входит. Потребителей старого формата в этом репозитории не проверялось — проверить при слиянии. Non-goals: фиксация версии правил, расчёт «актуальных» правил на отчётную дату, создание и применение корректировок,
|
||
исправление `one_sided` (AURORA-1651).
|