КФО к старту спринта 4: §8, DBML v5.26, контракт API КФО (AURORA-1546/1547, #206) #207

Open
aep wants to merge 8 commits from feat/206-kfo-contract into main
Owner

Closes #206. Блокеры старта AURORA-1546 (расчёт КФО) и AURORA-1547 (экран КФО), разработка с 10.11.2026.

Что внутри

  • §8 «КФО» (context/05-domain-rules.md) переписан целиком по DOC-274230, DOC-259025, DOC-272613 и черновику
    DOC-274636: источники значений и знак расходов, агрегаты таблицы корректировок как вход, автосумма по режиму правила
    и каскад, корректировка вместо автосуммы, округление ячейки, итоги, гудвилл, расхождения, пороги, реквизиты, пересчёт и
    заморозка, предупреждения. Сквозной пример на трёх компаниях (1600 = 1700, 2100 не меняется).
  • §8 «Корректировка», §5 п. 1 — режим min_or_full для правила 2; одна функция автосуммы для таблицы корректировок и КФО.
  • DBML v5.26 (model/data-model-v5.26.dbml, entities-v5.26.md): kfo_result_line_company.client_amount,
    vgo_amount; kfo_result.warnings и сводка корректировок; audit_action.KFO_EDIT; elimination_mode = min_or_full;
    пояснения КФО; диаграммы; ссылки на текущую версию.
  • Контракт API КФО — dev/api-contract-kfo.md + dev/api-contract-kfo.openapi.yaml (три полных примера ответа для
    фейка). OpenAPI генерируется scripts/kfo_contract/gen_kfo_openapi.py из scripts/kfo_contract/kfo_example.py (там же
    проверки правил). Контракт корректировок и frontend-api-guide.md — под правило 2 и ссылка на КФО.
  • OQ-180…194 — развилки заказчика с вариантом, принятым на старте.
  • OpenSpec change kfo-calculation-contract: proposal, design (29 решений без обсуждения), spec delta arm-core, план.

Порядок merge

Решение владельца 06.11: сначала #203 (метрики качества, DBML v5.25), затем этот PR — v5.26 перестроить поверх v5.25 (перенести changelog и правки v5.25), затем #211.

v5.25 занят PR #203 (метрики OCR). Если #203 сливается первым — перед merge этого PR влить main и перенести изменения
v5.25 в v5.26 (номера не переписываем). Если этот первым — то же делает #203.

Проверки

make check — зелёный; openspec validate kfo-calculation-contract --strict — valid; OpenAPI и три примера проходят
валидацию; python3 -I scripts/kfo_contract/kfo_example.py — все проверки.

Rulings I made

Полностью, с ценой ошибки — openspec/changes/kfo-calculation-contract/design.md §6, #1–#29. Главные:

  • #3 корректировка агрегата заменяет автосумму; при разных итогах сторон каждая исключает меньший;
  • #4 правило 2 — автоматически (min_or_full, каскад 1310 → 1350 → 1370), правка seed v1 на месте;
  • #5 правило 1 остаётся ручным (OQ-193);
  • #6 API КФО в тыс. руб. (units);
  • #8 GOODWILL — отдельная строка раздела I, входит в 1100/1600 (OQ-185);
  • #13 строки расходов приводятся к −|x|; #17 бланк — по редакции на отчётную дату;
  • #24–#29 правки финального ревью: порядок каскада, округление auto/manual, односторонние агр��гаты, доля ≥ 1000 % → null,
    итоги с +1, корректировка, закрытая гудвиллом.
  • Исполнение плана: у итогов deviation_amount = null; KFO_EDIT в разделе журнала KFO; minors M-1…M-7, M-9 подняты
    до Important и исправлены.

Находки

Маркер Суть Статус
O-1 Проверка дизайна исполнителем: 8 вопросов fixed 228af4e (design #12–#19)
I-1…I-9 Финальное ревью: каскад, округление, односторонние, доля, итоги, упрощённая форма, OQ-194, статус в примерах, рулинги fixed 232f82c
M-1…M-7, M-9 Финальное ревью, подняты до Important fixed 232f82c
M-8 Описание is_threshold_base в OpenAPI двусмысленно deferred
M-10 Блок ИСТОЧНИК над kfo_result в DBML — «Аналитика: нет» deferred

Вложения — в AURORA-1546 (§8, DBML) и AURORA-1547 (контракт).

🤖 Generated with Claude Code

Closes #206. Блокеры старта AURORA-1546 (расчёт КФО) и AURORA-1547 (экран КФО), разработка с 10.11.2026. ## Что внутри - **§8 «КФО»** (`context/05-domain-rules.md`) переписан целиком по DOC-274230, DOC-259025, DOC-272613 и черновику DOC-274636: источники значений и знак расходов, агрегаты таблицы корректировок как вход, автосумма по режиму правила и каскад, корректировка вместо автосуммы, округление ячейки, итоги, гудвилл, расхождения, пороги, реквизиты, пересчёт и заморозка, предупреждения. Сквозной пример на трёх компаниях (1600 = 1700, 2100 не меняется). - §8 «Корректировка», §5 п. 1 — режим `min_or_full` для правила 2; одна функция автосуммы для таблицы корректировок и КФО. - **DBML v5.26** (`model/data-model-v5.26.dbml`, `entities-v5.26.md`): `kfo_result_line_company.client_amount`, `vgo_amount`; `kfo_result.warnings` и сводка корректировок; `audit_action.KFO_EDIT`; `elimination_mode = min_or_full`; пояснения КФО; диаграммы; ссылки на текущую версию. - **Контракт API КФО** — `dev/api-contract-kfo.md` + `dev/api-contract-kfo.openapi.yaml` (три полных примера ответа для фейка). OpenAPI генерируется `scripts/kfo_contract/gen_kfo_openapi.py` из `scripts/kfo_contract/kfo_example.py` (там же проверки правил). Контракт корректировок и `frontend-api-guide.md` — под правило 2 и ссылка на КФО. - **OQ-180…194** — развилки заказчика с вариантом, принятым на старте. - OpenSpec change `kfo-calculation-contract`: proposal, design (29 решений без обсуждения), spec delta `arm-core`, план. ## Порядок merge **Решение владельца 06.11:** сначала #203 (метрики качества, DBML v5.25), затем этот PR — v5.26 перестроить поверх v5.25 (перенести changelog и правки v5.25), затем #211. v5.25 занят PR #203 (метрики OCR). Если #203 сливается первым — перед merge этого PR влить main и перенести изменения v5.25 в v5.26 (номера не переписываем). Если этот первым — то же делает #203. ## Проверки `make check` — зелёный; `openspec validate kfo-calculation-contract --strict` — valid; OpenAPI и три примера проходят валидацию; `python3 -I scripts/kfo_contract/kfo_example.py` — все проверки. ## Rulings I made Полностью, с ценой ошибки — `openspec/changes/kfo-calculation-contract/design.md` §6, #1–#29. Главные: - #3 корректировка агрегата заменяет автосумму; при разных итогах сторон каждая исключает меньший; - #4 правило 2 — автоматически (`min_or_full`, каскад 1310 → 1350 → 1370), правка seed v1 на месте; - #5 правило 1 остаётся ручным (OQ-193); - #6 API КФО в тыс. руб. (`units`); - #8 `GOODWILL` — отдельная строка раздела I, входит в 1100/1600 (OQ-185); - #13 строки расходов приводятся к `−|x|`; #17 бланк — по редакции на отчётную дату; - #24–#29 правки финального ревью: порядок каскада, округление auto/manual, односторонние агр��гаты, доля ≥ 1000 % → null, итоги с +1, корректировка, закрытая гудвиллом. - Исполнение плана: у итогов `deviation_amount = null`; `KFO_EDIT` в разделе журнала `KFO`; minors M-1…M-7, M-9 подняты до Important и исправлены. ## Находки | Маркер | Суть | Статус | |---|---|---| | O-1 | Проверка дизайна исполнителем: 8 вопросов | fixed 228af4e (design #12–#19) | | I-1…I-9 | Финальное ревью: каскад, округление, односторонние, доля, итоги, упрощённая форма, OQ-194, статус в примерах, рулинги | fixed 232f82c | | M-1…M-7, M-9 | Финальное ревью, подняты до Important | fixed 232f82c | | M-8 | Описание `is_threshold_base` в OpenAPI двусмысленно | deferred | | M-10 | Блок ИСТОЧНИК над `kfo_result` в DBML — «Аналитика: нет» | deferred | Вложения — в AURORA-1546 (§8, DBML) и AURORA-1547 (контракт). 🤖 Generated with [Claude Code](https://claude.com/claude-code)
aep added 6 commits 2026-11-06 19:44:22 +03:00
Proposal и design: §8 «КФО», DBML v5.26, контракт API КФО под AURORA-1546/1547; ответы на вопросы проверки исполнителем.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
aep added 1 commit 2026-11-06 21:42:05 +03:00
aep added 1 commit 2026-11-06 22:14:07 +03:00
This pull request has changes conflicting with the target branch.
  • Makefile
  • context/03-architecture.md
  • context/04-data-model-guide.md
  • context/07-open-questions.md

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin feat/206-kfo-contract:feat/206-kfo-contract
git checkout feat/206-kfo-contract
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: RSHB/arm-ka-docs#207
No description provided.