Этап 4 / Пакет по РБП восстановление живого контура сбора данных и доказательной базы

This commit is contained in:
2026-03-29 10:38:04 +03:00
parent 095e74ad3b
commit 133b6dca3c
83 changed files with 265742 additions and 77 deletions
@@ -0,0 +1,111 @@
# 8 — Аудит source-to-proof по 3 контрольным вопросам (2026-03-29)
Статус: COMPLETED
Этап: Stage 4 (P0-only)
## 1) Что проверялось
Главный вопрос аудита:
**Есть ли в системе данные и маршруты, достаточные для ответа на 3 контрольных вопроса, и если да — на каком узле они теряются?**
Контрольные вопросы:
1. НДС-цепочка (13/15 июля, мебель).
2. РБП-хвост на 31 июля.
3. Амортизация 31 июля (2 471,52 / 2 465,28 / 849,83).
## 2) Источники фактов (не summary-only)
Аудит выполнен на базе реальных replay-артефактов и code inspection:
- `x:\1C\NDC_1C\docs\ARCH\8_audit_artifacts\question_replay_logs\1_live_replay.txt`
- `x:\1C\NDC_1C\docs\ARCH\8_audit_artifacts\debug_payloads\*.json`
- `x:\1C\NDC_1C\docs\ARCH\8_audit_artifacts\raw_live_calls\live_call_inventory_full_3_cases.json`
- `x:\1C\NDC_1C\docs\ARCH\8_audit_artifacts\snapshot_samples\snapshot_inventory_runtime.json`
- runtime code path (`assistantService`, `assistantDataLayer`, `assistantRuntimeGuards`, `assistantClaimBoundEvidence`, `answerComposer`)
## 3) Краткий итог по 3 кейсам
| Case | Claim | Reply mode | Admissible evidence | Ключевой исход |
| --- | --- | --- | ---: | --- |
| Q1 VAT (L1) | `prove_vat_chain_completeness` | grounded-positive | 12 | positive path работает |
| Q2 RBP (L2) | `prove_rbp_tail_state` | limited | 0 | proof path не замкнут |
| Q3 FA (L3) | `prove_month_close_state` | limited | 19 | evidence есть, но eligibility блокирует |
Сводные replay-метрики:
- `live_temporal_contradiction_rate = 0`
- `live_company_scope_resolution_rate = 1`
- `live_admissible_evidence_nonzero_rate = 0.6667`
- `live_partial_coverage_default_rate = 0.6667`
## 4) Ответ по узлам A–E
### Узел A — какие данные нужны
- Карта обязательных сущностей/связок по каждому вопросу заполнена в `8A`.
- Для Q2/Q3 текущий runtime source set не дает полный object-level набор для доказательного закрытия claim.
### Узел B — что реально есть в snapshot/live
- Runtime подключен к ограниченному `2020экспорт` набору (7 JSON файлов).
- Monthly as-of corpus физически есть (`2020_monthly_company_asof_full_test`), но не подключен текущим data layer.
- Live MCP есть, но запрос broad (generic accounting register probe).
### Узел C — как реально идет маршрут
- Q1: route корректный (`store_canonical + hybrid_store_plus_live`) -> grounded-positive.
- Q2: route уходит в `store_canonical + store_canonical`, live verification path не используется.
- Q3: route включает live (`store_feature_risk + hybrid_store_plus_live`), но mapping и anchors не закрывают eligibility.
### Узел D — как live превращается/не превращается в evidence
- Q1: `fetched=24, matched=24`, admissible `12` -> live участвует как verification path.
- Q2: live call отсутствует (route-level).
- Q3: `fetched=24, matched=24`, admissible `19`, но proof блокируется на claim-anchor coverage.
### Узел E — что именно ломает ответ
- Q1: не blocker; остаточный шум admissibility (`wrong_account_scope`, `weak_source_mapping`).
- Q2: multi-break на route/source/evidence узлах.
- Q3: multi-break на entity mapping + anchor coverage + live targeting specificity.
## 5) Вердикт по каждому вопросу (требуемый формат)
### Q1 — НДС
Проблема в первую очередь:
- **не** в отсутствии данных;
- **не** в полном провале маршрута;
- в комбинации: `wrong_live_call_target` + `admissibility_reject_not_due_to_data` (residual quality).
### Q2 — РБП
Проблема в комбинации:
- `source_not_connected_to_runtime`
- `missing_source_data` (для object-level proof в активном source set)
- `wrong_route_selection`
- `evidence_not_materialized`
- `admissibility_reject_not_due_to_data`
### Q3 — Амортизация
Проблема в комбинации:
- `wrong_entity_mapping`
- `wrong_live_call_target`
- `admissibility_reject_not_due_to_data`
- `answer_layer_underuses_available_evidence` (через `claim_anchor_coverage_insufficient`)
## 6) Главный вывод аудита
**MULTI_NODE_FAILURE_CONFIRMED**
Почему:
1. Один кейс (Q1) уже может идти в grounded-positive, значит контур не сломан тотально.
2. Два кейса (Q2/Q3) ломаются в разных местах цепочки.
3. Наблюдается не один первичный дефект, а связка: source coverage + routing + mapping + evidence materialization + eligibility handoff.
## 7) Что это означает для следующей fix-wave
Без redesign Stage 5/6, в рамках Stage 4 приоритетно чинить:
1. Route и source-подключение для RBP/FA claim-path.
2. Claim-targeted live query narrowing (не generic `TOP N` probe).
3. Entity/anchor mapping для object-level month-close/FA доказательности.
4. Admissibility tuning, чтобы уменьшить reject not-due-to-data.
См. детализацию в:
- `8A` (required data map)
- `8B` (coverage inventory)
- `8C` (runtime replay matrix)
- `8D` (live->evidence chain)
- `8E` (gap register)
- `8F` (code path inventory)
@@ -0,0 +1,58 @@
# 8A — Source Requirements Map
Дата: 2026-03-29
Контрольные вопросы: Q1 НДС, Q2 РБП, Q3 Амортизация
## Q1 — НДС цепочка (13/15 июля)
| Блок доказательства | Что нужно для proof | Минимально обязательно | Что есть в runtime source set |
| --- | --- | --- | --- |
| Source docs | Поступление + реализация по тем же мебельным позициям | Да | Частично: `05_samples_RealizaciyaTovarovUslug.json`, `06_samples_PostuplenieTovarovUslug.json` |
| Invoice layer | Счет-фактура / invoice linkage | Да | Частично через `08_samples_NDS_registers.json`, `09_samples_key_fields_...json` |
| Tax/register layer | НДС регистры (покупки/продажи/предъявленный) | Да | Да: `08_samples_NDS_registers.json` |
| Book layer | Запись книги покупок/продаж | Да | Частично (по available register records) |
| Posting layer | Проводка и связка с документом | Да | Частично: snapshot + live MCP movement probe |
| Link integrity | Документ → проводка → регистр → книга | Да | Частично; подтверждается не по всем звеньям без reject |
**Минимальный набор, без которого ответ всегда гипотетический:**
1. Пара документов (receipt + sale) по одной предметной позиции.
2. НДС-связка invoice/register/book.
3. Подтвержденная posting/link связь на тот же период.
## Q2 — РБП хвост на 31 июля
| Блок доказательства | Что нужно для proof | Минимально обязательно | Что есть в runtime source set |
| --- | --- | --- | --- |
| Write-off document | Документ/операция «Списание РБП за июль» | Да | Неявно/недостаточно в подключенном наборе |
| RBP object mapping | Объект РБП + параметр списания | Да | Недостаточно в подключенном snapshot profile |
| Lifecycle | Начало/продолжение/списание РБП | Да | Недостаточно в подключенных источниках |
| End-of-period residual | Остаток РБП на конец июля | Да | Не подтверждено admissible evidence |
| Contradiction check | «нормальный остаток» vs «хвост дольше ожидаемого» | Да | Не подтверждено |
**Минимальный набор, без которого ответ всегда partial:**
1. Явный write-off документ за июль.
2. Трассировка по объекту РБП до остатка на конец месяца.
3. Признак нормы/аномалии остатка с period-closure контекстом.
## Q3 — Амортизация (2 471,52 / 2 465,28 / 849,83)
| Блок доказательства | Что нужно для proof | Минимально обязательно | Что есть в runtime source set |
| --- | --- | --- | --- |
| Depreciation document | Документ начисления амортизации за июль | Да | Частично/косвенно |
| FA object set | Полный expected набор ОС на июль | Да | Нет полного object-level набора в runtime snapshot profile |
| Per-object fact | Начисление по каждому объекту ОС | Да | Частично, с weak mapping |
| Sum reconciliation | Сверка сумм с объектами и периодом | Да | Частично, anchors по суммам есть, но claim coverage нестабильный |
| Tail/risk check | Пропущенный объект vs нормальная картина | Да | Частично, итог limited из-за `claim_anchor_coverage_insufficient` |
**Минимальный набор, без которого ответ всегда partial:**
1. Полный expected set ОС за июль.
2. Связка объект ОС → начисление → проводка.
3. Объектно-уровневая сверка сумм и пропусков.
## Cross-question mandatory core
Для всех трех вопросов обязательны:
1. Жесткий периодный anchor (July 2020) как primary basis.
2. Claim-bound required checks (не broad retrieval).
3. Admissible evidence с source refs, не только candidate signals.
4. Явная причина ограничения (какое звено не подтверждено), если proof не закрывается.
@@ -0,0 +1,49 @@
# 8B — Snapshot and Live Coverage Inventory
Дата: 2026-03-29
Источник фактов: runtime wiring + replay artifacts в `x:\1C\NDC_1C\docs\ARCH\8_audit_artifacts`
## 1) Snapshot: что реально подключено runtime
Подключение подтверждено в `assistantDataLayer.ensureData`.
| Файл | Путь | Размер (байт) | Records | Использование |
| --- | --- | ---: | ---: | --- |
| `03_snapshot_fragment_problem_cases.json` | `x:\1C\NDC_1C\docs\ARCH\2020экспорт\03_snapshot_fragment_problem_cases.json` | 302520 | 80 | problem/risk signals |
| `04_samples_SpisanieSRaschetnogoScheta.json` | `x:\1C\NDC_1C\docs\ARCH\2020экспорт\04_samples_SpisanieSRaschetnogoScheta.json` | 196178 | 27 | settlement/payment docs |
| `05_samples_RealizaciyaTovarovUslug.json` | `x:\1C\NDC_1C\docs\ARCH\2020экспорт\05_samples_RealizaciyaTovarovUslug.json` | 132032 | 5 | realization docs |
| `06_samples_PostuplenieTovarovUslug.json` | `x:\1C\NDC_1C\docs\ARCH\2020экспорт\06_samples_PostuplenieTovarovUslug.json` | 181409 | 10 | receipt docs |
| `07_samples_DocumentJournals.json` | `x:\1C\NDC_1C\docs\ARCH\2020экспорт\07_samples_DocumentJournals.json` | 292931 | 80 | document journals |
| `08_samples_NDS_registers.json` | `x:\1C\NDC_1C\docs\ARCH\2020экспорт\08_samples_NDS_registers.json` | 291547 | 80 | VAT registers |
| `09_samples_key_fields_Recorder_Ref_Supplier_Buyer_Responsible.json` | `x:\1C\NDC_1C\docs\ARCH\2020экспорт\09_samples_key_fields_Recorder_Ref_Supplier_Buyer_Responsible.json` | 511133 | 140 | recorder/ref key fields |
## 2) Snapshot: что физически существует, но не подключено в текущий runtime path
| Набор | Путь | Состояние |
| --- | --- | --- |
| Monthly as-of corpus (12 файлов) | `x:\1C\NDC_1C\docs\ARCH\2020_monthly_company_asof_full_test` | Есть, файлы `snapshot_2020-01..12_asof_full.json` (42–46 MB каждый), но не подключены `assistantDataLayer` |
| Monthly manifest | `x:\1C\NDC_1C\docs\ARCH\2020_monthly_company_asof_full_test\manifest_2020_monthly_company_asof_full.json` | Есть, показывает `entity_sets_total=2` (AccountingRegister only) |
| `2020_monthly_company_asof_full` | `x:\1C\NDC_1C\docs\ARCH\2020_monthly_company_asof_full` | Папка есть, runtime ее не читает |
## 3) Live MCP/toolkit фактическое покрытие
| Параметр | Факт |
| --- | --- |
| Runtime live endpoint | `/api/execute_query` через MCP proxy |
| Query template | Generic выборка из `РегистрБухгалтерии.Хозрасчетный` (`TOP __LIMIT__`, без claim-specific where) |
| Фильтрация по account_scope в live query | Не задана (`account_scope: []` в live cases L1/L3) |
| Роль live в текущем контуре | Overlay enrichment + post-filter через admissibility gate |
## 4) Coverage verdict по 3 вопросам
| Вопрос | Данные есть в принципе | Доступны runtime | Использованы runtime | Ключевой вывод |
| --- | --- | --- | --- | --- |
| Q1 VAT | Да (snapshot + live) | Да | Да | Positive grounding достижим, но с высоким reject шумом |
| Q2 RBP | Частично | Частично | Ограниченно | Для proof path покрытие недостаточно, кейс остается limited |
| Q3 FA amortization | Частично | Частично | Да, но нестабильно | Есть admissible evidence, но claim/object proof не замыкается |
## 5) Узел B — ответ в требуемом формате
- Q1 (НДС): данные есть и доступны; используются; узкое место — admissibility noise + generic live targeting.
- Q2 (РБП): часть данных либо не в активном source set, либо не доезжает через текущий route; runtime usage недостаточен для proof.
- Q3 (Амортизация): данные частично есть и используются, но не в форме, достаточной для object-complete proof.
@@ -0,0 +1,35 @@
# 8C — Runtime Route Replay Matrix
Дата: 2026-03-29
Replay база: `x:\1C\NDC_1C\docs\ARCH\8_audit_artifacts\question_replay_logs\1_live_replay.txt`
## Matrix (3 control questions)
| Поле | Q1 VAT (L1) | Q2 RBP (L2) | Q3 FA amortization (L3) |
| --- | --- | --- | --- |
| Raw user question | Поступление 13 июля + реализация 15 июля, полнота НДС-цепочки | Списание РБП 31 июля (в т.ч. 5 000), есть ли хвост | Амортизация 31 июля по 3 суммам, полный ли охват ОС |
| Extracted anchors (ключевые) | period `2020-07-13`, `vat_signal`, `chain_signal` | period `2020-07-31`, amount `5 000`, `rbp_signal`, `writeoff_signal` | period `2020-07-31`, amounts `2 471,52/2 465,28/849,83` |
| Claim / question type | `prove_vat_chain_completeness`, `which_chains_are_complete_vs_incomplete` | `prove_rbp_tail_state`, `what_is_it_grounded_on` | `prove_month_close_state`, `why_breaks` |
| Business scope | raw/resolved: `company_specific_accounting` | raw/resolved: `company_specific_accounting` | raw/resolved: `company_specific_accounting` |
| Temporal basis | raw `2020-07` → resolved `2020-07-13`, guard `passed` | raw `2020-07` → resolved `2020-07-31`, guard `passed` | raw `2020-07` → resolved `2020-07-31`, guard `passed` |
| Selected route | `store_canonical` + `hybrid_store_plus_live` | `store_canonical` + `store_canonical` | `store_feature_risk` + `hybrid_store_plus_live` |
| Selected source profile (semantic) | `settlements` + `vat,taxes` | `deferred_expense,period_close` | `fixed_assets,period_close` |
| Snapshot source selection | Domain gate + semantic narrowing; docs + nds registers + key fields | Canonical docs/journals/key fields, без live | Risk + hybrid domain gate; problemCases/docs/journals/key fields |
| Live call selection | Да (F2): `execute_query`, fetched 24, matched 24 | Нет (оба фрагмента canonical) | Да (F2): `execute_query`, fetched 24, matched 24 |
| Retrieved raw entities (факт) | Документы поступления/реализации/списания | Нет material items в финальном normalized result | Преимущественно `NDFL` регистры + журналы + часть документов |
| Candidate evidence total | 30 | 12 | 35 |
| Admissible evidence | 12 | 0 | 19 |
| Eligibility | `grounded_allowed` | `limited_or_insufficient_evidence` | `limited_or_insufficient_evidence` |
| Final answer mode | `factual_with_explanation` / `grounded_positive` | `partial_coverage` / `limited_or_insufficient_evidence` | `partial_coverage` / `limited_or_insufficient_evidence` |
## Дополнительные наблюдения по маршруту
1. Q1: route корректный для chain-case, positive path сработал, но reject шум высокий (`weak_source_mapping`, `wrong_account_scope`).
2. Q2: route не включает live claim-bound путь; фактически pipeline закрывается на canonical snapshot и обнуляется в admissibility.
3. Q3: route включает live, но entity-level mapping уходит в нерелевантные регистры; claim anchors не покрыты, eligibility блокирует grounded.
## Узел C — требуемый ответ
- Есть случаи, где route правильный, но evidence не дожимается до полного proof (Q3).
- Есть случай, где route в текущей конфигурации не выводит в verification path (Q2).
- Есть случай, где route+source дают grounded-positive (Q1), но с остаточным качественным шумом по admissibility.
@@ -0,0 +1,47 @@
# 8D — Live Call to Evidence Matrix
Дата: 2026-03-29
Источник:
- `x:\1C\NDC_1C\docs\ARCH\8_audit_artifacts\raw_live_calls\live_mcp_to_evidence_handoff.json`
- `x:\1C\NDC_1C\docs\ARCH\8_audit_artifacts\evidence_conversion_traces\L*_evidence_trace.json`
## Матрица live -> evidence
| Case | Live call | Method | Query subject | Fetched | Matched | Returned | Candidate evidence | Admissible evidence | Final mode |
| --- | --- | --- | --- | ---: | ---: | ---: | ---: | ---: | --- |
| Q1 VAT (L1) | Yes | `execute_query` | `vat_chain_conflict` | 24 | 24 | 12 | 30 | 12 | `grounded_positive` |
| Q2 RBP (L2) | No | — | — | 0 | 0 | 0 | 12 | 0 | `limited_or_insufficient_evidence` |
| Q3 FA (L3) | Yes | `execute_query` | `fixed_asset_card_mismatch` | 24 | 24 | 12 | 35 | 19 | `limited_or_insufficient_evidence` |
## Evidence conversion breakdown
### Q1 VAT
- `raw source result`: live rows + snapshot chain candidates.
- `candidate -> admissible`: `30 -> 12`.
- `reject reasons`: `wrong_account_scope=12`, `weak_source_mapping=14`.
- `роль live`: verification path (не purely decorative), потому что кейс вышел в grounded-positive.
### Q2 RBP
- `raw source result`: live route не выбран (оба фрагмента `store_canonical`).
- `candidate -> admissible`: `12 -> 0`.
- `reject reasons`: `wrong_period=36`, `weak_source_mapping=12`.
- `роль live`: отсутствует в этом кейсе из-за route selection, не из-за MCP downtime.
### Q3 FA
- `raw source result`: live rows есть, плюс snapshot risk/hybrid источники.
- `candidate -> admissible`: `35 -> 19`.
- `reject reasons`: `wrong_domain=8`, `wrong_account_scope=8`, `weak_source_mapping=16`, `future_dated_or_out_of_window=8`.
- `роль live`: частично verification, но admissible evidence не конвертируется в grounded из-за claim-anchor gap.
## Узел D — ответы в требуемом формате
1. Был ли live декоративным enrichment или verification path?
- Q1: verification path.
- Q2: live path не был выбран.
- Q3: частично verification, но недожатый до proof.
2. Если строки пришли, почему не стали admissible evidence полностью?
- Из-за `wrong_account_scope`, `wrong_domain`, `weak_source_mapping`, `future_dated_or_out_of_window`.
3. Если строки не пришли (или call отсутствует), где проблема?
- В Q2 проблема в route selection + source profile, а не в технической недоступности MCP.
@@ -0,0 +1,41 @@
# 8E — Source-to-Proof Gap Register
Дата: 2026-03-29
## Severity scale
- `blocker`: без исправления невозможно закрыть proof path по целевому вопросу.
- `high`: сильно влияет на grounded eligibility и стабильность.
- `medium`: не блокирует всегда, но создает деградации/шум.
## Gap table
| Gap ID | Вопрос | Категория | Severity | Где рвется | Доказательство |
| --- | --- | --- | --- | --- | --- |
| GAP-8E-01 | Q2, Q3 | `source_not_connected_to_runtime` | blocker | Runtime читает ограниченный `2020экспорт`; monthly as-of corpus не включен в data layer | `8B`, `8F`, `snapshot_inventory_runtime.json` |
| GAP-8E-02 | Q2 | `missing_source_data` | high | Для RBP не подтверждаются object-level writeoff/residual звенья в активном source set | `L2_evidence_trace.json`, `8A` |
| GAP-8E-03 | Q2 | `wrong_route_selection` | high | Оба фрагмента routed в `store_canonical`, live verification path не включается | `runtime_route_snapshot.json`, `8C` |
| GAP-8E-04 | Q3 | `wrong_entity_mapping` | high | FA claim тянет нерелевантные сущности (NDFL-регистры) как опору | `L3_evidence_trace.json`, `8C` |
| GAP-8E-05 | Q1, Q3 | `wrong_live_call_target` | high | Live `execute_query` идет без claim/account фильтра (`account_scope=[]`) | `live_call_inventory_full_3_cases.json`, `8F` |
| GAP-8E-06 | Q2 | `evidence_not_materialized` | high | `candidate_evidence_total=12`, `admissible_evidence_count=0` | `L2_evidence_trace.json`, `8D` |
| GAP-8E-07 | Q2, Q3 | `admissibility_reject_not_due_to_data` | high | Существенный reject из-за gate mismatch (`wrong_period`, `wrong_domain`, `wrong_account_scope`, `weak_source_mapping`) | `admissibility_reject_breakdown_live.json` |
| GAP-8E-08 | Q3 | `answer_layer_underuses_available_evidence` | medium | При `admissible_evidence_count=19` ответ остается limited из-за `claim_anchor_coverage_insufficient` | `L3_evidence_trace.json`, `8C` |
## Question-specific final failure map
### Q1 VAT
- Что надо доказать: полнота НДС-цепочки document -> posting -> tax/register -> book.
- Что найдено: admissible evidence есть (`12`), кейс grounded-positive.
- Где остается риск: высокий reject шум и generic live target.
- Типы разрыва: `wrong_live_call_target`, `admissibility_reject_not_due_to_data` (residual).
### Q2 RBP
- Что надо доказать: наличие/отсутствие хвоста РБП на конец июля по объектам.
- Что найдено: targeted checks `not_found`, admissible `0`.
- Где рвется: route + source coverage + evidence materialization.
- Типы разрыва: `source_not_connected_to_runtime`, `missing_source_data`, `wrong_route_selection`, `evidence_not_materialized`, `admissibility_reject_not_due_to_data`.
### Q3 Амортизация
- Что надо доказать: полный object-level охват амортизации за июль.
- Что найдено: admissible `19`, но eligibility blocked (`claim_anchor_coverage_insufficient`).
- Где рвется: entity mapping + claim anchor coverage + live target specificity.
- Типы разрыва: `wrong_entity_mapping`, `wrong_live_call_target`, `admissibility_reject_not_due_to_data`, `answer_layer_underuses_available_evidence`.
@@ -0,0 +1,42 @@
# 8F — Code Path Inventory
Дата: 2026-03-29
Scope: Stage 4 P0 source-to-proof аудит по 3 контрольным вопросам (VAT / RBP / FA)
## 1) Основной runtime path (end-to-end)
| Узел | Файл | Ключевые функции / точки | Роль в source-to-proof |
| --- | --- | --- | --- |
| Normalization | `x:\1C\NDC_1C\llm_normalizer\backend\src\services\normalizerService.ts` | `inferTimeScope` (360), `business_scope` extraction (428, 490), `normalize` (1036) | Разбивка вопроса, базовые anchors, route hint summary input. |
| Route decision | `x:\1C\NDC_1C\llm_normalizer\backend\src\services\routeHintAdapter.ts` | deterministic v2 summary (422, 458), route/no-route status (327-377) | Детальный выбор маршрута по fragment-ам. |
| Orchestration | `x:\1C\NDC_1C\llm_normalizer\backend\src\services\assistantService.ts` | `AssistantService` (1338), вызовы guard/claim/data/composer (1397-1536), debug export (1588-1734) | Склейка всех стадий: normalize → route → fetch → evidence gates → answer mode. |
| Snapshot/Live fetch | `x:\1C\NDC_1C\llm_normalizer\backend\src\services\assistantDataLayer.ts` | `executeRouteRuntime` (2522), `executeHybrid` (2893), `executeCanonical` (3683), `executeRisk` (3352), `ensureData` (2856), MCP query template (140, 2591-2592) | Реальный data access к snapshot + live MCP overlay. |
| Claim anchors | `x:\1C\NDC_1C\llm_normalizer\backend\src\services\assistantClaimBoundEvidence.ts` | `resolveClaimBoundAnchors` (201), `requiredChecksByClaim` (305), `applyTargetedEvidenceAcquisition` (540) | Claim-type и required checks для P0 цепочек доказательства. |
| Temporal/polarity/admissibility | `x:\1C\NDC_1C\llm_normalizer\backend\src\services\assistantRuntimeGuards.ts` | `resolveTemporalGuard` (633), `resolveDomainPolarityGuard` (754), `applyDomainPolarityGuardToRetrievalResults` (934), `applyEvidenceAdmissibilityGate` (1273), `evaluateGroundedAnswerEligibility` (1421) | Где candidate evidence отсекается и где решается eligibility. |
| Evidence normalization | `x:\1C\NDC_1C\llm_normalizer\backend\src\services\retrievalResultNormalizer.ts` | `normalizeEvidenceItems` (457), `normalizeRetrievalResult` (508) | Перевод raw fetch в unified evidence/candidate structure. |
| Final answer mode | `x:\1C\NDC_1C\llm_normalizer\backend\src\services\answerComposer.ts` | `composeAssistantAnswer` (4451), `partial_coverage` ветки (1833, 4531, 4557), `coverage_partial_or_limited` (2908, 4368) | Финальное решение grounded vs partial и what/why/limitations слой. |
## 2) Source inventory wiring (факт подключения)
`assistantDataLayer.ensureData` (2856+) подключает только:
- `03_snapshot_fragment_problem_cases.json`
- `04_samples_SpisanieSRaschetnogoScheta.json`
- `05_samples_RealizaciyaTovarovUslug.json`
- `06_samples_PostuplenieTovarovUslug.json`
- `07_samples_DocumentJournals.json`
- `08_samples_NDS_registers.json`
- `09_samples_key_fields_Recorder_Ref_Supplier_Buyer_Responsible.json`
Root для этих файлов: `ARCH_EXPORT_2020_DIR` из `config.ts` (`x:\1C\NDC_1C\docs\ARCH\2020экспорт`).
## 3) Live MCP wiring (факт вызова)
- В `assistantDataLayer.ts` live overlay строится через `/api/execute_query`.
- Текущий live query template (`MCP_LIVE_MOVEMENTS_QUERY_TEMPLATE`, строка 140+) — generic запрос в `РегистрБухгалтерии.Хозрасчетный` с `TOP __LIMIT__`, без claim-specific фильтров по document/object/account.
- Значит live path есть, но он broad и требует сильного post-filter/admissibility, иначе evidence не доезжает до proof.
## 4) Где формально рвется source-to-proof
- Q2 (RBP): разрыв раньше live path (route в canonical, live call не выбран), далее admissibility обнуляет evidence.
- Q3 (FA): source/evidence есть, но claim anchor coverage и entity mapping не дотягивают до eligibility.
- Q1 (VAT): positive path работает, но с высоким объемом reject (`weak_source_mapping`, `wrong_account_scope`).
@@ -0,0 +1,44 @@
# Chat Export (3 Control Questions)
Источник replay: `x:\1C\NDC_1C\docs\ARCH\8_audit_artifacts\question_replay_logs\1_live_replay.txt`
## Q1 — НДС (L1)
**User question**
13 июля проведено поступление товаров, а 15 июля — реализация этих же мебельных позиций. НДС-цепочка по этим движениям у нас полная или где-то есть выпадение между документом, проводкой и налоговым отражением?
**Runtime outcome**
- `reply_type`: `factual_with_explanation`
- `claim_type`: `prove_vat_chain_completeness`
- `grounding_mode`: `grounded_positive`
- `admissible_evidence_count`: `12`
- `eligibility_outcome`: `grounded_allowed`
- `reason_codes`: none
## Q2 — РБП (L2)
**User question**
31 июля прошло «Списание РБП за Июль 2020 г.», в том числе на 5 000 и ещё несколько сумм. Есть ли в базе признаки, что часть РБП к концу июля всё ещё живёт дольше ожидаемого?
**Runtime outcome**
- `reply_type`: `partial_coverage`
- `claim_type`: `prove_rbp_tail_state`
- `grounding_mode`: `limited_or_insufficient_evidence`
- `admissible_evidence_count`: `0`
- `eligibility_outcome`: `limited_or_insufficient_evidence`
- `reason_codes`: `admissible_evidence_count_zero`, `targeted_evidence_hit_rate_zero`
## Q3 — Амортизация (L3)
**User question**
31 июля начислена амортизация тремя суммами — 2 471,52, 2 465,28 и 849,83. Это похоже на полное начисление по всем нужным объектам за июль или есть риск, что какой-то объект ОС в июле не попал в амортизацию?
**Runtime outcome**
- `reply_type`: `partial_coverage`
- `claim_type`: `prove_month_close_state`
- `grounding_mode`: `limited_or_insufficient_evidence`
- `admissible_evidence_count`: `19`
- `eligibility_outcome`: `limited_or_insufficient_evidence`
- `reason_codes`: `claim_anchor_coverage_insufficient`
## Быстрый итог по 3 вопросам
- 1 кейс вышел в `grounded_positive`.
- 2 кейса остались в `partial_coverage`.
- Основные причины ограничения: `admissible_evidence_count_zero` (Q2) и `claim_anchor_coverage_insufficient` (Q3).
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,127 @@
{
"case_id": "L1",
"label": "vat_chain_furniture_13_15_july",
"reply_type": "factual_with_explanation",
"question_type_class": "which_chains_are_complete_vs_incomplete",
"claim_type": "prove_vat_chain_completeness",
"claim_anchor_audit": {
"required_anchors": [
"period",
"document_types",
"vat_signal",
"chain_signal"
],
"missing_anchors": [
"document_types"
],
"claim_anchor_resolution_rate": 0.75,
"primary_period": {
"from": "2020-07-13",
"to": "2020-07-13",
"granularity": "day"
},
"allowed_context_window": {
"from": "2019-07-14",
"to": "2021-07-13",
"granularity": "month"
}
},
"targeted_evidence_acquisition": {
"required_checks": [
"source_document_found",
"invoice_found",
"tax_register_entry_found",
"book_entry_found",
"chain_linkage_status"
],
"check_status": {
"source_document_found": "found",
"invoice_found": "found",
"tax_register_entry_found": "found",
"book_entry_found": "found",
"chain_linkage_status": "found"
},
"targeted_item_hits": 20,
"targeted_evidence_hits": 30,
"targeted_evidence_hit_rate": 1
},
"evidence_gate": {
"candidate_evidence_total": 30,
"admissible_evidence_count": 12,
"rejected_evidence_count": 18,
"reject_breakdown": {
"wrong_period": 0,
"wrong_domain": 0,
"wrong_account_scope": 12,
"weak_source_mapping": 14,
"zero_live_match": 0,
"future_dated_or_out_of_window": 0
},
"category_breakdown": {
"hard_evidence": 4,
"supporting_signal": 8,
"inadmissible_noise": 18
}
},
"eligibility": {
"eligible": true,
"grounding_mode": "grounded_positive",
"outcome": "grounded_allowed",
"reason_codes": [
],
"temporal_passed": true,
"business_scope_passed": true,
"claim_anchors_passed": true,
"admissible_evidence_count": 12
},
"temporal": {
"raw_time_scope": "2020-07",
"resolved_time_anchor": "2020-07-13",
"effective_primary_period": {
"from": "2020-07-13",
"to": "2020-07-13",
"granularity": "day"
},
"temporal_alignment_status": "corrected",
"temporal_guard_basis": "resolved_primary_period",
"temporal_guard_outcome": "passed",
"eligibility_time_basis": "resolved_primary_period"
},
"business_scope": {
"raw": [
"company_specific_accounting"
],
"resolved": [
"company_specific_accounting"
],
"company_scope_resolution_reason": [
"temporal_claim_bound_company_scope_recovery"
]
},
"numeric_anchor_cleanup": {
"raw_numeric_tokens": [
"13",
"15"
],
"classified_numeric_tokens": [
{
"token": "13",
"classification": "account_token"
},
{
"token": "15",
"classification": "other_numeric"
}
],
"rejected_as_non_accounts": [
"15"
],
"resolved_account_anchors": [
"13"
],
"normalized_primary_accounts": [
null
]
}
}
@@ -0,0 +1,121 @@
{
"case_id": "L2",
"label": "rbp_tail_31_july_5000",
"reply_type": "partial_coverage",
"question_type_class": "what_is_it_grounded_on",
"claim_type": "prove_rbp_tail_state",
"claim_anchor_audit": {
"required_anchors": [
"period",
"rbp_signal",
"writeoff_signal"
],
"missing_anchors": [
],
"claim_anchor_resolution_rate": 1,
"primary_period": {
"from": "2020-07-31",
"to": "2020-07-31",
"granularity": "day"
},
"allowed_context_window": {
"from": "2019-08-01",
"to": "2021-07-31",
"granularity": "month"
}
},
"targeted_evidence_acquisition": {
"required_checks": [
"rbp_writeoff_lifecycle_confirmed",
"residual_tail_found",
"close_contradiction_or_normal_residual"
],
"check_status": {
"rbp_writeoff_lifecycle_confirmed": "not_found",
"residual_tail_found": "not_found",
"close_contradiction_or_normal_residual": "not_found"
},
"targeted_item_hits": 0,
"targeted_evidence_hits": 0,
"targeted_evidence_hit_rate": 0
},
"evidence_gate": {
"candidate_evidence_total": 12,
"admissible_evidence_count": 0,
"rejected_evidence_count": 12,
"reject_breakdown": {
"wrong_period": 36,
"wrong_domain": 0,
"wrong_account_scope": 0,
"weak_source_mapping": 12,
"zero_live_match": 0,
"future_dated_or_out_of_window": 0
},
"category_breakdown": {
"hard_evidence": 0,
"supporting_signal": 0,
"inadmissible_noise": 12
}
},
"eligibility": {
"eligible": false,
"grounding_mode": "limited_or_insufficient_evidence",
"outcome": "limited_or_insufficient_evidence",
"reason_codes": [
"admissible_evidence_count_zero",
"targeted_evidence_hit_rate_zero"
],
"temporal_passed": true,
"business_scope_passed": true,
"claim_anchors_passed": true,
"admissible_evidence_count": 0
},
"temporal": {
"raw_time_scope": "2020-07",
"resolved_time_anchor": "2020-07-31",
"effective_primary_period": {
"from": "2020-07-31",
"to": "2020-07-31",
"granularity": "day"
},
"temporal_alignment_status": "corrected",
"temporal_guard_basis": "resolved_primary_period",
"temporal_guard_outcome": "passed",
"eligibility_time_basis": "resolved_primary_period"
},
"business_scope": {
"raw": [
"company_specific_accounting"
],
"resolved": [
"company_specific_accounting"
],
"company_scope_resolution_reason": [
"temporal_claim_bound_company_scope_recovery"
]
},
"numeric_anchor_cleanup": {
"raw_numeric_tokens": [
"31",
"2020",
"5",
"000"
],
"classified_numeric_tokens": [
{
"token": "31",
"classification": "other_numeric"
}
],
"rejected_as_non_accounts": [
"31"
],
"resolved_account_anchors": [
],
"normalized_primary_accounts": [
null
]
}
}
@@ -0,0 +1,137 @@
{
"case_id": "L3",
"label": "fa_amortization_2471_2465_849",
"reply_type": "partial_coverage",
"question_type_class": "why_breaks",
"claim_type": "prove_month_close_state",
"claim_anchor_audit": {
"required_anchors": [
"period",
"close_signal",
"cost_scope"
],
"missing_anchors": [
"close_signal",
"cost_scope"
],
"claim_anchor_resolution_rate": 0.3333,
"primary_period": {
"from": "2020-07-31",
"to": "2020-07-31",
"granularity": "day"
},
"allowed_context_window": {
"from": "2019-08-01",
"to": "2021-07-31",
"granularity": "month"
}
},
"targeted_evidence_acquisition": {
"required_checks": [
"close_operation_found",
"distribution_step_found",
"residual_tail_found"
],
"check_status": {
"close_operation_found": "found",
"distribution_step_found": "found",
"residual_tail_found": "found"
},
"targeted_item_hits": 23,
"targeted_evidence_hits": 35,
"targeted_evidence_hit_rate": 1
},
"evidence_gate": {
"candidate_evidence_total": 35,
"admissible_evidence_count": 19,
"rejected_evidence_count": 16,
"reject_breakdown": {
"wrong_period": 0,
"wrong_domain": 8,
"wrong_account_scope": 8,
"weak_source_mapping": 16,
"zero_live_match": 0,
"future_dated_or_out_of_window": 8
},
"category_breakdown": {
"hard_evidence": 8,
"supporting_signal": 11,
"inadmissible_noise": 16
}
},
"eligibility": {
"eligible": false,
"grounding_mode": "limited_or_insufficient_evidence",
"outcome": "limited_or_insufficient_evidence",
"reason_codes": [
"claim_anchor_coverage_insufficient"
],
"temporal_passed": true,
"business_scope_passed": true,
"claim_anchors_passed": false,
"admissible_evidence_count": 19
},
"temporal": {
"raw_time_scope": "2020-07",
"resolved_time_anchor": "2020-07-31",
"effective_primary_period": {
"from": "2020-07-31",
"to": "2020-07-31",
"granularity": "day"
},
"temporal_alignment_status": "corrected",
"temporal_guard_basis": "resolved_primary_period",
"temporal_guard_outcome": "passed",
"eligibility_time_basis": "resolved_primary_period"
},
"business_scope": {
"raw": [
"company_specific_accounting"
],
"resolved": [
"company_specific_accounting"
],
"company_scope_resolution_reason": [
"temporal_claim_bound_company_scope_recovery"
]
},
"numeric_anchor_cleanup": {
"raw_numeric_tokens": [
"31",
"2",
"471,52",
"465,28",
"849,83"
],
"classified_numeric_tokens": [
{
"token": "31",
"classification": "other_numeric"
},
{
"token": "52",
"classification": "amount_token"
},
{
"token": "28",
"classification": "amount_token"
},
{
"token": "83",
"classification": "amount_token"
}
],
"rejected_as_non_accounts": [
"31",
"52",
"28",
"83"
],
"resolved_account_anchors": [
],
"normalized_primary_accounts": [
null
]
}
}
@@ -0,0 +1,49 @@
{
"generated_at": "2026-03-29T05:48:19.981Z",
"aggregate": {
"wrong_period": 36,
"wrong_domain": 8,
"wrong_account_scope": 20,
"weak_source_mapping": 42,
"zero_live_match": 0,
"future_dated_or_out_of_window": 8
},
"cases": [
{
"case_id": "L1",
"label": "vat_chain_furniture_13_15_july",
"reject_breakdown": {
"wrong_period": 0,
"wrong_domain": 0,
"wrong_account_scope": 12,
"weak_source_mapping": 14,
"zero_live_match": 0,
"future_dated_or_out_of_window": 0
}
},
{
"case_id": "L2",
"label": "rbp_tail_31_july_5000",
"reject_breakdown": {
"wrong_period": 36,
"wrong_domain": 0,
"wrong_account_scope": 0,
"weak_source_mapping": 12,
"zero_live_match": 0,
"future_dated_or_out_of_window": 0
}
},
{
"case_id": "L3",
"label": "fa_amortization_2471_2465_849",
"reject_breakdown": {
"wrong_period": 0,
"wrong_domain": 8,
"wrong_account_scope": 8,
"weak_source_mapping": 16,
"zero_live_match": 0,
"future_dated_or_out_of_window": 8
}
}
]
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,7 @@
# Live Case Matrix
| Case | Label | Reply | Claim Type | Admissible Evidence | Grounding Mode | Scope | Temporal |
| --- | --- | --- | --- | ---: | --- | --- | --- |
| L1 | vat_chain_furniture_13_15_july | factual_with_explanation | prove_vat_chain_completeness | 12 | grounded_positive | company_specific_accounting | passed |
| L2 | rbp_tail_31_july_5000 | partial_coverage | prove_rbp_tail_state | 0 | limited_or_insufficient_evidence | company_specific_accounting | passed |
| L3 | fa_amortization_2471_2465_849 | partial_coverage | prove_month_close_state | 19 | limited_or_insufficient_evidence | company_specific_accounting | passed |
@@ -0,0 +1,23 @@
# Live Replay Report (Wave 19.2)
## Source
- Source of truth replayed from: `X:\1C\NDC_1C\llm_normalizer\docs\runs\2026-03-29_Stage_04_Wave_19_1_Live_Alignment_Fix_Claim_Bound_Runtime\1.txt`
- Replayed exactly 3 user turns from the original export.
- Runtime path: MCP ON, useMock=true.
## Metrics
- live_temporal_contradiction_rate: 0
- live_company_scope_resolution_rate: 1
- live_admissible_evidence_nonzero_rate: 0.6667
- live_partial_coverage_default_rate: 0.6667
- baseline_partial_coverage_default_rate: 1
- live_claim_path_completion_rate: 0.6667
- live_false_grounded_answer_rate: 0
## Verdict
- LIVE_TEMPORAL_ALIGNMENT_FIXED: FIXED
- LIVE_COMPANY_SCOPE_FIXED: FIXED
- LIVE_EVIDENCE_PATH_FIXED: FIXED
- LIVE_PARTIAL_COVERAGE_DEFAULT_REDUCED: REDUCED
- Overall: WAVE19_2_ACCEPTED
@@ -0,0 +1,6 @@
{
"generated_at": "2026-03-29T09:22:59",
"cases": [
]
}
@@ -0,0 +1,36 @@
{
"run_id": "2026-03-29_Stage_04_Wave_19_2_Live_Runtime_Fix_Replay_1txt",
"stage": "Stage_04",
"wave": "Wave_19_2",
"scope": "live_runtime_fix_by_replay_1txt",
"source_of_truth": "X:\\1C\\NDC_1C\\llm_normalizer\\docs\\runs\\2026-03-29_Stage_04_Wave_19_1_Live_Alignment_Fix_Claim_Bound_Runtime\\1.txt",
"execution": {
"replay_mode": "exact_questions_from_1_txt",
"runtime_path": "assistant_message_with_mcp_runtime_on",
"normalizer_mode": "useMock=true",
"session_id": "asst-wave19_2-1774763298275"
},
"thresholds": {
"live_temporal_contradiction_rate": 0,
"live_company_scope_resolution_rate": 1,
"live_false_grounded_answer_rate": 0,
"live_admissible_evidence_nonzero_min_cases": 2
},
"metrics": {
"case_count": 3,
"baseline_partial_coverage_default_rate": 1,
"live_temporal_contradiction_rate": 0,
"live_company_scope_resolution_rate": 1,
"live_admissible_evidence_nonzero_rate": 0.6667,
"live_partial_coverage_default_rate": 0.6667,
"live_claim_path_completion_rate": 0.6667,
"live_false_grounded_answer_rate": 0
},
"verdicts": {
"LIVE_TEMPORAL_ALIGNMENT_FIXED": "FIXED",
"LIVE_COMPANY_SCOPE_FIXED": "FIXED",
"LIVE_EVIDENCE_PATH_FIXED": "FIXED",
"LIVE_PARTIAL_COVERAGE_DEFAULT_REDUCED": "REDUCED",
"overall_status": "WAVE19_2_ACCEPTED"
}
}
@@ -0,0 +1,38 @@
[
{
"case_id": "L1",
"label": "vat_chain_furniture_13_15_july",
"claim_type": "prove_vat_chain_completeness",
"routes": "store_canonical -\u003e hybrid_store_plus_live",
"business_scope_resolved": "company_specific_accounting",
"resolved_time_anchor": "2020-07-13",
"temporal_guard_outcome": "passed",
"admissible_evidence_count": 12,
"grounding_mode": "grounded_positive",
"reply_type": "factual_with_explanation"
},
{
"case_id": "L2",
"label": "rbp_tail_31_july_5000",
"claim_type": "prove_rbp_tail_state",
"routes": "store_canonical -\u003e store_canonical",
"business_scope_resolved": "company_specific_accounting",
"resolved_time_anchor": "2020-07-31",
"temporal_guard_outcome": "passed",
"admissible_evidence_count": 0,
"grounding_mode": "limited_or_insufficient_evidence",
"reply_type": "partial_coverage"
},
{
"case_id": "L3",
"label": "fa_amortization_2471_2465_849",
"claim_type": "prove_month_close_state",
"routes": "store_feature_risk -\u003e hybrid_store_plus_live",
"business_scope_resolved": "company_specific_accounting",
"resolved_time_anchor": "2020-07-31",
"temporal_guard_outcome": "passed",
"admissible_evidence_count": 19,
"grounding_mode": "limited_or_insufficient_evidence",
"reply_type": "partial_coverage"
}
]
@@ -0,0 +1,36 @@
[
{
"case_id": "L1",
"label": "vat_chain_furniture_13_15_july",
"claim_type": "prove_vat_chain_completeness",
"method": "execute_query",
"route": "hybrid_store_plus_live",
"query_subject": "vat_chain_conflict",
"fetched_rows": 24,
"returned_rows": 12,
"matched_rows": 24,
"account_scope": "",
"status": "ok",
"admissible_evidence_count": 12,
"used_for_grounding": true,
"eligibility_outcome": "grounded_allowed",
"eligibility_mode": "grounded_positive"
},
{
"case_id": "L3",
"label": "fa_amortization_2471_2465_849",
"claim_type": "prove_month_close_state",
"method": "execute_query",
"route": "hybrid_store_plus_live",
"query_subject": "fixed_asset_card_mismatch",
"fetched_rows": 24,
"returned_rows": 12,
"matched_rows": 24,
"account_scope": "",
"status": "ok",
"admissible_evidence_count": 19,
"used_for_grounding": true,
"eligibility_outcome": "limited_or_insufficient_evidence",
"eligibility_mode": "limited_or_insufficient_evidence"
}
]
@@ -0,0 +1,62 @@
[
{
"case_id": "L1",
"label": "vat_chain_furniture_13_15_july",
"claim_type": "prove_vat_chain_completeness",
"call_present": true,
"method": "execute_query",
"route": "hybrid_store_plus_live",
"args_summary": null,
"query_subject": "vat_chain_conflict",
"fetched_rows": 24,
"returned_rows": 12,
"matched_rows": 24,
"account_scope": "",
"used_for_admissible_evidence": true,
"rejection_or_block_reason": "n/a",
"admissible_evidence_count": 12,
"eligibility_outcome": "grounded_allowed",
"eligibility_mode": "grounded_positive",
"eligibility_reason_codes": ""
},
{
"case_id": "L2",
"label": "rbp_tail_31_july_5000",
"claim_type": "prove_rbp_tail_state",
"call_present": false,
"method": null,
"route": null,
"args_summary": null,
"query_subject": null,
"fetched_rows": 0,
"returned_rows": 0,
"matched_rows": 0,
"account_scope": "",
"used_for_admissible_evidence": false,
"rejection_or_block_reason": "no_live_call_selected_for_case",
"admissible_evidence_count": 0,
"eligibility_outcome": "limited_or_insufficient_evidence",
"eligibility_mode": "limited_or_insufficient_evidence",
"eligibility_reason_codes": "admissible_evidence_count_zero,targeted_evidence_hit_rate_zero"
},
{
"case_id": "L3",
"label": "fa_amortization_2471_2465_849",
"claim_type": "prove_month_close_state",
"call_present": true,
"method": "execute_query",
"route": "hybrid_store_plus_live",
"args_summary": null,
"query_subject": "fixed_asset_card_mismatch",
"fetched_rows": 24,
"returned_rows": 12,
"matched_rows": 24,
"account_scope": "",
"used_for_admissible_evidence": true,
"rejection_or_block_reason": "n/a",
"admissible_evidence_count": 19,
"eligibility_outcome": "limited_or_insufficient_evidence",
"eligibility_mode": "limited_or_insufficient_evidence",
"eligibility_reason_codes": "claim_anchor_coverage_insufficient"
}
]
@@ -0,0 +1,78 @@
{
"generated_at": "2026-03-29T05:48:19.981Z",
"cases": [
{
"case_id": "L1",
"label": "vat_chain_furniture_13_15_july",
"claim_type": "prove_vat_chain_completeness",
"admissible_evidence_count": 12,
"live_calls": [
{
"fragment_id": "F2",
"route": "hybrid_store_plus_live",
"method": "execute_query",
"args_summary": null,
"query_subject": "vat_chain_conflict",
"account_scope": [],
"fetched_rows": 24,
"returned_rows": 12,
"matched_rows": 24,
"status": "ok"
}
],
"claim_targeted_hit_rate": 1,
"eligibility": {
"eligible": true,
"grounding_mode": "grounded_positive",
"outcome": "grounded_allowed",
"reason_codes": []
}
},
{
"case_id": "L2",
"label": "rbp_tail_31_july_5000",
"claim_type": "prove_rbp_tail_state",
"admissible_evidence_count": 0,
"live_calls": [],
"claim_targeted_hit_rate": 0,
"eligibility": {
"eligible": false,
"grounding_mode": "limited_or_insufficient_evidence",
"outcome": "limited_or_insufficient_evidence",
"reason_codes": [
"admissible_evidence_count_zero",
"targeted_evidence_hit_rate_zero"
]
}
},
{
"case_id": "L3",
"label": "fa_amortization_2471_2465_849",
"claim_type": "prove_month_close_state",
"admissible_evidence_count": 19,
"live_calls": [
{
"fragment_id": "F2",
"route": "hybrid_store_plus_live",
"method": "execute_query",
"args_summary": null,
"query_subject": "fixed_asset_card_mismatch",
"account_scope": [],
"fetched_rows": 24,
"returned_rows": 12,
"matched_rows": 24,
"status": "ok"
}
],
"claim_targeted_hit_rate": 1,
"eligibility": {
"eligible": false,
"grounding_mode": "limited_or_insufficient_evidence",
"outcome": "limited_or_insufficient_evidence",
"reason_codes": [
"claim_anchor_coverage_insufficient"
]
}
}
]
}
@@ -0,0 +1,26 @@
# 2020 экспорт: состав выгрузки
Папка собрана автоматически для ручного анализа текущего состояния.
## Файлы
1. `01_ontology_mapping_layer.md` — текущая онтология/мэппинг и метрики среза.
2. `02_canonical_relation_rules.md` — правила построения canonical relations.
3. `03_snapshot_fragment_problem_cases.json` — проблемный фрагмент snapshot июня 2020.
4. `04_samples_SpisanieSRaschetnogoScheta.json` — реальные записи по `СписаниеСРасчетногоСчета`.
5. `05_samples_RealizaciyaTovarovUslug.json` — реальные записи по `РеализацияТоваровУслуг`.
6. `06_samples_PostuplenieTovarovUslug.json` — реальные записи по `ПоступлениеТоваровУслуг`.
7. `07_samples_DocumentJournals.json` — реальные записи по журналам документов.
8. `08_samples_NDS_registers.json` — реальные записи по НДС-регистрам.
9. `09_samples_key_fields_Recorder_Ref_Supplier_Buyer_Responsible.json` — записи с ключевыми полями.
## Ключевые поля: фактическая встречаемость в snapshot
| field | count |
| --- | --- |
| Ответственный_Key | 187 |
| Ref | 168 |
| Recorder | 147 |
| Ref_Key | 93 |
| Поставщик_Key | 78 |
| Покупатель_Key | 46 |
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,112 @@
{
"status": "success",
"snapshot_mode": "cumulative_asof",
"year": 2020,
"service_root": "http://localhost/buh_test/odata/standard.odata/",
"entity_sets_total": 2,
"entity_sets": [
"AccountingRegister_Хозрасчетный",
"AccountingRegister_Хозрасчетный_RecordType"
],
"page_size": 500,
"max_pages_per_set": 0,
"include_undated": "all_months",
"truncated_entity_sets_count": 0,
"truncated_entity_sets": [],
"records_exported_per_month": {
"2020-01": 15113,
"2020-02": 15211,
"2020-03": 15508,
"2020-04": 15578,
"2020-05": 15648,
"2020-06": 15953,
"2020-07": 16039,
"2020-08": 16122,
"2020-09": 16175,
"2020-10": 16212,
"2020-11": 16308,
"2020-12": 16377
},
"dated_records_exported_per_month": {
"2020-01": 10644,
"2020-02": 10742,
"2020-03": 11039,
"2020-04": 11109,
"2020-05": 11179,
"2020-06": 11484,
"2020-07": 11570,
"2020-08": 11653,
"2020-09": 11706,
"2020-10": 11743,
"2020-11": 11839,
"2020-12": 11908
},
"undated_records_exported_per_month": {
"2020-01": 4469,
"2020-02": 4469,
"2020-03": 4469,
"2020-04": 4469,
"2020-05": 4469,
"2020-06": 4469,
"2020-07": 4469,
"2020-08": 4469,
"2020-09": 4469,
"2020-10": 4469,
"2020-11": 4469,
"2020-12": 4469
},
"links_exported_per_month": {
"2020-01": 47623,
"2020-02": 48036,
"2020-03": 49243,
"2020-04": 49539,
"2020-05": 49834,
"2020-06": 51071,
"2020-07": 51426,
"2020-08": 51769,
"2020-09": 51992,
"2020-10": 52151,
"2020-11": 52545,
"2020-12": 52831
},
"entity_set_stats": {
"AccountingRegister_Хозрасчетный": {
"pages_read": 9,
"records_scanned": 4469,
"records_mapped": 4469,
"records_with_datetime": 0,
"records_without_datetime": 4469,
"records_skipped_future": 0,
"mapping_errors": 0,
"truncated_by_limit_or_guard": false,
"pagination_repeat_guard_hits": 0
},
"AccountingRegister_Хозрасчетный_RecordType": {
"pages_read": 26,
"records_scanned": 12659,
"records_mapped": 11908,
"records_with_datetime": 12659,
"records_without_datetime": 0,
"records_skipped_future": 751,
"mapping_errors": 0,
"truncated_by_limit_or_guard": false,
"pagination_repeat_guard_hits": 0
}
},
"snapshot_files": [
"snapshot_2020-01_asof_full.json",
"snapshot_2020-02_asof_full.json",
"snapshot_2020-03_asof_full.json",
"snapshot_2020-04_asof_full.json",
"snapshot_2020-05_asof_full.json",
"snapshot_2020-06_asof_full.json",
"snapshot_2020-07_asof_full.json",
"snapshot_2020-08_asof_full.json",
"snapshot_2020-09_asof_full.json",
"snapshot_2020-10_asof_full.json",
"snapshot_2020-11_asof_full.json",
"snapshot_2020-12_asof_full.json"
],
"output_dir": "x:\\1C\\NDC_1C\\docs\\ARCH\\2020_monthly_company_asof_full_test",
"generated_at_utc": "2026-03-27T21:34:24.669751+00:00"
}
@@ -0,0 +1,219 @@
{
"runtime_snapshot_root": "x:\\1C\\NDC_1C\\docs\\ARCH\\2020экспорт",
"runtime_snapshot_files": [
{
"file": "03_snapshot_fragment_problem_cases.json",
"path": "x:\\1C\\NDC_1C\\docs\\ARCH\\2020экспорт\\03_snapshot_fragment_problem_cases.json",
"size_bytes": 302520,
"records_count": 80,
"top_entities": [
{
"entity": "AccumulationRegister_НДСЗаписиКнигиПродаж_RecordType",
"count": 46
},
{
"entity": "AccumulationRegister_НДСПредъявленный_RecordType",
"count": 21
},
{
"entity": "AccumulationRegister_НДСЗаписиКнигиПокупок_RecordType",
"count": 12
},
{
"entity": "AccumulationRegister_НДСВключенныйВСтоимость_RecordType",
"count": 1
}
]
},
{
"file": "04_samples_SpisanieSRaschetnogoScheta.json",
"path": "x:\\1C\\NDC_1C\\docs\\ARCH\\2020экспорт\\04_samples_SpisanieSRaschetnogoScheta.json",
"size_bytes": 196178,
"records_count": 27,
"top_entities": {
"entity": "Document_СписаниеСРасчетногоСчета",
"count": 27
}
},
{
"file": "05_samples_RealizaciyaTovarovUslug.json",
"path": "x:\\1C\\NDC_1C\\docs\\ARCH\\2020экспорт\\05_samples_RealizaciyaTovarovUslug.json",
"size_bytes": 132032,
"records_count": 5,
"top_entities": {
"entity": "Document_РеализацияТоваровУслуг",
"count": 5
}
},
{
"file": "06_samples_PostuplenieTovarovUslug.json",
"path": "x:\\1C\\NDC_1C\\docs\\ARCH\\2020экспорт\\06_samples_PostuplenieTovarovUslug.json",
"size_bytes": 181409,
"records_count": 10,
"top_entities": {
"entity": "Document_ПоступлениеТоваровУслуг",
"count": 10
}
},
{
"file": "07_samples_DocumentJournals.json",
"path": "x:\\1C\\NDC_1C\\docs\\ARCH\\2020экспорт\\07_samples_DocumentJournals.json",
"size_bytes": 292931,
"records_count": 80,
"top_entities": [
{
"entity": "DocumentJournal_ДокументыПоставщиков",
"count": 30
},
{
"entity": "DocumentJournal_БанковскиеВыписки",
"count": 30
},
{
"entity": "DocumentJournal_ДокументыПокупателей",
"count": 16
},
{
"entity": "DocumentJournal_ДокументыПоУчетуЗарплаты",
"count": 4
}
]
},
{
"file": "08_samples_NDS_registers.json",
"path": "x:\\1C\\NDC_1C\\docs\\ARCH\\2020экспорт\\08_samples_NDS_registers.json",
"size_bytes": 291547,
"records_count": 80,
"top_entities": [
{
"entity": "AccumulationRegister_НДСЗаписиКнигиПродаж_RecordType",
"count": 46
},
{
"entity": "AccumulationRegister_НДСПредъявленный_RecordType",
"count": 21
},
{
"entity": "AccumulationRegister_НДСЗаписиКнигиПокупок_RecordType",
"count": 12
},
{
"entity": "AccumulationRegister_НДСВключенныйВСтоимость_RecordType",
"count": 1
}
]
},
{
"file": "09_samples_key_fields_Recorder_Ref_Supplier_Buyer_Responsible.json",
"path": "x:\\1C\\NDC_1C\\docs\\ARCH\\2020экспорт\\09_samples_key_fields_Recorder_Ref_Supplier_Buyer_Responsible.json",
"size_bytes": 511133,
"records_count": 140,
"top_entities": [
{
"entity": "AccumulationRegister_НДСПредъявленный_RecordType",
"count": 65
},
{
"entity": "AccumulationRegister_НДСЗаписиКнигиПродаж_RecordType",
"count": 46
},
{
"entity": "AccumulationRegister_НДСЗаписиКнигиПокупок_RecordType",
"count": 12
},
{
"entity": "AccumulationRegister_НДФЛРасчетыСБюджетом_RecordType",
"count": 7
},
{
"entity": "AccumulationRegister_НДФЛСведенияОДоходах_RecordType",
"count": 3
},
{
"entity": "AccumulationRegister_РасчетыНалоговыхАгентовСБюджетомПоНДФЛ_RecordType",
"count": 3
},
{
"entity": "AccumulationRegister_РеализацияУслуг_RecordType",
"count": 1
},
{
"entity": "AccumulationRegister_РасчетыПоСтраховымВзносам_RecordType",
"count": 1
},
{
"entity": "AccumulationRegister_НДСВключенныйВСтоимость_RecordType",
"count": 1
},
{
"entity": "AccumulationRegister_НДФЛПредоставленныеСтандартныеВычетыФизЛиц_RecordType",
"count": 1
}
]
}
],
"monthly_asof_root": "x:\\1C\\NDC_1C\\docs\\ARCH\\2020_monthly_company_asof_full_test",
"monthly_asof_files": [
{
"Name": "snapshot_2020-01_asof_full.json",
"Length": 42476280,
"FullName": "X:\\1C\\NDC_1C\\docs\\ARCH\\2020_monthly_company_asof_full_test\\snapshot_2020-01_asof_full.json"
},
{
"Name": "snapshot_2020-02_asof_full.json",
"Length": 42750865,
"FullName": "X:\\1C\\NDC_1C\\docs\\ARCH\\2020_monthly_company_asof_full_test\\snapshot_2020-02_asof_full.json"
},
{
"Name": "snapshot_2020-03_asof_full.json",
"Length": 43556064,
"FullName": "X:\\1C\\NDC_1C\\docs\\ARCH\\2020_monthly_company_asof_full_test\\snapshot_2020-03_asof_full.json"
},
{
"Name": "snapshot_2020-04_asof_full.json",
"Length": 43751598,
"FullName": "X:\\1C\\NDC_1C\\docs\\ARCH\\2020_monthly_company_asof_full_test\\snapshot_2020-04_asof_full.json"
},
{
"Name": "snapshot_2020-05_asof_full.json",
"Length": 43947779,
"FullName": "X:\\1C\\NDC_1C\\docs\\ARCH\\2020_monthly_company_asof_full_test\\snapshot_2020-05_asof_full.json"
},
{
"Name": "snapshot_2020-06_asof_full.json",
"Length": 44770832,
"FullName": "X:\\1C\\NDC_1C\\docs\\ARCH\\2020_monthly_company_asof_full_test\\snapshot_2020-06_asof_full.json"
},
{
"Name": "snapshot_2020-07_asof_full.json",
"Length": 45007595,
"FullName": "X:\\1C\\NDC_1C\\docs\\ARCH\\2020_monthly_company_asof_full_test\\snapshot_2020-07_asof_full.json"
},
{
"Name": "snapshot_2020-08_asof_full.json",
"Length": 45237062,
"FullName": "X:\\1C\\NDC_1C\\docs\\ARCH\\2020_monthly_company_asof_full_test\\snapshot_2020-08_asof_full.json"
},
{
"Name": "snapshot_2020-09_asof_full.json",
"Length": 45384277,
"FullName": "X:\\1C\\NDC_1C\\docs\\ARCH\\2020_monthly_company_asof_full_test\\snapshot_2020-09_asof_full.json"
},
{
"Name": "snapshot_2020-10_asof_full.json",
"Length": 45489151,
"FullName": "X:\\1C\\NDC_1C\\docs\\ARCH\\2020_monthly_company_asof_full_test\\snapshot_2020-10_asof_full.json"
},
{
"Name": "snapshot_2020-11_asof_full.json",
"Length": 45753055,
"FullName": "X:\\1C\\NDC_1C\\docs\\ARCH\\2020_monthly_company_asof_full_test\\snapshot_2020-11_asof_full.json"
},
{
"Name": "snapshot_2020-12_asof_full.json",
"Length": 45942785,
"FullName": "X:\\1C\\NDC_1C\\docs\\ARCH\\2020_monthly_company_asof_full_test\\snapshot_2020-12_asof_full.json"
}
],
"monthly_manifest": "x:\\1C\\NDC_1C\\docs\\ARCH\\2020_monthly_company_asof_full_test\\manifest_2020_monthly_company_asof_full.json"
}