Этап 4 добивка двух хвостов: settlement polarity и чистое разделение month_close / RBP в live acceptance

This commit is contained in:
2026-03-29 16:30:10 +03:00
parent f74e7b697a
commit c82ebd70b7
12 changed files with 705 additions and 19 deletions
@@ -0,0 +1,48 @@
# Stage 4 — Tail Pack: settlement polarity + month_close/RBP lane separation
## Цель
- Добить два хвоста Stage 4 без расширения доменов и без нового архитектурного слоя:
- `settlements_60_62`: снять `unresolved_supplier_customer_polarity` и `business_scope_generic_unresolved` на core-set.
- Развести acceptance по разным lane: `rbp_tail` и `month_close_indirect_costs` не должны жить в одном итоговом export.
## Что реализовано в runtime
- Усилен `DomainPolarityGuard` для settlement-кейсов:
- разрешение по доминирующим сигналам и account-prefix (60/62), чтобы шумовые лексемы не уводили в `mixed_or_unresolved`.
- В claim-bound debug добавлены поля:
- `settlement_role`
- `settlement_role_resolution_reason`
- `polarity_resolution_status`
- Усилен recovery business-scope в live-контуре:
- для settlement claims добавлен `settlement_claim_company_scope_recovery` (кроме уже существующего temporal recovery).
- В `assistant debug/log` добавлен явный экспорт settlement-полей для audit и run-артефактов.
## Tail-pack runner
- Добавлен скрипт:
- `llm_normalizer/backend/scripts/stage4TailPackFamilyIsolation.js`
- Скрипт выполняет раздельные lane-прогоны:
- `settlements_60_62` (4 кейса)
- `rbp_tail` (3 кейса)
- `month_close_indirect_costs` (3 кейса)
- И собирает обязательные артефакты:
- `run_summary.json`
- `settlement_polarity_report.md`
- `settlement_scope_resolution_report.md`
- `lane_separation_report.md`
- `family_acceptance_structure_report.md`
- `chat_export_settlements.txt`
- `chat_export_rbp.txt`
- `chat_export_month_close_lane.txt`
- `debug_payloads/`
## Команда запуска
```bash
node llm_normalizer/backend/scripts/stage4TailPackFamilyIsolation.js <run-dir> --use-mock false --prompt-version normalizer_v2_0_2
```
## Acceptance logic (внутри run_summary)
- `SETTLEMENT_POLARITY_FIXED`
- `SETTLEMENT_SCOPE_RESOLUTION_FIXED`
- `MONTH_CLOSE_RBP_LANE_SEPARATION_FIXED`
- Общий статус:
- `STAGE4_TAIL_PACK_ACCEPTED`
- или `STAGE4_TAIL_PACK_ACCEPTED_WITH_LIMITATIONS`