From da8a4eb872fa181ae63a900a4e91e3c5b9bb28ba Mon Sep 17 00:00:00 2001 From: dctouch Date: Thu, 2 Apr 2026 11:01:28 +0300 Subject: [PATCH] =?UTF-8?q?=D0=90=D0=94=D0=A0=D0=95=D0=A1=D0=9D=D0=AB?= =?UTF-8?q?=D0=99=20=D0=A0=D0=95=D0=96=D0=98=D0=9C=20-=20ADDRESS:=20=D1=81?= =?UTF-8?q?=D1=82=D0=B0=D0=B1=D0=B8=D0=BB=D0=B8=D0=B7=D0=B0=D1=86=D0=B8?= =?UTF-8?q?=D1=8F=20=D0=B8=D0=BD=D1=82=D0=B5=D1=80=D0=BF=D1=80=D0=B5=D1=82?= =?UTF-8?q?=D0=B0=D1=86=D0=B8=D0=B8=20=D1=81=D0=BB=D0=B5=D0=BD=D0=B3=D0=B0?= =?UTF-8?q?=20=D0=B8=20mixed=20RU/EN,=20=D1=80=D0=B0=D1=81=D1=88=D0=B8?= =?UTF-8?q?=D1=80=D0=B5=D0=BD=D0=B8=D0=B5=20intent/mode-=D1=80=D0=BE=D1=83?= =?UTF-8?q?=D1=82=D0=B8=D0=BD=D0=B3=D0=B0,=20=D1=80=D0=B5=D0=B3=D1=80?= =?UTF-8?q?=D0=B5=D1=81=D1=81-=D1=82=D0=B5=D1=81=D1=82=D1=8B=20=D0=B8=20li?= =?UTF-8?q?ve=20stress=20102/102?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/ADDRESS/1.txt | 3262 +--------- .../address_slang_stress_2026-04-02.json | 68 + ...address_slang_stress_extra_2026-04-02.json | 50 + .../address_slang_stress_full_2026-04-02.json | 620 ++ .../README.md | 22 + .../failures_only.json | 551 ++ .../full_live_results.json | 5602 +++++++++++++++++ .../run_summary.json | 67 + .../README.md | 13 + .../failures_only.json | 87 + .../full_live_results.json | 701 +++ .../run_summary.json | 66 + .../README.md | 19 + .../failures_only.json | 481 ++ .../full_live_results.json | 1290 ++++ .../run_summary.json | 87 + .../README.md | 19 + .../failures_only.json | 405 ++ .../full_live_results.json | 1235 ++++ .../run_summary.json | 89 + .../README.md | 23 + .../failures_only.json | 326 + .../full_live_results.json | 1680 +++++ .../run_summary.json | 54 + .../README.md | 23 + .../failures_only.json | 137 + .../full_live_results.json | 1677 +++++ .../run_summary.json | 51 + .../README.md | 23 + .../failures_only.json | 56 + .../full_live_results.json | 1676 +++++ .../run_summary.json | 50 + .../README.md | 23 + .../failures_only.json | 1 + .../full_live_results.json | 1678 +++++ .../run_summary.json | 52 + .../README.md | 23 + .../failures_only.json | 83 + .../full_live_results.json | 1194 ++++ .../run_summary.json | 54 + .../README.md | 23 + .../failures_only.json | 56 + .../full_live_results.json | 1192 ++++ .../run_summary.json | 52 + .../README.md | 23 + .../failures_only.json | 1 + .../full_live_results.json | 1190 ++++ .../run_summary.json | 50 + .../README.md | 23 + .../failures_only.json | 29 + .../full_live_results.json | 2814 +++++++++ .../run_summary.json | 54 + .../README.md | 23 + .../failures_only.json | 1 + .../full_live_results.json | 2812 +++++++++ .../run_summary.json | 52 + .../src/services/addressFilterExtractor.ts | 15 +- .../src/services/addressIntentResolver.ts | 101 +- .../src/services/addressQueryClassifier.ts | 18 +- .../src/services/addressQueryService.ts | 62 + .../backend/src/services/assistantService.ts | 90 +- .../src/services/openaiResponsesClient.ts | 47 +- .../tests/addressQueryRuntimeM23.test.ts | 72 + .../assistantAddressFollowupContext.test.ts | 9 +- .../assistantAddressLlmPredecompose.test.ts | 112 + ...openaiResponsesClientLocalFallback.test.ts | 125 + .../backend/tmp/inspect_contract_query.js | 25 + scripts/run_address_live_slang_stress.py | 308 + 68 files changed, 29777 insertions(+), 3220 deletions(-) create mode 100644 docs/ADDRESS/question_sets/address_slang_stress_2026-04-02.json create mode 100644 docs/ADDRESS/question_sets/address_slang_stress_extra_2026-04-02.json create mode 100644 docs/ADDRESS/question_sets/address_slang_stress_full_2026-04-02.json create mode 100644 docs/ADDRESS/runs/2026-04-02_Address_Full_Live_Run_2026-04-02_08-03-09/README.md create mode 100644 docs/ADDRESS/runs/2026-04-02_Address_Full_Live_Run_2026-04-02_08-03-09/failures_only.json create mode 100644 docs/ADDRESS/runs/2026-04-02_Address_Full_Live_Run_2026-04-02_08-03-09/full_live_results.json create mode 100644 docs/ADDRESS/runs/2026-04-02_Address_Full_Live_Run_2026-04-02_08-03-09/run_summary.json create mode 100644 docs/ADDRESS/runs/2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54/README.md create mode 100644 docs/ADDRESS/runs/2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54/failures_only.json create mode 100644 docs/ADDRESS/runs/2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54/full_live_results.json create mode 100644 docs/ADDRESS/runs/2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54/run_summary.json create mode 100644 docs/ADDRESS/runs/2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32/README.md create mode 100644 docs/ADDRESS/runs/2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32/failures_only.json create mode 100644 docs/ADDRESS/runs/2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32/full_live_results.json create mode 100644 docs/ADDRESS/runs/2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32/run_summary.json create mode 100644 docs/ADDRESS/runs/2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup/README.md create mode 100644 docs/ADDRESS/runs/2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup/failures_only.json create mode 100644 docs/ADDRESS/runs/2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup/full_live_results.json create mode 100644 docs/ADDRESS/runs/2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup/run_summary.json create mode 100644 docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14/README.md create mode 100644 docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14/failures_only.json create mode 100644 docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14/full_live_results.json create mode 100644 docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14/run_summary.json create mode 100644 docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35/README.md create mode 100644 docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35/failures_only.json create mode 100644 docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35/full_live_results.json create mode 100644 docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35/run_summary.json create mode 100644 docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53/README.md create mode 100644 docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53/failures_only.json create mode 100644 docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53/full_live_results.json create mode 100644 docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53/run_summary.json create mode 100644 docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46/README.md create mode 100644 docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46/failures_only.json create mode 100644 docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46/full_live_results.json create mode 100644 docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46/run_summary.json create mode 100644 docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-13-57/README.md create mode 100644 docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-13-57/failures_only.json create mode 100644 docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-13-57/full_live_results.json create mode 100644 docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-13-57/run_summary.json create mode 100644 docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-20-51/README.md create mode 100644 docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-20-51/failures_only.json create mode 100644 docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-20-51/full_live_results.json create mode 100644 docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-20-51/run_summary.json create mode 100644 docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-26-25/README.md create mode 100644 docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-26-25/failures_only.json create mode 100644 docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-26-25/full_live_results.json create mode 100644 docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-26-25/run_summary.json create mode 100644 docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12/README.md create mode 100644 docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12/failures_only.json create mode 100644 docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12/full_live_results.json create mode 100644 docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12/run_summary.json create mode 100644 docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26/README.md create mode 100644 docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26/failures_only.json create mode 100644 docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26/full_live_results.json create mode 100644 docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26/run_summary.json create mode 100644 llm_normalizer/backend/tests/openaiResponsesClientLocalFallback.test.ts create mode 100644 llm_normalizer/backend/tmp/inspect_contract_query.js create mode 100644 scripts/run_address_live_slang_stress.py diff --git a/docs/ADDRESS/1.txt b/docs/ADDRESS/1.txt index cd80250..c871b95 100644 --- a/docs/ADDRESS/1.txt +++ b/docs/ADDRESS/1.txt @@ -1,3169 +1,93 @@ -# Assistant conversation export -session_id: asst-zxYGpU4649 -export_mode: technical -exported_at: 2026-04-01T18:13:48.663Z - -## 1. user -message_id: msg-dUqZNUZhhW -created_at: 2026-04-01T18:10:36.307Z -reply_type: n/a - -СЃРІРє РґРѕРєРё Р·Р° 20РіРѕРґ покеж - -## 2. assistant -message_id: msg-YvtqQMDBq3 -created_at: 2026-04-01T18:10:41.189Z -reply_type: factual -trace_id: address-uoi_yk2ev3 - -Собран СЃРїРёСЃРѕРє документов РїРѕ контрагенту (live address lane). -Строк отобрано: 3. -1. 2020-12-30T12:00:00Z | Поступление РЅР° расчетный счет 00000000044 РѕС‚ 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа РЎР’Рљ -2. 2020-12-16T16:20:53Z | Поступление РЅР° расчетный счет 00000000043 РѕС‚ 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа РЎР’Рљ -3. 2020-12-14T12:00:00Z | Поступление РЅР° расчетный счет 00000000042 РѕС‚ 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа РЎР’Рљ - -### technical_debug_payload_json -```json -{ - "trace_id": "address-uoi_yk2ev3", - "prompt_version": "address_query_runtime_v1", - "schema_version": "address_query_runtime_v1", - "fallback_type": "none", - "route_summary": null, - "fragments": [], - "requirements_extracted": [], - "coverage_report": { - "requirements_total": 0, - "requirements_covered": 0, - "requirements_uncovered": [], - "requirements_partially_covered": [], - "clarification_needed_for": [], - "out_of_scope_requirements": [] - }, - "routes": [], - "retrieval_status": [], - "retrieval_results": [], - "answer_grounding_check": { - "status": "grounded", - "route_subject_match": true, - "missing_requirements": [], - "reasons": [ - "address_entity_detected", - "shape_not_detected", - "documents_by_counterparty_signal_detected" - ], - "why_included_summary": [], - "selection_reason_summary": [] - }, - "dropped_intent_segments": [], - "detected_mode": "address_query", - "detected_mode_confidence": "medium", - "query_shape": "UNKNOWN", - "query_shape_confidence": "low", - "detected_intent": "list_documents_by_counterparty", - "detected_intent_confidence": "medium", - "extracted_filters": { - "sort": "period_desc", - "limit": 20, - "counterparty": "СЃРІРє", - "period_from": "2020-01-01", - "period_to": "2020-12-31" - }, - "missing_required_filters": [], - "selected_recipe": "address_documents_by_counterparty_v1", - "mcp_call_status_legacy": "matched_non_empty", - "account_scope_mode": "preferred", - "account_scope_fallback_applied": false, - "anchor_type": "counterparty", - "anchor_value_raw": "СЃРІРє", - "anchor_value_resolved": "Группа РЎР’Рљ", - "resolver_confidence": "medium", - "ambiguity_count": 0, - "match_failure_stage": "none", - "match_failure_reason": null, - "mcp_call_status": "matched_non_empty", - "rows_fetched": 20, - "raw_rows_received": 20, - "rows_after_account_scope": 5, - "rows_after_recipe_filter": 3, - "rows_materialized": 5, - "rows_matched": 3, - "raw_row_keys_sample": [ - "Период", - "Регистратор", - "СчетДт", - "СчетКт", - "РЎСѓРјРјР°", - "Контрагент", - "Period", - "Registrator", - "Amount" - ], - "materialization_drop_reason": "none", - "account_token_raw": null, - "account_token_normalized": null, - "account_scope_fields_checked": [ - "account_dt", - "account_kt", - "registrator", - "analytics" - ], - "account_scope_match_strategy": "account_code_regex_plus_alias_map_v1", - "account_scope_drop_reason": "not_applicable", - "runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS", - "limited_reason_category": null, - "response_type": "FACTUAL_LIST", - "execution_lane": "address_query", - "llm_decomposition_applied": false, - "llm_decomposition_attempted": true, - "llm_provider_used": "local", - "llm_decomposition_trace_id": "xqnSGswL4AdNhc", - "llm_decomposition_effective_message": "СЃРІРє РґРѕРєРё Р·Р° 20РіРѕРґ покеж", - "llm_decomposition_reason": "normalized_fragment_same", - "answer_structure_v11": null, - "investigation_state_snapshot": null, - "normalized": null, - "normalizer_output": { - "trace_id": "xqnSGswL4AdNhc", - "prompt_version": "normalizer_v2_0_2", - "applied": false, - "effective_message": "СЃРІРє РґРѕРєРё Р·Р° 20РіРѕРґ покеж" - } -} -``` - -## 3. user -message_id: msg-86J5F3oayb -created_at: 2026-04-01T18:10:44.797Z -reply_type: n/a - -СЃРІРє 20 РіРѕРґ - покажи РґРѕРєРё плс - -## 4. assistant -message_id: msg-CVGhma30h8 -created_at: 2026-04-01T18:10:51.453Z -reply_type: factual -trace_id: address-_CPGzp56UH - -Собран СЃРїРёСЃРѕРє документов РїРѕ контрагенту (live address lane). -Строк отобрано: 3. -1. 2020-12-30T12:00:00Z | Поступление РЅР° расчетный счет 00000000044 РѕС‚ 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа РЎР’Рљ -2. 2020-12-16T16:20:53Z | Поступление РЅР° расчетный счет 00000000043 РѕС‚ 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа РЎР’Рљ -3. 2020-12-14T12:00:00Z | Поступление РЅР° расчетный счет 00000000042 РѕС‚ 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа РЎР’Рљ - -### technical_debug_payload_json -```json -{ - "trace_id": "address-_CPGzp56UH", - "prompt_version": "address_query_runtime_v1", - "schema_version": "address_query_runtime_v1", - "fallback_type": "none", - "route_summary": null, - "fragments": [], - "requirements_extracted": [], - "coverage_report": { - "requirements_total": 0, - "requirements_covered": 0, - "requirements_uncovered": [], - "requirements_partially_covered": [], - "clarification_needed_for": [], - "out_of_scope_requirements": [] - }, - "routes": [], - "retrieval_status": [], - "retrieval_results": [], - "answer_grounding_check": { - "status": "grounded", - "route_subject_match": true, - "missing_requirements": [], - "reasons": [ - "address_action_detected", - "address_entity_detected", - "document_list_signal_detected", - "documents_by_counterparty_signal_detected" - ], - "why_included_summary": [], - "selection_reason_summary": [] - }, - "dropped_intent_segments": [], - "detected_mode": "address_query", - "detected_mode_confidence": "high", - "query_shape": "DOCUMENT_LIST", - "query_shape_confidence": "medium", - "detected_intent": "list_documents_by_counterparty", - "detected_intent_confidence": "medium", - "extracted_filters": { - "sort": "period_desc", - "limit": 20, - "counterparty": "РЎР’Рљ", - "period_from": "2020-01-01", - "period_to": "2020-12-31" - }, - "missing_required_filters": [], - "selected_recipe": "address_documents_by_counterparty_v1", - "mcp_call_status_legacy": "matched_non_empty", - "account_scope_mode": "preferred", - "account_scope_fallback_applied": false, - "anchor_type": "counterparty", - "anchor_value_raw": "РЎР’Рљ", - "anchor_value_resolved": "Группа РЎР’Рљ", - "resolver_confidence": "medium", - "ambiguity_count": 0, - "match_failure_stage": "none", - "match_failure_reason": null, - "mcp_call_status": "matched_non_empty", - "rows_fetched": 20, - "raw_rows_received": 20, - "rows_after_account_scope": 5, - "rows_after_recipe_filter": 3, - "rows_materialized": 5, - "rows_matched": 3, - "raw_row_keys_sample": [ - "Период", - "Регистратор", - "СчетДт", - "СчетКт", - "РЎСѓРјРјР°", - "Контрагент", - "Period", - "Registrator", - "Amount" - ], - "materialization_drop_reason": "none", - "account_token_raw": null, - "account_token_normalized": null, - "account_scope_fields_checked": [ - "account_dt", - "account_kt", - "registrator", - "analytics" - ], - "account_scope_match_strategy": "account_code_regex_plus_alias_map_v1", - "account_scope_drop_reason": "not_applicable", - "runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS", - "limited_reason_category": null, - "response_type": "FACTUAL_LIST", - "execution_lane": "address_query", - "llm_decomposition_applied": true, - "llm_decomposition_attempted": true, - "llm_provider_used": "local", - "llm_decomposition_trace_id": "b5soOIJ5ttBOw4", - "llm_decomposition_effective_message": "РЎР’Рљ 20 РіРѕРґ - показать документы, пожалуйста.", - "llm_decomposition_reason": "normalized_fragment_applied", - "answer_structure_v11": null, - "investigation_state_snapshot": null, - "normalized": null, - "normalizer_output": { - "trace_id": "b5soOIJ5ttBOw4", - "prompt_version": "normalizer_v2_0_2", - "applied": true, - "effective_message": "РЎР’Рљ 20 РіРѕРґ - показать документы, пожалуйста." - } -} -``` - -## 5. user -message_id: msg-it76aW4qHD -created_at: 2026-04-01T18:10:53.136Z -reply_type: n/a - -что РїРѕ СЃРІРє Р·Р° 2020 РіРѕРґ выведи РІСЃРµ РґРѕРєРё плиз что есть - -## 6. assistant -message_id: msg-KXpASiK2Zo -created_at: 2026-04-01T18:10:59.547Z -reply_type: factual -trace_id: address-lcvLCZGqsQ - -Собран СЃРїРёСЃРѕРє документов РїРѕ контрагенту (live address lane). -Строк отобрано: 3. -1. 2020-12-30T12:00:00Z | Поступление РЅР° расчетный счет 00000000044 РѕС‚ 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа РЎР’Рљ -2. 2020-12-16T16:20:53Z | Поступление РЅР° расчетный счет 00000000043 РѕС‚ 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа РЎР’Рљ -3. 2020-12-14T12:00:00Z | Поступление РЅР° расчетный счет 00000000042 РѕС‚ 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа РЎР’Рљ - -### technical_debug_payload_json -```json -{ - "trace_id": "address-lcvLCZGqsQ", - "prompt_version": "address_query_runtime_v1", - "schema_version": "address_query_runtime_v1", - "fallback_type": "none", - "route_summary": null, - "fragments": [], - "requirements_extracted": [], - "coverage_report": { - "requirements_total": 0, - "requirements_covered": 0, - "requirements_uncovered": [], - "requirements_partially_covered": [], - "clarification_needed_for": [], - "out_of_scope_requirements": [] - }, - "routes": [], - "retrieval_status": [], - "retrieval_results": [], - "answer_grounding_check": { - "status": "grounded", - "route_subject_match": true, - "missing_requirements": [], - "reasons": [ - "loose_by_anchor_detected", - "document_list_signal_detected", - "documents_by_counterparty_signal_detected" - ], - "why_included_summary": [], - "selection_reason_summary": [] - }, - "dropped_intent_segments": [], - "detected_mode": "address_query", - "detected_mode_confidence": "medium", - "query_shape": "DOCUMENT_LIST", - "query_shape_confidence": "medium", - "detected_intent": "list_documents_by_counterparty", - "detected_intent_confidence": "medium", - "extracted_filters": { - "sort": "period_desc", - "limit": 20, - "counterparty": "РЎР’Рљ", - "period_from": "2020-01-01", - "period_to": "2020-12-31" - }, - "missing_required_filters": [], - "selected_recipe": "address_documents_by_counterparty_v1", - "mcp_call_status_legacy": "matched_non_empty", - "account_scope_mode": "preferred", - "account_scope_fallback_applied": false, - "anchor_type": "counterparty", - "anchor_value_raw": "РЎР’Рљ", - "anchor_value_resolved": "Группа РЎР’Рљ", - "resolver_confidence": "medium", - "ambiguity_count": 0, - "match_failure_stage": "none", - "match_failure_reason": null, - "mcp_call_status": "matched_non_empty", - "rows_fetched": 20, - "raw_rows_received": 20, - "rows_after_account_scope": 5, - "rows_after_recipe_filter": 3, - "rows_materialized": 5, - "rows_matched": 3, - "raw_row_keys_sample": [ - "Период", - "Регистратор", - "СчетДт", - "СчетКт", - "РЎСѓРјРјР°", - "Контрагент", - "Period", - "Registrator", - "Amount" - ], - "materialization_drop_reason": "none", - "account_token_raw": null, - "account_token_normalized": null, - "account_scope_fields_checked": [ - "account_dt", - "account_kt", - "registrator", - "analytics" - ], - "account_scope_match_strategy": "account_code_regex_plus_alias_map_v1", - "account_scope_drop_reason": "not_applicable", - "runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS", - "limited_reason_category": null, - "response_type": "FACTUAL_LIST", - "execution_lane": "address_query", - "llm_decomposition_applied": true, - "llm_decomposition_attempted": true, - "llm_provider_used": "local", - "llm_decomposition_trace_id": "uFllh8ted5XVzn", - "llm_decomposition_effective_message": "Получить РІСЃРµ документы РїРѕ РЎР’Рљ Р·Р° 2020 РіРѕРґ.", - "llm_decomposition_reason": "normalized_fragment_applied", - "answer_structure_v11": null, - "investigation_state_snapshot": null, - "normalized": null, - "normalizer_output": { - "trace_id": "uFllh8ted5XVzn", - "prompt_version": "normalizer_v2_0_2", - "applied": true, - "effective_message": "Получить РІСЃРµ документы РїРѕ РЎР’Рљ Р·Р° 2020 РіРѕРґ." - } -} -``` - -## 7. user -message_id: msg-hv0z5I9ohR -created_at: 2026-04-01T18:11:04.236Z -reply_type: n/a - -какие документы РїРѕ контрагенту СЃРІРє Р·Р° РІСЃРµ время - -## 8. assistant -message_id: msg-OpgszUl9a7 -created_at: 2026-04-01T18:11:10.000Z -reply_type: factual -trace_id: address-SY1EolHeLV - -Собран СЃРїРёСЃРѕРє документов РїРѕ контрагенту (live address lane). -Строк отобрано: 26. -1. 2021-11-10T12:00:07Z | Поступление РЅР° расчетный счет 00000000013 РѕС‚ 10.11.2021 12:00:07 | 0 / 0 | 20000 | аналитика: Группа РЎР’Рљ -2. 2021-09-29T12:00:03Z | Поступление РЅР° расчетный счет 00000000012 РѕС‚ 29.09.2021 12:00:03 | 0 / 0 | 50000 | аналитика: Группа РЎР’Рљ -3. 2021-08-31T12:00:04Z | Поступление РЅР° расчетный счет 00000000011 РѕС‚ 31.08.2021 12:00:04 | 0 / 0 | 120500 | аналитика: Группа РЎР’Рљ -4. 2021-06-22T12:00:00Z | Поступление РЅР° расчетный счет 00000000010 РѕС‚ 22.06.2021 12:00:00 | 0 / 0 | 498630 | аналитика: Группа РЎР’Рљ -5. 2021-06-09T12:00:05Z | Поступление РЅР° расчетный счет 00000000009 РѕС‚ 09.06.2021 12:00:05 | 0 / 0 | 418960 | аналитика: Группа РЎР’Рљ -6. 2021-04-28T12:00:08Z | Поступление РЅР° расчетный счет 00000000008 РѕС‚ 28.04.2021 12:00:08 | 0 / 0 | 564300 | аналитика: Группа РЎР’Рљ -7. 2021-04-22T12:00:00Z | Поступление РЅР° расчетный счет 00000000007 РѕС‚ 22.04.2021 12:00:00 | 0 / 0 | 982420 | аналитика: Группа РЎР’Рљ -8. 2021-04-13T12:00:11Z | Поступление РЅР° расчетный счет 00000000006 РѕС‚ 13.04.2021 12:00:11 | 0 / 0 | 1882400 | аналитика: Группа РЎР’Рљ -9. 2021-03-25T12:00:02Z | Поступление РЅР° расчетный счет 00000000005 РѕС‚ 25.03.2021 12:00:02 | 0 / 0 | 644315 | аналитика: Группа РЎР’Рљ -10. 2021-03-24T12:00:03Z | Поступление РЅР° расчетный счет 00000000004 РѕС‚ 24.03.2021 12:00:03 | 0 / 0 | 1219990 | аналитика: Группа РЎР’Рљ -11. 2021-03-18T12:00:00Z | Поступление РЅР° расчетный счет 00000000003 РѕС‚ 18.03.2021 12:00:00 | 0 / 0 | 1425310 | аналитика: Группа РЎР’Рљ -12. 2021-03-12T12:00:03Z | Поступление РЅР° расчетный счет 00000000002 РѕС‚ 12.03.2021 12:00:03 | 0 / 0 | 214600 | аналитика: Группа РЎР’Рљ -13. 2021-02-19T12:00:01Z | Поступление РЅР° расчетный счет 00000000001 РѕС‚ 19.02.2021 12:00:01 | 0 / 0 | 518600 | аналитика: Группа РЎР’Рљ -14. 2020-12-30T12:00:00Z | Поступление РЅР° расчетный счет 00000000044 РѕС‚ 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа РЎР’Рљ -15. 2020-12-16T16:20:53Z | Поступление РЅР° расчетный счет 00000000043 РѕС‚ 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа РЎР’Рљ -16. 2020-12-14T12:00:00Z | Поступление РЅР° расчетный счет 00000000042 РѕС‚ 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа РЎР’Рљ -17. 2020-11-30T12:00:07Z | Поступление РЅР° расчетный счет 00000000041 РѕС‚ 30.11.2020 12:00:07 | 0 / 0 | 38900 | аналитика: Группа РЎР’Рљ -18. 2020-11-19T12:00:04Z | Поступление РЅР° расчетный счет 00000000039 РѕС‚ 19.11.2020 12:00:04 | 0 / 0 | 3320600 | аналитика: Группа РЎР’Рљ -19. 2020-11-18T12:00:05Z | Поступление РЅР° расчетный счет 00000000038 РѕС‚ 18.11.2020 12:00:05 | 0 / 0 | 745300 | аналитика: Группа РЎР’Рљ -20. 2020-11-18T12:00:04Z | Поступление РЅР° расчетный счет 00000000037 РѕС‚ 18.11.2020 12:00:04 | 0 / 0 | 320000 | аналитика: Группа РЎР’Рљ -21. 2020-11-13T12:00:03Z | Поступление РЅР° расчетный счет 00000000036 РѕС‚ 13.11.2020 12:00:03 | 0 / 0 | 313600 | аналитика: Группа РЎР’Рљ -22. 2020-11-10T15:39:13Z | Поступление РЅР° расчетный счет 00000000035 РѕС‚ 10.11.2020 15:39:13 | 0 / 0 | 328300 | аналитика: Группа РЎР’Рљ -23. 2020-10-26T12:00:00Z | Поступление РЅР° расчетный счет 00000000034 РѕС‚ 26.10.2020 12:00:00 | 0 / 0 | 175000 | аналитика: Группа РЎР’Рљ -24. 2020-08-20T12:00:06Z | Поступление РЅР° расчетный счет 00000000032 РѕС‚ 20.08.2020 12:00:06 | 0 / 0 | 3126005 | аналитика: Группа РЎР’Рљ -25. 2020-07-30T12:00:00Z | Поступление РЅР° расчетный счет 00000000029 РѕС‚ 30.07.2020 12:00:00 | 0 / 0 | 20000 | аналитика: Группа РЎР’Рљ -26. 2020-07-27T12:00:00Z | Поступление РЅР° расчетный счет 00000000028 РѕС‚ 27.07.2020 12:00:00 | 0 / 0 | 40860 | аналитика: Группа РЎР’Рљ - -### technical_debug_payload_json -```json -{ - "trace_id": "address-SY1EolHeLV", - "prompt_version": "address_query_runtime_v1", - "schema_version": "address_query_runtime_v1", - "fallback_type": "none", - "route_summary": null, - "fragments": [], - "requirements_extracted": [], - "coverage_report": { - "requirements_total": 0, - "requirements_covered": 0, - "requirements_uncovered": [], - "requirements_partially_covered": [], - "clarification_needed_for": [], - "out_of_scope_requirements": [] - }, - "routes": [], - "retrieval_status": [], - "retrieval_results": [], - "answer_grounding_check": { - "status": "grounded", - "route_subject_match": true, - "missing_requirements": [], - "reasons": [ - "address_action_detected", - "address_entity_detected", - "document_list_signal_detected", - "documents_by_counterparty_signal_detected" - ], - "why_included_summary": [], - "selection_reason_summary": [] - }, - "dropped_intent_segments": [], - "detected_mode": "address_query", - "detected_mode_confidence": "high", - "query_shape": "DOCUMENT_LIST", - "query_shape_confidence": "medium", - "detected_intent": "list_documents_by_counterparty", - "detected_intent_confidence": "medium", - "extracted_filters": { - "sort": "period_desc", - "limit": 20, - "counterparty": "РЎР’Рљ" - }, - "missing_required_filters": [], - "selected_recipe": "address_documents_by_counterparty_v1", - "mcp_call_status_legacy": "matched_non_empty", - "account_scope_mode": "preferred", - "account_scope_fallback_applied": false, - "anchor_type": "counterparty", - "anchor_value_raw": "РЎР’Рљ", - "anchor_value_resolved": "Группа РЎР’Рљ", - "resolver_confidence": "medium", - "ambiguity_count": 0, - "match_failure_stage": "none", - "match_failure_reason": null, - "mcp_call_status": "matched_non_empty", - "rows_fetched": 1000, - "raw_rows_received": 1000, - "rows_after_account_scope": 124, - "rows_after_recipe_filter": 26, - "rows_materialized": 124, - "rows_matched": 26, - "raw_row_keys_sample": [ - "Период", - "Регистратор", - "СчетДт", - "СчетКт", - "РЎСѓРјРјР°", - "Контрагент", - "Period", - "Registrator", - "Amount" - ], - "materialization_drop_reason": "none", - "account_token_raw": null, - "account_token_normalized": null, - "account_scope_fields_checked": [ - "account_dt", - "account_kt", - "registrator", - "analytics" - ], - "account_scope_match_strategy": "account_code_regex_plus_alias_map_v1", - "account_scope_drop_reason": "not_applicable", - "runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS", - "limited_reason_category": null, - "response_type": "FACTUAL_LIST", - "execution_lane": "address_query", - "llm_decomposition_applied": true, - "llm_decomposition_attempted": true, - "llm_provider_used": "local", - "llm_decomposition_trace_id": "wVuhR9CK60_7kI", - "llm_decomposition_effective_message": "Получить СЃРїРёСЃРѕРє документов РїРѕ контрагенту РЎР’Рљ Р·Р° весь период времени.", - "llm_decomposition_reason": "normalized_fragment_applied", - "answer_structure_v11": null, - "investigation_state_snapshot": null, - "normalized": null, - "normalizer_output": { - "trace_id": "wVuhR9CK60_7kI", - "prompt_version": "normalizer_v2_0_2", - "applied": true, - "effective_message": "Получить СЃРїРёСЃРѕРє документов РїРѕ контрагенту РЎР’Рљ Р·Р° весь период времени." - } -} -``` - -## 9. user -message_id: msg-zAM1kx6yVn -created_at: 2026-04-01T18:11:12.112Z -reply_type: n/a - -РґРѕРєРё РїРѕ СЃРІРє СЃ 01.07.2020 РїРѕ 31.07.2020 - -## 10. assistant -message_id: msg-4icrCxrkOn -created_at: 2026-04-01T18:11:17.899Z -reply_type: factual -trace_id: address-3ZkNldRurx - -Собран СЃРїРёСЃРѕРє документов РїРѕ контрагенту (live address lane). -Строк отобрано: 2. -1. 2020-07-30T12:00:00Z | Поступление РЅР° расчетный счет 00000000029 РѕС‚ 30.07.2020 12:00:00 | 0 / 0 | 20000 | аналитика: Группа РЎР’Рљ -2. 2020-07-27T12:00:00Z | Поступление РЅР° расчетный счет 00000000028 РѕС‚ 27.07.2020 12:00:00 | 0 / 0 | 40860 | аналитика: Группа РЎР’Рљ - -### technical_debug_payload_json -```json -{ - "trace_id": "address-3ZkNldRurx", - "prompt_version": "address_query_runtime_v1", - "schema_version": "address_query_runtime_v1", - "fallback_type": "none", - "route_summary": null, - "fragments": [], - "requirements_extracted": [], - "coverage_report": { - "requirements_total": 0, - "requirements_covered": 0, - "requirements_uncovered": [], - "requirements_partially_covered": [], - "clarification_needed_for": [], - "out_of_scope_requirements": [] - }, - "routes": [], - "retrieval_status": [], - "retrieval_results": [], - "answer_grounding_check": { - "status": "grounded", - "route_subject_match": true, - "missing_requirements": [], - "reasons": [ - "loose_by_anchor_detected", - "document_list_signal_detected", - "documents_by_counterparty_signal_detected" - ], - "why_included_summary": [], - "selection_reason_summary": [] - }, - "dropped_intent_segments": [], - "detected_mode": "address_query", - "detected_mode_confidence": "medium", - "query_shape": "DOCUMENT_LIST", - "query_shape_confidence": "medium", - "detected_intent": "list_documents_by_counterparty", - "detected_intent_confidence": "medium", - "extracted_filters": { - "sort": "period_desc", - "limit": 20, - "counterparty": "РЎР’Рљ", - "period_from": "2020-07-01", - "period_to": "2020-07-31" - }, - "missing_required_filters": [], - "selected_recipe": "address_documents_by_counterparty_v1", - "mcp_call_status_legacy": "matched_non_empty", - "account_scope_mode": "preferred", - "account_scope_fallback_applied": false, - "anchor_type": "counterparty", - "anchor_value_raw": "РЎР’Рљ", - "anchor_value_resolved": "Группа РЎР’Рљ", - "resolver_confidence": "medium", - "ambiguity_count": 0, - "match_failure_stage": "none", - "match_failure_reason": null, - "mcp_call_status": "matched_non_empty", - "rows_fetched": 19, - "raw_rows_received": 19, - "rows_after_account_scope": 3, - "rows_after_recipe_filter": 2, - "rows_materialized": 3, - "rows_matched": 2, - "raw_row_keys_sample": [ - "Период", - "Регистратор", - "СчетДт", - "СчетКт", - "РЎСѓРјРјР°", - "Контрагент", - "Period", - "Registrator", - "Amount" - ], - "materialization_drop_reason": "none", - "account_token_raw": null, - "account_token_normalized": null, - "account_scope_fields_checked": [ - "account_dt", - "account_kt", - "registrator", - "analytics" - ], - "account_scope_match_strategy": "account_code_regex_plus_alias_map_v1", - "account_scope_drop_reason": "not_applicable", - "runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS", - "limited_reason_category": null, - "response_type": "FACTUAL_LIST", - "execution_lane": "address_query", - "llm_decomposition_applied": true, - "llm_decomposition_attempted": true, - "llm_provider_used": "local", - "llm_decomposition_trace_id": "yBWDVajeIbF6ID", - "llm_decomposition_effective_message": "Документы РїРѕ РЎР’Рљ СЃ 01.07.2020 РїРѕ 31.07.2020", - "llm_decomposition_reason": "normalized_fragment_applied", - "answer_structure_v11": null, - "investigation_state_snapshot": null, - "normalized": null, - "normalizer_output": { - "trace_id": "yBWDVajeIbF6ID", - "prompt_version": "normalizer_v2_0_2", - "applied": true, - "effective_message": "Документы РїРѕ РЎР’Рљ СЃ 01.07.2020 РїРѕ 31.07.2020" - } -} -``` - -## 11. user -message_id: msg-B7HuCUd3Ip -created_at: 2026-04-01T18:11:19.945Z -reply_type: n/a - -СЃРІРє июль 2020 какие РґРѕРєРё есть - -## 12. assistant -message_id: msg-B2nSw16b5t -created_at: 2026-04-01T18:11:26.245Z -reply_type: partial_coverage -trace_id: address-UG7BvLA5nz - -Для точного адресного РїРѕРёСЃРєР° РЅРµ хватает обязательного СЏРєРѕСЂСЏ. -Причина: СЏРєРѕСЂСЊ контрагента/РґРѕРіРѕРІРѕСЂР° РЅРµ найден РІ материализованных live-строках. -Что РЅСѓР¶РЅРѕ уточнить: уточните контрагента точным именем или добавьте ИНН/РґРѕРіРѕРІРѕСЂ. - -### technical_debug_payload_json -```json -{ - "trace_id": "address-UG7BvLA5nz", - "prompt_version": "address_query_runtime_v1", - "schema_version": "address_query_runtime_v1", - "fallback_type": "partial", - "route_summary": null, - "fragments": [], - "requirements_extracted": [], - "coverage_report": { - "requirements_total": 0, - "requirements_covered": 0, - "requirements_uncovered": [], - "requirements_partially_covered": [], - "clarification_needed_for": [], - "out_of_scope_requirements": [] - }, - "routes": [], - "retrieval_status": [], - "retrieval_results": [], - "answer_grounding_check": { - "status": "partial", - "route_subject_match": true, - "missing_requirements": [], - "reasons": [ - "address_action_detected", - "address_entity_detected", - "document_list_signal_detected", - "documents_by_counterparty_signal_detected" - ], - "why_included_summary": [], - "selection_reason_summary": [] - }, - "dropped_intent_segments": [], - "detected_mode": "address_query", - "detected_mode_confidence": "high", - "query_shape": "DOCUMENT_LIST", - "query_shape_confidence": "medium", - "detected_intent": "list_documents_by_counterparty", - "detected_intent_confidence": "medium", - "extracted_filters": { - "sort": "period_desc", - "limit": 20, - "counterparty": "какие", - "period_from": "2020-07-01", - "period_to": "2020-07-31" - }, - "missing_required_filters": [], - "selected_recipe": "address_documents_by_counterparty_v1", - "mcp_call_status_legacy": "materialized_but_not_matched", - "account_scope_mode": "preferred", - "account_scope_fallback_applied": false, - "anchor_type": "counterparty", - "anchor_value_raw": "какие", - "anchor_value_resolved": "какие", - "resolver_confidence": "medium", - "ambiguity_count": 0, - "match_failure_stage": "materialized_but_not_anchor_matched", - "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", - "mcp_call_status": "materialized_but_not_anchor_matched", - "rows_fetched": 19, - "raw_rows_received": 19, - "rows_after_account_scope": 3, - "rows_after_recipe_filter": 0, - "rows_materialized": 3, - "rows_matched": 0, - "raw_row_keys_sample": [ - "Период", - "Регистратор", - "СчетДт", - "СчетКт", - "РЎСѓРјРјР°", - "Контрагент", - "Period", - "Registrator", - "Amount" - ], - "materialization_drop_reason": "none", - "account_token_raw": null, - "account_token_normalized": null, - "account_scope_fields_checked": [ - "account_dt", - "account_kt", - "registrator", - "analytics" - ], - "account_scope_match_strategy": "account_code_regex_plus_alias_map_v1", - "account_scope_drop_reason": "not_applicable", - "runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS", - "limited_reason_category": "missing_anchor", - "response_type": "LIMITED_WITH_REASON", - "execution_lane": "address_query", - "llm_decomposition_applied": true, - "llm_decomposition_attempted": true, - "llm_provider_used": "local", - "llm_decomposition_trace_id": "RoUZKlMB3aYY2a", - "llm_decomposition_effective_message": "скажите, какие документы есть РІ РЎР’Рљ Р·Р° июль 2020 РіРѕРґР°", - "llm_decomposition_reason": "normalized_fragment_applied", - "answer_structure_v11": null, - "investigation_state_snapshot": null, - "normalized": null, - "normalizer_output": { - "trace_id": "RoUZKlMB3aYY2a", - "prompt_version": "normalizer_v2_0_2", - "applied": true, - "effective_message": "скажите, какие документы есть РІ РЎР’Рљ Р·Р° июль 2020 РіРѕРґР°" - } -} -``` - -## 13. user -message_id: msg-Owg0bJkch5 -created_at: 2026-04-01T18:11:27.616Z -reply_type: n/a - -покажи сальдо РїРѕ 60.01 РЅР° 31.07.20 - -## 14. assistant -message_id: msg-SNuEKPOy4Q -created_at: 2026-04-01T18:11:33.181Z -reply_type: factual -trace_id: address-p8EUzas5Y7 - -Адресный срез РїРѕ счету собран (РїРѕ движениям live MCP). -Строк отобрано: 5. -РЎСѓРјРјР° РїРѕ отобранным движениям: 216200. -1. 2020-07-13T12:00:02Z | Поступление товаров Рё услуг 00000000029 РѕС‚ 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400 -2. 2020-07-13T12:00:02Z | Поступление товаров Рё услуг 00000000029 РѕС‚ 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600 -3. 2020-07-13T12:00:02Z | Поступление товаров Рё услуг 00000000029 РѕС‚ 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400 -4. 2020-07-13T12:00:02Z | Поступление товаров Рё услуг 00000000029 РѕС‚ 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200 - -### technical_debug_payload_json -```json -{ - "trace_id": "address-p8EUzas5Y7", - "prompt_version": "address_query_runtime_v1", - "schema_version": "address_query_runtime_v1", - "fallback_type": "none", - "route_summary": null, - "fragments": [], - "requirements_extracted": [], - "coverage_report": { - "requirements_total": 0, - "requirements_covered": 0, - "requirements_uncovered": [], - "requirements_partially_covered": [], - "clarification_needed_for": [], - "out_of_scope_requirements": [] - }, - "routes": [], - "retrieval_status": [], - "retrieval_results": [], - "answer_grounding_check": { - "status": "grounded", - "route_subject_match": true, - "missing_requirements": [], - "reasons": [ - "address_action_detected", - "address_entity_detected", - "aggregate_signal_detected", - "account_balance_signal_detected" - ], - "why_included_summary": [], - "selection_reason_summary": [] - }, - "dropped_intent_segments": [], - "detected_mode": "address_query", - "detected_mode_confidence": "high", - "query_shape": "AGGREGATE_LOOKUP", - "query_shape_confidence": "high", - "detected_intent": "account_balance_snapshot", - "detected_intent_confidence": "high", - "extracted_filters": { - "sort": "period_desc", - "limit": 20, - "account": "60.01", - "period_from": "2020-07-01", - "period_to": "2020-07-31", - "as_of_date": "2020-07-31" - }, - "missing_required_filters": [], - "selected_recipe": "address_movements_account_snapshot_v1", - "mcp_call_status_legacy": "matched_non_empty", - "account_scope_mode": "strict", - "account_scope_fallback_applied": false, - "anchor_type": "account", - "anchor_value_raw": "60.01", - "anchor_value_resolved": "60.01", - "resolver_confidence": "high", - "ambiguity_count": 0, - "match_failure_stage": "none", - "match_failure_reason": null, - "mcp_call_status": "matched_non_empty", - "rows_fetched": 5, - "raw_rows_received": 5, - "rows_after_account_scope": 5, - "rows_after_recipe_filter": 5, - "rows_materialized": 5, - "rows_matched": 5, - "raw_row_keys_sample": [ - "Период", - "Регистратор", - "СчетДт", - "СчетКт", - "РЎСѓРјРјР°", - "Period", - "Registrator", - "AccountDt", - "AccountKt", - "Amount" - ], - "materialization_drop_reason": "none", - "account_token_raw": "60.01", - "account_token_normalized": "60.1", - "account_scope_fields_checked": [ - "account_dt", - "account_kt", - "registrator", - "analytics" - ], - "account_scope_match_strategy": "account_code_regex_plus_alias_map_v1", - "account_scope_drop_reason": "rows_remaining_after_scope_filter", - "runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS", - "limited_reason_category": null, - "response_type": "FACTUAL_SUMMARY", - "execution_lane": "address_query", - "llm_decomposition_applied": true, - "llm_decomposition_attempted": true, - "llm_provider_used": "local", - "llm_decomposition_trace_id": "-9qzfil1exFqlu", - "llm_decomposition_effective_message": "Показать остаток РїРѕ счету 60.01 РЅР° дату 31.07.2020.", - "llm_decomposition_reason": "normalized_fragment_applied", - "answer_structure_v11": null, - "investigation_state_snapshot": null, - "normalized": null, - "normalizer_output": { - "trace_id": "-9qzfil1exFqlu", - "prompt_version": "normalizer_v2_0_2", - "applied": true, - "effective_message": "Показать остаток РїРѕ счету 60.01 РЅР° дату 31.07.2020." - } -} -``` - -## 15. user -message_id: msg-Shv1Av8RG4 -created_at: 2026-04-01T18:11:34.223Z -reply_type: n/a - -остаток 60 РЅР° 2020.05 - -## 16. assistant -message_id: msg-lENUBxHze0 -created_at: 2026-04-01T18:11:39.266Z -reply_type: factual -trace_id: address-xeRGRITsfe - -Адресный срез РїРѕ счету собран (РїРѕ движениям live MCP). -Строк отобрано: 6. -РЎСѓРјРјР° РїРѕ отобранным движениям: 849499. -1. 2020-05-22T10:14:43Z | Списание СЃ расчетного счета 00000000148 РѕС‚ 22.05.2020 10:14:43 | 60.02 / 51 | 142299 -2. 2020-05-22T10:12:50Z | Списание СЃ расчетного счета 00000000147 РѕС‚ 22.05.2020 10:12:50 | 60.01 / 51 | 75367 -3. 2020-05-22T10:12:50Z | Списание СЃ расчетного счета 00000000147 РѕС‚ 22.05.2020 10:12:50 | 60.01 / 51 | 211833 -4. 2020-05-18T12:00:02Z | Списание СЃ расчетного счета 00000000145 РѕС‚ 18.05.2020 12:00:02 | 60.01 / 51 | 187967 - -### technical_debug_payload_json -```json -{ - "trace_id": "address-xeRGRITsfe", - "prompt_version": "address_query_runtime_v1", - "schema_version": "address_query_runtime_v1", - "fallback_type": "none", - "route_summary": null, - "fragments": [], - "requirements_extracted": [], - "coverage_report": { - "requirements_total": 0, - "requirements_covered": 0, - "requirements_uncovered": [], - "requirements_partially_covered": [], - "clarification_needed_for": [], - "out_of_scope_requirements": [] - }, - "routes": [], - "retrieval_status": [], - "retrieval_results": [], - "answer_grounding_check": { - "status": "grounded", - "route_subject_match": true, - "missing_requirements": [], - "reasons": [ - "address_action_detected", - "address_entity_detected", - "aggregate_signal_detected", - "account_balance_signal_detected" - ], - "why_included_summary": [], - "selection_reason_summary": [] - }, - "dropped_intent_segments": [], - "detected_mode": "address_query", - "detected_mode_confidence": "high", - "query_shape": "AGGREGATE_LOOKUP", - "query_shape_confidence": "high", - "detected_intent": "account_balance_snapshot", - "detected_intent_confidence": "high", - "extracted_filters": { - "sort": "period_desc", - "limit": 20, - "account": "60", - "period_from": "2020-05-01", - "period_to": "2020-05-31", - "as_of_date": "2020-05-31" - }, - "missing_required_filters": [], - "selected_recipe": "address_movements_account_snapshot_v1", - "mcp_call_status_legacy": "matched_non_empty", - "account_scope_mode": "strict", - "account_scope_fallback_applied": false, - "anchor_type": "account", - "anchor_value_raw": "60", - "anchor_value_resolved": "60", - "resolver_confidence": "high", - "ambiguity_count": 0, - "match_failure_stage": "none", - "match_failure_reason": null, - "mcp_call_status": "matched_non_empty", - "rows_fetched": 6, - "raw_rows_received": 6, - "rows_after_account_scope": 6, - "rows_after_recipe_filter": 6, - "rows_materialized": 6, - "rows_matched": 6, - "raw_row_keys_sample": [ - "Период", - "Регистратор", - "СчетДт", - "СчетКт", - "РЎСѓРјРјР°", - "Period", - "Registrator", - "AccountDt", - "AccountKt", - "Amount" - ], - "materialization_drop_reason": "none", - "account_token_raw": "60", - "account_token_normalized": "60", - "account_scope_fields_checked": [ - "account_dt", - "account_kt", - "registrator", - "analytics" - ], - "account_scope_match_strategy": "account_code_regex_plus_alias_map_v1", - "account_scope_drop_reason": "rows_remaining_after_scope_filter", - "runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS", - "limited_reason_category": null, - "response_type": "FACTUAL_SUMMARY", - "execution_lane": "address_query", - "llm_decomposition_applied": true, - "llm_decomposition_attempted": true, - "llm_provider_used": "local", - "llm_decomposition_trace_id": "jEVRKsQNtsnZI-", - "llm_decomposition_effective_message": "остаток РїРѕ счету 60 РЅР° май 2020 РіРѕРґР°", - "llm_decomposition_reason": "normalized_fragment_applied", - "answer_structure_v11": null, - "investigation_state_snapshot": null, - "normalized": null, - "normalizer_output": { - "trace_id": "jEVRKsQNtsnZI-", - "prompt_version": "normalizer_v2_0_2", - "applied": true, - "effective_message": "остаток РїРѕ счету 60 РЅР° май 2020 РіРѕРґР°" - } -} -``` - -## 17. user -message_id: msg-hgB0K2Nmai -created_at: 2026-04-01T18:11:43.137Z -reply_type: n/a - -какой остаток РїРѕ счету 60 РЅР° 2020 май - -## 18. assistant -message_id: msg-_2FWo_xaMf -created_at: 2026-04-01T18:11:48.402Z -reply_type: factual -trace_id: address-jM7DpzDJWW - -Адресный срез РїРѕ счету собран (РїРѕ движениям live MCP). -Строк отобрано: 6. -РЎСѓРјРјР° РїРѕ отобранным движениям: 849499. -1. 2020-05-22T10:14:43Z | Списание СЃ расчетного счета 00000000148 РѕС‚ 22.05.2020 10:14:43 | 60.02 / 51 | 142299 -2. 2020-05-22T10:12:50Z | Списание СЃ расчетного счета 00000000147 РѕС‚ 22.05.2020 10:12:50 | 60.01 / 51 | 75367 -3. 2020-05-22T10:12:50Z | Списание СЃ расчетного счета 00000000147 РѕС‚ 22.05.2020 10:12:50 | 60.01 / 51 | 211833 -4. 2020-05-18T12:00:02Z | Списание СЃ расчетного счета 00000000145 РѕС‚ 18.05.2020 12:00:02 | 60.01 / 51 | 187967 - -### technical_debug_payload_json -```json -{ - "trace_id": "address-jM7DpzDJWW", - "prompt_version": "address_query_runtime_v1", - "schema_version": "address_query_runtime_v1", - "fallback_type": "none", - "route_summary": null, - "fragments": [], - "requirements_extracted": [], - "coverage_report": { - "requirements_total": 0, - "requirements_covered": 0, - "requirements_uncovered": [], - "requirements_partially_covered": [], - "clarification_needed_for": [], - "out_of_scope_requirements": [] - }, - "routes": [], - "retrieval_status": [], - "retrieval_results": [], - "answer_grounding_check": { - "status": "grounded", - "route_subject_match": true, - "missing_requirements": [], - "reasons": [ - "address_action_detected", - "address_entity_detected", - "aggregate_signal_detected", - "account_balance_signal_detected" - ], - "why_included_summary": [], - "selection_reason_summary": [] - }, - "dropped_intent_segments": [], - "detected_mode": "address_query", - "detected_mode_confidence": "high", - "query_shape": "AGGREGATE_LOOKUP", - "query_shape_confidence": "high", - "detected_intent": "account_balance_snapshot", - "detected_intent_confidence": "high", - "extracted_filters": { - "sort": "period_desc", - "limit": 20, - "account": "60", - "period_from": "2020-05-01", - "period_to": "2020-05-31", - "as_of_date": "2020-05-31" - }, - "missing_required_filters": [], - "selected_recipe": "address_movements_account_snapshot_v1", - "mcp_call_status_legacy": "matched_non_empty", - "account_scope_mode": "strict", - "account_scope_fallback_applied": false, - "anchor_type": "account", - "anchor_value_raw": "60", - "anchor_value_resolved": "60", - "resolver_confidence": "high", - "ambiguity_count": 0, - "match_failure_stage": "none", - "match_failure_reason": null, - "mcp_call_status": "matched_non_empty", - "rows_fetched": 6, - "raw_rows_received": 6, - "rows_after_account_scope": 6, - "rows_after_recipe_filter": 6, - "rows_materialized": 6, - "rows_matched": 6, - "raw_row_keys_sample": [ - "Период", - "Регистратор", - "СчетДт", - "СчетКт", - "РЎСѓРјРјР°", - "Period", - "Registrator", - "AccountDt", - "AccountKt", - "Amount" - ], - "materialization_drop_reason": "none", - "account_token_raw": "60", - "account_token_normalized": "60", - "account_scope_fields_checked": [ - "account_dt", - "account_kt", - "registrator", - "analytics" - ], - "account_scope_match_strategy": "account_code_regex_plus_alias_map_v1", - "account_scope_drop_reason": "rows_remaining_after_scope_filter", - "runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS", - "limited_reason_category": null, - "response_type": "FACTUAL_SUMMARY", - "execution_lane": "address_query", - "llm_decomposition_applied": true, - "llm_decomposition_attempted": true, - "llm_provider_used": "local", - "llm_decomposition_trace_id": "bNmxpcIb4gNL5c", - "llm_decomposition_effective_message": "Определить остаток РїРѕ счету 60 РЅР° май 2020 РіРѕРґР°.", - "llm_decomposition_reason": "normalized_fragment_applied", - "answer_structure_v11": null, - "investigation_state_snapshot": null, - "normalized": null, - "normalizer_output": { - "trace_id": "bNmxpcIb4gNL5c", - "prompt_version": "normalizer_v2_0_2", - "applied": true, - "effective_message": "Определить остаток РїРѕ счету 60 РЅР° май 2020 РіРѕРґР°." - } -} -``` - -## 19. user -message_id: msg-2kabWwJ0a- -created_at: 2026-04-01T18:11:49.844Z -reply_type: n/a - -60 счет остаток РЅР° май 2020 покажи - -## 20. assistant -message_id: msg-snFcqGnS4n -created_at: 2026-04-01T18:11:54.483Z -reply_type: factual -trace_id: address-J2kDdLcuMp - -Адресный срез РїРѕ счету собран (РїРѕ движениям live MCP). -Строк отобрано: 6. -РЎСѓРјРјР° РїРѕ отобранным движениям: 849499. -1. 2020-05-22T10:14:43Z | Списание СЃ расчетного счета 00000000148 РѕС‚ 22.05.2020 10:14:43 | 60.02 / 51 | 142299 -2. 2020-05-22T10:12:50Z | Списание СЃ расчетного счета 00000000147 РѕС‚ 22.05.2020 10:12:50 | 60.01 / 51 | 75367 -3. 2020-05-22T10:12:50Z | Списание СЃ расчетного счета 00000000147 РѕС‚ 22.05.2020 10:12:50 | 60.01 / 51 | 211833 -4. 2020-05-18T12:00:02Z | Списание СЃ расчетного счета 00000000145 РѕС‚ 18.05.2020 12:00:02 | 60.01 / 51 | 187967 - -### technical_debug_payload_json -```json -{ - "trace_id": "address-J2kDdLcuMp", - "prompt_version": "address_query_runtime_v1", - "schema_version": "address_query_runtime_v1", - "fallback_type": "none", - "route_summary": null, - "fragments": [], - "requirements_extracted": [], - "coverage_report": { - "requirements_total": 0, - "requirements_covered": 0, - "requirements_uncovered": [], - "requirements_partially_covered": [], - "clarification_needed_for": [], - "out_of_scope_requirements": [] - }, - "routes": [], - "retrieval_status": [], - "retrieval_results": [], - "answer_grounding_check": { - "status": "grounded", - "route_subject_match": true, - "missing_requirements": [], - "reasons": [ - "address_action_detected", - "address_entity_detected", - "aggregate_signal_detected", - "account_balance_signal_detected" - ], - "why_included_summary": [], - "selection_reason_summary": [] - }, - "dropped_intent_segments": [], - "detected_mode": "address_query", - "detected_mode_confidence": "high", - "query_shape": "AGGREGATE_LOOKUP", - "query_shape_confidence": "high", - "detected_intent": "account_balance_snapshot", - "detected_intent_confidence": "high", - "extracted_filters": { - "sort": "period_desc", - "limit": 20, - "account": "60", - "period_from": "2020-05-01", - "period_to": "2020-05-31", - "as_of_date": "2020-05-31" - }, - "missing_required_filters": [], - "selected_recipe": "address_movements_account_snapshot_v1", - "mcp_call_status_legacy": "matched_non_empty", - "account_scope_mode": "strict", - "account_scope_fallback_applied": false, - "anchor_type": "account", - "anchor_value_raw": "60", - "anchor_value_resolved": "60", - "resolver_confidence": "high", - "ambiguity_count": 0, - "match_failure_stage": "none", - "match_failure_reason": null, - "mcp_call_status": "matched_non_empty", - "rows_fetched": 6, - "raw_rows_received": 6, - "rows_after_account_scope": 6, - "rows_after_recipe_filter": 6, - "rows_materialized": 6, - "rows_matched": 6, - "raw_row_keys_sample": [ - "Период", - "Регистратор", - "СчетДт", - "СчетКт", - "РЎСѓРјРјР°", - "Period", - "Registrator", - "AccountDt", - "AccountKt", - "Amount" - ], - "materialization_drop_reason": "none", - "account_token_raw": "60", - "account_token_normalized": "60", - "account_scope_fields_checked": [ - "account_dt", - "account_kt", - "registrator", - "analytics" - ], - "account_scope_match_strategy": "account_code_regex_plus_alias_map_v1", - "account_scope_drop_reason": "rows_remaining_after_scope_filter", - "runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS", - "limited_reason_category": null, - "response_type": "FACTUAL_SUMMARY", - "execution_lane": "address_query", - "llm_decomposition_applied": true, - "llm_decomposition_attempted": true, - "llm_provider_used": "local", - "llm_decomposition_trace_id": "bNzBO68Jvxn-Hy", - "llm_decomposition_effective_message": "Показать остаток РїРѕ счету 60 РЅР° май 2020 РіРѕРґР°.", - "llm_decomposition_reason": "normalized_fragment_applied", - "answer_structure_v11": null, - "investigation_state_snapshot": null, - "normalized": null, - "normalizer_output": { - "trace_id": "bNzBO68Jvxn-Hy", - "prompt_version": "normalizer_v2_0_2", - "applied": true, - "effective_message": "Показать остаток РїРѕ счету 60 РЅР° май 2020 РіРѕРґР°." - } -} -``` - -## 21. user -message_id: msg-N7mDNtEpCH -created_at: 2026-04-01T18:11:56.801Z -reply_type: n/a - -какой остаток РїРѕ счету 60 РЅР° 2020-05-31 - -## 22. assistant -message_id: msg-ExlgDOpISZ -created_at: 2026-04-01T18:12:02.633Z -reply_type: factual -trace_id: address-8Dy09IZ8th - -Адресный срез РїРѕ счету собран (РїРѕ движениям live MCP). -Строк отобрано: 6. -РЎСѓРјРјР° РїРѕ отобранным движениям: 849499. -1. 2020-05-22T10:14:43Z | Списание СЃ расчетного счета 00000000148 РѕС‚ 22.05.2020 10:14:43 | 60.02 / 51 | 142299 -2. 2020-05-22T10:12:50Z | Списание СЃ расчетного счета 00000000147 РѕС‚ 22.05.2020 10:12:50 | 60.01 / 51 | 75367 -3. 2020-05-22T10:12:50Z | Списание СЃ расчетного счета 00000000147 РѕС‚ 22.05.2020 10:12:50 | 60.01 / 51 | 211833 -4. 2020-05-18T12:00:02Z | Списание СЃ расчетного счета 00000000145 РѕС‚ 18.05.2020 12:00:02 | 60.01 / 51 | 187967 - -### technical_debug_payload_json -```json -{ - "trace_id": "address-8Dy09IZ8th", - "prompt_version": "address_query_runtime_v1", - "schema_version": "address_query_runtime_v1", - "fallback_type": "none", - "route_summary": null, - "fragments": [], - "requirements_extracted": [], - "coverage_report": { - "requirements_total": 0, - "requirements_covered": 0, - "requirements_uncovered": [], - "requirements_partially_covered": [], - "clarification_needed_for": [], - "out_of_scope_requirements": [] - }, - "routes": [], - "retrieval_status": [], - "retrieval_results": [], - "answer_grounding_check": { - "status": "grounded", - "route_subject_match": true, - "missing_requirements": [], - "reasons": [ - "address_action_detected", - "address_entity_detected", - "aggregate_signal_detected", - "account_balance_signal_detected" - ], - "why_included_summary": [], - "selection_reason_summary": [] - }, - "dropped_intent_segments": [], - "detected_mode": "address_query", - "detected_mode_confidence": "high", - "query_shape": "AGGREGATE_LOOKUP", - "query_shape_confidence": "high", - "detected_intent": "account_balance_snapshot", - "detected_intent_confidence": "high", - "extracted_filters": { - "sort": "period_desc", - "limit": 20, - "account": "60", - "period_from": "2020-05-01", - "period_to": "2020-05-31", - "as_of_date": "2020-05-31" - }, - "missing_required_filters": [], - "selected_recipe": "address_movements_account_snapshot_v1", - "mcp_call_status_legacy": "matched_non_empty", - "account_scope_mode": "strict", - "account_scope_fallback_applied": false, - "anchor_type": "account", - "anchor_value_raw": "60", - "anchor_value_resolved": "60", - "resolver_confidence": "high", - "ambiguity_count": 0, - "match_failure_stage": "none", - "match_failure_reason": null, - "mcp_call_status": "matched_non_empty", - "rows_fetched": 6, - "raw_rows_received": 6, - "rows_after_account_scope": 6, - "rows_after_recipe_filter": 6, - "rows_materialized": 6, - "rows_matched": 6, - "raw_row_keys_sample": [ - "Период", - "Регистратор", - "СчетДт", - "СчетКт", - "РЎСѓРјРјР°", - "Period", - "Registrator", - "AccountDt", - "AccountKt", - "Amount" - ], - "materialization_drop_reason": "none", - "account_token_raw": "60", - "account_token_normalized": "60", - "account_scope_fields_checked": [ - "account_dt", - "account_kt", - "registrator", - "analytics" - ], - "account_scope_match_strategy": "account_code_regex_plus_alias_map_v1", - "account_scope_drop_reason": "rows_remaining_after_scope_filter", - "runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS", - "limited_reason_category": null, - "response_type": "FACTUAL_SUMMARY", - "execution_lane": "address_query", - "llm_decomposition_applied": true, - "llm_decomposition_attempted": true, - "llm_provider_used": "local", - "llm_decomposition_trace_id": "nODwFas1Q07aGg", - "llm_decomposition_effective_message": "Определить остаток РїРѕ счету 60 РЅР° конец периода 2020-05-31.", - "llm_decomposition_reason": "normalized_fragment_applied", - "answer_structure_v11": null, - "investigation_state_snapshot": null, - "normalized": null, - "normalizer_output": { - "trace_id": "nODwFas1Q07aGg", - "prompt_version": "normalizer_v2_0_2", - "applied": true, - "effective_message": "Определить остаток РїРѕ счету 60 РЅР° конец периода 2020-05-31." - } -} -``` - -## 23. user -message_id: msg-p1GGoKqmlz -created_at: 2026-04-01T18:12:04.378Z -reply_type: n/a - -остаток РїРѕ 60 РЅР° май 2020, РЅРµ Р·Р° весь 2020 - -## 24. assistant -message_id: msg-iyKs0YKyIA -created_at: 2026-04-01T18:12:09.742Z -reply_type: factual -trace_id: address-twQ5OWpTMP - -Адресный срез РїРѕ счету собран (РїРѕ движениям live MCP). -Строк отобрано: 6. -РЎСѓРјРјР° РїРѕ отобранным движениям: 849499. -1. 2020-05-22T10:14:43Z | Списание СЃ расчетного счета 00000000148 РѕС‚ 22.05.2020 10:14:43 | 60.02 / 51 | 142299 -2. 2020-05-22T10:12:50Z | Списание СЃ расчетного счета 00000000147 РѕС‚ 22.05.2020 10:12:50 | 60.01 / 51 | 75367 -3. 2020-05-22T10:12:50Z | Списание СЃ расчетного счета 00000000147 РѕС‚ 22.05.2020 10:12:50 | 60.01 / 51 | 211833 -4. 2020-05-18T12:00:02Z | Списание СЃ расчетного счета 00000000145 РѕС‚ 18.05.2020 12:00:02 | 60.01 / 51 | 187967 - -### technical_debug_payload_json -```json -{ - "trace_id": "address-twQ5OWpTMP", - "prompt_version": "address_query_runtime_v1", - "schema_version": "address_query_runtime_v1", - "fallback_type": "none", - "route_summary": null, - "fragments": [], - "requirements_extracted": [], - "coverage_report": { - "requirements_total": 0, - "requirements_covered": 0, - "requirements_uncovered": [], - "requirements_partially_covered": [], - "clarification_needed_for": [], - "out_of_scope_requirements": [] - }, - "routes": [], - "retrieval_status": [], - "retrieval_results": [], - "answer_grounding_check": { - "status": "grounded", - "route_subject_match": true, - "missing_requirements": [], - "reasons": [ - "address_action_detected", - "address_entity_detected", - "aggregate_signal_detected", - "account_balance_signal_detected" - ], - "why_included_summary": [], - "selection_reason_summary": [] - }, - "dropped_intent_segments": [], - "detected_mode": "address_query", - "detected_mode_confidence": "high", - "query_shape": "AGGREGATE_LOOKUP", - "query_shape_confidence": "high", - "detected_intent": "account_balance_snapshot", - "detected_intent_confidence": "high", - "extracted_filters": { - "sort": "period_desc", - "limit": 20, - "account": "60", - "period_from": "2020-05-01", - "period_to": "2020-05-31", - "as_of_date": "2020-05-31" - }, - "missing_required_filters": [], - "selected_recipe": "address_movements_account_snapshot_v1", - "mcp_call_status_legacy": "matched_non_empty", - "account_scope_mode": "strict", - "account_scope_fallback_applied": false, - "anchor_type": "account", - "anchor_value_raw": "60", - "anchor_value_resolved": "60", - "resolver_confidence": "high", - "ambiguity_count": 0, - "match_failure_stage": "none", - "match_failure_reason": null, - "mcp_call_status": "matched_non_empty", - "rows_fetched": 6, - "raw_rows_received": 6, - "rows_after_account_scope": 6, - "rows_after_recipe_filter": 6, - "rows_materialized": 6, - "rows_matched": 6, - "raw_row_keys_sample": [ - "Период", - "Регистратор", - "СчетДт", - "СчетКт", - "РЎСѓРјРјР°", - "Period", - "Registrator", - "AccountDt", - "AccountKt", - "Amount" - ], - "materialization_drop_reason": "none", - "account_token_raw": "60", - "account_token_normalized": "60", - "account_scope_fields_checked": [ - "account_dt", - "account_kt", - "registrator", - "analytics" - ], - "account_scope_match_strategy": "account_code_regex_plus_alias_map_v1", - "account_scope_drop_reason": "rows_remaining_after_scope_filter", - "runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS", - "limited_reason_category": null, - "response_type": "FACTUAL_SUMMARY", - "execution_lane": "address_query", - "llm_decomposition_applied": true, - "llm_decomposition_attempted": true, - "llm_provider_used": "local", - "llm_decomposition_trace_id": "jloHJk3d_riuLU", - "llm_decomposition_effective_message": "Остаток РїРѕ счету 60 РЅР° конец мая 2020 РіРѕРґР°, РЅРѕ РЅРµ Р·Р° весь 2020 РіРѕРґ.", - "llm_decomposition_reason": "normalized_fragment_applied", - "answer_structure_v11": null, - "investigation_state_snapshot": null, - "normalized": null, - "normalizer_output": { - "trace_id": "jloHJk3d_riuLU", - "prompt_version": "normalizer_v2_0_2", - "applied": true, - "effective_message": "Остаток РїРѕ счету 60 РЅР° конец мая 2020 РіРѕРґР°, РЅРѕ РЅРµ Р·Р° весь 2020 РіРѕРґ." - } -} -``` - -## 25. user -message_id: msg-m28Vw-pZlQ -created_at: 2026-04-01T18:12:13.339Z -reply_type: n/a - -покаж РїРѕ РґРѕРіРѕРІРѕСЂСѓ 1-ПМ/2020 РґРѕРєРё Р·Р° 2020 - -## 26. assistant -message_id: msg-dBgat04dml -created_at: 2026-04-01T18:12:20.115Z -reply_type: partial_coverage -trace_id: address-AwLlNqwhd3 - -Для точного адресного РїРѕРёСЃРєР° РЅРµ хватает обязательного СЏРєРѕСЂСЏ. -Причина: СЏРєРѕСЂСЊ контрагента/РґРѕРіРѕРІРѕСЂР° РЅРµ найден РІ материализованных live-строках. -Что РЅСѓР¶РЅРѕ уточнить: уточните контрагента точным именем или добавьте ИНН/РґРѕРіРѕРІРѕСЂ. - -### technical_debug_payload_json -```json -{ - "trace_id": "address-AwLlNqwhd3", - "prompt_version": "address_query_runtime_v1", - "schema_version": "address_query_runtime_v1", - "fallback_type": "partial", - "route_summary": null, - "fragments": [], - "requirements_extracted": [], - "coverage_report": { - "requirements_total": 0, - "requirements_covered": 0, - "requirements_uncovered": [], - "requirements_partially_covered": [], - "clarification_needed_for": [], - "out_of_scope_requirements": [] - }, - "routes": [], - "retrieval_status": [], - "retrieval_results": [], - "answer_grounding_check": { - "status": "partial", - "route_subject_match": true, - "missing_requirements": [], - "reasons": [ - "address_action_detected", - "address_entity_detected", - "document_list_signal_detected", - "bank_ops_by_counterparty_signal_detected" - ], - "why_included_summary": [], - "selection_reason_summary": [] - }, - "dropped_intent_segments": [], - "detected_mode": "address_query", - "detected_mode_confidence": "high", - "query_shape": "DOCUMENT_LIST", - "query_shape_confidence": "medium", - "detected_intent": "bank_operations_by_counterparty", - "detected_intent_confidence": "medium", - "extracted_filters": { - "sort": "period_desc", - "limit": 20, - "counterparty": "реализации", - "contract": "1-ПМ/2020", - "period_from": "2020-01-01", - "period_to": "2020-12-31" - }, - "missing_required_filters": [], - "selected_recipe": "address_bank_operations_by_counterparty_v1", - "mcp_call_status_legacy": "materialized_but_not_matched", - "account_scope_mode": "preferred", - "account_scope_fallback_applied": false, - "anchor_type": "counterparty", - "anchor_value_raw": "реализации", - "anchor_value_resolved": "реализации", - "resolver_confidence": "medium", - "ambiguity_count": 0, - "match_failure_stage": "materialized_but_not_anchor_matched", - "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", - "mcp_call_status": "materialized_but_not_anchor_matched", - "rows_fetched": 20, - "raw_rows_received": 20, - "rows_after_account_scope": 5, - "rows_after_recipe_filter": 0, - "rows_materialized": 5, - "rows_matched": 0, - "raw_row_keys_sample": [ - "Период", - "Регистратор", - "СчетДт", - "СчетКт", - "РЎСѓРјРјР°", - "Контрагент", - "Period", - "Registrator", - "Amount" - ], - "materialization_drop_reason": "none", - "account_token_raw": null, - "account_token_normalized": null, - "account_scope_fields_checked": [ - "account_dt", - "account_kt", - "registrator", - "analytics" - ], - "account_scope_match_strategy": "account_code_regex_plus_alias_map_v1", - "account_scope_drop_reason": "not_applicable", - "runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS", - "limited_reason_category": "missing_anchor", - "response_type": "LIMITED_WITH_REASON", - "execution_lane": "address_query", - "llm_decomposition_applied": true, - "llm_decomposition_attempted": true, - "llm_provider_used": "local", - "llm_decomposition_trace_id": "rXpmku7B3WpE16", - "llm_decomposition_effective_message": "Показать документы реализации Рё оплаты РїРѕ РґРѕРіРѕРІРѕСЂСѓ 1-ПМ/2020 Р·Р° период 2020 РіРѕРґР°.", - "llm_decomposition_reason": "normalized_fragment_applied", - "answer_structure_v11": null, - "investigation_state_snapshot": null, - "normalized": null, - "normalizer_output": { - "trace_id": "rXpmku7B3WpE16", - "prompt_version": "normalizer_v2_0_2", - "applied": true, - "effective_message": "Показать документы реализации Рё оплаты РїРѕ РґРѕРіРѕРІРѕСЂСѓ 1-ПМ/2020 Р·Р° период 2020 РіРѕРґР°." - } -} -``` - -## 27. user -message_id: msg-10PWV7fBg8 -created_at: 2026-04-01T18:12:22.865Z -reply_type: n/a - -какие документы РїРѕ РґРѕРіРѕРІРѕСЂСѓ 1-ПМ/2020 Р·Р° РІСЃРµ время - -## 28. assistant -message_id: msg-fdXYmtz_KG -created_at: 2026-04-01T18:12:28.292Z -reply_type: partial_coverage -trace_id: address-in9HjHHZQ8 - -Для точного адресного РїРѕРёСЃРєР° РЅРµ хватает обязательного СЏРєРѕСЂСЏ. -Причина: СЏРєРѕСЂСЊ контрагента/РґРѕРіРѕРІРѕСЂР° РЅРµ найден РІ материализованных live-строках. -Что РЅСѓР¶РЅРѕ уточнить: уточните контрагента точным именем или добавьте ИНН/РґРѕРіРѕРІРѕСЂ. - -### technical_debug_payload_json -```json -{ - "trace_id": "address-in9HjHHZQ8", - "prompt_version": "address_query_runtime_v1", - "schema_version": "address_query_runtime_v1", - "fallback_type": "partial", - "route_summary": null, - "fragments": [], - "requirements_extracted": [], - "coverage_report": { - "requirements_total": 0, - "requirements_covered": 0, - "requirements_uncovered": [], - "requirements_partially_covered": [], - "clarification_needed_for": [], - "out_of_scope_requirements": [] - }, - "routes": [], - "retrieval_status": [], - "retrieval_results": [], - "answer_grounding_check": { - "status": "partial", - "route_subject_match": true, - "missing_requirements": [], - "reasons": [ - "address_action_detected", - "address_entity_detected", - "document_list_signal_detected", - "documents_by_counterparty_signal_detected" - ], - "why_included_summary": [], - "selection_reason_summary": [] - }, - "dropped_intent_segments": [], - "detected_mode": "address_query", - "detected_mode_confidence": "high", - "query_shape": "DOCUMENT_LIST", - "query_shape_confidence": "medium", - "detected_intent": "list_documents_by_counterparty", - "detected_intent_confidence": "medium", - "extracted_filters": { - "sort": "period_desc", - "limit": 20, - "counterparty": "СЃРїРёСЃРѕРє", - "contract": "1-ПМ/2020" - }, - "missing_required_filters": [], - "selected_recipe": "address_documents_by_counterparty_v1", - "mcp_call_status_legacy": "materialized_but_not_matched", - "account_scope_mode": "preferred", - "account_scope_fallback_applied": false, - "anchor_type": "counterparty", - "anchor_value_raw": "СЃРїРёСЃРѕРє", - "anchor_value_resolved": "СЃРїРёСЃРѕРє", - "resolver_confidence": "medium", - "ambiguity_count": 0, - "match_failure_stage": "materialized_but_not_anchor_matched", - "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", - "mcp_call_status": "materialized_but_not_anchor_matched", - "rows_fetched": 1000, - "raw_rows_received": 1000, - "rows_after_account_scope": 124, - "rows_after_recipe_filter": 0, - "rows_materialized": 124, - "rows_matched": 0, - "raw_row_keys_sample": [ - "Период", - "Регистратор", - "СчетДт", - "СчетКт", - "РЎСѓРјРјР°", - "Контрагент", - "Period", - "Registrator", - "Amount" - ], - "materialization_drop_reason": "none", - "account_token_raw": null, - "account_token_normalized": null, - "account_scope_fields_checked": [ - "account_dt", - "account_kt", - "registrator", - "analytics" - ], - "account_scope_match_strategy": "account_code_regex_plus_alias_map_v1", - "account_scope_drop_reason": "not_applicable", - "runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS", - "limited_reason_category": "missing_anchor", - "response_type": "LIMITED_WITH_REASON", - "execution_lane": "address_query", - "llm_decomposition_applied": true, - "llm_decomposition_attempted": true, - "llm_provider_used": "local", - "llm_decomposition_trace_id": "rMJuXi00N7b75p", - "llm_decomposition_effective_message": "Получить СЃРїРёСЃРѕРє документов РїРѕ РґРѕРіРѕРІРѕСЂСѓ 1-ПМ/2020 Р·Р° весь период.", - "llm_decomposition_reason": "normalized_fragment_applied", - "answer_structure_v11": null, - "investigation_state_snapshot": null, - "normalized": null, - "normalizer_output": { - "trace_id": "rMJuXi00N7b75p", - "prompt_version": "normalizer_v2_0_2", - "applied": true, - "effective_message": "Получить СЃРїРёСЃРѕРє документов РїРѕ РґРѕРіРѕРІРѕСЂСѓ 1-ПМ/2020 Р·Р° весь период." - } -} -``` - -## 29. user -message_id: msg-9jn1yhqi8v -created_at: 2026-04-01T18:12:30.547Z -reply_type: n/a - -есть ли долг РїРѕ РґРѕРіРѕРІРѕСЂСѓ 1-ПМ/2020 РЅР° 2020-07-31 - -## 30. assistant -message_id: msg-JI9-AOQ5Hw -created_at: 2026-04-01T18:12:37.248Z -reply_type: partial_coverage -trace_id: address-ZslqLl6ocP - -Для точного адресного РїРѕРёСЃРєР° РЅРµ хватает обязательного СЏРєРѕСЂСЏ. -Причина: СЏРєРѕСЂСЊ контрагента/РґРѕРіРѕРІРѕСЂР° РЅРµ найден РІ материализованных live-строках. -Что РЅСѓР¶РЅРѕ уточнить: уточните контрагента точным именем или добавьте ИНН/РґРѕРіРѕРІРѕСЂ. - -### technical_debug_payload_json -```json -{ - "trace_id": "address-ZslqLl6ocP", - "prompt_version": "address_query_runtime_v1", - "schema_version": "address_query_runtime_v1", - "fallback_type": "partial", - "route_summary": null, - "fragments": [], - "requirements_extracted": [], - "coverage_report": { - "requirements_total": 0, - "requirements_covered": 0, - "requirements_uncovered": [], - "requirements_partially_covered": [], - "clarification_needed_for": [], - "out_of_scope_requirements": [] - }, - "routes": [], - "retrieval_status": [], - "retrieval_results": [], - "answer_grounding_check": { - "status": "partial", - "route_subject_match": true, - "missing_requirements": [], - "reasons": [ - "address_action_detected", - "address_entity_detected", - "verify_signal_detected", - "open_contract_signal_detected" - ], - "why_included_summary": [], - "selection_reason_summary": [] - }, - "dropped_intent_segments": [], - "detected_mode": "address_query", - "detected_mode_confidence": "high", - "query_shape": "VERIFY_FACTUAL", - "query_shape_confidence": "medium", - "detected_intent": "list_open_contracts", - "detected_intent_confidence": "medium", - "extracted_filters": { - "sort": "period_desc", - "limit": 20, - "contract": "1-ПМ/2020 РЅР° дату 2020-07-31", - "period_from": "2020-07-01", - "period_to": "2020-07-31" - }, - "missing_required_filters": [], - "selected_recipe": "address_open_contracts_candidates_v1", - "mcp_call_status_legacy": "materialized_but_not_matched", - "account_scope_mode": "preferred", - "account_scope_fallback_applied": true, - "anchor_type": "contract", - "anchor_value_raw": "1-ПМ/2020 РЅР° дату 2020-07-31", - "anchor_value_resolved": "1-ПМ/2020 РЅР° дату 2020-07-31", - "resolver_confidence": "medium", - "ambiguity_count": 0, - "match_failure_stage": "materialized_but_not_anchor_matched", - "match_failure_reason": "contract_anchor_not_matched_in_materialized_rows", - "mcp_call_status": "materialized_but_not_anchor_matched", - "rows_fetched": 20, - "raw_rows_received": 20, - "rows_after_account_scope": 20, - "rows_after_recipe_filter": 0, - "rows_materialized": 20, - "rows_matched": 0, - "raw_row_keys_sample": [ - "Период", - "Регистратор", - "СчетДт", - "СчетКт", - "РЎСѓРјРјР°", - "Period", - "Registrator", - "AccountDt", - "AccountKt", - "Amount" - ], - "materialization_drop_reason": "none", - "account_token_raw": null, - "account_token_normalized": null, - "account_scope_fields_checked": [ - "account_dt", - "account_kt", - "registrator", - "analytics" - ], - "account_scope_match_strategy": "account_code_regex_plus_alias_map_v1", - "account_scope_drop_reason": "not_applicable", - "runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS", - "limited_reason_category": "missing_anchor", - "response_type": "LIMITED_WITH_REASON", - "execution_lane": "address_query", - "llm_decomposition_applied": true, - "llm_decomposition_attempted": true, - "llm_provider_used": "local", - "llm_decomposition_trace_id": "pGUc5lWNAPubym", - "llm_decomposition_effective_message": "Проверить наличие задолженности РїРѕ РґРѕРіРѕРІРѕСЂСѓ 1-ПМ/2020 РЅР° дату 2020-07-31.", - "llm_decomposition_reason": "normalized_fragment_applied", - "answer_structure_v11": null, - "investigation_state_snapshot": null, - "normalized": null, - "normalizer_output": { - "trace_id": "pGUc5lWNAPubym", - "prompt_version": "normalizer_v2_0_2", - "applied": true, - "effective_message": "Проверить наличие задолженности РїРѕ РґРѕРіРѕРІРѕСЂСѓ 1-ПМ/2020 РЅР° дату 2020-07-31." - } -} -``` - -## 31. user -message_id: msg-YsHahh39hh -created_at: 2026-04-01T18:12:38.728Z -reply_type: n/a - -какие хвосты РїРѕ РґРѕРіРѕРІРѕСЂСѓ 1-ПМ/2020 РЅР° дату 31.07.2020 - -## 32. assistant -message_id: msg-fRl7UBdYRZ -created_at: 2026-04-01T18:12:45.377Z -reply_type: partial_coverage -trace_id: address-zqGb7BhNxb - -Для точного адресного РїРѕРёСЃРєР° РЅРµ хватает обязательного СЏРєРѕСЂСЏ. -Причина: СЏРєРѕСЂСЊ контрагента/РґРѕРіРѕРІРѕСЂР° РЅРµ найден РІ материализованных live-строках. -Что РЅСѓР¶РЅРѕ уточнить: уточните контрагента точным именем или добавьте ИНН/РґРѕРіРѕРІРѕСЂ. - -### technical_debug_payload_json -```json -{ - "trace_id": "address-zqGb7BhNxb", - "prompt_version": "address_query_runtime_v1", - "schema_version": "address_query_runtime_v1", - "fallback_type": "partial", - "route_summary": null, - "fragments": [], - "requirements_extracted": [], - "coverage_report": { - "requirements_total": 0, - "requirements_covered": 0, - "requirements_uncovered": [], - "requirements_partially_covered": [], - "clarification_needed_for": [], - "out_of_scope_requirements": [] - }, - "routes": [], - "retrieval_status": [], - "retrieval_results": [], - "answer_grounding_check": { - "status": "partial", - "route_subject_match": true, - "missing_requirements": [], - "reasons": [ - "address_action_detected", - "address_entity_detected", - "object_signal_detected", - "open_items_signal_detected" - ], - "why_included_summary": [], - "selection_reason_summary": [] - }, - "dropped_intent_segments": [], - "detected_mode": "address_query", - "detected_mode_confidence": "high", - "query_shape": "OBJECT_LOOKUP", - "query_shape_confidence": "medium", - "detected_intent": "open_items_by_counterparty_or_contract", - "detected_intent_confidence": "medium", - "extracted_filters": { - "sort": "period_desc", - "limit": 20, - "contract": "1-ПМ/2020 РЅР° дату 31", - "period_from": "2020-07-01", - "period_to": "2020-07-31" - }, - "missing_required_filters": [], - "selected_recipe": "address_open_items_by_party_or_contract_v1", - "mcp_call_status_legacy": "materialized_but_not_matched", - "account_scope_mode": "preferred", - "account_scope_fallback_applied": true, - "anchor_type": "contract", - "anchor_value_raw": "1-ПМ/2020 РЅР° дату 31", - "anchor_value_resolved": "1-ПМ/2020 РЅР° дату 31", - "resolver_confidence": "medium", - "ambiguity_count": 0, - "match_failure_stage": "materialized_but_not_anchor_matched", - "match_failure_reason": "contract_anchor_not_matched_in_materialized_rows", - "mcp_call_status": "materialized_but_not_anchor_matched", - "rows_fetched": 20, - "raw_rows_received": 20, - "rows_after_account_scope": 20, - "rows_after_recipe_filter": 0, - "rows_materialized": 20, - "rows_matched": 0, - "raw_row_keys_sample": [ - "Период", - "Регистратор", - "СчетДт", - "СчетКт", - "РЎСѓРјРјР°", - "Period", - "Registrator", - "AccountDt", - "AccountKt", - "Amount" - ], - "materialization_drop_reason": "none", - "account_token_raw": null, - "account_token_normalized": null, - "account_scope_fields_checked": [ - "account_dt", - "account_kt", - "registrator", - "analytics" - ], - "account_scope_match_strategy": "account_code_regex_plus_alias_map_v1", - "account_scope_drop_reason": "not_applicable", - "runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS", - "limited_reason_category": "missing_anchor", - "response_type": "LIMITED_WITH_REASON", - "execution_lane": "address_query", - "llm_decomposition_applied": true, - "llm_decomposition_attempted": true, - "llm_provider_used": "local", - "llm_decomposition_trace_id": "9pV-WK3b5EIuDB", - "llm_decomposition_effective_message": "Показать хвосты (РЅРµ сходящиеся записи) для РґРѕРіРѕРІРѕСЂР° 1-ПМ/2020 РЅР° дату 31.07.2020.", - "llm_decomposition_reason": "normalized_fragment_applied", - "answer_structure_v11": null, - "investigation_state_snapshot": null, - "normalized": null, - "normalizer_output": { - "trace_id": "9pV-WK3b5EIuDB", - "prompt_version": "normalizer_v2_0_2", - "applied": true, - "effective_message": "Показать хвосты (РЅРµ сходящиеся записи) для РґРѕРіРѕРІРѕСЂР° 1-ПМ/2020 РЅР° дату 31.07.2020." - } -} -``` - -## 33. user -message_id: msg-hAj09doz2W -created_at: 2026-04-01T18:12:47.360Z -reply_type: n/a - -какие платежи были РїРѕ СЃРІРє РІ 2020 - -## 34. assistant -message_id: msg-PKxa-pu9I_ -created_at: 2026-04-01T18:12:53.490Z -reply_type: factual -trace_id: address-BDEkvEuPsP - -Собран СЃРїРёСЃРѕРє банковских операций РїРѕ контрагенту (live address lane). -Строк отобрано: 3. -1. 2020-12-30T12:00:00Z | Поступление РЅР° расчетный счет 00000000044 РѕС‚ 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа РЎР’Рљ -2. 2020-12-16T16:20:53Z | Поступление РЅР° расчетный счет 00000000043 РѕС‚ 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа РЎР’Рљ -3. 2020-12-14T12:00:00Z | Поступление РЅР° расчетный счет 00000000042 РѕС‚ 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа РЎР’Рљ - -### technical_debug_payload_json -```json -{ - "trace_id": "address-BDEkvEuPsP", - "prompt_version": "address_query_runtime_v1", - "schema_version": "address_query_runtime_v1", - "fallback_type": "none", - "route_summary": null, - "fragments": [], - "requirements_extracted": [], - "coverage_report": { - "requirements_total": 0, - "requirements_covered": 0, - "requirements_uncovered": [], - "requirements_partially_covered": [], - "clarification_needed_for": [], - "out_of_scope_requirements": [] - }, - "routes": [], - "retrieval_status": [], - "retrieval_results": [], - "answer_grounding_check": { - "status": "grounded", - "route_subject_match": true, - "missing_requirements": [], - "reasons": [ - "address_action_detected", - "address_entity_detected", - "shape_not_detected", - "bank_ops_by_counterparty_signal_detected" - ], - "why_included_summary": [], - "selection_reason_summary": [] - }, - "dropped_intent_segments": [], - "detected_mode": "address_query", - "detected_mode_confidence": "high", - "query_shape": "UNKNOWN", - "query_shape_confidence": "low", - "detected_intent": "bank_operations_by_counterparty", - "detected_intent_confidence": "medium", - "extracted_filters": { - "sort": "period_desc", - "limit": 20, - "counterparty": "РЎР’Рљ", - "period_from": "2020-01-01", - "period_to": "2020-12-31" - }, - "missing_required_filters": [], - "selected_recipe": "address_bank_operations_by_counterparty_v1", - "mcp_call_status_legacy": "matched_non_empty", - "account_scope_mode": "preferred", - "account_scope_fallback_applied": false, - "anchor_type": "counterparty", - "anchor_value_raw": "РЎР’Рљ", - "anchor_value_resolved": "Группа РЎР’Рљ", - "resolver_confidence": "medium", - "ambiguity_count": 0, - "match_failure_stage": "none", - "match_failure_reason": null, - "mcp_call_status": "matched_non_empty", - "rows_fetched": 20, - "raw_rows_received": 20, - "rows_after_account_scope": 5, - "rows_after_recipe_filter": 3, - "rows_materialized": 5, - "rows_matched": 3, - "raw_row_keys_sample": [ - "Период", - "Регистратор", - "СчетДт", - "СчетКт", - "РЎСѓРјРјР°", - "Контрагент", - "Period", - "Registrator", - "Amount" - ], - "materialization_drop_reason": "none", - "account_token_raw": null, - "account_token_normalized": null, - "account_scope_fields_checked": [ - "account_dt", - "account_kt", - "registrator", - "analytics" - ], - "account_scope_match_strategy": "account_code_regex_plus_alias_map_v1", - "account_scope_drop_reason": "not_applicable", - "runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS", - "limited_reason_category": null, - "response_type": "FACTUAL_LIST", - "execution_lane": "address_query", - "llm_decomposition_applied": true, - "llm_decomposition_attempted": true, - "llm_provider_used": "local", - "llm_decomposition_trace_id": "MeM1kENv4q-7yb", - "llm_decomposition_effective_message": "Какие оплаты были РїРѕ РЎР’Рљ РІ 2020 РіРѕРґСѓ?", - "llm_decomposition_reason": "normalized_fragment_applied", - "answer_structure_v11": null, - "investigation_state_snapshot": null, - "normalized": null, - "normalizer_output": { - "trace_id": "MeM1kENv4q-7yb", - "prompt_version": "normalizer_v2_0_2", - "applied": true, - "effective_message": "Какие оплаты были РїРѕ РЎР’Рљ РІ 2020 РіРѕРґСѓ?" - } -} -``` - -## 35. user -message_id: msg-YyadSJmgKI -created_at: 2026-04-01T18:12:54.274Z -reply_type: n/a - -были ли поступления РѕС‚ СЃРІРє Р·Р° июль 2020 - -## 36. assistant -message_id: msg-VNzpJpKK_I -created_at: 2026-04-01T18:12:59.580Z -reply_type: factual -trace_id: address-zqFDJdF9n5 - -Собран СЃРїРёСЃРѕРє банковских операций РїРѕ контрагенту (live address lane). -Строк отобрано: 2. -1. 2020-07-30T12:00:00Z | Поступление РЅР° расчетный счет 00000000029 РѕС‚ 30.07.2020 12:00:00 | 0 / 0 | 20000 | аналитика: Группа РЎР’Рљ -2. 2020-07-27T12:00:00Z | Поступление РЅР° расчетный счет 00000000028 РѕС‚ 27.07.2020 12:00:00 | 0 / 0 | 40860 | аналитика: Группа РЎР’Рљ - -### technical_debug_payload_json -```json -{ - "trace_id": "address-zqFDJdF9n5", - "prompt_version": "address_query_runtime_v1", - "schema_version": "address_query_runtime_v1", - "fallback_type": "none", - "route_summary": null, - "fragments": [], - "requirements_extracted": [], - "coverage_report": { - "requirements_total": 0, - "requirements_covered": 0, - "requirements_uncovered": [], - "requirements_partially_covered": [], - "clarification_needed_for": [], - "out_of_scope_requirements": [] - }, - "routes": [], - "retrieval_status": [], - "retrieval_results": [], - "answer_grounding_check": { - "status": "grounded", - "route_subject_match": true, - "missing_requirements": [], - "reasons": [ - "address_entity_detected", - "verify_signal_detected", - "bank_ops_by_counterparty_signal_detected" - ], - "why_included_summary": [], - "selection_reason_summary": [] - }, - "dropped_intent_segments": [], - "detected_mode": "address_query", - "detected_mode_confidence": "medium", - "query_shape": "VERIFY_FACTUAL", - "query_shape_confidence": "medium", - "detected_intent": "bank_operations_by_counterparty", - "detected_intent_confidence": "medium", - "extracted_filters": { - "sort": "period_desc", - "limit": 20, - "counterparty": "РЎР’Рљ", - "period_from": "2020-07-01", - "period_to": "2020-07-31" - }, - "missing_required_filters": [], - "selected_recipe": "address_bank_operations_by_counterparty_v1", - "mcp_call_status_legacy": "matched_non_empty", - "account_scope_mode": "preferred", - "account_scope_fallback_applied": false, - "anchor_type": "counterparty", - "anchor_value_raw": "РЎР’Рљ", - "anchor_value_resolved": "Группа РЎР’Рљ", - "resolver_confidence": "medium", - "ambiguity_count": 0, - "match_failure_stage": "none", - "match_failure_reason": null, - "mcp_call_status": "matched_non_empty", - "rows_fetched": 19, - "raw_rows_received": 19, - "rows_after_account_scope": 3, - "rows_after_recipe_filter": 2, - "rows_materialized": 3, - "rows_matched": 2, - "raw_row_keys_sample": [ - "Период", - "Регистратор", - "СчетДт", - "СчетКт", - "РЎСѓРјРјР°", - "Контрагент", - "Period", - "Registrator", - "Amount" - ], - "materialization_drop_reason": "none", - "account_token_raw": null, - "account_token_normalized": null, - "account_scope_fields_checked": [ - "account_dt", - "account_kt", - "registrator", - "analytics" - ], - "account_scope_match_strategy": "account_code_regex_plus_alias_map_v1", - "account_scope_drop_reason": "not_applicable", - "runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS", - "limited_reason_category": null, - "response_type": "FACTUAL_LIST", - "execution_lane": "address_query", - "llm_decomposition_applied": true, - "llm_decomposition_attempted": true, - "llm_provider_used": "local", - "llm_decomposition_trace_id": "6uHBs1zrmKH2EP", - "llm_decomposition_effective_message": "Проверить поступления РѕС‚ контрагента РЎР’Рљ Р·Р° период июль 2020.", - "llm_decomposition_reason": "normalized_fragment_applied", - "answer_structure_v11": null, - "investigation_state_snapshot": null, - "normalized": null, - "normalizer_output": { - "trace_id": "6uHBs1zrmKH2EP", - "prompt_version": "normalizer_v2_0_2", - "applied": true, - "effective_message": "Проверить поступления РѕС‚ контрагента РЎР’Рљ Р·Р° период июль 2020." - } -} -``` - -## 37. user -message_id: msg-0gkBYaOos3 -created_at: 2026-04-01T18:13:01.636Z -reply_type: n/a - -покажи списания СЃ расчетного счета РїРѕ СЃРІРє Р·Р° 2020 - -## 38. assistant -message_id: msg-QadkD7JxPX -created_at: 2026-04-01T18:13:07.714Z -reply_type: factual -trace_id: address-D8oRmY8-o9 - -Собран СЃРїРёСЃРѕРє банковских операций РїРѕ контрагенту (live address lane). -Строк отобрано: 3. -1. 2020-12-30T12:00:00Z | Поступление РЅР° расчетный счет 00000000044 РѕС‚ 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа РЎР’Рљ -2. 2020-12-16T16:20:53Z | Поступление РЅР° расчетный счет 00000000043 РѕС‚ 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа РЎР’Рљ -3. 2020-12-14T12:00:00Z | Поступление РЅР° расчетный счет 00000000042 РѕС‚ 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа РЎР’Рљ - -### technical_debug_payload_json -```json -{ - "trace_id": "address-D8oRmY8-o9", - "prompt_version": "address_query_runtime_v1", - "schema_version": "address_query_runtime_v1", - "fallback_type": "none", - "route_summary": null, - "fragments": [], - "requirements_extracted": [], - "coverage_report": { - "requirements_total": 0, - "requirements_covered": 0, - "requirements_uncovered": [], - "requirements_partially_covered": [], - "clarification_needed_for": [], - "out_of_scope_requirements": [] - }, - "routes": [], - "retrieval_status": [], - "retrieval_results": [], - "answer_grounding_check": { - "status": "grounded", - "route_subject_match": true, - "missing_requirements": [], - "reasons": [ - "address_action_detected", - "address_entity_detected", - "shape_not_detected", - "bank_ops_by_counterparty_signal_detected" - ], - "why_included_summary": [], - "selection_reason_summary": [] - }, - "dropped_intent_segments": [], - "detected_mode": "address_query", - "detected_mode_confidence": "high", - "query_shape": "UNKNOWN", - "query_shape_confidence": "low", - "detected_intent": "bank_operations_by_counterparty", - "detected_intent_confidence": "medium", - "extracted_filters": { - "sort": "period_desc", - "limit": 20, - "account": "51", - "counterparty": "РЎР’Рљ", - "period_from": "2020-01-01", - "period_to": "2020-12-31" - }, - "missing_required_filters": [], - "selected_recipe": "address_bank_operations_by_counterparty_v1", - "mcp_call_status_legacy": "matched_non_empty", - "account_scope_mode": "preferred", - "account_scope_fallback_applied": false, - "anchor_type": "counterparty", - "anchor_value_raw": "РЎР’Рљ", - "anchor_value_resolved": "Группа РЎР’Рљ", - "resolver_confidence": "medium", - "ambiguity_count": 0, - "match_failure_stage": "none", - "match_failure_reason": null, - "mcp_call_status": "matched_non_empty", - "rows_fetched": 20, - "raw_rows_received": 20, - "rows_after_account_scope": 5, - "rows_after_recipe_filter": 3, - "rows_materialized": 5, - "rows_matched": 3, - "raw_row_keys_sample": [ - "Период", - "Регистратор", - "СчетДт", - "СчетКт", - "РЎСѓРјРјР°", - "Контрагент", - "Period", - "Registrator", - "Amount" - ], - "materialization_drop_reason": "none", - "account_token_raw": "51", - "account_token_normalized": "51", - "account_scope_fields_checked": [ - "account_dt", - "account_kt", - "registrator", - "analytics" - ], - "account_scope_match_strategy": "account_code_regex_plus_alias_map_v1", - "account_scope_drop_reason": "not_applicable", - "runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS", - "limited_reason_category": null, - "response_type": "FACTUAL_LIST", - "execution_lane": "address_query", - "llm_decomposition_applied": true, - "llm_decomposition_attempted": true, - "llm_provider_used": "local", - "llm_decomposition_trace_id": "l-J3V7H0SAmc1Y", - "llm_decomposition_effective_message": "Показать списания СЃРѕ счета 51 РїРѕ РЎР’Рљ РІ 2020 РіРѕРґСѓ.", - "llm_decomposition_reason": "normalized_fragment_applied", - "answer_structure_v11": null, - "investigation_state_snapshot": null, - "normalized": null, - "normalizer_output": { - "trace_id": "l-J3V7H0SAmc1Y", - "prompt_version": "normalizer_v2_0_2", - "applied": true, - "effective_message": "Показать списания СЃРѕ счета 51 РїРѕ РЎР’Рљ РІ 2020 РіРѕРґСѓ." - } -} -``` - -## 39. user -message_id: msg-wVg77J7Kr9 -created_at: 2026-04-01T18:13:09.862Z -reply_type: n/a - -СЃРІРє Р·Р° 2020 покаж РІСЃРµ поступления - -## 40. assistant -message_id: msg-X6fB7FHMiC -created_at: 2026-04-01T18:13:15.153Z -reply_type: partial_coverage -trace_id: address-MfSQlm9bdB - -Этот запрос РЅРµ РїРѕРґС…РѕРґРёС‚ РїРѕРґ address_query V1. -Причина: intent РїРѕРєР° РЅРµ поддержан РІ address V1. -Что РЅСѓР¶РЅРѕ уточнить: переформулируйте РІРѕРїСЂРѕСЃ как адресный lookup РїРѕ счету/контрагенту/РґРѕРіРѕРІРѕСЂСѓ. - -### technical_debug_payload_json -```json -{ - "trace_id": "address-MfSQlm9bdB", - "prompt_version": "address_query_runtime_v1", - "schema_version": "address_query_runtime_v1", - "fallback_type": "partial", - "route_summary": null, - "fragments": [], - "requirements_extracted": [], - "coverage_report": { - "requirements_total": 0, - "requirements_covered": 0, - "requirements_uncovered": [], - "requirements_partially_covered": [], - "clarification_needed_for": [], - "out_of_scope_requirements": [] - }, - "routes": [], - "retrieval_status": [], - "retrieval_results": [], - "answer_grounding_check": { - "status": "partial", - "route_subject_match": true, - "missing_requirements": [], - "reasons": [ - "address_action_detected", - "address_entity_detected", - "document_list_signal_detected", - "intent_not_supported_in_v1" - ], - "why_included_summary": [], - "selection_reason_summary": [] - }, - "dropped_intent_segments": [], - "detected_mode": "address_query", - "detected_mode_confidence": "high", - "query_shape": "DOCUMENT_LIST", - "query_shape_confidence": "medium", - "detected_intent": "unknown", - "detected_intent_confidence": "low", - "extracted_filters": { - "sort": "period_desc", - "limit": 20, - "period_from": "2020-01-01", - "period_to": "2020-12-31" - }, - "missing_required_filters": [], - "selected_recipe": null, - "mcp_call_status_legacy": "skipped", - "account_scope_mode": "strict", - "account_scope_fallback_applied": false, - "anchor_type": "unknown", - "anchor_value_raw": null, - "anchor_value_resolved": null, - "resolver_confidence": "low", - "ambiguity_count": 0, - "match_failure_stage": "none", - "match_failure_reason": null, - "mcp_call_status": "skipped", - "rows_fetched": 0, - "raw_rows_received": 0, - "rows_after_account_scope": 0, - "rows_after_recipe_filter": 0, - "rows_materialized": 0, - "rows_matched": 0, - "raw_row_keys_sample": [], - "materialization_drop_reason": "none", - "account_token_raw": null, - "account_token_normalized": null, - "account_scope_fields_checked": [ - "account_dt", - "account_kt", - "registrator", - "analytics" - ], - "account_scope_match_strategy": "account_code_regex_plus_alias_map_v1", - "account_scope_drop_reason": "not_applicable", - "runtime_readiness": "DEEP_ONLY", - "limited_reason_category": "unsupported", - "response_type": "LIMITED_WITH_REASON", - "execution_lane": "address_query", - "llm_decomposition_applied": true, - "llm_decomposition_attempted": true, - "llm_provider_used": "local", - "llm_decomposition_trace_id": "c-8Kz0d8zNLsWL", - "llm_decomposition_effective_message": "РЎР’Рљ Р·Р° 2020 РіРѕРґ, показать РІСЃРµ поступления", - "llm_decomposition_reason": "normalized_fragment_applied", - "answer_structure_v11": null, - "investigation_state_snapshot": null, - "normalized": null, - "normalizer_output": { - "trace_id": "c-8Kz0d8zNLsWL", - "prompt_version": "normalizer_v2_0_2", - "applied": true, - "effective_message": "РЎР’Рљ Р·Р° 2020 РіРѕРґ, показать РІСЃРµ поступления" - } -} -``` - -## 41. user -message_id: msg-duAZADZemo -created_at: 2026-04-01T18:13:17.866Z -reply_type: n/a - -покажи документы РїРѕ СЃРІРє Р·Р° 2020 - -## 42. assistant -message_id: msg-jhu51wE9k0 -created_at: 2026-04-01T18:13:22.966Z -reply_type: factual -trace_id: address-XdlYQBPRu0 - -Собран СЃРїРёСЃРѕРє документов РїРѕ контрагенту (live address lane). -Строк отобрано: 3. -1. 2020-12-30T12:00:00Z | Поступление РЅР° расчетный счет 00000000044 РѕС‚ 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа РЎР’Рљ -2. 2020-12-16T16:20:53Z | Поступление РЅР° расчетный счет 00000000043 РѕС‚ 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа РЎР’Рљ -3. 2020-12-14T12:00:00Z | Поступление РЅР° расчетный счет 00000000042 РѕС‚ 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа РЎР’Рљ - -### technical_debug_payload_json -```json -{ - "trace_id": "address-XdlYQBPRu0", - "prompt_version": "address_query_runtime_v1", - "schema_version": "address_query_runtime_v1", - "fallback_type": "none", - "route_summary": null, - "fragments": [], - "requirements_extracted": [], - "coverage_report": { - "requirements_total": 0, - "requirements_covered": 0, - "requirements_uncovered": [], - "requirements_partially_covered": [], - "clarification_needed_for": [], - "out_of_scope_requirements": [] - }, - "routes": [], - "retrieval_status": [], - "retrieval_results": [], - "answer_grounding_check": { - "status": "grounded", - "route_subject_match": true, - "missing_requirements": [], - "reasons": [ - "address_action_detected", - "address_entity_detected", - "document_list_signal_detected", - "documents_by_counterparty_signal_detected" - ], - "why_included_summary": [], - "selection_reason_summary": [] - }, - "dropped_intent_segments": [], - "detected_mode": "address_query", - "detected_mode_confidence": "high", - "query_shape": "DOCUMENT_LIST", - "query_shape_confidence": "medium", - "detected_intent": "list_documents_by_counterparty", - "detected_intent_confidence": "medium", - "extracted_filters": { - "sort": "period_desc", - "limit": 20, - "counterparty": "РЎР’Рљ", - "period_from": "2020-01-01", - "period_to": "2020-12-31" - }, - "missing_required_filters": [], - "selected_recipe": "address_documents_by_counterparty_v1", - "mcp_call_status_legacy": "matched_non_empty", - "account_scope_mode": "preferred", - "account_scope_fallback_applied": false, - "anchor_type": "counterparty", - "anchor_value_raw": "РЎР’Рљ", - "anchor_value_resolved": "Группа РЎР’Рљ", - "resolver_confidence": "medium", - "ambiguity_count": 0, - "match_failure_stage": "none", - "match_failure_reason": null, - "mcp_call_status": "matched_non_empty", - "rows_fetched": 20, - "raw_rows_received": 20, - "rows_after_account_scope": 5, - "rows_after_recipe_filter": 3, - "rows_materialized": 5, - "rows_matched": 3, - "raw_row_keys_sample": [ - "Период", - "Регистратор", - "СчетДт", - "СчетКт", - "РЎСѓРјРјР°", - "Контрагент", - "Period", - "Registrator", - "Amount" - ], - "materialization_drop_reason": "none", - "account_token_raw": null, - "account_token_normalized": null, - "account_scope_fields_checked": [ - "account_dt", - "account_kt", - "registrator", - "analytics" - ], - "account_scope_match_strategy": "account_code_regex_plus_alias_map_v1", - "account_scope_drop_reason": "not_applicable", - "runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS", - "limited_reason_category": null, - "response_type": "FACTUAL_LIST", - "execution_lane": "address_query", - "llm_decomposition_applied": true, - "llm_decomposition_attempted": true, - "llm_provider_used": "local", - "llm_decomposition_trace_id": "aG6yLo3bqk2K3Z", - "llm_decomposition_effective_message": "Показать документы РїРѕ РЎР’Рљ Р·Р° 2020 РіРѕРґ.", - "llm_decomposition_reason": "normalized_fragment_applied", - "answer_structure_v11": null, - "investigation_state_snapshot": null, - "normalized": null, - "normalizer_output": { - "trace_id": "aG6yLo3bqk2K3Z", - "prompt_version": "normalizer_v2_0_2", - "applied": true, - "effective_message": "Показать документы РїРѕ РЎР’Рљ Р·Р° 2020 РіРѕРґ." - } -} -``` - -## 43. user -message_id: msg-oXD35WmrlY -created_at: 2026-04-01T18:13:25.459Z -reply_type: n/a - -Р° теперь только Р·Р° май 2020 - -## 44. assistant -message_id: msg-5NUlHEAe6L -created_at: 2026-04-01T18:13:27.281Z -reply_type: factual -trace_id: address-KhRwtkP2c1 - -РџРѕ РѕРєРЅСѓ 2020-05-01..2020-05-31 строк РЅРµ найдено; показаны ближайшие доступные данные 2020-07-27..2021-11-10. -Собран СЃРїРёСЃРѕРє документов РїРѕ контрагенту (live address lane). -Строк отобрано: 26. -1. 2021-11-10T12:00:07Z | Поступление РЅР° расчетный счет 00000000013 РѕС‚ 10.11.2021 12:00:07 | 0 / 0 | 20000 | аналитика: Группа РЎР’Рљ -2. 2021-09-29T12:00:03Z | Поступление РЅР° расчетный счет 00000000012 РѕС‚ 29.09.2021 12:00:03 | 0 / 0 | 50000 | аналитика: Группа РЎР’Рљ -3. 2021-08-31T12:00:04Z | Поступление РЅР° расчетный счет 00000000011 РѕС‚ 31.08.2021 12:00:04 | 0 / 0 | 120500 | аналитика: Группа РЎР’Рљ -4. 2021-06-22T12:00:00Z | Поступление РЅР° расчетный счет 00000000010 РѕС‚ 22.06.2021 12:00:00 | 0 / 0 | 498630 | аналитика: Группа РЎР’Рљ -5. 2021-06-09T12:00:05Z | Поступление РЅР° расчетный счет 00000000009 РѕС‚ 09.06.2021 12:00:05 | 0 / 0 | 418960 | аналитика: Группа РЎР’Рљ -6. 2021-04-28T12:00:08Z | Поступление РЅР° расчетный счет 00000000008 РѕС‚ 28.04.2021 12:00:08 | 0 / 0 | 564300 | аналитика: Группа РЎР’Рљ -7. 2021-04-22T12:00:00Z | Поступление РЅР° расчетный счет 00000000007 РѕС‚ 22.04.2021 12:00:00 | 0 / 0 | 982420 | аналитика: Группа РЎР’Рљ -8. 2021-04-13T12:00:11Z | Поступление РЅР° расчетный счет 00000000006 РѕС‚ 13.04.2021 12:00:11 | 0 / 0 | 1882400 | аналитика: Группа РЎР’Рљ -9. 2021-03-25T12:00:02Z | Поступление РЅР° расчетный счет 00000000005 РѕС‚ 25.03.2021 12:00:02 | 0 / 0 | 644315 | аналитика: Группа РЎР’Рљ -10. 2021-03-24T12:00:03Z | Поступление РЅР° расчетный счет 00000000004 РѕС‚ 24.03.2021 12:00:03 | 0 / 0 | 1219990 | аналитика: Группа РЎР’Рљ -11. 2021-03-18T12:00:00Z | Поступление РЅР° расчетный счет 00000000003 РѕС‚ 18.03.2021 12:00:00 | 0 / 0 | 1425310 | аналитика: Группа РЎР’Рљ -12. 2021-03-12T12:00:03Z | Поступление РЅР° расчетный счет 00000000002 РѕС‚ 12.03.2021 12:00:03 | 0 / 0 | 214600 | аналитика: Группа РЎР’Рљ -13. 2021-02-19T12:00:01Z | Поступление РЅР° расчетный счет 00000000001 РѕС‚ 19.02.2021 12:00:01 | 0 / 0 | 518600 | аналитика: Группа РЎР’Рљ -14. 2020-12-30T12:00:00Z | Поступление РЅР° расчетный счет 00000000044 РѕС‚ 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа РЎР’Рљ -15. 2020-12-16T16:20:53Z | Поступление РЅР° расчетный счет 00000000043 РѕС‚ 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа РЎР’Рљ -16. 2020-12-14T12:00:00Z | Поступление РЅР° расчетный счет 00000000042 РѕС‚ 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа РЎР’Рљ -17. 2020-11-30T12:00:07Z | Поступление РЅР° расчетный счет 00000000041 РѕС‚ 30.11.2020 12:00:07 | 0 / 0 | 38900 | аналитика: Группа РЎР’Рљ -18. 2020-11-19T12:00:04Z | Поступление РЅР° расчетный счет 00000000039 РѕС‚ 19.11.2020 12:00:04 | 0 / 0 | 3320600 | аналитика: Группа РЎР’Рљ -19. 2020-11-18T12:00:05Z | Поступление РЅР° расчетный счет 00000000038 РѕС‚ 18.11.2020 12:00:05 | 0 / 0 | 745300 | аналитика: Группа РЎР’Рљ -20. 2020-11-18T12:00:04Z | Поступление РЅР° расчетный счет 00000000037 РѕС‚ 18.11.2020 12:00:04 | 0 / 0 | 320000 | аналитика: Группа РЎР’Рљ -21. 2020-11-13T12:00:03Z | Поступление РЅР° расчетный счет 00000000036 РѕС‚ 13.11.2020 12:00:03 | 0 / 0 | 313600 | аналитика: Группа РЎР’Рљ -22. 2020-11-10T15:39:13Z | Поступление РЅР° расчетный счет 00000000035 РѕС‚ 10.11.2020 15:39:13 | 0 / 0 | 328300 | аналитика: Группа РЎР’Рљ -23. 2020-10-26T12:00:00Z | Поступление РЅР° расчетный счет 00000000034 РѕС‚ 26.10.2020 12:00:00 | 0 / 0 | 175000 | аналитика: Группа РЎР’Рљ -24. 2020-08-20T12:00:06Z | Поступление РЅР° расчетный счет 00000000032 РѕС‚ 20.08.2020 12:00:06 | 0 / 0 | 3126005 | аналитика: Группа РЎР’Рљ -25. 2020-07-30T12:00:00Z | Поступление РЅР° расчетный счет 00000000029 РѕС‚ 30.07.2020 12:00:00 | 0 / 0 | 20000 | аналитика: Группа РЎР’Рљ -26. 2020-07-27T12:00:00Z | Поступление РЅР° расчетный счет 00000000028 РѕС‚ 27.07.2020 12:00:00 | 0 / 0 | 40860 | аналитика: Группа РЎР’Рљ - -### technical_debug_payload_json -```json -{ - "trace_id": "address-KhRwtkP2c1", - "prompt_version": "address_query_runtime_v1", - "schema_version": "address_query_runtime_v1", - "fallback_type": "none", - "route_summary": null, - "fragments": [], - "requirements_extracted": [], - "coverage_report": { - "requirements_total": 0, - "requirements_covered": 0, - "requirements_uncovered": [], - "requirements_partially_covered": [], - "clarification_needed_for": [], - "out_of_scope_requirements": [] - }, - "routes": [], - "retrieval_status": [], - "retrieval_results": [], - "answer_grounding_check": { - "status": "grounded", - "route_subject_match": true, - "missing_requirements": [], - "reasons": [ - "no_address_or_deep_signal", - "address_mode_from_followup_context", - "shape_not_detected", - "intent_not_supported_in_v1", - "intent_from_followup_context", - "counterparty_from_followup_context", - "address_followup_context_applied", - "period_window_auto_broadened_to_available_data" - ], - "why_included_summary": [], - "selection_reason_summary": [] - }, - "dropped_intent_segments": [], - "detected_mode": "address_query", - "detected_mode_confidence": "medium", - "query_shape": "UNKNOWN", - "query_shape_confidence": "low", - "detected_intent": "list_documents_by_counterparty", - "detected_intent_confidence": "low", - "extracted_filters": { - "sort": "period_desc", - "limit": 20, - "period_from": "2020-05-01", - "period_to": "2020-05-31", - "counterparty": "РЎР’Рљ" - }, - "missing_required_filters": [], - "selected_recipe": "address_documents_by_counterparty_v1", - "mcp_call_status_legacy": "matched_non_empty", - "account_scope_mode": "preferred", - "account_scope_fallback_applied": false, - "anchor_type": "counterparty", - "anchor_value_raw": "РЎР’Рљ", - "anchor_value_resolved": "Группа РЎР’Рљ", - "resolver_confidence": "medium", - "ambiguity_count": 0, - "match_failure_stage": "none", - "match_failure_reason": null, - "mcp_call_status": "matched_non_empty", - "rows_fetched": 1000, - "raw_rows_received": 1000, - "rows_after_account_scope": 124, - "rows_after_recipe_filter": 26, - "rows_materialized": 124, - "rows_matched": 26, - "raw_row_keys_sample": [ - "Период", - "Регистратор", - "СчетДт", - "СчетКт", - "РЎСѓРјРјР°", - "Контрагент", - "Period", - "Registrator", - "Amount" - ], - "materialization_drop_reason": "none", - "account_token_raw": null, - "account_token_normalized": null, - "account_scope_fields_checked": [ - "account_dt", - "account_kt", - "registrator", - "analytics" - ], - "account_scope_match_strategy": "account_code_regex_plus_alias_map_v1", - "account_scope_drop_reason": "not_applicable", - "runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS", - "limited_reason_category": null, - "response_type": "FACTUAL_LIST", - "execution_lane": "address_query", - "llm_decomposition_applied": false, - "llm_decomposition_attempted": false, - "llm_provider_used": "local", - "llm_decomposition_trace_id": null, - "llm_decomposition_effective_message": "Р° теперь только Р·Р° май 2020", - "llm_decomposition_reason": "not_address_like", - "answer_structure_v11": null, - "investigation_state_snapshot": null, - "normalized": null, - "normalizer_output": null -} -``` - -## 45. user -message_id: msg-0O2322hPYV -created_at: 2026-04-01T18:13:31.257Z -reply_type: n/a - -Р° РїРѕ счету 60.01 РЅР° ту Р¶Рµ дату - -## 46. assistant -message_id: msg-5wQQ78XlVm -created_at: 2026-04-01T18:13:37.363Z -reply_type: factual -trace_id: address-tcv7YeM7ZZ - -Адресный срез РїРѕ счету собран (РїРѕ движениям live MCP). -Строк отобрано: 200. -РЎСѓРјРјР° РїРѕ отобранным движениям: 31878451.5. -1. 2022-04-18T12:00:00Z | Поступление товаров Рё услуг 00000000007 РѕС‚ 18.04.2022 12:00:00 | 97.21 / 60.01 | 14790 -2. 2022-04-18T12:00:00Z | Поступление товаров Рё услуг 00000000007 РѕС‚ 18.04.2022 12:00:00 | 60.01 / 60.02 | 14790 -3. 2022-01-20T12:00:01Z | Списание СЃ расчетного счета 00000000003 РѕС‚ 20.01.2022 12:00:01 | 60.01 / 51 | 1705109.5 -4. 2021-05-17T12:00:00Z | Поступление товаров Рё услуг 00000000009 РѕС‚ 17.05.2021 12:00:00 | 19.04 / 60.01 | 12000 - -### technical_debug_payload_json -```json -{ - "trace_id": "address-tcv7YeM7ZZ", - "prompt_version": "address_query_runtime_v1", - "schema_version": "address_query_runtime_v1", - "fallback_type": "none", - "route_summary": null, - "fragments": [], - "requirements_extracted": [], - "coverage_report": { - "requirements_total": 0, - "requirements_covered": 0, - "requirements_uncovered": [], - "requirements_partially_covered": [], - "clarification_needed_for": [], - "out_of_scope_requirements": [] - }, - "routes": [], - "retrieval_status": [], - "retrieval_results": [], - "answer_grounding_check": { - "status": "grounded", - "route_subject_match": true, - "missing_requirements": [], - "reasons": [ - "address_entity_detected", - "shape_not_detected", - "account_balance_signal_detected" - ], - "why_included_summary": [], - "selection_reason_summary": [] - }, - "dropped_intent_segments": [], - "detected_mode": "address_query", - "detected_mode_confidence": "medium", - "query_shape": "UNKNOWN", - "query_shape_confidence": "low", - "detected_intent": "account_balance_snapshot", - "detected_intent_confidence": "high", - "extracted_filters": { - "sort": "period_desc", - "limit": 20, - "account": "60.01", - "as_of_date": "2026-04-01" - }, - "missing_required_filters": [], - "selected_recipe": "address_movements_account_snapshot_v1", - "mcp_call_status_legacy": "matched_non_empty", - "account_scope_mode": "strict", - "account_scope_fallback_applied": false, - "anchor_type": "account", - "anchor_value_raw": "60.01", - "anchor_value_resolved": "60.01", - "resolver_confidence": "high", - "ambiguity_count": 0, - "match_failure_stage": "none", - "match_failure_reason": null, - "mcp_call_status": "matched_non_empty", - "rows_fetched": 200, - "raw_rows_received": 200, - "rows_after_account_scope": 200, - "rows_after_recipe_filter": 200, - "rows_materialized": 200, - "rows_matched": 200, - "raw_row_keys_sample": [ - "Период", - "Регистратор", - "СчетДт", - "СчетКт", - "РЎСѓРјРјР°", - "Period", - "Registrator", - "AccountDt", - "AccountKt", - "Amount" - ], - "materialization_drop_reason": "none", - "account_token_raw": "60.01", - "account_token_normalized": "60.1", - "account_scope_fields_checked": [ - "account_dt", - "account_kt", - "registrator", - "analytics" - ], - "account_scope_match_strategy": "account_code_regex_plus_alias_map_v1", - "account_scope_drop_reason": "rows_remaining_after_scope_filter", - "runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS", - "limited_reason_category": null, - "response_type": "FACTUAL_SUMMARY", - "execution_lane": "address_query", - "llm_decomposition_applied": true, - "llm_decomposition_attempted": true, - "llm_provider_used": "local", - "llm_decomposition_trace_id": "yz8CubzkEAVtBU", - "llm_decomposition_effective_message": "РїРѕ счету 60.01 РЅР° ту Р¶Рµ дату", - "llm_decomposition_reason": "normalized_fragment_applied", - "answer_structure_v11": null, - "investigation_state_snapshot": null, - "normalized": null, - "normalizer_output": { - "trace_id": "yz8CubzkEAVtBU", - "prompt_version": "normalizer_v2_0_2", - "applied": true, - "effective_message": "РїРѕ счету 60.01 РЅР° ту Р¶Рµ дату" - } -} -``` - -## 47. user -message_id: msg-eethW3zYW1 -created_at: 2026-04-01T18:13:38.537Z -reply_type: n/a - -бля епт покажи РґРѕРєРё РїРѕ СЃРІРє Р·Р° 20Р№ - -## 48. assistant -message_id: msg-NZvEvSYgcN -created_at: 2026-04-01T18:13:44.390Z -reply_type: factual -trace_id: address--v-Mtq3FAh - -Собран СЃРїРёСЃРѕРє документов РїРѕ контрагенту (live address lane). -Строк отобрано: 3. -1. 2020-12-30T12:00:00Z | Поступление РЅР° расчетный счет 00000000044 РѕС‚ 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа РЎР’Рљ -2. 2020-12-16T16:20:53Z | Поступление РЅР° расчетный счет 00000000043 РѕС‚ 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа РЎР’Рљ -3. 2020-12-14T12:00:00Z | Поступление РЅР° расчетный счет 00000000042 РѕС‚ 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа РЎР’Рљ - -### technical_debug_payload_json -```json -{ - "trace_id": "address--v-Mtq3FAh", - "prompt_version": "address_query_runtime_v1", - "schema_version": "address_query_runtime_v1", - "fallback_type": "none", - "route_summary": null, - "fragments": [], - "requirements_extracted": [], - "coverage_report": { - "requirements_total": 0, - "requirements_covered": 0, - "requirements_uncovered": [], - "requirements_partially_covered": [], - "clarification_needed_for": [], - "out_of_scope_requirements": [] - }, - "routes": [], - "retrieval_status": [], - "retrieval_results": [], - "answer_grounding_check": { - "status": "grounded", - "route_subject_match": true, - "missing_requirements": [], - "reasons": [ - "address_action_detected", - "address_entity_detected", - "document_list_signal_detected", - "documents_by_counterparty_signal_detected" - ], - "why_included_summary": [], - "selection_reason_summary": [] - }, - "dropped_intent_segments": [], - "detected_mode": "address_query", - "detected_mode_confidence": "high", - "query_shape": "DOCUMENT_LIST", - "query_shape_confidence": "medium", - "detected_intent": "list_documents_by_counterparty", - "detected_intent_confidence": "medium", - "extracted_filters": { - "sort": "period_desc", - "limit": 20, - "counterparty": "РЎР’Рљ", - "period_from": "2020-01-01", - "period_to": "2020-12-31" - }, - "missing_required_filters": [], - "selected_recipe": "address_documents_by_counterparty_v1", - "mcp_call_status_legacy": "matched_non_empty", - "account_scope_mode": "preferred", - "account_scope_fallback_applied": false, - "anchor_type": "counterparty", - "anchor_value_raw": "РЎР’Рљ", - "anchor_value_resolved": "Группа РЎР’Рљ", - "resolver_confidence": "medium", - "ambiguity_count": 0, - "match_failure_stage": "none", - "match_failure_reason": null, - "mcp_call_status": "matched_non_empty", - "rows_fetched": 20, - "raw_rows_received": 20, - "rows_after_account_scope": 5, - "rows_after_recipe_filter": 3, - "rows_materialized": 5, - "rows_matched": 3, - "raw_row_keys_sample": [ - "Период", - "Регистратор", - "СчетДт", - "СчетКт", - "РЎСѓРјРјР°", - "Контрагент", - "Period", - "Registrator", - "Amount" - ], - "materialization_drop_reason": "none", - "account_token_raw": null, - "account_token_normalized": null, - "account_scope_fields_checked": [ - "account_dt", - "account_kt", - "registrator", - "analytics" - ], - "account_scope_match_strategy": "account_code_regex_plus_alias_map_v1", - "account_scope_drop_reason": "not_applicable", - "runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS", - "limited_reason_category": null, - "response_type": "FACTUAL_LIST", - "execution_lane": "address_query", - "llm_decomposition_applied": true, - "llm_decomposition_attempted": true, - "llm_provider_used": "local", - "llm_decomposition_trace_id": "qB2Y8qO8-uq1L9", - "llm_decomposition_effective_message": "покажи документы РїРѕ РЎР’Рљ Р·Р° 20-Р№ период", - "llm_decomposition_reason": "normalized_fragment_applied", - "answer_structure_v11": null, - "investigation_state_snapshot": null, - "normalized": null, - "normalizer_output": { - "trace_id": "qB2Y8qO8-uq1L9", - "prompt_version": "normalizer_v2_0_2", - "applied": true, - "effective_message": "покажи документы РїРѕ РЎР’Рљ Р·Р° 20-Р№ период" - } -} -``` - - +# ADDRESS Test Questions (обновлено 2026-04-02) + +Важно: +1. Цепочки `FOLLOW-UP` прогоняй в одной сессии подряд. +2. Блоки `SINGLE` можно гонять по отдельности. +3. Для проверок смотри не только ответ, но и `technical_debug_payload_json`. + +## SINGLE: Документы по контрагенту +1. Покажи документы по СВК за 2020 год +2. свк доки за 20й +3. что по свк за 2020 выведи все доки плиз +4. Какие документы по контрагенту СВК за весь период +5. какие есть доки по свк с 2000 по 2025 год +6. Покажи документы по контрагенту СВК + +## SINGLE: Банковские операции +7. Покажи банковские операции по СВК за 2020 +8. Какие платежи по СВК в 2020 +9. Покажи банковские операции по контрагенту СВК за весь период + +## SINGLE: Договор +10. Покажи документы по договору 15/24 за 2020 +11. Покажи документы по договору 15/24 +12. Покажи банковские операции по договору 15/24 +13. Есть ли долг по договору 15/24 на 2020-07-31 +14. Покажи операции по договору 15/24 за весь период + +## SINGLE: Сальдо / остаток +15. Покажи сальдо по счету 60.01 на дату 2020-07-31 +16. Какой остаток по счету 60 на 2020.05 +17. Какой остаток по счету 60 на 2020 май +18. Какие документы формируют остаток по счету 60.01 на 2020-07-31 +19. Какой остаток по счету 62 на сегодня + +## FOLLOW-UP CHAIN A (одна сессия) +20. Покажи документы по СВК за 2020 +21. а теперь только за май 2020 +22. а за все время? +23. а по счету 60.01 на ту же дату + +## FOLLOW-UP CHAIN B (одна сессия) +24. Покажи банковские операции по договору 15/24 +25. а за 2020 год +26. а теперь только за май 2020 +27. а по счету 51 на ту же дату + +## FOLLOW-UP CHAIN C (одна сессия) +28. Какой остаток по счету 60 на 2020.05 +29. а теперь по 60.01 +30. а на ту же дату по 62 + +## NOISY / TYPO +31. бля епт покажи доки по свк за 20й +32. свк 20 год - покажи доки плс +33. покажи банк опер по дог 15/24 пж +34. остаток 60 на 2020 май покеж +35. по свк за весь период че есть + +## NEGATIVE / LIMIT CASE +36. Покажи технические константы конфигурации +37. кто президент США +## SINGLE: Дебиторка / Кредиторка +38. Кто нам должен на 2020-12-31 +39. Кому мы должны на 2020-12-31 +40. Покажи дебиторскую задолженность за 2020 +41. Покажи кредиторскую задолженность за 2020 + +## SINGLE: Незакрытые договоры / открытые позиции +42. Покажи незакрытые договоры на 2020-12-31 +43. Какие открытые договоры есть на 2020-12-31 +44. Покажи хвосты по контрагенту СВК на 2020-12-31 +45. Есть ли незакрытые позиции по договору 15/24 на 2020-12-31 +46. Покажи открытые позиции по договору 15/24 + +## FOLLOW-UP CHAIN D (одна сессия) +47. Покажи документы по контрагенту СВК за 2020 +48. а только за июль 2020 +49. а теперь банковские операции +50. а за весь период +51. а сальдо по счету 51 на ту же дату + +## FOLLOW-UP CHAIN E (одна сессия) +52. Покажи незакрытые позиции по контрагенту СВК +53. а на 2020-12-31 +54. а теперь по договору 15/24 +55. а только банковские операции +56. а за май 2020 + +## EN / Transliteration Stress +57. show documents by counterparty svk for 2020 +58. show bank operations by contract 15/24 +59. kakoi ostatok po schetu 60.01 na 2020-07-31 +60. kto nam dolzhen na 2020-12-31 diff --git a/docs/ADDRESS/question_sets/address_slang_stress_2026-04-02.json b/docs/ADDRESS/question_sets/address_slang_stress_2026-04-02.json new file mode 100644 index 0000000..d74ee02 --- /dev/null +++ b/docs/ADDRESS/question_sets/address_slang_stress_2026-04-02.json @@ -0,0 +1,68 @@ +[ + { "id": "S001", "text": "свк доки за 2020 покаж пж", "expected_intent": "list_documents_by_counterparty", "expected_mode": "address_query" }, + { "id": "S002", "text": "покеж все доки по свк за 20 год", "expected_intent": "list_documents_by_counterparty", "expected_mode": "address_query" }, + { "id": "S003", "text": "дай список документов по свк за 2020", "expected_intent": "list_documents_by_counterparty", "expected_mode": "address_query" }, + { "id": "S004", "text": "какие у свк есть доки за 2020?", "expected_intent": "list_documents_by_counterparty", "expected_mode": "address_query" }, + { "id": "S005", "text": "че по свк по докам за 2020 год", "expected_intent": "list_documents_by_counterparty", "expected_mode": "address_query" }, + { "id": "S006", "text": "ёпт покажи доки по свк за 2020", "expected_intent": "list_documents_by_counterparty", "expected_mode": "address_query" }, + { "id": "S007", "text": "бля, доки свк 2020 вывали", "expected_intent": "list_documents_by_counterparty", "expected_mode": "address_query" }, + { "id": "S008", "text": "svk docs for 2020 please", "expected_intent": "list_documents_by_counterparty", "expected_mode": "address_query" }, + { "id": "S009", "text": "docs by counterparty svk year 2020", "expected_intent": "list_documents_by_counterparty", "expected_mode": "address_query" }, + { "id": "S010", "text": "по контрагенту свк покаж документы за 2020", "expected_intent": "list_documents_by_counterparty", "expected_mode": "address_query" }, + { "id": "S011", "text": "плс доки по свк 2020", "expected_intent": "list_documents_by_counterparty", "expected_mode": "address_query" }, + { "id": "S012", "text": "свк док за 2020 гони", "expected_intent": "list_documents_by_counterparty", "expected_mode": "address_query" }, + + { "id": "S013", "text": "по свк банковские операции за 2020 покаж", "expected_intent": "bank_operations_by_counterparty", "expected_mode": "address_query" }, + { "id": "S014", "text": "свк выписка банка 2020", "expected_intent": "bank_operations_by_counterparty", "expected_mode": "address_query" }, + { "id": "S015", "text": "платежи по свк за 2020 выведи", "expected_intent": "bank_operations_by_counterparty", "expected_mode": "address_query" }, + { "id": "S016", "text": "оплаты по свк за 2020", "expected_intent": "bank_operations_by_counterparty", "expected_mode": "address_query" }, + { "id": "S017", "text": "свк банк опер за 2020", "expected_intent": "bank_operations_by_counterparty", "expected_mode": "address_query" }, + { "id": "S018", "text": "че у свк по банку за 2020", "expected_intent": "bank_operations_by_counterparty", "expected_mode": "address_query" }, + { "id": "S019", "text": "свк списания/поступления за 2020", "expected_intent": "bank_operations_by_counterparty", "expected_mode": "address_query" }, + { "id": "S020", "text": "bank ops by svk for 2020", "expected_intent": "bank_operations_by_counterparty", "expected_mode": "address_query" }, + { "id": "S021", "text": "transactions by counterparty svk 2020", "expected_intent": "bank_operations_by_counterparty", "expected_mode": "address_query" }, + { "id": "S022", "text": "бля, по свк банковские платежки 2020", "expected_intent": "bank_operations_by_counterparty", "expected_mode": "address_query" }, + + { "id": "S023", "text": "сальдо по счету 60.01 на дату 2020-07-31", "expected_intent": "account_balance_snapshot", "expected_mode": "address_query" }, + { "id": "S024", "text": "остаток по счету 60.01 на 2020.05", "expected_intent": "account_balance_snapshot", "expected_mode": "address_query" }, + { "id": "S025", "text": "покажи остаток по 60.01 за май 2020", "expected_intent": "account_balance_snapshot", "expected_mode": "address_query" }, + { "id": "S026", "text": "счет 60 остаток на май 2020", "expected_intent": "account_balance_snapshot", "expected_mode": "address_query" }, + { "id": "S027", "text": "баланс account 60.01 as of 2020-07-31", "expected_intent": "account_balance_snapshot", "expected_mode": "address_query" }, + { "id": "S028", "text": "60.01 saldo на 31.07.2020", "expected_intent": "account_balance_snapshot", "expected_mode": "address_query" }, + { "id": "S029", "text": "сколько на счете 60 на конец 2020-05", "expected_intent": "account_balance_snapshot", "expected_mode": "address_query" }, + { "id": "S030", "text": "дай остаток 60.02 на 2020-12-31", "expected_intent": "account_balance_snapshot", "expected_mode": "address_query" }, + { "id": "S031", "text": "епт, сальдо по счету 62.01 на 2020-12-31", "expected_intent": "account_balance_snapshot", "expected_mode": "address_query" }, + { "id": "S032", "text": "плс остаток по счету 51 на 2020-06-30", "expected_intent": "account_balance_snapshot", "expected_mode": "address_query" }, + { "id": "S033", "text": "как там по счету 60.01 на 2020.07?", "expected_intent": "account_balance_snapshot", "expected_mode": "address_query" }, + { "id": "S034", "text": "сальдо 60 на 2020", "expected_intent": "account_balance_snapshot", "expected_mode": "address_query" }, + + { "id": "S035", "text": "какие документы формируют остаток по счету 60.01 на 2020-07-31", "expected_intent": "documents_forming_balance", "expected_mode": "address_query" }, + { "id": "S036", "text": "из чего состоит остаток по счету 60 на 2020.05", "expected_intent": "documents_forming_balance", "expected_mode": "address_query" }, + { "id": "S037", "text": "раскрой остаток 60.01 по документам на конец июля 2020", "expected_intent": "documents_forming_balance", "expected_mode": "address_query" }, + { "id": "S038", "text": "доки под остатком 60.01 на 2020-07-31", "expected_intent": "documents_forming_balance", "expected_mode": "address_query" }, + { "id": "S039", "text": "documents forming balance for account 60.01 as of 2020-07-31", "expected_intent": "documents_forming_balance", "expected_mode": "address_query" }, + { "id": "S040", "text": "бля, какие доки формируют остаток 60.01 на 2020-05-31", "expected_intent": "documents_forming_balance", "expected_mode": "address_query" }, + { "id": "S041", "text": "по счету 62.01 раскрой остаток документами на 2020-12-31", "expected_intent": "documents_forming_balance", "expected_mode": "address_query" }, + { "id": "S042", "text": "из чего остаток по счету 51 на 2020-06-30", "expected_intent": "documents_forming_balance", "expected_mode": "address_query" }, + + { "id": "S043", "text": "покажи документы по договору 15/24 за 2020", "expected_intent": "list_documents_by_contract", "expected_mode": "address_query" }, + { "id": "S044", "text": "доки по дог. 15/24 за 2020", "expected_intent": "list_documents_by_contract", "expected_mode": "address_query" }, + { "id": "S045", "text": "какие документы по контракту 15/24", "expected_intent": "list_documents_by_contract", "expected_mode": "address_query" }, + { "id": "S046", "text": "docs by contract 15/24 year 2020", "expected_intent": "list_documents_by_contract", "expected_mode": "address_query" }, + { "id": "S047", "text": "бля, покажи по договору 15/24 доки", "expected_intent": "list_documents_by_contract", "expected_mode": "address_query" }, + { "id": "S048", "text": "договор 15/24 документы", "expected_intent": "list_documents_by_contract", "expected_mode": "address_query" }, + { "id": "S049", "text": "плс документы договор №15/24", "expected_intent": "list_documents_by_contract", "expected_mode": "address_query" }, + { "id": "S050", "text": "покеж документы по 15/24", "expected_intent": "list_documents_by_contract", "expected_mode": "address_query" }, + + { "id": "S051", "text": "банковские операции по договору 15/24", "expected_intent": "bank_operations_by_contract", "expected_mode": "address_query" }, + { "id": "S052", "text": "платежи по договору 15/24", "expected_intent": "bank_operations_by_contract", "expected_mode": "address_query" }, + { "id": "S053", "text": "выписка по договору 15/24", "expected_intent": "bank_operations_by_contract", "expected_mode": "address_query" }, + { "id": "S054", "text": "bank ops by contract 15/24", "expected_intent": "bank_operations_by_contract", "expected_mode": "address_query" }, + { "id": "S055", "text": "ёпт, покажи банк операции по дог 15/24", "expected_intent": "bank_operations_by_contract", "expected_mode": "address_query" }, + { "id": "S056", "text": "по контракту 15/24 платежки", "expected_intent": "bank_operations_by_contract", "expected_mode": "address_query" }, + + { "id": "S057", "text": "покажи сальдо по счету 60 за 2020", "expected_intent": "account_balance_snapshot", "expected_mode": "address_query", "session": "chain_balance_60" }, + { "id": "S058", "text": "а теперь только май 2020", "expected_intent": "account_balance_snapshot", "expected_mode": "address_query", "session": "chain_balance_60" }, + { "id": "S059", "text": "ок, теперь 2020.05", "expected_intent": "account_balance_snapshot", "expected_mode": "address_query", "session": "chain_balance_60" }, + { "id": "S060", "text": "теперь на 2020-07-31", "expected_intent": "account_balance_snapshot", "expected_mode": "address_query", "session": "chain_balance_60" } +] diff --git a/docs/ADDRESS/question_sets/address_slang_stress_extra_2026-04-02.json b/docs/ADDRESS/question_sets/address_slang_stress_extra_2026-04-02.json new file mode 100644 index 0000000..40ab239 --- /dev/null +++ b/docs/ADDRESS/question_sets/address_slang_stress_extra_2026-04-02.json @@ -0,0 +1,50 @@ +[ + { "id": "X001", "text": "свк доки кинь за 2020", "expected_intent": "list_documents_by_counterparty", "expected_mode": "address_query" }, + { "id": "X002", "text": "по свк все документы за 20й год", "expected_intent": "list_documents_by_counterparty", "expected_mode": "address_query" }, + { "id": "X003", "text": "пж вывали доки контрагент свк 2020", "expected_intent": "list_documents_by_counterparty", "expected_mode": "address_query" }, + { "id": "X004", "text": "svk poka docy za 2020", "expected_intent": "list_documents_by_counterparty", "expected_mode": "address_query" }, + { "id": "X005", "text": "какие доки по компании свк за 2020", "expected_intent": "list_documents_by_counterparty", "expected_mode": "address_query" }, + { "id": "X006", "text": "бля покаж свк документы 2020", "expected_intent": "list_documents_by_counterparty", "expected_mode": "address_query" }, + + { "id": "X007", "text": "свк банк операции за 2020", "expected_intent": "bank_operations_by_counterparty", "expected_mode": "address_query" }, + { "id": "X008", "text": "по свк выписку банка за 2020 выведи", "expected_intent": "bank_operations_by_counterparty", "expected_mode": "address_query" }, + { "id": "X009", "text": "свк платежки за 2020", "expected_intent": "bank_operations_by_counterparty", "expected_mode": "address_query" }, + { "id": "X010", "text": "bank ops svk 2020", "expected_intent": "bank_operations_by_counterparty", "expected_mode": "address_query" }, + { "id": "X011", "text": "транзакции по свк за 2020", "expected_intent": "bank_operations_by_counterparty", "expected_mode": "address_query" }, + { "id": "X012", "text": "ёпт по свк че по банку 2020", "expected_intent": "bank_operations_by_counterparty", "expected_mode": "address_query" }, + + { "id": "X013", "text": "остаток по 60.01 на 2020-07-31", "expected_intent": "account_balance_snapshot", "expected_mode": "address_query" }, + { "id": "X014", "text": "сальдо 60.01 на 31.07.2020", "expected_intent": "account_balance_snapshot", "expected_mode": "address_query" }, + { "id": "X015", "text": "что на счете 60 на 2020.05", "expected_intent": "account_balance_snapshot", "expected_mode": "address_query" }, + { "id": "X016", "text": "дай остаток 62.01 на 2020 май", "expected_intent": "account_balance_snapshot", "expected_mode": "address_query" }, + { "id": "X017", "text": "saldo account 60 as of 2020-12-31", "expected_intent": "account_balance_snapshot", "expected_mode": "address_query" }, + { "id": "X018", "text": "плиз остаток по счету 51 на 2020-06-30", "expected_intent": "account_balance_snapshot", "expected_mode": "address_query" }, + { "id": "X019", "text": "скока по 60.02 на конец 2020-12", "expected_intent": "account_balance_snapshot", "expected_mode": "address_query" }, + { "id": "X020", "text": "бля сальдо 60.01 на 2020-05-31", "expected_intent": "account_balance_snapshot", "expected_mode": "address_query" }, + + { "id": "X021", "text": "раскрой остаток 60.01 по документам на конец июля 2020", "expected_intent": "documents_forming_balance", "expected_mode": "address_query" }, + { "id": "X022", "text": "доки под остатком 60.01 на 2020-07-31", "expected_intent": "documents_forming_balance", "expected_mode": "address_query" }, + { "id": "X023", "text": "из чего остаток 60.01 на 2020-07-31", "expected_intent": "documents_forming_balance", "expected_mode": "address_query" }, + { "id": "X024", "text": "какие документы формируют остаток по 60.01 на 2020-07-31", "expected_intent": "documents_forming_balance", "expected_mode": "address_query" }, + { "id": "X025", "text": "docs forming balance 60.01 as of 2020-07-31", "expected_intent": "documents_forming_balance", "expected_mode": "address_query" }, + { "id": "X026", "text": "раскидай остаток 62.01 по докам на 2020-12-31", "expected_intent": "documents_forming_balance", "expected_mode": "address_query" }, + { "id": "X027", "text": "по счету 51 раскрой остаток документами на 2020-06-30", "expected_intent": "documents_forming_balance", "expected_mode": "address_query" }, + { "id": "X028", "text": "бля из чего состоит остаток по 60.01 на 2020-05-31", "expected_intent": "documents_forming_balance", "expected_mode": "address_query" }, + + { "id": "X029", "text": "доки по договору 15/24 за 2020", "expected_intent": "list_documents_by_contract", "expected_mode": "address_query" }, + { "id": "X030", "text": "покажи документы контракт 15/24", "expected_intent": "list_documents_by_contract", "expected_mode": "address_query" }, + { "id": "X031", "text": "docs by contract 15/24 2020", "expected_intent": "list_documents_by_contract", "expected_mode": "address_query" }, + { "id": "X032", "text": "по дог 15/24 какие документы", "expected_intent": "list_documents_by_contract", "expected_mode": "address_query" }, + { "id": "X033", "text": "договор 15/24 выведи доки", "expected_intent": "list_documents_by_contract", "expected_mode": "address_query" }, + { "id": "X034", "text": "нах покажи документы по 15/24", "expected_intent": "list_documents_by_contract", "expected_mode": "address_query" }, + + { "id": "X035", "text": "банк операции по договору 15/24", "expected_intent": "bank_operations_by_contract", "expected_mode": "address_query" }, + { "id": "X036", "text": "платежки по дог 15/24", "expected_intent": "bank_operations_by_contract", "expected_mode": "address_query" }, + { "id": "X037", "text": "выписка по контракту 15/24", "expected_intent": "bank_operations_by_contract", "expected_mode": "address_query" }, + { "id": "X038", "text": "bank ops by contract 15/24", "expected_intent": "bank_operations_by_contract", "expected_mode": "address_query" }, + { "id": "X039", "text": "покажи банк опер по дог 15/24 пж", "expected_intent": "bank_operations_by_contract", "expected_mode": "address_query" }, + { "id": "X040", "text": "епт транзакции договор 15/24", "expected_intent": "bank_operations_by_contract", "expected_mode": "address_query" }, + + { "id": "X041", "text": "покажи сальдо по счету 60 за 2020", "expected_intent": "account_balance_snapshot", "expected_mode": "address_query", "session": "chain_balance_60_extra" }, + { "id": "X042", "text": "а теперь только май 2020", "expected_intent": "account_balance_snapshot", "expected_mode": "address_query", "session": "chain_balance_60_extra" } +] diff --git a/docs/ADDRESS/question_sets/address_slang_stress_full_2026-04-02.json b/docs/ADDRESS/question_sets/address_slang_stress_full_2026-04-02.json new file mode 100644 index 0000000..379b5ef --- /dev/null +++ b/docs/ADDRESS/question_sets/address_slang_stress_full_2026-04-02.json @@ -0,0 +1,620 @@ +[ + { + "id": "S001", + "text": "свк доки за 2020 покаж пж", + "expected_intent": "list_documents_by_counterparty", + "expected_mode": "address_query" + }, + { + "id": "S002", + "text": "покеж все доки по свк за 20 год", + "expected_intent": "list_documents_by_counterparty", + "expected_mode": "address_query" + }, + { + "id": "S003", + "text": "дай список документов по свк за 2020", + "expected_intent": "list_documents_by_counterparty", + "expected_mode": "address_query" + }, + { + "id": "S004", + "text": "какие у свк есть доки за 2020?", + "expected_intent": "list_documents_by_counterparty", + "expected_mode": "address_query" + }, + { + "id": "S005", + "text": "че по свк по докам за 2020 год", + "expected_intent": "list_documents_by_counterparty", + "expected_mode": "address_query" + }, + { + "id": "S006", + "text": "ёпт покажи доки по свк за 2020", + "expected_intent": "list_documents_by_counterparty", + "expected_mode": "address_query" + }, + { + "id": "S007", + "text": "бля, доки свк 2020 вывали", + "expected_intent": "list_documents_by_counterparty", + "expected_mode": "address_query" + }, + { + "id": "S008", + "text": "svk docs for 2020 please", + "expected_intent": "list_documents_by_counterparty", + "expected_mode": "address_query" + }, + { + "id": "S009", + "text": "docs by counterparty svk year 2020", + "expected_intent": "list_documents_by_counterparty", + "expected_mode": "address_query" + }, + { + "id": "S010", + "text": "по контрагенту свк покаж документы за 2020", + "expected_intent": "list_documents_by_counterparty", + "expected_mode": "address_query" + }, + { + "id": "S011", + "text": "плс доки по свк 2020", + "expected_intent": "list_documents_by_counterparty", + "expected_mode": "address_query" + }, + { + "id": "S012", + "text": "свк док за 2020 гони", + "expected_intent": "list_documents_by_counterparty", + "expected_mode": "address_query" + }, + { + "id": "S013", + "text": "по свк банковские операции за 2020 покаж", + "expected_intent": "bank_operations_by_counterparty", + "expected_mode": "address_query" + }, + { + "id": "S014", + "text": "свк выписка банка 2020", + "expected_intent": "bank_operations_by_counterparty", + "expected_mode": "address_query" + }, + { + "id": "S015", + "text": "платежи по свк за 2020 выведи", + "expected_intent": "bank_operations_by_counterparty", + "expected_mode": "address_query" + }, + { + "id": "S016", + "text": "оплаты по свк за 2020", + "expected_intent": "bank_operations_by_counterparty", + "expected_mode": "address_query" + }, + { + "id": "S017", + "text": "свк банк опер за 2020", + "expected_intent": "bank_operations_by_counterparty", + "expected_mode": "address_query" + }, + { + "id": "S018", + "text": "че у свк по банку за 2020", + "expected_intent": "bank_operations_by_counterparty", + "expected_mode": "address_query" + }, + { + "id": "S019", + "text": "свк списания/поступления за 2020", + "expected_intent": "bank_operations_by_counterparty", + "expected_mode": "address_query" + }, + { + "id": "S020", + "text": "bank ops by svk for 2020", + "expected_intent": "bank_operations_by_counterparty", + "expected_mode": "address_query" + }, + { + "id": "S021", + "text": "transactions by counterparty svk 2020", + "expected_intent": "bank_operations_by_counterparty", + "expected_mode": "address_query" + }, + { + "id": "S022", + "text": "бля, по свк банковские платежки 2020", + "expected_intent": "bank_operations_by_counterparty", + "expected_mode": "address_query" + }, + { + "id": "S023", + "text": "сальдо по счету 60.01 на дату 2020-07-31", + "expected_intent": "account_balance_snapshot", + "expected_mode": "address_query" + }, + { + "id": "S024", + "text": "остаток по счету 60.01 на 2020.05", + "expected_intent": "account_balance_snapshot", + "expected_mode": "address_query" + }, + { + "id": "S025", + "text": "покажи остаток по 60.01 за май 2020", + "expected_intent": "account_balance_snapshot", + "expected_mode": "address_query" + }, + { + "id": "S026", + "text": "счет 60 остаток на май 2020", + "expected_intent": "account_balance_snapshot", + "expected_mode": "address_query" + }, + { + "id": "S027", + "text": "баланс account 60.01 as of 2020-07-31", + "expected_intent": "account_balance_snapshot", + "expected_mode": "address_query" + }, + { + "id": "S028", + "text": "60.01 saldo на 31.07.2020", + "expected_intent": "account_balance_snapshot", + "expected_mode": "address_query" + }, + { + "id": "S029", + "text": "сколько на счете 60 на конец 2020-05", + "expected_intent": "account_balance_snapshot", + "expected_mode": "address_query" + }, + { + "id": "S030", + "text": "дай остаток 60.02 на 2020-12-31", + "expected_intent": "account_balance_snapshot", + "expected_mode": "address_query" + }, + { + "id": "S031", + "text": "епт, сальдо по счету 62.01 на 2020-12-31", + "expected_intent": "account_balance_snapshot", + "expected_mode": "address_query" + }, + { + "id": "S032", + "text": "плс остаток по счету 51 на 2020-06-30", + "expected_intent": "account_balance_snapshot", + "expected_mode": "address_query" + }, + { + "id": "S033", + "text": "как там по счету 60.01 на 2020.07?", + "expected_intent": "account_balance_snapshot", + "expected_mode": "address_query" + }, + { + "id": "S034", + "text": "сальдо 60 на 2020", + "expected_intent": "account_balance_snapshot", + "expected_mode": "address_query" + }, + { + "id": "S035", + "text": "какие документы формируют остаток по счету 60.01 на 2020-07-31", + "expected_intent": "documents_forming_balance", + "expected_mode": "address_query" + }, + { + "id": "S036", + "text": "из чего состоит остаток по счету 60 на 2020.05", + "expected_intent": "documents_forming_balance", + "expected_mode": "address_query" + }, + { + "id": "S037", + "text": "раскрой остаток 60.01 по документам на конец июля 2020", + "expected_intent": "documents_forming_balance", + "expected_mode": "address_query" + }, + { + "id": "S038", + "text": "доки под остатком 60.01 на 2020-07-31", + "expected_intent": "documents_forming_balance", + "expected_mode": "address_query" + }, + { + "id": "S039", + "text": "documents forming balance for account 60.01 as of 2020-07-31", + "expected_intent": "documents_forming_balance", + "expected_mode": "address_query" + }, + { + "id": "S040", + "text": "бля, какие доки формируют остаток 60.01 на 2020-05-31", + "expected_intent": "documents_forming_balance", + "expected_mode": "address_query" + }, + { + "id": "S041", + "text": "по счету 62.01 раскрой остаток документами на 2020-12-31", + "expected_intent": "documents_forming_balance", + "expected_mode": "address_query" + }, + { + "id": "S042", + "text": "из чего остаток по счету 51 на 2020-06-30", + "expected_intent": "documents_forming_balance", + "expected_mode": "address_query" + }, + { + "id": "S043", + "text": "покажи документы по договору 15/24 за 2020", + "expected_intent": "list_documents_by_contract", + "expected_mode": "address_query" + }, + { + "id": "S044", + "text": "доки по дог. 15/24 за 2020", + "expected_intent": "list_documents_by_contract", + "expected_mode": "address_query" + }, + { + "id": "S045", + "text": "какие документы по контракту 15/24", + "expected_intent": "list_documents_by_contract", + "expected_mode": "address_query" + }, + { + "id": "S046", + "text": "docs by contract 15/24 year 2020", + "expected_intent": "list_documents_by_contract", + "expected_mode": "address_query" + }, + { + "id": "S047", + "text": "бля, покажи по договору 15/24 доки", + "expected_intent": "list_documents_by_contract", + "expected_mode": "address_query" + }, + { + "id": "S048", + "text": "договор 15/24 документы", + "expected_intent": "list_documents_by_contract", + "expected_mode": "address_query" + }, + { + "id": "S049", + "text": "плс документы договор №15/24", + "expected_intent": "list_documents_by_contract", + "expected_mode": "address_query" + }, + { + "id": "S050", + "text": "покеж документы по 15/24", + "expected_intent": "list_documents_by_contract", + "expected_mode": "address_query" + }, + { + "id": "S051", + "text": "банковские операции по договору 15/24", + "expected_intent": "bank_operations_by_contract", + "expected_mode": "address_query" + }, + { + "id": "S052", + "text": "платежи по договору 15/24", + "expected_intent": "bank_operations_by_contract", + "expected_mode": "address_query" + }, + { + "id": "S053", + "text": "выписка по договору 15/24", + "expected_intent": "bank_operations_by_contract", + "expected_mode": "address_query" + }, + { + "id": "S054", + "text": "bank ops by contract 15/24", + "expected_intent": "bank_operations_by_contract", + "expected_mode": "address_query" + }, + { + "id": "S055", + "text": "ёпт, покажи банк операции по дог 15/24", + "expected_intent": "bank_operations_by_contract", + "expected_mode": "address_query" + }, + { + "id": "S056", + "text": "по контракту 15/24 платежки", + "expected_intent": "bank_operations_by_contract", + "expected_mode": "address_query" + }, + { + "id": "S057", + "text": "покажи сальдо по счету 60 за 2020", + "expected_intent": "account_balance_snapshot", + "expected_mode": "address_query", + "session": "chain_balance_60" + }, + { + "id": "S058", + "text": "а теперь только май 2020", + "expected_intent": "account_balance_snapshot", + "expected_mode": "address_query", + "session": "chain_balance_60" + }, + { + "id": "S059", + "text": "ок, теперь 2020.05", + "expected_intent": "account_balance_snapshot", + "expected_mode": "address_query", + "session": "chain_balance_60" + }, + { + "id": "S060", + "text": "теперь на 2020-07-31", + "expected_intent": "account_balance_snapshot", + "expected_mode": "address_query", + "session": "chain_balance_60" + }, + { + "id": "X001", + "text": "свк доки кинь за 2020", + "expected_intent": "list_documents_by_counterparty", + "expected_mode": "address_query" + }, + { + "id": "X002", + "text": "по свк все документы за 20й год", + "expected_intent": "list_documents_by_counterparty", + "expected_mode": "address_query" + }, + { + "id": "X003", + "text": "пж вывали доки контрагент свк 2020", + "expected_intent": "list_documents_by_counterparty", + "expected_mode": "address_query" + }, + { + "id": "X004", + "text": "svk poka docy za 2020", + "expected_intent": "list_documents_by_counterparty", + "expected_mode": "address_query" + }, + { + "id": "X005", + "text": "какие доки по компании свк за 2020", + "expected_intent": "list_documents_by_counterparty", + "expected_mode": "address_query" + }, + { + "id": "X006", + "text": "бля покаж свк документы 2020", + "expected_intent": "list_documents_by_counterparty", + "expected_mode": "address_query" + }, + { + "id": "X007", + "text": "свк банк операции за 2020", + "expected_intent": "bank_operations_by_counterparty", + "expected_mode": "address_query" + }, + { + "id": "X008", + "text": "по свк выписку банка за 2020 выведи", + "expected_intent": "bank_operations_by_counterparty", + "expected_mode": "address_query" + }, + { + "id": "X009", + "text": "свк платежки за 2020", + "expected_intent": "bank_operations_by_counterparty", + "expected_mode": "address_query" + }, + { + "id": "X010", + "text": "bank ops svk 2020", + "expected_intent": "bank_operations_by_counterparty", + "expected_mode": "address_query" + }, + { + "id": "X011", + "text": "транзакции по свк за 2020", + "expected_intent": "bank_operations_by_counterparty", + "expected_mode": "address_query" + }, + { + "id": "X012", + "text": "ёпт по свк че по банку 2020", + "expected_intent": "bank_operations_by_counterparty", + "expected_mode": "address_query" + }, + { + "id": "X013", + "text": "остаток по 60.01 на 2020-07-31", + "expected_intent": "account_balance_snapshot", + "expected_mode": "address_query" + }, + { + "id": "X014", + "text": "сальдо 60.01 на 31.07.2020", + "expected_intent": "account_balance_snapshot", + "expected_mode": "address_query" + }, + { + "id": "X015", + "text": "что на счете 60 на 2020.05", + "expected_intent": "account_balance_snapshot", + "expected_mode": "address_query" + }, + { + "id": "X016", + "text": "дай остаток 62.01 на 2020 май", + "expected_intent": "account_balance_snapshot", + "expected_mode": "address_query" + }, + { + "id": "X017", + "text": "saldo account 60 as of 2020-12-31", + "expected_intent": "account_balance_snapshot", + "expected_mode": "address_query" + }, + { + "id": "X018", + "text": "плиз остаток по счету 51 на 2020-06-30", + "expected_intent": "account_balance_snapshot", + "expected_mode": "address_query" + }, + { + "id": "X019", + "text": "скока по 60.02 на конец 2020-12", + "expected_intent": "account_balance_snapshot", + "expected_mode": "address_query" + }, + { + "id": "X020", + "text": "бля сальдо 60.01 на 2020-05-31", + "expected_intent": "account_balance_snapshot", + "expected_mode": "address_query" + }, + { + "id": "X021", + "text": "раскрой остаток 60.01 по документам на конец июля 2020", + "expected_intent": "documents_forming_balance", + "expected_mode": "address_query" + }, + { + "id": "X022", + "text": "доки под остатком 60.01 на 2020-07-31", + "expected_intent": "documents_forming_balance", + "expected_mode": "address_query" + }, + { + "id": "X023", + "text": "из чего остаток 60.01 на 2020-07-31", + "expected_intent": "documents_forming_balance", + "expected_mode": "address_query" + }, + { + "id": "X024", + "text": "какие документы формируют остаток по 60.01 на 2020-07-31", + "expected_intent": "documents_forming_balance", + "expected_mode": "address_query" + }, + { + "id": "X025", + "text": "docs forming balance 60.01 as of 2020-07-31", + "expected_intent": "documents_forming_balance", + "expected_mode": "address_query" + }, + { + "id": "X026", + "text": "раскидай остаток 62.01 по докам на 2020-12-31", + "expected_intent": "documents_forming_balance", + "expected_mode": "address_query" + }, + { + "id": "X027", + "text": "по счету 51 раскрой остаток документами на 2020-06-30", + "expected_intent": "documents_forming_balance", + "expected_mode": "address_query" + }, + { + "id": "X028", + "text": "бля из чего состоит остаток по 60.01 на 2020-05-31", + "expected_intent": "documents_forming_balance", + "expected_mode": "address_query" + }, + { + "id": "X029", + "text": "доки по договору 15/24 за 2020", + "expected_intent": "list_documents_by_contract", + "expected_mode": "address_query" + }, + { + "id": "X030", + "text": "покажи документы контракт 15/24", + "expected_intent": "list_documents_by_contract", + "expected_mode": "address_query" + }, + { + "id": "X031", + "text": "docs by contract 15/24 2020", + "expected_intent": "list_documents_by_contract", + "expected_mode": "address_query" + }, + { + "id": "X032", + "text": "по дог 15/24 какие документы", + "expected_intent": "list_documents_by_contract", + "expected_mode": "address_query" + }, + { + "id": "X033", + "text": "договор 15/24 выведи доки", + "expected_intent": "list_documents_by_contract", + "expected_mode": "address_query" + }, + { + "id": "X034", + "text": "нах покажи документы по 15/24", + "expected_intent": "list_documents_by_contract", + "expected_mode": "address_query" + }, + { + "id": "X035", + "text": "банк операции по договору 15/24", + "expected_intent": "bank_operations_by_contract", + "expected_mode": "address_query" + }, + { + "id": "X036", + "text": "платежки по дог 15/24", + "expected_intent": "bank_operations_by_contract", + "expected_mode": "address_query" + }, + { + "id": "X037", + "text": "выписка по контракту 15/24", + "expected_intent": "bank_operations_by_contract", + "expected_mode": "address_query" + }, + { + "id": "X038", + "text": "bank ops by contract 15/24", + "expected_intent": "bank_operations_by_contract", + "expected_mode": "address_query" + }, + { + "id": "X039", + "text": "покажи банк опер по дог 15/24 пж", + "expected_intent": "bank_operations_by_contract", + "expected_mode": "address_query" + }, + { + "id": "X040", + "text": "епт транзакции договор 15/24", + "expected_intent": "bank_operations_by_contract", + "expected_mode": "address_query" + }, + { + "id": "X041", + "text": "покажи сальдо по счету 60 за 2020", + "expected_intent": "account_balance_snapshot", + "expected_mode": "address_query", + "session": "chain_balance_60_extra" + }, + { + "id": "X042", + "text": "а теперь только май 2020", + "expected_intent": "account_balance_snapshot", + "expected_mode": "address_query", + "session": "chain_balance_60_extra" + } +] diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Full_Live_Run_2026-04-02_08-03-09/README.md b/docs/ADDRESS/runs/2026-04-02_Address_Full_Live_Run_2026-04-02_08-03-09/README.md new file mode 100644 index 0000000..c29caff --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Full_Live_Run_2026-04-02_08-03-09/README.md @@ -0,0 +1,22 @@ +# 2026-04-02_Address_Full_Live_Run_2026-04-02_08-03-09 + +- Questions total: 37 +- HTTP 200 + ok: 34 +- Factual replies: 31 +- Partial replies: 3 +- LLM decomposition applied: 25 +- Fallback rules used: 25 +- Avg latency (ms): 1157.8 + +## Top Partial Cases +- #11: Покажи документы по договору 15/24 + reply_type=partial_coverage; mcp=materialized_but_filtered_out_by_recipe; limited_reason=recipe_visibility_gap; llm_reason=fallback_rule_applied_after_llm_error +- #13: Есть ли долг по договору 15/24 на 2020-07-31 + reply_type=partial_coverage; mcp=materialized_but_not_anchor_matched; limited_reason=empty_match; llm_reason=error:Failed to extract output_text from /responses payload. +- #33: покажи банк опер по дог 15/24 пж + reply_type=partial_coverage; mcp=skipped; limited_reason=unsupported; llm_reason=fallback_rule_applied_after_llm_error + +## Artifacts +- full_live_results.json +- run_summary.json +- failures_only.json diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Full_Live_Run_2026-04-02_08-03-09/failures_only.json b/docs/ADDRESS/runs/2026-04-02_Address_Full_Live_Run_2026-04-02_08-03-09/failures_only.json new file mode 100644 index 0000000..b48f92c --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Full_Live_Run_2026-04-02_08-03-09/failures_only.json @@ -0,0 +1,551 @@ +[ + { + "number": 11, + "question": "Покажи документы по договору 15/24", + "session_key": "single_11", + "session_id": "asst-x504ZNzRpo", + "status_code": 200, + "ok": true, + "elapsed_ms": 2054, + "reply_type": "partial_coverage", + "trace_id": "address-R4AOTGWmNt", + "assistant_reply": "Текущий live recipe не дает нужную видимость данных для этого сценария.\nПричина: строки по якорю найдены, но отфильтрованы intent-specific recipe.\nЧто нужно уточнить: сузьте период, уточните контрагента или документный тип.", + "execution_lane": "address_query", + "detected_mode": "address_query", + "detected_intent": "list_documents_by_contract", + "selected_recipe": "address_documents_by_contract_v1", + "mcp_call_status": "materialized_but_filtered_out_by_recipe", + "limited_reason_category": "recipe_visibility_gap", + "rows_matched": 0, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "llm_provider_used": "local", + "fallback_rule_hit": "documents_contract_rewrite", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "документы по договору 15/24", + "error_text": null, + "debug": { + "trace_id": "address-R4AOTGWmNt", + "prompt_version": "address_query_runtime_v1", + "schema_version": "address_query_runtime_v1", + "fallback_type": "partial", + "route_summary": null, + "fragments": [ + + ], + "requirements_extracted": [ + + ], + "coverage_report": { + "requirements_total": 0, + "requirements_covered": 0, + "requirements_uncovered": [ + + ], + "requirements_partially_covered": [ + + ], + "clarification_needed_for": [ + + ], + "out_of_scope_requirements": [ + + ] + }, + "routes": [ + + ], + "retrieval_status": [ + + ], + "retrieval_results": [ + + ], + "answer_grounding_check": { + "status": "partial", + "route_subject_match": true, + "missing_requirements": [ + + ], + "reasons": [ + "address_entity_detected", + "document_list_signal_detected", + "documents_by_contract_signal_detected" + ], + "why_included_summary": [ + + ], + "selection_reason_summary": [ + + ] + }, + "dropped_intent_segments": [ + + ], + "detected_mode": "address_query", + "detected_mode_confidence": "medium", + "query_shape": "DOCUMENT_LIST", + "query_shape_confidence": "medium", + "detected_intent": "list_documents_by_contract", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "contract": "15/24" + }, + "missing_required_filters": [ + + ], + "selected_recipe": "address_documents_by_contract_v1", + "mcp_call_status_legacy": "materialized_but_not_matched", + "account_scope_mode": "preferred", + "account_scope_fallback_applied": false, + "anchor_type": "contract", + "anchor_value_raw": "15/24", + "anchor_value_resolved": "15/24", + "resolver_confidence": "medium", + "ambiguity_count": 0, + "match_failure_stage": "materialized_but_filtered_out_by_recipe", + "match_failure_reason": "rows_filtered_out_by_intent_recipe_after_anchor_match", + "mcp_call_status": "materialized_but_filtered_out_by_recipe", + "rows_fetched": 1000, + "raw_rows_received": 1000, + "rows_after_account_scope": 416, + "rows_after_recipe_filter": 2, + "rows_materialized": 416, + "rows_matched": 0, + "raw_row_keys_sample": [ + "Период", + "Регистратор", + "СчетДт", + "СчетКт", + "Сумма", + "Period", + "Registrator", + "AccountDt", + "AccountKt", + "Amount" + ], + "materialization_drop_reason": "none", + "account_token_raw": null, + "account_token_normalized": null, + "account_scope_fields_checked": [ + "account_dt", + "account_kt", + "registrator", + "analytics" + ], + "account_scope_match_strategy": "account_code_regex_plus_alias_map_v1", + "account_scope_drop_reason": "not_applicable", + "runtime_readiness": "REQUIRES_SPECIALIZED_RECIPE", + "limited_reason_category": "recipe_visibility_gap", + "response_type": "LIMITED_WITH_REASON", + "execution_lane": "address_query", + "llm_decomposition_applied": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "документы по договору 15/24", + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "fallback_rule_hit": "documents_contract_rewrite", + "sanitized_user_message": "покажи документы по договору 15/24", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_signal_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + } + }, + { + "number": 13, + "question": "Есть ли долг по договору 15/24 на 2020-07-31", + "session_key": "single_13", + "session_id": "asst-UUVkCb5sCS", + "status_code": 200, + "ok": true, + "elapsed_ms": 2964, + "reply_type": "partial_coverage", + "trace_id": "address-Ea84sfq8iH", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "execution_lane": "address_query", + "detected_mode": "address_query", + "detected_intent": "list_documents_by_contract", + "selected_recipe": "address_documents_by_contract_v1", + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "rows_matched": 0, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "error:Failed to extract output_text from /responses payload.", + "llm_provider_used": "local", + "fallback_rule_hit": null, + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "Есть ли долг по договору 15/24 на 2020-07-31", + "error_text": null, + "debug": { + "trace_id": "address-Ea84sfq8iH", + "prompt_version": "address_query_runtime_v1", + "schema_version": "address_query_runtime_v1", + "fallback_type": "partial", + "route_summary": null, + "fragments": [ + + ], + "requirements_extracted": [ + + ], + "coverage_report": { + "requirements_total": 0, + "requirements_covered": 0, + "requirements_uncovered": [ + + ], + "requirements_partially_covered": [ + + ], + "clarification_needed_for": [ + + ], + "out_of_scope_requirements": [ + + ] + }, + "routes": [ + + ], + "retrieval_status": [ + + ], + "retrieval_results": [ + + ], + "answer_grounding_check": { + "status": "partial", + "route_subject_match": true, + "missing_requirements": [ + + ], + "reasons": [ + "address_action_detected", + "address_entity_detected", + "verify_signal_detected", + "documents_by_contract_signal_detected" + ], + "why_included_summary": [ + + ], + "selection_reason_summary": [ + + ] + }, + "dropped_intent_segments": [ + + ], + "detected_mode": "address_query", + "detected_mode_confidence": "high", + "query_shape": "VERIFY_FACTUAL", + "query_shape_confidence": "medium", + "detected_intent": "list_documents_by_contract", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "contract": "15/24", + "period_from": "2020-07-01", + "period_to": "2020-07-31" + }, + "missing_required_filters": [ + + ], + "selected_recipe": "address_documents_by_contract_v1", + "mcp_call_status_legacy": "materialized_but_not_matched", + "account_scope_mode": "preferred", + "account_scope_fallback_applied": true, + "anchor_type": "contract", + "anchor_value_raw": "15/24", + "anchor_value_resolved": "15/24", + "resolver_confidence": "medium", + "ambiguity_count": 0, + "match_failure_stage": "materialized_but_not_anchor_matched", + "match_failure_reason": "contract_anchor_not_matched_in_materialized_rows", + "mcp_call_status": "materialized_but_not_anchor_matched", + "rows_fetched": 20, + "raw_rows_received": 20, + "rows_after_account_scope": 20, + "rows_after_recipe_filter": 0, + "rows_materialized": 20, + "rows_matched": 0, + "raw_row_keys_sample": [ + "Период", + "Регистратор", + "СчетДт", + "СчетКт", + "Сумма", + "Period", + "Registrator", + "AccountDt", + "AccountKt", + "Amount" + ], + "materialization_drop_reason": "none", + "account_token_raw": null, + "account_token_normalized": null, + "account_scope_fields_checked": [ + "account_dt", + "account_kt", + "registrator", + "analytics" + ], + "account_scope_match_strategy": "account_code_regex_plus_alias_map_v1", + "account_scope_drop_reason": "not_applicable", + "runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS", + "limited_reason_category": "empty_match", + "response_type": "LIMITED_WITH_REASON", + "execution_lane": "address_query", + "llm_decomposition_applied": false, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "Есть ли долг по договору 15/24 на 2020-07-31", + "llm_decomposition_reason": "error:Failed to extract output_text from /responses payload.", + "fallback_rule_hit": null, + "sanitized_user_message": "есть ли долг по договору 15/24 на 2020-07-31", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_signal_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + } + }, + { + "number": 33, + "question": "покажи банк опер по дог 15/24 пж", + "session_key": "single_33", + "session_id": "asst-gXTpxnmWpG", + "status_code": 200, + "ok": true, + "elapsed_ms": 6, + "reply_type": "partial_coverage", + "trace_id": "address-VyJiL2DoTr", + "assistant_reply": "Этот запрос не подходит под address_query V1.\nПричина: intent пока не поддержан в address V1.\nЧто нужно уточнить: переформулируйте вопрос как адресный lookup по счету/контрагенту/договору.", + "execution_lane": "address_query", + "detected_mode": "address_query", + "detected_intent": "unknown", + "selected_recipe": null, + "mcp_call_status": "skipped", + "limited_reason_category": "unsupported", + "rows_matched": 0, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "llm_provider_used": "local", + "fallback_rule_hit": "noise_cleanup", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "покажи банк опер по дог 15/24", + "error_text": null, + "debug": { + "trace_id": "address-VyJiL2DoTr", + "prompt_version": "address_query_runtime_v1", + "schema_version": "address_query_runtime_v1", + "fallback_type": "partial", + "route_summary": null, + "fragments": [ + + ], + "requirements_extracted": [ + + ], + "coverage_report": { + "requirements_total": 0, + "requirements_covered": 0, + "requirements_uncovered": [ + + ], + "requirements_partially_covered": [ + + ], + "clarification_needed_for": [ + + ], + "out_of_scope_requirements": [ + + ] + }, + "routes": [ + + ], + "retrieval_status": [ + + ], + "retrieval_results": [ + + ], + "answer_grounding_check": { + "status": "partial", + "route_subject_match": true, + "missing_requirements": [ + + ], + "reasons": [ + "address_action_detected", + "address_entity_detected", + "shape_not_detected", + "intent_not_supported_in_v1" + ], + "why_included_summary": [ + + ], + "selection_reason_summary": [ + + ] + }, + "dropped_intent_segments": [ + + ], + "detected_mode": "address_query", + "detected_mode_confidence": "high", + "query_shape": "UNKNOWN", + "query_shape_confidence": "low", + "detected_intent": "unknown", + "detected_intent_confidence": "low", + "extracted_filters": { + "sort": "period_desc", + "limit": 20 + }, + "missing_required_filters": [ + + ], + "selected_recipe": null, + "mcp_call_status_legacy": "skipped", + "account_scope_mode": "strict", + "account_scope_fallback_applied": false, + "anchor_type": "unknown", + "anchor_value_raw": null, + "anchor_value_resolved": null, + "resolver_confidence": "low", + "ambiguity_count": 0, + "match_failure_stage": "none", + "match_failure_reason": null, + "mcp_call_status": "skipped", + "rows_fetched": 0, + "raw_rows_received": 0, + "rows_after_account_scope": 0, + "rows_after_recipe_filter": 0, + "rows_materialized": 0, + "rows_matched": 0, + "raw_row_keys_sample": [ + + ], + "materialization_drop_reason": "none", + "account_token_raw": null, + "account_token_normalized": null, + "account_scope_fields_checked": [ + "account_dt", + "account_kt", + "registrator", + "analytics" + ], + "account_scope_match_strategy": "account_code_regex_plus_alias_map_v1", + "account_scope_drop_reason": "not_applicable", + "runtime_readiness": "DEEP_ONLY", + "limited_reason_category": "unsupported", + "response_type": "LIMITED_WITH_REASON", + "execution_lane": "address_query", + "llm_decomposition_applied": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "покажи банк опер по дог 15/24", + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "fallback_rule_hit": "noise_cleanup", + "sanitized_user_message": "покажи банк опер по дог 15/24", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_signal_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + } + }, + { + "number": 35, + "question": "по свк за весь период че есть", + "session_key": "single_35", + "session_id": null, + "status_code": 502, + "ok": false, + "elapsed_ms": 45, + "reply_type": null, + "trace_id": null, + "assistant_reply": null, + "execution_lane": null, + "detected_mode": null, + "detected_intent": null, + "selected_recipe": null, + "mcp_call_status": null, + "limited_reason_category": null, + "rows_matched": null, + "llm_decomposition_applied": null, + "llm_decomposition_reason": null, + "llm_provider_used": null, + "fallback_rule_hit": null, + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": null, + "error_text": "", + "debug": null + }, + { + "number": 36, + "question": "Покажи технические константы конфигурации", + "session_key": "single_36", + "session_id": null, + "status_code": 502, + "ok": false, + "elapsed_ms": 5, + "reply_type": null, + "trace_id": null, + "assistant_reply": null, + "execution_lane": null, + "detected_mode": null, + "detected_intent": null, + "selected_recipe": null, + "mcp_call_status": null, + "limited_reason_category": null, + "rows_matched": null, + "llm_decomposition_applied": null, + "llm_decomposition_reason": null, + "llm_provider_used": null, + "fallback_rule_hit": null, + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": null, + "error_text": "", + "debug": null + }, + { + "number": 37, + "question": "кто президент США", + "session_key": "single_37", + "session_id": null, + "status_code": 502, + "ok": false, + "elapsed_ms": 3, + "reply_type": null, + "trace_id": null, + "assistant_reply": null, + "execution_lane": null, + "detected_mode": null, + "detected_intent": null, + "selected_recipe": null, + "mcp_call_status": null, + "limited_reason_category": null, + "rows_matched": null, + "llm_decomposition_applied": null, + "llm_decomposition_reason": null, + "llm_provider_used": null, + "fallback_rule_hit": null, + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": null, + "error_text": "", + "debug": null + } +] diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Full_Live_Run_2026-04-02_08-03-09/full_live_results.json b/docs/ADDRESS/runs/2026-04-02_Address_Full_Live_Run_2026-04-02_08-03-09/full_live_results.json new file mode 100644 index 0000000..16a62c9 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Full_Live_Run_2026-04-02_08-03-09/full_live_results.json @@ -0,0 +1,5602 @@ +{ + "run_id": "2026-04-02_Address_Full_Live_Run_2026-04-02_08-03-09", + "generated_at": "2026-04-02T08:03:52", + "summary": { + "run_id": "2026-04-02_Address_Full_Live_Run_2026-04-02_08-03-09", + "generated_at": "2026-04-02T08:03:52", + "source_questions_file": "docs/ADDRESS/1.txt", + "backend_url": "http://127.0.0.1:8787/api/assistant/message", + "llm_provider": "local", + "llm_base_url": "http://127.0.0.1:1234", + "llm_model": "qwen2.5-14b-instruct-1m", + "totals": { + "questions_total": 37, + "ok_200_count": 34, + "factual_count": 31, + "partial_coverage_count": 3, + "other_reply_types_count": 3, + "llm_decomposition_applied_count": 25, + "fallback_rule_hit_count": 25, + "avg_elapsed_ms": 1157.8 + }, + "distributions": { + "mcp_call_status": { + "materialized_but_filtered_out_by_recipe": 1, + "skipped": 1, + "matched_non_empty": 31, + "(null)": 3, + "materialized_but_not_anchor_matched": 1 + }, + "limited_reason_category": { + "empty_match": 1, + "unsupported": 1, + "recipe_visibility_gap": 1 + }, + "llm_decomposition_reason": { + "error:Failed to extract output_text from /responses payload.": 3, + "fallback_rule_applied_after_llm_error": 25, + "(null)": 3, + "not_address_like": 6 + } + }, + "followup_sessions": { + "chain_a": "asst-FcMkXBWcu2", + "single_33": "asst-gXTpxnmWpG", + "single_31": "asst-rTMQAu9-iv", + "single_2": "asst-SFu_Ft-HM1", + "single_14": "asst-yxnKwYNQ5c", + "single_12": "asst-gaC9QR3ac9", + "single_17": "asst-QjQxuKBZHt", + "single_32": "asst-7GzzMHDiQZ", + "single_19": "asst-hh3GkT9dJF", + "single_13": "asst-UUVkCb5sCS", + "single_11": "asst-x504ZNzRpo", + "chain_c": "asst-gSWtm2LPha", + "single_9": "asst-d7G1unNF_j", + "single_7": "asst-7AC_NeHrTA", + "single_16": "asst-PhFTkR2mWs", + "single_10": "asst-sny3sFB19c", + "single_18": "asst-RY7LBPJr6i", + "single_8": "asst-koxw3u9Zj9", + "single_6": "asst-h6m3_aXtOM", + "single_4": "asst-ZheKxL2311", + "single_34": "asst-HfTDFjeXdM", + "chain_b": "asst-NzEwL_Cksq", + "single_15": "asst-OyooDcGGLh", + "single_5": "asst-8QOPS213rL", + "single_3": "asst-BS6WQx3BLi", + "single_1": "asst-3TFo9p8UGo" + } + }, + "rows": [ + { + "number": 1, + "question": "Покажи документы по СВК за 2020 год", + "session_key": "single_1", + "session_id": "asst-3TFo9p8UGo", + "status_code": 200, + "ok": true, + "elapsed_ms": 156, + "reply_type": "factual", + "trace_id": "address-KO68mtMqgx", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "execution_lane": "address_query", + "detected_mode": "address_query", + "detected_intent": "list_documents_by_counterparty", + "selected_recipe": "address_documents_by_counterparty_v1", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "rows_matched": 3, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "llm_provider_used": "local", + "fallback_rule_hit": "documents_counterparty_year_rewrite", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "документы по контрагенту свк за 2020 год", + "error_text": null, + "debug": { + "trace_id": "address-KO68mtMqgx", + "prompt_version": "address_query_runtime_v1", + "schema_version": "address_query_runtime_v1", + "fallback_type": "none", + "route_summary": null, + "fragments": [ + + ], + "requirements_extracted": [ + + ], + "coverage_report": { + "requirements_total": 0, + "requirements_covered": 0, + "requirements_uncovered": [ + + ], + "requirements_partially_covered": [ + + ], + "clarification_needed_for": [ + + ], + "out_of_scope_requirements": [ + + ] + }, + "routes": [ + + ], + "retrieval_status": [ + + ], + "retrieval_results": [ + + ], + "answer_grounding_check": { + "status": "grounded", + "route_subject_match": true, + "missing_requirements": [ + + ], + "reasons": [ + "address_entity_detected", + "document_list_signal_detected", + "documents_by_counterparty_signal_detected" + ], + "why_included_summary": [ + + ], + "selection_reason_summary": [ + + ] + }, + "dropped_intent_segments": [ + + ], + "detected_mode": "address_query", + "detected_mode_confidence": "medium", + "query_shape": "DOCUMENT_LIST", + "query_shape_confidence": "medium", + "detected_intent": "list_documents_by_counterparty", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "counterparty": "свк", + "period_from": "2020-01-01", + "period_to": "2020-12-31" + }, + "missing_required_filters": [ + + ], + "selected_recipe": "address_documents_by_counterparty_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "account_scope_fallback_applied": false, + "anchor_type": "counterparty", + "anchor_value_raw": "свк", + "anchor_value_resolved": "Группа СВК", + "resolver_confidence": "medium", + "ambiguity_count": 0, + "match_failure_stage": "none", + "match_failure_reason": null, + "mcp_call_status": "matched_non_empty", + "rows_fetched": 20, + "raw_rows_received": 20, + "rows_after_account_scope": 5, + "rows_after_recipe_filter": 3, + "rows_materialized": 5, + "rows_matched": 3, + "raw_row_keys_sample": [ + "Период", + "Регистратор", + "СчетДт", + "СчетКт", + "Сумма", + "Контрагент", + "Period", + "Registrator", + "Amount" + ], + "materialization_drop_reason": "none", + "account_token_raw": null, + "account_token_normalized": null, + "account_scope_fields_checked": [ + "account_dt", + "account_kt", + "registrator", + "analytics" + ], + "account_scope_match_strategy": "account_code_regex_plus_alias_map_v1", + "account_scope_drop_reason": "not_applicable", + "runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS", + "limited_reason_category": null, + "response_type": "FACTUAL_LIST", + "execution_lane": "address_query", + "llm_decomposition_applied": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "документы по контрагенту свк за 2020 год", + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "fallback_rule_hit": "documents_counterparty_year_rewrite", + "sanitized_user_message": "покажи документы по свк за 2020 год", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_signal_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + } + }, + { + "number": 2, + "question": "свк доки за 20й", + "session_key": "single_2", + "session_id": "asst-SFu_Ft-HM1", + "status_code": 200, + "ok": true, + "elapsed_ms": 977, + "reply_type": "factual", + "trace_id": "address-2c1xTa5wwO", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "execution_lane": "address_query", + "detected_mode": "address_query", + "detected_intent": "list_documents_by_counterparty", + "selected_recipe": "address_documents_by_counterparty_v1", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "rows_matched": 3, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "llm_provider_used": "local", + "fallback_rule_hit": "documents_counterparty_year_rewrite", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "документы по контрагенту свк за 2020 год", + "error_text": null, + "debug": { + "trace_id": "address-2c1xTa5wwO", + "prompt_version": "address_query_runtime_v1", + "schema_version": "address_query_runtime_v1", + "fallback_type": "none", + "route_summary": null, + "fragments": [ + + ], + "requirements_extracted": [ + + ], + "coverage_report": { + "requirements_total": 0, + "requirements_covered": 0, + "requirements_uncovered": [ + + ], + "requirements_partially_covered": [ + + ], + "clarification_needed_for": [ + + ], + "out_of_scope_requirements": [ + + ] + }, + "routes": [ + + ], + "retrieval_status": [ + + ], + "retrieval_results": [ + + ], + "answer_grounding_check": { + "status": "grounded", + "route_subject_match": true, + "missing_requirements": [ + + ], + "reasons": [ + "address_entity_detected", + "document_list_signal_detected", + "documents_by_counterparty_signal_detected" + ], + "why_included_summary": [ + + ], + "selection_reason_summary": [ + + ] + }, + "dropped_intent_segments": [ + + ], + "detected_mode": "address_query", + "detected_mode_confidence": "medium", + "query_shape": "DOCUMENT_LIST", + "query_shape_confidence": "medium", + "detected_intent": "list_documents_by_counterparty", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "counterparty": "свк", + "period_from": "2020-01-01", + "period_to": "2020-12-31" + }, + "missing_required_filters": [ + + ], + "selected_recipe": "address_documents_by_counterparty_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "account_scope_fallback_applied": false, + "anchor_type": "counterparty", + "anchor_value_raw": "свк", + "anchor_value_resolved": "Группа СВК", + "resolver_confidence": "medium", + "ambiguity_count": 0, + "match_failure_stage": "none", + "match_failure_reason": null, + "mcp_call_status": "matched_non_empty", + "rows_fetched": 20, + "raw_rows_received": 20, + "rows_after_account_scope": 5, + "rows_after_recipe_filter": 3, + "rows_materialized": 5, + "rows_matched": 3, + "raw_row_keys_sample": [ + "Период", + "Регистратор", + "СчетДт", + "СчетКт", + "Сумма", + "Контрагент", + "Period", + "Registrator", + "Amount" + ], + "materialization_drop_reason": "none", + "account_token_raw": null, + "account_token_normalized": null, + "account_scope_fields_checked": [ + "account_dt", + "account_kt", + "registrator", + "analytics" + ], + "account_scope_match_strategy": "account_code_regex_plus_alias_map_v1", + "account_scope_drop_reason": "not_applicable", + "runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS", + "limited_reason_category": null, + "response_type": "FACTUAL_LIST", + "execution_lane": "address_query", + "llm_decomposition_applied": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "документы по контрагенту свк за 2020 год", + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "fallback_rule_hit": "documents_counterparty_year_rewrite", + "sanitized_user_message": "свк доки за 20й", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_signal_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + } + }, + { + "number": 3, + "question": "что по свк за 2020 выведи все доки плиз", + "session_key": "single_3", + "session_id": "asst-BS6WQx3BLi", + "status_code": 200, + "ok": true, + "elapsed_ms": 1051, + "reply_type": "factual", + "trace_id": "address-XOCYS9a0B9", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "execution_lane": "address_query", + "detected_mode": "address_query", + "detected_intent": "list_documents_by_counterparty", + "selected_recipe": "address_documents_by_counterparty_v1", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "rows_matched": 3, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "llm_provider_used": "local", + "fallback_rule_hit": "documents_counterparty_year_rewrite", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "документы по контрагенту свк за 2020 год", + "error_text": null, + "debug": { + "trace_id": "address-XOCYS9a0B9", + "prompt_version": "address_query_runtime_v1", + "schema_version": "address_query_runtime_v1", + "fallback_type": "none", + "route_summary": null, + "fragments": [ + + ], + "requirements_extracted": [ + + ], + "coverage_report": { + "requirements_total": 0, + "requirements_covered": 0, + "requirements_uncovered": [ + + ], + "requirements_partially_covered": [ + + ], + "clarification_needed_for": [ + + ], + "out_of_scope_requirements": [ + + ] + }, + "routes": [ + + ], + "retrieval_status": [ + + ], + "retrieval_results": [ + + ], + "answer_grounding_check": { + "status": "grounded", + "route_subject_match": true, + "missing_requirements": [ + + ], + "reasons": [ + "address_entity_detected", + "document_list_signal_detected", + "documents_by_counterparty_signal_detected" + ], + "why_included_summary": [ + + ], + "selection_reason_summary": [ + + ] + }, + "dropped_intent_segments": [ + + ], + "detected_mode": "address_query", + "detected_mode_confidence": "medium", + "query_shape": "DOCUMENT_LIST", + "query_shape_confidence": "medium", + "detected_intent": "list_documents_by_counterparty", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "counterparty": "свк", + "period_from": "2020-01-01", + "period_to": "2020-12-31" + }, + "missing_required_filters": [ + + ], + "selected_recipe": "address_documents_by_counterparty_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "account_scope_fallback_applied": false, + "anchor_type": "counterparty", + "anchor_value_raw": "свк", + "anchor_value_resolved": "Группа СВК", + "resolver_confidence": "medium", + "ambiguity_count": 0, + "match_failure_stage": "none", + "match_failure_reason": null, + "mcp_call_status": "matched_non_empty", + "rows_fetched": 20, + "raw_rows_received": 20, + "rows_after_account_scope": 5, + "rows_after_recipe_filter": 3, + "rows_materialized": 5, + "rows_matched": 3, + "raw_row_keys_sample": [ + "Период", + "Регистратор", + "СчетДт", + "СчетКт", + "Сумма", + "Контрагент", + "Period", + "Registrator", + "Amount" + ], + "materialization_drop_reason": "none", + "account_token_raw": null, + "account_token_normalized": null, + "account_scope_fields_checked": [ + "account_dt", + "account_kt", + "registrator", + "analytics" + ], + "account_scope_match_strategy": "account_code_regex_plus_alias_map_v1", + "account_scope_drop_reason": "not_applicable", + "runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS", + "limited_reason_category": null, + "response_type": "FACTUAL_LIST", + "execution_lane": "address_query", + "llm_decomposition_applied": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "документы по контрагенту свк за 2020 год", + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "fallback_rule_hit": "documents_counterparty_year_rewrite", + "sanitized_user_message": "что по свк за 2020 выведи все доки плиз", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_signal_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + } + }, + { + "number": 4, + "question": "Какие документы по контрагенту СВК за весь период", + "session_key": "single_4", + "session_id": "asst-ZheKxL2311", + "status_code": 200, + "ok": true, + "elapsed_ms": 1278, + "reply_type": "factual", + "trace_id": "address-zLyD2lm6SC", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 26.\n1. 2021-11-10T12:00:07Z | Поступление на расчетный счет 00000000013 от 10.11.2021 12:00:07 | 0 / 0 | 20000 | аналитика: Группа\n2. 2021-09-29T12:00:03Z | Поступление на расчетный счет 00000000012 от 29.09.2021 12:00:03 | 0 / 0 | 50000 | аналитика: Группа\n3. 2021-08-31T12:00:04Z | Поступление на расчетный счет 00000000011 от 31.08.2021 12:00:04 | 0 / 0 | 120500 | аналитика: Группа\n4. 2021-06-22T12:00:00Z | Поступление на расчетный счет 00000000010 от 22.06.2021 12:00:00 | 0 / 0 | 498630 | аналитика: Группа\n5. 2021-06-09T12:00:05Z | Поступление на расчетный счет 00000000009 от 09.06.2021 12:00:05 | 0 / 0 | 418960 | аналитика: Группа\n6. 2021-04-28T12:00:08Z | Поступление на расчетный счет 00000000008 от 28.04.2021 12:00:08 | 0 / 0 | 564300 | аналитика: Группа\n7. 2021-04-22T12:00:00Z | Поступление на расчетный счет 00000000007 от 22.04.2021 12:00:00 | 0 / 0 | 982420 | аналитика: Группа\n8. 2021-04-13T12:00:11Z | Поступление на расчетный счет 00000000006 от 13.04.2021 12:00:11 | 0 / 0 | 1882400 | аналитика: Группа\n9. 2021-03-25T12:00:02Z | Поступление на расчетный счет 00000000005 от 25.03.2021 12:00:02 | 0 / 0 | 644315 | аналитика: Группа\n10. 2021-03-24T12:00:03Z | Поступление на расчетный счет 00000000004 от 24.03.2021 12:00:03 | 0 / 0 | 1219990 | аналитика: Группа\n11. 2021-03-18T12:00:00Z | Поступление на расчетный счет 00000000003 от 18.03.2021 12:00:00 | 0 / 0 | 1425310 | аналитика: Группа\n12. 2021-03-12T12:00:03Z | Поступление на расчетный счет 00000000002 от 12.03.2021 12:00:03 | 0 / 0 | 214600 | аналитика: Группа\n13. 2021-02-19T12:00:01Z | Поступление на расчетный счет 00000000001 от 19.02.2021 12:00:01 | 0 / 0 | 518600 | аналитика: Группа\n14. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n15. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n16. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа\n17. 2020-11-30T12:00:07Z | Поступление на расчетный счет 00000000041 от 30.11.2020 12:00:07 | 0 / 0 | 38900 | аналитика: Группа\n18. 2020-11-19T12:00:04Z | Поступление на расчетный счет 00000000039 от 19.11.2020 12:00:04 | 0 / 0 | 3320600 | аналитика: Группа\n19. 2020-11-18T12:00:05Z | Поступление на расчетный счет 00000000038 от 18.11.2020 12:00:05 | 0 / 0 | 745300 | аналитика: Группа\n20. 2020-11-18T12:00:04Z | Поступление на расчетный счет 00000000037 от 18.11.2020 12:00:04 | 0 / 0 | 320000 | аналитика: Группа\n21. 2020-11-13T12:00:03Z | Поступление на расчетный счет 00000000036 от 13.11.2020 12:00:03 | 0 / 0 | 313600 | аналитика: Группа\n22. 2020-11-10T15:39:13Z | Поступление на расчетный счет 00000000035 от 10.11.2020 15:39:13 | 0 / 0 | 328300 | аналитика: Группа\n23. 2020-10-26T12:00:00Z | Поступление на расчетный счет 00000000034 от 26.10.2020 12:00:00 | 0 / 0 | 175000 | аналитика: Группа\n24. 2020-08-20T12:00:06Z | Поступление на расчетный счет 00000000032 от 20.08.2020 12:00:06 | 0 / 0 | 3126005 | аналитика: Группа\n25. 2020-07-30T12:00:00Z | Поступление на расчетный счет 00000000029 от 30.07.2020 12:00:00 | 0 / 0 | 20000 | аналитика: Группа\n26. 2020-07-27T12:00:00Z | Поступление на расчетный счет 00000000028 от 27.07.2020 12:00:00 | 0 / 0 | 40860 | аналитика: Группа", + "execution_lane": "address_query", + "detected_mode": "address_query", + "detected_intent": "list_documents_by_counterparty", + "selected_recipe": "address_documents_by_counterparty_v1", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "rows_matched": 26, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "llm_provider_used": "local", + "fallback_rule_hit": "documents_counterparty_all_time_rewrite", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "документы по контрагенту свк за все время", + "error_text": null, + "debug": { + "trace_id": "address-zLyD2lm6SC", + "prompt_version": "address_query_runtime_v1", + "schema_version": "address_query_runtime_v1", + "fallback_type": "none", + "route_summary": null, + "fragments": [ + + ], + "requirements_extracted": [ + + ], + "coverage_report": { + "requirements_total": 0, + "requirements_covered": 0, + "requirements_uncovered": [ + + ], + "requirements_partially_covered": [ + + ], + "clarification_needed_for": [ + + ], + "out_of_scope_requirements": [ + + ] + }, + "routes": [ + + ], + "retrieval_status": [ + + ], + "retrieval_results": [ + + ], + "answer_grounding_check": { + "status": "grounded", + "route_subject_match": true, + "missing_requirements": [ + + ], + "reasons": [ + "address_entity_detected", + "document_list_signal_detected", + "documents_by_counterparty_signal_detected" + ], + "why_included_summary": [ + + ], + "selection_reason_summary": [ + + ] + }, + "dropped_intent_segments": [ + + ], + "detected_mode": "address_query", + "detected_mode_confidence": "medium", + "query_shape": "DOCUMENT_LIST", + "query_shape_confidence": "medium", + "detected_intent": "list_documents_by_counterparty", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "counterparty": "свк" + }, + "missing_required_filters": [ + + ], + "selected_recipe": "address_documents_by_counterparty_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "account_scope_fallback_applied": false, + "anchor_type": "counterparty", + "anchor_value_raw": "свк", + "anchor_value_resolved": "Группа СВК", + "resolver_confidence": "medium", + "ambiguity_count": 0, + "match_failure_stage": "none", + "match_failure_reason": null, + "mcp_call_status": "matched_non_empty", + "rows_fetched": 1000, + "raw_rows_received": 1000, + "rows_after_account_scope": 124, + "rows_after_recipe_filter": 26, + "rows_materialized": 124, + "rows_matched": 26, + "raw_row_keys_sample": [ + "Период", + "Регистратор", + "СчетДт", + "СчетКт", + "Сумма", + "Контрагент", + "Period", + "Registrator", + "Amount" + ], + "materialization_drop_reason": "none", + "account_token_raw": null, + "account_token_normalized": null, + "account_scope_fields_checked": [ + "account_dt", + "account_kt", + "registrator", + "analytics" + ], + "account_scope_match_strategy": "account_code_regex_plus_alias_map_v1", + "account_scope_drop_reason": "not_applicable", + "runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS", + "limited_reason_category": null, + "response_type": "FACTUAL_LIST", + "execution_lane": "address_query", + "llm_decomposition_applied": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "документы по контрагенту свк за все время", + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "fallback_rule_hit": "documents_counterparty_all_time_rewrite", + "sanitized_user_message": "какие документы по контрагенту свк за весь период", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_signal_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + } + }, + { + "number": 5, + "question": "какие есть доки по свк с 2000 по 2025 год", + "session_key": "single_5", + "session_id": "asst-8QOPS213rL", + "status_code": 200, + "ok": true, + "elapsed_ms": 1956, + "reply_type": "factual", + "trace_id": "address-IKuzWguVS-", + "assistant_reply": "По окну 2000-01-01..2000-12-31 строк не найдено; показаны ближайшие доступные данные 2020-07-27..2021-11-10.\nСобран список документов по контрагенту (live address lane).\nСтрок отобрано: 26.\n1. 2021-11-10T12:00:07Z | Поступление на расчетный счет 00000000013 от 10.11.2021 12:00:07 | 0 / 0 | 20000 | аналитика: Группа\n2. 2021-09-29T12:00:03Z | Поступление на расчетный счет 00000000012 от 29.09.2021 12:00:03 | 0 / 0 | 50000 | аналитика: Группа\n3. 2021-08-31T12:00:04Z | Поступление на расчетный счет 00000000011 от 31.08.2021 12:00:04 | 0 / 0 | 120500 | аналитика: Группа\n4. 2021-06-22T12:00:00Z | Поступление на расчетный счет 00000000010 от 22.06.2021 12:00:00 | 0 / 0 | 498630 | аналитика: Группа\n5. 2021-06-09T12:00:05Z | Поступление на расчетный счет 00000000009 от 09.06.2021 12:00:05 | 0 / 0 | 418960 | аналитика: Группа\n6. 2021-04-28T12:00:08Z | Поступление на расчетный счет 00000000008 от 28.04.2021 12:00:08 | 0 / 0 | 564300 | аналитика: Группа\n7. 2021-04-22T12:00:00Z | Поступление на расчетный счет 00000000007 от 22.04.2021 12:00:00 | 0 / 0 | 982420 | аналитика: Группа\n8. 2021-04-13T12:00:11Z | Поступление на расчетный счет 00000000006 от 13.04.2021 12:00:11 | 0 / 0 | 1882400 | аналитика: Группа\n9. 2021-03-25T12:00:02Z | Поступление на расчетный счет 00000000005 от 25.03.2021 12:00:02 | 0 / 0 | 644315 | аналитика: Группа\n10. 2021-03-24T12:00:03Z | Поступление на расчетный счет 00000000004 от 24.03.2021 12:00:03 | 0 / 0 | 1219990 | аналитика: Группа\n11. 2021-03-18T12:00:00Z | Поступление на расчетный счет 00000000003 от 18.03.2021 12:00:00 | 0 / 0 | 1425310 | аналитика: Группа\n12. 2021-03-12T12:00:03Z | Поступление на расчетный счет 00000000002 от 12.03.2021 12:00:03 | 0 / 0 | 214600 | аналитика: Группа\n13. 2021-02-19T12:00:01Z | Поступление на расчетный счет 00000000001 от 19.02.2021 12:00:01 | 0 / 0 | 518600 | аналитика: Группа\n14. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n15. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n16. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа\n17. 2020-11-30T12:00:07Z | Поступление на расчетный счет 00000000041 от 30.11.2020 12:00:07 | 0 / 0 | 38900 | аналитика: Группа\n18. 2020-11-19T12:00:04Z | Поступление на расчетный счет 00000000039 от 19.11.2020 12:00:04 | 0 / 0 | 3320600 | аналитика: Группа\n19. 2020-11-18T12:00:05Z | Поступление на расчетный счет 00000000038 от 18.11.2020 12:00:05 | 0 / 0 | 745300 | аналитика: Группа\n20. 2020-11-18T12:00:04Z | Поступление на расчетный счет 00000000037 от 18.11.2020 12:00:04 | 0 / 0 | 320000 | аналитика: Группа\n21. 2020-11-13T12:00:03Z | Поступление на расчетный счет 00000000036 от 13.11.2020 12:00:03 | 0 / 0 | 313600 | аналитика: Группа\n22. 2020-11-10T15:39:13Z | Поступление на расчетный счет 00000000035 от 10.11.2020 15:39:13 | 0 / 0 | 328300 | аналитика: Группа\n23. 2020-10-26T12:00:00Z | Поступление на расчетный счет 00000000034 от 26.10.2020 12:00:00 | 0 / 0 | 175000 | аналитика: Группа\n24. 2020-08-20T12:00:06Z | Поступление на расчетный счет 00000000032 от 20.08.2020 12:00:06 | 0 / 0 | 3126005 | аналитика: Группа\n25. 2020-07-30T12:00:00Z | Поступление на расчетный счет 00000000029 от 30.07.2020 12:00:00 | 0 / 0 | 20000 | аналитика: Группа\n26. 2020-07-27T12:00:00Z | Поступление на расчетный счет 00000000028 от 27.07.2020 12:00:00 | 0 / 0 | 40860 | аналитика: Группа", + "execution_lane": "address_query", + "detected_mode": "address_query", + "detected_intent": "list_documents_by_counterparty", + "selected_recipe": "address_documents_by_counterparty_v1", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "rows_matched": 26, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "llm_provider_used": "local", + "fallback_rule_hit": "documents_counterparty_year_rewrite", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "документы по контрагенту свк за 2000 год", + "error_text": null, + "debug": { + "trace_id": "address-IKuzWguVS-", + "prompt_version": "address_query_runtime_v1", + "schema_version": "address_query_runtime_v1", + "fallback_type": "none", + "route_summary": null, + "fragments": [ + + ], + "requirements_extracted": [ + + ], + "coverage_report": { + "requirements_total": 0, + "requirements_covered": 0, + "requirements_uncovered": [ + + ], + "requirements_partially_covered": [ + + ], + "clarification_needed_for": [ + + ], + "out_of_scope_requirements": [ + + ] + }, + "routes": [ + + ], + "retrieval_status": [ + + ], + "retrieval_results": [ + + ], + "answer_grounding_check": { + "status": "grounded", + "route_subject_match": true, + "missing_requirements": [ + + ], + "reasons": [ + "address_entity_detected", + "document_list_signal_detected", + "documents_by_counterparty_signal_detected", + "period_window_auto_broadened_to_available_data" + ], + "why_included_summary": [ + + ], + "selection_reason_summary": [ + + ] + }, + "dropped_intent_segments": [ + + ], + "detected_mode": "address_query", + "detected_mode_confidence": "medium", + "query_shape": "DOCUMENT_LIST", + "query_shape_confidence": "medium", + "detected_intent": "list_documents_by_counterparty", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "counterparty": "свк", + "period_from": "2000-01-01", + "period_to": "2000-12-31" + }, + "missing_required_filters": [ + + ], + "selected_recipe": "address_documents_by_counterparty_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "account_scope_fallback_applied": false, + "anchor_type": "counterparty", + "anchor_value_raw": "свк", + "anchor_value_resolved": "Группа СВК", + "resolver_confidence": "medium", + "ambiguity_count": 0, + "match_failure_stage": "none", + "match_failure_reason": null, + "mcp_call_status": "matched_non_empty", + "rows_fetched": 1000, + "raw_rows_received": 1000, + "rows_after_account_scope": 124, + "rows_after_recipe_filter": 26, + "rows_materialized": 124, + "rows_matched": 26, + "raw_row_keys_sample": [ + "Период", + "Регистратор", + "СчетДт", + "СчетКт", + "Сумма", + "Контрагент", + "Period", + "Registrator", + "Amount" + ], + "materialization_drop_reason": "none", + "account_token_raw": null, + "account_token_normalized": null, + "account_scope_fields_checked": [ + "account_dt", + "account_kt", + "registrator", + "analytics" + ], + "account_scope_match_strategy": "account_code_regex_plus_alias_map_v1", + "account_scope_drop_reason": "not_applicable", + "runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS", + "limited_reason_category": null, + "response_type": "FACTUAL_LIST", + "execution_lane": "address_query", + "llm_decomposition_applied": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "документы по контрагенту свк за 2000 год", + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "fallback_rule_hit": "documents_counterparty_year_rewrite", + "sanitized_user_message": "какие есть доки по свк с 2000 по 2025 год", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_signal_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + } + }, + { + "number": 6, + "question": "Покажи документы по контрагенту СВК", + "session_key": "single_6", + "session_id": "asst-h6m3_aXtOM", + "status_code": 200, + "ok": true, + "elapsed_ms": 959, + "reply_type": "factual", + "trace_id": "address-ma33Gr6e6C", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 26.\n1. 2021-11-10T12:00:07Z | Поступление на расчетный счет 00000000013 от 10.11.2021 12:00:07 | 0 / 0 | 20000 | аналитика: Группа\n2. 2021-09-29T12:00:03Z | Поступление на расчетный счет 00000000012 от 29.09.2021 12:00:03 | 0 / 0 | 50000 | аналитика: Группа\n3. 2021-08-31T12:00:04Z | Поступление на расчетный счет 00000000011 от 31.08.2021 12:00:04 | 0 / 0 | 120500 | аналитика: Группа\n4. 2021-06-22T12:00:00Z | Поступление на расчетный счет 00000000010 от 22.06.2021 12:00:00 | 0 / 0 | 498630 | аналитика: Группа\n5. 2021-06-09T12:00:05Z | Поступление на расчетный счет 00000000009 от 09.06.2021 12:00:05 | 0 / 0 | 418960 | аналитика: Группа\n6. 2021-04-28T12:00:08Z | Поступление на расчетный счет 00000000008 от 28.04.2021 12:00:08 | 0 / 0 | 564300 | аналитика: Группа\n7. 2021-04-22T12:00:00Z | Поступление на расчетный счет 00000000007 от 22.04.2021 12:00:00 | 0 / 0 | 982420 | аналитика: Группа\n8. 2021-04-13T12:00:11Z | Поступление на расчетный счет 00000000006 от 13.04.2021 12:00:11 | 0 / 0 | 1882400 | аналитика: Группа\n9. 2021-03-25T12:00:02Z | Поступление на расчетный счет 00000000005 от 25.03.2021 12:00:02 | 0 / 0 | 644315 | аналитика: Группа\n10. 2021-03-24T12:00:03Z | Поступление на расчетный счет 00000000004 от 24.03.2021 12:00:03 | 0 / 0 | 1219990 | аналитика: Группа\n11. 2021-03-18T12:00:00Z | Поступление на расчетный счет 00000000003 от 18.03.2021 12:00:00 | 0 / 0 | 1425310 | аналитика: Группа\n12. 2021-03-12T12:00:03Z | Поступление на расчетный счет 00000000002 от 12.03.2021 12:00:03 | 0 / 0 | 214600 | аналитика: Группа\n13. 2021-02-19T12:00:01Z | Поступление на расчетный счет 00000000001 от 19.02.2021 12:00:01 | 0 / 0 | 518600 | аналитика: Группа\n14. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n15. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n16. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа\n17. 2020-11-30T12:00:07Z | Поступление на расчетный счет 00000000041 от 30.11.2020 12:00:07 | 0 / 0 | 38900 | аналитика: Группа\n18. 2020-11-19T12:00:04Z | Поступление на расчетный счет 00000000039 от 19.11.2020 12:00:04 | 0 / 0 | 3320600 | аналитика: Группа\n19. 2020-11-18T12:00:05Z | Поступление на расчетный счет 00000000038 от 18.11.2020 12:00:05 | 0 / 0 | 745300 | аналитика: Группа\n20. 2020-11-18T12:00:04Z | Поступление на расчетный счет 00000000037 от 18.11.2020 12:00:04 | 0 / 0 | 320000 | аналитика: Группа\n21. 2020-11-13T12:00:03Z | Поступление на расчетный счет 00000000036 от 13.11.2020 12:00:03 | 0 / 0 | 313600 | аналитика: Группа\n22. 2020-11-10T15:39:13Z | Поступление на расчетный счет 00000000035 от 10.11.2020 15:39:13 | 0 / 0 | 328300 | аналитика: Группа\n23. 2020-10-26T12:00:00Z | Поступление на расчетный счет 00000000034 от 26.10.2020 12:00:00 | 0 / 0 | 175000 | аналитика: Группа\n24. 2020-08-20T12:00:06Z | Поступление на расчетный счет 00000000032 от 20.08.2020 12:00:06 | 0 / 0 | 3126005 | аналитика: Группа\n25. 2020-07-30T12:00:00Z | Поступление на расчетный счет 00000000029 от 30.07.2020 12:00:00 | 0 / 0 | 20000 | аналитика: Группа\n26. 2020-07-27T12:00:00Z | Поступление на расчетный счет 00000000028 от 27.07.2020 12:00:00 | 0 / 0 | 40860 | аналитика: Группа", + "execution_lane": "address_query", + "detected_mode": "address_query", + "detected_intent": "list_documents_by_counterparty", + "selected_recipe": "address_documents_by_counterparty_v1", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "rows_matched": 26, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "llm_provider_used": "local", + "fallback_rule_hit": "documents_counterparty_rewrite", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "документы по контрагенту свк", + "error_text": null, + "debug": { + "trace_id": "address-ma33Gr6e6C", + "prompt_version": "address_query_runtime_v1", + "schema_version": "address_query_runtime_v1", + "fallback_type": "none", + "route_summary": null, + "fragments": [ + + ], + "requirements_extracted": [ + + ], + "coverage_report": { + "requirements_total": 0, + "requirements_covered": 0, + "requirements_uncovered": [ + + ], + "requirements_partially_covered": [ + + ], + "clarification_needed_for": [ + + ], + "out_of_scope_requirements": [ + + ] + }, + "routes": [ + + ], + "retrieval_status": [ + + ], + "retrieval_results": [ + + ], + "answer_grounding_check": { + "status": "grounded", + "route_subject_match": true, + "missing_requirements": [ + + ], + "reasons": [ + "address_entity_detected", + "document_list_signal_detected", + "documents_by_counterparty_signal_detected" + ], + "why_included_summary": [ + + ], + "selection_reason_summary": [ + + ] + }, + "dropped_intent_segments": [ + + ], + "detected_mode": "address_query", + "detected_mode_confidence": "medium", + "query_shape": "DOCUMENT_LIST", + "query_shape_confidence": "medium", + "detected_intent": "list_documents_by_counterparty", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "counterparty": "свк" + }, + "missing_required_filters": [ + + ], + "selected_recipe": "address_documents_by_counterparty_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "account_scope_fallback_applied": false, + "anchor_type": "counterparty", + "anchor_value_raw": "свк", + "anchor_value_resolved": "Группа СВК", + "resolver_confidence": "medium", + "ambiguity_count": 0, + "match_failure_stage": "none", + "match_failure_reason": null, + "mcp_call_status": "matched_non_empty", + "rows_fetched": 1000, + "raw_rows_received": 1000, + "rows_after_account_scope": 124, + "rows_after_recipe_filter": 26, + "rows_materialized": 124, + "rows_matched": 26, + "raw_row_keys_sample": [ + "Период", + "Регистратор", + "СчетДт", + "СчетКт", + "Сумма", + "Контрагент", + "Period", + "Registrator", + "Amount" + ], + "materialization_drop_reason": "none", + "account_token_raw": null, + "account_token_normalized": null, + "account_scope_fields_checked": [ + "account_dt", + "account_kt", + "registrator", + "analytics" + ], + "account_scope_match_strategy": "account_code_regex_plus_alias_map_v1", + "account_scope_drop_reason": "not_applicable", + "runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS", + "limited_reason_category": null, + "response_type": "FACTUAL_LIST", + "execution_lane": "address_query", + "llm_decomposition_applied": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "документы по контрагенту свк", + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "fallback_rule_hit": "documents_counterparty_rewrite", + "sanitized_user_message": "покажи документы по контрагенту свк", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_signal_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + } + }, + { + "number": 7, + "question": "Покажи банковские операции по СВК за 2020", + "session_key": "single_7", + "session_id": "asst-7AC_NeHrTA", + "status_code": 200, + "ok": true, + "elapsed_ms": 801, + "reply_type": "factual", + "trace_id": "address-lD43lZClkd", + "assistant_reply": "Собран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "execution_lane": "address_query", + "detected_mode": "address_query", + "detected_intent": "bank_operations_by_counterparty", + "selected_recipe": "address_bank_operations_by_counterparty_v1", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "rows_matched": 3, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "llm_provider_used": "local", + "fallback_rule_hit": "bank_operations_counterparty_year_rewrite", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "банковские операции по контрагенту свк за 2020 год", + "error_text": null, + "debug": { + "trace_id": "address-lD43lZClkd", + "prompt_version": "address_query_runtime_v1", + "schema_version": "address_query_runtime_v1", + "fallback_type": "none", + "route_summary": null, + "fragments": [ + + ], + "requirements_extracted": [ + + ], + "coverage_report": { + "requirements_total": 0, + "requirements_covered": 0, + "requirements_uncovered": [ + + ], + "requirements_partially_covered": [ + + ], + "clarification_needed_for": [ + + ], + "out_of_scope_requirements": [ + + ] + }, + "routes": [ + + ], + "retrieval_status": [ + + ], + "retrieval_results": [ + + ], + "answer_grounding_check": { + "status": "grounded", + "route_subject_match": true, + "missing_requirements": [ + + ], + "reasons": [ + "address_entity_detected", + "object_signal_detected", + "bank_ops_by_counterparty_signal_detected" + ], + "why_included_summary": [ + + ], + "selection_reason_summary": [ + + ] + }, + "dropped_intent_segments": [ + + ], + "detected_mode": "address_query", + "detected_mode_confidence": "medium", + "query_shape": "OBJECT_LOOKUP", + "query_shape_confidence": "medium", + "detected_intent": "bank_operations_by_counterparty", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "counterparty": "свк", + "period_from": "2020-01-01", + "period_to": "2020-12-31" + }, + "missing_required_filters": [ + + ], + "selected_recipe": "address_bank_operations_by_counterparty_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "account_scope_fallback_applied": false, + "anchor_type": "counterparty", + "anchor_value_raw": "свк", + "anchor_value_resolved": "Группа СВК", + "resolver_confidence": "medium", + "ambiguity_count": 0, + "match_failure_stage": "none", + "match_failure_reason": null, + "mcp_call_status": "matched_non_empty", + "rows_fetched": 20, + "raw_rows_received": 20, + "rows_after_account_scope": 5, + "rows_after_recipe_filter": 3, + "rows_materialized": 5, + "rows_matched": 3, + "raw_row_keys_sample": [ + "Период", + "Регистратор", + "СчетДт", + "СчетКт", + "Сумма", + "Контрагент", + "Period", + "Registrator", + "Amount" + ], + "materialization_drop_reason": "none", + "account_token_raw": null, + "account_token_normalized": null, + "account_scope_fields_checked": [ + "account_dt", + "account_kt", + "registrator", + "analytics" + ], + "account_scope_match_strategy": "account_code_regex_plus_alias_map_v1", + "account_scope_drop_reason": "not_applicable", + "runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS", + "limited_reason_category": null, + "response_type": "FACTUAL_LIST", + "execution_lane": "address_query", + "llm_decomposition_applied": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "банковские операции по контрагенту свк за 2020 год", + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "fallback_rule_hit": "bank_operations_counterparty_year_rewrite", + "sanitized_user_message": "покажи банковские операции по свк за 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_signal_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + } + }, + { + "number": 8, + "question": "Какие платежи по СВК в 2020", + "session_key": "single_8", + "session_id": "asst-koxw3u9Zj9", + "status_code": 200, + "ok": true, + "elapsed_ms": 1025, + "reply_type": "factual", + "trace_id": "address-7KuZkdrQDa", + "assistant_reply": "Собран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "execution_lane": "address_query", + "detected_mode": "address_query", + "detected_intent": "bank_operations_by_counterparty", + "selected_recipe": "address_bank_operations_by_counterparty_v1", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "rows_matched": 3, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "llm_provider_used": "local", + "fallback_rule_hit": "bank_operations_counterparty_year_rewrite", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "банковские операции по контрагенту свк за 2020 год", + "error_text": null, + "debug": { + "trace_id": "address-7KuZkdrQDa", + "prompt_version": "address_query_runtime_v1", + "schema_version": "address_query_runtime_v1", + "fallback_type": "none", + "route_summary": null, + "fragments": [ + + ], + "requirements_extracted": [ + + ], + "coverage_report": { + "requirements_total": 0, + "requirements_covered": 0, + "requirements_uncovered": [ + + ], + "requirements_partially_covered": [ + + ], + "clarification_needed_for": [ + + ], + "out_of_scope_requirements": [ + + ] + }, + "routes": [ + + ], + "retrieval_status": [ + + ], + "retrieval_results": [ + + ], + "answer_grounding_check": { + "status": "grounded", + "route_subject_match": true, + "missing_requirements": [ + + ], + "reasons": [ + "address_entity_detected", + "object_signal_detected", + "bank_ops_by_counterparty_signal_detected" + ], + "why_included_summary": [ + + ], + "selection_reason_summary": [ + + ] + }, + "dropped_intent_segments": [ + + ], + "detected_mode": "address_query", + "detected_mode_confidence": "medium", + "query_shape": "OBJECT_LOOKUP", + "query_shape_confidence": "medium", + "detected_intent": "bank_operations_by_counterparty", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "counterparty": "свк", + "period_from": "2020-01-01", + "period_to": "2020-12-31" + }, + "missing_required_filters": [ + + ], + "selected_recipe": "address_bank_operations_by_counterparty_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "account_scope_fallback_applied": false, + "anchor_type": "counterparty", + "anchor_value_raw": "свк", + "anchor_value_resolved": "Группа СВК", + "resolver_confidence": "medium", + "ambiguity_count": 0, + "match_failure_stage": "none", + "match_failure_reason": null, + "mcp_call_status": "matched_non_empty", + "rows_fetched": 20, + "raw_rows_received": 20, + "rows_after_account_scope": 5, + "rows_after_recipe_filter": 3, + "rows_materialized": 5, + "rows_matched": 3, + "raw_row_keys_sample": [ + "Период", + "Регистратор", + "СчетДт", + "СчетКт", + "Сумма", + "Контрагент", + "Period", + "Registrator", + "Amount" + ], + "materialization_drop_reason": "none", + "account_token_raw": null, + "account_token_normalized": null, + "account_scope_fields_checked": [ + "account_dt", + "account_kt", + "registrator", + "analytics" + ], + "account_scope_match_strategy": "account_code_regex_plus_alias_map_v1", + "account_scope_drop_reason": "not_applicable", + "runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS", + "limited_reason_category": null, + "response_type": "FACTUAL_LIST", + "execution_lane": "address_query", + "llm_decomposition_applied": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "банковские операции по контрагенту свк за 2020 год", + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "fallback_rule_hit": "bank_operations_counterparty_year_rewrite", + "sanitized_user_message": "какие платежи по свк в 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_signal_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + } + }, + { + "number": 9, + "question": "Покажи банковские операции по контрагенту СВК за весь период", + "session_key": "single_9", + "session_id": "asst-d7G1unNF_j", + "status_code": 200, + "ok": true, + "elapsed_ms": 1192, + "reply_type": "factual", + "trace_id": "address-C0SY7SFprq", + "assistant_reply": "Собран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 26.\n1. 2021-11-10T12:00:07Z | Поступление на расчетный счет 00000000013 от 10.11.2021 12:00:07 | 0 / 0 | 20000 | аналитика: Группа\n2. 2021-09-29T12:00:03Z | Поступление на расчетный счет 00000000012 от 29.09.2021 12:00:03 | 0 / 0 | 50000 | аналитика: Группа\n3. 2021-08-31T12:00:04Z | Поступление на расчетный счет 00000000011 от 31.08.2021 12:00:04 | 0 / 0 | 120500 | аналитика: Группа\n4. 2021-06-22T12:00:00Z | Поступление на расчетный счет 00000000010 от 22.06.2021 12:00:00 | 0 / 0 | 498630 | аналитика: Группа\n5. 2021-06-09T12:00:05Z | Поступление на расчетный счет 00000000009 от 09.06.2021 12:00:05 | 0 / 0 | 418960 | аналитика: Группа\n6. 2021-04-28T12:00:08Z | Поступление на расчетный счет 00000000008 от 28.04.2021 12:00:08 | 0 / 0 | 564300 | аналитика: Группа\n7. 2021-04-22T12:00:00Z | Поступление на расчетный счет 00000000007 от 22.04.2021 12:00:00 | 0 / 0 | 982420 | аналитика: Группа\n8. 2021-04-13T12:00:11Z | Поступление на расчетный счет 00000000006 от 13.04.2021 12:00:11 | 0 / 0 | 1882400 | аналитика: Группа\n9. 2021-03-25T12:00:02Z | Поступление на расчетный счет 00000000005 от 25.03.2021 12:00:02 | 0 / 0 | 644315 | аналитика: Группа\n10. 2021-03-24T12:00:03Z | Поступление на расчетный счет 00000000004 от 24.03.2021 12:00:03 | 0 / 0 | 1219990 | аналитика: Группа\n11. 2021-03-18T12:00:00Z | Поступление на расчетный счет 00000000003 от 18.03.2021 12:00:00 | 0 / 0 | 1425310 | аналитика: Группа\n12. 2021-03-12T12:00:03Z | Поступление на расчетный счет 00000000002 от 12.03.2021 12:00:03 | 0 / 0 | 214600 | аналитика: Группа\n13. 2021-02-19T12:00:01Z | Поступление на расчетный счет 00000000001 от 19.02.2021 12:00:01 | 0 / 0 | 518600 | аналитика: Группа\n14. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n15. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n16. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа\n17. 2020-11-30T12:00:07Z | Поступление на расчетный счет 00000000041 от 30.11.2020 12:00:07 | 0 / 0 | 38900 | аналитика: Группа\n18. 2020-11-19T12:00:04Z | Поступление на расчетный счет 00000000039 от 19.11.2020 12:00:04 | 0 / 0 | 3320600 | аналитика: Группа\n19. 2020-11-18T12:00:05Z | Поступление на расчетный счет 00000000038 от 18.11.2020 12:00:05 | 0 / 0 | 745300 | аналитика: Группа\n20. 2020-11-18T12:00:04Z | Поступление на расчетный счет 00000000037 от 18.11.2020 12:00:04 | 0 / 0 | 320000 | аналитика: Группа\n21. 2020-11-13T12:00:03Z | Поступление на расчетный счет 00000000036 от 13.11.2020 12:00:03 | 0 / 0 | 313600 | аналитика: Группа\n22. 2020-11-10T15:39:13Z | Поступление на расчетный счет 00000000035 от 10.11.2020 15:39:13 | 0 / 0 | 328300 | аналитика: Группа\n23. 2020-10-26T12:00:00Z | Поступление на расчетный счет 00000000034 от 26.10.2020 12:00:00 | 0 / 0 | 175000 | аналитика: Группа\n24. 2020-08-20T12:00:06Z | Поступление на расчетный счет 00000000032 от 20.08.2020 12:00:06 | 0 / 0 | 3126005 | аналитика: Группа\n25. 2020-07-30T12:00:00Z | Поступление на расчетный счет 00000000029 от 30.07.2020 12:00:00 | 0 / 0 | 20000 | аналитика: Группа\n26. 2020-07-27T12:00:00Z | Поступление на расчетный счет 00000000028 от 27.07.2020 12:00:00 | 0 / 0 | 40860 | аналитика: Группа", + "execution_lane": "address_query", + "detected_mode": "address_query", + "detected_intent": "bank_operations_by_counterparty", + "selected_recipe": "address_bank_operations_by_counterparty_v1", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "rows_matched": 26, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "llm_provider_used": "local", + "fallback_rule_hit": "bank_operations_counterparty_all_time_rewrite", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "банковские операции по контрагенту свк за все время", + "error_text": null, + "debug": { + "trace_id": "address-C0SY7SFprq", + "prompt_version": "address_query_runtime_v1", + "schema_version": "address_query_runtime_v1", + "fallback_type": "none", + "route_summary": null, + "fragments": [ + + ], + "requirements_extracted": [ + + ], + "coverage_report": { + "requirements_total": 0, + "requirements_covered": 0, + "requirements_uncovered": [ + + ], + "requirements_partially_covered": [ + + ], + "clarification_needed_for": [ + + ], + "out_of_scope_requirements": [ + + ] + }, + "routes": [ + + ], + "retrieval_status": [ + + ], + "retrieval_results": [ + + ], + "answer_grounding_check": { + "status": "grounded", + "route_subject_match": true, + "missing_requirements": [ + + ], + "reasons": [ + "address_entity_detected", + "object_signal_detected", + "bank_ops_by_counterparty_signal_detected" + ], + "why_included_summary": [ + + ], + "selection_reason_summary": [ + + ] + }, + "dropped_intent_segments": [ + + ], + "detected_mode": "address_query", + "detected_mode_confidence": "medium", + "query_shape": "OBJECT_LOOKUP", + "query_shape_confidence": "medium", + "detected_intent": "bank_operations_by_counterparty", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "counterparty": "свк" + }, + "missing_required_filters": [ + + ], + "selected_recipe": "address_bank_operations_by_counterparty_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "account_scope_fallback_applied": false, + "anchor_type": "counterparty", + "anchor_value_raw": "свк", + "anchor_value_resolved": "Группа СВК", + "resolver_confidence": "medium", + "ambiguity_count": 0, + "match_failure_stage": "none", + "match_failure_reason": null, + "mcp_call_status": "matched_non_empty", + "rows_fetched": 1000, + "raw_rows_received": 1000, + "rows_after_account_scope": 124, + "rows_after_recipe_filter": 26, + "rows_materialized": 124, + "rows_matched": 26, + "raw_row_keys_sample": [ + "Период", + "Регистратор", + "СчетДт", + "СчетКт", + "Сумма", + "Контрагент", + "Period", + "Registrator", + "Amount" + ], + "materialization_drop_reason": "none", + "account_token_raw": null, + "account_token_normalized": null, + "account_scope_fields_checked": [ + "account_dt", + "account_kt", + "registrator", + "analytics" + ], + "account_scope_match_strategy": "account_code_regex_plus_alias_map_v1", + "account_scope_drop_reason": "not_applicable", + "runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS", + "limited_reason_category": null, + "response_type": "FACTUAL_LIST", + "execution_lane": "address_query", + "llm_decomposition_applied": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "банковские операции по контрагенту свк за все время", + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "fallback_rule_hit": "bank_operations_counterparty_all_time_rewrite", + "sanitized_user_message": "покажи банковские операции по контрагенту свк за весь период", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_signal_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + } + }, + { + "number": 10, + "question": "Покажи документы по договору 15/24 за 2020", + "session_key": "single_10", + "session_id": "asst-sny3sFB19c", + "status_code": 200, + "ok": true, + "elapsed_ms": 2034, + "reply_type": "factual", + "trace_id": "address--lU8n9GlSZ", + "assistant_reply": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-08-31T15:00:06Z | Поступление товаров и услуг 00000000024 от 31.08.2020 15:00:06 | 19.04 / 76.05 | 233.33\n2. 2020-08-31T15:00:06Z | Поступление товаров и услуг 00000000024 от 31.08.2020 15:00:06 | 44.01 / 76.05 | 1166.67", + "execution_lane": "address_query", + "detected_mode": "address_query", + "detected_intent": "list_documents_by_contract", + "selected_recipe": "address_documents_by_contract_v1", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "rows_matched": 2, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "llm_provider_used": "local", + "fallback_rule_hit": "documents_contract_year_rewrite", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "документы по договору 15/24 за 2020 год", + "error_text": null, + "debug": { + "trace_id": "address--lU8n9GlSZ", + "prompt_version": "address_query_runtime_v1", + "schema_version": "address_query_runtime_v1", + "fallback_type": "none", + "route_summary": null, + "fragments": [ + + ], + "requirements_extracted": [ + + ], + "coverage_report": { + "requirements_total": 0, + "requirements_covered": 0, + "requirements_uncovered": [ + + ], + "requirements_partially_covered": [ + + ], + "clarification_needed_for": [ + + ], + "out_of_scope_requirements": [ + + ] + }, + "routes": [ + + ], + "retrieval_status": [ + + ], + "retrieval_results": [ + + ], + "answer_grounding_check": { + "status": "grounded", + "route_subject_match": true, + "missing_requirements": [ + + ], + "reasons": [ + "address_entity_detected", + "document_list_signal_detected", + "documents_by_contract_signal_detected", + "query_limit_auto_expanded_for_anchor_recovery" + ], + "why_included_summary": [ + + ], + "selection_reason_summary": [ + + ] + }, + "dropped_intent_segments": [ + + ], + "detected_mode": "address_query", + "detected_mode_confidence": "medium", + "query_shape": "DOCUMENT_LIST", + "query_shape_confidence": "medium", + "detected_intent": "list_documents_by_contract", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "contract": "15/24", + "period_from": "2020-01-01", + "period_to": "2020-12-31" + }, + "missing_required_filters": [ + + ], + "selected_recipe": "address_documents_by_contract_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "account_scope_fallback_applied": false, + "anchor_type": "contract", + "anchor_value_raw": "15/24", + "anchor_value_resolved": "15/24", + "resolver_confidence": "medium", + "ambiguity_count": 0, + "match_failure_stage": "none", + "match_failure_reason": null, + "mcp_call_status": "matched_non_empty", + "rows_fetched": 1000, + "raw_rows_received": 1000, + "rows_after_account_scope": 438, + "rows_after_recipe_filter": 5, + "rows_materialized": 438, + "rows_matched": 2, + "raw_row_keys_sample": [ + "Период", + "Регистратор", + "СчетДт", + "СчетКт", + "Сумма", + "Period", + "Registrator", + "AccountDt", + "AccountKt", + "Amount" + ], + "materialization_drop_reason": "none", + "account_token_raw": null, + "account_token_normalized": null, + "account_scope_fields_checked": [ + "account_dt", + "account_kt", + "registrator", + "analytics" + ], + "account_scope_match_strategy": "account_code_regex_plus_alias_map_v1", + "account_scope_drop_reason": "not_applicable", + "runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS", + "limited_reason_category": null, + "response_type": "FACTUAL_LIST", + "execution_lane": "address_query", + "llm_decomposition_applied": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "документы по договору 15/24 за 2020 год", + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "fallback_rule_hit": "documents_contract_year_rewrite", + "sanitized_user_message": "покажи документы по договору 15/24 за 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_signal_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + } + }, + { + "number": 11, + "question": "Покажи документы по договору 15/24", + "session_key": "single_11", + "session_id": "asst-x504ZNzRpo", + "status_code": 200, + "ok": true, + "elapsed_ms": 2054, + "reply_type": "partial_coverage", + "trace_id": "address-R4AOTGWmNt", + "assistant_reply": "Текущий live recipe не дает нужную видимость данных для этого сценария.\nПричина: строки по якорю найдены, но отфильтрованы intent-specific recipe.\nЧто нужно уточнить: сузьте период, уточните контрагента или документный тип.", + "execution_lane": "address_query", + "detected_mode": "address_query", + "detected_intent": "list_documents_by_contract", + "selected_recipe": "address_documents_by_contract_v1", + "mcp_call_status": "materialized_but_filtered_out_by_recipe", + "limited_reason_category": "recipe_visibility_gap", + "rows_matched": 0, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "llm_provider_used": "local", + "fallback_rule_hit": "documents_contract_rewrite", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "документы по договору 15/24", + "error_text": null, + "debug": { + "trace_id": "address-R4AOTGWmNt", + "prompt_version": "address_query_runtime_v1", + "schema_version": "address_query_runtime_v1", + "fallback_type": "partial", + "route_summary": null, + "fragments": [ + + ], + "requirements_extracted": [ + + ], + "coverage_report": { + "requirements_total": 0, + "requirements_covered": 0, + "requirements_uncovered": [ + + ], + "requirements_partially_covered": [ + + ], + "clarification_needed_for": [ + + ], + "out_of_scope_requirements": [ + + ] + }, + "routes": [ + + ], + "retrieval_status": [ + + ], + "retrieval_results": [ + + ], + "answer_grounding_check": { + "status": "partial", + "route_subject_match": true, + "missing_requirements": [ + + ], + "reasons": [ + "address_entity_detected", + "document_list_signal_detected", + "documents_by_contract_signal_detected" + ], + "why_included_summary": [ + + ], + "selection_reason_summary": [ + + ] + }, + "dropped_intent_segments": [ + + ], + "detected_mode": "address_query", + "detected_mode_confidence": "medium", + "query_shape": "DOCUMENT_LIST", + "query_shape_confidence": "medium", + "detected_intent": "list_documents_by_contract", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "contract": "15/24" + }, + "missing_required_filters": [ + + ], + "selected_recipe": "address_documents_by_contract_v1", + "mcp_call_status_legacy": "materialized_but_not_matched", + "account_scope_mode": "preferred", + "account_scope_fallback_applied": false, + "anchor_type": "contract", + "anchor_value_raw": "15/24", + "anchor_value_resolved": "15/24", + "resolver_confidence": "medium", + "ambiguity_count": 0, + "match_failure_stage": "materialized_but_filtered_out_by_recipe", + "match_failure_reason": "rows_filtered_out_by_intent_recipe_after_anchor_match", + "mcp_call_status": "materialized_but_filtered_out_by_recipe", + "rows_fetched": 1000, + "raw_rows_received": 1000, + "rows_after_account_scope": 416, + "rows_after_recipe_filter": 2, + "rows_materialized": 416, + "rows_matched": 0, + "raw_row_keys_sample": [ + "Период", + "Регистратор", + "СчетДт", + "СчетКт", + "Сумма", + "Period", + "Registrator", + "AccountDt", + "AccountKt", + "Amount" + ], + "materialization_drop_reason": "none", + "account_token_raw": null, + "account_token_normalized": null, + "account_scope_fields_checked": [ + "account_dt", + "account_kt", + "registrator", + "analytics" + ], + "account_scope_match_strategy": "account_code_regex_plus_alias_map_v1", + "account_scope_drop_reason": "not_applicable", + "runtime_readiness": "REQUIRES_SPECIALIZED_RECIPE", + "limited_reason_category": "recipe_visibility_gap", + "response_type": "LIMITED_WITH_REASON", + "execution_lane": "address_query", + "llm_decomposition_applied": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "документы по договору 15/24", + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "fallback_rule_hit": "documents_contract_rewrite", + "sanitized_user_message": "покажи документы по договору 15/24", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_signal_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + } + }, + { + "number": 12, + "question": "Покажи банковские операции по договору 15/24", + "session_key": "single_12", + "session_id": "asst-gaC9QR3ac9", + "status_code": 200, + "ok": true, + "elapsed_ms": 1102, + "reply_type": "factual", + "trace_id": "address-l3zRMsdTPy", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "execution_lane": "address_query", + "detected_mode": "address_query", + "detected_intent": "bank_operations_by_contract", + "selected_recipe": "address_bank_operations_by_contract_v1", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "rows_matched": 2, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "llm_provider_used": "local", + "fallback_rule_hit": "bank_operations_contract_rewrite", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "банковские операции по договору 15/24", + "error_text": null, + "debug": { + "trace_id": "address-l3zRMsdTPy", + "prompt_version": "address_query_runtime_v1", + "schema_version": "address_query_runtime_v1", + "fallback_type": "none", + "route_summary": null, + "fragments": [ + + ], + "requirements_extracted": [ + + ], + "coverage_report": { + "requirements_total": 0, + "requirements_covered": 0, + "requirements_uncovered": [ + + ], + "requirements_partially_covered": [ + + ], + "clarification_needed_for": [ + + ], + "out_of_scope_requirements": [ + + ] + }, + "routes": [ + + ], + "retrieval_status": [ + + ], + "retrieval_results": [ + + ], + "answer_grounding_check": { + "status": "grounded", + "route_subject_match": true, + "missing_requirements": [ + + ], + "reasons": [ + "address_entity_detected", + "object_signal_detected", + "bank_ops_by_contract_signal_detected" + ], + "why_included_summary": [ + + ], + "selection_reason_summary": [ + + ] + }, + "dropped_intent_segments": [ + + ], + "detected_mode": "address_query", + "detected_mode_confidence": "medium", + "query_shape": "OBJECT_LOOKUP", + "query_shape_confidence": "medium", + "detected_intent": "bank_operations_by_contract", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "contract": "15/24" + }, + "missing_required_filters": [ + + ], + "selected_recipe": "address_bank_operations_by_contract_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "account_scope_fallback_applied": false, + "anchor_type": "contract", + "anchor_value_raw": "15/24", + "anchor_value_resolved": "15/24", + "resolver_confidence": "medium", + "ambiguity_count": 0, + "match_failure_stage": "none", + "match_failure_reason": null, + "mcp_call_status": "matched_non_empty", + "rows_fetched": 1000, + "raw_rows_received": 1000, + "rows_after_account_scope": 341, + "rows_after_recipe_filter": 2, + "rows_materialized": 341, + "rows_matched": 2, + "raw_row_keys_sample": [ + "Период", + "Регистратор", + "СчетДт", + "СчетКт", + "Сумма", + "Period", + "Registrator", + "AccountDt", + "AccountKt", + "Amount" + ], + "materialization_drop_reason": "none", + "account_token_raw": null, + "account_token_normalized": null, + "account_scope_fields_checked": [ + "account_dt", + "account_kt", + "registrator", + "analytics" + ], + "account_scope_match_strategy": "account_code_regex_plus_alias_map_v1", + "account_scope_drop_reason": "not_applicable", + "runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS", + "limited_reason_category": null, + "response_type": "FACTUAL_LIST", + "execution_lane": "address_query", + "llm_decomposition_applied": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "банковские операции по договору 15/24", + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "fallback_rule_hit": "bank_operations_contract_rewrite", + "sanitized_user_message": "покажи банковские операции по договору 15/24", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_signal_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + } + }, + { + "number": 13, + "question": "Есть ли долг по договору 15/24 на 2020-07-31", + "session_key": "single_13", + "session_id": "asst-UUVkCb5sCS", + "status_code": 200, + "ok": true, + "elapsed_ms": 2964, + "reply_type": "partial_coverage", + "trace_id": "address-Ea84sfq8iH", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "execution_lane": "address_query", + "detected_mode": "address_query", + "detected_intent": "list_documents_by_contract", + "selected_recipe": "address_documents_by_contract_v1", + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "rows_matched": 0, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "error:Failed to extract output_text from /responses payload.", + "llm_provider_used": "local", + "fallback_rule_hit": null, + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "Есть ли долг по договору 15/24 на 2020-07-31", + "error_text": null, + "debug": { + "trace_id": "address-Ea84sfq8iH", + "prompt_version": "address_query_runtime_v1", + "schema_version": "address_query_runtime_v1", + "fallback_type": "partial", + "route_summary": null, + "fragments": [ + + ], + "requirements_extracted": [ + + ], + "coverage_report": { + "requirements_total": 0, + "requirements_covered": 0, + "requirements_uncovered": [ + + ], + "requirements_partially_covered": [ + + ], + "clarification_needed_for": [ + + ], + "out_of_scope_requirements": [ + + ] + }, + "routes": [ + + ], + "retrieval_status": [ + + ], + "retrieval_results": [ + + ], + "answer_grounding_check": { + "status": "partial", + "route_subject_match": true, + "missing_requirements": [ + + ], + "reasons": [ + "address_action_detected", + "address_entity_detected", + "verify_signal_detected", + "documents_by_contract_signal_detected" + ], + "why_included_summary": [ + + ], + "selection_reason_summary": [ + + ] + }, + "dropped_intent_segments": [ + + ], + "detected_mode": "address_query", + "detected_mode_confidence": "high", + "query_shape": "VERIFY_FACTUAL", + "query_shape_confidence": "medium", + "detected_intent": "list_documents_by_contract", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "contract": "15/24", + "period_from": "2020-07-01", + "period_to": "2020-07-31" + }, + "missing_required_filters": [ + + ], + "selected_recipe": "address_documents_by_contract_v1", + "mcp_call_status_legacy": "materialized_but_not_matched", + "account_scope_mode": "preferred", + "account_scope_fallback_applied": true, + "anchor_type": "contract", + "anchor_value_raw": "15/24", + "anchor_value_resolved": "15/24", + "resolver_confidence": "medium", + "ambiguity_count": 0, + "match_failure_stage": "materialized_but_not_anchor_matched", + "match_failure_reason": "contract_anchor_not_matched_in_materialized_rows", + "mcp_call_status": "materialized_but_not_anchor_matched", + "rows_fetched": 20, + "raw_rows_received": 20, + "rows_after_account_scope": 20, + "rows_after_recipe_filter": 0, + "rows_materialized": 20, + "rows_matched": 0, + "raw_row_keys_sample": [ + "Период", + "Регистратор", + "СчетДт", + "СчетКт", + "Сумма", + "Period", + "Registrator", + "AccountDt", + "AccountKt", + "Amount" + ], + "materialization_drop_reason": "none", + "account_token_raw": null, + "account_token_normalized": null, + "account_scope_fields_checked": [ + "account_dt", + "account_kt", + "registrator", + "analytics" + ], + "account_scope_match_strategy": "account_code_regex_plus_alias_map_v1", + "account_scope_drop_reason": "not_applicable", + "runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS", + "limited_reason_category": "empty_match", + "response_type": "LIMITED_WITH_REASON", + "execution_lane": "address_query", + "llm_decomposition_applied": false, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "Есть ли долг по договору 15/24 на 2020-07-31", + "llm_decomposition_reason": "error:Failed to extract output_text from /responses payload.", + "fallback_rule_hit": null, + "sanitized_user_message": "есть ли долг по договору 15/24 на 2020-07-31", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_signal_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + } + }, + { + "number": 14, + "question": "Покажи операции по договору 15/24 за весь период", + "session_key": "single_14", + "session_id": "asst-yxnKwYNQ5c", + "status_code": 200, + "ok": true, + "elapsed_ms": 1076, + "reply_type": "factual", + "trace_id": "address-WpACUSyAcA", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "execution_lane": "address_query", + "detected_mode": "address_query", + "detected_intent": "bank_operations_by_contract", + "selected_recipe": "address_bank_operations_by_contract_v1", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "rows_matched": 2, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "llm_provider_used": "local", + "fallback_rule_hit": "bank_operations_contract_all_time_rewrite", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "банковские операции по договору 15/24 за все время", + "error_text": null, + "debug": { + "trace_id": "address-WpACUSyAcA", + "prompt_version": "address_query_runtime_v1", + "schema_version": "address_query_runtime_v1", + "fallback_type": "none", + "route_summary": null, + "fragments": [ + + ], + "requirements_extracted": [ + + ], + "coverage_report": { + "requirements_total": 0, + "requirements_covered": 0, + "requirements_uncovered": [ + + ], + "requirements_partially_covered": [ + + ], + "clarification_needed_for": [ + + ], + "out_of_scope_requirements": [ + + ] + }, + "routes": [ + + ], + "retrieval_status": [ + + ], + "retrieval_results": [ + + ], + "answer_grounding_check": { + "status": "grounded", + "route_subject_match": true, + "missing_requirements": [ + + ], + "reasons": [ + "address_entity_detected", + "object_signal_detected", + "bank_ops_by_contract_signal_detected" + ], + "why_included_summary": [ + + ], + "selection_reason_summary": [ + + ] + }, + "dropped_intent_segments": [ + + ], + "detected_mode": "address_query", + "detected_mode_confidence": "medium", + "query_shape": "OBJECT_LOOKUP", + "query_shape_confidence": "medium", + "detected_intent": "bank_operations_by_contract", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "contract": "15/24" + }, + "missing_required_filters": [ + + ], + "selected_recipe": "address_bank_operations_by_contract_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "account_scope_fallback_applied": false, + "anchor_type": "contract", + "anchor_value_raw": "15/24", + "anchor_value_resolved": "15/24", + "resolver_confidence": "medium", + "ambiguity_count": 0, + "match_failure_stage": "none", + "match_failure_reason": null, + "mcp_call_status": "matched_non_empty", + "rows_fetched": 1000, + "raw_rows_received": 1000, + "rows_after_account_scope": 341, + "rows_after_recipe_filter": 2, + "rows_materialized": 341, + "rows_matched": 2, + "raw_row_keys_sample": [ + "Период", + "Регистратор", + "СчетДт", + "СчетКт", + "Сумма", + "Period", + "Registrator", + "AccountDt", + "AccountKt", + "Amount" + ], + "materialization_drop_reason": "none", + "account_token_raw": null, + "account_token_normalized": null, + "account_scope_fields_checked": [ + "account_dt", + "account_kt", + "registrator", + "analytics" + ], + "account_scope_match_strategy": "account_code_regex_plus_alias_map_v1", + "account_scope_drop_reason": "not_applicable", + "runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS", + "limited_reason_category": null, + "response_type": "FACTUAL_LIST", + "execution_lane": "address_query", + "llm_decomposition_applied": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "банковские операции по договору 15/24 за все время", + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "fallback_rule_hit": "bank_operations_contract_all_time_rewrite", + "sanitized_user_message": "покажи операции по договору 15/24 за весь период", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_signal_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + } + }, + { + "number": 15, + "question": "Покажи сальдо по счету 60.01 на дату 2020-07-31", + "session_key": "single_15", + "session_id": "asst-OyooDcGGLh", + "status_code": 200, + "ok": true, + "elapsed_ms": 816, + "reply_type": "factual", + "trace_id": "address-C0_v3dn3Kq", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 5.\nСумма по отобранным движениям: 216200.\n1. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400\n2. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600\n3. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400\n4. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200", + "execution_lane": "address_query", + "detected_mode": "address_query", + "detected_intent": "account_balance_snapshot", + "selected_recipe": "address_movements_account_snapshot_v1", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "rows_matched": 5, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "llm_provider_used": "local", + "fallback_rule_hit": "balance_month_period_rewrite", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "остаток по счету 60.01 на 2020-07", + "error_text": null, + "debug": { + "trace_id": "address-C0_v3dn3Kq", + "prompt_version": "address_query_runtime_v1", + "schema_version": "address_query_runtime_v1", + "fallback_type": "none", + "route_summary": null, + "fragments": [ + + ], + "requirements_extracted": [ + + ], + "coverage_report": { + "requirements_total": 0, + "requirements_covered": 0, + "requirements_uncovered": [ + + ], + "requirements_partially_covered": [ + + ], + "clarification_needed_for": [ + + ], + "out_of_scope_requirements": [ + + ] + }, + "routes": [ + + ], + "retrieval_status": [ + + ], + "retrieval_results": [ + + ], + "answer_grounding_check": { + "status": "grounded", + "route_subject_match": true, + "missing_requirements": [ + + ], + "reasons": [ + "address_action_detected", + "address_entity_detected", + "aggregate_signal_detected", + "account_balance_signal_detected" + ], + "why_included_summary": [ + + ], + "selection_reason_summary": [ + + ] + }, + "dropped_intent_segments": [ + + ], + "detected_mode": "address_query", + "detected_mode_confidence": "high", + "query_shape": "AGGREGATE_LOOKUP", + "query_shape_confidence": "high", + "detected_intent": "account_balance_snapshot", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "account": "60.01", + "period_from": "2020-07-01", + "period_to": "2020-07-31", + "as_of_date": "2020-07-31" + }, + "missing_required_filters": [ + + ], + "selected_recipe": "address_movements_account_snapshot_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "strict", + "account_scope_fallback_applied": false, + "anchor_type": "account", + "anchor_value_raw": "60.01", + "anchor_value_resolved": "60.01", + "resolver_confidence": "high", + "ambiguity_count": 0, + "match_failure_stage": "none", + "match_failure_reason": null, + "mcp_call_status": "matched_non_empty", + "rows_fetched": 5, + "raw_rows_received": 5, + "rows_after_account_scope": 5, + "rows_after_recipe_filter": 5, + "rows_materialized": 5, + "rows_matched": 5, + "raw_row_keys_sample": [ + "Период", + "Регистратор", + "СчетДт", + "СчетКт", + "Сумма", + "Period", + "Registrator", + "AccountDt", + "AccountKt", + "Amount" + ], + "materialization_drop_reason": "none", + "account_token_raw": "60.01", + "account_token_normalized": "60.1", + "account_scope_fields_checked": [ + "account_dt", + "account_kt", + "registrator", + "analytics" + ], + "account_scope_match_strategy": "account_code_regex_plus_alias_map_v1", + "account_scope_drop_reason": "rows_remaining_after_scope_filter", + "runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS", + "limited_reason_category": null, + "response_type": "FACTUAL_SUMMARY", + "execution_lane": "address_query", + "llm_decomposition_applied": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "остаток по счету 60.01 на 2020-07", + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "fallback_rule_hit": "balance_month_period_rewrite", + "sanitized_user_message": "покажи сальдо по счету 60.01 на дату 2020-07-31", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_signal_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + } + }, + { + "number": 16, + "question": "Какой остаток по счету 60 на 2020.05", + "session_key": "single_16", + "session_id": "asst-PhFTkR2mWs", + "status_code": 200, + "ok": true, + "elapsed_ms": 976, + "reply_type": "factual", + "trace_id": "address-m9ux4yXs3Z", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 6.\nСумма по отобранным движениям: 849499.\n1. 2020-05-22T10:14:43Z | Списание с расчетного счета 00000000148 от 22.05.2020 10:14:43 | 60.02 / 51 | 142299\n2. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 75367\n3. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 211833\n4. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 187967", + "execution_lane": "address_query", + "detected_mode": "address_query", + "detected_intent": "account_balance_snapshot", + "selected_recipe": "address_movements_account_snapshot_v1", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "rows_matched": 6, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "llm_provider_used": "local", + "fallback_rule_hit": "balance_month_period_rewrite", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "остаток по счету 60 на 2020-05", + "error_text": null, + "debug": { + "trace_id": "address-m9ux4yXs3Z", + "prompt_version": "address_query_runtime_v1", + "schema_version": "address_query_runtime_v1", + "fallback_type": "none", + "route_summary": null, + "fragments": [ + + ], + "requirements_extracted": [ + + ], + "coverage_report": { + "requirements_total": 0, + "requirements_covered": 0, + "requirements_uncovered": [ + + ], + "requirements_partially_covered": [ + + ], + "clarification_needed_for": [ + + ], + "out_of_scope_requirements": [ + + ] + }, + "routes": [ + + ], + "retrieval_status": [ + + ], + "retrieval_results": [ + + ], + "answer_grounding_check": { + "status": "grounded", + "route_subject_match": true, + "missing_requirements": [ + + ], + "reasons": [ + "address_action_detected", + "address_entity_detected", + "aggregate_signal_detected", + "account_balance_signal_detected" + ], + "why_included_summary": [ + + ], + "selection_reason_summary": [ + + ] + }, + "dropped_intent_segments": [ + + ], + "detected_mode": "address_query", + "detected_mode_confidence": "high", + "query_shape": "AGGREGATE_LOOKUP", + "query_shape_confidence": "high", + "detected_intent": "account_balance_snapshot", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "account": "60", + "period_from": "2020-05-01", + "period_to": "2020-05-31", + "as_of_date": "2020-05-31" + }, + "missing_required_filters": [ + + ], + "selected_recipe": "address_movements_account_snapshot_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "strict", + "account_scope_fallback_applied": false, + "anchor_type": "account", + "anchor_value_raw": "60", + "anchor_value_resolved": "60", + "resolver_confidence": "high", + "ambiguity_count": 0, + "match_failure_stage": "none", + "match_failure_reason": null, + "mcp_call_status": "matched_non_empty", + "rows_fetched": 6, + "raw_rows_received": 6, + "rows_after_account_scope": 6, + "rows_after_recipe_filter": 6, + "rows_materialized": 6, + "rows_matched": 6, + "raw_row_keys_sample": [ + "Период", + "Регистратор", + "СчетДт", + "СчетКт", + "Сумма", + "Period", + "Registrator", + "AccountDt", + "AccountKt", + "Amount" + ], + "materialization_drop_reason": "none", + "account_token_raw": "60", + "account_token_normalized": "60", + "account_scope_fields_checked": [ + "account_dt", + "account_kt", + "registrator", + "analytics" + ], + "account_scope_match_strategy": "account_code_regex_plus_alias_map_v1", + "account_scope_drop_reason": "rows_remaining_after_scope_filter", + "runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS", + "limited_reason_category": null, + "response_type": "FACTUAL_SUMMARY", + "execution_lane": "address_query", + "llm_decomposition_applied": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "остаток по счету 60 на 2020-05", + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "fallback_rule_hit": "balance_month_period_rewrite", + "sanitized_user_message": "какой остаток по счету 60 на 2020.05", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_signal_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + } + }, + { + "number": 17, + "question": "Какой остаток по счету 60 на 2020 май", + "session_key": "single_17", + "session_id": "asst-QjQxuKBZHt", + "status_code": 200, + "ok": true, + "elapsed_ms": 1059, + "reply_type": "factual", + "trace_id": "address-Pv_7Fitjsj", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 6.\nСумма по отобранным движениям: 849499.\n1. 2020-05-22T10:14:43Z | Списание с расчетного счета 00000000148 от 22.05.2020 10:14:43 | 60.02 / 51 | 142299\n2. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 75367\n3. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 211833\n4. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 187967", + "execution_lane": "address_query", + "detected_mode": "address_query", + "detected_intent": "account_balance_snapshot", + "selected_recipe": "address_movements_account_snapshot_v1", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "rows_matched": 6, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "llm_provider_used": "local", + "fallback_rule_hit": "balance_month_period_rewrite", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "остаток по счету 60 на 2020-05", + "error_text": null, + "debug": { + "trace_id": "address-Pv_7Fitjsj", + "prompt_version": "address_query_runtime_v1", + "schema_version": "address_query_runtime_v1", + "fallback_type": "none", + "route_summary": null, + "fragments": [ + + ], + "requirements_extracted": [ + + ], + "coverage_report": { + "requirements_total": 0, + "requirements_covered": 0, + "requirements_uncovered": [ + + ], + "requirements_partially_covered": [ + + ], + "clarification_needed_for": [ + + ], + "out_of_scope_requirements": [ + + ] + }, + "routes": [ + + ], + "retrieval_status": [ + + ], + "retrieval_results": [ + + ], + "answer_grounding_check": { + "status": "grounded", + "route_subject_match": true, + "missing_requirements": [ + + ], + "reasons": [ + "address_action_detected", + "address_entity_detected", + "aggregate_signal_detected", + "account_balance_signal_detected" + ], + "why_included_summary": [ + + ], + "selection_reason_summary": [ + + ] + }, + "dropped_intent_segments": [ + + ], + "detected_mode": "address_query", + "detected_mode_confidence": "high", + "query_shape": "AGGREGATE_LOOKUP", + "query_shape_confidence": "high", + "detected_intent": "account_balance_snapshot", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "account": "60", + "period_from": "2020-05-01", + "period_to": "2020-05-31", + "as_of_date": "2020-05-31" + }, + "missing_required_filters": [ + + ], + "selected_recipe": "address_movements_account_snapshot_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "strict", + "account_scope_fallback_applied": false, + "anchor_type": "account", + "anchor_value_raw": "60", + "anchor_value_resolved": "60", + "resolver_confidence": "high", + "ambiguity_count": 0, + "match_failure_stage": "none", + "match_failure_reason": null, + "mcp_call_status": "matched_non_empty", + "rows_fetched": 6, + "raw_rows_received": 6, + "rows_after_account_scope": 6, + "rows_after_recipe_filter": 6, + "rows_materialized": 6, + "rows_matched": 6, + "raw_row_keys_sample": [ + "Период", + "Регистратор", + "СчетДт", + "СчетКт", + "Сумма", + "Period", + "Registrator", + "AccountDt", + "AccountKt", + "Amount" + ], + "materialization_drop_reason": "none", + "account_token_raw": "60", + "account_token_normalized": "60", + "account_scope_fields_checked": [ + "account_dt", + "account_kt", + "registrator", + "analytics" + ], + "account_scope_match_strategy": "account_code_regex_plus_alias_map_v1", + "account_scope_drop_reason": "rows_remaining_after_scope_filter", + "runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS", + "limited_reason_category": null, + "response_type": "FACTUAL_SUMMARY", + "execution_lane": "address_query", + "llm_decomposition_applied": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "остаток по счету 60 на 2020-05", + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "fallback_rule_hit": "balance_month_period_rewrite", + "sanitized_user_message": "какой остаток по счету 60 на 2020 май", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_signal_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + } + }, + { + "number": 18, + "question": "Какие документы формируют остаток по счету 60.01 на 2020-07-31", + "session_key": "single_18", + "session_id": "asst-RY7LBPJr6i", + "status_code": 200, + "ok": true, + "elapsed_ms": 1006, + "reply_type": "factual", + "trace_id": "address-79WCGlfJ6y", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 5.\nСумма по отобранным движениям: 216200.\n1. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400\n2. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600\n3. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400\n4. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200", + "execution_lane": "address_query", + "detected_mode": "address_query", + "detected_intent": "account_balance_snapshot", + "selected_recipe": "address_movements_account_snapshot_v1", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "rows_matched": 5, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "llm_provider_used": "local", + "fallback_rule_hit": "balance_month_period_rewrite", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "остаток по счету 60.01 на 2020-07", + "error_text": null, + "debug": { + "trace_id": "address-79WCGlfJ6y", + "prompt_version": "address_query_runtime_v1", + "schema_version": "address_query_runtime_v1", + "fallback_type": "none", + "route_summary": null, + "fragments": [ + + ], + "requirements_extracted": [ + + ], + "coverage_report": { + "requirements_total": 0, + "requirements_covered": 0, + "requirements_uncovered": [ + + ], + "requirements_partially_covered": [ + + ], + "clarification_needed_for": [ + + ], + "out_of_scope_requirements": [ + + ] + }, + "routes": [ + + ], + "retrieval_status": [ + + ], + "retrieval_results": [ + + ], + "answer_grounding_check": { + "status": "grounded", + "route_subject_match": true, + "missing_requirements": [ + + ], + "reasons": [ + "address_action_detected", + "address_entity_detected", + "aggregate_signal_detected", + "account_balance_signal_detected" + ], + "why_included_summary": [ + + ], + "selection_reason_summary": [ + + ] + }, + "dropped_intent_segments": [ + + ], + "detected_mode": "address_query", + "detected_mode_confidence": "high", + "query_shape": "AGGREGATE_LOOKUP", + "query_shape_confidence": "high", + "detected_intent": "account_balance_snapshot", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "account": "60.01", + "period_from": "2020-07-01", + "period_to": "2020-07-31", + "as_of_date": "2020-07-31" + }, + "missing_required_filters": [ + + ], + "selected_recipe": "address_movements_account_snapshot_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "strict", + "account_scope_fallback_applied": false, + "anchor_type": "account", + "anchor_value_raw": "60.01", + "anchor_value_resolved": "60.01", + "resolver_confidence": "high", + "ambiguity_count": 0, + "match_failure_stage": "none", + "match_failure_reason": null, + "mcp_call_status": "matched_non_empty", + "rows_fetched": 5, + "raw_rows_received": 5, + "rows_after_account_scope": 5, + "rows_after_recipe_filter": 5, + "rows_materialized": 5, + "rows_matched": 5, + "raw_row_keys_sample": [ + "Период", + "Регистратор", + "СчетДт", + "СчетКт", + "Сумма", + "Period", + "Registrator", + "AccountDt", + "AccountKt", + "Amount" + ], + "materialization_drop_reason": "none", + "account_token_raw": "60.01", + "account_token_normalized": "60.1", + "account_scope_fields_checked": [ + "account_dt", + "account_kt", + "registrator", + "analytics" + ], + "account_scope_match_strategy": "account_code_regex_plus_alias_map_v1", + "account_scope_drop_reason": "rows_remaining_after_scope_filter", + "runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS", + "limited_reason_category": null, + "response_type": "FACTUAL_SUMMARY", + "execution_lane": "address_query", + "llm_decomposition_applied": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "остаток по счету 60.01 на 2020-07", + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "fallback_rule_hit": "balance_month_period_rewrite", + "sanitized_user_message": "какие документы формируют остаток по счету 60.01 на 2020-07-31", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_signal_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + } + }, + { + "number": 19, + "question": "Какой остаток по счету 62 на сегодня", + "session_key": "single_19", + "session_id": "asst-hh3GkT9dJF", + "status_code": 200, + "ok": true, + "elapsed_ms": 1053, + "reply_type": "factual", + "trace_id": "address-APD4RgfWPm", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 200.\nСумма по отобранным движениям: 63309907.220000006.\n1. 2022-01-20T12:00:02Z | Списание с расчетного счета 00000000004 от 20.01.2022 12:00:02 | 62.02 / 51 | 1808325\n2. 2022-01-20T12:00:02Z | Списание с расчетного счета 00000000004 от 20.01.2022 12:00:02 | 62.02 / 51 | 216600\n3. 2022-01-20T12:00:02Z | Списание с расчетного счета 00000000004 от 20.01.2022 12:00:02 | 62.02 / 51 | 104726\n4. 2021-11-10T12:00:07Z | Поступление на расчетный счет 00000000013 от 10.11.2021 12:00:07 | 51 / 62.02 | 20000", + "execution_lane": "address_query", + "detected_mode": "address_query", + "detected_intent": "account_balance_snapshot", + "selected_recipe": "address_movements_account_snapshot_v1", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "rows_matched": 200, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "llm_provider_used": "local", + "fallback_rule_hit": "balance_account_rewrite", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "остаток по счету 62", + "error_text": null, + "debug": { + "trace_id": "address-APD4RgfWPm", + "prompt_version": "address_query_runtime_v1", + "schema_version": "address_query_runtime_v1", + "fallback_type": "none", + "route_summary": null, + "fragments": [ + + ], + "requirements_extracted": [ + + ], + "coverage_report": { + "requirements_total": 0, + "requirements_covered": 0, + "requirements_uncovered": [ + + ], + "requirements_partially_covered": [ + + ], + "clarification_needed_for": [ + + ], + "out_of_scope_requirements": [ + + ] + }, + "routes": [ + + ], + "retrieval_status": [ + + ], + "retrieval_results": [ + + ], + "answer_grounding_check": { + "status": "grounded", + "route_subject_match": true, + "missing_requirements": [ + + ], + "reasons": [ + "address_action_detected", + "address_entity_detected", + "aggregate_signal_detected", + "account_balance_signal_detected" + ], + "why_included_summary": [ + + ], + "selection_reason_summary": [ + + ] + }, + "dropped_intent_segments": [ + + ], + "detected_mode": "address_query", + "detected_mode_confidence": "high", + "query_shape": "AGGREGATE_LOOKUP", + "query_shape_confidence": "high", + "detected_intent": "account_balance_snapshot", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "account": "62", + "as_of_date": "2026-04-02" + }, + "missing_required_filters": [ + + ], + "selected_recipe": "address_movements_account_snapshot_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "strict", + "account_scope_fallback_applied": false, + "anchor_type": "account", + "anchor_value_raw": "62", + "anchor_value_resolved": "62", + "resolver_confidence": "high", + "ambiguity_count": 0, + "match_failure_stage": "none", + "match_failure_reason": null, + "mcp_call_status": "matched_non_empty", + "rows_fetched": 200, + "raw_rows_received": 200, + "rows_after_account_scope": 200, + "rows_after_recipe_filter": 200, + "rows_materialized": 200, + "rows_matched": 200, + "raw_row_keys_sample": [ + "Период", + "Регистратор", + "СчетДт", + "СчетКт", + "Сумма", + "Period", + "Registrator", + "AccountDt", + "AccountKt", + "Amount" + ], + "materialization_drop_reason": "none", + "account_token_raw": "62", + "account_token_normalized": "62", + "account_scope_fields_checked": [ + "account_dt", + "account_kt", + "registrator", + "analytics" + ], + "account_scope_match_strategy": "account_code_regex_plus_alias_map_v1", + "account_scope_drop_reason": "rows_remaining_after_scope_filter", + "runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS", + "limited_reason_category": null, + "response_type": "FACTUAL_SUMMARY", + "execution_lane": "address_query", + "llm_decomposition_applied": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "остаток по счету 62", + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "fallback_rule_hit": "balance_account_rewrite", + "sanitized_user_message": "какой остаток по счету 62 на сегодня", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_signal_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + } + }, + { + "number": 20, + "question": "Покажи документы по СВК за 2020", + "session_key": "chain_a", + "session_id": "asst-FcMkXBWcu2", + "status_code": 200, + "ok": true, + "elapsed_ms": 930, + "reply_type": "factual", + "trace_id": "address-8ow8kdJ5LG", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "execution_lane": "address_query", + "detected_mode": "address_query", + "detected_intent": "list_documents_by_counterparty", + "selected_recipe": "address_documents_by_counterparty_v1", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "rows_matched": 3, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "llm_provider_used": "local", + "fallback_rule_hit": "documents_counterparty_year_rewrite", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "документы по контрагенту свк за 2020 год", + "error_text": null, + "debug": { + "trace_id": "address-8ow8kdJ5LG", + "prompt_version": "address_query_runtime_v1", + "schema_version": "address_query_runtime_v1", + "fallback_type": "none", + "route_summary": null, + "fragments": [ + + ], + "requirements_extracted": [ + + ], + "coverage_report": { + "requirements_total": 0, + "requirements_covered": 0, + "requirements_uncovered": [ + + ], + "requirements_partially_covered": [ + + ], + "clarification_needed_for": [ + + ], + "out_of_scope_requirements": [ + + ] + }, + "routes": [ + + ], + "retrieval_status": [ + + ], + "retrieval_results": [ + + ], + "answer_grounding_check": { + "status": "grounded", + "route_subject_match": true, + "missing_requirements": [ + + ], + "reasons": [ + "address_entity_detected", + "document_list_signal_detected", + "documents_by_counterparty_signal_detected" + ], + "why_included_summary": [ + + ], + "selection_reason_summary": [ + + ] + }, + "dropped_intent_segments": [ + + ], + "detected_mode": "address_query", + "detected_mode_confidence": "medium", + "query_shape": "DOCUMENT_LIST", + "query_shape_confidence": "medium", + "detected_intent": "list_documents_by_counterparty", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "counterparty": "свк", + "period_from": "2020-01-01", + "period_to": "2020-12-31" + }, + "missing_required_filters": [ + + ], + "selected_recipe": "address_documents_by_counterparty_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "account_scope_fallback_applied": false, + "anchor_type": "counterparty", + "anchor_value_raw": "свк", + "anchor_value_resolved": "Группа СВК", + "resolver_confidence": "medium", + "ambiguity_count": 0, + "match_failure_stage": "none", + "match_failure_reason": null, + "mcp_call_status": "matched_non_empty", + "rows_fetched": 20, + "raw_rows_received": 20, + "rows_after_account_scope": 5, + "rows_after_recipe_filter": 3, + "rows_materialized": 5, + "rows_matched": 3, + "raw_row_keys_sample": [ + "Период", + "Регистратор", + "СчетДт", + "СчетКт", + "Сумма", + "Контрагент", + "Period", + "Registrator", + "Amount" + ], + "materialization_drop_reason": "none", + "account_token_raw": null, + "account_token_normalized": null, + "account_scope_fields_checked": [ + "account_dt", + "account_kt", + "registrator", + "analytics" + ], + "account_scope_match_strategy": "account_code_regex_plus_alias_map_v1", + "account_scope_drop_reason": "not_applicable", + "runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS", + "limited_reason_category": null, + "response_type": "FACTUAL_LIST", + "execution_lane": "address_query", + "llm_decomposition_applied": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "документы по контрагенту свк за 2020 год", + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "fallback_rule_hit": "documents_counterparty_year_rewrite", + "sanitized_user_message": "покажи документы по свк за 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_signal_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + } + }, + { + "number": 21, + "question": "а теперь только за май 2020", + "session_key": "chain_a", + "session_id": "asst-FcMkXBWcu2", + "status_code": 200, + "ok": true, + "elapsed_ms": 3222, + "reply_type": "factual", + "trace_id": "address-NBb4u1L5Xq", + "assistant_reply": "По окну 2020-05-01..2020-05-31 строк не найдено; показаны ближайшие доступные данные 2020-07-27..2021-11-10.\nСобран список документов по контрагенту (live address lane).\nСтрок отобрано: 26.\n1. 2021-11-10T12:00:07Z | Поступление на расчетный счет 00000000013 от 10.11.2021 12:00:07 | 0 / 0 | 20000 | аналитика: Группа\n2. 2021-09-29T12:00:03Z | Поступление на расчетный счет 00000000012 от 29.09.2021 12:00:03 | 0 / 0 | 50000 | аналитика: Группа\n3. 2021-08-31T12:00:04Z | Поступление на расчетный счет 00000000011 от 31.08.2021 12:00:04 | 0 / 0 | 120500 | аналитика: Группа\n4. 2021-06-22T12:00:00Z | Поступление на расчетный счет 00000000010 от 22.06.2021 12:00:00 | 0 / 0 | 498630 | аналитика: Группа\n5. 2021-06-09T12:00:05Z | Поступление на расчетный счет 00000000009 от 09.06.2021 12:00:05 | 0 / 0 | 418960 | аналитика: Группа\n6. 2021-04-28T12:00:08Z | Поступление на расчетный счет 00000000008 от 28.04.2021 12:00:08 | 0 / 0 | 564300 | аналитика: Группа\n7. 2021-04-22T12:00:00Z | Поступление на расчетный счет 00000000007 от 22.04.2021 12:00:00 | 0 / 0 | 982420 | аналитика: Группа\n8. 2021-04-13T12:00:11Z | Поступление на расчетный счет 00000000006 от 13.04.2021 12:00:11 | 0 / 0 | 1882400 | аналитика: Группа\n9. 2021-03-25T12:00:02Z | Поступление на расчетный счет 00000000005 от 25.03.2021 12:00:02 | 0 / 0 | 644315 | аналитика: Группа\n10. 2021-03-24T12:00:03Z | Поступление на расчетный счет 00000000004 от 24.03.2021 12:00:03 | 0 / 0 | 1219990 | аналитика: Группа\n11. 2021-03-18T12:00:00Z | Поступление на расчетный счет 00000000003 от 18.03.2021 12:00:00 | 0 / 0 | 1425310 | аналитика: Группа\n12. 2021-03-12T12:00:03Z | Поступление на расчетный счет 00000000002 от 12.03.2021 12:00:03 | 0 / 0 | 214600 | аналитика: Группа\n13. 2021-02-19T12:00:01Z | Поступление на расчетный счет 00000000001 от 19.02.2021 12:00:01 | 0 / 0 | 518600 | аналитика: Группа\n14. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n15. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n16. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа\n17. 2020-11-30T12:00:07Z | Поступление на расчетный счет 00000000041 от 30.11.2020 12:00:07 | 0 / 0 | 38900 | аналитика: Группа\n18. 2020-11-19T12:00:04Z | Поступление на расчетный счет 00000000039 от 19.11.2020 12:00:04 | 0 / 0 | 3320600 | аналитика: Группа\n19. 2020-11-18T12:00:05Z | Поступление на расчетный счет 00000000038 от 18.11.2020 12:00:05 | 0 / 0 | 745300 | аналитика: Группа\n20. 2020-11-18T12:00:04Z | Поступление на расчетный счет 00000000037 от 18.11.2020 12:00:04 | 0 / 0 | 320000 | аналитика: Группа\n21. 2020-11-13T12:00:03Z | Поступление на расчетный счет 00000000036 от 13.11.2020 12:00:03 | 0 / 0 | 313600 | аналитика: Группа\n22. 2020-11-10T15:39:13Z | Поступление на расчетный счет 00000000035 от 10.11.2020 15:39:13 | 0 / 0 | 328300 | аналитика: Группа\n23. 2020-10-26T12:00:00Z | Поступление на расчетный счет 00000000034 от 26.10.2020 12:00:00 | 0 / 0 | 175000 | аналитика: Группа\n24. 2020-08-20T12:00:06Z | Поступление на расчетный счет 00000000032 от 20.08.2020 12:00:06 | 0 / 0 | 3126005 | аналитика: Группа\n25. 2020-07-30T12:00:00Z | Поступление на расчетный счет 00000000029 от 30.07.2020 12:00:00 | 0 / 0 | 20000 | аналитика: Группа\n26. 2020-07-27T12:00:00Z | Поступление на расчетный счет 00000000028 от 27.07.2020 12:00:00 | 0 / 0 | 40860 | аналитика: Группа", + "execution_lane": "address_query", + "detected_mode": "address_query", + "detected_intent": "list_documents_by_counterparty", + "selected_recipe": "address_documents_by_counterparty_v1", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "rows_matched": 26, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "llm_provider_used": "local", + "fallback_rule_hit": null, + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "а теперь только за май 2020", + "error_text": null, + "debug": { + "trace_id": "address-NBb4u1L5Xq", + "prompt_version": "address_query_runtime_v1", + "schema_version": "address_query_runtime_v1", + "fallback_type": "none", + "route_summary": null, + "fragments": [ + + ], + "requirements_extracted": [ + + ], + "coverage_report": { + "requirements_total": 0, + "requirements_covered": 0, + "requirements_uncovered": [ + + ], + "requirements_partially_covered": [ + + ], + "clarification_needed_for": [ + + ], + "out_of_scope_requirements": [ + + ] + }, + "routes": [ + + ], + "retrieval_status": [ + + ], + "retrieval_results": [ + + ], + "answer_grounding_check": { + "status": "grounded", + "route_subject_match": true, + "missing_requirements": [ + + ], + "reasons": [ + "no_address_or_deep_signal", + "address_mode_from_followup_context", + "shape_not_detected", + "intent_not_supported_in_v1", + "intent_from_followup_context", + "counterparty_from_followup_context", + "address_followup_context_applied", + "period_window_auto_broadened_to_available_data" + ], + "why_included_summary": [ + + ], + "selection_reason_summary": [ + + ] + }, + "dropped_intent_segments": [ + + ], + "detected_mode": "address_query", + "detected_mode_confidence": "medium", + "query_shape": "UNKNOWN", + "query_shape_confidence": "low", + "detected_intent": "list_documents_by_counterparty", + "detected_intent_confidence": "low", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "period_from": "2020-05-01", + "period_to": "2020-05-31", + "counterparty": "свк" + }, + "missing_required_filters": [ + + ], + "selected_recipe": "address_documents_by_counterparty_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "account_scope_fallback_applied": false, + "anchor_type": "counterparty", + "anchor_value_raw": "свк", + "anchor_value_resolved": "Группа СВК", + "resolver_confidence": "medium", + "ambiguity_count": 0, + "match_failure_stage": "none", + "match_failure_reason": null, + "mcp_call_status": "matched_non_empty", + "rows_fetched": 1000, + "raw_rows_received": 1000, + "rows_after_account_scope": 124, + "rows_after_recipe_filter": 26, + "rows_materialized": 124, + "rows_matched": 26, + "raw_row_keys_sample": [ + "Период", + "Регистратор", + "СчетДт", + "СчетКт", + "Сумма", + "Контрагент", + "Period", + "Registrator", + "Amount" + ], + "materialization_drop_reason": "none", + "account_token_raw": null, + "account_token_normalized": null, + "account_scope_fields_checked": [ + "account_dt", + "account_kt", + "registrator", + "analytics" + ], + "account_scope_match_strategy": "account_code_regex_plus_alias_map_v1", + "account_scope_drop_reason": "not_applicable", + "runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS", + "limited_reason_category": null, + "response_type": "FACTUAL_LIST", + "execution_lane": "address_query", + "llm_decomposition_applied": false, + "llm_decomposition_attempted": false, + "llm_provider_used": "local", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "а теперь только за май 2020", + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "sanitized_user_message": "а теперь только за май 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "followup_context_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + } + }, + { + "number": 22, + "question": "а за все время?", + "session_key": "chain_a", + "session_id": "asst-FcMkXBWcu2", + "status_code": 200, + "ok": true, + "elapsed_ms": 1134, + "reply_type": "factual", + "trace_id": "address-4smDYls8ZJ", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 26.\n1. 2021-11-10T12:00:07Z | Поступление на расчетный счет 00000000013 от 10.11.2021 12:00:07 | 0 / 0 | 20000 | аналитика: Группа\n2. 2021-09-29T12:00:03Z | Поступление на расчетный счет 00000000012 от 29.09.2021 12:00:03 | 0 / 0 | 50000 | аналитика: Группа\n3. 2021-08-31T12:00:04Z | Поступление на расчетный счет 00000000011 от 31.08.2021 12:00:04 | 0 / 0 | 120500 | аналитика: Группа\n4. 2021-06-22T12:00:00Z | Поступление на расчетный счет 00000000010 от 22.06.2021 12:00:00 | 0 / 0 | 498630 | аналитика: Группа\n5. 2021-06-09T12:00:05Z | Поступление на расчетный счет 00000000009 от 09.06.2021 12:00:05 | 0 / 0 | 418960 | аналитика: Группа\n6. 2021-04-28T12:00:08Z | Поступление на расчетный счет 00000000008 от 28.04.2021 12:00:08 | 0 / 0 | 564300 | аналитика: Группа\n7. 2021-04-22T12:00:00Z | Поступление на расчетный счет 00000000007 от 22.04.2021 12:00:00 | 0 / 0 | 982420 | аналитика: Группа\n8. 2021-04-13T12:00:11Z | Поступление на расчетный счет 00000000006 от 13.04.2021 12:00:11 | 0 / 0 | 1882400 | аналитика: Группа\n9. 2021-03-25T12:00:02Z | Поступление на расчетный счет 00000000005 от 25.03.2021 12:00:02 | 0 / 0 | 644315 | аналитика: Группа\n10. 2021-03-24T12:00:03Z | Поступление на расчетный счет 00000000004 от 24.03.2021 12:00:03 | 0 / 0 | 1219990 | аналитика: Группа\n11. 2021-03-18T12:00:00Z | Поступление на расчетный счет 00000000003 от 18.03.2021 12:00:00 | 0 / 0 | 1425310 | аналитика: Группа\n12. 2021-03-12T12:00:03Z | Поступление на расчетный счет 00000000002 от 12.03.2021 12:00:03 | 0 / 0 | 214600 | аналитика: Группа\n13. 2021-02-19T12:00:01Z | Поступление на расчетный счет 00000000001 от 19.02.2021 12:00:01 | 0 / 0 | 518600 | аналитика: Группа\n14. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n15. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n16. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа\n17. 2020-11-30T12:00:07Z | Поступление на расчетный счет 00000000041 от 30.11.2020 12:00:07 | 0 / 0 | 38900 | аналитика: Группа\n18. 2020-11-19T12:00:04Z | Поступление на расчетный счет 00000000039 от 19.11.2020 12:00:04 | 0 / 0 | 3320600 | аналитика: Группа\n19. 2020-11-18T12:00:05Z | Поступление на расчетный счет 00000000038 от 18.11.2020 12:00:05 | 0 / 0 | 745300 | аналитика: Группа\n20. 2020-11-18T12:00:04Z | Поступление на расчетный счет 00000000037 от 18.11.2020 12:00:04 | 0 / 0 | 320000 | аналитика: Группа\n21. 2020-11-13T12:00:03Z | Поступление на расчетный счет 00000000036 от 13.11.2020 12:00:03 | 0 / 0 | 313600 | аналитика: Группа\n22. 2020-11-10T15:39:13Z | Поступление на расчетный счет 00000000035 от 10.11.2020 15:39:13 | 0 / 0 | 328300 | аналитика: Группа\n23. 2020-10-26T12:00:00Z | Поступление на расчетный счет 00000000034 от 26.10.2020 12:00:00 | 0 / 0 | 175000 | аналитика: Группа\n24. 2020-08-20T12:00:06Z | Поступление на расчетный счет 00000000032 от 20.08.2020 12:00:06 | 0 / 0 | 3126005 | аналитика: Группа\n25. 2020-07-30T12:00:00Z | Поступление на расчетный счет 00000000029 от 30.07.2020 12:00:00 | 0 / 0 | 20000 | аналитика: Группа\n26. 2020-07-27T12:00:00Z | Поступление на расчетный счет 00000000028 от 27.07.2020 12:00:00 | 0 / 0 | 40860 | аналитика: Группа", + "execution_lane": "address_query", + "detected_mode": "address_query", + "detected_intent": "list_documents_by_counterparty", + "selected_recipe": "address_documents_by_counterparty_v1", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "rows_matched": 26, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "llm_provider_used": "local", + "fallback_rule_hit": null, + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "а за все время?", + "error_text": null, + "debug": { + "trace_id": "address-4smDYls8ZJ", + "prompt_version": "address_query_runtime_v1", + "schema_version": "address_query_runtime_v1", + "fallback_type": "none", + "route_summary": null, + "fragments": [ + + ], + "requirements_extracted": [ + + ], + "coverage_report": { + "requirements_total": 0, + "requirements_covered": 0, + "requirements_uncovered": [ + + ], + "requirements_partially_covered": [ + + ], + "clarification_needed_for": [ + + ], + "out_of_scope_requirements": [ + + ] + }, + "routes": [ + + ], + "retrieval_status": [ + + ], + "retrieval_results": [ + + ], + "answer_grounding_check": { + "status": "grounded", + "route_subject_match": true, + "missing_requirements": [ + + ], + "reasons": [ + "no_address_or_deep_signal", + "address_mode_from_followup_context", + "shape_not_detected", + "intent_not_supported_in_v1", + "intent_from_followup_context", + "counterparty_from_followup_context", + "address_followup_context_applied" + ], + "why_included_summary": [ + + ], + "selection_reason_summary": [ + + ] + }, + "dropped_intent_segments": [ + + ], + "detected_mode": "address_query", + "detected_mode_confidence": "medium", + "query_shape": "UNKNOWN", + "query_shape_confidence": "low", + "detected_intent": "list_documents_by_counterparty", + "detected_intent_confidence": "low", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "counterparty": "свк" + }, + "missing_required_filters": [ + + ], + "selected_recipe": "address_documents_by_counterparty_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "account_scope_fallback_applied": false, + "anchor_type": "counterparty", + "anchor_value_raw": "свк", + "anchor_value_resolved": "Группа СВК", + "resolver_confidence": "medium", + "ambiguity_count": 0, + "match_failure_stage": "none", + "match_failure_reason": null, + "mcp_call_status": "matched_non_empty", + "rows_fetched": 1000, + "raw_rows_received": 1000, + "rows_after_account_scope": 124, + "rows_after_recipe_filter": 26, + "rows_materialized": 124, + "rows_matched": 26, + "raw_row_keys_sample": [ + "Период", + "Регистратор", + "СчетДт", + "СчетКт", + "Сумма", + "Контрагент", + "Period", + "Registrator", + "Amount" + ], + "materialization_drop_reason": "none", + "account_token_raw": null, + "account_token_normalized": null, + "account_scope_fields_checked": [ + "account_dt", + "account_kt", + "registrator", + "analytics" + ], + "account_scope_match_strategy": "account_code_regex_plus_alias_map_v1", + "account_scope_drop_reason": "not_applicable", + "runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS", + "limited_reason_category": null, + "response_type": "FACTUAL_LIST", + "execution_lane": "address_query", + "llm_decomposition_applied": false, + "llm_decomposition_attempted": false, + "llm_provider_used": "local", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "а за все время?", + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "sanitized_user_message": "а за все время?", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "followup_context_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + } + }, + { + "number": 23, + "question": "а по счету 60.01 на ту же дату", + "session_key": "chain_a", + "session_id": "asst-FcMkXBWcu2", + "status_code": 200, + "ok": true, + "elapsed_ms": 755, + "reply_type": "factual", + "trace_id": "address-TIBxozZlSP", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 200.\nСумма по отобранным движениям: 31878451.5.\n1. 2022-04-18T12:00:00Z | Поступление товаров и услуг 00000000007 от 18.04.2022 12:00:00 | 97.21 / 60.01 | 14790\n2. 2022-04-18T12:00:00Z | Поступление товаров и услуг 00000000007 от 18.04.2022 12:00:00 | 60.01 / 60.02 | 14790\n3. 2022-01-20T12:00:01Z | Списание с расчетного счета 00000000003 от 20.01.2022 12:00:01 | 60.01 / 51 | 1705109.5\n4. 2021-05-17T12:00:00Z | Поступление товаров и услуг 00000000009 от 17.05.2021 12:00:00 | 19.04 / 60.01 | 12000", + "execution_lane": "address_query", + "detected_mode": "address_query", + "detected_intent": "account_balance_snapshot", + "selected_recipe": "address_movements_account_snapshot_v1", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "rows_matched": 200, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "error:Failed to extract output_text from /responses payload.", + "llm_provider_used": "local", + "fallback_rule_hit": null, + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "а по счету 60.01 на ту же дату", + "error_text": null, + "debug": { + "trace_id": "address-TIBxozZlSP", + "prompt_version": "address_query_runtime_v1", + "schema_version": "address_query_runtime_v1", + "fallback_type": "none", + "route_summary": null, + "fragments": [ + + ], + "requirements_extracted": [ + + ], + "coverage_report": { + "requirements_total": 0, + "requirements_covered": 0, + "requirements_uncovered": [ + + ], + "requirements_partially_covered": [ + + ], + "clarification_needed_for": [ + + ], + "out_of_scope_requirements": [ + + ] + }, + "routes": [ + + ], + "retrieval_status": [ + + ], + "retrieval_results": [ + + ], + "answer_grounding_check": { + "status": "grounded", + "route_subject_match": true, + "missing_requirements": [ + + ], + "reasons": [ + "address_entity_detected", + "shape_not_detected", + "account_balance_signal_detected" + ], + "why_included_summary": [ + + ], + "selection_reason_summary": [ + + ] + }, + "dropped_intent_segments": [ + + ], + "detected_mode": "address_query", + "detected_mode_confidence": "medium", + "query_shape": "UNKNOWN", + "query_shape_confidence": "low", + "detected_intent": "account_balance_snapshot", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "account": "60.01", + "as_of_date": "2026-04-02" + }, + "missing_required_filters": [ + + ], + "selected_recipe": "address_movements_account_snapshot_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "strict", + "account_scope_fallback_applied": false, + "anchor_type": "account", + "anchor_value_raw": "60.01", + "anchor_value_resolved": "60.01", + "resolver_confidence": "high", + "ambiguity_count": 0, + "match_failure_stage": "none", + "match_failure_reason": null, + "mcp_call_status": "matched_non_empty", + "rows_fetched": 200, + "raw_rows_received": 200, + "rows_after_account_scope": 200, + "rows_after_recipe_filter": 200, + "rows_materialized": 200, + "rows_matched": 200, + "raw_row_keys_sample": [ + "Период", + "Регистратор", + "СчетДт", + "СчетКт", + "Сумма", + "Period", + "Registrator", + "AccountDt", + "AccountKt", + "Amount" + ], + "materialization_drop_reason": "none", + "account_token_raw": "60.01", + "account_token_normalized": "60.1", + "account_scope_fields_checked": [ + "account_dt", + "account_kt", + "registrator", + "analytics" + ], + "account_scope_match_strategy": "account_code_regex_plus_alias_map_v1", + "account_scope_drop_reason": "rows_remaining_after_scope_filter", + "runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS", + "limited_reason_category": null, + "response_type": "FACTUAL_SUMMARY", + "execution_lane": "address_query", + "llm_decomposition_applied": false, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "а по счету 60.01 на ту же дату", + "llm_decomposition_reason": "error:Failed to extract output_text from /responses payload.", + "fallback_rule_hit": null, + "sanitized_user_message": "а по счету 60.01 на ту же дату", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_signal_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + } + }, + { + "number": 24, + "question": "Покажи банковские операции по договору 15/24", + "session_key": "chain_b", + "session_id": "asst-NzEwL_Cksq", + "status_code": 200, + "ok": true, + "elapsed_ms": 1228, + "reply_type": "factual", + "trace_id": "address-2xQihRut0-", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "execution_lane": "address_query", + "detected_mode": "address_query", + "detected_intent": "bank_operations_by_contract", + "selected_recipe": "address_bank_operations_by_contract_v1", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "rows_matched": 2, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "llm_provider_used": "local", + "fallback_rule_hit": "bank_operations_contract_rewrite", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "банковские операции по договору 15/24", + "error_text": null, + "debug": { + "trace_id": "address-2xQihRut0-", + "prompt_version": "address_query_runtime_v1", + "schema_version": "address_query_runtime_v1", + "fallback_type": "none", + "route_summary": null, + "fragments": [ + + ], + "requirements_extracted": [ + + ], + "coverage_report": { + "requirements_total": 0, + "requirements_covered": 0, + "requirements_uncovered": [ + + ], + "requirements_partially_covered": [ + + ], + "clarification_needed_for": [ + + ], + "out_of_scope_requirements": [ + + ] + }, + "routes": [ + + ], + "retrieval_status": [ + + ], + "retrieval_results": [ + + ], + "answer_grounding_check": { + "status": "grounded", + "route_subject_match": true, + "missing_requirements": [ + + ], + "reasons": [ + "address_entity_detected", + "object_signal_detected", + "bank_ops_by_contract_signal_detected" + ], + "why_included_summary": [ + + ], + "selection_reason_summary": [ + + ] + }, + "dropped_intent_segments": [ + + ], + "detected_mode": "address_query", + "detected_mode_confidence": "medium", + "query_shape": "OBJECT_LOOKUP", + "query_shape_confidence": "medium", + "detected_intent": "bank_operations_by_contract", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "contract": "15/24" + }, + "missing_required_filters": [ + + ], + "selected_recipe": "address_bank_operations_by_contract_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "account_scope_fallback_applied": false, + "anchor_type": "contract", + "anchor_value_raw": "15/24", + "anchor_value_resolved": "15/24", + "resolver_confidence": "medium", + "ambiguity_count": 0, + "match_failure_stage": "none", + "match_failure_reason": null, + "mcp_call_status": "matched_non_empty", + "rows_fetched": 1000, + "raw_rows_received": 1000, + "rows_after_account_scope": 341, + "rows_after_recipe_filter": 2, + "rows_materialized": 341, + "rows_matched": 2, + "raw_row_keys_sample": [ + "Период", + "Регистратор", + "СчетДт", + "СчетКт", + "Сумма", + "Period", + "Registrator", + "AccountDt", + "AccountKt", + "Amount" + ], + "materialization_drop_reason": "none", + "account_token_raw": null, + "account_token_normalized": null, + "account_scope_fields_checked": [ + "account_dt", + "account_kt", + "registrator", + "analytics" + ], + "account_scope_match_strategy": "account_code_regex_plus_alias_map_v1", + "account_scope_drop_reason": "not_applicable", + "runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS", + "limited_reason_category": null, + "response_type": "FACTUAL_LIST", + "execution_lane": "address_query", + "llm_decomposition_applied": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "банковские операции по договору 15/24", + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "fallback_rule_hit": "bank_operations_contract_rewrite", + "sanitized_user_message": "покажи банковские операции по договору 15/24", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_signal_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + } + }, + { + "number": 25, + "question": "а за 2020 год", + "session_key": "chain_b", + "session_id": "asst-NzEwL_Cksq", + "status_code": 200, + "ok": true, + "elapsed_ms": 1976, + "reply_type": "factual", + "trace_id": "address-xuQc6LKQy-", + "assistant_reply": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.\nСобран список банковских операций по договору (live address lane).\nСтрок отобрано: 3.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53\n3. 2020-08-31T15:00:04Z | Списание с расчетного счета 00000000224 от 31.08.2020 15:00:04 | 91.02 / 51 | 106.47", + "execution_lane": "address_query", + "detected_mode": "address_query", + "detected_intent": "bank_operations_by_contract", + "selected_recipe": "address_bank_operations_by_contract_v1", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "rows_matched": 3, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "llm_provider_used": "local", + "fallback_rule_hit": null, + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "а за 2020 год", + "error_text": null, + "debug": { + "trace_id": "address-xuQc6LKQy-", + "prompt_version": "address_query_runtime_v1", + "schema_version": "address_query_runtime_v1", + "fallback_type": "none", + "route_summary": null, + "fragments": [ + + ], + "requirements_extracted": [ + + ], + "coverage_report": { + "requirements_total": 0, + "requirements_covered": 0, + "requirements_uncovered": [ + + ], + "requirements_partially_covered": [ + + ], + "clarification_needed_for": [ + + ], + "out_of_scope_requirements": [ + + ] + }, + "routes": [ + + ], + "retrieval_status": [ + + ], + "retrieval_results": [ + + ], + "answer_grounding_check": { + "status": "grounded", + "route_subject_match": true, + "missing_requirements": [ + + ], + "reasons": [ + "no_address_or_deep_signal", + "address_mode_from_followup_context", + "shape_not_detected", + "intent_not_supported_in_v1", + "intent_from_followup_context", + "contract_from_followup_context", + "address_followup_context_applied", + "query_limit_auto_expanded_for_anchor_recovery" + ], + "why_included_summary": [ + + ], + "selection_reason_summary": [ + + ] + }, + "dropped_intent_segments": [ + + ], + "detected_mode": "address_query", + "detected_mode_confidence": "medium", + "query_shape": "UNKNOWN", + "query_shape_confidence": "low", + "detected_intent": "bank_operations_by_contract", + "detected_intent_confidence": "low", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "period_from": "2020-01-01", + "period_to": "2020-12-31", + "contract": "15/24" + }, + "missing_required_filters": [ + + ], + "selected_recipe": "address_bank_operations_by_contract_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "account_scope_fallback_applied": false, + "anchor_type": "contract", + "anchor_value_raw": "15/24", + "anchor_value_resolved": "15/24", + "resolver_confidence": "medium", + "ambiguity_count": 0, + "match_failure_stage": "none", + "match_failure_reason": null, + "mcp_call_status": "matched_non_empty", + "rows_fetched": 1000, + "raw_rows_received": 1000, + "rows_after_account_scope": 234, + "rows_after_recipe_filter": 3, + "rows_materialized": 234, + "rows_matched": 3, + "raw_row_keys_sample": [ + "Период", + "Регистратор", + "СчетДт", + "СчетКт", + "Сумма", + "Period", + "Registrator", + "AccountDt", + "AccountKt", + "Amount" + ], + "materialization_drop_reason": "none", + "account_token_raw": null, + "account_token_normalized": null, + "account_scope_fields_checked": [ + "account_dt", + "account_kt", + "registrator", + "analytics" + ], + "account_scope_match_strategy": "account_code_regex_plus_alias_map_v1", + "account_scope_drop_reason": "not_applicable", + "runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS", + "limited_reason_category": null, + "response_type": "FACTUAL_LIST", + "execution_lane": "address_query", + "llm_decomposition_applied": false, + "llm_decomposition_attempted": false, + "llm_provider_used": "local", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "а за 2020 год", + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "sanitized_user_message": "а за 2020 год", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "followup_context_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + } + }, + { + "number": 26, + "question": "а теперь только за май 2020", + "session_key": "chain_b", + "session_id": "asst-NzEwL_Cksq", + "status_code": 200, + "ok": true, + "elapsed_ms": 3075, + "reply_type": "factual", + "trace_id": "address-61eF5Pid_n", + "assistant_reply": "По окну 2020-05-01..2020-05-31 строк не найдено; показаны ближайшие доступные данные 2020-10-15..2020-10-15.\nСобран список банковских операций по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "execution_lane": "address_query", + "detected_mode": "address_query", + "detected_intent": "bank_operations_by_contract", + "selected_recipe": "address_bank_operations_by_contract_v1", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "rows_matched": 2, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "llm_provider_used": "local", + "fallback_rule_hit": null, + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "а теперь только за май 2020", + "error_text": null, + "debug": { + "trace_id": "address-61eF5Pid_n", + "prompt_version": "address_query_runtime_v1", + "schema_version": "address_query_runtime_v1", + "fallback_type": "none", + "route_summary": null, + "fragments": [ + + ], + "requirements_extracted": [ + + ], + "coverage_report": { + "requirements_total": 0, + "requirements_covered": 0, + "requirements_uncovered": [ + + ], + "requirements_partially_covered": [ + + ], + "clarification_needed_for": [ + + ], + "out_of_scope_requirements": [ + + ] + }, + "routes": [ + + ], + "retrieval_status": [ + + ], + "retrieval_results": [ + + ], + "answer_grounding_check": { + "status": "grounded", + "route_subject_match": true, + "missing_requirements": [ + + ], + "reasons": [ + "no_address_or_deep_signal", + "address_mode_from_followup_context", + "shape_not_detected", + "intent_not_supported_in_v1", + "intent_from_followup_context", + "contract_from_followup_context", + "address_followup_context_applied", + "period_window_auto_broadened_to_available_data" + ], + "why_included_summary": [ + + ], + "selection_reason_summary": [ + + ] + }, + "dropped_intent_segments": [ + + ], + "detected_mode": "address_query", + "detected_mode_confidence": "medium", + "query_shape": "UNKNOWN", + "query_shape_confidence": "low", + "detected_intent": "bank_operations_by_contract", + "detected_intent_confidence": "low", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "period_from": "2020-05-01", + "period_to": "2020-05-31", + "contract": "15/24" + }, + "missing_required_filters": [ + + ], + "selected_recipe": "address_bank_operations_by_contract_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "account_scope_fallback_applied": false, + "anchor_type": "contract", + "anchor_value_raw": "15/24", + "anchor_value_resolved": "15/24", + "resolver_confidence": "medium", + "ambiguity_count": 0, + "match_failure_stage": "none", + "match_failure_reason": null, + "mcp_call_status": "matched_non_empty", + "rows_fetched": 1000, + "raw_rows_received": 1000, + "rows_after_account_scope": 341, + "rows_after_recipe_filter": 2, + "rows_materialized": 341, + "rows_matched": 2, + "raw_row_keys_sample": [ + "Период", + "Регистратор", + "СчетДт", + "СчетКт", + "Сумма", + "Period", + "Registrator", + "AccountDt", + "AccountKt", + "Amount" + ], + "materialization_drop_reason": "none", + "account_token_raw": null, + "account_token_normalized": null, + "account_scope_fields_checked": [ + "account_dt", + "account_kt", + "registrator", + "analytics" + ], + "account_scope_match_strategy": "account_code_regex_plus_alias_map_v1", + "account_scope_drop_reason": "not_applicable", + "runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS", + "limited_reason_category": null, + "response_type": "FACTUAL_LIST", + "execution_lane": "address_query", + "llm_decomposition_applied": false, + "llm_decomposition_attempted": false, + "llm_provider_used": "local", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "а теперь только за май 2020", + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "sanitized_user_message": "а теперь только за май 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "followup_context_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + } + }, + { + "number": 27, + "question": "а по счету 51 на ту же дату", + "session_key": "chain_b", + "session_id": "asst-NzEwL_Cksq", + "status_code": 200, + "ok": true, + "elapsed_ms": 816, + "reply_type": "factual", + "trace_id": "address-l6PNuuARxf", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 24.\nСумма по отобранным движениям: 2234531.1100000003.\n1. 2020-05-29T12:00:02Z | Списание с расчетного счета 00000000151 от 29.05.2020 12:00:02 | 91.02 / 51 | 60\n2. 2020-05-28T20:17:50Z | Списание с расчетного счета 00000000150 от 28.05.2020 20:17:50 | 70 / 51 | 50\n3. 2020-05-28T20:17:24Z | Списание с расчетного счета 00000000149 от 28.05.2020 20:17:24 | 91.02 / 51 | 35\n4. 2020-05-22T10:14:43Z | Списание с расчетного счета 00000000148 от 22.05.2020 10:14:43 | 60.02 / 51 | 142299", + "execution_lane": "address_query", + "detected_mode": "address_query", + "detected_intent": "account_balance_snapshot", + "selected_recipe": "address_movements_account_snapshot_v1", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "rows_matched": 24, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "error:Failed to extract output_text from /responses payload.", + "llm_provider_used": "local", + "fallback_rule_hit": null, + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "а по счету 51 на ту же дату", + "error_text": null, + "debug": { + "trace_id": "address-l6PNuuARxf", + "prompt_version": "address_query_runtime_v1", + "schema_version": "address_query_runtime_v1", + "fallback_type": "none", + "route_summary": null, + "fragments": [ + + ], + "requirements_extracted": [ + + ], + "coverage_report": { + "requirements_total": 0, + "requirements_covered": 0, + "requirements_uncovered": [ + + ], + "requirements_partially_covered": [ + + ], + "clarification_needed_for": [ + + ], + "out_of_scope_requirements": [ + + ] + }, + "routes": [ + + ], + "retrieval_status": [ + + ], + "retrieval_results": [ + + ], + "answer_grounding_check": { + "status": "grounded", + "route_subject_match": true, + "missing_requirements": [ + + ], + "reasons": [ + "address_entity_detected", + "shape_not_detected", + "account_balance_signal_detected", + "as_of_date_from_followup_context", + "period_from_followup_context", + "address_followup_context_applied" + ], + "why_included_summary": [ + + ], + "selection_reason_summary": [ + + ] + }, + "dropped_intent_segments": [ + + ], + "detected_mode": "address_query", + "detected_mode_confidence": "medium", + "query_shape": "UNKNOWN", + "query_shape_confidence": "low", + "detected_intent": "account_balance_snapshot", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "account": "51", + "as_of_date": "2020-05-31", + "period_from": "2020-05-01", + "period_to": "2020-05-31" + }, + "missing_required_filters": [ + + ], + "selected_recipe": "address_movements_account_snapshot_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "strict", + "account_scope_fallback_applied": false, + "anchor_type": "account", + "anchor_value_raw": "51", + "anchor_value_resolved": "51", + "resolver_confidence": "high", + "ambiguity_count": 0, + "match_failure_stage": "none", + "match_failure_reason": null, + "mcp_call_status": "matched_non_empty", + "rows_fetched": 24, + "raw_rows_received": 24, + "rows_after_account_scope": 24, + "rows_after_recipe_filter": 24, + "rows_materialized": 24, + "rows_matched": 24, + "raw_row_keys_sample": [ + "Период", + "Регистратор", + "СчетДт", + "СчетКт", + "Сумма", + "Period", + "Registrator", + "AccountDt", + "AccountKt", + "Amount" + ], + "materialization_drop_reason": "none", + "account_token_raw": "51", + "account_token_normalized": "51", + "account_scope_fields_checked": [ + "account_dt", + "account_kt", + "registrator", + "analytics" + ], + "account_scope_match_strategy": "account_code_regex_plus_alias_map_v1", + "account_scope_drop_reason": "rows_remaining_after_scope_filter", + "runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS", + "limited_reason_category": null, + "response_type": "FACTUAL_SUMMARY", + "execution_lane": "address_query", + "llm_decomposition_applied": false, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "а по счету 51 на ту же дату", + "llm_decomposition_reason": "error:Failed to extract output_text from /responses payload.", + "fallback_rule_hit": null, + "sanitized_user_message": "а по счету 51 на ту же дату", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_signal_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + } + }, + { + "number": 28, + "question": "Какой остаток по счету 60 на 2020.05", + "session_key": "chain_c", + "session_id": "asst-gSWtm2LPha", + "status_code": 200, + "ok": true, + "elapsed_ms": 1024, + "reply_type": "factual", + "trace_id": "address-_u45NV9ikg", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 6.\nСумма по отобранным движениям: 849499.\n1. 2020-05-22T10:14:43Z | Списание с расчетного счета 00000000148 от 22.05.2020 10:14:43 | 60.02 / 51 | 142299\n2. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 75367\n3. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 211833\n4. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 187967", + "execution_lane": "address_query", + "detected_mode": "address_query", + "detected_intent": "account_balance_snapshot", + "selected_recipe": "address_movements_account_snapshot_v1", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "rows_matched": 6, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "llm_provider_used": "local", + "fallback_rule_hit": "balance_month_period_rewrite", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "остаток по счету 60 на 2020-05", + "error_text": null, + "debug": { + "trace_id": "address-_u45NV9ikg", + "prompt_version": "address_query_runtime_v1", + "schema_version": "address_query_runtime_v1", + "fallback_type": "none", + "route_summary": null, + "fragments": [ + + ], + "requirements_extracted": [ + + ], + "coverage_report": { + "requirements_total": 0, + "requirements_covered": 0, + "requirements_uncovered": [ + + ], + "requirements_partially_covered": [ + + ], + "clarification_needed_for": [ + + ], + "out_of_scope_requirements": [ + + ] + }, + "routes": [ + + ], + "retrieval_status": [ + + ], + "retrieval_results": [ + + ], + "answer_grounding_check": { + "status": "grounded", + "route_subject_match": true, + "missing_requirements": [ + + ], + "reasons": [ + "address_action_detected", + "address_entity_detected", + "aggregate_signal_detected", + "account_balance_signal_detected" + ], + "why_included_summary": [ + + ], + "selection_reason_summary": [ + + ] + }, + "dropped_intent_segments": [ + + ], + "detected_mode": "address_query", + "detected_mode_confidence": "high", + "query_shape": "AGGREGATE_LOOKUP", + "query_shape_confidence": "high", + "detected_intent": "account_balance_snapshot", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "account": "60", + "period_from": "2020-05-01", + "period_to": "2020-05-31", + "as_of_date": "2020-05-31" + }, + "missing_required_filters": [ + + ], + "selected_recipe": "address_movements_account_snapshot_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "strict", + "account_scope_fallback_applied": false, + "anchor_type": "account", + "anchor_value_raw": "60", + "anchor_value_resolved": "60", + "resolver_confidence": "high", + "ambiguity_count": 0, + "match_failure_stage": "none", + "match_failure_reason": null, + "mcp_call_status": "matched_non_empty", + "rows_fetched": 6, + "raw_rows_received": 6, + "rows_after_account_scope": 6, + "rows_after_recipe_filter": 6, + "rows_materialized": 6, + "rows_matched": 6, + "raw_row_keys_sample": [ + "Период", + "Регистратор", + "СчетДт", + "СчетКт", + "Сумма", + "Period", + "Registrator", + "AccountDt", + "AccountKt", + "Amount" + ], + "materialization_drop_reason": "none", + "account_token_raw": "60", + "account_token_normalized": "60", + "account_scope_fields_checked": [ + "account_dt", + "account_kt", + "registrator", + "analytics" + ], + "account_scope_match_strategy": "account_code_regex_plus_alias_map_v1", + "account_scope_drop_reason": "rows_remaining_after_scope_filter", + "runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS", + "limited_reason_category": null, + "response_type": "FACTUAL_SUMMARY", + "execution_lane": "address_query", + "llm_decomposition_applied": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "остаток по счету 60 на 2020-05", + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "fallback_rule_hit": "balance_month_period_rewrite", + "sanitized_user_message": "какой остаток по счету 60 на 2020.05", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_signal_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + } + }, + { + "number": 29, + "question": "а теперь по 60.01", + "session_key": "chain_c", + "session_id": "asst-gSWtm2LPha", + "status_code": 200, + "ok": true, + "elapsed_ms": 986, + "reply_type": "factual", + "trace_id": "address-v0BEiZqjHs", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 6.\nСумма по отобранным движениям: 849499.\n1. 2020-05-22T10:14:43Z | Списание с расчетного счета 00000000148 от 22.05.2020 10:14:43 | 60.02 / 51 | 142299\n2. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 75367\n3. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 211833\n4. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 187967", + "execution_lane": "address_query", + "detected_mode": "address_query", + "detected_intent": "account_balance_snapshot", + "selected_recipe": "address_movements_account_snapshot_v1", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "rows_matched": 6, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "llm_provider_used": "local", + "fallback_rule_hit": null, + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "а теперь по 60.01", + "error_text": null, + "debug": { + "trace_id": "address-v0BEiZqjHs", + "prompt_version": "address_query_runtime_v1", + "schema_version": "address_query_runtime_v1", + "fallback_type": "none", + "route_summary": null, + "fragments": [ + + ], + "requirements_extracted": [ + + ], + "coverage_report": { + "requirements_total": 0, + "requirements_covered": 0, + "requirements_uncovered": [ + + ], + "requirements_partially_covered": [ + + ], + "clarification_needed_for": [ + + ], + "out_of_scope_requirements": [ + + ] + }, + "routes": [ + + ], + "retrieval_status": [ + + ], + "retrieval_results": [ + + ], + "answer_grounding_check": { + "status": "grounded", + "route_subject_match": true, + "missing_requirements": [ + + ], + "reasons": [ + "no_address_or_deep_signal", + "address_mode_from_followup_context", + "shape_not_detected", + "intent_not_supported_in_v1", + "intent_from_followup_context", + "account_from_followup_context", + "period_from_followup_context", + "address_followup_context_applied" + ], + "why_included_summary": [ + + ], + "selection_reason_summary": [ + + ] + }, + "dropped_intent_segments": [ + + ], + "detected_mode": "address_query", + "detected_mode_confidence": "medium", + "query_shape": "UNKNOWN", + "query_shape_confidence": "low", + "detected_intent": "account_balance_snapshot", + "detected_intent_confidence": "low", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "as_of_date": "2026-04-02", + "account": "60", + "period_from": "2020-05-01", + "period_to": "2020-05-31" + }, + "missing_required_filters": [ + + ], + "selected_recipe": "address_movements_account_snapshot_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "strict", + "account_scope_fallback_applied": false, + "anchor_type": "account", + "anchor_value_raw": "60", + "anchor_value_resolved": "60", + "resolver_confidence": "high", + "ambiguity_count": 0, + "match_failure_stage": "none", + "match_failure_reason": null, + "mcp_call_status": "matched_non_empty", + "rows_fetched": 6, + "raw_rows_received": 6, + "rows_after_account_scope": 6, + "rows_after_recipe_filter": 6, + "rows_materialized": 6, + "rows_matched": 6, + "raw_row_keys_sample": [ + "Период", + "Регистратор", + "СчетДт", + "СчетКт", + "Сумма", + "Period", + "Registrator", + "AccountDt", + "AccountKt", + "Amount" + ], + "materialization_drop_reason": "none", + "account_token_raw": "60", + "account_token_normalized": "60", + "account_scope_fields_checked": [ + "account_dt", + "account_kt", + "registrator", + "analytics" + ], + "account_scope_match_strategy": "account_code_regex_plus_alias_map_v1", + "account_scope_drop_reason": "rows_remaining_after_scope_filter", + "runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS", + "limited_reason_category": null, + "response_type": "FACTUAL_SUMMARY", + "execution_lane": "address_query", + "llm_decomposition_applied": false, + "llm_decomposition_attempted": false, + "llm_provider_used": "local", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "а теперь по 60.01", + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "sanitized_user_message": "а теперь по 60.01", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_signal_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + } + }, + { + "number": 30, + "question": "а на ту же дату по 62", + "session_key": "chain_c", + "session_id": "asst-gSWtm2LPha", + "status_code": 200, + "ok": true, + "elapsed_ms": 1015, + "reply_type": "factual", + "trace_id": "address-Re2g0hnkmZ", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 6.\nСумма по отобранным движениям: 849499.\n1. 2020-05-22T10:14:43Z | Списание с расчетного счета 00000000148 от 22.05.2020 10:14:43 | 60.02 / 51 | 142299\n2. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 75367\n3. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 211833\n4. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 187967", + "execution_lane": "address_query", + "detected_mode": "address_query", + "detected_intent": "account_balance_snapshot", + "selected_recipe": "address_movements_account_snapshot_v1", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "rows_matched": 6, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "llm_provider_used": "local", + "fallback_rule_hit": null, + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "а на ту же дату по 62", + "error_text": null, + "debug": { + "trace_id": "address-Re2g0hnkmZ", + "prompt_version": "address_query_runtime_v1", + "schema_version": "address_query_runtime_v1", + "fallback_type": "none", + "route_summary": null, + "fragments": [ + + ], + "requirements_extracted": [ + + ], + "coverage_report": { + "requirements_total": 0, + "requirements_covered": 0, + "requirements_uncovered": [ + + ], + "requirements_partially_covered": [ + + ], + "clarification_needed_for": [ + + ], + "out_of_scope_requirements": [ + + ] + }, + "routes": [ + + ], + "retrieval_status": [ + + ], + "retrieval_results": [ + + ], + "answer_grounding_check": { + "status": "grounded", + "route_subject_match": true, + "missing_requirements": [ + + ], + "reasons": [ + "no_address_or_deep_signal", + "address_mode_from_followup_context", + "shape_not_detected", + "intent_not_supported_in_v1", + "intent_from_followup_context", + "account_from_followup_context", + "period_from_followup_context", + "address_followup_context_applied" + ], + "why_included_summary": [ + + ], + "selection_reason_summary": [ + + ] + }, + "dropped_intent_segments": [ + + ], + "detected_mode": "address_query", + "detected_mode_confidence": "medium", + "query_shape": "UNKNOWN", + "query_shape_confidence": "low", + "detected_intent": "account_balance_snapshot", + "detected_intent_confidence": "low", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "as_of_date": "2026-04-02", + "account": "60", + "period_from": "2020-05-01", + "period_to": "2020-05-31" + }, + "missing_required_filters": [ + + ], + "selected_recipe": "address_movements_account_snapshot_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "strict", + "account_scope_fallback_applied": false, + "anchor_type": "account", + "anchor_value_raw": "60", + "anchor_value_resolved": "60", + "resolver_confidence": "high", + "ambiguity_count": 0, + "match_failure_stage": "none", + "match_failure_reason": null, + "mcp_call_status": "matched_non_empty", + "rows_fetched": 6, + "raw_rows_received": 6, + "rows_after_account_scope": 6, + "rows_after_recipe_filter": 6, + "rows_materialized": 6, + "rows_matched": 6, + "raw_row_keys_sample": [ + "Период", + "Регистратор", + "СчетДт", + "СчетКт", + "Сумма", + "Period", + "Registrator", + "AccountDt", + "AccountKt", + "Amount" + ], + "materialization_drop_reason": "none", + "account_token_raw": "60", + "account_token_normalized": "60", + "account_scope_fields_checked": [ + "account_dt", + "account_kt", + "registrator", + "analytics" + ], + "account_scope_match_strategy": "account_code_regex_plus_alias_map_v1", + "account_scope_drop_reason": "rows_remaining_after_scope_filter", + "runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS", + "limited_reason_category": null, + "response_type": "FACTUAL_SUMMARY", + "execution_lane": "address_query", + "llm_decomposition_applied": false, + "llm_decomposition_attempted": false, + "llm_provider_used": "local", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "а на ту же дату по 62", + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "sanitized_user_message": "а на ту же дату по 62", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_signal_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + } + }, + { + "number": 31, + "question": "бля епт покажи доки по свк за 20й", + "session_key": "single_31", + "session_id": "asst-rTMQAu9-iv", + "status_code": 200, + "ok": true, + "elapsed_ms": 1012, + "reply_type": "factual", + "trace_id": "address-sOrV-J5s2y", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "execution_lane": "address_query", + "detected_mode": "address_query", + "detected_intent": "list_documents_by_counterparty", + "selected_recipe": "address_documents_by_counterparty_v1", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "rows_matched": 3, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "llm_provider_used": "local", + "fallback_rule_hit": "documents_counterparty_year_rewrite", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "документы по контрагенту свк за 2020 год", + "error_text": null, + "debug": { + "trace_id": "address-sOrV-J5s2y", + "prompt_version": "address_query_runtime_v1", + "schema_version": "address_query_runtime_v1", + "fallback_type": "none", + "route_summary": null, + "fragments": [ + + ], + "requirements_extracted": [ + + ], + "coverage_report": { + "requirements_total": 0, + "requirements_covered": 0, + "requirements_uncovered": [ + + ], + "requirements_partially_covered": [ + + ], + "clarification_needed_for": [ + + ], + "out_of_scope_requirements": [ + + ] + }, + "routes": [ + + ], + "retrieval_status": [ + + ], + "retrieval_results": [ + + ], + "answer_grounding_check": { + "status": "grounded", + "route_subject_match": true, + "missing_requirements": [ + + ], + "reasons": [ + "address_entity_detected", + "document_list_signal_detected", + "documents_by_counterparty_signal_detected" + ], + "why_included_summary": [ + + ], + "selection_reason_summary": [ + + ] + }, + "dropped_intent_segments": [ + + ], + "detected_mode": "address_query", + "detected_mode_confidence": "medium", + "query_shape": "DOCUMENT_LIST", + "query_shape_confidence": "medium", + "detected_intent": "list_documents_by_counterparty", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "counterparty": "свк", + "period_from": "2020-01-01", + "period_to": "2020-12-31" + }, + "missing_required_filters": [ + + ], + "selected_recipe": "address_documents_by_counterparty_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "account_scope_fallback_applied": false, + "anchor_type": "counterparty", + "anchor_value_raw": "свк", + "anchor_value_resolved": "Группа СВК", + "resolver_confidence": "medium", + "ambiguity_count": 0, + "match_failure_stage": "none", + "match_failure_reason": null, + "mcp_call_status": "matched_non_empty", + "rows_fetched": 20, + "raw_rows_received": 20, + "rows_after_account_scope": 5, + "rows_after_recipe_filter": 3, + "rows_materialized": 5, + "rows_matched": 3, + "raw_row_keys_sample": [ + "Период", + "Регистратор", + "СчетДт", + "СчетКт", + "Сумма", + "Контрагент", + "Period", + "Registrator", + "Amount" + ], + "materialization_drop_reason": "none", + "account_token_raw": null, + "account_token_normalized": null, + "account_scope_fields_checked": [ + "account_dt", + "account_kt", + "registrator", + "analytics" + ], + "account_scope_match_strategy": "account_code_regex_plus_alias_map_v1", + "account_scope_drop_reason": "not_applicable", + "runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS", + "limited_reason_category": null, + "response_type": "FACTUAL_LIST", + "execution_lane": "address_query", + "llm_decomposition_applied": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "документы по контрагенту свк за 2020 год", + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "fallback_rule_hit": "documents_counterparty_year_rewrite", + "sanitized_user_message": "покажи доки по свк за 20й", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_signal_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + } + }, + { + "number": 32, + "question": "свк 20 год - покажи доки плс", + "session_key": "single_32", + "session_id": "asst-7GzzMHDiQZ", + "status_code": 200, + "ok": true, + "elapsed_ms": 974, + "reply_type": "factual", + "trace_id": "address-iy0GDkkTxp", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "execution_lane": "address_query", + "detected_mode": "address_query", + "detected_intent": "list_documents_by_counterparty", + "selected_recipe": "address_documents_by_counterparty_v1", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "rows_matched": 3, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "llm_provider_used": "local", + "fallback_rule_hit": "documents_counterparty_year_rewrite", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "документы по контрагенту свк за 2020 год", + "error_text": null, + "debug": { + "trace_id": "address-iy0GDkkTxp", + "prompt_version": "address_query_runtime_v1", + "schema_version": "address_query_runtime_v1", + "fallback_type": "none", + "route_summary": null, + "fragments": [ + + ], + "requirements_extracted": [ + + ], + "coverage_report": { + "requirements_total": 0, + "requirements_covered": 0, + "requirements_uncovered": [ + + ], + "requirements_partially_covered": [ + + ], + "clarification_needed_for": [ + + ], + "out_of_scope_requirements": [ + + ] + }, + "routes": [ + + ], + "retrieval_status": [ + + ], + "retrieval_results": [ + + ], + "answer_grounding_check": { + "status": "grounded", + "route_subject_match": true, + "missing_requirements": [ + + ], + "reasons": [ + "address_entity_detected", + "document_list_signal_detected", + "documents_by_counterparty_signal_detected" + ], + "why_included_summary": [ + + ], + "selection_reason_summary": [ + + ] + }, + "dropped_intent_segments": [ + + ], + "detected_mode": "address_query", + "detected_mode_confidence": "medium", + "query_shape": "DOCUMENT_LIST", + "query_shape_confidence": "medium", + "detected_intent": "list_documents_by_counterparty", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "counterparty": "свк", + "period_from": "2020-01-01", + "period_to": "2020-12-31" + }, + "missing_required_filters": [ + + ], + "selected_recipe": "address_documents_by_counterparty_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "account_scope_fallback_applied": false, + "anchor_type": "counterparty", + "anchor_value_raw": "свк", + "anchor_value_resolved": "Группа СВК", + "resolver_confidence": "medium", + "ambiguity_count": 0, + "match_failure_stage": "none", + "match_failure_reason": null, + "mcp_call_status": "matched_non_empty", + "rows_fetched": 20, + "raw_rows_received": 20, + "rows_after_account_scope": 5, + "rows_after_recipe_filter": 3, + "rows_materialized": 5, + "rows_matched": 3, + "raw_row_keys_sample": [ + "Период", + "Регистратор", + "СчетДт", + "СчетКт", + "Сумма", + "Контрагент", + "Period", + "Registrator", + "Amount" + ], + "materialization_drop_reason": "none", + "account_token_raw": null, + "account_token_normalized": null, + "account_scope_fields_checked": [ + "account_dt", + "account_kt", + "registrator", + "analytics" + ], + "account_scope_match_strategy": "account_code_regex_plus_alias_map_v1", + "account_scope_drop_reason": "not_applicable", + "runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS", + "limited_reason_category": null, + "response_type": "FACTUAL_LIST", + "execution_lane": "address_query", + "llm_decomposition_applied": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "документы по контрагенту свк за 2020 год", + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "fallback_rule_hit": "documents_counterparty_year_rewrite", + "sanitized_user_message": "свк 2020 год - покажи доки", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_signal_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + } + }, + { + "number": 33, + "question": "покажи банк опер по дог 15/24 пж", + "session_key": "single_33", + "session_id": "asst-gXTpxnmWpG", + "status_code": 200, + "ok": true, + "elapsed_ms": 6, + "reply_type": "partial_coverage", + "trace_id": "address-VyJiL2DoTr", + "assistant_reply": "Этот запрос не подходит под address_query V1.\nПричина: intent пока не поддержан в address V1.\nЧто нужно уточнить: переформулируйте вопрос как адресный lookup по счету/контрагенту/договору.", + "execution_lane": "address_query", + "detected_mode": "address_query", + "detected_intent": "unknown", + "selected_recipe": null, + "mcp_call_status": "skipped", + "limited_reason_category": "unsupported", + "rows_matched": 0, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "llm_provider_used": "local", + "fallback_rule_hit": "noise_cleanup", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "покажи банк опер по дог 15/24", + "error_text": null, + "debug": { + "trace_id": "address-VyJiL2DoTr", + "prompt_version": "address_query_runtime_v1", + "schema_version": "address_query_runtime_v1", + "fallback_type": "partial", + "route_summary": null, + "fragments": [ + + ], + "requirements_extracted": [ + + ], + "coverage_report": { + "requirements_total": 0, + "requirements_covered": 0, + "requirements_uncovered": [ + + ], + "requirements_partially_covered": [ + + ], + "clarification_needed_for": [ + + ], + "out_of_scope_requirements": [ + + ] + }, + "routes": [ + + ], + "retrieval_status": [ + + ], + "retrieval_results": [ + + ], + "answer_grounding_check": { + "status": "partial", + "route_subject_match": true, + "missing_requirements": [ + + ], + "reasons": [ + "address_action_detected", + "address_entity_detected", + "shape_not_detected", + "intent_not_supported_in_v1" + ], + "why_included_summary": [ + + ], + "selection_reason_summary": [ + + ] + }, + "dropped_intent_segments": [ + + ], + "detected_mode": "address_query", + "detected_mode_confidence": "high", + "query_shape": "UNKNOWN", + "query_shape_confidence": "low", + "detected_intent": "unknown", + "detected_intent_confidence": "low", + "extracted_filters": { + "sort": "period_desc", + "limit": 20 + }, + "missing_required_filters": [ + + ], + "selected_recipe": null, + "mcp_call_status_legacy": "skipped", + "account_scope_mode": "strict", + "account_scope_fallback_applied": false, + "anchor_type": "unknown", + "anchor_value_raw": null, + "anchor_value_resolved": null, + "resolver_confidence": "low", + "ambiguity_count": 0, + "match_failure_stage": "none", + "match_failure_reason": null, + "mcp_call_status": "skipped", + "rows_fetched": 0, + "raw_rows_received": 0, + "rows_after_account_scope": 0, + "rows_after_recipe_filter": 0, + "rows_materialized": 0, + "rows_matched": 0, + "raw_row_keys_sample": [ + + ], + "materialization_drop_reason": "none", + "account_token_raw": null, + "account_token_normalized": null, + "account_scope_fields_checked": [ + "account_dt", + "account_kt", + "registrator", + "analytics" + ], + "account_scope_match_strategy": "account_code_regex_plus_alias_map_v1", + "account_scope_drop_reason": "not_applicable", + "runtime_readiness": "DEEP_ONLY", + "limited_reason_category": "unsupported", + "response_type": "LIMITED_WITH_REASON", + "execution_lane": "address_query", + "llm_decomposition_applied": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "покажи банк опер по дог 15/24", + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "fallback_rule_hit": "noise_cleanup", + "sanitized_user_message": "покажи банк опер по дог 15/24", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_signal_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + } + }, + { + "number": 34, + "question": "остаток 60 на 2020 май покеж", + "session_key": "single_34", + "session_id": "asst-HfTDFjeXdM", + "status_code": 200, + "ok": true, + "elapsed_ms": 1096, + "reply_type": "factual", + "trace_id": "address-EoCYxb2G1-", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 6.\nСумма по отобранным движениям: 849499.\n1. 2020-05-22T10:14:43Z | Списание с расчетного счета 00000000148 от 22.05.2020 10:14:43 | 60.02 / 51 | 142299\n2. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 75367\n3. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 211833\n4. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 187967", + "execution_lane": "address_query", + "detected_mode": "address_query", + "detected_intent": "account_balance_snapshot", + "selected_recipe": "address_movements_account_snapshot_v1", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "rows_matched": 6, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "llm_provider_used": "local", + "fallback_rule_hit": "balance_month_period_rewrite", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "остаток по счету 60 на 2020-05", + "error_text": null, + "debug": { + "trace_id": "address-EoCYxb2G1-", + "prompt_version": "address_query_runtime_v1", + "schema_version": "address_query_runtime_v1", + "fallback_type": "none", + "route_summary": null, + "fragments": [ + + ], + "requirements_extracted": [ + + ], + "coverage_report": { + "requirements_total": 0, + "requirements_covered": 0, + "requirements_uncovered": [ + + ], + "requirements_partially_covered": [ + + ], + "clarification_needed_for": [ + + ], + "out_of_scope_requirements": [ + + ] + }, + "routes": [ + + ], + "retrieval_status": [ + + ], + "retrieval_results": [ + + ], + "answer_grounding_check": { + "status": "grounded", + "route_subject_match": true, + "missing_requirements": [ + + ], + "reasons": [ + "address_action_detected", + "address_entity_detected", + "aggregate_signal_detected", + "account_balance_signal_detected" + ], + "why_included_summary": [ + + ], + "selection_reason_summary": [ + + ] + }, + "dropped_intent_segments": [ + + ], + "detected_mode": "address_query", + "detected_mode_confidence": "high", + "query_shape": "AGGREGATE_LOOKUP", + "query_shape_confidence": "high", + "detected_intent": "account_balance_snapshot", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "account": "60", + "period_from": "2020-05-01", + "period_to": "2020-05-31", + "as_of_date": "2020-05-31" + }, + "missing_required_filters": [ + + ], + "selected_recipe": "address_movements_account_snapshot_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "strict", + "account_scope_fallback_applied": false, + "anchor_type": "account", + "anchor_value_raw": "60", + "anchor_value_resolved": "60", + "resolver_confidence": "high", + "ambiguity_count": 0, + "match_failure_stage": "none", + "match_failure_reason": null, + "mcp_call_status": "matched_non_empty", + "rows_fetched": 6, + "raw_rows_received": 6, + "rows_after_account_scope": 6, + "rows_after_recipe_filter": 6, + "rows_materialized": 6, + "rows_matched": 6, + "raw_row_keys_sample": [ + "Период", + "Регистратор", + "СчетДт", + "СчетКт", + "Сумма", + "Period", + "Registrator", + "AccountDt", + "AccountKt", + "Amount" + ], + "materialization_drop_reason": "none", + "account_token_raw": "60", + "account_token_normalized": "60", + "account_scope_fields_checked": [ + "account_dt", + "account_kt", + "registrator", + "analytics" + ], + "account_scope_match_strategy": "account_code_regex_plus_alias_map_v1", + "account_scope_drop_reason": "rows_remaining_after_scope_filter", + "runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS", + "limited_reason_category": null, + "response_type": "FACTUAL_SUMMARY", + "execution_lane": "address_query", + "llm_decomposition_applied": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "остаток по счету 60 на 2020-05", + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "fallback_rule_hit": "balance_month_period_rewrite", + "sanitized_user_message": "остаток 60 на 2020 май покеж", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_signal_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + } + }, + { + "number": 35, + "question": "по свк за весь период че есть", + "session_key": "single_35", + "session_id": null, + "status_code": 502, + "ok": false, + "elapsed_ms": 45, + "reply_type": null, + "trace_id": null, + "assistant_reply": null, + "execution_lane": null, + "detected_mode": null, + "detected_intent": null, + "selected_recipe": null, + "mcp_call_status": null, + "limited_reason_category": null, + "rows_matched": null, + "llm_decomposition_applied": null, + "llm_decomposition_reason": null, + "llm_provider_used": null, + "fallback_rule_hit": null, + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": null, + "error_text": "", + "debug": null + }, + { + "number": 36, + "question": "Покажи технические константы конфигурации", + "session_key": "single_36", + "session_id": null, + "status_code": 502, + "ok": false, + "elapsed_ms": 5, + "reply_type": null, + "trace_id": null, + "assistant_reply": null, + "execution_lane": null, + "detected_mode": null, + "detected_intent": null, + "selected_recipe": null, + "mcp_call_status": null, + "limited_reason_category": null, + "rows_matched": null, + "llm_decomposition_applied": null, + "llm_decomposition_reason": null, + "llm_provider_used": null, + "fallback_rule_hit": null, + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": null, + "error_text": "", + "debug": null + }, + { + "number": 37, + "question": "кто президент США", + "session_key": "single_37", + "session_id": null, + "status_code": 502, + "ok": false, + "elapsed_ms": 3, + "reply_type": null, + "trace_id": null, + "assistant_reply": null, + "execution_lane": null, + "detected_mode": null, + "detected_intent": null, + "selected_recipe": null, + "mcp_call_status": null, + "limited_reason_category": null, + "rows_matched": null, + "llm_decomposition_applied": null, + "llm_decomposition_reason": null, + "llm_provider_used": null, + "fallback_rule_hit": null, + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": null, + "error_text": "", + "debug": null + } + ] +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Full_Live_Run_2026-04-02_08-03-09/run_summary.json b/docs/ADDRESS/runs/2026-04-02_Address_Full_Live_Run_2026-04-02_08-03-09/run_summary.json new file mode 100644 index 0000000..93f4c95 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Full_Live_Run_2026-04-02_08-03-09/run_summary.json @@ -0,0 +1,67 @@ +{ + "run_id": "2026-04-02_Address_Full_Live_Run_2026-04-02_08-03-09", + "generated_at": "2026-04-02T08:03:52", + "source_questions_file": "docs/ADDRESS/1.txt", + "backend_url": "http://127.0.0.1:8787/api/assistant/message", + "llm_provider": "local", + "llm_base_url": "http://127.0.0.1:1234", + "llm_model": "qwen2.5-14b-instruct-1m", + "totals": { + "questions_total": 37, + "ok_200_count": 34, + "factual_count": 31, + "partial_coverage_count": 3, + "other_reply_types_count": 3, + "llm_decomposition_applied_count": 25, + "fallback_rule_hit_count": 25, + "avg_elapsed_ms": 1157.8 + }, + "distributions": { + "mcp_call_status": { + "materialized_but_filtered_out_by_recipe": 1, + "skipped": 1, + "matched_non_empty": 31, + "(null)": 3, + "materialized_but_not_anchor_matched": 1 + }, + "limited_reason_category": { + "empty_match": 1, + "unsupported": 1, + "recipe_visibility_gap": 1 + }, + "llm_decomposition_reason": { + "error:Failed to extract output_text from /responses payload.": 3, + "fallback_rule_applied_after_llm_error": 25, + "(null)": 3, + "not_address_like": 6 + } + }, + "followup_sessions": { + "chain_a": "asst-FcMkXBWcu2", + "single_33": "asst-gXTpxnmWpG", + "single_31": "asst-rTMQAu9-iv", + "single_2": "asst-SFu_Ft-HM1", + "single_14": "asst-yxnKwYNQ5c", + "single_12": "asst-gaC9QR3ac9", + "single_17": "asst-QjQxuKBZHt", + "single_32": "asst-7GzzMHDiQZ", + "single_19": "asst-hh3GkT9dJF", + "single_13": "asst-UUVkCb5sCS", + "single_11": "asst-x504ZNzRpo", + "chain_c": "asst-gSWtm2LPha", + "single_9": "asst-d7G1unNF_j", + "single_7": "asst-7AC_NeHrTA", + "single_16": "asst-PhFTkR2mWs", + "single_10": "asst-sny3sFB19c", + "single_18": "asst-RY7LBPJr6i", + "single_8": "asst-koxw3u9Zj9", + "single_6": "asst-h6m3_aXtOM", + "single_4": "asst-ZheKxL2311", + "single_34": "asst-HfTDFjeXdM", + "chain_b": "asst-NzEwL_Cksq", + "single_15": "asst-OyooDcGGLh", + "single_5": "asst-8QOPS213rL", + "single_3": "asst-BS6WQx3BLi", + "single_1": "asst-3TFo9p8UGo" + } +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54/README.md b/docs/ADDRESS/runs/2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54/README.md new file mode 100644 index 0000000..afa5a41 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54/README.md @@ -0,0 +1,13 @@ +# 2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54 + +- Source questions: docs/ADDRESS/1.txt +- Total: 37 +- HTTP 200: 34 +- factual: 32 +- partial_coverage: 2 +- other_reply_types: 0 + +Artifacts: +- run_summary.json +- full_live_results.json +- failures_only.json diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54/failures_only.json b/docs/ADDRESS/runs/2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54/failures_only.json new file mode 100644 index 0000000..4690a39 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54/failures_only.json @@ -0,0 +1,87 @@ +[ + { + "number": 13, + "question": "Есть ли долг по договору 15/24 на 2020-07-31", + "session_key": "single_13", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_13", + "status_code": 200, + "ok": true, + "elapsed_ms": 880, + "reply_type": "partial_coverage", + "trace_id": "address-SVQXmJgEIg", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "error:Missing choices in /chat/completions payload.", + "fallback_rule_hit": null + }, + { + "number": 21, + "question": "а теперь только за май 2020", + "session_key": "chain_a", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-chain_a", + "status_code": 200, + "ok": true, + "elapsed_ms": 3198, + "reply_type": "partial_coverage", + "trace_id": "address-_25Y4MfSv4", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null + }, + { + "number": 35, + "question": "по свк за весь период че есть", + "session_key": "single_35", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_35", + "status_code": 502, + "ok": false, + "elapsed_ms": 17, + "reply_type": "", + "trace_id": "", + "assistant_reply": "", + "mcp_call_status": null, + "limited_reason_category": null, + "llm_decomposition_applied": null, + "llm_decomposition_reason": null, + "fallback_rule_hit": null + }, + { + "number": 36, + "question": "Покажи технические константы конфигурации", + "session_key": "single_36", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_36", + "status_code": 502, + "ok": false, + "elapsed_ms": 18, + "reply_type": "", + "trace_id": "", + "assistant_reply": "", + "mcp_call_status": null, + "limited_reason_category": null, + "llm_decomposition_applied": null, + "llm_decomposition_reason": null, + "fallback_rule_hit": null + }, + { + "number": 37, + "question": "кто президент США", + "session_key": "single_37", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_37", + "status_code": 502, + "ok": false, + "elapsed_ms": 9, + "reply_type": "", + "trace_id": "", + "assistant_reply": "", + "mcp_call_status": null, + "limited_reason_category": null, + "llm_decomposition_applied": null, + "llm_decomposition_reason": null, + "fallback_rule_hit": null + } +] diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54/full_live_results.json b/docs/ADDRESS/runs/2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54/full_live_results.json new file mode 100644 index 0000000..e70a391 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54/full_live_results.json @@ -0,0 +1,701 @@ +{ + "run_id": "2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54", + "generated_at": "2026-04-02T05:32:35", + "summary": { + "run_id": "2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54", + "generated_at": "2026-04-02T05:32:35", + "source_questions_file": "docs/ADDRESS/1.txt", + "backend_url": "http://127.0.0.1:8787/api/assistant/message", + "llm_provider": "local", + "llm_base_url": "http://127.0.0.1:1234", + "llm_model": "qwen2.5-14b-instruct-1m", + "totals": { + "questions_total": 37, + "ok_200_count": 34, + "factual_count": 32, + "partial_coverage_count": 2, + "other_reply_types_count": 0, + "llm_decomposition_applied_count": 25, + "fallback_rule_hit_count": 25, + "avg_elapsed_ms": 1111.3 + }, + "distributions": { + "mcp_call_status": { + "matched_non_empty": 32, + "materialized_but_not_anchor_matched": 2, + "(null)": 3 + }, + "limited_reason_category": { + "empty_match": 2 + }, + "llm_decomposition_reason": { + "fallback_rule_applied_after_llm_error": 25, + "error:Missing choices in /chat/completions payload.": 3, + "not_address_like": 6, + "(null)": 3 + } + }, + "followup_sessions": { + "single_1": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_1", + "single_2": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_2", + "single_3": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_3", + "single_4": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_4", + "single_5": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_5", + "single_6": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_6", + "single_7": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_7", + "single_8": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_8", + "single_9": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_9", + "single_10": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_10", + "single_11": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_11", + "single_12": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_12", + "single_13": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_13", + "single_14": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_14", + "single_15": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_15", + "single_16": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_16", + "single_17": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_17", + "single_18": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_18", + "single_19": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_19", + "chain_a": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-chain_a", + "chain_b": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-chain_b", + "chain_c": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-chain_c", + "single_31": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_31", + "single_32": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_32", + "single_33": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_33", + "single_34": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_34", + "single_35": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_35", + "single_36": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_36", + "single_37": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_37" + } + }, + "rows": [ + { + "number": 1, + "question": "Покажи документы по СВК за 2020 год", + "session_key": "single_1", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_1", + "status_code": 200, + "ok": true, + "elapsed_ms": 387, + "reply_type": "factual", + "trace_id": "address-Q3yW1EgrQ6", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "fallback_rule_hit": "documents_counterparty_year_rewrite" + }, + { + "number": 2, + "question": "свк доки за 20й", + "session_key": "single_2", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_2", + "status_code": 200, + "ok": true, + "elapsed_ms": 1017, + "reply_type": "factual", + "trace_id": "address-EMpy2aMBjt", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "fallback_rule_hit": "documents_counterparty_year_rewrite" + }, + { + "number": 3, + "question": "что по свк за 2020 выведи все доки плиз", + "session_key": "single_3", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_3", + "status_code": 200, + "ok": true, + "elapsed_ms": 977, + "reply_type": "factual", + "trace_id": "address-9HbHhhwPcD", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "fallback_rule_hit": "documents_counterparty_year_rewrite" + }, + { + "number": 4, + "question": "Какие документы по контрагенту СВК за весь период", + "session_key": "single_4", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_4", + "status_code": 200, + "ok": true, + "elapsed_ms": 1232, + "reply_type": "factual", + "trace_id": "address-I90YlDQ4RD", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 26.\n1. 2021-11-10T12:00:07Z | Поступление на расчетный счет 00000000013 от 10.11.2021 12:00:07 | 0 / 0 | 20000 | аналитика: Группа\n2. 2021-09-29T12:00:03Z | Поступление на расчетный счет 00000000012 от 29.09.2021 12:00:03 | 0 / 0 | 50000 | аналитика: Группа\n3. 2021-08-31T12:00:04Z | Поступление на расчетный счет 00000000011 от 31.08.2021 12:00:04 | 0 / 0 | 120500 | аналитика: Группа\n4. 2021-06-22T12:00:00Z | Поступление на расчетный счет 00000000010 от 22.06.2021 12:00:00 | 0 / 0 | 498630 | аналитика: Группа\n5. 2021-06-09T12:00:05Z | Поступление на расчетный счет 00000000009 от 09.06.2021 12:00:05 | 0 / 0 | 418960 | аналитика: Группа\n6. 2021-04-28T12:00:08Z | Поступление на расчетный счет 00000000008 от 28.04.2021 12:00:08 | 0 / 0 | 564300 | аналитика: Группа\n7. 2021-04-22T12:00:00Z | Поступление на расчетный счет 00000000007 от 22.04.2021 12:00:00 | 0 / 0 | 982420 | аналитика: Группа\n8. 2021-04-13T12:00:11Z | Поступление на расчетный счет 00000000006 от 13.04.2021 12:00:11 | 0 / 0 | 1882400 | аналитика: Группа\n9. 2021-03-25T12:00:02Z | Поступление на расчетный счет 00000000005 от 25.03.2021 12:00:02 | 0 / 0 | 644315 | аналитика: Группа\n10. 2021-03-24T12:00:03Z | Поступление на расчетный счет 00000000004 от 24.03.2021 12:00:03 | 0 / 0 | 1219990 | аналитика: Группа\n11. 2021-03-18T12:00:00Z | Поступление на расчетный счет 00000000003 от 18.03.2021 12:00:00 | 0 / 0 | 1425310 | аналитика: Группа\n12. 2021-03-12T12:00:03Z | Поступление на расчетный счет 00000000002 от 12.03.2021 12:00:03 | 0 / 0 | 214600 | аналитика: Группа\n13. 2021-02-19T12:00:01Z | Поступление на расчетный счет 00000000001 от 19.02.2021 12:00:01 | 0 / 0 | 518600 | аналитика: Группа\n14. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n15. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n16. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа\n17. 2020-11-30T12:00:07Z | Поступление на расчетный счет 00000000041 от 30.11.2020 12:00:07 | 0 / 0 | 38900 | аналитика: Группа\n18. 2020-11-19T12:00:04Z | Поступление на расчетный счет 00000000039 от 19.11.2020 12:00:04 | 0 / 0 | 3320600 | аналитика: Группа\n19. 2020-11-18T12:00:05Z | Поступление на расчетный счет 00000000038 от 18.11.2020 12:00:05 | 0 / 0 | 745300 | аналитика: Группа\n20. 2020-11-18T12:00:04Z | Поступление на расчетный счет 00000000037 от 18.11.2020 12:00:04 | 0 / 0 | 320000 | аналитика: Группа\n21. 2020-11-13T12:00:03Z | Поступление на расчетный счет 00000000036 от 13.11.2020 12:00:03 | 0 / 0 | 313600 | аналитика: Группа\n22. 2020-11-10T15:39:13Z | Поступление на расчетный счет 00000000035 от 10.11.2020 15:39:13 | 0 / 0 | 328300 | аналитика: Группа\n23. 2020-10-26T12:00:00Z | Поступление на расчетный счет 00000000034 от 26.10.2020 12:00:00 | 0 / 0 | 175000 | аналитика: Группа\n24. 2020-08-20T12:00:06Z | Поступление на расчетный счет 00000000032 от 20.08.2020 12:00:06 | 0 / 0 | 3126005 | аналитика: Группа\n25. 2020-07-30T12:00:00Z | Поступление на расчетный счет 00000000029 от 30.07.2020 12:00:00 | 0 / 0 | 20000 | аналитика: Группа\n26. 2020-07-27T12:00:00Z | Поступление на расчетный счет 00000000028 от 27.07.2020 12:00:00 | 0 / 0 | 40860 | аналитика: Группа", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "fallback_rule_hit": "documents_counterparty_all_time_rewrite" + }, + { + "number": 5, + "question": "какие есть доки по свк с 2000 по 2025 год", + "session_key": "single_5", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_5", + "status_code": 200, + "ok": true, + "elapsed_ms": 2058, + "reply_type": "factual", + "trace_id": "address-t8_hKJBGnh", + "assistant_reply": "По окну 2000-01-01..2000-12-31 строк не найдено; показаны ближайшие доступные данные 2020-07-27..2021-11-10.\nСобран список документов по контрагенту (live address lane).\nСтрок отобрано: 26.\n1. 2021-11-10T12:00:07Z | Поступление на расчетный счет 00000000013 от 10.11.2021 12:00:07 | 0 / 0 | 20000 | аналитика: Группа\n2. 2021-09-29T12:00:03Z | Поступление на расчетный счет 00000000012 от 29.09.2021 12:00:03 | 0 / 0 | 50000 | аналитика: Группа\n3. 2021-08-31T12:00:04Z | Поступление на расчетный счет 00000000011 от 31.08.2021 12:00:04 | 0 / 0 | 120500 | аналитика: Группа\n4. 2021-06-22T12:00:00Z | Поступление на расчетный счет 00000000010 от 22.06.2021 12:00:00 | 0 / 0 | 498630 | аналитика: Группа\n5. 2021-06-09T12:00:05Z | Поступление на расчетный счет 00000000009 от 09.06.2021 12:00:05 | 0 / 0 | 418960 | аналитика: Группа\n6. 2021-04-28T12:00:08Z | Поступление на расчетный счет 00000000008 от 28.04.2021 12:00:08 | 0 / 0 | 564300 | аналитика: Группа\n7. 2021-04-22T12:00:00Z | Поступление на расчетный счет 00000000007 от 22.04.2021 12:00:00 | 0 / 0 | 982420 | аналитика: Группа\n8. 2021-04-13T12:00:11Z | Поступление на расчетный счет 00000000006 от 13.04.2021 12:00:11 | 0 / 0 | 1882400 | аналитика: Группа\n9. 2021-03-25T12:00:02Z | Поступление на расчетный счет 00000000005 от 25.03.2021 12:00:02 | 0 / 0 | 644315 | аналитика: Группа\n10. 2021-03-24T12:00:03Z | Поступление на расчетный счет 00000000004 от 24.03.2021 12:00:03 | 0 / 0 | 1219990 | аналитика: Группа\n11. 2021-03-18T12:00:00Z | Поступление на расчетный счет 00000000003 от 18.03.2021 12:00:00 | 0 / 0 | 1425310 | аналитика: Группа\n12. 2021-03-12T12:00:03Z | Поступление на расчетный счет 00000000002 от 12.03.2021 12:00:03 | 0 / 0 | 214600 | аналитика: Группа\n13. 2021-02-19T12:00:01Z | Поступление на расчетный счет 00000000001 от 19.02.2021 12:00:01 | 0 / 0 | 518600 | аналитика: Группа\n14. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n15. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n16. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа\n17. 2020-11-30T12:00:07Z | Поступление на расчетный счет 00000000041 от 30.11.2020 12:00:07 | 0 / 0 | 38900 | аналитика: Группа\n18. 2020-11-19T12:00:04Z | Поступление на расчетный счет 00000000039 от 19.11.2020 12:00:04 | 0 / 0 | 3320600 | аналитика: Группа\n19. 2020-11-18T12:00:05Z | Поступление на расчетный счет 00000000038 от 18.11.2020 12:00:05 | 0 / 0 | 745300 | аналитика: Группа\n20. 2020-11-18T12:00:04Z | Поступление на расчетный счет 00000000037 от 18.11.2020 12:00:04 | 0 / 0 | 320000 | аналитика: Группа\n21. 2020-11-13T12:00:03Z | Поступление на расчетный счет 00000000036 от 13.11.2020 12:00:03 | 0 / 0 | 313600 | аналитика: Группа\n22. 2020-11-10T15:39:13Z | Поступление на расчетный счет 00000000035 от 10.11.2020 15:39:13 | 0 / 0 | 328300 | аналитика: Группа\n23. 2020-10-26T12:00:00Z | Поступление на расчетный счет 00000000034 от 26.10.2020 12:00:00 | 0 / 0 | 175000 | аналитика: Группа\n24. 2020-08-20T12:00:06Z | Поступление на расчетный счет 00000000032 от 20.08.2020 12:00:06 | 0 / 0 | 3126005 | аналитика: Группа\n25. 2020-07-30T12:00:00Z | Поступление на расчетный счет 00000000029 от 30.07.2020 12:00:00 | 0 / 0 | 20000 | аналитика: Группа\n26. 2020-07-27T12:00:00Z | Поступление на расчетный счет 00000000028 от 27.07.2020 12:00:00 | 0 / 0 | 40860 | аналитика: Группа", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "fallback_rule_hit": "documents_counterparty_year_rewrite" + }, + { + "number": 6, + "question": "Покажи документы по контрагенту СВК", + "session_key": "single_6", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_6", + "status_code": 200, + "ok": true, + "elapsed_ms": 1059, + "reply_type": "factual", + "trace_id": "address-lWaThloFl5", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 26.\n1. 2021-11-10T12:00:07Z | Поступление на расчетный счет 00000000013 от 10.11.2021 12:00:07 | 0 / 0 | 20000 | аналитика: Группа\n2. 2021-09-29T12:00:03Z | Поступление на расчетный счет 00000000012 от 29.09.2021 12:00:03 | 0 / 0 | 50000 | аналитика: Группа\n3. 2021-08-31T12:00:04Z | Поступление на расчетный счет 00000000011 от 31.08.2021 12:00:04 | 0 / 0 | 120500 | аналитика: Группа\n4. 2021-06-22T12:00:00Z | Поступление на расчетный счет 00000000010 от 22.06.2021 12:00:00 | 0 / 0 | 498630 | аналитика: Группа\n5. 2021-06-09T12:00:05Z | Поступление на расчетный счет 00000000009 от 09.06.2021 12:00:05 | 0 / 0 | 418960 | аналитика: Группа\n6. 2021-04-28T12:00:08Z | Поступление на расчетный счет 00000000008 от 28.04.2021 12:00:08 | 0 / 0 | 564300 | аналитика: Группа\n7. 2021-04-22T12:00:00Z | Поступление на расчетный счет 00000000007 от 22.04.2021 12:00:00 | 0 / 0 | 982420 | аналитика: Группа\n8. 2021-04-13T12:00:11Z | Поступление на расчетный счет 00000000006 от 13.04.2021 12:00:11 | 0 / 0 | 1882400 | аналитика: Группа\n9. 2021-03-25T12:00:02Z | Поступление на расчетный счет 00000000005 от 25.03.2021 12:00:02 | 0 / 0 | 644315 | аналитика: Группа\n10. 2021-03-24T12:00:03Z | Поступление на расчетный счет 00000000004 от 24.03.2021 12:00:03 | 0 / 0 | 1219990 | аналитика: Группа\n11. 2021-03-18T12:00:00Z | Поступление на расчетный счет 00000000003 от 18.03.2021 12:00:00 | 0 / 0 | 1425310 | аналитика: Группа\n12. 2021-03-12T12:00:03Z | Поступление на расчетный счет 00000000002 от 12.03.2021 12:00:03 | 0 / 0 | 214600 | аналитика: Группа\n13. 2021-02-19T12:00:01Z | Поступление на расчетный счет 00000000001 от 19.02.2021 12:00:01 | 0 / 0 | 518600 | аналитика: Группа\n14. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n15. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n16. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа\n17. 2020-11-30T12:00:07Z | Поступление на расчетный счет 00000000041 от 30.11.2020 12:00:07 | 0 / 0 | 38900 | аналитика: Группа\n18. 2020-11-19T12:00:04Z | Поступление на расчетный счет 00000000039 от 19.11.2020 12:00:04 | 0 / 0 | 3320600 | аналитика: Группа\n19. 2020-11-18T12:00:05Z | Поступление на расчетный счет 00000000038 от 18.11.2020 12:00:05 | 0 / 0 | 745300 | аналитика: Группа\n20. 2020-11-18T12:00:04Z | Поступление на расчетный счет 00000000037 от 18.11.2020 12:00:04 | 0 / 0 | 320000 | аналитика: Группа\n21. 2020-11-13T12:00:03Z | Поступление на расчетный счет 00000000036 от 13.11.2020 12:00:03 | 0 / 0 | 313600 | аналитика: Группа\n22. 2020-11-10T15:39:13Z | Поступление на расчетный счет 00000000035 от 10.11.2020 15:39:13 | 0 / 0 | 328300 | аналитика: Группа\n23. 2020-10-26T12:00:00Z | Поступление на расчетный счет 00000000034 от 26.10.2020 12:00:00 | 0 / 0 | 175000 | аналитика: Группа\n24. 2020-08-20T12:00:06Z | Поступление на расчетный счет 00000000032 от 20.08.2020 12:00:06 | 0 / 0 | 3126005 | аналитика: Группа\n25. 2020-07-30T12:00:00Z | Поступление на расчетный счет 00000000029 от 30.07.2020 12:00:00 | 0 / 0 | 20000 | аналитика: Группа\n26. 2020-07-27T12:00:00Z | Поступление на расчетный счет 00000000028 от 27.07.2020 12:00:00 | 0 / 0 | 40860 | аналитика: Группа", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "fallback_rule_hit": "documents_counterparty_rewrite" + }, + { + "number": 7, + "question": "Покажи банковские операции по СВК за 2020", + "session_key": "single_7", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_7", + "status_code": 200, + "ok": true, + "elapsed_ms": 770, + "reply_type": "factual", + "trace_id": "address-KpnBSMulFy", + "assistant_reply": "Собран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "fallback_rule_hit": "bank_operations_counterparty_year_rewrite" + }, + { + "number": 8, + "question": "Какие платежи по СВК в 2020", + "session_key": "single_8", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_8", + "status_code": 200, + "ok": true, + "elapsed_ms": 1017, + "reply_type": "factual", + "trace_id": "address-NMHp5iEPp2", + "assistant_reply": "Собран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "fallback_rule_hit": "bank_operations_counterparty_year_rewrite" + }, + { + "number": 9, + "question": "Покажи банковские операции по контрагенту СВК за весь период", + "session_key": "single_9", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_9", + "status_code": 200, + "ok": true, + "elapsed_ms": 1214, + "reply_type": "factual", + "trace_id": "address-EKioLQerVc", + "assistant_reply": "Собран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 26.\n1. 2021-11-10T12:00:07Z | Поступление на расчетный счет 00000000013 от 10.11.2021 12:00:07 | 0 / 0 | 20000 | аналитика: Группа\n2. 2021-09-29T12:00:03Z | Поступление на расчетный счет 00000000012 от 29.09.2021 12:00:03 | 0 / 0 | 50000 | аналитика: Группа\n3. 2021-08-31T12:00:04Z | Поступление на расчетный счет 00000000011 от 31.08.2021 12:00:04 | 0 / 0 | 120500 | аналитика: Группа\n4. 2021-06-22T12:00:00Z | Поступление на расчетный счет 00000000010 от 22.06.2021 12:00:00 | 0 / 0 | 498630 | аналитика: Группа\n5. 2021-06-09T12:00:05Z | Поступление на расчетный счет 00000000009 от 09.06.2021 12:00:05 | 0 / 0 | 418960 | аналитика: Группа\n6. 2021-04-28T12:00:08Z | Поступление на расчетный счет 00000000008 от 28.04.2021 12:00:08 | 0 / 0 | 564300 | аналитика: Группа\n7. 2021-04-22T12:00:00Z | Поступление на расчетный счет 00000000007 от 22.04.2021 12:00:00 | 0 / 0 | 982420 | аналитика: Группа\n8. 2021-04-13T12:00:11Z | Поступление на расчетный счет 00000000006 от 13.04.2021 12:00:11 | 0 / 0 | 1882400 | аналитика: Группа\n9. 2021-03-25T12:00:02Z | Поступление на расчетный счет 00000000005 от 25.03.2021 12:00:02 | 0 / 0 | 644315 | аналитика: Группа\n10. 2021-03-24T12:00:03Z | Поступление на расчетный счет 00000000004 от 24.03.2021 12:00:03 | 0 / 0 | 1219990 | аналитика: Группа\n11. 2021-03-18T12:00:00Z | Поступление на расчетный счет 00000000003 от 18.03.2021 12:00:00 | 0 / 0 | 1425310 | аналитика: Группа\n12. 2021-03-12T12:00:03Z | Поступление на расчетный счет 00000000002 от 12.03.2021 12:00:03 | 0 / 0 | 214600 | аналитика: Группа\n13. 2021-02-19T12:00:01Z | Поступление на расчетный счет 00000000001 от 19.02.2021 12:00:01 | 0 / 0 | 518600 | аналитика: Группа\n14. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n15. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n16. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа\n17. 2020-11-30T12:00:07Z | Поступление на расчетный счет 00000000041 от 30.11.2020 12:00:07 | 0 / 0 | 38900 | аналитика: Группа\n18. 2020-11-19T12:00:04Z | Поступление на расчетный счет 00000000039 от 19.11.2020 12:00:04 | 0 / 0 | 3320600 | аналитика: Группа\n19. 2020-11-18T12:00:05Z | Поступление на расчетный счет 00000000038 от 18.11.2020 12:00:05 | 0 / 0 | 745300 | аналитика: Группа\n20. 2020-11-18T12:00:04Z | Поступление на расчетный счет 00000000037 от 18.11.2020 12:00:04 | 0 / 0 | 320000 | аналитика: Группа\n21. 2020-11-13T12:00:03Z | Поступление на расчетный счет 00000000036 от 13.11.2020 12:00:03 | 0 / 0 | 313600 | аналитика: Группа\n22. 2020-11-10T15:39:13Z | Поступление на расчетный счет 00000000035 от 10.11.2020 15:39:13 | 0 / 0 | 328300 | аналитика: Группа\n23. 2020-10-26T12:00:00Z | Поступление на расчетный счет 00000000034 от 26.10.2020 12:00:00 | 0 / 0 | 175000 | аналитика: Группа\n24. 2020-08-20T12:00:06Z | Поступление на расчетный счет 00000000032 от 20.08.2020 12:00:06 | 0 / 0 | 3126005 | аналитика: Группа\n25. 2020-07-30T12:00:00Z | Поступление на расчетный счет 00000000029 от 30.07.2020 12:00:00 | 0 / 0 | 20000 | аналитика: Группа\n26. 2020-07-27T12:00:00Z | Поступление на расчетный счет 00000000028 от 27.07.2020 12:00:00 | 0 / 0 | 40860 | аналитика: Группа", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "fallback_rule_hit": "bank_operations_counterparty_all_time_rewrite" + }, + { + "number": 10, + "question": "Покажи документы по договору 15/24 за 2020", + "session_key": "single_10", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_10", + "status_code": 200, + "ok": true, + "elapsed_ms": 1983, + "reply_type": "factual", + "trace_id": "address-m__wS_Sd6g", + "assistant_reply": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-08-31T15:00:06Z | Поступление товаров и услуг 00000000024 от 31.08.2020 15:00:06 | 19.04 / 76.05 | 233.33\n2. 2020-08-31T15:00:06Z | Поступление товаров и услуг 00000000024 от 31.08.2020 15:00:06 | 44.01 / 76.05 | 1166.67", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "fallback_rule_hit": "documents_contract_year_rewrite" + }, + { + "number": 11, + "question": "Покажи документы по договору 15/24", + "session_key": "single_11", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_11", + "status_code": 200, + "ok": true, + "elapsed_ms": 1085, + "reply_type": "factual", + "trace_id": "address--jKfQ9r6qS", + "assistant_reply": "Документный фильтр в live дал пустой набор; показываю связанные банковские операции по договору.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "fallback_rule_hit": "documents_contract_rewrite" + }, + { + "number": 12, + "question": "Покажи банковские операции по договору 15/24", + "session_key": "single_12", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_12", + "status_code": 200, + "ok": true, + "elapsed_ms": 1043, + "reply_type": "factual", + "trace_id": "address-XoBIxWaGOQ", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "fallback_rule_hit": "bank_operations_contract_rewrite" + }, + { + "number": 13, + "question": "Есть ли долг по договору 15/24 на 2020-07-31", + "session_key": "single_13", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_13", + "status_code": 200, + "ok": true, + "elapsed_ms": 880, + "reply_type": "partial_coverage", + "trace_id": "address-SVQXmJgEIg", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "error:Missing choices in /chat/completions payload.", + "fallback_rule_hit": null + }, + { + "number": 14, + "question": "Покажи операции по договору 15/24 за весь период", + "session_key": "single_14", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_14", + "status_code": 200, + "ok": true, + "elapsed_ms": 1143, + "reply_type": "factual", + "trace_id": "address-Ldwi-b0WnK", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "fallback_rule_hit": "bank_operations_contract_all_time_rewrite" + }, + { + "number": 15, + "question": "Покажи сальдо по счету 60.01 на дату 2020-07-31", + "session_key": "single_15", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_15", + "status_code": 200, + "ok": true, + "elapsed_ms": 822, + "reply_type": "factual", + "trace_id": "address-KzJCvvIucn", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 5.\nСумма по отобранным движениям: 216200.\n1. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400\n2. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600\n3. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400\n4. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "fallback_rule_hit": "balance_month_period_rewrite" + }, + { + "number": 16, + "question": "Какой остаток по счету 60 на 2020.05", + "session_key": "single_16", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_16", + "status_code": 200, + "ok": true, + "elapsed_ms": 979, + "reply_type": "factual", + "trace_id": "address-G4L_tB8MWZ", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 6.\nСумма по отобранным движениям: 849499.\n1. 2020-05-22T10:14:43Z | Списание с расчетного счета 00000000148 от 22.05.2020 10:14:43 | 60.02 / 51 | 142299\n2. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 75367\n3. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 211833\n4. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 187967", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "fallback_rule_hit": "balance_month_period_rewrite" + }, + { + "number": 17, + "question": "Какой остаток по счету 60 на 2020 май", + "session_key": "single_17", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_17", + "status_code": 200, + "ok": true, + "elapsed_ms": 1021, + "reply_type": "factual", + "trace_id": "address-j3gDuatATy", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 6.\nСумма по отобранным движениям: 849499.\n1. 2020-05-22T10:14:43Z | Списание с расчетного счета 00000000148 от 22.05.2020 10:14:43 | 60.02 / 51 | 142299\n2. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 75367\n3. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 211833\n4. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 187967", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "fallback_rule_hit": "balance_month_period_rewrite" + }, + { + "number": 18, + "question": "Какие документы формируют остаток по счету 60.01 на 2020-07-31", + "session_key": "single_18", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_18", + "status_code": 200, + "ok": true, + "elapsed_ms": 1003, + "reply_type": "factual", + "trace_id": "address-I3PufgNbgw", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 5.\nСумма по отобранным движениям: 216200.\n1. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400\n2. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600\n3. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400\n4. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "fallback_rule_hit": "balance_month_period_rewrite" + }, + { + "number": 19, + "question": "Какой остаток по счету 62 на сегодня", + "session_key": "single_19", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_19", + "status_code": 200, + "ok": true, + "elapsed_ms": 1122, + "reply_type": "factual", + "trace_id": "address-0h1oi8K5hC", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 200.\nСумма по отобранным движениям: 63309907.220000006.\n1. 2022-01-20T12:00:02Z | Списание с расчетного счета 00000000004 от 20.01.2022 12:00:02 | 62.02 / 51 | 1808325\n2. 2022-01-20T12:00:02Z | Списание с расчетного счета 00000000004 от 20.01.2022 12:00:02 | 62.02 / 51 | 216600\n3. 2022-01-20T12:00:02Z | Списание с расчетного счета 00000000004 от 20.01.2022 12:00:02 | 62.02 / 51 | 104726\n4. 2021-11-10T12:00:07Z | Поступление на расчетный счет 00000000013 от 10.11.2021 12:00:07 | 51 / 62.02 | 20000", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "fallback_rule_hit": "balance_account_rewrite" + }, + { + "number": 20, + "question": "Покажи документы по СВК за 2020", + "session_key": "chain_a", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-chain_a", + "status_code": 200, + "ok": true, + "elapsed_ms": 966, + "reply_type": "factual", + "trace_id": "address-oWsaKVOYX7", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "fallback_rule_hit": "documents_counterparty_year_rewrite" + }, + { + "number": 21, + "question": "а теперь только за май 2020", + "session_key": "chain_a", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-chain_a", + "status_code": 200, + "ok": true, + "elapsed_ms": 3198, + "reply_type": "partial_coverage", + "trace_id": "address-_25Y4MfSv4", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null + }, + { + "number": 22, + "question": "а за все время?", + "session_key": "chain_a", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-chain_a", + "status_code": 200, + "ok": true, + "elapsed_ms": 1136, + "reply_type": "factual", + "trace_id": "address-Bl9Yd0ActH", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 26.\n1. 2021-11-10T12:00:07Z | Поступление на расчетный счет 00000000013 от 10.11.2021 12:00:07 | 0 / 0 | 20000 | аналитика: Группа\n2. 2021-09-29T12:00:03Z | Поступление на расчетный счет 00000000012 от 29.09.2021 12:00:03 | 0 / 0 | 50000 | аналитика: Группа\n3. 2021-08-31T12:00:04Z | Поступление на расчетный счет 00000000011 от 31.08.2021 12:00:04 | 0 / 0 | 120500 | аналитика: Группа\n4. 2021-06-22T12:00:00Z | Поступление на расчетный счет 00000000010 от 22.06.2021 12:00:00 | 0 / 0 | 498630 | аналитика: Группа\n5. 2021-06-09T12:00:05Z | Поступление на расчетный счет 00000000009 от 09.06.2021 12:00:05 | 0 / 0 | 418960 | аналитика: Группа\n6. 2021-04-28T12:00:08Z | Поступление на расчетный счет 00000000008 от 28.04.2021 12:00:08 | 0 / 0 | 564300 | аналитика: Группа\n7. 2021-04-22T12:00:00Z | Поступление на расчетный счет 00000000007 от 22.04.2021 12:00:00 | 0 / 0 | 982420 | аналитика: Группа\n8. 2021-04-13T12:00:11Z | Поступление на расчетный счет 00000000006 от 13.04.2021 12:00:11 | 0 / 0 | 1882400 | аналитика: Группа\n9. 2021-03-25T12:00:02Z | Поступление на расчетный счет 00000000005 от 25.03.2021 12:00:02 | 0 / 0 | 644315 | аналитика: Группа\n10. 2021-03-24T12:00:03Z | Поступление на расчетный счет 00000000004 от 24.03.2021 12:00:03 | 0 / 0 | 1219990 | аналитика: Группа\n11. 2021-03-18T12:00:00Z | Поступление на расчетный счет 00000000003 от 18.03.2021 12:00:00 | 0 / 0 | 1425310 | аналитика: Группа\n12. 2021-03-12T12:00:03Z | Поступление на расчетный счет 00000000002 от 12.03.2021 12:00:03 | 0 / 0 | 214600 | аналитика: Группа\n13. 2021-02-19T12:00:01Z | Поступление на расчетный счет 00000000001 от 19.02.2021 12:00:01 | 0 / 0 | 518600 | аналитика: Группа\n14. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n15. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n16. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа\n17. 2020-11-30T12:00:07Z | Поступление на расчетный счет 00000000041 от 30.11.2020 12:00:07 | 0 / 0 | 38900 | аналитика: Группа\n18. 2020-11-19T12:00:04Z | Поступление на расчетный счет 00000000039 от 19.11.2020 12:00:04 | 0 / 0 | 3320600 | аналитика: Группа\n19. 2020-11-18T12:00:05Z | Поступление на расчетный счет 00000000038 от 18.11.2020 12:00:05 | 0 / 0 | 745300 | аналитика: Группа\n20. 2020-11-18T12:00:04Z | Поступление на расчетный счет 00000000037 от 18.11.2020 12:00:04 | 0 / 0 | 320000 | аналитика: Группа\n21. 2020-11-13T12:00:03Z | Поступление на расчетный счет 00000000036 от 13.11.2020 12:00:03 | 0 / 0 | 313600 | аналитика: Группа\n22. 2020-11-10T15:39:13Z | Поступление на расчетный счет 00000000035 от 10.11.2020 15:39:13 | 0 / 0 | 328300 | аналитика: Группа\n23. 2020-10-26T12:00:00Z | Поступление на расчетный счет 00000000034 от 26.10.2020 12:00:00 | 0 / 0 | 175000 | аналитика: Группа\n24. 2020-08-20T12:00:06Z | Поступление на расчетный счет 00000000032 от 20.08.2020 12:00:06 | 0 / 0 | 3126005 | аналитика: Группа\n25. 2020-07-30T12:00:00Z | Поступление на расчетный счет 00000000029 от 30.07.2020 12:00:00 | 0 / 0 | 20000 | аналитика: Группа\n26. 2020-07-27T12:00:00Z | Поступление на расчетный счет 00000000028 от 27.07.2020 12:00:00 | 0 / 0 | 40860 | аналитика: Группа", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null + }, + { + "number": 23, + "question": "а по счету 60.01 на ту же дату", + "session_key": "chain_a", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-chain_a", + "status_code": 200, + "ok": true, + "elapsed_ms": 792, + "reply_type": "factual", + "trace_id": "address-LRHV-3b7dD", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 200.\nСумма по отобранным движениям: 31878451.5.\n1. 2022-04-18T12:00:00Z | Поступление товаров и услуг 00000000007 от 18.04.2022 12:00:00 | 97.21 / 60.01 | 14790\n2. 2022-04-18T12:00:00Z | Поступление товаров и услуг 00000000007 от 18.04.2022 12:00:00 | 60.01 / 60.02 | 14790\n3. 2022-01-20T12:00:01Z | Списание с расчетного счета 00000000003 от 20.01.2022 12:00:01 | 60.01 / 51 | 1705109.5\n4. 2021-05-17T12:00:00Z | Поступление товаров и услуг 00000000009 от 17.05.2021 12:00:00 | 19.04 / 60.01 | 12000", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "error:Missing choices in /chat/completions payload.", + "fallback_rule_hit": null + }, + { + "number": 24, + "question": "Покажи банковские операции по договору 15/24", + "session_key": "chain_b", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-chain_b", + "status_code": 200, + "ok": true, + "elapsed_ms": 1169, + "reply_type": "factual", + "trace_id": "address-Y3SYGpF0MO", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "fallback_rule_hit": "bank_operations_contract_rewrite" + }, + { + "number": 25, + "question": "а за 2020 год", + "session_key": "chain_b", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-chain_b", + "status_code": 200, + "ok": true, + "elapsed_ms": 1961, + "reply_type": "factual", + "trace_id": "address-SrM9fPt54E", + "assistant_reply": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.\nСобран список банковских операций по договору (live address lane).\nСтрок отобрано: 3.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53\n3. 2020-08-31T15:00:04Z | Списание с расчетного счета 00000000224 от 31.08.2020 15:00:04 | 91.02 / 51 | 106.47", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null + }, + { + "number": 26, + "question": "а теперь только за май 2020", + "session_key": "chain_b", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-chain_b", + "status_code": 200, + "ok": true, + "elapsed_ms": 3170, + "reply_type": "factual", + "trace_id": "address-2Jt5sJcLYG", + "assistant_reply": "По окну 2020-05-01..2020-05-31 строк не найдено; показаны ближайшие доступные данные 2020-10-15..2020-10-15.\nСобран список банковских операций по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null + }, + { + "number": 27, + "question": "а по счету 51 на ту же дату", + "session_key": "chain_b", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-chain_b", + "status_code": 200, + "ok": true, + "elapsed_ms": 753, + "reply_type": "factual", + "trace_id": "address--CeAQrMd0e", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 24.\nСумма по отобранным движениям: 2234531.1100000003.\n1. 2020-05-29T12:00:02Z | Списание с расчетного счета 00000000151 от 29.05.2020 12:00:02 | 91.02 / 51 | 60\n2. 2020-05-28T20:17:50Z | Списание с расчетного счета 00000000150 от 28.05.2020 20:17:50 | 70 / 51 | 50\n3. 2020-05-28T20:17:24Z | Списание с расчетного счета 00000000149 от 28.05.2020 20:17:24 | 91.02 / 51 | 35\n4. 2020-05-22T10:14:43Z | Списание с расчетного счета 00000000148 от 22.05.2020 10:14:43 | 60.02 / 51 | 142299", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "error:Missing choices in /chat/completions payload.", + "fallback_rule_hit": null + }, + { + "number": 28, + "question": "Какой остаток по счету 60 на 2020.05", + "session_key": "chain_c", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-chain_c", + "status_code": 200, + "ok": true, + "elapsed_ms": 1038, + "reply_type": "factual", + "trace_id": "address-FptBoUpCJw", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 6.\nСумма по отобранным движениям: 849499.\n1. 2020-05-22T10:14:43Z | Списание с расчетного счета 00000000148 от 22.05.2020 10:14:43 | 60.02 / 51 | 142299\n2. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 75367\n3. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 211833\n4. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 187967", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "fallback_rule_hit": "balance_month_period_rewrite" + }, + { + "number": 29, + "question": "а теперь по 60.01", + "session_key": "chain_c", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-chain_c", + "status_code": 200, + "ok": true, + "elapsed_ms": 1020, + "reply_type": "factual", + "trace_id": "address-DyR5yhasU4", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 6.\nСумма по отобранным движениям: 849499.\n1. 2020-05-22T10:14:43Z | Списание с расчетного счета 00000000148 от 22.05.2020 10:14:43 | 60.02 / 51 | 142299\n2. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 75367\n3. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 211833\n4. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 187967", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null + }, + { + "number": 30, + "question": "а на ту же дату по 62", + "session_key": "chain_c", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-chain_c", + "status_code": 200, + "ok": true, + "elapsed_ms": 1050, + "reply_type": "factual", + "trace_id": "address-DMeRFm3EcQ", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 6.\nСумма по отобранным движениям: 849499.\n1. 2020-05-22T10:14:43Z | Списание с расчетного счета 00000000148 от 22.05.2020 10:14:43 | 60.02 / 51 | 142299\n2. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 75367\n3. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 211833\n4. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 187967", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null + }, + { + "number": 31, + "question": "бля епт покажи доки по свк за 20й", + "session_key": "single_31", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_31", + "status_code": 200, + "ok": true, + "elapsed_ms": 978, + "reply_type": "factual", + "trace_id": "address-spVPQ8fXNr", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "fallback_rule_hit": "documents_counterparty_year_rewrite" + }, + { + "number": 32, + "question": "свк 20 год - покажи доки плс", + "session_key": "single_32", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_32", + "status_code": 200, + "ok": true, + "elapsed_ms": 1010, + "reply_type": "factual", + "trace_id": "address-KuIoSi8XtB", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "fallback_rule_hit": "documents_counterparty_year_rewrite" + }, + { + "number": 33, + "question": "покажи банк опер по дог 15/24 пж", + "session_key": "single_33", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_33", + "status_code": 200, + "ok": true, + "elapsed_ms": 1236, + "reply_type": "factual", + "trace_id": "address-jyKrhbkWt6", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "fallback_rule_hit": "bank_operations_contract_rewrite" + }, + { + "number": 34, + "question": "остаток 60 на 2020 май покеж", + "session_key": "single_34", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_34", + "status_code": 200, + "ok": true, + "elapsed_ms": 785, + "reply_type": "factual", + "trace_id": "address-L_uvP4v4kr", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 6.\nСумма по отобранным движениям: 849499.\n1. 2020-05-22T10:14:43Z | Списание с расчетного счета 00000000148 от 22.05.2020 10:14:43 | 60.02 / 51 | 142299\n2. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 75367\n3. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 211833\n4. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 187967", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_after_llm_error", + "fallback_rule_hit": "balance_month_period_rewrite" + }, + { + "number": 35, + "question": "по свк за весь период че есть", + "session_key": "single_35", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_35", + "status_code": 502, + "ok": false, + "elapsed_ms": 17, + "reply_type": "", + "trace_id": "", + "assistant_reply": "", + "mcp_call_status": null, + "limited_reason_category": null, + "llm_decomposition_applied": null, + "llm_decomposition_reason": null, + "fallback_rule_hit": null + }, + { + "number": 36, + "question": "Покажи технические константы конфигурации", + "session_key": "single_36", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_36", + "status_code": 502, + "ok": false, + "elapsed_ms": 18, + "reply_type": "", + "trace_id": "", + "assistant_reply": "", + "mcp_call_status": null, + "limited_reason_category": null, + "llm_decomposition_applied": null, + "llm_decomposition_reason": null, + "fallback_rule_hit": null + }, + { + "number": 37, + "question": "кто президент США", + "session_key": "single_37", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_37", + "status_code": 502, + "ok": false, + "elapsed_ms": 9, + "reply_type": "", + "trace_id": "", + "assistant_reply": "", + "mcp_call_status": null, + "limited_reason_category": null, + "llm_decomposition_applied": null, + "llm_decomposition_reason": null, + "fallback_rule_hit": null + } + ] +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54/run_summary.json b/docs/ADDRESS/runs/2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54/run_summary.json new file mode 100644 index 0000000..ee485e8 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54/run_summary.json @@ -0,0 +1,66 @@ +{ + "run_id": "2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54", + "generated_at": "2026-04-02T05:32:35", + "source_questions_file": "docs/ADDRESS/1.txt", + "backend_url": "http://127.0.0.1:8787/api/assistant/message", + "llm_provider": "local", + "llm_base_url": "http://127.0.0.1:1234", + "llm_model": "qwen2.5-14b-instruct-1m", + "totals": { + "questions_total": 37, + "ok_200_count": 34, + "factual_count": 32, + "partial_coverage_count": 2, + "other_reply_types_count": 0, + "llm_decomposition_applied_count": 25, + "fallback_rule_hit_count": 25, + "avg_elapsed_ms": 1111.3 + }, + "distributions": { + "mcp_call_status": { + "matched_non_empty": 32, + "materialized_but_not_anchor_matched": 2, + "(null)": 3 + }, + "limited_reason_category": { + "empty_match": 2 + }, + "llm_decomposition_reason": { + "fallback_rule_applied_after_llm_error": 25, + "error:Missing choices in /chat/completions payload.": 3, + "not_address_like": 6, + "(null)": 3 + } + }, + "followup_sessions": { + "single_1": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_1", + "single_2": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_2", + "single_3": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_3", + "single_4": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_4", + "single_5": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_5", + "single_6": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_6", + "single_7": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_7", + "single_8": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_8", + "single_9": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_9", + "single_10": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_10", + "single_11": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_11", + "single_12": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_12", + "single_13": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_13", + "single_14": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_14", + "single_15": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_15", + "single_16": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_16", + "single_17": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_17", + "single_18": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_18", + "single_19": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_19", + "chain_a": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-chain_a", + "chain_b": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-chain_b", + "chain_c": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-chain_c", + "single_31": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_31", + "single_32": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_32", + "single_33": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_33", + "single_34": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_34", + "single_35": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_35", + "single_36": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_36", + "single_37": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_08-31-54-single_37" + } +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32/README.md b/docs/ADDRESS/runs/2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32/README.md new file mode 100644 index 0000000..246cf6a --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32/README.md @@ -0,0 +1,19 @@ +# 2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32 + +Generated at: 2026-04-02T06:18:23 +Questions file: docs/ADDRESS/1.txt +Backend URL: http://127.0.0.1:8787/api/assistant/message +LLM: local / qwen2.5-14b-instruct-1m @ http://127.0.0.1:1234 + +## Totals +- questions_total: 63 +- ok_200_count: 63 +- factual_count: 38 +- partial_coverage_count: 18 +- clarification_required_count: 7 +- http_error_count: 0 + +## Files +- run_summary.json +- full_live_results.json +- failures_only.json \ No newline at end of file diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32/failures_only.json b/docs/ADDRESS/runs/2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32/failures_only.json new file mode 100644 index 0000000..5bc0e4c --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32/failures_only.json @@ -0,0 +1,481 @@ +{ + "run_id": "2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32", + "generated_at": "2026-04-02T06:18:23", + "failures": [ + { + "number": 1, + "question": "Цепочки `FOLLOW-UP` прогоняй в одной сессии подряд.", + "session_key": "single_1", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_1", + "status_code": 200, + "ok": true, + "elapsed_ms": 11103, + "reply_type": "clarification_required", + "trace_id": "JiVKx5ohmlt6t4", + "assistant_reply": "Коротко: Наиболее вероятный механизм проблемы подтвержден частично и требует первичной проверки. Что сломано:\n- Есть признаки проблемы, но без уточнений по периоду и объекту вывод ненадежен. Почему это похоже на проблему:\n- Сигнал проблемы есть, но механизм подтвержден не полностью. На чем это основано:\n- Опора частичная: часть требований покрыта не полностью.\n- Отдельно не подтверждено или покрыто частично: R1. Что проверить первым:\n- Уточните период проверки, чтобы подтвердить проблему без лишнего шума.\n- Проверьте связку документов и проводок по проблемному участку в указанном периоде.\n- Уточните период проверки (например, июль 2020). Ограничения:\n- Ни одно требование не получило подтвержденного покрытия.\n- Нет explainable-сигналов why_included в результатах выборки.\n- Часть контекстных токенов не подтверждена напрямую: chain.\n- required anchors claim-bound grounding.\n- evidence.", + "mcp_call_status": null, + "limited_reason_category": null, + "llm_decomposition_applied": null, + "llm_decomposition_reason": null, + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 2, + "question": "Блоки `SINGLE` можно гонять по отдельности.", + "session_key": "single_2", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_2", + "status_code": 200, + "ok": true, + "elapsed_ms": 8851, + "reply_type": "clarification_required", + "trace_id": "C06HaZtg0-69mc", + "assistant_reply": "Коротко: Наиболее вероятный механизм проблемы подтвержден частично и требует первичной проверки. Что сломано:\n- Есть признаки проблемы, но без уточнений по периоду и объекту вывод ненадежен. Почему это похоже на проблему:\n- Сигнал проблемы есть, но механизм подтвержден не полностью. На чем это основано:\n- Опора частичная: часть требований покрыта не полностью.\n- Отдельно не подтверждено или покрыто частично: R1. Что проверить первым:\n- Уточните период проверки, чтобы подтвердить проблему без лишнего шума.\n- Проверьте связку документов и проводок по проблемному участку в указанном периоде.\n- Уточните период проверки (например, июль 2020). Ограничения:\n- Ни одно требование не получило подтвержденного покрытия.\n- Нет explainable-сигналов why_included в результатах выборки.\n- required anchors claim-bound grounding.\n- evidence.\n- Targeted evidence acquisition claim target path.", + "mcp_call_status": null, + "limited_reason_category": null, + "llm_decomposition_applied": null, + "llm_decomposition_reason": null, + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 2, + "question": "свк доки за 20й", + "session_key": "single_2", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_2", + "status_code": 200, + "ok": true, + "elapsed_ms": 7735, + "reply_type": "partial_coverage", + "trace_id": "address-0BIB9ZIQQd", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 3, + "question": "Для проверок смотри не только ответ, но и `technical_debug_payload_json`.", + "session_key": "single_3", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_3", + "status_code": 200, + "ok": true, + "elapsed_ms": 9070, + "reply_type": "clarification_required", + "trace_id": "fMCKjmaMDLD3hf", + "assistant_reply": "Коротко: Наиболее вероятный механизм проблемы подтвержден частично и требует первичной проверки. Что сломано:\n- Есть признаки проблемы, но без уточнений по периоду и объекту вывод ненадежен. Почему это похоже на проблему:\n- Сигнал проблемы есть, но механизм подтвержден не полностью. На чем это основано:\n- Опора частичная: часть требований покрыта не полностью.\n- Отдельно не подтверждено или покрыто частично: R1. Что проверить первым:\n- Уточните период проверки, чтобы подтвердить проблему без лишнего шума.\n- Проверьте связку документов и проводок по проблемному участку в указанном периоде.\n- Уточните период проверки (например, июль 2020). Ограничения:\n- Ни одно требование не получило подтвержденного покрытия.\n- Нет explainable-сигналов why_included в результатах выборки.\n- required anchors claim-bound grounding.\n- evidence.\n- Targeted evidence acquisition claim target path.", + "mcp_call_status": null, + "limited_reason_category": null, + "llm_decomposition_applied": null, + "llm_decomposition_reason": null, + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 7, + "question": "Покажи банковские операции по СВК за 2020", + "session_key": "single_7", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_7", + "status_code": 200, + "ok": true, + "elapsed_ms": 9179, + "reply_type": "partial_coverage", + "trace_id": "address-qOaA9vho_m", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 13, + "question": "Есть ли долг по договору 15/24 на 2020-07-31", + "session_key": "single_13", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_13", + "status_code": 200, + "ok": true, + "elapsed_ms": 6887, + "reply_type": "partial_coverage", + "trace_id": "address-MXgSTOzyOr", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 21, + "question": "а теперь только за май 2020", + "session_key": "chain_a", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-chain_a", + "status_code": 200, + "ok": true, + "elapsed_ms": 3234, + "reply_type": "partial_coverage", + "trace_id": "address-VOI3jtsFc4", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 26, + "question": "а теперь только за май 2020", + "session_key": "chain_b", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-chain_b", + "status_code": 200, + "ok": true, + "elapsed_ms": 3046, + "reply_type": "partial_coverage", + "trace_id": "address-t8Qi4zg85b", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 35, + "question": "по свк за весь период че есть", + "session_key": "single_35", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_35", + "status_code": 200, + "ok": true, + "elapsed_ms": 9012, + "reply_type": "clarification_required", + "trace_id": "v64a_4F0yDXwY4", + "assistant_reply": "Коротко: Наиболее вероятный механизм проблемы подтвержден частично и требует первичной проверки. Что сломано:\n- Есть признаки проблемы, но без уточнений по периоду и объекту вывод ненадежен. Почему это похоже на проблему:\n- Сигнал проблемы есть, но механизм подтвержден не полностью. На чем это основано:\n- Опора частичная: часть требований покрыта не полностью.\n- Отдельно не подтверждено или покрыто частично: R1. Что проверить первым:\n- Уточните период проверки, чтобы подтвердить проблему без лишнего шума.\n- Проверьте связку документов и проводок по проблемному участку в указанном периоде.\n- Уточните период проверки (например, июль 2020). Ограничения:\n- Ни одно требование не получило подтвержденного покрытия.\n- Нет explainable-сигналов why_included в результатах выборки.\n- required anchors claim-bound grounding.\n- evidence.\n- Targeted evidence acquisition claim target path.", + "mcp_call_status": null, + "limited_reason_category": null, + "llm_decomposition_applied": null, + "llm_decomposition_reason": null, + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 36, + "question": "Покажи технические константы конфигурации", + "session_key": "single_36", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_36", + "status_code": 200, + "ok": true, + "elapsed_ms": 9691, + "reply_type": "clarification_required", + "trace_id": "M6vpWJZjHcihLB", + "assistant_reply": "Коротко: Проблема подтверждается частично; для уверенного вывода нужны уточнения. Что сломано:\n- Есть признаки проблемы, но без уточнений по периоду и объекту вывод ненадежен. Почему это похоже на проблему:\n- Сигнал проблемы есть, но механизм подтвержден не полностью. На чем это основано:\n- Опора частичная: часть требований покрыта не полностью.\n- Отдельно не подтверждено или покрыто частично: R1. Что проверить первым:\n- Уточните период проверки, чтобы подтвердить проблему без лишнего шума.\n- Проверьте связку документов и проводок по проблемному участку в указанном периоде.\n- Уточните период проверки (например, июль 2020). Ограничения:\n- Ни одно требование не получило подтвержденного покрытия.\n- Нет explainable-сигналов why_included в результатах выборки.\n- required anchors claim-bound grounding.\n- evidence.\n- Targeted evidence acquisition claim target path.", + "mcp_call_status": null, + "limited_reason_category": null, + "llm_decomposition_applied": null, + "llm_decomposition_reason": null, + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 37, + "question": "кто президент США", + "session_key": "single_37", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_37", + "status_code": 200, + "ok": true, + "elapsed_ms": 7959, + "reply_type": "clarification_required", + "trace_id": "4hphPBX8hIAOqY", + "assistant_reply": "Коротко: Наиболее вероятный механизм проблемы подтвержден частично и требует первичной проверки. Что сломано:\n- Есть признаки проблемы, но без уточнений по периоду и объекту вывод ненадежен. Почему это похоже на проблему:\n- Сигнал проблемы есть, но механизм подтвержден не полностью. На чем это основано:\n- Опора частичная: часть требований покрыта не полностью.\n- Отдельно не подтверждено или покрыто частично: R1. Что проверить первым:\n- Уточните период проверки, чтобы подтвердить проблему без лишнего шума.\n- Проверьте связку документов и проводок по проблемному участку в указанном периоде.\n- Уточните период проверки (например, июль 2020). Ограничения:\n- Ни одно требование не получило подтвержденного покрытия.\n- Нет explainable-сигналов why_included в результатах выборки.\n- required anchors claim-bound grounding.\n- evidence.\n- Targeted evidence acquisition claim target path.", + "mcp_call_status": null, + "limited_reason_category": null, + "llm_decomposition_applied": null, + "llm_decomposition_reason": null, + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 38, + "question": "Кто нам должен на 2020-12-31", + "session_key": "single_38", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_38", + "status_code": 200, + "ok": true, + "elapsed_ms": 11, + "reply_type": "partial_coverage", + "trace_id": "address-vGg7KvBPLM", + "assistant_reply": "Этот запрос не подходит под address_query V1.\nПричина: intent пока не поддержан в address V1.\nЧто нужно уточнить: переформулируйте вопрос как адресный lookup по счету/контрагенту/договору.", + "mcp_call_status": "skipped", + "limited_reason_category": "unsupported", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 42, + "question": "Покажи незакрытые договоры на 2020-12-31", + "session_key": "single_42", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_42", + "status_code": 200, + "ok": true, + "elapsed_ms": 5713, + "reply_type": "partial_coverage", + "trace_id": "address-oaX8wsSDr3", + "assistant_reply": "Для точного адресного поиска не хватает обязательного якоря.\nПричина: для open_items нужен якорь контрагента или договора.\nЧто нужно уточнить: укажите контрагента или номер/название договора.", + "mcp_call_status": "skipped", + "limited_reason_category": "missing_anchor", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 43, + "question": "Какие открытые договоры есть на 2020-12-31", + "session_key": "single_43", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_43", + "status_code": 200, + "ok": true, + "elapsed_ms": 4924, + "reply_type": "partial_coverage", + "trace_id": "address-CmLjE_XX34", + "assistant_reply": "Для точного адресного поиска не хватает обязательного якоря.\nПричина: для open_items нужен якорь контрагента или договора.\nЧто нужно уточнить: укажите контрагента или номер/название договора.", + "mcp_call_status": "skipped", + "limited_reason_category": "missing_anchor", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 44, + "question": "Покажи хвосты по контрагенту СВК на 2020-12-31", + "session_key": "single_44", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_44", + "status_code": 200, + "ok": true, + "elapsed_ms": 6656, + "reply_type": "partial_coverage", + "trace_id": "address-igBh_WmLUU", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 45, + "question": "Есть ли незакрытые позиции по договору 15/24 на 2020-12-31", + "session_key": "single_45", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_45", + "status_code": 200, + "ok": true, + "elapsed_ms": 6051, + "reply_type": "partial_coverage", + "trace_id": "address-6JB8rJvQcp", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 46, + "question": "Покажи открытые позиции по договору 15/24", + "session_key": "single_46", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_46", + "status_code": 200, + "ok": true, + "elapsed_ms": 5161, + "reply_type": "partial_coverage", + "trace_id": "address-AuGYnsHDC1", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 49, + "question": "а теперь банковские операции", + "session_key": "chain_d", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-chain_d", + "status_code": 200, + "ok": true, + "elapsed_ms": 8365, + "reply_type": "partial_coverage", + "trace_id": "address-RMFmLLemZ_", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 50, + "question": "а за весь период", + "session_key": "chain_d", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-chain_d", + "status_code": 200, + "ok": true, + "elapsed_ms": 2051, + "reply_type": "partial_coverage", + "trace_id": "address-vE8KVirQgi", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 52, + "question": "Покажи незакрытые позиции по контрагенту СВК", + "session_key": "chain_e", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-chain_e", + "status_code": 200, + "ok": true, + "elapsed_ms": 5942, + "reply_type": "partial_coverage", + "trace_id": "address-Fba2s8OLbT", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 53, + "question": "а на 2020-12-31", + "session_key": "chain_e", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-chain_e", + "status_code": 200, + "ok": true, + "elapsed_ms": 1053, + "reply_type": "partial_coverage", + "trace_id": "address-NlUK6ZbvyS", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 54, + "question": "а теперь по договору 15/24", + "session_key": "chain_e", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-chain_e", + "status_code": 200, + "ok": true, + "elapsed_ms": 7295, + "reply_type": "partial_coverage", + "trace_id": "address-Y4iOZPwOh7", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 55, + "question": "а только банковские операции", + "session_key": "chain_e", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-chain_e", + "status_code": 200, + "ok": true, + "elapsed_ms": 8213, + "reply_type": "partial_coverage", + "trace_id": "address-LtqK2g17SL", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 56, + "question": "а за май 2020", + "session_key": "chain_e", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-chain_e", + "status_code": 200, + "ok": true, + "elapsed_ms": 2957, + "reply_type": "partial_coverage", + "trace_id": "address-R6p14wCn-Z", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 60, + "question": "kto nam dolzhen na 2020-12-31", + "session_key": "single_60", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_60", + "status_code": 200, + "ok": true, + "elapsed_ms": 10891, + "reply_type": "clarification_required", + "trace_id": "IKFefEoo-lpju-", + "assistant_reply": "Коротко: Проблема подтверждается частично; для уверенного вывода нужны уточнения. Что сломано:\n- Есть признаки проблемы, но без уточнений по периоду и объекту вывод ненадежен. Почему это похоже на проблему:\n- Сигнал проблемы есть, но механизм подтвержден не полностью. На чем это основано:\n- Опора частичная: часть требований покрыта не полностью.\n- Отдельно не подтверждено или покрыто частично: R1. Что проверить первым:\n- Проверьте связку документов и проводок по проблемному участку в указанном периоде. Ограничения:\n- Якоря из вопроса без прямого подтверждения: 2020-12, period:2020-12.\n- Ни одно требование не получило подтвержденного покрытия.\n- Нет explainable-сигналов why_included в результатах выборки.\n- required anchors claim-bound grounding.\n- evidence.\n- Targeted evidence acquisition claim target path.", + "mcp_call_status": null, + "limited_reason_category": null, + "llm_decomposition_applied": null, + "llm_decomposition_reason": null, + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + } + ] +} \ No newline at end of file diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32/full_live_results.json b/docs/ADDRESS/runs/2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32/full_live_results.json new file mode 100644 index 0000000..c314182 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32/full_live_results.json @@ -0,0 +1,1290 @@ +{ + "run_id": "2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32", + "generated_at": "2026-04-02T06:18:23", + "summary": { + "run_id": "2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32", + "generated_at": "2026-04-02T06:18:23", + "source_questions_file": "docs/ADDRESS/1.txt", + "backend_url": "http://127.0.0.1:8787/api/assistant/message", + "llm_provider": "local", + "llm_base_url": "http://127.0.0.1:1234", + "llm_model": "qwen2.5-14b-instruct-1m", + "totals": { + "questions_total": 63, + "ok_200_count": 63, + "factual_count": 38, + "partial_coverage_count": 18, + "clarification_required_count": 7, + "other_reply_types_count": 0, + "http_error_count": 0, + "llm_decomposition_applied_count": 41, + "fallback_rule_hit_count": 0, + "avg_elapsed_ms": 5571.7 + }, + "distributions": { + "mcp_call_status": { + "matched_non_empty": 38, + "materialized_but_not_anchor_matched": 15, + "(null)": 7, + "skipped": 3 + }, + "limited_reason_category": { + "empty_match": 15, + "missing_anchor": 2, + "unsupported": 1 + }, + "llm_decomposition_reason": { + "normalized_fragment_applied": 41, + "not_address_like": 14, + "(null)": 7, + "normalized_fragment_same": 1 + }, + "error_code": {} + }, + "followup_sessions": { + "single_1": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_1", + "single_2": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_2", + "single_3": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_3", + "single_4": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_4", + "single_5": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_5", + "single_6": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_6", + "single_7": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_7", + "single_8": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_8", + "single_9": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_9", + "single_10": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_10", + "single_11": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_11", + "single_12": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_12", + "single_13": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_13", + "single_14": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_14", + "single_15": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_15", + "single_16": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_16", + "single_17": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_17", + "single_18": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_18", + "single_19": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_19", + "chain_a": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-chain_a", + "chain_b": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-chain_b", + "chain_c": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-chain_c", + "single_31": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_31", + "single_32": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_32", + "single_33": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_33", + "single_34": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_34", + "single_35": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_35", + "single_36": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_36", + "single_37": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_37", + "single_38": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_38", + "single_39": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_39", + "single_40": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_40", + "single_41": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_41", + "single_42": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_42", + "single_43": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_43", + "single_44": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_44", + "single_45": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_45", + "single_46": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_46", + "chain_d": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-chain_d", + "chain_e": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-chain_e", + "single_57": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_57", + "single_58": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_58", + "single_59": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_59", + "single_60": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_60" + } + }, + "rows": [ + { + "number": 1, + "question": "Цепочки `FOLLOW-UP` прогоняй в одной сессии подряд.", + "session_key": "single_1", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_1", + "status_code": 200, + "ok": true, + "elapsed_ms": 11103, + "reply_type": "clarification_required", + "trace_id": "JiVKx5ohmlt6t4", + "assistant_reply": "Коротко: Наиболее вероятный механизм проблемы подтвержден частично и требует первичной проверки. Что сломано:\n- Есть признаки проблемы, но без уточнений по периоду и объекту вывод ненадежен. Почему это похоже на проблему:\n- Сигнал проблемы есть, но механизм подтвержден не полностью. На чем это основано:\n- Опора частичная: часть требований покрыта не полностью.\n- Отдельно не подтверждено или покрыто частично: R1. Что проверить первым:\n- Уточните период проверки, чтобы подтвердить проблему без лишнего шума.\n- Проверьте связку документов и проводок по проблемному участку в указанном периоде.\n- Уточните период проверки (например, июль 2020). Ограничения:\n- Ни одно требование не получило подтвержденного покрытия.\n- Нет explainable-сигналов why_included в результатах выборки.\n- Часть контекстных токенов не подтверждена напрямую: chain.\n- required anchors claim-bound grounding.\n- evidence.", + "mcp_call_status": null, + "limited_reason_category": null, + "llm_decomposition_applied": null, + "llm_decomposition_reason": null, + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 1, + "question": "Покажи документы по СВК за 2020 год", + "session_key": "single_1", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_1", + "status_code": 200, + "ok": true, + "elapsed_ms": 5790, + "reply_type": "factual", + "trace_id": "address-snqO_X1OfL", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 2, + "question": "Блоки `SINGLE` можно гонять по отдельности.", + "session_key": "single_2", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_2", + "status_code": 200, + "ok": true, + "elapsed_ms": 8851, + "reply_type": "clarification_required", + "trace_id": "C06HaZtg0-69mc", + "assistant_reply": "Коротко: Наиболее вероятный механизм проблемы подтвержден частично и требует первичной проверки. Что сломано:\n- Есть признаки проблемы, но без уточнений по периоду и объекту вывод ненадежен. Почему это похоже на проблему:\n- Сигнал проблемы есть, но механизм подтвержден не полностью. На чем это основано:\n- Опора частичная: часть требований покрыта не полностью.\n- Отдельно не подтверждено или покрыто частично: R1. Что проверить первым:\n- Уточните период проверки, чтобы подтвердить проблему без лишнего шума.\n- Проверьте связку документов и проводок по проблемному участку в указанном периоде.\n- Уточните период проверки (например, июль 2020). Ограничения:\n- Ни одно требование не получило подтвержденного покрытия.\n- Нет explainable-сигналов why_included в результатах выборки.\n- required anchors claim-bound grounding.\n- evidence.\n- Targeted evidence acquisition claim target path.", + "mcp_call_status": null, + "limited_reason_category": null, + "llm_decomposition_applied": null, + "llm_decomposition_reason": null, + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 2, + "question": "свк доки за 20й", + "session_key": "single_2", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_2", + "status_code": 200, + "ok": true, + "elapsed_ms": 7735, + "reply_type": "partial_coverage", + "trace_id": "address-0BIB9ZIQQd", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 3, + "question": "Для проверок смотри не только ответ, но и `technical_debug_payload_json`.", + "session_key": "single_3", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_3", + "status_code": 200, + "ok": true, + "elapsed_ms": 9070, + "reply_type": "clarification_required", + "trace_id": "fMCKjmaMDLD3hf", + "assistant_reply": "Коротко: Наиболее вероятный механизм проблемы подтвержден частично и требует первичной проверки. Что сломано:\n- Есть признаки проблемы, но без уточнений по периоду и объекту вывод ненадежен. Почему это похоже на проблему:\n- Сигнал проблемы есть, но механизм подтвержден не полностью. На чем это основано:\n- Опора частичная: часть требований покрыта не полностью.\n- Отдельно не подтверждено или покрыто частично: R1. Что проверить первым:\n- Уточните период проверки, чтобы подтвердить проблему без лишнего шума.\n- Проверьте связку документов и проводок по проблемному участку в указанном периоде.\n- Уточните период проверки (например, июль 2020). Ограничения:\n- Ни одно требование не получило подтвержденного покрытия.\n- Нет explainable-сигналов why_included в результатах выборки.\n- required anchors claim-bound grounding.\n- evidence.\n- Targeted evidence acquisition claim target path.", + "mcp_call_status": null, + "limited_reason_category": null, + "llm_decomposition_applied": null, + "llm_decomposition_reason": null, + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 3, + "question": "что по свк за 2020 выведи все доки плиз", + "session_key": "single_3", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_3", + "status_code": 200, + "ok": true, + "elapsed_ms": 5923, + "reply_type": "factual", + "trace_id": "address-360s2KRRMW", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 4, + "question": "Какие документы по контрагенту СВК за весь период", + "session_key": "single_4", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_4", + "status_code": 200, + "ok": true, + "elapsed_ms": 5408, + "reply_type": "factual", + "trace_id": "address-_Vq4VFYUeU", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 26.\n1. 2021-11-10T12:00:07Z | Поступление на расчетный счет 00000000013 от 10.11.2021 12:00:07 | 0 / 0 | 20000 | аналитика: Группа\n2. 2021-09-29T12:00:03Z | Поступление на расчетный счет 00000000012 от 29.09.2021 12:00:03 | 0 / 0 | 50000 | аналитика: Группа\n3. 2021-08-31T12:00:04Z | Поступление на расчетный счет 00000000011 от 31.08.2021 12:00:04 | 0 / 0 | 120500 | аналитика: Группа\n4. 2021-06-22T12:00:00Z | Поступление на расчетный счет 00000000010 от 22.06.2021 12:00:00 | 0 / 0 | 498630 | аналитика: Группа\n5. 2021-06-09T12:00:05Z | Поступление на расчетный счет 00000000009 от 09.06.2021 12:00:05 | 0 / 0 | 418960 | аналитика: Группа\n6. 2021-04-28T12:00:08Z | Поступление на расчетный счет 00000000008 от 28.04.2021 12:00:08 | 0 / 0 | 564300 | аналитика: Группа\n7. 2021-04-22T12:00:00Z | Поступление на расчетный счет 00000000007 от 22.04.2021 12:00:00 | 0 / 0 | 982420 | аналитика: Группа\n8. 2021-04-13T12:00:11Z | Поступление на расчетный счет 00000000006 от 13.04.2021 12:00:11 | 0 / 0 | 1882400 | аналитика: Группа\n9. 2021-03-25T12:00:02Z | Поступление на расчетный счет 00000000005 от 25.03.2021 12:00:02 | 0 / 0 | 644315 | аналитика: Группа\n10. 2021-03-24T12:00:03Z | Поступление на расчетный счет 00000000004 от 24.03.2021 12:00:03 | 0 / 0 | 1219990 | аналитика: Группа\n11. 2021-03-18T12:00:00Z | Поступление на расчетный счет 00000000003 от 18.03.2021 12:00:00 | 0 / 0 | 1425310 | аналитика: Группа\n12. 2021-03-12T12:00:03Z | Поступление на расчетный счет 00000000002 от 12.03.2021 12:00:03 | 0 / 0 | 214600 | аналитика: Группа\n13. 2021-02-19T12:00:01Z | Поступление на расчетный счет 00000000001 от 19.02.2021 12:00:01 | 0 / 0 | 518600 | аналитика: Группа\n14. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n15. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n16. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа\n17. 2020-11-30T12:00:07Z | Поступление на расчетный счет 00000000041 от 30.11.2020 12:00:07 | 0 / 0 | 38900 | аналитика: Группа\n18. 2020-11-19T12:00:04Z | Поступление на расчетный счет 00000000039 от 19.11.2020 12:00:04 | 0 / 0 | 3320600 | аналитика: Группа\n19. 2020-11-18T12:00:05Z | Поступление на расчетный счет 00000000038 от 18.11.2020 12:00:05 | 0 / 0 | 745300 | аналитика: Группа\n20. 2020-11-18T12:00:04Z | Поступление на расчетный счет 00000000037 от 18.11.2020 12:00:04 | 0 / 0 | 320000 | аналитика: Группа\n21. 2020-11-13T12:00:03Z | Поступление на расчетный счет 00000000036 от 13.11.2020 12:00:03 | 0 / 0 | 313600 | аналитика: Группа\n22. 2020-11-10T15:39:13Z | Поступление на расчетный счет 00000000035 от 10.11.2020 15:39:13 | 0 / 0 | 328300 | аналитика: Группа\n23. 2020-10-26T12:00:00Z | Поступление на расчетный счет 00000000034 от 26.10.2020 12:00:00 | 0 / 0 | 175000 | аналитика: Группа\n24. 2020-08-20T12:00:06Z | Поступление на расчетный счет 00000000032 от 20.08.2020 12:00:06 | 0 / 0 | 3126005 | аналитика: Группа\n25. 2020-07-30T12:00:00Z | Поступление на расчетный счет 00000000029 от 30.07.2020 12:00:00 | 0 / 0 | 20000 | аналитика: Группа\n26. 2020-07-27T12:00:00Z | Поступление на расчетный счет 00000000028 от 27.07.2020 12:00:00 | 0 / 0 | 40860 | аналитика: Группа", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 5, + "question": "какие есть доки по свк с 2000 по 2025 год", + "session_key": "single_5", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_5", + "status_code": 200, + "ok": true, + "elapsed_ms": 9008, + "reply_type": "factual", + "trace_id": "address-6RqndH_JM8", + "assistant_reply": "По окну 2000-01-01..2025-12-31 строк не найдено; показаны ближайшие доступные данные 2020-07-27..2021-11-10.\nСобран список документов по контрагенту (live address lane).\nСтрок отобрано: 26.\n1. 2021-11-10T12:00:07Z | Поступление на расчетный счет 00000000013 от 10.11.2021 12:00:07 | 0 / 0 | 20000 | аналитика: Группа\n2. 2021-09-29T12:00:03Z | Поступление на расчетный счет 00000000012 от 29.09.2021 12:00:03 | 0 / 0 | 50000 | аналитика: Группа\n3. 2021-08-31T12:00:04Z | Поступление на расчетный счет 00000000011 от 31.08.2021 12:00:04 | 0 / 0 | 120500 | аналитика: Группа\n4. 2021-06-22T12:00:00Z | Поступление на расчетный счет 00000000010 от 22.06.2021 12:00:00 | 0 / 0 | 498630 | аналитика: Группа\n5. 2021-06-09T12:00:05Z | Поступление на расчетный счет 00000000009 от 09.06.2021 12:00:05 | 0 / 0 | 418960 | аналитика: Группа\n6. 2021-04-28T12:00:08Z | Поступление на расчетный счет 00000000008 от 28.04.2021 12:00:08 | 0 / 0 | 564300 | аналитика: Группа\n7. 2021-04-22T12:00:00Z | Поступление на расчетный счет 00000000007 от 22.04.2021 12:00:00 | 0 / 0 | 982420 | аналитика: Группа\n8. 2021-04-13T12:00:11Z | Поступление на расчетный счет 00000000006 от 13.04.2021 12:00:11 | 0 / 0 | 1882400 | аналитика: Группа\n9. 2021-03-25T12:00:02Z | Поступление на расчетный счет 00000000005 от 25.03.2021 12:00:02 | 0 / 0 | 644315 | аналитика: Группа\n10. 2021-03-24T12:00:03Z | Поступление на расчетный счет 00000000004 от 24.03.2021 12:00:03 | 0 / 0 | 1219990 | аналитика: Группа\n11. 2021-03-18T12:00:00Z | Поступление на расчетный счет 00000000003 от 18.03.2021 12:00:00 | 0 / 0 | 1425310 | аналитика: Группа\n12. 2021-03-12T12:00:03Z | Поступление на расчетный счет 00000000002 от 12.03.2021 12:00:03 | 0 / 0 | 214600 | аналитика: Группа\n13. 2021-02-19T12:00:01Z | Поступление на расчетный счет 00000000001 от 19.02.2021 12:00:01 | 0 / 0 | 518600 | аналитика: Группа\n14. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n15. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n16. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа\n17. 2020-11-30T12:00:07Z | Поступление на расчетный счет 00000000041 от 30.11.2020 12:00:07 | 0 / 0 | 38900 | аналитика: Группа\n18. 2020-11-19T12:00:04Z | Поступление на расчетный счет 00000000039 от 19.11.2020 12:00:04 | 0 / 0 | 3320600 | аналитика: Группа\n19. 2020-11-18T12:00:05Z | Поступление на расчетный счет 00000000038 от 18.11.2020 12:00:05 | 0 / 0 | 745300 | аналитика: Группа\n20. 2020-11-18T12:00:04Z | Поступление на расчетный счет 00000000037 от 18.11.2020 12:00:04 | 0 / 0 | 320000 | аналитика: Группа\n21. 2020-11-13T12:00:03Z | Поступление на расчетный счет 00000000036 от 13.11.2020 12:00:03 | 0 / 0 | 313600 | аналитика: Группа\n22. 2020-11-10T15:39:13Z | Поступление на расчетный счет 00000000035 от 10.11.2020 15:39:13 | 0 / 0 | 328300 | аналитика: Группа\n23. 2020-10-26T12:00:00Z | Поступление на расчетный счет 00000000034 от 26.10.2020 12:00:00 | 0 / 0 | 175000 | аналитика: Группа\n24. 2020-08-20T12:00:06Z | Поступление на расчетный счет 00000000032 от 20.08.2020 12:00:06 | 0 / 0 | 3126005 | аналитика: Группа\n25. 2020-07-30T12:00:00Z | Поступление на расчетный счет 00000000029 от 30.07.2020 12:00:00 | 0 / 0 | 20000 | аналитика: Группа\n26. 2020-07-27T12:00:00Z | Поступление на расчетный счет 00000000028 от 27.07.2020 12:00:00 | 0 / 0 | 40860 | аналитика: Группа", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 6, + "question": "Покажи документы по контрагенту СВК", + "session_key": "single_6", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_6", + "status_code": 200, + "ok": true, + "elapsed_ms": 6145, + "reply_type": "factual", + "trace_id": "address-gzEC4HG6OG", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 26.\n1. 2021-11-10T12:00:07Z | Поступление на расчетный счет 00000000013 от 10.11.2021 12:00:07 | 0 / 0 | 20000 | аналитика: Группа\n2. 2021-09-29T12:00:03Z | Поступление на расчетный счет 00000000012 от 29.09.2021 12:00:03 | 0 / 0 | 50000 | аналитика: Группа\n3. 2021-08-31T12:00:04Z | Поступление на расчетный счет 00000000011 от 31.08.2021 12:00:04 | 0 / 0 | 120500 | аналитика: Группа\n4. 2021-06-22T12:00:00Z | Поступление на расчетный счет 00000000010 от 22.06.2021 12:00:00 | 0 / 0 | 498630 | аналитика: Группа\n5. 2021-06-09T12:00:05Z | Поступление на расчетный счет 00000000009 от 09.06.2021 12:00:05 | 0 / 0 | 418960 | аналитика: Группа\n6. 2021-04-28T12:00:08Z | Поступление на расчетный счет 00000000008 от 28.04.2021 12:00:08 | 0 / 0 | 564300 | аналитика: Группа\n7. 2021-04-22T12:00:00Z | Поступление на расчетный счет 00000000007 от 22.04.2021 12:00:00 | 0 / 0 | 982420 | аналитика: Группа\n8. 2021-04-13T12:00:11Z | Поступление на расчетный счет 00000000006 от 13.04.2021 12:00:11 | 0 / 0 | 1882400 | аналитика: Группа\n9. 2021-03-25T12:00:02Z | Поступление на расчетный счет 00000000005 от 25.03.2021 12:00:02 | 0 / 0 | 644315 | аналитика: Группа\n10. 2021-03-24T12:00:03Z | Поступление на расчетный счет 00000000004 от 24.03.2021 12:00:03 | 0 / 0 | 1219990 | аналитика: Группа\n11. 2021-03-18T12:00:00Z | Поступление на расчетный счет 00000000003 от 18.03.2021 12:00:00 | 0 / 0 | 1425310 | аналитика: Группа\n12. 2021-03-12T12:00:03Z | Поступление на расчетный счет 00000000002 от 12.03.2021 12:00:03 | 0 / 0 | 214600 | аналитика: Группа\n13. 2021-02-19T12:00:01Z | Поступление на расчетный счет 00000000001 от 19.02.2021 12:00:01 | 0 / 0 | 518600 | аналитика: Группа\n14. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n15. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n16. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа\n17. 2020-11-30T12:00:07Z | Поступление на расчетный счет 00000000041 от 30.11.2020 12:00:07 | 0 / 0 | 38900 | аналитика: Группа\n18. 2020-11-19T12:00:04Z | Поступление на расчетный счет 00000000039 от 19.11.2020 12:00:04 | 0 / 0 | 3320600 | аналитика: Группа\n19. 2020-11-18T12:00:05Z | Поступление на расчетный счет 00000000038 от 18.11.2020 12:00:05 | 0 / 0 | 745300 | аналитика: Группа\n20. 2020-11-18T12:00:04Z | Поступление на расчетный счет 00000000037 от 18.11.2020 12:00:04 | 0 / 0 | 320000 | аналитика: Группа\n21. 2020-11-13T12:00:03Z | Поступление на расчетный счет 00000000036 от 13.11.2020 12:00:03 | 0 / 0 | 313600 | аналитика: Группа\n22. 2020-11-10T15:39:13Z | Поступление на расчетный счет 00000000035 от 10.11.2020 15:39:13 | 0 / 0 | 328300 | аналитика: Группа\n23. 2020-10-26T12:00:00Z | Поступление на расчетный счет 00000000034 от 26.10.2020 12:00:00 | 0 / 0 | 175000 | аналитика: Группа\n24. 2020-08-20T12:00:06Z | Поступление на расчетный счет 00000000032 от 20.08.2020 12:00:06 | 0 / 0 | 3126005 | аналитика: Группа\n25. 2020-07-30T12:00:00Z | Поступление на расчетный счет 00000000029 от 30.07.2020 12:00:00 | 0 / 0 | 20000 | аналитика: Группа\n26. 2020-07-27T12:00:00Z | Поступление на расчетный счет 00000000028 от 27.07.2020 12:00:00 | 0 / 0 | 40860 | аналитика: Группа", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 7, + "question": "Покажи банковские операции по СВК за 2020", + "session_key": "single_7", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_7", + "status_code": 200, + "ok": true, + "elapsed_ms": 9179, + "reply_type": "partial_coverage", + "trace_id": "address-qOaA9vho_m", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 8, + "question": "Какие платежи по СВК в 2020", + "session_key": "single_8", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_8", + "status_code": 200, + "ok": true, + "elapsed_ms": 6826, + "reply_type": "factual", + "trace_id": "address-xiDfTcuVG2", + "assistant_reply": "Собран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 9, + "question": "Покажи банковские операции по контрагенту СВК за весь период", + "session_key": "single_9", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_9", + "status_code": 200, + "ok": true, + "elapsed_ms": 5277, + "reply_type": "factual", + "trace_id": "address-sTozGxbtgL", + "assistant_reply": "Собран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 26.\n1. 2021-11-10T12:00:07Z | Поступление на расчетный счет 00000000013 от 10.11.2021 12:00:07 | 0 / 0 | 20000 | аналитика: Группа\n2. 2021-09-29T12:00:03Z | Поступление на расчетный счет 00000000012 от 29.09.2021 12:00:03 | 0 / 0 | 50000 | аналитика: Группа\n3. 2021-08-31T12:00:04Z | Поступление на расчетный счет 00000000011 от 31.08.2021 12:00:04 | 0 / 0 | 120500 | аналитика: Группа\n4. 2021-06-22T12:00:00Z | Поступление на расчетный счет 00000000010 от 22.06.2021 12:00:00 | 0 / 0 | 498630 | аналитика: Группа\n5. 2021-06-09T12:00:05Z | Поступление на расчетный счет 00000000009 от 09.06.2021 12:00:05 | 0 / 0 | 418960 | аналитика: Группа\n6. 2021-04-28T12:00:08Z | Поступление на расчетный счет 00000000008 от 28.04.2021 12:00:08 | 0 / 0 | 564300 | аналитика: Группа\n7. 2021-04-22T12:00:00Z | Поступление на расчетный счет 00000000007 от 22.04.2021 12:00:00 | 0 / 0 | 982420 | аналитика: Группа\n8. 2021-04-13T12:00:11Z | Поступление на расчетный счет 00000000006 от 13.04.2021 12:00:11 | 0 / 0 | 1882400 | аналитика: Группа\n9. 2021-03-25T12:00:02Z | Поступление на расчетный счет 00000000005 от 25.03.2021 12:00:02 | 0 / 0 | 644315 | аналитика: Группа\n10. 2021-03-24T12:00:03Z | Поступление на расчетный счет 00000000004 от 24.03.2021 12:00:03 | 0 / 0 | 1219990 | аналитика: Группа\n11. 2021-03-18T12:00:00Z | Поступление на расчетный счет 00000000003 от 18.03.2021 12:00:00 | 0 / 0 | 1425310 | аналитика: Группа\n12. 2021-03-12T12:00:03Z | Поступление на расчетный счет 00000000002 от 12.03.2021 12:00:03 | 0 / 0 | 214600 | аналитика: Группа\n13. 2021-02-19T12:00:01Z | Поступление на расчетный счет 00000000001 от 19.02.2021 12:00:01 | 0 / 0 | 518600 | аналитика: Группа\n14. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n15. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n16. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа\n17. 2020-11-30T12:00:07Z | Поступление на расчетный счет 00000000041 от 30.11.2020 12:00:07 | 0 / 0 | 38900 | аналитика: Группа\n18. 2020-11-19T12:00:04Z | Поступление на расчетный счет 00000000039 от 19.11.2020 12:00:04 | 0 / 0 | 3320600 | аналитика: Группа\n19. 2020-11-18T12:00:05Z | Поступление на расчетный счет 00000000038 от 18.11.2020 12:00:05 | 0 / 0 | 745300 | аналитика: Группа\n20. 2020-11-18T12:00:04Z | Поступление на расчетный счет 00000000037 от 18.11.2020 12:00:04 | 0 / 0 | 320000 | аналитика: Группа\n21. 2020-11-13T12:00:03Z | Поступление на расчетный счет 00000000036 от 13.11.2020 12:00:03 | 0 / 0 | 313600 | аналитика: Группа\n22. 2020-11-10T15:39:13Z | Поступление на расчетный счет 00000000035 от 10.11.2020 15:39:13 | 0 / 0 | 328300 | аналитика: Группа\n23. 2020-10-26T12:00:00Z | Поступление на расчетный счет 00000000034 от 26.10.2020 12:00:00 | 0 / 0 | 175000 | аналитика: Группа\n24. 2020-08-20T12:00:06Z | Поступление на расчетный счет 00000000032 от 20.08.2020 12:00:06 | 0 / 0 | 3126005 | аналитика: Группа\n25. 2020-07-30T12:00:00Z | Поступление на расчетный счет 00000000029 от 30.07.2020 12:00:00 | 0 / 0 | 20000 | аналитика: Группа\n26. 2020-07-27T12:00:00Z | Поступление на расчетный счет 00000000028 от 27.07.2020 12:00:00 | 0 / 0 | 40860 | аналитика: Группа", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 10, + "question": "Покажи документы по договору 15/24 за 2020", + "session_key": "single_10", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_10", + "status_code": 200, + "ok": true, + "elapsed_ms": 7144, + "reply_type": "factual", + "trace_id": "address-r3QvZPVDb5", + "assistant_reply": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-08-31T15:00:06Z | Поступление товаров и услуг 00000000024 от 31.08.2020 15:00:06 | 19.04 / 76.05 | 233.33\n2. 2020-08-31T15:00:06Z | Поступление товаров и услуг 00000000024 от 31.08.2020 15:00:06 | 44.01 / 76.05 | 1166.67", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 11, + "question": "Покажи документы по договору 15/24", + "session_key": "single_11", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_11", + "status_code": 200, + "ok": true, + "elapsed_ms": 6183, + "reply_type": "factual", + "trace_id": "address-w5S-ElQ_80", + "assistant_reply": "Документный фильтр в live дал пустой набор; показываю связанные банковские операции по договору.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 12, + "question": "Покажи банковские операции по договору 15/24", + "session_key": "single_12", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_12", + "status_code": 200, + "ok": true, + "elapsed_ms": 6014, + "reply_type": "factual", + "trace_id": "address-vFUK43v0jg", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 3.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53\n3. 2020-08-31T15:00:04Z | Списание с расчетного счета 00000000224 от 31.08.2020 15:00:04 | 91.02 / 51 | 106.47", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 13, + "question": "Есть ли долг по договору 15/24 на 2020-07-31", + "session_key": "single_13", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_13", + "status_code": 200, + "ok": true, + "elapsed_ms": 6887, + "reply_type": "partial_coverage", + "trace_id": "address-MXgSTOzyOr", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 14, + "question": "Покажи операции по договору 15/24 за весь период", + "session_key": "single_14", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_14", + "status_code": 200, + "ok": true, + "elapsed_ms": 5388, + "reply_type": "factual", + "trace_id": "address-FuQHzx8kAK", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 15, + "question": "Покажи сальдо по счету 60.01 на дату 2020-07-31", + "session_key": "single_15", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_15", + "status_code": 200, + "ok": true, + "elapsed_ms": 5829, + "reply_type": "factual", + "trace_id": "address-RKrgMr4vk3", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 5.\nСумма по отобранным движениям: 216200.\n1. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400\n2. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600\n3. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400\n4. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 16, + "question": "Какой остаток по счету 60 на 2020.05", + "session_key": "single_16", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_16", + "status_code": 200, + "ok": true, + "elapsed_ms": 4976, + "reply_type": "factual", + "trace_id": "address-Y2D8j3wL6h", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 6.\nСумма по отобранным движениям: 849499.\n1. 2020-05-22T10:14:43Z | Списание с расчетного счета 00000000148 от 22.05.2020 10:14:43 | 60.02 / 51 | 142299\n2. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 75367\n3. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 211833\n4. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 187967", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 17, + "question": "Какой остаток по счету 60 на 2020 май", + "session_key": "single_17", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_17", + "status_code": 200, + "ok": true, + "elapsed_ms": 5120, + "reply_type": "factual", + "trace_id": "address-4JGRg0QmPO", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 6.\nСумма по отобранным движениям: 849499.\n1. 2020-05-22T10:14:43Z | Списание с расчетного счета 00000000148 от 22.05.2020 10:14:43 | 60.02 / 51 | 142299\n2. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 75367\n3. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 211833\n4. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 187967", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 18, + "question": "Какие документы формируют остаток по счету 60.01 на 2020-07-31", + "session_key": "single_18", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_18", + "status_code": 200, + "ok": true, + "elapsed_ms": 6106, + "reply_type": "factual", + "trace_id": "address-_I2uPW9XnQ", + "assistant_reply": "Собран drilldown документов, формирующих остаток по счету на указанную дату.\nДокументных строк отобрано: 5.\nСумма по отобранным движениям: 216200.\n1. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400\n2. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600\n3. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400\n4. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200\n5. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 7600\nМожно уточнить выборку по контрагенту, договору или периоду.", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 19, + "question": "Какой остаток по счету 62 на сегодня", + "session_key": "single_19", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_19", + "status_code": 200, + "ok": true, + "elapsed_ms": 5181, + "reply_type": "factual", + "trace_id": "address-SA6ZxdBa-m", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 200.\nСумма по отобранным движениям: 63309907.220000006.\n1. 2022-01-20T12:00:02Z | Списание с расчетного счета 00000000004 от 20.01.2022 12:00:02 | 62.02 / 51 | 1808325\n2. 2022-01-20T12:00:02Z | Списание с расчетного счета 00000000004 от 20.01.2022 12:00:02 | 62.02 / 51 | 216600\n3. 2022-01-20T12:00:02Z | Списание с расчетного счета 00000000004 от 20.01.2022 12:00:02 | 62.02 / 51 | 104726\n4. 2021-11-10T12:00:07Z | Поступление на расчетный счет 00000000013 от 10.11.2021 12:00:07 | 51 / 62.02 | 20000", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 20, + "question": "Покажи документы по СВК за 2020", + "session_key": "chain_a", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-chain_a", + "status_code": 200, + "ok": true, + "elapsed_ms": 6005, + "reply_type": "factual", + "trace_id": "address-MbThj5ODxz", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 21, + "question": "а теперь только за май 2020", + "session_key": "chain_a", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-chain_a", + "status_code": 200, + "ok": true, + "elapsed_ms": 3234, + "reply_type": "partial_coverage", + "trace_id": "address-VOI3jtsFc4", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 22, + "question": "а за все время?", + "session_key": "chain_a", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-chain_a", + "status_code": 200, + "ok": true, + "elapsed_ms": 1010, + "reply_type": "factual", + "trace_id": "address-VWTSSTQHp-", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 26.\n1. 2021-11-10T12:00:07Z | Поступление на расчетный счет 00000000013 от 10.11.2021 12:00:07 | 0 / 0 | 20000 | аналитика: Группа\n2. 2021-09-29T12:00:03Z | Поступление на расчетный счет 00000000012 от 29.09.2021 12:00:03 | 0 / 0 | 50000 | аналитика: Группа\n3. 2021-08-31T12:00:04Z | Поступление на расчетный счет 00000000011 от 31.08.2021 12:00:04 | 0 / 0 | 120500 | аналитика: Группа\n4. 2021-06-22T12:00:00Z | Поступление на расчетный счет 00000000010 от 22.06.2021 12:00:00 | 0 / 0 | 498630 | аналитика: Группа\n5. 2021-06-09T12:00:05Z | Поступление на расчетный счет 00000000009 от 09.06.2021 12:00:05 | 0 / 0 | 418960 | аналитика: Группа\n6. 2021-04-28T12:00:08Z | Поступление на расчетный счет 00000000008 от 28.04.2021 12:00:08 | 0 / 0 | 564300 | аналитика: Группа\n7. 2021-04-22T12:00:00Z | Поступление на расчетный счет 00000000007 от 22.04.2021 12:00:00 | 0 / 0 | 982420 | аналитика: Группа\n8. 2021-04-13T12:00:11Z | Поступление на расчетный счет 00000000006 от 13.04.2021 12:00:11 | 0 / 0 | 1882400 | аналитика: Группа\n9. 2021-03-25T12:00:02Z | Поступление на расчетный счет 00000000005 от 25.03.2021 12:00:02 | 0 / 0 | 644315 | аналитика: Группа\n10. 2021-03-24T12:00:03Z | Поступление на расчетный счет 00000000004 от 24.03.2021 12:00:03 | 0 / 0 | 1219990 | аналитика: Группа\n11. 2021-03-18T12:00:00Z | Поступление на расчетный счет 00000000003 от 18.03.2021 12:00:00 | 0 / 0 | 1425310 | аналитика: Группа\n12. 2021-03-12T12:00:03Z | Поступление на расчетный счет 00000000002 от 12.03.2021 12:00:03 | 0 / 0 | 214600 | аналитика: Группа\n13. 2021-02-19T12:00:01Z | Поступление на расчетный счет 00000000001 от 19.02.2021 12:00:01 | 0 / 0 | 518600 | аналитика: Группа\n14. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n15. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n16. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа\n17. 2020-11-30T12:00:07Z | Поступление на расчетный счет 00000000041 от 30.11.2020 12:00:07 | 0 / 0 | 38900 | аналитика: Группа\n18. 2020-11-19T12:00:04Z | Поступление на расчетный счет 00000000039 от 19.11.2020 12:00:04 | 0 / 0 | 3320600 | аналитика: Группа\n19. 2020-11-18T12:00:05Z | Поступление на расчетный счет 00000000038 от 18.11.2020 12:00:05 | 0 / 0 | 745300 | аналитика: Группа\n20. 2020-11-18T12:00:04Z | Поступление на расчетный счет 00000000037 от 18.11.2020 12:00:04 | 0 / 0 | 320000 | аналитика: Группа\n21. 2020-11-13T12:00:03Z | Поступление на расчетный счет 00000000036 от 13.11.2020 12:00:03 | 0 / 0 | 313600 | аналитика: Группа\n22. 2020-11-10T15:39:13Z | Поступление на расчетный счет 00000000035 от 10.11.2020 15:39:13 | 0 / 0 | 328300 | аналитика: Группа\n23. 2020-10-26T12:00:00Z | Поступление на расчетный счет 00000000034 от 26.10.2020 12:00:00 | 0 / 0 | 175000 | аналитика: Группа\n24. 2020-08-20T12:00:06Z | Поступление на расчетный счет 00000000032 от 20.08.2020 12:00:06 | 0 / 0 | 3126005 | аналитика: Группа\n25. 2020-07-30T12:00:00Z | Поступление на расчетный счет 00000000029 от 30.07.2020 12:00:00 | 0 / 0 | 20000 | аналитика: Группа\n26. 2020-07-27T12:00:00Z | Поступление на расчетный счет 00000000028 от 27.07.2020 12:00:00 | 0 / 0 | 40860 | аналитика: Группа", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 23, + "question": "а по счету 60.01 на ту же дату", + "session_key": "chain_a", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-chain_a", + "status_code": 200, + "ok": true, + "elapsed_ms": 5954, + "reply_type": "factual", + "trace_id": "address-wRrkkqjS9Z", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 200.\nСумма по отобранным движениям: 31878451.5.\n1. 2022-04-18T12:00:00Z | Поступление товаров и услуг 00000000007 от 18.04.2022 12:00:00 | 97.21 / 60.01 | 14790\n2. 2022-04-18T12:00:00Z | Поступление товаров и услуг 00000000007 от 18.04.2022 12:00:00 | 60.01 / 60.02 | 14790\n3. 2022-01-20T12:00:01Z | Списание с расчетного счета 00000000003 от 20.01.2022 12:00:01 | 60.01 / 51 | 1705109.5\n4. 2021-05-17T12:00:00Z | Поступление товаров и услуг 00000000009 от 17.05.2021 12:00:00 | 19.04 / 60.01 | 12000", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 24, + "question": "Покажи банковские операции по договору 15/24", + "session_key": "chain_b", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-chain_b", + "status_code": 200, + "ok": true, + "elapsed_ms": 6341, + "reply_type": "factual", + "trace_id": "address-OHO_bjNQCR", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 3.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53\n3. 2020-08-31T15:00:04Z | Списание с расчетного счета 00000000224 от 31.08.2020 15:00:04 | 91.02 / 51 | 106.47", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 25, + "question": "а за 2020 год", + "session_key": "chain_b", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-chain_b", + "status_code": 200, + "ok": true, + "elapsed_ms": 1938, + "reply_type": "factual", + "trace_id": "address-XYZR1auZ0b", + "assistant_reply": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.\nСобран список банковских операций по договору (live address lane).\nСтрок отобрано: 3.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53\n3. 2020-08-31T15:00:04Z | Списание с расчетного счета 00000000224 от 31.08.2020 15:00:04 | 91.02 / 51 | 106.47", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 26, + "question": "а теперь только за май 2020", + "session_key": "chain_b", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-chain_b", + "status_code": 200, + "ok": true, + "elapsed_ms": 3046, + "reply_type": "partial_coverage", + "trace_id": "address-t8Qi4zg85b", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 27, + "question": "а по счету 51 на ту же дату", + "session_key": "chain_b", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-chain_b", + "status_code": 200, + "ok": true, + "elapsed_ms": 5956, + "reply_type": "factual", + "trace_id": "address-okS8WiitRn", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 24.\nСумма по отобранным движениям: 2234531.1100000003.\n1. 2020-05-29T12:00:02Z | Списание с расчетного счета 00000000151 от 29.05.2020 12:00:02 | 91.02 / 51 | 60\n2. 2020-05-28T20:17:50Z | Списание с расчетного счета 00000000150 от 28.05.2020 20:17:50 | 70 / 51 | 50\n3. 2020-05-28T20:17:24Z | Списание с расчетного счета 00000000149 от 28.05.2020 20:17:24 | 91.02 / 51 | 35\n4. 2020-05-22T10:14:43Z | Списание с расчетного счета 00000000148 от 22.05.2020 10:14:43 | 60.02 / 51 | 142299", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 28, + "question": "Какой остаток по счету 60 на 2020.05", + "session_key": "chain_c", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-chain_c", + "status_code": 200, + "ok": true, + "elapsed_ms": 5041, + "reply_type": "factual", + "trace_id": "address-A8HEkt-vhE", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 6.\nСумма по отобранным движениям: 849499.\n1. 2020-05-22T10:14:43Z | Списание с расчетного счета 00000000148 от 22.05.2020 10:14:43 | 60.02 / 51 | 142299\n2. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 75367\n3. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 211833\n4. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 187967", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 29, + "question": "а теперь по 60.01", + "session_key": "chain_c", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-chain_c", + "status_code": 200, + "ok": true, + "elapsed_ms": 984, + "reply_type": "factual", + "trace_id": "address-Wpyvwvwm5A", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 6.\nСумма по отобранным движениям: 849499.\n1. 2020-05-22T10:14:43Z | Списание с расчетного счета 00000000148 от 22.05.2020 10:14:43 | 60.02 / 51 | 142299\n2. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 75367\n3. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 211833\n4. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 187967", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 30, + "question": "а на ту же дату по 62", + "session_key": "chain_c", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-chain_c", + "status_code": 200, + "ok": true, + "elapsed_ms": 1052, + "reply_type": "factual", + "trace_id": "address-iQAFHoLeNE", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 6.\nСумма по отобранным движениям: 849499.\n1. 2020-05-22T10:14:43Z | Списание с расчетного счета 00000000148 от 22.05.2020 10:14:43 | 60.02 / 51 | 142299\n2. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 75367\n3. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 211833\n4. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 187967", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 31, + "question": "бля епт покажи доки по свк за 20й", + "session_key": "single_31", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_31", + "status_code": 200, + "ok": true, + "elapsed_ms": 7065, + "reply_type": "factual", + "trace_id": "address-pUrZcei1Lj", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 32, + "question": "свк 20 год - покажи доки плс", + "session_key": "single_32", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_32", + "status_code": 200, + "ok": true, + "elapsed_ms": 6096, + "reply_type": "factual", + "trace_id": "address-N46-SIv4mJ", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 33, + "question": "покажи банк опер по дог 15/24 пж", + "session_key": "single_33", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_33", + "status_code": 200, + "ok": true, + "elapsed_ms": 6334, + "reply_type": "factual", + "trace_id": "address-7DDrFz6c2J", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 34, + "question": "остаток 60 на 2020 май покеж", + "session_key": "single_34", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_34", + "status_code": 200, + "ok": true, + "elapsed_ms": 5876, + "reply_type": "factual", + "trace_id": "address-thLZCRrRAy", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 6.\nСумма по отобранным движениям: 849499.\n1. 2020-05-22T10:14:43Z | Списание с расчетного счета 00000000148 от 22.05.2020 10:14:43 | 60.02 / 51 | 142299\n2. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 75367\n3. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 211833\n4. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 187967", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 35, + "question": "по свк за весь период че есть", + "session_key": "single_35", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_35", + "status_code": 200, + "ok": true, + "elapsed_ms": 9012, + "reply_type": "clarification_required", + "trace_id": "v64a_4F0yDXwY4", + "assistant_reply": "Коротко: Наиболее вероятный механизм проблемы подтвержден частично и требует первичной проверки. Что сломано:\n- Есть признаки проблемы, но без уточнений по периоду и объекту вывод ненадежен. Почему это похоже на проблему:\n- Сигнал проблемы есть, но механизм подтвержден не полностью. На чем это основано:\n- Опора частичная: часть требований покрыта не полностью.\n- Отдельно не подтверждено или покрыто частично: R1. Что проверить первым:\n- Уточните период проверки, чтобы подтвердить проблему без лишнего шума.\n- Проверьте связку документов и проводок по проблемному участку в указанном периоде.\n- Уточните период проверки (например, июль 2020). Ограничения:\n- Ни одно требование не получило подтвержденного покрытия.\n- Нет explainable-сигналов why_included в результатах выборки.\n- required anchors claim-bound grounding.\n- evidence.\n- Targeted evidence acquisition claim target path.", + "mcp_call_status": null, + "limited_reason_category": null, + "llm_decomposition_applied": null, + "llm_decomposition_reason": null, + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 36, + "question": "Покажи технические константы конфигурации", + "session_key": "single_36", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_36", + "status_code": 200, + "ok": true, + "elapsed_ms": 9691, + "reply_type": "clarification_required", + "trace_id": "M6vpWJZjHcihLB", + "assistant_reply": "Коротко: Проблема подтверждается частично; для уверенного вывода нужны уточнения. Что сломано:\n- Есть признаки проблемы, но без уточнений по периоду и объекту вывод ненадежен. Почему это похоже на проблему:\n- Сигнал проблемы есть, но механизм подтвержден не полностью. На чем это основано:\n- Опора частичная: часть требований покрыта не полностью.\n- Отдельно не подтверждено или покрыто частично: R1. Что проверить первым:\n- Уточните период проверки, чтобы подтвердить проблему без лишнего шума.\n- Проверьте связку документов и проводок по проблемному участку в указанном периоде.\n- Уточните период проверки (например, июль 2020). Ограничения:\n- Ни одно требование не получило подтвержденного покрытия.\n- Нет explainable-сигналов why_included в результатах выборки.\n- required anchors claim-bound grounding.\n- evidence.\n- Targeted evidence acquisition claim target path.", + "mcp_call_status": null, + "limited_reason_category": null, + "llm_decomposition_applied": null, + "llm_decomposition_reason": null, + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 37, + "question": "кто президент США", + "session_key": "single_37", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_37", + "status_code": 200, + "ok": true, + "elapsed_ms": 7959, + "reply_type": "clarification_required", + "trace_id": "4hphPBX8hIAOqY", + "assistant_reply": "Коротко: Наиболее вероятный механизм проблемы подтвержден частично и требует первичной проверки. Что сломано:\n- Есть признаки проблемы, но без уточнений по периоду и объекту вывод ненадежен. Почему это похоже на проблему:\n- Сигнал проблемы есть, но механизм подтвержден не полностью. На чем это основано:\n- Опора частичная: часть требований покрыта не полностью.\n- Отдельно не подтверждено или покрыто частично: R1. Что проверить первым:\n- Уточните период проверки, чтобы подтвердить проблему без лишнего шума.\n- Проверьте связку документов и проводок по проблемному участку в указанном периоде.\n- Уточните период проверки (например, июль 2020). Ограничения:\n- Ни одно требование не получило подтвержденного покрытия.\n- Нет explainable-сигналов why_included в результатах выборки.\n- required anchors claim-bound grounding.\n- evidence.\n- Targeted evidence acquisition claim target path.", + "mcp_call_status": null, + "limited_reason_category": null, + "llm_decomposition_applied": null, + "llm_decomposition_reason": null, + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 38, + "question": "Кто нам должен на 2020-12-31", + "session_key": "single_38", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_38", + "status_code": 200, + "ok": true, + "elapsed_ms": 11, + "reply_type": "partial_coverage", + "trace_id": "address-vGg7KvBPLM", + "assistant_reply": "Этот запрос не подходит под address_query V1.\nПричина: intent пока не поддержан в address V1.\nЧто нужно уточнить: переформулируйте вопрос как адресный lookup по счету/контрагенту/договору.", + "mcp_call_status": "skipped", + "limited_reason_category": "unsupported", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 39, + "question": "Кому мы должны на 2020-12-31", + "session_key": "single_39", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_39", + "status_code": 200, + "ok": true, + "elapsed_ms": 817, + "reply_type": "factual", + "trace_id": "address-rOA2Zn3kJb", + "assistant_reply": "Срез обязательств (payables) собран по движениям с account scope 60/76.\nСтрок отобрано: 20.\n1. 2020-12-31T23:59:59Z | Формирование записей книги покупок 00000000004 от 31.12.2020 23:59:59 | 68.02 / 19.09 | 127216.46\n2. 2020-12-31T23:59:59Z | Формирование записей книги покупок 00000000004 от 31.12.2020 23:59:59 | 68.02 / 19.09 | 235682.42\n3. 2020-12-31T23:59:59Z | Формирование записей книги покупок 00000000004 от 31.12.2020 23:59:59 | 68.02 / 19.09 | 337318.8\n4. 2020-12-31T23:59:59Z | Регламентная операция 00000000097 от 31.12.2020 23:59:59 | 91.09 / 91.02 | 10615989.53\n5. 2020-12-31T23:59:59Z | Регламентная операция 00000000097 от 31.12.2020 23:59:59 | 91.01 / 91.09 | 1614344.98\n6. 2020-12-31T23:59:59Z | Регламентная операция 00000000097 от 31.12.2020 23:59:59 | 90.09 / 90.02.1 | 6430415.34", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 40, + "question": "Покажи дебиторскую задолженность за 2020", + "session_key": "single_40", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_40", + "status_code": 200, + "ok": true, + "elapsed_ms": 1002, + "reply_type": "factual", + "trace_id": "address-6KncUmKor2", + "assistant_reply": "Срез требований (receivables) собран по движениям с account scope 62/76.\nСтрок отобрано: 20.\n1. 2020-12-31T23:59:59Z | Формирование записей книги покупок 00000000004 от 31.12.2020 23:59:59 | 68.02 / 19.09 | 127216.46\n2. 2020-12-31T23:59:59Z | Формирование записей книги покупок 00000000004 от 31.12.2020 23:59:59 | 68.02 / 19.09 | 235682.42\n3. 2020-12-31T23:59:59Z | Формирование записей книги покупок 00000000004 от 31.12.2020 23:59:59 | 68.02 / 19.09 | 337318.8\n4. 2020-12-31T23:59:59Z | Регламентная операция 00000000097 от 31.12.2020 23:59:59 | 91.09 / 91.02 | 10615989.53\n5. 2020-12-31T23:59:59Z | Регламентная операция 00000000097 от 31.12.2020 23:59:59 | 91.01 / 91.09 | 1614344.98\n6. 2020-12-31T23:59:59Z | Регламентная операция 00000000097 от 31.12.2020 23:59:59 | 90.09 / 90.02.1 | 6430415.34", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 41, + "question": "Покажи кредиторскую задолженность за 2020", + "session_key": "single_41", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_41", + "status_code": 200, + "ok": true, + "elapsed_ms": 1010, + "reply_type": "factual", + "trace_id": "address-qNMxzGaQar", + "assistant_reply": "Срез обязательств (payables) собран по движениям с account scope 60/76.\nСтрок отобрано: 20.\n1. 2020-12-31T23:59:59Z | Формирование записей книги покупок 00000000004 от 31.12.2020 23:59:59 | 68.02 / 19.09 | 127216.46\n2. 2020-12-31T23:59:59Z | Формирование записей книги покупок 00000000004 от 31.12.2020 23:59:59 | 68.02 / 19.09 | 235682.42\n3. 2020-12-31T23:59:59Z | Формирование записей книги покупок 00000000004 от 31.12.2020 23:59:59 | 68.02 / 19.09 | 337318.8\n4. 2020-12-31T23:59:59Z | Регламентная операция 00000000097 от 31.12.2020 23:59:59 | 91.09 / 91.02 | 10615989.53\n5. 2020-12-31T23:59:59Z | Регламентная операция 00000000097 от 31.12.2020 23:59:59 | 91.01 / 91.09 | 1614344.98\n6. 2020-12-31T23:59:59Z | Регламентная операция 00000000097 от 31.12.2020 23:59:59 | 90.09 / 90.02.1 | 6430415.34", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 42, + "question": "Покажи незакрытые договоры на 2020-12-31", + "session_key": "single_42", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_42", + "status_code": 200, + "ok": true, + "elapsed_ms": 5713, + "reply_type": "partial_coverage", + "trace_id": "address-oaX8wsSDr3", + "assistant_reply": "Для точного адресного поиска не хватает обязательного якоря.\nПричина: для open_items нужен якорь контрагента или договора.\nЧто нужно уточнить: укажите контрагента или номер/название договора.", + "mcp_call_status": "skipped", + "limited_reason_category": "missing_anchor", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 43, + "question": "Какие открытые договоры есть на 2020-12-31", + "session_key": "single_43", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_43", + "status_code": 200, + "ok": true, + "elapsed_ms": 4924, + "reply_type": "partial_coverage", + "trace_id": "address-CmLjE_XX34", + "assistant_reply": "Для точного адресного поиска не хватает обязательного якоря.\nПричина: для open_items нужен якорь контрагента или договора.\nЧто нужно уточнить: укажите контрагента или номер/название договора.", + "mcp_call_status": "skipped", + "limited_reason_category": "missing_anchor", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 44, + "question": "Покажи хвосты по контрагенту СВК на 2020-12-31", + "session_key": "single_44", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_44", + "status_code": 200, + "ok": true, + "elapsed_ms": 6656, + "reply_type": "partial_coverage", + "trace_id": "address-igBh_WmLUU", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 45, + "question": "Есть ли незакрытые позиции по договору 15/24 на 2020-12-31", + "session_key": "single_45", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_45", + "status_code": 200, + "ok": true, + "elapsed_ms": 6051, + "reply_type": "partial_coverage", + "trace_id": "address-6JB8rJvQcp", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 46, + "question": "Покажи открытые позиции по договору 15/24", + "session_key": "single_46", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_46", + "status_code": 200, + "ok": true, + "elapsed_ms": 5161, + "reply_type": "partial_coverage", + "trace_id": "address-AuGYnsHDC1", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 47, + "question": "Покажи документы по контрагенту СВК за 2020", + "session_key": "chain_d", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-chain_d", + "status_code": 200, + "ok": true, + "elapsed_ms": 6085, + "reply_type": "factual", + "trace_id": "address-KRqUtVhqHK", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 48, + "question": "а только за июль 2020", + "session_key": "chain_d", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-chain_d", + "status_code": 200, + "ok": true, + "elapsed_ms": 998, + "reply_type": "factual", + "trace_id": "address-Z7qn8OsoVH", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 2.\n1. 2020-07-30T12:00:00Z | Поступление на расчетный счет 00000000029 от 30.07.2020 12:00:00 | 0 / 0 | 20000 | аналитика: Группа\n2. 2020-07-27T12:00:00Z | Поступление на расчетный счет 00000000028 от 27.07.2020 12:00:00 | 0 / 0 | 40860 | аналитика: Группа", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 49, + "question": "а теперь банковские операции", + "session_key": "chain_d", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-chain_d", + "status_code": 200, + "ok": true, + "elapsed_ms": 8365, + "reply_type": "partial_coverage", + "trace_id": "address-RMFmLLemZ_", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 50, + "question": "а за весь период", + "session_key": "chain_d", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-chain_d", + "status_code": 200, + "ok": true, + "elapsed_ms": 2051, + "reply_type": "partial_coverage", + "trace_id": "address-vE8KVirQgi", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 51, + "question": "а сальдо по счету 51 на ту же дату", + "session_key": "chain_d", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-chain_d", + "status_code": 200, + "ok": true, + "elapsed_ms": 5991, + "reply_type": "factual", + "trace_id": "address--oy6STrmZB", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 200.\nСумма по отобранным движениям: 28075894.400000002.\n1. 2022-10-03T12:00:00Z | Списание с расчетного счета 00000000018 от 03.10.2022 12:00:00 | 76.03 / 51 | 355.2\n2. 2022-08-10T12:00:00Z | Списание с расчетного счета 00000000017 от 10.08.2022 12:00:00 | 91.02 / 51 | 990\n3. 2022-07-28T12:00:00Z | Списание с расчетного счета 00000000016 от 28.07.2022 12:00:00 | 69.11 / 51 | 1000\n4. 2022-07-11T12:00:00Z | Списание с расчетного счета 00000000014 от 11.07.2022 12:00:00 | 76.05 / 51 | 280", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 52, + "question": "Покажи незакрытые позиции по контрагенту СВК", + "session_key": "chain_e", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-chain_e", + "status_code": 200, + "ok": true, + "elapsed_ms": 5942, + "reply_type": "partial_coverage", + "trace_id": "address-Fba2s8OLbT", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 53, + "question": "а на 2020-12-31", + "session_key": "chain_e", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-chain_e", + "status_code": 200, + "ok": true, + "elapsed_ms": 1053, + "reply_type": "partial_coverage", + "trace_id": "address-NlUK6ZbvyS", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 54, + "question": "а теперь по договору 15/24", + "session_key": "chain_e", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-chain_e", + "status_code": 200, + "ok": true, + "elapsed_ms": 7295, + "reply_type": "partial_coverage", + "trace_id": "address-Y4iOZPwOh7", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 55, + "question": "а только банковские операции", + "session_key": "chain_e", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-chain_e", + "status_code": 200, + "ok": true, + "elapsed_ms": 8213, + "reply_type": "partial_coverage", + "trace_id": "address-LtqK2g17SL", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 56, + "question": "а за май 2020", + "session_key": "chain_e", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-chain_e", + "status_code": 200, + "ok": true, + "elapsed_ms": 2957, + "reply_type": "partial_coverage", + "trace_id": "address-R6p14wCn-Z", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 57, + "question": "show documents by counterparty svk for 2020", + "session_key": "single_57", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_57", + "status_code": 200, + "ok": true, + "elapsed_ms": 5895, + "reply_type": "factual", + "trace_id": "address-OLzSfciTSb", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 58, + "question": "show bank operations by contract 15/24", + "session_key": "single_58", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_58", + "status_code": 200, + "ok": true, + "elapsed_ms": 6354, + "reply_type": "factual", + "trace_id": "address-RZ_rSyFwxt", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 59, + "question": "kakoi ostatok po schetu 60.01 na 2020-07-31", + "session_key": "single_59", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_59", + "status_code": 200, + "ok": true, + "elapsed_ms": 5843, + "reply_type": "factual", + "trace_id": "address-qUZfJTUNoW", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 5.\nСумма по отобранным движениям: 216200.\n1. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400\n2. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600\n3. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400\n4. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 60, + "question": "kto nam dolzhen na 2020-12-31", + "session_key": "single_60", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_60", + "status_code": 200, + "ok": true, + "elapsed_ms": 10891, + "reply_type": "clarification_required", + "trace_id": "IKFefEoo-lpju-", + "assistant_reply": "Коротко: Проблема подтверждается частично; для уверенного вывода нужны уточнения. Что сломано:\n- Есть признаки проблемы, но без уточнений по периоду и объекту вывод ненадежен. Почему это похоже на проблему:\n- Сигнал проблемы есть, но механизм подтвержден не полностью. На чем это основано:\n- Опора частичная: часть требований покрыта не полностью.\n- Отдельно не подтверждено или покрыто частично: R1. Что проверить первым:\n- Проверьте связку документов и проводок по проблемному участку в указанном периоде. Ограничения:\n- Якоря из вопроса без прямого подтверждения: 2020-12, period:2020-12.\n- Ни одно требование не получило подтвержденного покрытия.\n- Нет explainable-сигналов why_included в результатах выборки.\n- required anchors claim-bound grounding.\n- evidence.\n- Targeted evidence acquisition claim target path.", + "mcp_call_status": null, + "limited_reason_category": null, + "llm_decomposition_applied": null, + "llm_decomposition_reason": null, + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + } + ] +} \ No newline at end of file diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32/run_summary.json b/docs/ADDRESS/runs/2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32/run_summary.json new file mode 100644 index 0000000..3e0d8c0 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32/run_summary.json @@ -0,0 +1,87 @@ +{ + "run_id": "2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32", + "generated_at": "2026-04-02T06:18:23", + "source_questions_file": "docs/ADDRESS/1.txt", + "backend_url": "http://127.0.0.1:8787/api/assistant/message", + "llm_provider": "local", + "llm_base_url": "http://127.0.0.1:1234", + "llm_model": "qwen2.5-14b-instruct-1m", + "totals": { + "questions_total": 63, + "ok_200_count": 63, + "factual_count": 38, + "partial_coverage_count": 18, + "clarification_required_count": 7, + "other_reply_types_count": 0, + "http_error_count": 0, + "llm_decomposition_applied_count": 41, + "fallback_rule_hit_count": 0, + "avg_elapsed_ms": 5571.7 + }, + "distributions": { + "mcp_call_status": { + "matched_non_empty": 38, + "materialized_but_not_anchor_matched": 15, + "(null)": 7, + "skipped": 3 + }, + "limited_reason_category": { + "empty_match": 15, + "missing_anchor": 2, + "unsupported": 1 + }, + "llm_decomposition_reason": { + "normalized_fragment_applied": 41, + "not_address_like": 14, + "(null)": 7, + "normalized_fragment_same": 1 + }, + "error_code": {} + }, + "followup_sessions": { + "single_1": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_1", + "single_2": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_2", + "single_3": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_3", + "single_4": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_4", + "single_5": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_5", + "single_6": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_6", + "single_7": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_7", + "single_8": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_8", + "single_9": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_9", + "single_10": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_10", + "single_11": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_11", + "single_12": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_12", + "single_13": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_13", + "single_14": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_14", + "single_15": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_15", + "single_16": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_16", + "single_17": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_17", + "single_18": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_18", + "single_19": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_19", + "chain_a": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-chain_a", + "chain_b": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-chain_b", + "chain_c": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-chain_c", + "single_31": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_31", + "single_32": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_32", + "single_33": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_33", + "single_34": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_34", + "single_35": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_35", + "single_36": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_36", + "single_37": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_37", + "single_38": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_38", + "single_39": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_39", + "single_40": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_40", + "single_41": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_41", + "single_42": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_42", + "single_43": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_43", + "single_44": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_44", + "single_45": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_45", + "single_46": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_46", + "chain_d": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-chain_d", + "chain_e": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-chain_e", + "single_57": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_57", + "single_58": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_58", + "single_59": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_59", + "single_60": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-12-32-single_60" + } +} \ No newline at end of file diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup/README.md b/docs/ADDRESS/runs/2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup/README.md new file mode 100644 index 0000000..c74efdd --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup/README.md @@ -0,0 +1,19 @@ +# 2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup + +Generated at: 2026-04-02T06:24:42 +Questions file: docs/ADDRESS/1.txt +Backend URL: http://127.0.0.1:8787/api/assistant/message +LLM: local / qwen2.5-14b-instruct-1m @ http://127.0.0.1:1234 + +## Totals +- questions_total: 60 +- ok_200_count: 60 +- factual_count: 39 +- partial_coverage_count: 17 +- clarification_required_count: 4 +- http_error_count: 0 + +## Files +- run_summary.json +- full_live_results.json +- failures_only.json \ No newline at end of file diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup/failures_only.json b/docs/ADDRESS/runs/2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup/failures_only.json new file mode 100644 index 0000000..87cee5c --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup/failures_only.json @@ -0,0 +1,405 @@ +{ + "run_id": "2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup", + "generated_at": "2026-04-02T06:24:42", + "failures": [ + { + "number": 2, + "question": "свк доки за 20й", + "session_key": "single_2", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_2", + "status_code": 200, + "ok": true, + "elapsed_ms": 8345, + "reply_type": "partial_coverage", + "trace_id": "address-go0Zscjzbe", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 7, + "question": "Покажи банковские операции по СВК за 2020", + "session_key": "single_7", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_7", + "status_code": 200, + "ok": true, + "elapsed_ms": 8136, + "reply_type": "partial_coverage", + "trace_id": "address-DPfd0Xhggd", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 9, + "question": "Покажи банковские операции по контрагенту СВК за весь период", + "session_key": "single_9", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_9", + "status_code": 200, + "ok": true, + "elapsed_ms": 6209, + "reply_type": "partial_coverage", + "trace_id": "address-kBQzfbmPMA", + "assistant_reply": "Не удалось выполнить адресный live-запрос в V1.\nПричина: live MCP вызов завершился ошибкой.\nЧто нужно уточнить: MCP fetch failed: This operation was aborted.", + "mcp_call_status": "error", + "limited_reason_category": "execution_error", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 13, + "question": "Есть ли долг по договору 15/24 на 2020-07-31", + "session_key": "single_13", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_13", + "status_code": 200, + "ok": true, + "elapsed_ms": 6909, + "reply_type": "partial_coverage", + "trace_id": "address-j8nun4978Q", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 35, + "question": "по свк за весь период че есть", + "session_key": "single_35", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_35", + "status_code": 200, + "ok": true, + "elapsed_ms": 10358, + "reply_type": "clarification_required", + "trace_id": "-R4PnGpemze3u9", + "assistant_reply": "Коротко: Наиболее вероятный механизм проблемы подтвержден частично и требует первичной проверки. Что сломано:\n- Есть признаки проблемы, но без уточнений по периоду и объекту вывод ненадежен. Почему это похоже на проблему:\n- Сигнал проблемы есть, но механизм подтвержден не полностью. На чем это основано:\n- Опора частичная: часть требований покрыта не полностью.\n- Отдельно не подтверждено или покрыто частично: R1. Что проверить первым:\n- Уточните период проверки, чтобы подтвердить проблему без лишнего шума.\n- Проверьте связку документов и проводок по проблемному участку в указанном периоде.\n- Уточните период проверки (например, июль 2020). Ограничения:\n- Ни одно требование не получило подтвержденного покрытия.\n- Нет explainable-сигналов why_included в результатах выборки.\n- required anchors claim-bound grounding.\n- evidence.\n- Targeted evidence acquisition claim target path.", + "mcp_call_status": null, + "limited_reason_category": null, + "llm_decomposition_applied": null, + "llm_decomposition_reason": null, + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 36, + "question": "Покажи технические константы конфигурации", + "session_key": "single_36", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_36", + "status_code": 200, + "ok": true, + "elapsed_ms": 9752, + "reply_type": "clarification_required", + "trace_id": "4ynYX0aRtOVrJh", + "assistant_reply": "Коротко: Проблема подтверждается частично; для уверенного вывода нужны уточнения. Что сломано:\n- Есть признаки проблемы, но без уточнений по периоду и объекту вывод ненадежен. Почему это похоже на проблему:\n- Сигнал проблемы есть, но механизм подтвержден не полностью. На чем это основано:\n- Опора частичная: часть требований покрыта не полностью.\n- Отдельно не подтверждено или покрыто частично: R1. Что проверить первым:\n- Уточните период проверки, чтобы подтвердить проблему без лишнего шума.\n- Проверьте связку документов и проводок по проблемному участку в указанном периоде.\n- Уточните период проверки (например, июль 2020). Ограничения:\n- Ни одно требование не получило подтвержденного покрытия.\n- Нет explainable-сигналов why_included в результатах выборки.\n- required anchors claim-bound grounding.\n- evidence.\n- Targeted evidence acquisition claim target path.", + "mcp_call_status": null, + "limited_reason_category": null, + "llm_decomposition_applied": null, + "llm_decomposition_reason": null, + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 37, + "question": "кто президент США", + "session_key": "single_37", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_37", + "status_code": 200, + "ok": true, + "elapsed_ms": 8017, + "reply_type": "clarification_required", + "trace_id": "6kdfrhpnTV-9et", + "assistant_reply": "Коротко: Наиболее вероятный механизм проблемы подтвержден частично и требует первичной проверки. Что сломано:\n- Есть признаки проблемы, но без уточнений по периоду и объекту вывод ненадежен. Почему это похоже на проблему:\n- Сигнал проблемы есть, но механизм подтвержден не полностью. На чем это основано:\n- Опора частичная: часть требований покрыта не полностью.\n- Отдельно не подтверждено или покрыто частично: R1. Что проверить первым:\n- Уточните период проверки, чтобы подтвердить проблему без лишнего шума.\n- Проверьте связку документов и проводок по проблемному участку в указанном периоде.\n- Уточните период проверки (например, июль 2020). Ограничения:\n- Ни одно требование не получило подтвержденного покрытия.\n- Нет explainable-сигналов why_included в результатах выборки.\n- required anchors claim-bound grounding.\n- evidence.\n- Targeted evidence acquisition claim target path.", + "mcp_call_status": null, + "limited_reason_category": null, + "llm_decomposition_applied": null, + "llm_decomposition_reason": null, + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 38, + "question": "Кто нам должен на 2020-12-31", + "session_key": "single_38", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_38", + "status_code": 200, + "ok": true, + "elapsed_ms": 11, + "reply_type": "partial_coverage", + "trace_id": "address-wRcdOYEkks", + "assistant_reply": "Этот запрос не подходит под address_query V1.\nПричина: intent пока не поддержан в address V1.\nЧто нужно уточнить: переформулируйте вопрос как адресный lookup по счету/контрагенту/договору.", + "mcp_call_status": "skipped", + "limited_reason_category": "unsupported", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 42, + "question": "Покажи незакрытые договоры на 2020-12-31", + "session_key": "single_42", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_42", + "status_code": 200, + "ok": true, + "elapsed_ms": 5873, + "reply_type": "partial_coverage", + "trace_id": "address-g6G7BE6ItI", + "assistant_reply": "Для точного адресного поиска не хватает обязательного якоря.\nПричина: для open_items нужен якорь контрагента или договора.\nЧто нужно уточнить: укажите контрагента или номер/название договора.", + "mcp_call_status": "skipped", + "limited_reason_category": "missing_anchor", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 43, + "question": "Какие открытые договоры есть на 2020-12-31", + "session_key": "single_43", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_43", + "status_code": 200, + "ok": true, + "elapsed_ms": 5013, + "reply_type": "partial_coverage", + "trace_id": "address-_pn_73-bkB", + "assistant_reply": "Для точного адресного поиска не хватает обязательного якоря.\nПричина: для open_items нужен якорь контрагента или договора.\nЧто нужно уточнить: укажите контрагента или номер/название договора.", + "mcp_call_status": "skipped", + "limited_reason_category": "missing_anchor", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 44, + "question": "Покажи хвосты по контрагенту СВК на 2020-12-31", + "session_key": "single_44", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_44", + "status_code": 200, + "ok": true, + "elapsed_ms": 7394, + "reply_type": "partial_coverage", + "trace_id": "address-WQ7p8Vto1p", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 45, + "question": "Есть ли незакрытые позиции по договору 15/24 на 2020-12-31", + "session_key": "single_45", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_45", + "status_code": 200, + "ok": true, + "elapsed_ms": 6120, + "reply_type": "partial_coverage", + "trace_id": "address-RX99SRm2dk", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 46, + "question": "Покажи открытые позиции по договору 15/24", + "session_key": "single_46", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_46", + "status_code": 200, + "ok": true, + "elapsed_ms": 6078, + "reply_type": "partial_coverage", + "trace_id": "address-8v-VptxVtr", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 49, + "question": "а теперь банковские операции", + "session_key": "chain_d", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-chain_d", + "status_code": 200, + "ok": true, + "elapsed_ms": 8303, + "reply_type": "partial_coverage", + "trace_id": "address--f3lxuGwWL", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 50, + "question": "а за весь период", + "session_key": "chain_d", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-chain_d", + "status_code": 200, + "ok": true, + "elapsed_ms": 2171, + "reply_type": "partial_coverage", + "trace_id": "address-jQrlGu5_pL", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 52, + "question": "Покажи незакрытые позиции по контрагенту СВК", + "session_key": "chain_e", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-chain_e", + "status_code": 200, + "ok": true, + "elapsed_ms": 6035, + "reply_type": "partial_coverage", + "trace_id": "address-2n6cAvvLns", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 53, + "question": "а на 2020-12-31", + "session_key": "chain_e", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-chain_e", + "status_code": 200, + "ok": true, + "elapsed_ms": 1053, + "reply_type": "partial_coverage", + "trace_id": "address-jZyu9voM25", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 54, + "question": "а теперь по договору 15/24", + "session_key": "chain_e", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-chain_e", + "status_code": 200, + "ok": true, + "elapsed_ms": 7360, + "reply_type": "partial_coverage", + "trace_id": "address-uOrM8pdJSu", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 55, + "question": "а только банковские операции", + "session_key": "chain_e", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-chain_e", + "status_code": 200, + "ok": true, + "elapsed_ms": 8148, + "reply_type": "partial_coverage", + "trace_id": "address-lCZsPDCeln", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 56, + "question": "а за май 2020", + "session_key": "chain_e", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-chain_e", + "status_code": 200, + "ok": true, + "elapsed_ms": 2925, + "reply_type": "partial_coverage", + "trace_id": "address-SdipomZHF-", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 60, + "question": "kto nam dolzhen na 2020-12-31", + "session_key": "single_60", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_60", + "status_code": 200, + "ok": true, + "elapsed_ms": 11119, + "reply_type": "clarification_required", + "trace_id": "YaplyRBkaIxbtZ", + "assistant_reply": "Коротко: Проблема подтверждается частично; для уверенного вывода нужны уточнения. Что сломано:\n- Есть признаки проблемы, но без уточнений по периоду и объекту вывод ненадежен. Почему это похоже на проблему:\n- Сигнал проблемы есть, но механизм подтвержден не полностью. На чем это основано:\n- Опора частичная: часть требований покрыта не полностью.\n- Отдельно не подтверждено или покрыто частично: R1. Что проверить первым:\n- Проверьте связку документов и проводок по проблемному участку в указанном периоде. Ограничения:\n- Якоря из вопроса без прямого подтверждения: 2020-12, period:2020-12.\n- Ни одно требование не получило подтвержденного покрытия.\n- Нет explainable-сигналов why_included в результатах выборки.\n- required anchors claim-bound grounding.\n- evidence.\n- Targeted evidence acquisition claim target path.", + "mcp_call_status": null, + "limited_reason_category": null, + "llm_decomposition_applied": null, + "llm_decomposition_reason": null, + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + } + ] +} \ No newline at end of file diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup/full_live_results.json b/docs/ADDRESS/runs/2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup/full_live_results.json new file mode 100644 index 0000000..05f1723 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup/full_live_results.json @@ -0,0 +1,1235 @@ +{ + "run_id": "2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup", + "generated_at": "2026-04-02T06:24:42", + "summary": { + "run_id": "2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup", + "generated_at": "2026-04-02T06:24:42", + "source_questions_file": "docs/ADDRESS/1.txt", + "backend_url": "http://127.0.0.1:8787/api/assistant/message", + "llm_provider": "local", + "llm_base_url": "http://127.0.0.1:1234", + "llm_model": "qwen2.5-14b-instruct-1m", + "totals": { + "questions_total": 60, + "ok_200_count": 60, + "factual_count": 39, + "partial_coverage_count": 17, + "clarification_required_count": 4, + "other_reply_types_count": 0, + "http_error_count": 0, + "llm_decomposition_applied_count": 41, + "fallback_rule_hit_count": 0, + "avg_elapsed_ms": 5429.8 + }, + "distributions": { + "mcp_call_status": { + "matched_non_empty": 39, + "materialized_but_not_anchor_matched": 13, + "(null)": 4, + "skipped": 3, + "error": 1 + }, + "limited_reason_category": { + "empty_match": 13, + "missing_anchor": 2, + "execution_error": 1, + "unsupported": 1 + }, + "llm_decomposition_reason": { + "normalized_fragment_applied": 41, + "not_address_like": 14, + "(null)": 4, + "normalized_fragment_same": 1 + }, + "error_code": {} + }, + "followup_sessions": { + "single_1": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_1", + "single_2": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_2", + "single_3": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_3", + "single_4": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_4", + "single_5": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_5", + "single_6": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_6", + "single_7": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_7", + "single_8": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_8", + "single_9": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_9", + "single_10": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_10", + "single_11": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_11", + "single_12": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_12", + "single_13": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_13", + "single_14": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_14", + "single_15": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_15", + "single_16": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_16", + "single_17": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_17", + "single_18": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_18", + "single_19": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_19", + "chain_a": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-chain_a", + "chain_b": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-chain_b", + "chain_c": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-chain_c", + "single_31": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_31", + "single_32": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_32", + "single_33": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_33", + "single_34": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_34", + "single_35": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_35", + "single_36": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_36", + "single_37": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_37", + "single_38": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_38", + "single_39": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_39", + "single_40": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_40", + "single_41": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_41", + "single_42": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_42", + "single_43": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_43", + "single_44": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_44", + "single_45": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_45", + "single_46": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_46", + "chain_d": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-chain_d", + "chain_e": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-chain_e", + "single_57": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_57", + "single_58": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_58", + "single_59": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_59", + "single_60": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_60" + } + }, + "rows": [ + { + "number": 1, + "question": "Покажи документы по СВК за 2020 год", + "session_key": "single_1", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_1", + "status_code": 200, + "ok": true, + "elapsed_ms": 5879, + "reply_type": "factual", + "trace_id": "address-Z_1rQPDha5", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 2, + "question": "свк доки за 20й", + "session_key": "single_2", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_2", + "status_code": 200, + "ok": true, + "elapsed_ms": 8345, + "reply_type": "partial_coverage", + "trace_id": "address-go0Zscjzbe", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 3, + "question": "что по свк за 2020 выведи все доки плиз", + "session_key": "single_3", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_3", + "status_code": 200, + "ok": true, + "elapsed_ms": 5820, + "reply_type": "factual", + "trace_id": "address-nWjIJl7OhI", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 4, + "question": "Какие документы по контрагенту СВК за весь период", + "session_key": "single_4", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_4", + "status_code": 200, + "ok": true, + "elapsed_ms": 5404, + "reply_type": "factual", + "trace_id": "address-b7KK7kbJ7I", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 26.\n1. 2021-11-10T12:00:07Z | Поступление на расчетный счет 00000000013 от 10.11.2021 12:00:07 | 0 / 0 | 20000 | аналитика: Группа\n2. 2021-09-29T12:00:03Z | Поступление на расчетный счет 00000000012 от 29.09.2021 12:00:03 | 0 / 0 | 50000 | аналитика: Группа\n3. 2021-08-31T12:00:04Z | Поступление на расчетный счет 00000000011 от 31.08.2021 12:00:04 | 0 / 0 | 120500 | аналитика: Группа\n4. 2021-06-22T12:00:00Z | Поступление на расчетный счет 00000000010 от 22.06.2021 12:00:00 | 0 / 0 | 498630 | аналитика: Группа\n5. 2021-06-09T12:00:05Z | Поступление на расчетный счет 00000000009 от 09.06.2021 12:00:05 | 0 / 0 | 418960 | аналитика: Группа\n6. 2021-04-28T12:00:08Z | Поступление на расчетный счет 00000000008 от 28.04.2021 12:00:08 | 0 / 0 | 564300 | аналитика: Группа\n7. 2021-04-22T12:00:00Z | Поступление на расчетный счет 00000000007 от 22.04.2021 12:00:00 | 0 / 0 | 982420 | аналитика: Группа\n8. 2021-04-13T12:00:11Z | Поступление на расчетный счет 00000000006 от 13.04.2021 12:00:11 | 0 / 0 | 1882400 | аналитика: Группа\n9. 2021-03-25T12:00:02Z | Поступление на расчетный счет 00000000005 от 25.03.2021 12:00:02 | 0 / 0 | 644315 | аналитика: Группа\n10. 2021-03-24T12:00:03Z | Поступление на расчетный счет 00000000004 от 24.03.2021 12:00:03 | 0 / 0 | 1219990 | аналитика: Группа\n11. 2021-03-18T12:00:00Z | Поступление на расчетный счет 00000000003 от 18.03.2021 12:00:00 | 0 / 0 | 1425310 | аналитика: Группа\n12. 2021-03-12T12:00:03Z | Поступление на расчетный счет 00000000002 от 12.03.2021 12:00:03 | 0 / 0 | 214600 | аналитика: Группа\n13. 2021-02-19T12:00:01Z | Поступление на расчетный счет 00000000001 от 19.02.2021 12:00:01 | 0 / 0 | 518600 | аналитика: Группа\n14. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n15. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n16. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа\n17. 2020-11-30T12:00:07Z | Поступление на расчетный счет 00000000041 от 30.11.2020 12:00:07 | 0 / 0 | 38900 | аналитика: Группа\n18. 2020-11-19T12:00:04Z | Поступление на расчетный счет 00000000039 от 19.11.2020 12:00:04 | 0 / 0 | 3320600 | аналитика: Группа\n19. 2020-11-18T12:00:05Z | Поступление на расчетный счет 00000000038 от 18.11.2020 12:00:05 | 0 / 0 | 745300 | аналитика: Группа\n20. 2020-11-18T12:00:04Z | Поступление на расчетный счет 00000000037 от 18.11.2020 12:00:04 | 0 / 0 | 320000 | аналитика: Группа\n21. 2020-11-13T12:00:03Z | Поступление на расчетный счет 00000000036 от 13.11.2020 12:00:03 | 0 / 0 | 313600 | аналитика: Группа\n22. 2020-11-10T15:39:13Z | Поступление на расчетный счет 00000000035 от 10.11.2020 15:39:13 | 0 / 0 | 328300 | аналитика: Группа\n23. 2020-10-26T12:00:00Z | Поступление на расчетный счет 00000000034 от 26.10.2020 12:00:00 | 0 / 0 | 175000 | аналитика: Группа\n24. 2020-08-20T12:00:06Z | Поступление на расчетный счет 00000000032 от 20.08.2020 12:00:06 | 0 / 0 | 3126005 | аналитика: Группа\n25. 2020-07-30T12:00:00Z | Поступление на расчетный счет 00000000029 от 30.07.2020 12:00:00 | 0 / 0 | 20000 | аналитика: Группа\n26. 2020-07-27T12:00:00Z | Поступление на расчетный счет 00000000028 от 27.07.2020 12:00:00 | 0 / 0 | 40860 | аналитика: Группа", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 5, + "question": "какие есть доки по свк с 2000 по 2025 год", + "session_key": "single_5", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_5", + "status_code": 200, + "ok": true, + "elapsed_ms": 8107, + "reply_type": "factual", + "trace_id": "address-trJQ64UG1b", + "assistant_reply": "По окну 2000-01-01..2025-12-31 строк не найдено; показаны ближайшие доступные данные 2020-07-27..2021-11-10.\nСобран список документов по контрагенту (live address lane).\nСтрок отобрано: 26.\n1. 2021-11-10T12:00:07Z | Поступление на расчетный счет 00000000013 от 10.11.2021 12:00:07 | 0 / 0 | 20000 | аналитика: Группа\n2. 2021-09-29T12:00:03Z | Поступление на расчетный счет 00000000012 от 29.09.2021 12:00:03 | 0 / 0 | 50000 | аналитика: Группа\n3. 2021-08-31T12:00:04Z | Поступление на расчетный счет 00000000011 от 31.08.2021 12:00:04 | 0 / 0 | 120500 | аналитика: Группа\n4. 2021-06-22T12:00:00Z | Поступление на расчетный счет 00000000010 от 22.06.2021 12:00:00 | 0 / 0 | 498630 | аналитика: Группа\n5. 2021-06-09T12:00:05Z | Поступление на расчетный счет 00000000009 от 09.06.2021 12:00:05 | 0 / 0 | 418960 | аналитика: Группа\n6. 2021-04-28T12:00:08Z | Поступление на расчетный счет 00000000008 от 28.04.2021 12:00:08 | 0 / 0 | 564300 | аналитика: Группа\n7. 2021-04-22T12:00:00Z | Поступление на расчетный счет 00000000007 от 22.04.2021 12:00:00 | 0 / 0 | 982420 | аналитика: Группа\n8. 2021-04-13T12:00:11Z | Поступление на расчетный счет 00000000006 от 13.04.2021 12:00:11 | 0 / 0 | 1882400 | аналитика: Группа\n9. 2021-03-25T12:00:02Z | Поступление на расчетный счет 00000000005 от 25.03.2021 12:00:02 | 0 / 0 | 644315 | аналитика: Группа\n10. 2021-03-24T12:00:03Z | Поступление на расчетный счет 00000000004 от 24.03.2021 12:00:03 | 0 / 0 | 1219990 | аналитика: Группа\n11. 2021-03-18T12:00:00Z | Поступление на расчетный счет 00000000003 от 18.03.2021 12:00:00 | 0 / 0 | 1425310 | аналитика: Группа\n12. 2021-03-12T12:00:03Z | Поступление на расчетный счет 00000000002 от 12.03.2021 12:00:03 | 0 / 0 | 214600 | аналитика: Группа\n13. 2021-02-19T12:00:01Z | Поступление на расчетный счет 00000000001 от 19.02.2021 12:00:01 | 0 / 0 | 518600 | аналитика: Группа\n14. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n15. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n16. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа\n17. 2020-11-30T12:00:07Z | Поступление на расчетный счет 00000000041 от 30.11.2020 12:00:07 | 0 / 0 | 38900 | аналитика: Группа\n18. 2020-11-19T12:00:04Z | Поступление на расчетный счет 00000000039 от 19.11.2020 12:00:04 | 0 / 0 | 3320600 | аналитика: Группа\n19. 2020-11-18T12:00:05Z | Поступление на расчетный счет 00000000038 от 18.11.2020 12:00:05 | 0 / 0 | 745300 | аналитика: Группа\n20. 2020-11-18T12:00:04Z | Поступление на расчетный счет 00000000037 от 18.11.2020 12:00:04 | 0 / 0 | 320000 | аналитика: Группа\n21. 2020-11-13T12:00:03Z | Поступление на расчетный счет 00000000036 от 13.11.2020 12:00:03 | 0 / 0 | 313600 | аналитика: Группа\n22. 2020-11-10T15:39:13Z | Поступление на расчетный счет 00000000035 от 10.11.2020 15:39:13 | 0 / 0 | 328300 | аналитика: Группа\n23. 2020-10-26T12:00:00Z | Поступление на расчетный счет 00000000034 от 26.10.2020 12:00:00 | 0 / 0 | 175000 | аналитика: Группа\n24. 2020-08-20T12:00:06Z | Поступление на расчетный счет 00000000032 от 20.08.2020 12:00:06 | 0 / 0 | 3126005 | аналитика: Группа\n25. 2020-07-30T12:00:00Z | Поступление на расчетный счет 00000000029 от 30.07.2020 12:00:00 | 0 / 0 | 20000 | аналитика: Группа\n26. 2020-07-27T12:00:00Z | Поступление на расчетный счет 00000000028 от 27.07.2020 12:00:00 | 0 / 0 | 40860 | аналитика: Группа", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 6, + "question": "Покажи документы по контрагенту СВК", + "session_key": "single_6", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_6", + "status_code": 200, + "ok": true, + "elapsed_ms": 6063, + "reply_type": "factual", + "trace_id": "address-m9r0xkBGr1", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 26.\n1. 2021-11-10T12:00:07Z | Поступление на расчетный счет 00000000013 от 10.11.2021 12:00:07 | 0 / 0 | 20000 | аналитика: Группа\n2. 2021-09-29T12:00:03Z | Поступление на расчетный счет 00000000012 от 29.09.2021 12:00:03 | 0 / 0 | 50000 | аналитика: Группа\n3. 2021-08-31T12:00:04Z | Поступление на расчетный счет 00000000011 от 31.08.2021 12:00:04 | 0 / 0 | 120500 | аналитика: Группа\n4. 2021-06-22T12:00:00Z | Поступление на расчетный счет 00000000010 от 22.06.2021 12:00:00 | 0 / 0 | 498630 | аналитика: Группа\n5. 2021-06-09T12:00:05Z | Поступление на расчетный счет 00000000009 от 09.06.2021 12:00:05 | 0 / 0 | 418960 | аналитика: Группа\n6. 2021-04-28T12:00:08Z | Поступление на расчетный счет 00000000008 от 28.04.2021 12:00:08 | 0 / 0 | 564300 | аналитика: Группа\n7. 2021-04-22T12:00:00Z | Поступление на расчетный счет 00000000007 от 22.04.2021 12:00:00 | 0 / 0 | 982420 | аналитика: Группа\n8. 2021-04-13T12:00:11Z | Поступление на расчетный счет 00000000006 от 13.04.2021 12:00:11 | 0 / 0 | 1882400 | аналитика: Группа\n9. 2021-03-25T12:00:02Z | Поступление на расчетный счет 00000000005 от 25.03.2021 12:00:02 | 0 / 0 | 644315 | аналитика: Группа\n10. 2021-03-24T12:00:03Z | Поступление на расчетный счет 00000000004 от 24.03.2021 12:00:03 | 0 / 0 | 1219990 | аналитика: Группа\n11. 2021-03-18T12:00:00Z | Поступление на расчетный счет 00000000003 от 18.03.2021 12:00:00 | 0 / 0 | 1425310 | аналитика: Группа\n12. 2021-03-12T12:00:03Z | Поступление на расчетный счет 00000000002 от 12.03.2021 12:00:03 | 0 / 0 | 214600 | аналитика: Группа\n13. 2021-02-19T12:00:01Z | Поступление на расчетный счет 00000000001 от 19.02.2021 12:00:01 | 0 / 0 | 518600 | аналитика: Группа\n14. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n15. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n16. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа\n17. 2020-11-30T12:00:07Z | Поступление на расчетный счет 00000000041 от 30.11.2020 12:00:07 | 0 / 0 | 38900 | аналитика: Группа\n18. 2020-11-19T12:00:04Z | Поступление на расчетный счет 00000000039 от 19.11.2020 12:00:04 | 0 / 0 | 3320600 | аналитика: Группа\n19. 2020-11-18T12:00:05Z | Поступление на расчетный счет 00000000038 от 18.11.2020 12:00:05 | 0 / 0 | 745300 | аналитика: Группа\n20. 2020-11-18T12:00:04Z | Поступление на расчетный счет 00000000037 от 18.11.2020 12:00:04 | 0 / 0 | 320000 | аналитика: Группа\n21. 2020-11-13T12:00:03Z | Поступление на расчетный счет 00000000036 от 13.11.2020 12:00:03 | 0 / 0 | 313600 | аналитика: Группа\n22. 2020-11-10T15:39:13Z | Поступление на расчетный счет 00000000035 от 10.11.2020 15:39:13 | 0 / 0 | 328300 | аналитика: Группа\n23. 2020-10-26T12:00:00Z | Поступление на расчетный счет 00000000034 от 26.10.2020 12:00:00 | 0 / 0 | 175000 | аналитика: Группа\n24. 2020-08-20T12:00:06Z | Поступление на расчетный счет 00000000032 от 20.08.2020 12:00:06 | 0 / 0 | 3126005 | аналитика: Группа\n25. 2020-07-30T12:00:00Z | Поступление на расчетный счет 00000000029 от 30.07.2020 12:00:00 | 0 / 0 | 20000 | аналитика: Группа\n26. 2020-07-27T12:00:00Z | Поступление на расчетный счет 00000000028 от 27.07.2020 12:00:00 | 0 / 0 | 40860 | аналитика: Группа", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 7, + "question": "Покажи банковские операции по СВК за 2020", + "session_key": "single_7", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_7", + "status_code": 200, + "ok": true, + "elapsed_ms": 8136, + "reply_type": "partial_coverage", + "trace_id": "address-DPfd0Xhggd", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 8, + "question": "Какие платежи по СВК в 2020", + "session_key": "single_8", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_8", + "status_code": 200, + "ok": true, + "elapsed_ms": 6864, + "reply_type": "factual", + "trace_id": "address-OFzFGqs9ed", + "assistant_reply": "Собран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 9, + "question": "Покажи банковские операции по контрагенту СВК за весь период", + "session_key": "single_9", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_9", + "status_code": 200, + "ok": true, + "elapsed_ms": 6209, + "reply_type": "partial_coverage", + "trace_id": "address-kBQzfbmPMA", + "assistant_reply": "Не удалось выполнить адресный live-запрос в V1.\nПричина: live MCP вызов завершился ошибкой.\nЧто нужно уточнить: MCP fetch failed: This operation was aborted.", + "mcp_call_status": "error", + "limited_reason_category": "execution_error", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 10, + "question": "Покажи документы по договору 15/24 за 2020", + "session_key": "single_10", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_10", + "status_code": 200, + "ok": true, + "elapsed_ms": 7203, + "reply_type": "factual", + "trace_id": "address-ntOSpVKvHp", + "assistant_reply": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-08-31T15:00:06Z | Поступление товаров и услуг 00000000024 от 31.08.2020 15:00:06 | 19.04 / 76.05 | 233.33\n2. 2020-08-31T15:00:06Z | Поступление товаров и услуг 00000000024 от 31.08.2020 15:00:06 | 44.01 / 76.05 | 1166.67", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 11, + "question": "Покажи документы по договору 15/24", + "session_key": "single_11", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_11", + "status_code": 200, + "ok": true, + "elapsed_ms": 6077, + "reply_type": "factual", + "trace_id": "address-Z6hEINzSZq", + "assistant_reply": "Документный фильтр в live дал пустой набор; показываю связанные банковские операции по договору.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 12, + "question": "Покажи банковские операции по договору 15/24", + "session_key": "single_12", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_12", + "status_code": 200, + "ok": true, + "elapsed_ms": 6077, + "reply_type": "factual", + "trace_id": "address-JOF2Ex9I6L", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 3.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53\n3. 2020-08-31T15:00:04Z | Списание с расчетного счета 00000000224 от 31.08.2020 15:00:04 | 91.02 / 51 | 106.47", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 13, + "question": "Есть ли долг по договору 15/24 на 2020-07-31", + "session_key": "single_13", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_13", + "status_code": 200, + "ok": true, + "elapsed_ms": 6909, + "reply_type": "partial_coverage", + "trace_id": "address-j8nun4978Q", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 14, + "question": "Покажи операции по договору 15/24 за весь период", + "session_key": "single_14", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_14", + "status_code": 200, + "ok": true, + "elapsed_ms": 5273, + "reply_type": "factual", + "trace_id": "address-osAH-dcMD_", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 15, + "question": "Покажи сальдо по счету 60.01 на дату 2020-07-31", + "session_key": "single_15", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_15", + "status_code": 200, + "ok": true, + "elapsed_ms": 5903, + "reply_type": "factual", + "trace_id": "address-yILLvQv_66", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 5.\nСумма по отобранным движениям: 216200.\n1. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400\n2. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600\n3. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400\n4. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 16, + "question": "Какой остаток по счету 60 на 2020.05", + "session_key": "single_16", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_16", + "status_code": 200, + "ok": true, + "elapsed_ms": 5094, + "reply_type": "factual", + "trace_id": "address-BXOrkzuguh", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 6.\nСумма по отобранным движениям: 849499.\n1. 2020-05-22T10:14:43Z | Списание с расчетного счета 00000000148 от 22.05.2020 10:14:43 | 60.02 / 51 | 142299\n2. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 75367\n3. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 211833\n4. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 187967", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 17, + "question": "Какой остаток по счету 60 на 2020 май", + "session_key": "single_17", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_17", + "status_code": 200, + "ok": true, + "elapsed_ms": 5090, + "reply_type": "factual", + "trace_id": "address-cqdcbMs5GD", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 6.\nСумма по отобранным движениям: 849499.\n1. 2020-05-22T10:14:43Z | Списание с расчетного счета 00000000148 от 22.05.2020 10:14:43 | 60.02 / 51 | 142299\n2. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 75367\n3. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 211833\n4. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 187967", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 18, + "question": "Какие документы формируют остаток по счету 60.01 на 2020-07-31", + "session_key": "single_18", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_18", + "status_code": 200, + "ok": true, + "elapsed_ms": 6091, + "reply_type": "factual", + "trace_id": "address-ZCN0xHPP7u", + "assistant_reply": "Собран drilldown документов, формирующих остаток по счету на указанную дату.\nДокументных строк отобрано: 5.\nСумма по отобранным движениям: 216200.\n1. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400\n2. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600\n3. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400\n4. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200\n5. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 7600\nМожно уточнить выборку по контрагенту, договору или периоду.", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 19, + "question": "Какой остаток по счету 62 на сегодня", + "session_key": "single_19", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_19", + "status_code": 200, + "ok": true, + "elapsed_ms": 5253, + "reply_type": "factual", + "trace_id": "address-cjoBJlymio", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 200.\nСумма по отобранным движениям: 63309907.220000006.\n1. 2022-01-20T12:00:02Z | Списание с расчетного счета 00000000004 от 20.01.2022 12:00:02 | 62.02 / 51 | 1808325\n2. 2022-01-20T12:00:02Z | Списание с расчетного счета 00000000004 от 20.01.2022 12:00:02 | 62.02 / 51 | 216600\n3. 2022-01-20T12:00:02Z | Списание с расчетного счета 00000000004 от 20.01.2022 12:00:02 | 62.02 / 51 | 104726\n4. 2021-11-10T12:00:07Z | Поступление на расчетный счет 00000000013 от 10.11.2021 12:00:07 | 51 / 62.02 | 20000", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 20, + "question": "Покажи документы по СВК за 2020", + "session_key": "chain_a", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-chain_a", + "status_code": 200, + "ok": true, + "elapsed_ms": 5936, + "reply_type": "factual", + "trace_id": "address-8XQVakubI_", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 21, + "question": "а теперь только за май 2020", + "session_key": "chain_a", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-chain_a", + "status_code": 200, + "ok": true, + "elapsed_ms": 3291, + "reply_type": "factual", + "trace_id": "address-pOQDLDfhWB", + "assistant_reply": "По окну 2020-05-01..2020-05-31 строк не найдено; показаны ближайшие доступные данные 2020-07-27..2021-11-10.\nСобран список документов по контрагенту (live address lane).\nСтрок отобрано: 26.\n1. 2021-11-10T12:00:07Z | Поступление на расчетный счет 00000000013 от 10.11.2021 12:00:07 | 0 / 0 | 20000 | аналитика: Группа\n2. 2021-09-29T12:00:03Z | Поступление на расчетный счет 00000000012 от 29.09.2021 12:00:03 | 0 / 0 | 50000 | аналитика: Группа\n3. 2021-08-31T12:00:04Z | Поступление на расчетный счет 00000000011 от 31.08.2021 12:00:04 | 0 / 0 | 120500 | аналитика: Группа\n4. 2021-06-22T12:00:00Z | Поступление на расчетный счет 00000000010 от 22.06.2021 12:00:00 | 0 / 0 | 498630 | аналитика: Группа\n5. 2021-06-09T12:00:05Z | Поступление на расчетный счет 00000000009 от 09.06.2021 12:00:05 | 0 / 0 | 418960 | аналитика: Группа\n6. 2021-04-28T12:00:08Z | Поступление на расчетный счет 00000000008 от 28.04.2021 12:00:08 | 0 / 0 | 564300 | аналитика: Группа\n7. 2021-04-22T12:00:00Z | Поступление на расчетный счет 00000000007 от 22.04.2021 12:00:00 | 0 / 0 | 982420 | аналитика: Группа\n8. 2021-04-13T12:00:11Z | Поступление на расчетный счет 00000000006 от 13.04.2021 12:00:11 | 0 / 0 | 1882400 | аналитика: Группа\n9. 2021-03-25T12:00:02Z | Поступление на расчетный счет 00000000005 от 25.03.2021 12:00:02 | 0 / 0 | 644315 | аналитика: Группа\n10. 2021-03-24T12:00:03Z | Поступление на расчетный счет 00000000004 от 24.03.2021 12:00:03 | 0 / 0 | 1219990 | аналитика: Группа\n11. 2021-03-18T12:00:00Z | Поступление на расчетный счет 00000000003 от 18.03.2021 12:00:00 | 0 / 0 | 1425310 | аналитика: Группа\n12. 2021-03-12T12:00:03Z | Поступление на расчетный счет 00000000002 от 12.03.2021 12:00:03 | 0 / 0 | 214600 | аналитика: Группа\n13. 2021-02-19T12:00:01Z | Поступление на расчетный счет 00000000001 от 19.02.2021 12:00:01 | 0 / 0 | 518600 | аналитика: Группа\n14. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n15. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n16. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа\n17. 2020-11-30T12:00:07Z | Поступление на расчетный счет 00000000041 от 30.11.2020 12:00:07 | 0 / 0 | 38900 | аналитика: Группа\n18. 2020-11-19T12:00:04Z | Поступление на расчетный счет 00000000039 от 19.11.2020 12:00:04 | 0 / 0 | 3320600 | аналитика: Группа\n19. 2020-11-18T12:00:05Z | Поступление на расчетный счет 00000000038 от 18.11.2020 12:00:05 | 0 / 0 | 745300 | аналитика: Группа\n20. 2020-11-18T12:00:04Z | Поступление на расчетный счет 00000000037 от 18.11.2020 12:00:04 | 0 / 0 | 320000 | аналитика: Группа\n21. 2020-11-13T12:00:03Z | Поступление на расчетный счет 00000000036 от 13.11.2020 12:00:03 | 0 / 0 | 313600 | аналитика: Группа\n22. 2020-11-10T15:39:13Z | Поступление на расчетный счет 00000000035 от 10.11.2020 15:39:13 | 0 / 0 | 328300 | аналитика: Группа\n23. 2020-10-26T12:00:00Z | Поступление на расчетный счет 00000000034 от 26.10.2020 12:00:00 | 0 / 0 | 175000 | аналитика: Группа\n24. 2020-08-20T12:00:06Z | Поступление на расчетный счет 00000000032 от 20.08.2020 12:00:06 | 0 / 0 | 3126005 | аналитика: Группа\n25. 2020-07-30T12:00:00Z | Поступление на расчетный счет 00000000029 от 30.07.2020 12:00:00 | 0 / 0 | 20000 | аналитика: Группа\n26. 2020-07-27T12:00:00Z | Поступление на расчетный счет 00000000028 от 27.07.2020 12:00:00 | 0 / 0 | 40860 | аналитика: Группа", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 22, + "question": "а за все время?", + "session_key": "chain_a", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-chain_a", + "status_code": 200, + "ok": true, + "elapsed_ms": 1050, + "reply_type": "factual", + "trace_id": "address-SUaVjX3nT-", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 26.\n1. 2021-11-10T12:00:07Z | Поступление на расчетный счет 00000000013 от 10.11.2021 12:00:07 | 0 / 0 | 20000 | аналитика: Группа\n2. 2021-09-29T12:00:03Z | Поступление на расчетный счет 00000000012 от 29.09.2021 12:00:03 | 0 / 0 | 50000 | аналитика: Группа\n3. 2021-08-31T12:00:04Z | Поступление на расчетный счет 00000000011 от 31.08.2021 12:00:04 | 0 / 0 | 120500 | аналитика: Группа\n4. 2021-06-22T12:00:00Z | Поступление на расчетный счет 00000000010 от 22.06.2021 12:00:00 | 0 / 0 | 498630 | аналитика: Группа\n5. 2021-06-09T12:00:05Z | Поступление на расчетный счет 00000000009 от 09.06.2021 12:00:05 | 0 / 0 | 418960 | аналитика: Группа\n6. 2021-04-28T12:00:08Z | Поступление на расчетный счет 00000000008 от 28.04.2021 12:00:08 | 0 / 0 | 564300 | аналитика: Группа\n7. 2021-04-22T12:00:00Z | Поступление на расчетный счет 00000000007 от 22.04.2021 12:00:00 | 0 / 0 | 982420 | аналитика: Группа\n8. 2021-04-13T12:00:11Z | Поступление на расчетный счет 00000000006 от 13.04.2021 12:00:11 | 0 / 0 | 1882400 | аналитика: Группа\n9. 2021-03-25T12:00:02Z | Поступление на расчетный счет 00000000005 от 25.03.2021 12:00:02 | 0 / 0 | 644315 | аналитика: Группа\n10. 2021-03-24T12:00:03Z | Поступление на расчетный счет 00000000004 от 24.03.2021 12:00:03 | 0 / 0 | 1219990 | аналитика: Группа\n11. 2021-03-18T12:00:00Z | Поступление на расчетный счет 00000000003 от 18.03.2021 12:00:00 | 0 / 0 | 1425310 | аналитика: Группа\n12. 2021-03-12T12:00:03Z | Поступление на расчетный счет 00000000002 от 12.03.2021 12:00:03 | 0 / 0 | 214600 | аналитика: Группа\n13. 2021-02-19T12:00:01Z | Поступление на расчетный счет 00000000001 от 19.02.2021 12:00:01 | 0 / 0 | 518600 | аналитика: Группа\n14. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n15. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n16. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа\n17. 2020-11-30T12:00:07Z | Поступление на расчетный счет 00000000041 от 30.11.2020 12:00:07 | 0 / 0 | 38900 | аналитика: Группа\n18. 2020-11-19T12:00:04Z | Поступление на расчетный счет 00000000039 от 19.11.2020 12:00:04 | 0 / 0 | 3320600 | аналитика: Группа\n19. 2020-11-18T12:00:05Z | Поступление на расчетный счет 00000000038 от 18.11.2020 12:00:05 | 0 / 0 | 745300 | аналитика: Группа\n20. 2020-11-18T12:00:04Z | Поступление на расчетный счет 00000000037 от 18.11.2020 12:00:04 | 0 / 0 | 320000 | аналитика: Группа\n21. 2020-11-13T12:00:03Z | Поступление на расчетный счет 00000000036 от 13.11.2020 12:00:03 | 0 / 0 | 313600 | аналитика: Группа\n22. 2020-11-10T15:39:13Z | Поступление на расчетный счет 00000000035 от 10.11.2020 15:39:13 | 0 / 0 | 328300 | аналитика: Группа\n23. 2020-10-26T12:00:00Z | Поступление на расчетный счет 00000000034 от 26.10.2020 12:00:00 | 0 / 0 | 175000 | аналитика: Группа\n24. 2020-08-20T12:00:06Z | Поступление на расчетный счет 00000000032 от 20.08.2020 12:00:06 | 0 / 0 | 3126005 | аналитика: Группа\n25. 2020-07-30T12:00:00Z | Поступление на расчетный счет 00000000029 от 30.07.2020 12:00:00 | 0 / 0 | 20000 | аналитика: Группа\n26. 2020-07-27T12:00:00Z | Поступление на расчетный счет 00000000028 от 27.07.2020 12:00:00 | 0 / 0 | 40860 | аналитика: Группа", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 23, + "question": "а по счету 60.01 на ту же дату", + "session_key": "chain_a", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-chain_a", + "status_code": 200, + "ok": true, + "elapsed_ms": 5888, + "reply_type": "factual", + "trace_id": "address-brrI_oyM1H", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 200.\nСумма по отобранным движениям: 31878451.5.\n1. 2022-04-18T12:00:00Z | Поступление товаров и услуг 00000000007 от 18.04.2022 12:00:00 | 97.21 / 60.01 | 14790\n2. 2022-04-18T12:00:00Z | Поступление товаров и услуг 00000000007 от 18.04.2022 12:00:00 | 60.01 / 60.02 | 14790\n3. 2022-01-20T12:00:01Z | Списание с расчетного счета 00000000003 от 20.01.2022 12:00:01 | 60.01 / 51 | 1705109.5\n4. 2021-05-17T12:00:00Z | Поступление товаров и услуг 00000000009 от 17.05.2021 12:00:00 | 19.04 / 60.01 | 12000", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 24, + "question": "Покажи банковские операции по договору 15/24", + "session_key": "chain_b", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-chain_b", + "status_code": 200, + "ok": true, + "elapsed_ms": 6300, + "reply_type": "factual", + "trace_id": "address-y1WKb2bNB8", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 3.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53\n3. 2020-08-31T15:00:04Z | Списание с расчетного счета 00000000224 от 31.08.2020 15:00:04 | 91.02 / 51 | 106.47", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 25, + "question": "а за 2020 год", + "session_key": "chain_b", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-chain_b", + "status_code": 200, + "ok": true, + "elapsed_ms": 2970, + "reply_type": "factual", + "trace_id": "address-WblVDPWq-R", + "assistant_reply": "По окну 2020-01-01..2020-12-31 строк не найдено; показаны ближайшие доступные данные 2020-10-15..2020-10-15.\nСобран список банковских операций по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 26, + "question": "а теперь только за май 2020", + "session_key": "chain_b", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-chain_b", + "status_code": 200, + "ok": true, + "elapsed_ms": 3048, + "reply_type": "factual", + "trace_id": "address-dEN6VEOKWt", + "assistant_reply": "По окну 2020-05-01..2020-05-31 строк не найдено; показаны ближайшие доступные данные 2020-10-15..2020-10-15.\nСобран список банковских операций по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 27, + "question": "а по счету 51 на ту же дату", + "session_key": "chain_b", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-chain_b", + "status_code": 200, + "ok": true, + "elapsed_ms": 5916, + "reply_type": "factual", + "trace_id": "address-jhiUTXgyQo", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 24.\nСумма по отобранным движениям: 2234531.1100000003.\n1. 2020-05-29T12:00:02Z | Списание с расчетного счета 00000000151 от 29.05.2020 12:00:02 | 91.02 / 51 | 60\n2. 2020-05-28T20:17:50Z | Списание с расчетного счета 00000000150 от 28.05.2020 20:17:50 | 70 / 51 | 50\n3. 2020-05-28T20:17:24Z | Списание с расчетного счета 00000000149 от 28.05.2020 20:17:24 | 91.02 / 51 | 35\n4. 2020-05-22T10:14:43Z | Списание с расчетного счета 00000000148 от 22.05.2020 10:14:43 | 60.02 / 51 | 142299", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 28, + "question": "Какой остаток по счету 60 на 2020.05", + "session_key": "chain_c", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-chain_c", + "status_code": 200, + "ok": true, + "elapsed_ms": 5025, + "reply_type": "factual", + "trace_id": "address-QQDQfGKE8x", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 6.\nСумма по отобранным движениям: 849499.\n1. 2020-05-22T10:14:43Z | Списание с расчетного счета 00000000148 от 22.05.2020 10:14:43 | 60.02 / 51 | 142299\n2. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 75367\n3. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 211833\n4. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 187967", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 29, + "question": "а теперь по 60.01", + "session_key": "chain_c", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-chain_c", + "status_code": 200, + "ok": true, + "elapsed_ms": 1035, + "reply_type": "factual", + "trace_id": "address-sGUMz9D8k6", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 6.\nСумма по отобранным движениям: 849499.\n1. 2020-05-22T10:14:43Z | Списание с расчетного счета 00000000148 от 22.05.2020 10:14:43 | 60.02 / 51 | 142299\n2. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 75367\n3. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 211833\n4. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 187967", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 30, + "question": "а на ту же дату по 62", + "session_key": "chain_c", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-chain_c", + "status_code": 200, + "ok": true, + "elapsed_ms": 1018, + "reply_type": "factual", + "trace_id": "address-TS5w4sOG2o", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 6.\nСумма по отобранным движениям: 849499.\n1. 2020-05-22T10:14:43Z | Списание с расчетного счета 00000000148 от 22.05.2020 10:14:43 | 60.02 / 51 | 142299\n2. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 75367\n3. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 211833\n4. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 187967", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 31, + "question": "бля епт покажи доки по свк за 20й", + "session_key": "single_31", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_31", + "status_code": 200, + "ok": true, + "elapsed_ms": 7124, + "reply_type": "factual", + "trace_id": "address-slOMDnn4Wt", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 32, + "question": "свк 20 год - покажи доки плс", + "session_key": "single_32", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_32", + "status_code": 200, + "ok": true, + "elapsed_ms": 6098, + "reply_type": "factual", + "trace_id": "address-sHnmk3z8vL", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 33, + "question": "покажи банк опер по дог 15/24 пж", + "session_key": "single_33", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_33", + "status_code": 200, + "ok": true, + "elapsed_ms": 6270, + "reply_type": "factual", + "trace_id": "address-OBmS2sLCQQ", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 34, + "question": "остаток 60 на 2020 май покеж", + "session_key": "single_34", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_34", + "status_code": 200, + "ok": true, + "elapsed_ms": 5916, + "reply_type": "factual", + "trace_id": "address-TAa32oXlRU", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 6.\nСумма по отобранным движениям: 849499.\n1. 2020-05-22T10:14:43Z | Списание с расчетного счета 00000000148 от 22.05.2020 10:14:43 | 60.02 / 51 | 142299\n2. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 75367\n3. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 211833\n4. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 187967", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 35, + "question": "по свк за весь период че есть", + "session_key": "single_35", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_35", + "status_code": 200, + "ok": true, + "elapsed_ms": 10358, + "reply_type": "clarification_required", + "trace_id": "-R4PnGpemze3u9", + "assistant_reply": "Коротко: Наиболее вероятный механизм проблемы подтвержден частично и требует первичной проверки. Что сломано:\n- Есть признаки проблемы, но без уточнений по периоду и объекту вывод ненадежен. Почему это похоже на проблему:\n- Сигнал проблемы есть, но механизм подтвержден не полностью. На чем это основано:\n- Опора частичная: часть требований покрыта не полностью.\n- Отдельно не подтверждено или покрыто частично: R1. Что проверить первым:\n- Уточните период проверки, чтобы подтвердить проблему без лишнего шума.\n- Проверьте связку документов и проводок по проблемному участку в указанном периоде.\n- Уточните период проверки (например, июль 2020). Ограничения:\n- Ни одно требование не получило подтвержденного покрытия.\n- Нет explainable-сигналов why_included в результатах выборки.\n- required anchors claim-bound grounding.\n- evidence.\n- Targeted evidence acquisition claim target path.", + "mcp_call_status": null, + "limited_reason_category": null, + "llm_decomposition_applied": null, + "llm_decomposition_reason": null, + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 36, + "question": "Покажи технические константы конфигурации", + "session_key": "single_36", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_36", + "status_code": 200, + "ok": true, + "elapsed_ms": 9752, + "reply_type": "clarification_required", + "trace_id": "4ynYX0aRtOVrJh", + "assistant_reply": "Коротко: Проблема подтверждается частично; для уверенного вывода нужны уточнения. Что сломано:\n- Есть признаки проблемы, но без уточнений по периоду и объекту вывод ненадежен. Почему это похоже на проблему:\n- Сигнал проблемы есть, но механизм подтвержден не полностью. На чем это основано:\n- Опора частичная: часть требований покрыта не полностью.\n- Отдельно не подтверждено или покрыто частично: R1. Что проверить первым:\n- Уточните период проверки, чтобы подтвердить проблему без лишнего шума.\n- Проверьте связку документов и проводок по проблемному участку в указанном периоде.\n- Уточните период проверки (например, июль 2020). Ограничения:\n- Ни одно требование не получило подтвержденного покрытия.\n- Нет explainable-сигналов why_included в результатах выборки.\n- required anchors claim-bound grounding.\n- evidence.\n- Targeted evidence acquisition claim target path.", + "mcp_call_status": null, + "limited_reason_category": null, + "llm_decomposition_applied": null, + "llm_decomposition_reason": null, + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 37, + "question": "кто президент США", + "session_key": "single_37", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_37", + "status_code": 200, + "ok": true, + "elapsed_ms": 8017, + "reply_type": "clarification_required", + "trace_id": "6kdfrhpnTV-9et", + "assistant_reply": "Коротко: Наиболее вероятный механизм проблемы подтвержден частично и требует первичной проверки. Что сломано:\n- Есть признаки проблемы, но без уточнений по периоду и объекту вывод ненадежен. Почему это похоже на проблему:\n- Сигнал проблемы есть, но механизм подтвержден не полностью. На чем это основано:\n- Опора частичная: часть требований покрыта не полностью.\n- Отдельно не подтверждено или покрыто частично: R1. Что проверить первым:\n- Уточните период проверки, чтобы подтвердить проблему без лишнего шума.\n- Проверьте связку документов и проводок по проблемному участку в указанном периоде.\n- Уточните период проверки (например, июль 2020). Ограничения:\n- Ни одно требование не получило подтвержденного покрытия.\n- Нет explainable-сигналов why_included в результатах выборки.\n- required anchors claim-bound grounding.\n- evidence.\n- Targeted evidence acquisition claim target path.", + "mcp_call_status": null, + "limited_reason_category": null, + "llm_decomposition_applied": null, + "llm_decomposition_reason": null, + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 38, + "question": "Кто нам должен на 2020-12-31", + "session_key": "single_38", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_38", + "status_code": 200, + "ok": true, + "elapsed_ms": 11, + "reply_type": "partial_coverage", + "trace_id": "address-wRcdOYEkks", + "assistant_reply": "Этот запрос не подходит под address_query V1.\nПричина: intent пока не поддержан в address V1.\nЧто нужно уточнить: переформулируйте вопрос как адресный lookup по счету/контрагенту/договору.", + "mcp_call_status": "skipped", + "limited_reason_category": "unsupported", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 39, + "question": "Кому мы должны на 2020-12-31", + "session_key": "single_39", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_39", + "status_code": 200, + "ok": true, + "elapsed_ms": 279, + "reply_type": "factual", + "trace_id": "address-TIXjZPrNp9", + "assistant_reply": "Срез обязательств (payables) собран по движениям с account scope 60/76.\nСтрок отобрано: 20.\n1. 2020-12-31T23:59:59Z | Формирование записей книги покупок 00000000004 от 31.12.2020 23:59:59 | 68.02 / 19.09 | 127216.46\n2. 2020-12-31T23:59:59Z | Формирование записей книги покупок 00000000004 от 31.12.2020 23:59:59 | 68.02 / 19.09 | 235682.42\n3. 2020-12-31T23:59:59Z | Формирование записей книги покупок 00000000004 от 31.12.2020 23:59:59 | 68.02 / 19.09 | 337318.8\n4. 2020-12-31T23:59:59Z | Регламентная операция 00000000097 от 31.12.2020 23:59:59 | 91.09 / 91.02 | 10615989.53\n5. 2020-12-31T23:59:59Z | Регламентная операция 00000000097 от 31.12.2020 23:59:59 | 91.01 / 91.09 | 1614344.98\n6. 2020-12-31T23:59:59Z | Регламентная операция 00000000097 от 31.12.2020 23:59:59 | 90.09 / 90.02.1 | 6430415.34", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 40, + "question": "Покажи дебиторскую задолженность за 2020", + "session_key": "single_40", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_40", + "status_code": 200, + "ok": true, + "elapsed_ms": 1020, + "reply_type": "factual", + "trace_id": "address-_HK2QJhWek", + "assistant_reply": "Срез требований (receivables) собран по движениям с account scope 62/76.\nСтрок отобрано: 20.\n1. 2020-12-31T23:59:59Z | Формирование записей книги покупок 00000000004 от 31.12.2020 23:59:59 | 68.02 / 19.09 | 127216.46\n2. 2020-12-31T23:59:59Z | Формирование записей книги покупок 00000000004 от 31.12.2020 23:59:59 | 68.02 / 19.09 | 235682.42\n3. 2020-12-31T23:59:59Z | Формирование записей книги покупок 00000000004 от 31.12.2020 23:59:59 | 68.02 / 19.09 | 337318.8\n4. 2020-12-31T23:59:59Z | Регламентная операция 00000000097 от 31.12.2020 23:59:59 | 91.09 / 91.02 | 10615989.53\n5. 2020-12-31T23:59:59Z | Регламентная операция 00000000097 от 31.12.2020 23:59:59 | 91.01 / 91.09 | 1614344.98\n6. 2020-12-31T23:59:59Z | Регламентная операция 00000000097 от 31.12.2020 23:59:59 | 90.09 / 90.02.1 | 6430415.34", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 41, + "question": "Покажи кредиторскую задолженность за 2020", + "session_key": "single_41", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_41", + "status_code": 200, + "ok": true, + "elapsed_ms": 1015, + "reply_type": "factual", + "trace_id": "address-U5yrqPf-_2", + "assistant_reply": "Срез обязательств (payables) собран по движениям с account scope 60/76.\nСтрок отобрано: 20.\n1. 2020-12-31T23:59:59Z | Формирование записей книги покупок 00000000004 от 31.12.2020 23:59:59 | 68.02 / 19.09 | 127216.46\n2. 2020-12-31T23:59:59Z | Формирование записей книги покупок 00000000004 от 31.12.2020 23:59:59 | 68.02 / 19.09 | 235682.42\n3. 2020-12-31T23:59:59Z | Формирование записей книги покупок 00000000004 от 31.12.2020 23:59:59 | 68.02 / 19.09 | 337318.8\n4. 2020-12-31T23:59:59Z | Регламентная операция 00000000097 от 31.12.2020 23:59:59 | 91.09 / 91.02 | 10615989.53\n5. 2020-12-31T23:59:59Z | Регламентная операция 00000000097 от 31.12.2020 23:59:59 | 91.01 / 91.09 | 1614344.98\n6. 2020-12-31T23:59:59Z | Регламентная операция 00000000097 от 31.12.2020 23:59:59 | 90.09 / 90.02.1 | 6430415.34", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 42, + "question": "Покажи незакрытые договоры на 2020-12-31", + "session_key": "single_42", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_42", + "status_code": 200, + "ok": true, + "elapsed_ms": 5873, + "reply_type": "partial_coverage", + "trace_id": "address-g6G7BE6ItI", + "assistant_reply": "Для точного адресного поиска не хватает обязательного якоря.\nПричина: для open_items нужен якорь контрагента или договора.\nЧто нужно уточнить: укажите контрагента или номер/название договора.", + "mcp_call_status": "skipped", + "limited_reason_category": "missing_anchor", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 43, + "question": "Какие открытые договоры есть на 2020-12-31", + "session_key": "single_43", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_43", + "status_code": 200, + "ok": true, + "elapsed_ms": 5013, + "reply_type": "partial_coverage", + "trace_id": "address-_pn_73-bkB", + "assistant_reply": "Для точного адресного поиска не хватает обязательного якоря.\nПричина: для open_items нужен якорь контрагента или договора.\nЧто нужно уточнить: укажите контрагента или номер/название договора.", + "mcp_call_status": "skipped", + "limited_reason_category": "missing_anchor", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 44, + "question": "Покажи хвосты по контрагенту СВК на 2020-12-31", + "session_key": "single_44", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_44", + "status_code": 200, + "ok": true, + "elapsed_ms": 7394, + "reply_type": "partial_coverage", + "trace_id": "address-WQ7p8Vto1p", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 45, + "question": "Есть ли незакрытые позиции по договору 15/24 на 2020-12-31", + "session_key": "single_45", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_45", + "status_code": 200, + "ok": true, + "elapsed_ms": 6120, + "reply_type": "partial_coverage", + "trace_id": "address-RX99SRm2dk", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 46, + "question": "Покажи открытые позиции по договору 15/24", + "session_key": "single_46", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_46", + "status_code": 200, + "ok": true, + "elapsed_ms": 6078, + "reply_type": "partial_coverage", + "trace_id": "address-8v-VptxVtr", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 47, + "question": "Покажи документы по контрагенту СВК за 2020", + "session_key": "chain_d", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-chain_d", + "status_code": 200, + "ok": true, + "elapsed_ms": 6091, + "reply_type": "factual", + "trace_id": "address-fWqnsfL9JK", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 48, + "question": "а только за июль 2020", + "session_key": "chain_d", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-chain_d", + "status_code": 200, + "ok": true, + "elapsed_ms": 1025, + "reply_type": "factual", + "trace_id": "address-_maCeE6adG", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 2.\n1. 2020-07-30T12:00:00Z | Поступление на расчетный счет 00000000029 от 30.07.2020 12:00:00 | 0 / 0 | 20000 | аналитика: Группа\n2. 2020-07-27T12:00:00Z | Поступление на расчетный счет 00000000028 от 27.07.2020 12:00:00 | 0 / 0 | 40860 | аналитика: Группа", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 49, + "question": "а теперь банковские операции", + "session_key": "chain_d", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-chain_d", + "status_code": 200, + "ok": true, + "elapsed_ms": 8303, + "reply_type": "partial_coverage", + "trace_id": "address--f3lxuGwWL", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 50, + "question": "а за весь период", + "session_key": "chain_d", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-chain_d", + "status_code": 200, + "ok": true, + "elapsed_ms": 2171, + "reply_type": "partial_coverage", + "trace_id": "address-jQrlGu5_pL", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 51, + "question": "а сальдо по счету 51 на ту же дату", + "session_key": "chain_d", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-chain_d", + "status_code": 200, + "ok": true, + "elapsed_ms": 5844, + "reply_type": "factual", + "trace_id": "address-uNQaDR0qR3", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 200.\nСумма по отобранным движениям: 28075894.400000002.\n1. 2022-10-03T12:00:00Z | Списание с расчетного счета 00000000018 от 03.10.2022 12:00:00 | 76.03 / 51 | 355.2\n2. 2022-08-10T12:00:00Z | Списание с расчетного счета 00000000017 от 10.08.2022 12:00:00 | 91.02 / 51 | 990\n3. 2022-07-28T12:00:00Z | Списание с расчетного счета 00000000016 от 28.07.2022 12:00:00 | 69.11 / 51 | 1000\n4. 2022-07-11T12:00:00Z | Списание с расчетного счета 00000000014 от 11.07.2022 12:00:00 | 76.05 / 51 | 280", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 52, + "question": "Покажи незакрытые позиции по контрагенту СВК", + "session_key": "chain_e", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-chain_e", + "status_code": 200, + "ok": true, + "elapsed_ms": 6035, + "reply_type": "partial_coverage", + "trace_id": "address-2n6cAvvLns", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 53, + "question": "а на 2020-12-31", + "session_key": "chain_e", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-chain_e", + "status_code": 200, + "ok": true, + "elapsed_ms": 1053, + "reply_type": "partial_coverage", + "trace_id": "address-jZyu9voM25", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 54, + "question": "а теперь по договору 15/24", + "session_key": "chain_e", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-chain_e", + "status_code": 200, + "ok": true, + "elapsed_ms": 7360, + "reply_type": "partial_coverage", + "trace_id": "address-uOrM8pdJSu", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 55, + "question": "а только банковские операции", + "session_key": "chain_e", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-chain_e", + "status_code": 200, + "ok": true, + "elapsed_ms": 8148, + "reply_type": "partial_coverage", + "trace_id": "address-lCZsPDCeln", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 56, + "question": "а за май 2020", + "session_key": "chain_e", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-chain_e", + "status_code": 200, + "ok": true, + "elapsed_ms": 2925, + "reply_type": "partial_coverage", + "trace_id": "address-SdipomZHF-", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 57, + "question": "show documents by counterparty svk for 2020", + "session_key": "single_57", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_57", + "status_code": 200, + "ok": true, + "elapsed_ms": 5939, + "reply_type": "factual", + "trace_id": "address-HE4r-6-1Mr", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 58, + "question": "show bank operations by contract 15/24", + "session_key": "single_58", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_58", + "status_code": 200, + "ok": true, + "elapsed_ms": 6239, + "reply_type": "factual", + "trace_id": "address-jo4Qc9Q6Lw", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 59, + "question": "kakoi ostatok po schetu 60.01 na 2020-07-31", + "session_key": "single_59", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_59", + "status_code": 200, + "ok": true, + "elapsed_ms": 5924, + "reply_type": "factual", + "trace_id": "address-Xszu6oqryW", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 5.\nСумма по отобранным движениям: 216200.\n1. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400\n2. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600\n3. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400\n4. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200", + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "number": 60, + "question": "kto nam dolzhen na 2020-12-31", + "session_key": "single_60", + "session_id": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_60", + "status_code": 200, + "ok": true, + "elapsed_ms": 11119, + "reply_type": "clarification_required", + "trace_id": "YaplyRBkaIxbtZ", + "assistant_reply": "Коротко: Проблема подтверждается частично; для уверенного вывода нужны уточнения. Что сломано:\n- Есть признаки проблемы, но без уточнений по периоду и объекту вывод ненадежен. Почему это похоже на проблему:\n- Сигнал проблемы есть, но механизм подтвержден не полностью. На чем это основано:\n- Опора частичная: часть требований покрыта не полностью.\n- Отдельно не подтверждено или покрыто частично: R1. Что проверить первым:\n- Проверьте связку документов и проводок по проблемному участку в указанном периоде. Ограничения:\n- Якоря из вопроса без прямого подтверждения: 2020-12, period:2020-12.\n- Ни одно требование не получило подтвержденного покрытия.\n- Нет explainable-сигналов why_included в результатах выборки.\n- required anchors claim-bound grounding.\n- evidence.\n- Targeted evidence acquisition claim target path.", + "mcp_call_status": null, + "limited_reason_category": null, + "llm_decomposition_applied": null, + "llm_decomposition_reason": null, + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + } + ] +} \ No newline at end of file diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup/run_summary.json b/docs/ADDRESS/runs/2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup/run_summary.json new file mode 100644 index 0000000..f2c1a9e --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup/run_summary.json @@ -0,0 +1,89 @@ +{ + "run_id": "2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup", + "generated_at": "2026-04-02T06:24:42", + "source_questions_file": "docs/ADDRESS/1.txt", + "backend_url": "http://127.0.0.1:8787/api/assistant/message", + "llm_provider": "local", + "llm_base_url": "http://127.0.0.1:1234", + "llm_model": "qwen2.5-14b-instruct-1m", + "totals": { + "questions_total": 60, + "ok_200_count": 60, + "factual_count": 39, + "partial_coverage_count": 17, + "clarification_required_count": 4, + "other_reply_types_count": 0, + "http_error_count": 0, + "llm_decomposition_applied_count": 41, + "fallback_rule_hit_count": 0, + "avg_elapsed_ms": 5429.8 + }, + "distributions": { + "mcp_call_status": { + "matched_non_empty": 39, + "materialized_but_not_anchor_matched": 13, + "(null)": 4, + "skipped": 3, + "error": 1 + }, + "limited_reason_category": { + "empty_match": 13, + "missing_anchor": 2, + "execution_error": 1, + "unsupported": 1 + }, + "llm_decomposition_reason": { + "normalized_fragment_applied": 41, + "not_address_like": 14, + "(null)": 4, + "normalized_fragment_same": 1 + }, + "error_code": {} + }, + "followup_sessions": { + "single_1": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_1", + "single_2": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_2", + "single_3": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_3", + "single_4": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_4", + "single_5": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_5", + "single_6": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_6", + "single_7": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_7", + "single_8": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_8", + "single_9": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_9", + "single_10": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_10", + "single_11": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_11", + "single_12": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_12", + "single_13": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_13", + "single_14": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_14", + "single_15": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_15", + "single_16": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_16", + "single_17": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_17", + "single_18": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_18", + "single_19": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_19", + "chain_a": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-chain_a", + "chain_b": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-chain_b", + "chain_c": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-chain_c", + "single_31": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_31", + "single_32": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_32", + "single_33": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_33", + "single_34": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_34", + "single_35": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_35", + "single_36": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_36", + "single_37": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_37", + "single_38": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_38", + "single_39": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_39", + "single_40": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_40", + "single_41": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_41", + "single_42": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_42", + "single_43": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_43", + "single_44": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_44", + "single_45": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_45", + "single_46": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_46", + "chain_d": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-chain_d", + "chain_e": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-chain_e", + "single_57": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_57", + "single_58": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_58", + "single_59": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_59", + "single_60": "asst-2026-04-02_Address_Full_Live_Run_2026-04-02_09-19-16_dedup-single_60" + } +} \ No newline at end of file diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14/README.md b/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14/README.md new file mode 100644 index 0000000..68aec26 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14/README.md @@ -0,0 +1,23 @@ +# 2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14 + +Generated at: 2026-04-02T09:43:17 +Questions file: X:\1C\NDC_1C\docs\ADDRESS\question_sets\address_slang_stress_2026-04-02.json +Backend URL: http://127.0.0.1:8787/api/assistant/message +LLM: local / qwen2.5-14b-instruct-1m @ http://127.0.0.1:1234 + +## Totals +- questions_total: 60 +- ok_200_count: 60 +- semantic_pass_count: 48 +- semantic_pass_rate: 0.8 +- factual_count: 43 +- partial_coverage_count: 17 +- clarification_required_count: 0 +- http_error_count: 0 +- llm_decomposition_applied_count: 54 +- avg_elapsed_ms: 6047.8 + +## Files +- run_summary.json +- full_live_results.json +- failures_only.json diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14/failures_only.json b/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14/failures_only.json new file mode 100644 index 0000000..7fba01c --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14/failures_only.json @@ -0,0 +1,326 @@ +[ + { + "index": 4, + "id": "S004", + "question": "какие у свк есть доки за 2020?", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14-s004", + "status_code": 200, + "ok": true, + "elapsed_ms": 8377, + "reply_type": "partial_coverage", + "trace_id": "address-e49ajdTku0", + "assistant_reply": "Для точного адресного поиска не хватает обязательного якоря.\nПричина: якорь контрагента/договора не найден в материализованных live-строках.\nЧто нужно уточнить: уточните контрагента точным именем или добавьте ИНН/договор.", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": false, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": false, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "missing_anchor", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 17, + "id": "S017", + "question": "свк банк опер за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14-s017", + "status_code": 200, + "ok": true, + "elapsed_ms": 5404, + "reply_type": "partial_coverage", + "trace_id": "address-8Et-1Ef9z7", + "assistant_reply": "Этот запрос не подходит под address_query V1.\nПричина: intent пока не поддержан в address V1.\nЧто нужно уточнить: переформулируйте вопрос как адресный lookup по счету/контрагенту/договору.", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "unknown", + "intent_match": false, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": false, + "mcp_call_status": "skipped", + "limited_reason_category": "unsupported", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 18, + "id": "S018", + "question": "че у свк по банку за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14-s018", + "status_code": 200, + "ok": true, + "elapsed_ms": 5484, + "reply_type": "partial_coverage", + "trace_id": "address-YwNwxMgUrG", + "assistant_reply": "Этот запрос не подходит под address_query V1.\nПричина: intent пока не поддержан в address V1.\nЧто нужно уточнить: переформулируйте вопрос как адресный lookup по счету/контрагенту/договору.", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "unknown", + "intent_match": false, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": false, + "mcp_call_status": "skipped", + "limited_reason_category": "unsupported", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 19, + "id": "S019", + "question": "свк списания/поступления за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14-s019", + "status_code": 200, + "ok": true, + "elapsed_ms": 6183, + "reply_type": "partial_coverage", + "trace_id": "address-71c-6_L1b0", + "assistant_reply": "Этот запрос не подходит под address_query V1.\nПричина: intent пока не поддержан в address V1.\nЧто нужно уточнить: переформулируйте вопрос как адресный lookup по счету/контрагенту/договору.", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "unknown", + "intent_match": false, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": false, + "mcp_call_status": "skipped", + "limited_reason_category": "unsupported", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 21, + "id": "S021", + "question": "transactions by counterparty svk 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14-s021", + "status_code": 200, + "ok": true, + "elapsed_ms": 6113, + "reply_type": "factual", + "trace_id": "address-CmnZkVm1CK", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": false, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": false, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 36, + "id": "S036", + "question": "из чего состоит остаток по счету 60 на 2020.05", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14-s036", + "status_code": 200, + "ok": true, + "elapsed_ms": 6107, + "reply_type": "factual", + "trace_id": "address-tCa1CbcqSD", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 6.\nСумма по отобранным движениям: 849499.\n1. 2020-05-22T10:14:43Z | Списание с расчетного счета 00000000148 от 22.05.2020 10:14:43 | 60.02 / 51 | 142299\n2. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 75367\n3. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 211833\n4. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 187967", + "expected_intent": "documents_forming_balance", + "actual_intent": "account_balance_snapshot", + "intent_match": false, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": false, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 37, + "id": "S037", + "question": "раскрой остаток 60.01 по документам на конец июля 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14-s037", + "status_code": 200, + "ok": true, + "elapsed_ms": 6109, + "reply_type": "factual", + "trace_id": "address-4-HO33hhY_", + "assistant_reply": "Собран список документов по договору (live address lane).\nСтрок отобрано: 5.\n1. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400\n2. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600\n3. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400\n4. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200\n5. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 7600", + "expected_intent": "documents_forming_balance", + "actual_intent": "list_documents_by_contract", + "intent_match": false, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": false, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 38, + "id": "S038", + "question": "доки под остатком 60.01 на 2020-07-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14-s038", + "status_code": 200, + "ok": true, + "elapsed_ms": 6096, + "reply_type": "factual", + "trace_id": "address-_lwIn9s5iS", + "assistant_reply": "Собран список документов по договору (live address lane).\nСтрок отобрано: 5.\n1. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400\n2. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600\n3. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400\n4. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200\n5. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 7600", + "expected_intent": "documents_forming_balance", + "actual_intent": "list_documents_by_contract", + "intent_match": false, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": false, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 41, + "id": "S041", + "question": "по счету 62.01 раскрой остаток документами на 2020-12-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14-s041", + "status_code": 200, + "ok": true, + "elapsed_ms": 8322, + "reply_type": "partial_coverage", + "trace_id": "address-2O8vRhRFfB", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.", + "expected_intent": "documents_forming_balance", + "actual_intent": "list_documents_by_contract", + "intent_match": false, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": false, + "mcp_call_status": "no_raw_rows", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 42, + "id": "S042", + "question": "из чего остаток по счету 51 на 2020-06-30", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14-s042", + "status_code": 200, + "ok": true, + "elapsed_ms": 5923, + "reply_type": "factual", + "trace_id": "address-rNaUez9YMa", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 30.\nСумма по отобранным движениям: 4579658.75.\n1. 2020-06-30T12:00:07Z | Списание с расчетного счета 00000000180 от 30.06.2020 12:00:07 | 66.03 / 51 | 35000\n2. 2020-06-30T12:00:05Z | Списание с расчетного счета 00000000178 от 30.06.2020 12:00:05 | 60.01 / 51 | 15800\n3. 2020-06-30T12:00:04Z | Списание с расчетного счета 00000000177 от 30.06.2020 12:00:04 | 70 / 51 | 50\n4. 2020-06-30T12:00:03Z | Списание с расчетного счета 00000000176 от 30.06.2020 12:00:03 | 91.02 / 51 | 35", + "expected_intent": "documents_forming_balance", + "actual_intent": "account_balance_snapshot", + "intent_match": false, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": false, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 45, + "id": "S045", + "question": "какие документы по контракту 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14-s045", + "status_code": 200, + "ok": true, + "elapsed_ms": 8092, + "reply_type": "partial_coverage", + "trace_id": "address-w_HybB7rZk", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_counterparty", + "intent_match": false, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": false, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 50, + "id": "S050", + "question": "покеж документы по 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14-s050", + "status_code": 200, + "ok": true, + "elapsed_ms": 5991, + "reply_type": "partial_coverage", + "trace_id": "address-hD4hKSeduf", + "assistant_reply": "Не удалось выполнить адресный live-запрос в V1.\nПричина: live MCP вызов завершился ошибкой.\nЧто нужно уточнить: MCP fetch failed: This operation was aborted.", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_counterparty", + "intent_match": false, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": false, + "mcp_call_status": "error", + "limited_reason_category": "execution_error", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + } +] diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14/full_live_results.json b/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14/full_live_results.json new file mode 100644 index 0000000..1c19925 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14/full_live_results.json @@ -0,0 +1,1680 @@ +{ + "run_id": "2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14", + "generated_at": "2026-04-02T09:43:17", + "summary": { + "run_id": "2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14", + "generated_at": "2026-04-02T09:43:17", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\address_slang_stress_2026-04-02.json", + "backend_url": "http://127.0.0.1:8787/api/assistant/message", + "llm_provider": "local", + "llm_model": "qwen2.5-14b-instruct-1m", + "llm_base_url": "http://127.0.0.1:1234", + "totals": { + "questions_total": 60, + "ok_200_count": 60, + "semantic_pass_count": 48, + "semantic_pass_rate": 0.8, + "factual_count": 43, + "partial_coverage_count": 17, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_applied_count": 54, + "avg_elapsed_ms": 6047.8 + }, + "distributions": { + "reply_type": { + "partial_coverage": 17, + "factual": 43 + }, + "actual_intent": { + "list_documents_by_counterparty": 14, + "bank_operations_by_counterparty": 7, + "unknown": 3, + "account_balance_snapshot": 18, + "documents_forming_balance": 3, + "list_documents_by_contract": 9, + "bank_operations_by_contract": 6 + }, + "actual_mode": { + "address_query": 60 + }, + "mcp_call_status": { + "materialized_but_not_anchor_matched": 10, + "matched_non_empty": 43, + "skipped": 3, + "no_raw_rows": 2, + "materialized_but_filtered_out_by_recipe": 1, + "error": 1 + }, + "limited_reason_category": { + "empty_match": 11, + "missing_anchor": 1, + "unsupported": 3, + "recipe_visibility_gap": 1, + "execution_error": 1 + } + } + }, + "rows": [ + { + "index": 1, + "id": "S001", + "question": "свк доки за 2020 покаж пж", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14-s001", + "status_code": 200, + "ok": true, + "elapsed_ms": 8522, + "reply_type": "partial_coverage", + "trace_id": "address-3Qn7xC5-jM", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 2, + "id": "S002", + "question": "покеж все доки по свк за 20 год", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14-s002", + "status_code": 200, + "ok": true, + "elapsed_ms": 5863, + "reply_type": "factual", + "trace_id": "address-oCakSK_mw0", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 3, + "id": "S003", + "question": "дай список документов по свк за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14-s003", + "status_code": 200, + "ok": true, + "elapsed_ms": 6115, + "reply_type": "factual", + "trace_id": "address-7-d9oJ9MWm", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 4, + "id": "S004", + "question": "какие у свк есть доки за 2020?", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14-s004", + "status_code": 200, + "ok": true, + "elapsed_ms": 8377, + "reply_type": "partial_coverage", + "trace_id": "address-e49ajdTku0", + "assistant_reply": "Для точного адресного поиска не хватает обязательного якоря.\nПричина: якорь контрагента/договора не найден в материализованных live-строках.\nЧто нужно уточнить: уточните контрагента точным именем или добавьте ИНН/договор.", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": false, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": false, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "missing_anchor", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 5, + "id": "S005", + "question": "че по свк по докам за 2020 год", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14-s005", + "status_code": 200, + "ok": true, + "elapsed_ms": 714, + "reply_type": "factual", + "trace_id": "address-Wq0xLEe4vM", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_without_llm", + "fallback_rule_hit": "documents_counterparty_year_rewrite", + "error_code": null, + "error_message": null + }, + { + "index": 6, + "id": "S006", + "question": "ёпт покажи доки по свк за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14-s006", + "status_code": 200, + "ok": true, + "elapsed_ms": 6147, + "reply_type": "factual", + "trace_id": "address-_Oagu4987L", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 7, + "id": "S007", + "question": "бля, доки свк 2020 вывали", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14-s007", + "status_code": 200, + "ok": true, + "elapsed_ms": 6095, + "reply_type": "factual", + "trace_id": "address-OvYRxc2XLP", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 8, + "id": "S008", + "question": "svk docs for 2020 please", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14-s008", + "status_code": 200, + "ok": true, + "elapsed_ms": 6072, + "reply_type": "factual", + "trace_id": "address-Hl2t1BjF7m", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 9, + "id": "S009", + "question": "docs by counterparty svk year 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14-s009", + "status_code": 200, + "ok": true, + "elapsed_ms": 8418, + "reply_type": "partial_coverage", + "trace_id": "address-9yFfGB_aBL", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 10, + "id": "S010", + "question": "по контрагенту свк покаж документы за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14-s010", + "status_code": 200, + "ok": true, + "elapsed_ms": 6839, + "reply_type": "factual", + "trace_id": "address-nuB3tG8zYH", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 11, + "id": "S011", + "question": "плс доки по свк 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14-s011", + "status_code": 200, + "ok": true, + "elapsed_ms": 9434, + "reply_type": "partial_coverage", + "trace_id": "address-8FhHsAxv8Y", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 12, + "id": "S012", + "question": "свк док за 2020 гони", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14-s012", + "status_code": 200, + "ok": true, + "elapsed_ms": 717, + "reply_type": "factual", + "trace_id": "address-883-ZRJh7I", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_without_llm", + "fallback_rule_hit": "documents_counterparty_year_rewrite", + "error_code": null, + "error_message": null + }, + { + "index": 13, + "id": "S013", + "question": "по свк банковские операции за 2020 покаж", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14-s013", + "status_code": 200, + "ok": true, + "elapsed_ms": 7128, + "reply_type": "factual", + "trace_id": "address-wi8q_Jbl0X", + "assistant_reply": "Собран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 14, + "id": "S014", + "question": "свк выписка банка 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14-s014", + "status_code": 200, + "ok": true, + "elapsed_ms": 7110, + "reply_type": "factual", + "trace_id": "address-eQKd2cjQPE", + "assistant_reply": "Собран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 15, + "id": "S015", + "question": "платежи по свк за 2020 выведи", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14-s015", + "status_code": 200, + "ok": true, + "elapsed_ms": 7087, + "reply_type": "factual", + "trace_id": "address-paJUzaWor9", + "assistant_reply": "Собран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 16, + "id": "S016", + "question": "оплаты по свк за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14-s016", + "status_code": 200, + "ok": true, + "elapsed_ms": 6074, + "reply_type": "factual", + "trace_id": "address-z57iSW0z7q", + "assistant_reply": "Собран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 17, + "id": "S017", + "question": "свк банк опер за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14-s017", + "status_code": 200, + "ok": true, + "elapsed_ms": 5404, + "reply_type": "partial_coverage", + "trace_id": "address-8Et-1Ef9z7", + "assistant_reply": "Этот запрос не подходит под address_query V1.\nПричина: intent пока не поддержан в address V1.\nЧто нужно уточнить: переформулируйте вопрос как адресный lookup по счету/контрагенту/договору.", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "unknown", + "intent_match": false, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": false, + "mcp_call_status": "skipped", + "limited_reason_category": "unsupported", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 18, + "id": "S018", + "question": "че у свк по банку за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14-s018", + "status_code": 200, + "ok": true, + "elapsed_ms": 5484, + "reply_type": "partial_coverage", + "trace_id": "address-YwNwxMgUrG", + "assistant_reply": "Этот запрос не подходит под address_query V1.\nПричина: intent пока не поддержан в address V1.\nЧто нужно уточнить: переформулируйте вопрос как адресный lookup по счету/контрагенту/договору.", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "unknown", + "intent_match": false, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": false, + "mcp_call_status": "skipped", + "limited_reason_category": "unsupported", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 19, + "id": "S019", + "question": "свк списания/поступления за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14-s019", + "status_code": 200, + "ok": true, + "elapsed_ms": 6183, + "reply_type": "partial_coverage", + "trace_id": "address-71c-6_L1b0", + "assistant_reply": "Этот запрос не подходит под address_query V1.\nПричина: intent пока не поддержан в address V1.\nЧто нужно уточнить: переформулируйте вопрос как адресный lookup по счету/контрагенту/договору.", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "unknown", + "intent_match": false, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": false, + "mcp_call_status": "skipped", + "limited_reason_category": "unsupported", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 20, + "id": "S020", + "question": "bank ops by svk for 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14-s020", + "status_code": 200, + "ok": true, + "elapsed_ms": 240, + "reply_type": "factual", + "trace_id": "address-0Gvhnjs_-2", + "assistant_reply": "Собран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 1.\n1. 2020-12-16T16:20:51Z | Списание с расчетного счета 00000000293 от 16.12.2020 16:20:51 | 0 / 0 | 60 | аналитика: СБЕРБАНК, ПАО", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_without_llm", + "fallback_rule_hit": "bank_operations_counterparty_year_rewrite", + "error_code": null, + "error_message": null + }, + { + "index": 21, + "id": "S021", + "question": "transactions by counterparty svk 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14-s021", + "status_code": 200, + "ok": true, + "elapsed_ms": 6113, + "reply_type": "factual", + "trace_id": "address-CmnZkVm1CK", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": false, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": false, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 22, + "id": "S022", + "question": "бля, по свк банковские платежки 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14-s022", + "status_code": 200, + "ok": true, + "elapsed_ms": 7100, + "reply_type": "factual", + "trace_id": "address-kDZbOOEn03", + "assistant_reply": "Собран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 23, + "id": "S023", + "question": "сальдо по счету 60.01 на дату 2020-07-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14-s023", + "status_code": 200, + "ok": true, + "elapsed_ms": 6080, + "reply_type": "factual", + "trace_id": "address-o_-irZDf90", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 5.\nСумма по отобранным движениям: 216200.\n1. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400\n2. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600\n3. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400\n4. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 24, + "id": "S024", + "question": "остаток по счету 60.01 на 2020.05", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14-s024", + "status_code": 200, + "ok": true, + "elapsed_ms": 6093, + "reply_type": "factual", + "trace_id": "address-bzfEBnZK8a", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 5.\nСумма по отобранным движениям: 707200.\n1. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 75367\n2. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 211833\n3. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 187967\n4. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 162033", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 25, + "id": "S025", + "question": "покажи остаток по 60.01 за май 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14-s025", + "status_code": 200, + "ok": true, + "elapsed_ms": 6094, + "reply_type": "factual", + "trace_id": "address-eT_6jkSfUc", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 5.\nСумма по отобранным движениям: 707200.\n1. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 75367\n2. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 211833\n3. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 187967\n4. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 162033", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 26, + "id": "S026", + "question": "счет 60 остаток на май 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14-s026", + "status_code": 200, + "ok": true, + "elapsed_ms": 6107, + "reply_type": "factual", + "trace_id": "address-6jBsuoXB6F", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 6.\nСумма по отобранным движениям: 849499.\n1. 2020-05-22T10:14:43Z | Списание с расчетного счета 00000000148 от 22.05.2020 10:14:43 | 60.02 / 51 | 142299\n2. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 75367\n3. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 211833\n4. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 187967", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 27, + "id": "S027", + "question": "баланс account 60.01 as of 2020-07-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14-s027", + "status_code": 200, + "ok": true, + "elapsed_ms": 6125, + "reply_type": "factual", + "trace_id": "address-1Oj1G39G-n", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 5.\nСумма по отобранным движениям: 216200.\n1. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400\n2. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600\n3. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400\n4. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 28, + "id": "S028", + "question": "60.01 saldo на 31.07.2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14-s028", + "status_code": 200, + "ok": true, + "elapsed_ms": 6093, + "reply_type": "factual", + "trace_id": "address-fZSdsrFNDt", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 5.\nСумма по отобранным движениям: 216200.\n1. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400\n2. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600\n3. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400\n4. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 29, + "id": "S029", + "question": "сколько на счете 60 на конец 2020-05", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14-s029", + "status_code": 200, + "ok": true, + "elapsed_ms": 6058, + "reply_type": "factual", + "trace_id": "address-LP6gQHhNkl", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 6.\nСумма по отобранным движениям: 849499.\n1. 2020-05-22T10:14:43Z | Списание с расчетного счета 00000000148 от 22.05.2020 10:14:43 | 60.02 / 51 | 142299\n2. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 75367\n3. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 211833\n4. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 187967", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 30, + "id": "S030", + "question": "дай остаток 60.02 на 2020-12-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14-s030", + "status_code": 200, + "ok": true, + "elapsed_ms": 6133, + "reply_type": "factual", + "trace_id": "address-YuX9vrudZN", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 21.\nСумма по отобранным движениям: 6296596.\n1. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 900000\n2. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 144749\n3. 2020-11-20T12:00:00Z | Поступление товаров и услуг 00000000030 от 20.11.2020 12:00:00 | 60.01 / 60.02 | 8700\n4. 2020-11-19T12:00:02Z | Списание с расчетного счета 00000000270 от 19.11.2020 12:00:02 | 60.02 / 51 | 900000", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 31, + "id": "S031", + "question": "епт, сальдо по счету 62.01 на 2020-12-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14-s031", + "status_code": 200, + "ok": true, + "elapsed_ms": 6068, + "reply_type": "partial_coverage", + "trace_id": "address-Tylp_3KxYg", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "no_raw_rows", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 32, + "id": "S032", + "question": "плс остаток по счету 51 на 2020-06-30", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14-s032", + "status_code": 200, + "ok": true, + "elapsed_ms": 6126, + "reply_type": "factual", + "trace_id": "address-J4pLAFrlwJ", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 30.\nСумма по отобранным движениям: 4579658.75.\n1. 2020-06-30T12:00:07Z | Списание с расчетного счета 00000000180 от 30.06.2020 12:00:07 | 66.03 / 51 | 35000\n2. 2020-06-30T12:00:05Z | Списание с расчетного счета 00000000178 от 30.06.2020 12:00:05 | 60.01 / 51 | 15800\n3. 2020-06-30T12:00:04Z | Списание с расчетного счета 00000000177 от 30.06.2020 12:00:04 | 70 / 51 | 50\n4. 2020-06-30T12:00:03Z | Списание с расчетного счета 00000000176 от 30.06.2020 12:00:03 | 91.02 / 51 | 35", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 33, + "id": "S033", + "question": "как там по счету 60.01 на 2020.07?", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14-s033", + "status_code": 200, + "ok": true, + "elapsed_ms": 6045, + "reply_type": "factual", + "trace_id": "address-YdbC_0ElvW", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 5.\nСумма по отобранным движениям: 216200.\n1. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400\n2. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600\n3. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400\n4. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 34, + "id": "S034", + "question": "сальдо 60 на 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14-s034", + "status_code": 200, + "ok": true, + "elapsed_ms": 6152, + "reply_type": "factual", + "trace_id": "address-FAYOR2CmAB", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 138.\nСумма по отобранным движениям: 24061597.5.\n1. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 900000\n2. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 144749\n3. 2020-11-26T12:00:02Z | Списание с расчетного счета 00000000276 от 26.11.2020 12:00:02 | 60.01 / 51 | 524730.5\n4. 2020-11-26T12:00:02Z | Списание с расчетного счета 00000000276 от 26.11.2020 12:00:02 | 60.01 / 51 | 210770.5", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 35, + "id": "S035", + "question": "какие документы формируют остаток по счету 60.01 на 2020-07-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14-s035", + "status_code": 200, + "ok": true, + "elapsed_ms": 6020, + "reply_type": "factual", + "trace_id": "address-LqlELCQXRG", + "assistant_reply": "Собран drilldown документов, формирующих остаток по счету на указанную дату.\nДокументных строк отобрано: 5.\nСумма по отобранным движениям: 216200.\n1. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400\n2. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600\n3. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400\n4. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200\n5. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 7600\nМожно уточнить выборку по контрагенту, договору или периоду.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 36, + "id": "S036", + "question": "из чего состоит остаток по счету 60 на 2020.05", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14-s036", + "status_code": 200, + "ok": true, + "elapsed_ms": 6107, + "reply_type": "factual", + "trace_id": "address-tCa1CbcqSD", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 6.\nСумма по отобранным движениям: 849499.\n1. 2020-05-22T10:14:43Z | Списание с расчетного счета 00000000148 от 22.05.2020 10:14:43 | 60.02 / 51 | 142299\n2. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 75367\n3. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 211833\n4. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 187967", + "expected_intent": "documents_forming_balance", + "actual_intent": "account_balance_snapshot", + "intent_match": false, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": false, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 37, + "id": "S037", + "question": "раскрой остаток 60.01 по документам на конец июля 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14-s037", + "status_code": 200, + "ok": true, + "elapsed_ms": 6109, + "reply_type": "factual", + "trace_id": "address-4-HO33hhY_", + "assistant_reply": "Собран список документов по договору (live address lane).\nСтрок отобрано: 5.\n1. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400\n2. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600\n3. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400\n4. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200\n5. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 7600", + "expected_intent": "documents_forming_balance", + "actual_intent": "list_documents_by_contract", + "intent_match": false, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": false, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 38, + "id": "S038", + "question": "доки под остатком 60.01 на 2020-07-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14-s038", + "status_code": 200, + "ok": true, + "elapsed_ms": 6096, + "reply_type": "factual", + "trace_id": "address-_lwIn9s5iS", + "assistant_reply": "Собран список документов по договору (live address lane).\nСтрок отобрано: 5.\n1. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400\n2. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600\n3. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400\n4. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200\n5. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 7600", + "expected_intent": "documents_forming_balance", + "actual_intent": "list_documents_by_contract", + "intent_match": false, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": false, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 39, + "id": "S039", + "question": "documents forming balance for account 60.01 as of 2020-07-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14-s039", + "status_code": 200, + "ok": true, + "elapsed_ms": 6071, + "reply_type": "factual", + "trace_id": "address-1x2NyCRfmr", + "assistant_reply": "Собран drilldown документов, формирующих остаток по счету на указанную дату.\nДокументных строк отобрано: 5.\nСумма по отобранным движениям: 216200.\n1. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400\n2. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600\n3. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400\n4. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200\n5. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 7600\nМожно уточнить выборку по контрагенту, договору или периоду.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 40, + "id": "S040", + "question": "бля, какие доки формируют остаток 60.01 на 2020-05-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14-s040", + "status_code": 200, + "ok": true, + "elapsed_ms": 6109, + "reply_type": "partial_coverage", + "trace_id": "address-1bASibXGz2", + "assistant_reply": "Текущий live recipe не дает нужную видимость данных для этого сценария.\nПричина: строки по якорю найдены, но отфильтрованы intent-specific recipe.\nЧто нужно уточнить: сузьте период, уточните контрагента или документный тип.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_filtered_out_by_recipe", + "limited_reason_category": "recipe_visibility_gap", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 41, + "id": "S041", + "question": "по счету 62.01 раскрой остаток документами на 2020-12-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14-s041", + "status_code": 200, + "ok": true, + "elapsed_ms": 8322, + "reply_type": "partial_coverage", + "trace_id": "address-2O8vRhRFfB", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.", + "expected_intent": "documents_forming_balance", + "actual_intent": "list_documents_by_contract", + "intent_match": false, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": false, + "mcp_call_status": "no_raw_rows", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 42, + "id": "S042", + "question": "из чего остаток по счету 51 на 2020-06-30", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14-s042", + "status_code": 200, + "ok": true, + "elapsed_ms": 5923, + "reply_type": "factual", + "trace_id": "address-rNaUez9YMa", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 30.\nСумма по отобранным движениям: 4579658.75.\n1. 2020-06-30T12:00:07Z | Списание с расчетного счета 00000000180 от 30.06.2020 12:00:07 | 66.03 / 51 | 35000\n2. 2020-06-30T12:00:05Z | Списание с расчетного счета 00000000178 от 30.06.2020 12:00:05 | 60.01 / 51 | 15800\n3. 2020-06-30T12:00:04Z | Списание с расчетного счета 00000000177 от 30.06.2020 12:00:04 | 70 / 51 | 50\n4. 2020-06-30T12:00:03Z | Списание с расчетного счета 00000000176 от 30.06.2020 12:00:03 | 91.02 / 51 | 35", + "expected_intent": "documents_forming_balance", + "actual_intent": "account_balance_snapshot", + "intent_match": false, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": false, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 43, + "id": "S043", + "question": "покажи документы по договору 15/24 за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14-s043", + "status_code": 200, + "ok": true, + "elapsed_ms": 8275, + "reply_type": "partial_coverage", + "trace_id": "address-Ee75weIi9E", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 44, + "id": "S044", + "question": "доки по дог. 15/24 за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14-s044", + "status_code": 200, + "ok": true, + "elapsed_ms": 9251, + "reply_type": "partial_coverage", + "trace_id": "address-sX4a9RAC3g", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 45, + "id": "S045", + "question": "какие документы по контракту 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14-s045", + "status_code": 200, + "ok": true, + "elapsed_ms": 8092, + "reply_type": "partial_coverage", + "trace_id": "address-w_HybB7rZk", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_counterparty", + "intent_match": false, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": false, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 46, + "id": "S046", + "question": "docs by contract 15/24 year 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14-s046", + "status_code": 200, + "ok": true, + "elapsed_ms": 9122, + "reply_type": "partial_coverage", + "trace_id": "address-fTVMn2mrHo", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 47, + "id": "S047", + "question": "бля, покажи по договору 15/24 доки", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14-s047", + "status_code": 200, + "ok": true, + "elapsed_ms": 6059, + "reply_type": "factual", + "trace_id": "address-K9CNcO5GHW", + "assistant_reply": "Документный фильтр в live дал пустой набор; показываю связанные банковские операции по договору.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 48, + "id": "S048", + "question": "договор 15/24 документы", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14-s048", + "status_code": 200, + "ok": true, + "elapsed_ms": 6297, + "reply_type": "factual", + "trace_id": "address-CitSlcXUGh", + "assistant_reply": "Документный фильтр в live дал пустой набор; показываю связанные банковские операции по договору.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 49, + "id": "S049", + "question": "плс документы договор №15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14-s049", + "status_code": 200, + "ok": true, + "elapsed_ms": 6947, + "reply_type": "partial_coverage", + "trace_id": "address-5Iz7ybsRKd", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 50, + "id": "S050", + "question": "покеж документы по 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14-s050", + "status_code": 200, + "ok": true, + "elapsed_ms": 5991, + "reply_type": "partial_coverage", + "trace_id": "address-hD4hKSeduf", + "assistant_reply": "Не удалось выполнить адресный live-запрос в V1.\nПричина: live MCP вызов завершился ошибкой.\nЧто нужно уточнить: MCP fetch failed: This operation was aborted.", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_counterparty", + "intent_match": false, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": false, + "mcp_call_status": "error", + "limited_reason_category": "execution_error", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 51, + "id": "S051", + "question": "банковские операции по договору 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14-s051", + "status_code": 200, + "ok": true, + "elapsed_ms": 7238, + "reply_type": "factual", + "trace_id": "address-K-dBKeUoYS", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "bank_operations_by_contract", + "actual_intent": "bank_operations_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 52, + "id": "S052", + "question": "платежи по договору 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14-s052", + "status_code": 200, + "ok": true, + "elapsed_ms": 6114, + "reply_type": "factual", + "trace_id": "address-L-EA5fkN_5", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "bank_operations_by_contract", + "actual_intent": "bank_operations_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 53, + "id": "S053", + "question": "выписка по договору 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14-s053", + "status_code": 200, + "ok": true, + "elapsed_ms": 6090, + "reply_type": "factual", + "trace_id": "address-8XW6ijjGio", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "bank_operations_by_contract", + "actual_intent": "bank_operations_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 54, + "id": "S054", + "question": "bank ops by contract 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14-s054", + "status_code": 200, + "ok": true, + "elapsed_ms": 7114, + "reply_type": "partial_coverage", + "trace_id": "address-GZYwPCSoqO", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "bank_operations_by_contract", + "actual_intent": "bank_operations_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 55, + "id": "S055", + "question": "ёпт, покажи банк операции по дог 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14-s055", + "status_code": 200, + "ok": true, + "elapsed_ms": 6079, + "reply_type": "factual", + "trace_id": "address-LtwysBfF_K", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "bank_operations_by_contract", + "actual_intent": "bank_operations_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 56, + "id": "S056", + "question": "по контракту 15/24 платежки", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14-s056", + "status_code": 200, + "ok": true, + "elapsed_ms": 6088, + "reply_type": "factual", + "trace_id": "address-Y6oA-ZfDKz", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "bank_operations_by_contract", + "actual_intent": "bank_operations_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 57, + "id": "S057", + "question": "покажи сальдо по счету 60 за 2020", + "session": "chain_balance_60", + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14-chain_balance_60", + "status_code": 200, + "ok": true, + "elapsed_ms": 6031, + "reply_type": "factual", + "trace_id": "address-RPpUf8myku", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 138.\nСумма по отобранным движениям: 24061597.5.\n1. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 900000\n2. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 144749\n3. 2020-11-26T12:00:02Z | Списание с расчетного счета 00000000276 от 26.11.2020 12:00:02 | 60.01 / 51 | 524730.5\n4. 2020-11-26T12:00:02Z | Списание с расчетного счета 00000000276 от 26.11.2020 12:00:02 | 60.01 / 51 | 210770.5", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 58, + "id": "S058", + "question": "а теперь только май 2020", + "session": "chain_balance_60", + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14-chain_balance_60", + "status_code": 200, + "ok": true, + "elapsed_ms": 882, + "reply_type": "factual", + "trace_id": "address-EOq_PuPSoa", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 6.\nСумма по отобранным движениям: 849499.\n1. 2020-05-22T10:14:43Z | Списание с расчетного счета 00000000148 от 22.05.2020 10:14:43 | 60.02 / 51 | 142299\n2. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 75367\n3. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 211833\n4. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 187967", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 59, + "id": "S059", + "question": "ок, теперь 2020.05", + "session": "chain_balance_60", + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14-chain_balance_60", + "status_code": 200, + "ok": true, + "elapsed_ms": 1013, + "reply_type": "factual", + "trace_id": "address-FLbr9LkAlH", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 6.\nСумма по отобранным движениям: 849499.\n1. 2020-05-22T10:14:43Z | Списание с расчетного счета 00000000148 от 22.05.2020 10:14:43 | 60.02 / 51 | 142299\n2. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 75367\n3. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 211833\n4. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 187967", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 60, + "id": "S060", + "question": "теперь на 2020-07-31", + "session": "chain_balance_60", + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14-chain_balance_60", + "status_code": 200, + "ok": true, + "elapsed_ms": 1016, + "reply_type": "factual", + "trace_id": "address-tT8Oe4iHGg", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 6.\nСумма по отобранным движениям: 271400.\n1. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400\n2. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600\n3. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400\n4. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + } + ] +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14/run_summary.json b/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14/run_summary.json new file mode 100644 index 0000000..c56d537 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14/run_summary.json @@ -0,0 +1,54 @@ +{ + "run_id": "2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-37-14", + "generated_at": "2026-04-02T09:43:17", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\address_slang_stress_2026-04-02.json", + "backend_url": "http://127.0.0.1:8787/api/assistant/message", + "llm_provider": "local", + "llm_model": "qwen2.5-14b-instruct-1m", + "llm_base_url": "http://127.0.0.1:1234", + "totals": { + "questions_total": 60, + "ok_200_count": 60, + "semantic_pass_count": 48, + "semantic_pass_rate": 0.8, + "factual_count": 43, + "partial_coverage_count": 17, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_applied_count": 54, + "avg_elapsed_ms": 6047.8 + }, + "distributions": { + "reply_type": { + "partial_coverage": 17, + "factual": 43 + }, + "actual_intent": { + "list_documents_by_counterparty": 14, + "bank_operations_by_counterparty": 7, + "unknown": 3, + "account_balance_snapshot": 18, + "documents_forming_balance": 3, + "list_documents_by_contract": 9, + "bank_operations_by_contract": 6 + }, + "actual_mode": { + "address_query": 60 + }, + "mcp_call_status": { + "materialized_but_not_anchor_matched": 10, + "matched_non_empty": 43, + "skipped": 3, + "no_raw_rows": 2, + "materialized_but_filtered_out_by_recipe": 1, + "error": 1 + }, + "limited_reason_category": { + "empty_match": 11, + "missing_anchor": 1, + "unsupported": 3, + "recipe_visibility_gap": 1, + "execution_error": 1 + } + } +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35/README.md b/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35/README.md new file mode 100644 index 0000000..a5b37ea --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35/README.md @@ -0,0 +1,23 @@ +# 2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35 + +Generated at: 2026-04-02T09:54:42 +Questions file: X:\1C\NDC_1C\docs\ADDRESS\question_sets\address_slang_stress_2026-04-02.json +Backend URL: http://127.0.0.1:8787/api/assistant/message +LLM: local / qwen2.5-14b-instruct-1m @ http://127.0.0.1:1234 + +## Totals +- questions_total: 60 +- ok_200_count: 60 +- semantic_pass_count: 55 +- semantic_pass_rate: 0.9167 +- factual_count: 43 +- partial_coverage_count: 17 +- clarification_required_count: 0 +- http_error_count: 0 +- llm_decomposition_applied_count: 51 +- avg_elapsed_ms: 6112.6 + +## Files +- run_summary.json +- full_live_results.json +- failures_only.json diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35/failures_only.json b/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35/failures_only.json new file mode 100644 index 0000000..c250f91 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35/failures_only.json @@ -0,0 +1,137 @@ +[ + { + "index": 19, + "id": "S019", + "question": "свк списания/поступления за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35-s019", + "status_code": 200, + "ok": true, + "elapsed_ms": 6024, + "reply_type": "partial_coverage", + "trace_id": "address-amLbVNd2oC", + "assistant_reply": "Этот запрос не подходит под address_query V1.\nПричина: intent пока не поддержан в address V1.\nЧто нужно уточнить: переформулируйте вопрос как адресный lookup по счету/контрагенту/договору.", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "unknown", + "intent_match": false, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": false, + "mcp_call_status": "skipped", + "limited_reason_category": "unsupported", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 37, + "id": "S037", + "question": "раскрой остаток 60.01 по документам на конец июля 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35-s037", + "status_code": 200, + "ok": true, + "elapsed_ms": 8273, + "reply_type": "partial_coverage", + "trace_id": "address-8m-RkQckzz", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "documents_forming_balance", + "actual_intent": "list_documents_by_counterparty", + "intent_match": false, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": false, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 38, + "id": "S038", + "question": "доки под остатком 60.01 на 2020-07-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35-s038", + "status_code": 200, + "ok": true, + "elapsed_ms": 8134, + "reply_type": "partial_coverage", + "trace_id": "address-U9ycLkdr3-", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "documents_forming_balance", + "actual_intent": "list_documents_by_counterparty", + "intent_match": false, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": false, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 41, + "id": "S041", + "question": "по счету 62.01 раскрой остаток документами на 2020-12-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35-s041", + "status_code": 200, + "ok": true, + "elapsed_ms": 9351, + "reply_type": "partial_coverage", + "trace_id": "address-zV1HuiGSO7", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "documents_forming_balance", + "actual_intent": "list_documents_by_counterparty", + "intent_match": false, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": false, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 42, + "id": "S042", + "question": "из чего остаток по счету 51 на 2020-06-30", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35-s042", + "status_code": 200, + "ok": true, + "elapsed_ms": 5960, + "reply_type": "factual", + "trace_id": "address-h38ift_cPc", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 30.\nСумма по отобранным движениям: 4579658.75.\n1. 2020-06-30T12:00:07Z | Списание с расчетного счета 00000000180 от 30.06.2020 12:00:07 | 66.03 / 51 | 35000\n2. 2020-06-30T12:00:05Z | Списание с расчетного счета 00000000178 от 30.06.2020 12:00:05 | 60.01 / 51 | 15800\n3. 2020-06-30T12:00:04Z | Списание с расчетного счета 00000000177 от 30.06.2020 12:00:04 | 70 / 51 | 50\n4. 2020-06-30T12:00:03Z | Списание с расчетного счета 00000000176 от 30.06.2020 12:00:03 | 91.02 / 51 | 35", + "expected_intent": "documents_forming_balance", + "actual_intent": "account_balance_snapshot", + "intent_match": false, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": false, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + } +] diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35/full_live_results.json b/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35/full_live_results.json new file mode 100644 index 0000000..7b533e0 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35/full_live_results.json @@ -0,0 +1,1677 @@ +{ + "run_id": "2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35", + "generated_at": "2026-04-02T09:54:42", + "summary": { + "run_id": "2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35", + "generated_at": "2026-04-02T09:54:42", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\address_slang_stress_2026-04-02.json", + "backend_url": "http://127.0.0.1:8787/api/assistant/message", + "llm_provider": "local", + "llm_model": "qwen2.5-14b-instruct-1m", + "llm_base_url": "http://127.0.0.1:1234", + "totals": { + "questions_total": 60, + "ok_200_count": 60, + "semantic_pass_count": 55, + "semantic_pass_rate": 0.9167, + "factual_count": 43, + "partial_coverage_count": 17, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_applied_count": 51, + "avg_elapsed_ms": 6112.6 + }, + "distributions": { + "reply_type": { + "partial_coverage": 17, + "factual": 43 + }, + "actual_intent": { + "list_documents_by_counterparty": 15, + "bank_operations_by_counterparty": 9, + "unknown": 1, + "account_balance_snapshot": 17, + "documents_forming_balance": 4, + "list_documents_by_contract": 8, + "bank_operations_by_contract": 6 + }, + "actual_mode": { + "address_query": 60 + }, + "mcp_call_status": { + "materialized_but_not_anchor_matched": 13, + "matched_non_empty": 43, + "skipped": 1, + "no_raw_rows": 1, + "materialized_but_filtered_out_by_recipe": 2 + }, + "limited_reason_category": { + "empty_match": 14, + "unsupported": 1, + "recipe_visibility_gap": 2 + } + } + }, + "rows": [ + { + "index": 1, + "id": "S001", + "question": "свк доки за 2020 покаж пж", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35-s001", + "status_code": 200, + "ok": true, + "elapsed_ms": 8349, + "reply_type": "partial_coverage", + "trace_id": "address-B4bAlKoVh5", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 2, + "id": "S002", + "question": "покеж все доки по свк за 20 год", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35-s002", + "status_code": 200, + "ok": true, + "elapsed_ms": 5888, + "reply_type": "factual", + "trace_id": "address-moSe86010k", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 3, + "id": "S003", + "question": "дай список документов по свк за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35-s003", + "status_code": 200, + "ok": true, + "elapsed_ms": 6120, + "reply_type": "factual", + "trace_id": "address-8YA3hNTCt_", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 4, + "id": "S004", + "question": "какие у свк есть доки за 2020?", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35-s004", + "status_code": 200, + "ok": true, + "elapsed_ms": 8346, + "reply_type": "partial_coverage", + "trace_id": "address-7AiNolpSiV", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 5, + "id": "S005", + "question": "че по свк по докам за 2020 год", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35-s005", + "status_code": 200, + "ok": true, + "elapsed_ms": 808, + "reply_type": "factual", + "trace_id": "address-T48cLzBDNT", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_without_llm", + "fallback_rule_hit": "documents_counterparty_year_rewrite", + "error_code": null, + "error_message": null + }, + { + "index": 6, + "id": "S006", + "question": "ёпт покажи доки по свк за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35-s006", + "status_code": 200, + "ok": true, + "elapsed_ms": 6078, + "reply_type": "factual", + "trace_id": "address-FLW3crh2yC", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 7, + "id": "S007", + "question": "бля, доки свк 2020 вывали", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35-s007", + "status_code": 200, + "ok": true, + "elapsed_ms": 6100, + "reply_type": "factual", + "trace_id": "address-bhhsBDV7bR", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 8, + "id": "S008", + "question": "svk docs for 2020 please", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35-s008", + "status_code": 200, + "ok": true, + "elapsed_ms": 6125, + "reply_type": "factual", + "trace_id": "address-3wiR96BLqY", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 9, + "id": "S009", + "question": "docs by counterparty svk year 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35-s009", + "status_code": 200, + "ok": true, + "elapsed_ms": 8410, + "reply_type": "partial_coverage", + "trace_id": "address-ZOfOWBq0z5", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 10, + "id": "S010", + "question": "по контрагенту свк покаж документы за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35-s010", + "status_code": 200, + "ok": true, + "elapsed_ms": 5805, + "reply_type": "factual", + "trace_id": "address-QUMWFIzR6-", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 11, + "id": "S011", + "question": "плс доки по свк 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35-s011", + "status_code": 200, + "ok": true, + "elapsed_ms": 9372, + "reply_type": "partial_coverage", + "trace_id": "address-q6y3FCDbF9", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 12, + "id": "S012", + "question": "свк док за 2020 гони", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35-s012", + "status_code": 200, + "ok": true, + "elapsed_ms": 762, + "reply_type": "factual", + "trace_id": "address-nyRys8R6ha", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_without_llm", + "fallback_rule_hit": "documents_counterparty_year_rewrite", + "error_code": null, + "error_message": null + }, + { + "index": 13, + "id": "S013", + "question": "по свк банковские операции за 2020 покаж", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35-s013", + "status_code": 200, + "ok": true, + "elapsed_ms": 6070, + "reply_type": "factual", + "trace_id": "address-V9lS79Nb_C", + "assistant_reply": "Собран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 14, + "id": "S014", + "question": "свк выписка банка 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35-s014", + "status_code": 200, + "ok": true, + "elapsed_ms": 7142, + "reply_type": "factual", + "trace_id": "address-DR2-M0dUI6", + "assistant_reply": "Собран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 15, + "id": "S015", + "question": "платежи по свк за 2020 выведи", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35-s015", + "status_code": 200, + "ok": true, + "elapsed_ms": 7102, + "reply_type": "factual", + "trace_id": "address-3g96BKsMEs", + "assistant_reply": "Собран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 16, + "id": "S016", + "question": "оплаты по свк за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35-s016", + "status_code": 200, + "ok": true, + "elapsed_ms": 6100, + "reply_type": "factual", + "trace_id": "address-yONZmZp4-K", + "assistant_reply": "Собран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 17, + "id": "S017", + "question": "свк банк опер за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35-s017", + "status_code": 200, + "ok": true, + "elapsed_ms": 8320, + "reply_type": "partial_coverage", + "trace_id": "address-3f3gPMOq5A", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 18, + "id": "S018", + "question": "че у свк по банку за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35-s018", + "status_code": 200, + "ok": true, + "elapsed_ms": 8198, + "reply_type": "partial_coverage", + "trace_id": "address-06VIucvYzi", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 19, + "id": "S019", + "question": "свк списания/поступления за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35-s019", + "status_code": 200, + "ok": true, + "elapsed_ms": 6024, + "reply_type": "partial_coverage", + "trace_id": "address-amLbVNd2oC", + "assistant_reply": "Этот запрос не подходит под address_query V1.\nПричина: intent пока не поддержан в address V1.\nЧто нужно уточнить: переформулируйте вопрос как адресный lookup по счету/контрагенту/договору.", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "unknown", + "intent_match": false, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": false, + "mcp_call_status": "skipped", + "limited_reason_category": "unsupported", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 20, + "id": "S020", + "question": "bank ops by svk for 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35-s020", + "status_code": 200, + "ok": true, + "elapsed_ms": 821, + "reply_type": "factual", + "trace_id": "address-VFbuaNpqki", + "assistant_reply": "Собран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 1.\n1. 2020-12-16T16:20:51Z | Списание с расчетного счета 00000000293 от 16.12.2020 16:20:51 | 0 / 0 | 60 | аналитика: СБЕРБАНК, ПАО", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_without_llm", + "fallback_rule_hit": "bank_operations_counterparty_year_rewrite", + "error_code": null, + "error_message": null + }, + { + "index": 21, + "id": "S021", + "question": "transactions by counterparty svk 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35-s021", + "status_code": 200, + "ok": true, + "elapsed_ms": 6093, + "reply_type": "factual", + "trace_id": "address-1sK-pgTNbZ", + "assistant_reply": "Собран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 22, + "id": "S022", + "question": "бля, по свк банковские платежки 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35-s022", + "status_code": 200, + "ok": true, + "elapsed_ms": 7112, + "reply_type": "factual", + "trace_id": "address-QPk2UR2JGr", + "assistant_reply": "Собран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 23, + "id": "S023", + "question": "сальдо по счету 60.01 на дату 2020-07-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35-s023", + "status_code": 200, + "ok": true, + "elapsed_ms": 6106, + "reply_type": "factual", + "trace_id": "address-_MybMH_JKQ", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 5.\nСумма по отобранным движениям: 216200.\n1. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400\n2. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600\n3. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400\n4. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 24, + "id": "S024", + "question": "остаток по счету 60.01 на 2020.05", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35-s024", + "status_code": 200, + "ok": true, + "elapsed_ms": 5045, + "reply_type": "factual", + "trace_id": "address-qNGckh72cf", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 5.\nСумма по отобранным движениям: 707200.\n1. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 75367\n2. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 211833\n3. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 187967\n4. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 162033", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 25, + "id": "S025", + "question": "покажи остаток по 60.01 за май 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35-s025", + "status_code": 200, + "ok": true, + "elapsed_ms": 6089, + "reply_type": "factual", + "trace_id": "address-mnC7hoefo2", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 5.\nСумма по отобранным движениям: 707200.\n1. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 75367\n2. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 211833\n3. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 187967\n4. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 162033", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 26, + "id": "S026", + "question": "счет 60 остаток на май 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35-s026", + "status_code": 200, + "ok": true, + "elapsed_ms": 5034, + "reply_type": "factual", + "trace_id": "address-yX21cci8qe", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 6.\nСумма по отобранным движениям: 849499.\n1. 2020-05-22T10:14:43Z | Списание с расчетного счета 00000000148 от 22.05.2020 10:14:43 | 60.02 / 51 | 142299\n2. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 75367\n3. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 211833\n4. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 187967", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 27, + "id": "S027", + "question": "баланс account 60.01 as of 2020-07-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35-s027", + "status_code": 200, + "ok": true, + "elapsed_ms": 6159, + "reply_type": "factual", + "trace_id": "address-qn4xJ7i5gg", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 5.\nСумма по отобранным движениям: 216200.\n1. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400\n2. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600\n3. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400\n4. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 28, + "id": "S028", + "question": "60.01 saldo на 31.07.2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35-s028", + "status_code": 200, + "ok": true, + "elapsed_ms": 6083, + "reply_type": "factual", + "trace_id": "address-IzHcD9QyLe", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 5.\nСумма по отобранным движениям: 216200.\n1. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400\n2. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600\n3. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400\n4. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 29, + "id": "S029", + "question": "сколько на счете 60 на конец 2020-05", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35-s029", + "status_code": 200, + "ok": true, + "elapsed_ms": 5071, + "reply_type": "factual", + "trace_id": "address-Q_Xn4bIe4m", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 6.\nСумма по отобранным движениям: 849499.\n1. 2020-05-22T10:14:43Z | Списание с расчетного счета 00000000148 от 22.05.2020 10:14:43 | 60.02 / 51 | 142299\n2. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 75367\n3. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 211833\n4. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 187967", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 30, + "id": "S030", + "question": "дай остаток 60.02 на 2020-12-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35-s030", + "status_code": 200, + "ok": true, + "elapsed_ms": 6127, + "reply_type": "factual", + "trace_id": "address-cf3HY5maTW", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 21.\nСумма по отобранным движениям: 6296596.\n1. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 900000\n2. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 144749\n3. 2020-11-20T12:00:00Z | Поступление товаров и услуг 00000000030 от 20.11.2020 12:00:00 | 60.01 / 60.02 | 8700\n4. 2020-11-19T12:00:02Z | Списание с расчетного счета 00000000270 от 19.11.2020 12:00:02 | 60.02 / 51 | 900000", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 31, + "id": "S031", + "question": "епт, сальдо по счету 62.01 на 2020-12-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35-s031", + "status_code": 200, + "ok": true, + "elapsed_ms": 6083, + "reply_type": "partial_coverage", + "trace_id": "address-WqzrOUW0qV", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "no_raw_rows", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 32, + "id": "S032", + "question": "плс остаток по счету 51 на 2020-06-30", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35-s032", + "status_code": 200, + "ok": true, + "elapsed_ms": 6063, + "reply_type": "factual", + "trace_id": "address-6fAoVSgUOv", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 30.\nСумма по отобранным движениям: 4579658.75.\n1. 2020-06-30T12:00:07Z | Списание с расчетного счета 00000000180 от 30.06.2020 12:00:07 | 66.03 / 51 | 35000\n2. 2020-06-30T12:00:05Z | Списание с расчетного счета 00000000178 от 30.06.2020 12:00:05 | 60.01 / 51 | 15800\n3. 2020-06-30T12:00:04Z | Списание с расчетного счета 00000000177 от 30.06.2020 12:00:04 | 70 / 51 | 50\n4. 2020-06-30T12:00:03Z | Списание с расчетного счета 00000000176 от 30.06.2020 12:00:03 | 91.02 / 51 | 35", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 33, + "id": "S033", + "question": "как там по счету 60.01 на 2020.07?", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35-s033", + "status_code": 200, + "ok": true, + "elapsed_ms": 6141, + "reply_type": "factual", + "trace_id": "address-WWVsFs3ixO", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 5.\nСумма по отобранным движениям: 216200.\n1. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400\n2. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600\n3. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400\n4. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 34, + "id": "S034", + "question": "сальдо 60 на 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35-s034", + "status_code": 200, + "ok": true, + "elapsed_ms": 6171, + "reply_type": "factual", + "trace_id": "address-TijrFRFr7T", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 138.\nСумма по отобранным движениям: 24061597.5.\n1. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 900000\n2. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 144749\n3. 2020-11-26T12:00:02Z | Списание с расчетного счета 00000000276 от 26.11.2020 12:00:02 | 60.01 / 51 | 524730.5\n4. 2020-11-26T12:00:02Z | Списание с расчетного счета 00000000276 от 26.11.2020 12:00:02 | 60.01 / 51 | 210770.5", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 35, + "id": "S035", + "question": "какие документы формируют остаток по счету 60.01 на 2020-07-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35-s035", + "status_code": 200, + "ok": true, + "elapsed_ms": 6009, + "reply_type": "factual", + "trace_id": "address-2DP0a4Id5B", + "assistant_reply": "Собран drilldown документов, формирующих остаток по счету на указанную дату.\nДокументных строк отобрано: 5.\nСумма по отобранным движениям: 216200.\n1. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400\n2. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600\n3. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400\n4. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200\n5. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 7600\nМожно уточнить выборку по контрагенту, договору или периоду.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 36, + "id": "S036", + "question": "из чего состоит остаток по счету 60 на 2020.05", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35-s036", + "status_code": 200, + "ok": true, + "elapsed_ms": 6103, + "reply_type": "partial_coverage", + "trace_id": "address-OCGFOMDCuS", + "assistant_reply": "Текущий live recipe не дает нужную видимость данных для этого сценария.\nПричина: строки по якорю найдены, но отфильтрованы intent-specific recipe.\nЧто нужно уточнить: сузьте период, уточните контрагента или документный тип.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_filtered_out_by_recipe", + "limited_reason_category": "recipe_visibility_gap", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 37, + "id": "S037", + "question": "раскрой остаток 60.01 по документам на конец июля 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35-s037", + "status_code": 200, + "ok": true, + "elapsed_ms": 8273, + "reply_type": "partial_coverage", + "trace_id": "address-8m-RkQckzz", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "documents_forming_balance", + "actual_intent": "list_documents_by_counterparty", + "intent_match": false, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": false, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 38, + "id": "S038", + "question": "доки под остатком 60.01 на 2020-07-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35-s038", + "status_code": 200, + "ok": true, + "elapsed_ms": 8134, + "reply_type": "partial_coverage", + "trace_id": "address-U9ycLkdr3-", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "documents_forming_balance", + "actual_intent": "list_documents_by_counterparty", + "intent_match": false, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": false, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 39, + "id": "S039", + "question": "documents forming balance for account 60.01 as of 2020-07-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35-s039", + "status_code": 200, + "ok": true, + "elapsed_ms": 5890, + "reply_type": "factual", + "trace_id": "address-DAkY1a5EEq", + "assistant_reply": "Собран drilldown документов, формирующих остаток по счету на указанную дату.\nДокументных строк отобрано: 5.\nСумма по отобранным движениям: 216200.\n1. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400\n2. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600\n3. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400\n4. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200\n5. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 7600\nМожно уточнить выборку по контрагенту, договору или периоду.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 40, + "id": "S040", + "question": "бля, какие доки формируют остаток 60.01 на 2020-05-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35-s040", + "status_code": 200, + "ok": true, + "elapsed_ms": 6102, + "reply_type": "partial_coverage", + "trace_id": "address-8fmifVhcHs", + "assistant_reply": "Текущий live recipe не дает нужную видимость данных для этого сценария.\nПричина: строки по якорю найдены, но отфильтрованы intent-specific recipe.\nЧто нужно уточнить: сузьте период, уточните контрагента или документный тип.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_filtered_out_by_recipe", + "limited_reason_category": "recipe_visibility_gap", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 41, + "id": "S041", + "question": "по счету 62.01 раскрой остаток документами на 2020-12-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35-s041", + "status_code": 200, + "ok": true, + "elapsed_ms": 9351, + "reply_type": "partial_coverage", + "trace_id": "address-zV1HuiGSO7", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "documents_forming_balance", + "actual_intent": "list_documents_by_counterparty", + "intent_match": false, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": false, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 42, + "id": "S042", + "question": "из чего остаток по счету 51 на 2020-06-30", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35-s042", + "status_code": 200, + "ok": true, + "elapsed_ms": 5960, + "reply_type": "factual", + "trace_id": "address-h38ift_cPc", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 30.\nСумма по отобранным движениям: 4579658.75.\n1. 2020-06-30T12:00:07Z | Списание с расчетного счета 00000000180 от 30.06.2020 12:00:07 | 66.03 / 51 | 35000\n2. 2020-06-30T12:00:05Z | Списание с расчетного счета 00000000178 от 30.06.2020 12:00:05 | 60.01 / 51 | 15800\n3. 2020-06-30T12:00:04Z | Списание с расчетного счета 00000000177 от 30.06.2020 12:00:04 | 70 / 51 | 50\n4. 2020-06-30T12:00:03Z | Списание с расчетного счета 00000000176 от 30.06.2020 12:00:03 | 91.02 / 51 | 35", + "expected_intent": "documents_forming_balance", + "actual_intent": "account_balance_snapshot", + "intent_match": false, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": false, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 43, + "id": "S043", + "question": "покажи документы по договору 15/24 за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35-s043", + "status_code": 200, + "ok": true, + "elapsed_ms": 8254, + "reply_type": "partial_coverage", + "trace_id": "address-dxb6x6Lx56", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 44, + "id": "S044", + "question": "доки по дог. 15/24 за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35-s044", + "status_code": 200, + "ok": true, + "elapsed_ms": 8180, + "reply_type": "factual", + "trace_id": "address-NIU4WG6MTm", + "assistant_reply": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-08-31T15:00:06Z | Поступление товаров и услуг 00000000024 от 31.08.2020 15:00:06 | 19.04 / 76.05 | 233.33\n2. 2020-08-31T15:00:06Z | Поступление товаров и услуг 00000000024 от 31.08.2020 15:00:06 | 44.01 / 76.05 | 1166.67", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 45, + "id": "S045", + "question": "какие документы по контракту 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35-s045", + "status_code": 200, + "ok": true, + "elapsed_ms": 7179, + "reply_type": "factual", + "trace_id": "address-JIpEFUV0zW", + "assistant_reply": "Документный фильтр в live дал пустой набор; показываю связанные банковские операции по договору.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 46, + "id": "S046", + "question": "docs by contract 15/24 year 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35-s046", + "status_code": 200, + "ok": true, + "elapsed_ms": 9091, + "reply_type": "partial_coverage", + "trace_id": "address-Gg4w72cJwy", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 47, + "id": "S047", + "question": "бля, покажи по договору 15/24 доки", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35-s047", + "status_code": 200, + "ok": true, + "elapsed_ms": 6032, + "reply_type": "factual", + "trace_id": "address-SLJnVMe315", + "assistant_reply": "Документный фильтр в live дал пустой набор; показываю связанные банковские операции по договору.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 48, + "id": "S048", + "question": "договор 15/24 документы", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35-s048", + "status_code": 200, + "ok": true, + "elapsed_ms": 6147, + "reply_type": "factual", + "trace_id": "address-989GNt8FYV", + "assistant_reply": "Документный фильтр в live дал пустой набор; показываю связанные банковские операции по договору.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 49, + "id": "S049", + "question": "плс документы договор №15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35-s049", + "status_code": 200, + "ok": true, + "elapsed_ms": 7220, + "reply_type": "partial_coverage", + "trace_id": "address-ZYpMw6dS4G", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 50, + "id": "S050", + "question": "покеж документы по 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35-s050", + "status_code": 200, + "ok": true, + "elapsed_ms": 5962, + "reply_type": "factual", + "trace_id": "address-bykuQnf7tP", + "assistant_reply": "Документный фильтр в live дал пустой набор; показываю связанные банковские операции по договору.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 51, + "id": "S051", + "question": "банковские операции по договору 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35-s051", + "status_code": 200, + "ok": true, + "elapsed_ms": 7055, + "reply_type": "factual", + "trace_id": "address-Pw4GNupQa8", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "bank_operations_by_contract", + "actual_intent": "bank_operations_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 52, + "id": "S052", + "question": "платежи по договору 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35-s052", + "status_code": 200, + "ok": true, + "elapsed_ms": 6217, + "reply_type": "factual", + "trace_id": "address-TaoWHVxU62", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "bank_operations_by_contract", + "actual_intent": "bank_operations_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 53, + "id": "S053", + "question": "выписка по договору 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35-s053", + "status_code": 200, + "ok": true, + "elapsed_ms": 6023, + "reply_type": "factual", + "trace_id": "address-moJEca5LjK", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "bank_operations_by_contract", + "actual_intent": "bank_operations_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 54, + "id": "S054", + "question": "bank ops by contract 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35-s054", + "status_code": 200, + "ok": true, + "elapsed_ms": 7134, + "reply_type": "partial_coverage", + "trace_id": "address-UaENjxrVal", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "bank_operations_by_contract", + "actual_intent": "bank_operations_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 55, + "id": "S055", + "question": "ёпт, покажи банк операции по дог 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35-s055", + "status_code": 200, + "ok": true, + "elapsed_ms": 6174, + "reply_type": "factual", + "trace_id": "address-AdCDS2Ir5C", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "bank_operations_by_contract", + "actual_intent": "bank_operations_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 56, + "id": "S056", + "question": "по контракту 15/24 платежки", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35-s056", + "status_code": 200, + "ok": true, + "elapsed_ms": 6052, + "reply_type": "factual", + "trace_id": "address-ZnYo1i9yOs", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "bank_operations_by_contract", + "actual_intent": "bank_operations_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 57, + "id": "S057", + "question": "покажи сальдо по счету 60 за 2020", + "session": "chain_balance_60", + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35-chain_balance_60", + "status_code": 200, + "ok": true, + "elapsed_ms": 5893, + "reply_type": "factual", + "trace_id": "address-TVi7N-QCRZ", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 138.\nСумма по отобранным движениям: 24061597.5.\n1. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 900000\n2. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 144749\n3. 2020-11-26T12:00:02Z | Списание с расчетного счета 00000000276 от 26.11.2020 12:00:02 | 60.01 / 51 | 524730.5\n4. 2020-11-26T12:00:02Z | Списание с расчетного счета 00000000276 от 26.11.2020 12:00:02 | 60.01 / 51 | 210770.5", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 58, + "id": "S058", + "question": "а теперь только май 2020", + "session": "chain_balance_60", + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35-chain_balance_60", + "status_code": 200, + "ok": true, + "elapsed_ms": 956, + "reply_type": "factual", + "trace_id": "address-CJVQVzqc5p", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 6.\nСумма по отобранным движениям: 849499.\n1. 2020-05-22T10:14:43Z | Списание с расчетного счета 00000000148 от 22.05.2020 10:14:43 | 60.02 / 51 | 142299\n2. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 75367\n3. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 211833\n4. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 187967", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 59, + "id": "S059", + "question": "ок, теперь 2020.05", + "session": "chain_balance_60", + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35-chain_balance_60", + "status_code": 200, + "ok": true, + "elapsed_ms": 1017, + "reply_type": "factual", + "trace_id": "address-A0yy-6CRRf", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 6.\nСумма по отобранным движениям: 849499.\n1. 2020-05-22T10:14:43Z | Списание с расчетного счета 00000000148 от 22.05.2020 10:14:43 | 60.02 / 51 | 142299\n2. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 75367\n3. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 211833\n4. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 187967", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 60, + "id": "S060", + "question": "теперь на 2020-07-31", + "session": "chain_balance_60", + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35-chain_balance_60", + "status_code": 200, + "ok": true, + "elapsed_ms": 1029, + "reply_type": "factual", + "trace_id": "address-eAlcwxCEvk", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 6.\nСумма по отобранным движениям: 271400.\n1. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400\n2. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600\n3. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400\n4. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + } + ] +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35/run_summary.json b/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35/run_summary.json new file mode 100644 index 0000000..b2caf10 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35/run_summary.json @@ -0,0 +1,51 @@ +{ + "run_id": "2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-48-35", + "generated_at": "2026-04-02T09:54:42", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\address_slang_stress_2026-04-02.json", + "backend_url": "http://127.0.0.1:8787/api/assistant/message", + "llm_provider": "local", + "llm_model": "qwen2.5-14b-instruct-1m", + "llm_base_url": "http://127.0.0.1:1234", + "totals": { + "questions_total": 60, + "ok_200_count": 60, + "semantic_pass_count": 55, + "semantic_pass_rate": 0.9167, + "factual_count": 43, + "partial_coverage_count": 17, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_applied_count": 51, + "avg_elapsed_ms": 6112.6 + }, + "distributions": { + "reply_type": { + "partial_coverage": 17, + "factual": 43 + }, + "actual_intent": { + "list_documents_by_counterparty": 15, + "bank_operations_by_counterparty": 9, + "unknown": 1, + "account_balance_snapshot": 17, + "documents_forming_balance": 4, + "list_documents_by_contract": 8, + "bank_operations_by_contract": 6 + }, + "actual_mode": { + "address_query": 60 + }, + "mcp_call_status": { + "materialized_but_not_anchor_matched": 13, + "matched_non_empty": 43, + "skipped": 1, + "no_raw_rows": 1, + "materialized_but_filtered_out_by_recipe": 2 + }, + "limited_reason_category": { + "empty_match": 14, + "unsupported": 1, + "recipe_visibility_gap": 2 + } + } +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53/README.md b/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53/README.md new file mode 100644 index 0000000..0084d65 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53/README.md @@ -0,0 +1,23 @@ +# 2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53 + +Generated at: 2026-04-02T10:01:59 +Questions file: X:\1C\NDC_1C\docs\ADDRESS\question_sets\address_slang_stress_2026-04-02.json +Backend URL: http://127.0.0.1:8787/api/assistant/message +LLM: local / qwen2.5-14b-instruct-1m @ http://127.0.0.1:1234 + +## Totals +- questions_total: 60 +- ok_200_count: 60 +- semantic_pass_count: 58 +- semantic_pass_rate: 0.9667 +- factual_count: 43 +- partial_coverage_count: 17 +- clarification_required_count: 0 +- http_error_count: 0 +- llm_decomposition_applied_count: 49 +- avg_elapsed_ms: 6102.7 + +## Files +- run_summary.json +- full_live_results.json +- failures_only.json diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53/failures_only.json b/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53/failures_only.json new file mode 100644 index 0000000..836b1f6 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53/failures_only.json @@ -0,0 +1,56 @@ +[ + { + "index": 37, + "id": "S037", + "question": "раскрой остаток 60.01 по документам на конец июля 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53-s037", + "status_code": 200, + "ok": true, + "elapsed_ms": 8271, + "reply_type": "partial_coverage", + "trace_id": "address-ykDM9o9y8I", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "documents_forming_balance", + "actual_intent": "list_documents_by_counterparty", + "intent_match": false, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": false, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 38, + "id": "S038", + "question": "доки под остатком 60.01 на 2020-07-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53-s038", + "status_code": 200, + "ok": true, + "elapsed_ms": 8140, + "reply_type": "partial_coverage", + "trace_id": "address-GvkS1Sux_Y", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "documents_forming_balance", + "actual_intent": "list_documents_by_counterparty", + "intent_match": false, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": false, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + } +] diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53/full_live_results.json b/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53/full_live_results.json new file mode 100644 index 0000000..7aee601 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53/full_live_results.json @@ -0,0 +1,1676 @@ +{ + "run_id": "2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53", + "generated_at": "2026-04-02T10:01:59", + "summary": { + "run_id": "2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53", + "generated_at": "2026-04-02T10:01:59", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\address_slang_stress_2026-04-02.json", + "backend_url": "http://127.0.0.1:8787/api/assistant/message", + "llm_provider": "local", + "llm_model": "qwen2.5-14b-instruct-1m", + "llm_base_url": "http://127.0.0.1:1234", + "totals": { + "questions_total": 60, + "ok_200_count": 60, + "semantic_pass_count": 58, + "semantic_pass_rate": 0.9667, + "factual_count": 43, + "partial_coverage_count": 17, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_applied_count": 49, + "avg_elapsed_ms": 6102.7 + }, + "distributions": { + "reply_type": { + "partial_coverage": 17, + "factual": 43 + }, + "actual_intent": { + "list_documents_by_counterparty": 14, + "bank_operations_by_counterparty": 10, + "account_balance_snapshot": 16, + "documents_forming_balance": 6, + "list_documents_by_contract": 8, + "bank_operations_by_contract": 6 + }, + "actual_mode": { + "address_query": 60 + }, + "mcp_call_status": { + "materialized_but_not_anchor_matched": 12, + "matched_non_empty": 43, + "skipped": 1, + "no_raw_rows": 2, + "materialized_but_filtered_out_by_recipe": 2 + }, + "limited_reason_category": { + "empty_match": 14, + "missing_anchor": 1, + "recipe_visibility_gap": 2 + } + } + }, + "rows": [ + { + "index": 1, + "id": "S001", + "question": "свк доки за 2020 покаж пж", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53-s001", + "status_code": 200, + "ok": true, + "elapsed_ms": 8839, + "reply_type": "partial_coverage", + "trace_id": "address-BmUyjL4uTK", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 2, + "id": "S002", + "question": "покеж все доки по свк за 20 год", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53-s002", + "status_code": 200, + "ok": true, + "elapsed_ms": 5832, + "reply_type": "factual", + "trace_id": "address-u4NQfhfWtD", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 3, + "id": "S003", + "question": "дай список документов по свк за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53-s003", + "status_code": 200, + "ok": true, + "elapsed_ms": 6066, + "reply_type": "factual", + "trace_id": "address-iO8eTXdPYQ", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 4, + "id": "S004", + "question": "какие у свк есть доки за 2020?", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53-s004", + "status_code": 200, + "ok": true, + "elapsed_ms": 8426, + "reply_type": "partial_coverage", + "trace_id": "address-yOSRAZrm_y", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 5, + "id": "S005", + "question": "че по свк по докам за 2020 год", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53-s005", + "status_code": 200, + "ok": true, + "elapsed_ms": 785, + "reply_type": "factual", + "trace_id": "address-a1A6hHuWPm", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_without_llm", + "fallback_rule_hit": "documents_counterparty_year_rewrite", + "error_code": null, + "error_message": null + }, + { + "index": 6, + "id": "S006", + "question": "ёпт покажи доки по свк за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53-s006", + "status_code": 200, + "ok": true, + "elapsed_ms": 6097, + "reply_type": "factual", + "trace_id": "address-3xb43uUNlI", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 7, + "id": "S007", + "question": "бля, доки свк 2020 вывали", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53-s007", + "status_code": 200, + "ok": true, + "elapsed_ms": 6097, + "reply_type": "factual", + "trace_id": "address-_lk-FENWEQ", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 8, + "id": "S008", + "question": "svk docs for 2020 please", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53-s008", + "status_code": 200, + "ok": true, + "elapsed_ms": 6061, + "reply_type": "factual", + "trace_id": "address-bzrqk0ozDj", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 9, + "id": "S009", + "question": "docs by counterparty svk year 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53-s009", + "status_code": 200, + "ok": true, + "elapsed_ms": 8435, + "reply_type": "partial_coverage", + "trace_id": "address-E15yCtdwRA", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 10, + "id": "S010", + "question": "по контрагенту свк покаж документы за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53-s010", + "status_code": 200, + "ok": true, + "elapsed_ms": 5834, + "reply_type": "factual", + "trace_id": "address-RPztnl5H7O", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 11, + "id": "S011", + "question": "плс доки по свк 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53-s011", + "status_code": 200, + "ok": true, + "elapsed_ms": 9394, + "reply_type": "partial_coverage", + "trace_id": "address-v9iUAIHYUN", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 12, + "id": "S012", + "question": "свк док за 2020 гони", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53-s012", + "status_code": 200, + "ok": true, + "elapsed_ms": 764, + "reply_type": "factual", + "trace_id": "address-nAMasVS2gQ", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_without_llm", + "fallback_rule_hit": "documents_counterparty_year_rewrite", + "error_code": null, + "error_message": null + }, + { + "index": 13, + "id": "S013", + "question": "по свк банковские операции за 2020 покаж", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53-s013", + "status_code": 200, + "ok": true, + "elapsed_ms": 6062, + "reply_type": "factual", + "trace_id": "address-1WuLc6x8SA", + "assistant_reply": "Собран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 14, + "id": "S014", + "question": "свк выписка банка 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53-s014", + "status_code": 200, + "ok": true, + "elapsed_ms": 7115, + "reply_type": "factual", + "trace_id": "address-PDrz00yaik", + "assistant_reply": "Собран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 15, + "id": "S015", + "question": "платежи по свк за 2020 выведи", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53-s015", + "status_code": 200, + "ok": true, + "elapsed_ms": 7126, + "reply_type": "factual", + "trace_id": "address-5GFxjrp8zc", + "assistant_reply": "Собран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 16, + "id": "S016", + "question": "оплаты по свк за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53-s016", + "status_code": 200, + "ok": true, + "elapsed_ms": 6068, + "reply_type": "factual", + "trace_id": "address-wdO0lSD65F", + "assistant_reply": "Собран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 17, + "id": "S017", + "question": "свк банк опер за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53-s017", + "status_code": 200, + "ok": true, + "elapsed_ms": 8437, + "reply_type": "partial_coverage", + "trace_id": "address-IPguGk2PxK", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 18, + "id": "S018", + "question": "че у свк по банку за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53-s018", + "status_code": 200, + "ok": true, + "elapsed_ms": 8058, + "reply_type": "partial_coverage", + "trace_id": "address-cMF3FBxHlz", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 19, + "id": "S019", + "question": "свк списания/поступления за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53-s019", + "status_code": 200, + "ok": true, + "elapsed_ms": 6151, + "reply_type": "partial_coverage", + "trace_id": "address-tMpTPcZqKP", + "assistant_reply": "Для точного адресного поиска не хватает обязательного якоря.\nПричина: не хватает обязательных фильтров.\nЧто нужно уточнить: уточните: counterparty.", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "skipped", + "limited_reason_category": "missing_anchor", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 20, + "id": "S020", + "question": "bank ops by svk for 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53-s020", + "status_code": 200, + "ok": true, + "elapsed_ms": 740, + "reply_type": "factual", + "trace_id": "address-jas2kpHYbp", + "assistant_reply": "Собран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 1.\n1. 2020-12-16T16:20:51Z | Списание с расчетного счета 00000000293 от 16.12.2020 16:20:51 | 0 / 0 | 60 | аналитика: СБЕРБАНК, ПАО", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_without_llm", + "fallback_rule_hit": "bank_operations_counterparty_year_rewrite", + "error_code": null, + "error_message": null + }, + { + "index": 21, + "id": "S021", + "question": "transactions by counterparty svk 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53-s021", + "status_code": 200, + "ok": true, + "elapsed_ms": 6113, + "reply_type": "factual", + "trace_id": "address-Am4HYhSmWL", + "assistant_reply": "Собран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 22, + "id": "S022", + "question": "бля, по свк банковские платежки 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53-s022", + "status_code": 200, + "ok": true, + "elapsed_ms": 7072, + "reply_type": "factual", + "trace_id": "address-b9iadpzueu", + "assistant_reply": "Собран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 23, + "id": "S023", + "question": "сальдо по счету 60.01 на дату 2020-07-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53-s023", + "status_code": 200, + "ok": true, + "elapsed_ms": 6128, + "reply_type": "factual", + "trace_id": "address-4qi9KAHjQG", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 5.\nСумма по отобранным движениям: 216200.\n1. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400\n2. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600\n3. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400\n4. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 24, + "id": "S024", + "question": "остаток по счету 60.01 на 2020.05", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53-s024", + "status_code": 200, + "ok": true, + "elapsed_ms": 6030, + "reply_type": "factual", + "trace_id": "address-brOgWpYPb-", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 5.\nСумма по отобранным движениям: 707200.\n1. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 75367\n2. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 211833\n3. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 187967\n4. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 162033", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 25, + "id": "S025", + "question": "покажи остаток по 60.01 за май 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53-s025", + "status_code": 200, + "ok": true, + "elapsed_ms": 5089, + "reply_type": "factual", + "trace_id": "address-CqUXlLvTbs", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 5.\nСумма по отобранным движениям: 707200.\n1. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 75367\n2. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 211833\n3. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 187967\n4. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 162033", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 26, + "id": "S026", + "question": "счет 60 остаток на май 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53-s026", + "status_code": 200, + "ok": true, + "elapsed_ms": 5105, + "reply_type": "factual", + "trace_id": "address-4uFH6uJn2R", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 6.\nСумма по отобранным движениям: 849499.\n1. 2020-05-22T10:14:43Z | Списание с расчетного счета 00000000148 от 22.05.2020 10:14:43 | 60.02 / 51 | 142299\n2. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 75367\n3. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 211833\n4. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 187967", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 27, + "id": "S027", + "question": "баланс account 60.01 as of 2020-07-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53-s027", + "status_code": 200, + "ok": true, + "elapsed_ms": 6096, + "reply_type": "factual", + "trace_id": "address-cPgjl9Mqlz", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 5.\nСумма по отобранным движениям: 216200.\n1. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400\n2. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600\n3. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400\n4. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 28, + "id": "S028", + "question": "60.01 saldo на 31.07.2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53-s028", + "status_code": 200, + "ok": true, + "elapsed_ms": 6099, + "reply_type": "factual", + "trace_id": "address-Ct5-8VW8Ms", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 5.\nСумма по отобранным движениям: 216200.\n1. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400\n2. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600\n3. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400\n4. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 29, + "id": "S029", + "question": "сколько на счете 60 на конец 2020-05", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53-s029", + "status_code": 200, + "ok": true, + "elapsed_ms": 5107, + "reply_type": "factual", + "trace_id": "address-EA7-sCWeMw", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 6.\nСумма по отобранным движениям: 849499.\n1. 2020-05-22T10:14:43Z | Списание с расчетного счета 00000000148 от 22.05.2020 10:14:43 | 60.02 / 51 | 142299\n2. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 75367\n3. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 211833\n4. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 187967", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 30, + "id": "S030", + "question": "дай остаток 60.02 на 2020-12-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53-s030", + "status_code": 200, + "ok": true, + "elapsed_ms": 6060, + "reply_type": "factual", + "trace_id": "address-0wTCL38X9M", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 21.\nСумма по отобранным движениям: 6296596.\n1. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 900000\n2. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 144749\n3. 2020-11-20T12:00:00Z | Поступление товаров и услуг 00000000030 от 20.11.2020 12:00:00 | 60.01 / 60.02 | 8700\n4. 2020-11-19T12:00:02Z | Списание с расчетного счета 00000000270 от 19.11.2020 12:00:02 | 60.02 / 51 | 900000", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 31, + "id": "S031", + "question": "епт, сальдо по счету 62.01 на 2020-12-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53-s031", + "status_code": 200, + "ok": true, + "elapsed_ms": 6109, + "reply_type": "partial_coverage", + "trace_id": "address-RKe9aVr3dv", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "no_raw_rows", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 32, + "id": "S032", + "question": "плс остаток по счету 51 на 2020-06-30", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53-s032", + "status_code": 200, + "ok": true, + "elapsed_ms": 6129, + "reply_type": "factual", + "trace_id": "address-dqiDgM9gwl", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 30.\nСумма по отобранным движениям: 4579658.75.\n1. 2020-06-30T12:00:07Z | Списание с расчетного счета 00000000180 от 30.06.2020 12:00:07 | 66.03 / 51 | 35000\n2. 2020-06-30T12:00:05Z | Списание с расчетного счета 00000000178 от 30.06.2020 12:00:05 | 60.01 / 51 | 15800\n3. 2020-06-30T12:00:04Z | Списание с расчетного счета 00000000177 от 30.06.2020 12:00:04 | 70 / 51 | 50\n4. 2020-06-30T12:00:03Z | Списание с расчетного счета 00000000176 от 30.06.2020 12:00:03 | 91.02 / 51 | 35", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 33, + "id": "S033", + "question": "как там по счету 60.01 на 2020.07?", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53-s033", + "status_code": 200, + "ok": true, + "elapsed_ms": 6047, + "reply_type": "factual", + "trace_id": "address-BbYT7xyJMg", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 5.\nСумма по отобранным движениям: 216200.\n1. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400\n2. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600\n3. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400\n4. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 34, + "id": "S034", + "question": "сальдо 60 на 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53-s034", + "status_code": 200, + "ok": true, + "elapsed_ms": 6163, + "reply_type": "factual", + "trace_id": "address-vlWQPKysIA", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 138.\nСумма по отобранным движениям: 24061597.5.\n1. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 900000\n2. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 144749\n3. 2020-11-26T12:00:02Z | Списание с расчетного счета 00000000276 от 26.11.2020 12:00:02 | 60.01 / 51 | 524730.5\n4. 2020-11-26T12:00:02Z | Списание с расчетного счета 00000000276 от 26.11.2020 12:00:02 | 60.01 / 51 | 210770.5", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 35, + "id": "S035", + "question": "какие документы формируют остаток по счету 60.01 на 2020-07-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53-s035", + "status_code": 200, + "ok": true, + "elapsed_ms": 6022, + "reply_type": "factual", + "trace_id": "address-DxTr5gRHHw", + "assistant_reply": "Собран drilldown документов, формирующих остаток по счету на указанную дату.\nДокументных строк отобрано: 5.\nСумма по отобранным движениям: 216200.\n1. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400\n2. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600\n3. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400\n4. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200\n5. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 7600\nМожно уточнить выборку по контрагенту, договору или периоду.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 36, + "id": "S036", + "question": "из чего состоит остаток по счету 60 на 2020.05", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53-s036", + "status_code": 200, + "ok": true, + "elapsed_ms": 6126, + "reply_type": "partial_coverage", + "trace_id": "address-Sm-NJmaAuu", + "assistant_reply": "Текущий live recipe не дает нужную видимость данных для этого сценария.\nПричина: строки по якорю найдены, но отфильтрованы intent-specific recipe.\nЧто нужно уточнить: сузьте период, уточните контрагента или документный тип.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_filtered_out_by_recipe", + "limited_reason_category": "recipe_visibility_gap", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 37, + "id": "S037", + "question": "раскрой остаток 60.01 по документам на конец июля 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53-s037", + "status_code": 200, + "ok": true, + "elapsed_ms": 8271, + "reply_type": "partial_coverage", + "trace_id": "address-ykDM9o9y8I", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "documents_forming_balance", + "actual_intent": "list_documents_by_counterparty", + "intent_match": false, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": false, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 38, + "id": "S038", + "question": "доки под остатком 60.01 на 2020-07-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53-s038", + "status_code": 200, + "ok": true, + "elapsed_ms": 8140, + "reply_type": "partial_coverage", + "trace_id": "address-GvkS1Sux_Y", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "documents_forming_balance", + "actual_intent": "list_documents_by_counterparty", + "intent_match": false, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": false, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 39, + "id": "S039", + "question": "documents forming balance for account 60.01 as of 2020-07-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53-s039", + "status_code": 200, + "ok": true, + "elapsed_ms": 6898, + "reply_type": "factual", + "trace_id": "address-YcNZrr1cx_", + "assistant_reply": "Собран drilldown документов, формирующих остаток по счету на указанную дату.\nДокументных строк отобрано: 5.\nСумма по отобранным движениям: 216200.\n1. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400\n2. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600\n3. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400\n4. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200\n5. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 7600\nМожно уточнить выборку по контрагенту, договору или периоду.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 40, + "id": "S040", + "question": "бля, какие доки формируют остаток 60.01 на 2020-05-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53-s040", + "status_code": 200, + "ok": true, + "elapsed_ms": 6128, + "reply_type": "partial_coverage", + "trace_id": "address-F8BRwK9I1T", + "assistant_reply": "Текущий live recipe не дает нужную видимость данных для этого сценария.\nПричина: строки по якорю найдены, но отфильтрованы intent-specific recipe.\nЧто нужно уточнить: сузьте период, уточните контрагента или документный тип.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_filtered_out_by_recipe", + "limited_reason_category": "recipe_visibility_gap", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 41, + "id": "S041", + "question": "по счету 62.01 раскрой остаток документами на 2020-12-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53-s041", + "status_code": 200, + "ok": true, + "elapsed_ms": 7107, + "reply_type": "partial_coverage", + "trace_id": "address-VdUoL30u0s", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "no_raw_rows", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 42, + "id": "S042", + "question": "из чего остаток по счету 51 на 2020-06-30", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53-s042", + "status_code": 200, + "ok": true, + "elapsed_ms": 6109, + "reply_type": "factual", + "trace_id": "address-xmP1KTgeh9", + "assistant_reply": "Собран drilldown документов, формирующих остаток по счету на указанную дату.\nДокументных строк отобрано: 3.\nСумма по отобранным движениям: 2190524.88.\n1. 2020-06-16T12:00:02Z | Поступление на расчетный счет 00000000026 от 16.06.2020 12:00:02 | 51 / 60.02 | 250000\n2. 2020-06-03T00:00:02Z | Поступление на расчетный счет 00000000025 от 03.06.2020 0:00:02 | 51 / 62.02 | 1642764.88\n3. 2020-06-03T00:00:01Z | Поступление на расчетный счет 00000000024 от 03.06.2020 0:00:01 | 51 / 62.02 | 297760\nМожно уточнить выборку по контрагенту, договору или периоду.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 43, + "id": "S043", + "question": "покажи документы по договору 15/24 за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53-s043", + "status_code": 200, + "ok": true, + "elapsed_ms": 7268, + "reply_type": "factual", + "trace_id": "address-nilVoA39kJ", + "assistant_reply": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-08-31T15:00:06Z | Поступление товаров и услуг 00000000024 от 31.08.2020 15:00:06 | 19.04 / 76.05 | 233.33\n2. 2020-08-31T15:00:06Z | Поступление товаров и услуг 00000000024 от 31.08.2020 15:00:06 | 44.01 / 76.05 | 1166.67", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 44, + "id": "S044", + "question": "доки по дог. 15/24 за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53-s044", + "status_code": 200, + "ok": true, + "elapsed_ms": 9232, + "reply_type": "partial_coverage", + "trace_id": "address-Rhju6d_Fp0", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 45, + "id": "S045", + "question": "какие документы по контракту 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53-s045", + "status_code": 200, + "ok": true, + "elapsed_ms": 7127, + "reply_type": "factual", + "trace_id": "address-uBLtd5sPiI", + "assistant_reply": "Документный фильтр в live дал пустой набор; показываю связанные банковские операции по договору.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 46, + "id": "S046", + "question": "docs by contract 15/24 year 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53-s046", + "status_code": 200, + "ok": true, + "elapsed_ms": 9134, + "reply_type": "partial_coverage", + "trace_id": "address-iLvuChWvsj", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 47, + "id": "S047", + "question": "бля, покажи по договору 15/24 доки", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53-s047", + "status_code": 200, + "ok": true, + "elapsed_ms": 6044, + "reply_type": "factual", + "trace_id": "address-FZL0pnoyQg", + "assistant_reply": "Документный фильтр в live дал пустой набор; показываю связанные банковские операции по договору.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 48, + "id": "S048", + "question": "договор 15/24 документы", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53-s048", + "status_code": 200, + "ok": true, + "elapsed_ms": 6064, + "reply_type": "factual", + "trace_id": "address-FvkGwCmtZ2", + "assistant_reply": "Документный фильтр в live дал пустой набор; показываю связанные банковские операции по договору.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 49, + "id": "S049", + "question": "плс документы договор №15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53-s049", + "status_code": 200, + "ok": true, + "elapsed_ms": 7257, + "reply_type": "partial_coverage", + "trace_id": "address-kFUJqCLuXf", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 50, + "id": "S050", + "question": "покеж документы по 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53-s050", + "status_code": 200, + "ok": true, + "elapsed_ms": 6027, + "reply_type": "factual", + "trace_id": "address-HrgG1HNbtV", + "assistant_reply": "Документный фильтр в live дал пустой набор; показываю связанные банковские операции по договору.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 51, + "id": "S051", + "question": "банковские операции по договору 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53-s051", + "status_code": 200, + "ok": true, + "elapsed_ms": 7149, + "reply_type": "factual", + "trace_id": "address-WbRhWQL08v", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "bank_operations_by_contract", + "actual_intent": "bank_operations_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 52, + "id": "S052", + "question": "платежи по договору 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53-s052", + "status_code": 200, + "ok": true, + "elapsed_ms": 6068, + "reply_type": "factual", + "trace_id": "address-GyWjrWqBrF", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "bank_operations_by_contract", + "actual_intent": "bank_operations_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 53, + "id": "S053", + "question": "выписка по договору 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53-s053", + "status_code": 200, + "ok": true, + "elapsed_ms": 6133, + "reply_type": "factual", + "trace_id": "address-6VCLVBfq0J", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "bank_operations_by_contract", + "actual_intent": "bank_operations_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 54, + "id": "S054", + "question": "bank ops by contract 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53-s054", + "status_code": 200, + "ok": true, + "elapsed_ms": 7142, + "reply_type": "partial_coverage", + "trace_id": "address-8BqDEM1i2E", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "bank_operations_by_contract", + "actual_intent": "bank_operations_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 55, + "id": "S055", + "question": "ёпт, покажи банк операции по дог 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53-s055", + "status_code": 200, + "ok": true, + "elapsed_ms": 5967, + "reply_type": "factual", + "trace_id": "address-cHzzx5qCjU", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "bank_operations_by_contract", + "actual_intent": "bank_operations_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 56, + "id": "S056", + "question": "по контракту 15/24 платежки", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53-s056", + "status_code": 200, + "ok": true, + "elapsed_ms": 6079, + "reply_type": "factual", + "trace_id": "address-yrUvUnfuER", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "bank_operations_by_contract", + "actual_intent": "bank_operations_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 57, + "id": "S057", + "question": "покажи сальдо по счету 60 за 2020", + "session": "chain_balance_60", + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53-chain_balance_60", + "status_code": 200, + "ok": true, + "elapsed_ms": 5959, + "reply_type": "factual", + "trace_id": "address-TQglvo9Iiv", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 138.\nСумма по отобранным движениям: 24061597.5.\n1. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 900000\n2. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 144749\n3. 2020-11-26T12:00:02Z | Списание с расчетного счета 00000000276 от 26.11.2020 12:00:02 | 60.01 / 51 | 524730.5\n4. 2020-11-26T12:00:02Z | Списание с расчетного счета 00000000276 от 26.11.2020 12:00:02 | 60.01 / 51 | 210770.5", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 58, + "id": "S058", + "question": "а теперь только май 2020", + "session": "chain_balance_60", + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53-chain_balance_60", + "status_code": 200, + "ok": true, + "elapsed_ms": 941, + "reply_type": "factual", + "trace_id": "address-ehfSW9ObPD", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 6.\nСумма по отобранным движениям: 849499.\n1. 2020-05-22T10:14:43Z | Списание с расчетного счета 00000000148 от 22.05.2020 10:14:43 | 60.02 / 51 | 142299\n2. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 75367\n3. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 211833\n4. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 187967", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 59, + "id": "S059", + "question": "ок, теперь 2020.05", + "session": "chain_balance_60", + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53-chain_balance_60", + "status_code": 200, + "ok": true, + "elapsed_ms": 994, + "reply_type": "factual", + "trace_id": "address-BPTeMv6dph", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 6.\nСумма по отобранным движениям: 849499.\n1. 2020-05-22T10:14:43Z | Списание с расчетного счета 00000000148 от 22.05.2020 10:14:43 | 60.02 / 51 | 142299\n2. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 75367\n3. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 211833\n4. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 187967", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 60, + "id": "S060", + "question": "теперь на 2020-07-31", + "session": "chain_balance_60", + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53-chain_balance_60", + "status_code": 200, + "ok": true, + "elapsed_ms": 1042, + "reply_type": "factual", + "trace_id": "address-plrJQ9H85P", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 6.\nСумма по отобранным движениям: 271400.\n1. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400\n2. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600\n3. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400\n4. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + } + ] +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53/run_summary.json b/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53/run_summary.json new file mode 100644 index 0000000..2c56280 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53/run_summary.json @@ -0,0 +1,50 @@ +{ + "run_id": "2026-04-02_Address_Slang_Live_Stress_2026-04-02_09-55-53", + "generated_at": "2026-04-02T10:01:59", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\address_slang_stress_2026-04-02.json", + "backend_url": "http://127.0.0.1:8787/api/assistant/message", + "llm_provider": "local", + "llm_model": "qwen2.5-14b-instruct-1m", + "llm_base_url": "http://127.0.0.1:1234", + "totals": { + "questions_total": 60, + "ok_200_count": 60, + "semantic_pass_count": 58, + "semantic_pass_rate": 0.9667, + "factual_count": 43, + "partial_coverage_count": 17, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_applied_count": 49, + "avg_elapsed_ms": 6102.7 + }, + "distributions": { + "reply_type": { + "partial_coverage": 17, + "factual": 43 + }, + "actual_intent": { + "list_documents_by_counterparty": 14, + "bank_operations_by_counterparty": 10, + "account_balance_snapshot": 16, + "documents_forming_balance": 6, + "list_documents_by_contract": 8, + "bank_operations_by_contract": 6 + }, + "actual_mode": { + "address_query": 60 + }, + "mcp_call_status": { + "materialized_but_not_anchor_matched": 12, + "matched_non_empty": 43, + "skipped": 1, + "no_raw_rows": 2, + "materialized_but_filtered_out_by_recipe": 2 + }, + "limited_reason_category": { + "empty_match": 14, + "missing_anchor": 1, + "recipe_visibility_gap": 2 + } + } +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46/README.md b/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46/README.md new file mode 100644 index 0000000..8629d06 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46/README.md @@ -0,0 +1,23 @@ +# 2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46 + +Generated at: 2026-04-02T10:13:40 +Questions file: X:\1C\NDC_1C\docs\ADDRESS\question_sets\address_slang_stress_2026-04-02.json +Backend URL: http://127.0.0.1:8787/api/assistant/message +LLM: local / qwen2.5-14b-instruct-1m @ http://127.0.0.1:1234 + +## Totals +- questions_total: 60 +- ok_200_count: 60 +- semantic_pass_count: 60 +- semantic_pass_rate: 1.0 +- factual_count: 42 +- partial_coverage_count: 18 +- clarification_required_count: 0 +- http_error_count: 0 +- llm_decomposition_applied_count: 47 +- avg_elapsed_ms: 5902.6 + +## Files +- run_summary.json +- full_live_results.json +- failures_only.json diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46/failures_only.json b/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46/failures_only.json new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46/failures_only.json @@ -0,0 +1 @@ +[] diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46/full_live_results.json b/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46/full_live_results.json new file mode 100644 index 0000000..b5d1123 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46/full_live_results.json @@ -0,0 +1,1678 @@ +{ + "run_id": "2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46", + "generated_at": "2026-04-02T10:13:40", + "summary": { + "run_id": "2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46", + "generated_at": "2026-04-02T10:13:40", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\address_slang_stress_2026-04-02.json", + "backend_url": "http://127.0.0.1:8787/api/assistant/message", + "llm_provider": "local", + "llm_model": "qwen2.5-14b-instruct-1m", + "llm_base_url": "http://127.0.0.1:1234", + "totals": { + "questions_total": 60, + "ok_200_count": 60, + "semantic_pass_count": 60, + "semantic_pass_rate": 1.0, + "factual_count": 42, + "partial_coverage_count": 18, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_applied_count": 47, + "avg_elapsed_ms": 5902.6 + }, + "distributions": { + "reply_type": { + "partial_coverage": 18, + "factual": 42 + }, + "actual_intent": { + "list_documents_by_counterparty": 12, + "bank_operations_by_counterparty": 10, + "account_balance_snapshot": 16, + "documents_forming_balance": 8, + "list_documents_by_contract": 8, + "bank_operations_by_contract": 6 + }, + "actual_mode": { + "address_query": 60 + }, + "mcp_call_status": { + "materialized_but_not_anchor_matched": 10, + "matched_non_empty": 42, + "skipped": 3, + "no_raw_rows": 2, + "materialized_but_filtered_out_by_recipe": 2, + "error": 1 + }, + "limited_reason_category": { + "empty_match": 12, + "missing_anchor": 3, + "recipe_visibility_gap": 2, + "execution_error": 1 + } + } + }, + "rows": [ + { + "index": 1, + "id": "S001", + "question": "свк доки за 2020 покаж пж", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46-s001", + "status_code": 200, + "ok": true, + "elapsed_ms": 9012, + "reply_type": "partial_coverage", + "trace_id": "address-NjqtBYMAZg", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 2, + "id": "S002", + "question": "покеж все доки по свк за 20 год", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46-s002", + "status_code": 200, + "ok": true, + "elapsed_ms": 5774, + "reply_type": "factual", + "trace_id": "address-L5BM3AsJcu", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 3, + "id": "S003", + "question": "дай список документов по свк за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46-s003", + "status_code": 200, + "ok": true, + "elapsed_ms": 6086, + "reply_type": "factual", + "trace_id": "address-whP7XExO_w", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 4, + "id": "S004", + "question": "какие у свк есть доки за 2020?", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46-s004", + "status_code": 200, + "ok": true, + "elapsed_ms": 8454, + "reply_type": "partial_coverage", + "trace_id": "address-cDoEHdcBPF", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 5, + "id": "S005", + "question": "че по свк по докам за 2020 год", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46-s005", + "status_code": 200, + "ok": true, + "elapsed_ms": 671, + "reply_type": "factual", + "trace_id": "address-inyuDXgyD-", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_without_llm", + "fallback_rule_hit": "documents_counterparty_year_rewrite", + "error_code": null, + "error_message": null + }, + { + "index": 6, + "id": "S006", + "question": "ёпт покажи доки по свк за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46-s006", + "status_code": 200, + "ok": true, + "elapsed_ms": 6089, + "reply_type": "factual", + "trace_id": "address-YnKaff4ANi", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 7, + "id": "S007", + "question": "бля, доки свк 2020 вывали", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46-s007", + "status_code": 200, + "ok": true, + "elapsed_ms": 6100, + "reply_type": "factual", + "trace_id": "address-Z3u2ySISjg", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 8, + "id": "S008", + "question": "svk docs for 2020 please", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46-s008", + "status_code": 200, + "ok": true, + "elapsed_ms": 6137, + "reply_type": "factual", + "trace_id": "address-yQUSp0Io-s", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 9, + "id": "S009", + "question": "docs by counterparty svk year 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46-s009", + "status_code": 200, + "ok": true, + "elapsed_ms": 8285, + "reply_type": "partial_coverage", + "trace_id": "address-YU9HwzPrbA", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 10, + "id": "S010", + "question": "по контрагенту свк покаж документы за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46-s010", + "status_code": 200, + "ok": true, + "elapsed_ms": 5921, + "reply_type": "factual", + "trace_id": "address-HVIX5gCDB_", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 11, + "id": "S011", + "question": "плс доки по свк 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46-s011", + "status_code": 200, + "ok": true, + "elapsed_ms": 8301, + "reply_type": "partial_coverage", + "trace_id": "address-BUezTkFbzV", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 12, + "id": "S012", + "question": "свк док за 2020 гони", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46-s012", + "status_code": 200, + "ok": true, + "elapsed_ms": 813, + "reply_type": "factual", + "trace_id": "address-YKShn_xXgc", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_without_llm", + "fallback_rule_hit": "documents_counterparty_year_rewrite", + "error_code": null, + "error_message": null + }, + { + "index": 13, + "id": "S013", + "question": "по свк банковские операции за 2020 покаж", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46-s013", + "status_code": 200, + "ok": true, + "elapsed_ms": 6103, + "reply_type": "factual", + "trace_id": "address-1N_YlH-PU9", + "assistant_reply": "Собран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 14, + "id": "S014", + "question": "свк выписка банка 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46-s014", + "status_code": 200, + "ok": true, + "elapsed_ms": 6063, + "reply_type": "factual", + "trace_id": "address-ZQEP47YFGH", + "assistant_reply": "Собран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 15, + "id": "S015", + "question": "платежи по свк за 2020 выведи", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46-s015", + "status_code": 200, + "ok": true, + "elapsed_ms": 7128, + "reply_type": "factual", + "trace_id": "address-TstxJG2Fgd", + "assistant_reply": "Собран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 16, + "id": "S016", + "question": "оплаты по свк за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46-s016", + "status_code": 200, + "ok": true, + "elapsed_ms": 6108, + "reply_type": "factual", + "trace_id": "address-wanWAXJuKX", + "assistant_reply": "Собран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 17, + "id": "S017", + "question": "свк банк опер за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46-s017", + "status_code": 200, + "ok": true, + "elapsed_ms": 8358, + "reply_type": "partial_coverage", + "trace_id": "address-uy2Cgpu1m7", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 18, + "id": "S018", + "question": "че у свк по банку за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46-s018", + "status_code": 200, + "ok": true, + "elapsed_ms": 8132, + "reply_type": "partial_coverage", + "trace_id": "address-0OzpHxpWv1", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 19, + "id": "S019", + "question": "свк списания/поступления за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46-s019", + "status_code": 200, + "ok": true, + "elapsed_ms": 6006, + "reply_type": "partial_coverage", + "trace_id": "address-z9BMc8LYkA", + "assistant_reply": "Для точного адресного поиска не хватает обязательного якоря.\nПричина: не хватает обязательных фильтров.\nЧто нужно уточнить: уточните: counterparty.", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "skipped", + "limited_reason_category": "missing_anchor", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 20, + "id": "S020", + "question": "bank ops by svk for 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46-s020", + "status_code": 200, + "ok": true, + "elapsed_ms": 907, + "reply_type": "factual", + "trace_id": "address-cfd4nTZPup", + "assistant_reply": "Собран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 1.\n1. 2020-12-16T16:20:51Z | Списание с расчетного счета 00000000293 от 16.12.2020 16:20:51 | 0 / 0 | 60 | аналитика: СБЕРБАНК, ПАО", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_without_llm", + "fallback_rule_hit": "bank_operations_counterparty_year_rewrite", + "error_code": null, + "error_message": null + }, + { + "index": 21, + "id": "S021", + "question": "transactions by counterparty svk 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46-s021", + "status_code": 200, + "ok": true, + "elapsed_ms": 6091, + "reply_type": "factual", + "trace_id": "address-Sy-BUki122", + "assistant_reply": "Собран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 22, + "id": "S022", + "question": "бля, по свк банковские платежки 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46-s022", + "status_code": 200, + "ok": true, + "elapsed_ms": 7129, + "reply_type": "factual", + "trace_id": "address-0vJOysd4vm", + "assistant_reply": "Собран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 23, + "id": "S023", + "question": "сальдо по счету 60.01 на дату 2020-07-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46-s023", + "status_code": 200, + "ok": true, + "elapsed_ms": 5075, + "reply_type": "factual", + "trace_id": "address-g1WdKhCp9Z", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 5.\nСумма по отобранным движениям: 216200.\n1. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400\n2. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600\n3. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400\n4. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 24, + "id": "S024", + "question": "остаток по счету 60.01 на 2020.05", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46-s024", + "status_code": 200, + "ok": true, + "elapsed_ms": 5100, + "reply_type": "factual", + "trace_id": "address-I-51jaGfmw", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 5.\nСумма по отобранным движениям: 707200.\n1. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 75367\n2. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 211833\n3. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 187967\n4. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 162033", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 25, + "id": "S025", + "question": "покажи остаток по 60.01 за май 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46-s025", + "status_code": 200, + "ok": true, + "elapsed_ms": 6138, + "reply_type": "factual", + "trace_id": "address-Znm69tMi9k", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 5.\nСумма по отобранным движениям: 707200.\n1. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 75367\n2. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 211833\n3. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 187967\n4. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 162033", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 26, + "id": "S026", + "question": "счет 60 остаток на май 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46-s026", + "status_code": 200, + "ok": true, + "elapsed_ms": 5069, + "reply_type": "factual", + "trace_id": "address-xYNa2qOGn0", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 6.\nСумма по отобранным движениям: 849499.\n1. 2020-05-22T10:14:43Z | Списание с расчетного счета 00000000148 от 22.05.2020 10:14:43 | 60.02 / 51 | 142299\n2. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 75367\n3. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 211833\n4. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 187967", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 27, + "id": "S027", + "question": "баланс account 60.01 as of 2020-07-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46-s027", + "status_code": 200, + "ok": true, + "elapsed_ms": 6004, + "reply_type": "factual", + "trace_id": "address-k49b2E969s", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 5.\nСумма по отобранным движениям: 216200.\n1. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400\n2. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600\n3. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400\n4. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 28, + "id": "S028", + "question": "60.01 saldo на 31.07.2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46-s028", + "status_code": 200, + "ok": true, + "elapsed_ms": 5130, + "reply_type": "factual", + "trace_id": "address-a1JmSFJ7K7", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 5.\nСумма по отобранным движениям: 216200.\n1. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400\n2. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600\n3. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400\n4. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 29, + "id": "S029", + "question": "сколько на счете 60 на конец 2020-05", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46-s029", + "status_code": 200, + "ok": true, + "elapsed_ms": 5088, + "reply_type": "factual", + "trace_id": "address-sjAegPXCpM", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 6.\nСумма по отобранным движениям: 849499.\n1. 2020-05-22T10:14:43Z | Списание с расчетного счета 00000000148 от 22.05.2020 10:14:43 | 60.02 / 51 | 142299\n2. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 75367\n3. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 211833\n4. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 187967", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 30, + "id": "S030", + "question": "дай остаток 60.02 на 2020-12-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46-s030", + "status_code": 200, + "ok": true, + "elapsed_ms": 6124, + "reply_type": "factual", + "trace_id": "address-wlekpZkHHZ", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 21.\nСумма по отобранным движениям: 6296596.\n1. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 900000\n2. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 144749\n3. 2020-11-20T12:00:00Z | Поступление товаров и услуг 00000000030 от 20.11.2020 12:00:00 | 60.01 / 60.02 | 8700\n4. 2020-11-19T12:00:02Z | Списание с расчетного счета 00000000270 от 19.11.2020 12:00:02 | 60.02 / 51 | 900000", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 31, + "id": "S031", + "question": "епт, сальдо по счету 62.01 на 2020-12-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46-s031", + "status_code": 200, + "ok": true, + "elapsed_ms": 6087, + "reply_type": "partial_coverage", + "trace_id": "address-sJz0tdrmzu", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "no_raw_rows", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 32, + "id": "S032", + "question": "плс остаток по счету 51 на 2020-06-30", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46-s032", + "status_code": 200, + "ok": true, + "elapsed_ms": 6126, + "reply_type": "factual", + "trace_id": "address-WYJyiEsYIb", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 30.\nСумма по отобранным движениям: 4579658.75.\n1. 2020-06-30T12:00:07Z | Списание с расчетного счета 00000000180 от 30.06.2020 12:00:07 | 66.03 / 51 | 35000\n2. 2020-06-30T12:00:05Z | Списание с расчетного счета 00000000178 от 30.06.2020 12:00:05 | 60.01 / 51 | 15800\n3. 2020-06-30T12:00:04Z | Списание с расчетного счета 00000000177 от 30.06.2020 12:00:04 | 70 / 51 | 50\n4. 2020-06-30T12:00:03Z | Списание с расчетного счета 00000000176 от 30.06.2020 12:00:03 | 91.02 / 51 | 35", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 33, + "id": "S033", + "question": "как там по счету 60.01 на 2020.07?", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46-s033", + "status_code": 200, + "ok": true, + "elapsed_ms": 6045, + "reply_type": "factual", + "trace_id": "address-mQIleR1FT8", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 5.\nСумма по отобранным движениям: 216200.\n1. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400\n2. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600\n3. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400\n4. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 34, + "id": "S034", + "question": "сальдо 60 на 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46-s034", + "status_code": 200, + "ok": true, + "elapsed_ms": 6150, + "reply_type": "factual", + "trace_id": "address-s-SlyZrYIX", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 138.\nСумма по отобранным движениям: 24061597.5.\n1. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 900000\n2. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 144749\n3. 2020-11-26T12:00:02Z | Списание с расчетного счета 00000000276 от 26.11.2020 12:00:02 | 60.01 / 51 | 524730.5\n4. 2020-11-26T12:00:02Z | Списание с расчетного счета 00000000276 от 26.11.2020 12:00:02 | 60.01 / 51 | 210770.5", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 35, + "id": "S035", + "question": "какие документы формируют остаток по счету 60.01 на 2020-07-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46-s035", + "status_code": 200, + "ok": true, + "elapsed_ms": 6057, + "reply_type": "factual", + "trace_id": "address-QablP7zUX5", + "assistant_reply": "Собран drilldown документов, формирующих остаток по счету на указанную дату.\nДокументных строк отобрано: 5.\nСумма по отобранным движениям: 216200.\n1. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400\n2. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600\n3. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400\n4. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200\n5. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 7600\nМожно уточнить выборку по контрагенту, договору или периоду.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 36, + "id": "S036", + "question": "из чего состоит остаток по счету 60 на 2020.05", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46-s036", + "status_code": 200, + "ok": true, + "elapsed_ms": 6041, + "reply_type": "partial_coverage", + "trace_id": "address-xP73yrPXSn", + "assistant_reply": "Текущий live recipe не дает нужную видимость данных для этого сценария.\nПричина: строки по якорю найдены, но отфильтрованы intent-specific recipe.\nЧто нужно уточнить: сузьте период, уточните контрагента или документный тип.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_filtered_out_by_recipe", + "limited_reason_category": "recipe_visibility_gap", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 37, + "id": "S037", + "question": "раскрой остаток 60.01 по документам на конец июля 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46-s037", + "status_code": 200, + "ok": true, + "elapsed_ms": 5525, + "reply_type": "partial_coverage", + "trace_id": "address-cy8ojAmpV_", + "assistant_reply": "Для точного адресного поиска не хватает обязательного якоря.\nПричина: не хватает обязательных фильтров.\nЧто нужно уточнить: уточните: account.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "skipped", + "limited_reason_category": "missing_anchor", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 38, + "id": "S038", + "question": "доки под остатком 60.01 на 2020-07-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46-s038", + "status_code": 200, + "ok": true, + "elapsed_ms": 5395, + "reply_type": "partial_coverage", + "trace_id": "address-vJf_BTPWH4", + "assistant_reply": "Для точного адресного поиска не хватает обязательного якоря.\nПричина: не хватает обязательных фильтров.\nЧто нужно уточнить: уточните: account.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "skipped", + "limited_reason_category": "missing_anchor", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 39, + "id": "S039", + "question": "documents forming balance for account 60.01 as of 2020-07-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46-s039", + "status_code": 200, + "ok": true, + "elapsed_ms": 6382, + "reply_type": "factual", + "trace_id": "address-YhCiArnmFX", + "assistant_reply": "Собран drilldown документов, формирующих остаток по счету на указанную дату.\nДокументных строк отобрано: 5.\nСумма по отобранным движениям: 216200.\n1. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400\n2. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600\n3. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400\n4. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200\n5. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 7600\nМожно уточнить выборку по контрагенту, договору или периоду.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 40, + "id": "S040", + "question": "бля, какие доки формируют остаток 60.01 на 2020-05-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46-s040", + "status_code": 200, + "ok": true, + "elapsed_ms": 6050, + "reply_type": "partial_coverage", + "trace_id": "address-U117oZM_b-", + "assistant_reply": "Текущий live recipe не дает нужную видимость данных для этого сценария.\nПричина: строки по якорю найдены, но отфильтрованы intent-specific recipe.\nЧто нужно уточнить: сузьте период, уточните контрагента или документный тип.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_filtered_out_by_recipe", + "limited_reason_category": "recipe_visibility_gap", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 41, + "id": "S041", + "question": "по счету 62.01 раскрой остаток документами на 2020-12-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46-s041", + "status_code": 200, + "ok": true, + "elapsed_ms": 7138, + "reply_type": "partial_coverage", + "trace_id": "address-ol9gcoyvCo", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "no_raw_rows", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 42, + "id": "S042", + "question": "из чего остаток по счету 51 на 2020-06-30", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46-s042", + "status_code": 200, + "ok": true, + "elapsed_ms": 6180, + "reply_type": "factual", + "trace_id": "address-mVo-B5IyH7", + "assistant_reply": "Собран drilldown документов, формирующих остаток по счету на указанную дату.\nДокументных строк отобрано: 3.\nСумма по отобранным движениям: 2190524.88.\n1. 2020-06-16T12:00:02Z | Поступление на расчетный счет 00000000026 от 16.06.2020 12:00:02 | 51 / 60.02 | 250000\n2. 2020-06-03T00:00:02Z | Поступление на расчетный счет 00000000025 от 03.06.2020 0:00:02 | 51 / 62.02 | 1642764.88\n3. 2020-06-03T00:00:01Z | Поступление на расчетный счет 00000000024 от 03.06.2020 0:00:01 | 51 / 62.02 | 297760\nМожно уточнить выборку по контрагенту, договору или периоду.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 43, + "id": "S043", + "question": "покажи документы по договору 15/24 за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46-s043", + "status_code": 200, + "ok": true, + "elapsed_ms": 8237, + "reply_type": "partial_coverage", + "trace_id": "address-WlsJXqGBkk", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 44, + "id": "S044", + "question": "доки по дог. 15/24 за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46-s044", + "status_code": 200, + "ok": true, + "elapsed_ms": 8184, + "reply_type": "factual", + "trace_id": "address-AS7TvA9eqM", + "assistant_reply": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-08-31T15:00:06Z | Поступление товаров и услуг 00000000024 от 31.08.2020 15:00:06 | 19.04 / 76.05 | 233.33\n2. 2020-08-31T15:00:06Z | Поступление товаров и услуг 00000000024 от 31.08.2020 15:00:06 | 44.01 / 76.05 | 1166.67", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 45, + "id": "S045", + "question": "какие документы по контракту 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46-s045", + "status_code": 200, + "ok": true, + "elapsed_ms": 6000, + "reply_type": "factual", + "trace_id": "address-qjaVT-V6KW", + "assistant_reply": "Документный фильтр в live дал пустой набор; показываю связанные банковские операции по договору.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 46, + "id": "S046", + "question": "docs by contract 15/24 year 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46-s046", + "status_code": 200, + "ok": true, + "elapsed_ms": 9199, + "reply_type": "partial_coverage", + "trace_id": "address-WajjWNUc7d", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 47, + "id": "S047", + "question": "бля, покажи по договору 15/24 доки", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46-s047", + "status_code": 200, + "ok": true, + "elapsed_ms": 6133, + "reply_type": "factual", + "trace_id": "address-R_Y-PTVQZ7", + "assistant_reply": "Документный фильтр в live дал пустой набор; показываю связанные банковские операции по договору.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 48, + "id": "S048", + "question": "договор 15/24 документы", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46-s048", + "status_code": 200, + "ok": true, + "elapsed_ms": 6034, + "reply_type": "factual", + "trace_id": "address-IPp5NP1vTW", + "assistant_reply": "Документный фильтр в live дал пустой набор; показываю связанные банковские операции по договору.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 49, + "id": "S049", + "question": "плс документы договор №15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46-s049", + "status_code": 200, + "ok": true, + "elapsed_ms": 7278, + "reply_type": "partial_coverage", + "trace_id": "address-C61Jk6LWTh", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 50, + "id": "S050", + "question": "покеж документы по 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46-s050", + "status_code": 200, + "ok": true, + "elapsed_ms": 5976, + "reply_type": "factual", + "trace_id": "address-hQCFeBBsys", + "assistant_reply": "Документный фильтр в live дал пустой набор; показываю связанные банковские операции по договору.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 51, + "id": "S051", + "question": "банковские операции по договору 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46-s051", + "status_code": 200, + "ok": true, + "elapsed_ms": 7169, + "reply_type": "factual", + "trace_id": "address-GUiUV6K5n1", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "bank_operations_by_contract", + "actual_intent": "bank_operations_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 52, + "id": "S052", + "question": "платежи по договору 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46-s052", + "status_code": 200, + "ok": true, + "elapsed_ms": 6065, + "reply_type": "factual", + "trace_id": "address-r04EEkemUO", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "bank_operations_by_contract", + "actual_intent": "bank_operations_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 53, + "id": "S053", + "question": "выписка по договору 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46-s053", + "status_code": 200, + "ok": true, + "elapsed_ms": 5993, + "reply_type": "partial_coverage", + "trace_id": "address-vUwhPz2KTQ", + "assistant_reply": "Не удалось выполнить адресный live-запрос в V1.\nПричина: live MCP вызов завершился ошибкой.\nЧто нужно уточнить: MCP fetch failed: This operation was aborted.", + "expected_intent": "bank_operations_by_contract", + "actual_intent": "bank_operations_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "error", + "limited_reason_category": "execution_error", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 54, + "id": "S054", + "question": "bank ops by contract 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46-s054", + "status_code": 200, + "ok": true, + "elapsed_ms": 7254, + "reply_type": "partial_coverage", + "trace_id": "address-_-J0KVgwmI", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "bank_operations_by_contract", + "actual_intent": "bank_operations_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 55, + "id": "S055", + "question": "ёпт, покажи банк операции по дог 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46-s055", + "status_code": 200, + "ok": true, + "elapsed_ms": 6052, + "reply_type": "factual", + "trace_id": "address-qrkhK3rZJK", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "bank_operations_by_contract", + "actual_intent": "bank_operations_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 56, + "id": "S056", + "question": "по контракту 15/24 платежки", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46-s056", + "status_code": 200, + "ok": true, + "elapsed_ms": 6056, + "reply_type": "factual", + "trace_id": "address-a-hIgLw8nd", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "bank_operations_by_contract", + "actual_intent": "bank_operations_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 57, + "id": "S057", + "question": "покажи сальдо по счету 60 за 2020", + "session": "chain_balance_60", + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46-chain_balance_60", + "status_code": 200, + "ok": true, + "elapsed_ms": 4948, + "reply_type": "factual", + "trace_id": "address-dxb6bYMNot", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 138.\nСумма по отобранным движениям: 24061597.5.\n1. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 900000\n2. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 144749\n3. 2020-11-26T12:00:02Z | Списание с расчетного счета 00000000276 от 26.11.2020 12:00:02 | 60.01 / 51 | 524730.5\n4. 2020-11-26T12:00:02Z | Списание с расчетного счета 00000000276 от 26.11.2020 12:00:02 | 60.01 / 51 | 210770.5", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 58, + "id": "S058", + "question": "а теперь только май 2020", + "session": "chain_balance_60", + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46-chain_balance_60", + "status_code": 200, + "ok": true, + "elapsed_ms": 946, + "reply_type": "factual", + "trace_id": "address-V_GfD6s_OI", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 6.\nСумма по отобранным движениям: 849499.\n1. 2020-05-22T10:14:43Z | Списание с расчетного счета 00000000148 от 22.05.2020 10:14:43 | 60.02 / 51 | 142299\n2. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 75367\n3. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 211833\n4. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 187967", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 59, + "id": "S059", + "question": "ок, теперь 2020.05", + "session": "chain_balance_60", + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46-chain_balance_60", + "status_code": 200, + "ok": true, + "elapsed_ms": 1037, + "reply_type": "factual", + "trace_id": "address-sLjWioxWXo", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 6.\nСумма по отобранным движениям: 849499.\n1. 2020-05-22T10:14:43Z | Списание с расчетного счета 00000000148 от 22.05.2020 10:14:43 | 60.02 / 51 | 142299\n2. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 75367\n3. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 211833\n4. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 187967", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 60, + "id": "S060", + "question": "теперь на 2020-07-31", + "session": "chain_balance_60", + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46-chain_balance_60", + "status_code": 200, + "ok": true, + "elapsed_ms": 1020, + "reply_type": "factual", + "trace_id": "address-3awnK5UrG-", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 6.\nСумма по отобранным движениям: 271400.\n1. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400\n2. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600\n3. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400\n4. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + } + ] +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46/run_summary.json b/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46/run_summary.json new file mode 100644 index 0000000..48fc0fd --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46/run_summary.json @@ -0,0 +1,52 @@ +{ + "run_id": "2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-07-46", + "generated_at": "2026-04-02T10:13:40", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\address_slang_stress_2026-04-02.json", + "backend_url": "http://127.0.0.1:8787/api/assistant/message", + "llm_provider": "local", + "llm_model": "qwen2.5-14b-instruct-1m", + "llm_base_url": "http://127.0.0.1:1234", + "totals": { + "questions_total": 60, + "ok_200_count": 60, + "semantic_pass_count": 60, + "semantic_pass_rate": 1.0, + "factual_count": 42, + "partial_coverage_count": 18, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_applied_count": 47, + "avg_elapsed_ms": 5902.6 + }, + "distributions": { + "reply_type": { + "partial_coverage": 18, + "factual": 42 + }, + "actual_intent": { + "list_documents_by_counterparty": 12, + "bank_operations_by_counterparty": 10, + "account_balance_snapshot": 16, + "documents_forming_balance": 8, + "list_documents_by_contract": 8, + "bank_operations_by_contract": 6 + }, + "actual_mode": { + "address_query": 60 + }, + "mcp_call_status": { + "materialized_but_not_anchor_matched": 10, + "matched_non_empty": 42, + "skipped": 3, + "no_raw_rows": 2, + "materialized_but_filtered_out_by_recipe": 2, + "error": 1 + }, + "limited_reason_category": { + "empty_match": 12, + "missing_anchor": 3, + "recipe_visibility_gap": 2, + "execution_error": 1 + } + } +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-13-57/README.md b/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-13-57/README.md new file mode 100644 index 0000000..1f79f3f --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-13-57/README.md @@ -0,0 +1,23 @@ +# 2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-13-57 + +Generated at: 2026-04-02T10:18:28 +Questions file: X:\1C\NDC_1C\docs\ADDRESS\question_sets\address_slang_stress_extra_2026-04-02.json +Backend URL: http://127.0.0.1:8787/api/assistant/message +LLM: local / qwen2.5-14b-instruct-1m @ http://127.0.0.1:1234 + +## Totals +- questions_total: 42 +- ok_200_count: 42 +- semantic_pass_count: 39 +- semantic_pass_rate: 0.9286 +- factual_count: 25 +- partial_coverage_count: 15 +- clarification_required_count: 2 +- http_error_count: 0 +- llm_decomposition_applied_count: 31 +- avg_elapsed_ms: 6452.5 + +## Files +- run_summary.json +- full_live_results.json +- failures_only.json diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-13-57/failures_only.json b/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-13-57/failures_only.json new file mode 100644 index 0000000..fc7d2be --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-13-57/failures_only.json @@ -0,0 +1,83 @@ +[ + { + "index": 11, + "id": "X011", + "question": "транзакции по свк за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-13-57-x011", + "status_code": 200, + "ok": true, + "elapsed_ms": 10728, + "reply_type": "clarification_required", + "trace_id": "G02R6JpH8F0-M5", + "assistant_reply": "Коротко: Наиболее вероятный механизм проблемы подтвержден частично и требует первичной проверки. Что сломано:\n- Есть признаки проблемы, но без уточнений по периоду и объекту вывод ненадежен. Почему это похоже на проблему:\n- Сигнал проблемы есть, но механизм подтвержден не полностью. На чем это основано:\n- Опора частичная: часть требований покрыта не полностью.\n- Отдельно не подтверждено или покрыто частично: R1. Что проверить первым:\n- Проверьте связку документов и проводок по проблемному участку в указанном периоде. Ограничения:\n- Якоря из вопроса без прямого подтверждения: 2020, period:2020.\n- Ни одно требование не получило подтвержденного покрытия.\n- Нет explainable-сигналов why_included в результатах выборки.\n- required anchors claim-bound grounding.\n- evidence.\n- Targeted evidence acquisition claim target path.", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": null, + "intent_match": false, + "expected_mode": "address_query", + "actual_mode": null, + "mode_match": false, + "semantic_pass": false, + "mcp_call_status": null, + "limited_reason_category": null, + "llm_decomposition_applied": null, + "llm_decomposition_reason": null, + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 19, + "id": "X019", + "question": "скока по 60.02 на конец 2020-12", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-13-57-x019", + "status_code": 200, + "ok": true, + "elapsed_ms": 10819, + "reply_type": "clarification_required", + "trace_id": "YbgJ6VuXh8C1v1", + "assistant_reply": "Коротко: Наиболее вероятная причина: переход от оплаты к закрытию расчета подтвержден не полностью. Что сломано:\n- Есть признаки проблемы, но без уточнений по периоду и объекту вывод ненадежен. Почему это похоже на проблему:\n- Сигнал проблемы есть, но механизм подтвержден не полностью. На чем это основано:\n- Опора частичная: часть требований покрыта не полностью.\n- Отдельно не подтверждено или покрыто частично: R1. Что проверить первым:\n- Сверьте договор и объект расчетов, затем подтвердите запись в регистре расчетов и документ зачета.\n- Проверьте связку платеж -> расчетный документ -> проводки по 60/62/76 и факт закрытия хвоста. Ограничения:\n- Якоря из вопроса без прямого подтверждения: 60.02, 2020-12, period:2020-12.\n- Ни одно требование не получило подтвержденного покрытия.\n- Нет explainable-сигналов why_included в результатах выборки.\n- supplier/customer polarity.\n- evidence.\n- Targeted evidence acquisition claim target path.", + "expected_intent": "account_balance_snapshot", + "actual_intent": null, + "intent_match": false, + "expected_mode": "address_query", + "actual_mode": null, + "mode_match": false, + "semantic_pass": false, + "mcp_call_status": null, + "limited_reason_category": null, + "llm_decomposition_applied": null, + "llm_decomposition_reason": null, + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 26, + "id": "X026", + "question": "раскидай остаток 62.01 по докам на 2020-12-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-13-57-x026", + "status_code": 200, + "ok": true, + "elapsed_ms": 8298, + "reply_type": "partial_coverage", + "trace_id": "address-5eKPNT2W8Z", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "documents_forming_balance", + "actual_intent": "list_documents_by_counterparty", + "intent_match": false, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": false, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + } +] diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-13-57/full_live_results.json b/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-13-57/full_live_results.json new file mode 100644 index 0000000..3cf7c81 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-13-57/full_live_results.json @@ -0,0 +1,1194 @@ +{ + "run_id": "2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-13-57", + "generated_at": "2026-04-02T10:18:28", + "summary": { + "run_id": "2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-13-57", + "generated_at": "2026-04-02T10:18:28", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\address_slang_stress_extra_2026-04-02.json", + "backend_url": "http://127.0.0.1:8787/api/assistant/message", + "llm_provider": "local", + "llm_model": "qwen2.5-14b-instruct-1m", + "llm_base_url": "http://127.0.0.1:1234", + "totals": { + "questions_total": 42, + "ok_200_count": 42, + "semantic_pass_count": 39, + "semantic_pass_rate": 0.9286, + "factual_count": 25, + "partial_coverage_count": 15, + "clarification_required_count": 2, + "http_error_count": 0, + "llm_decomposition_applied_count": 31, + "avg_elapsed_ms": 6452.5 + }, + "distributions": { + "reply_type": { + "partial_coverage": 15, + "factual": 25, + "clarification_required": 2 + }, + "actual_intent": { + "list_documents_by_counterparty": 7, + "bank_operations_by_counterparty": 5, + "None": 2, + "account_balance_snapshot": 9, + "documents_forming_balance": 7, + "list_documents_by_contract": 6, + "bank_operations_by_contract": 6 + }, + "actual_mode": { + "address_query": 40, + "None": 2 + }, + "mcp_call_status": { + "materialized_but_not_anchor_matched": 7, + "matched_non_empty": 25, + "None": 2, + "no_raw_rows": 1, + "skipped": 4, + "error": 3 + }, + "limited_reason_category": { + "empty_match": 7, + "missing_anchor": 5, + "execution_error": 3 + } + } + }, + "rows": [ + { + "index": 1, + "id": "X001", + "question": "свк доки кинь за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-13-57-x001", + "status_code": 200, + "ok": true, + "elapsed_ms": 8092, + "reply_type": "partial_coverage", + "trace_id": "address-mx8HAjDvlm", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 2, + "id": "X002", + "question": "по свк все документы за 20й год", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-13-57-x002", + "status_code": 200, + "ok": true, + "elapsed_ms": 5797, + "reply_type": "factual", + "trace_id": "address-Gp05RaELFs", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 3, + "id": "X003", + "question": "пж вывали доки контрагент свк 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-13-57-x003", + "status_code": 200, + "ok": true, + "elapsed_ms": 6124, + "reply_type": "factual", + "trace_id": "address-XUd3JBk9e6", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 4, + "id": "X004", + "question": "svk poka docy za 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-13-57-x004", + "status_code": 200, + "ok": true, + "elapsed_ms": 1053, + "reply_type": "factual", + "trace_id": "address-NiHPcGWnOL", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_without_llm", + "fallback_rule_hit": "documents_counterparty_year_rewrite", + "error_code": null, + "error_message": null + }, + { + "index": 5, + "id": "X005", + "question": "какие доки по компании свк за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-13-57-x005", + "status_code": 200, + "ok": true, + "elapsed_ms": 6114, + "reply_type": "factual", + "trace_id": "address-_gl-Rz-GSK", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 6, + "id": "X006", + "question": "бля покаж свк документы 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-13-57-x006", + "status_code": 200, + "ok": true, + "elapsed_ms": 8308, + "reply_type": "partial_coverage", + "trace_id": "address-wPs-jc_Xyy", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 7, + "id": "X007", + "question": "свк банк операции за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-13-57-x007", + "status_code": 200, + "ok": true, + "elapsed_ms": 5911, + "reply_type": "factual", + "trace_id": "address-75y4PmqzCr", + "assistant_reply": "Собран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 8, + "id": "X008", + "question": "по свк выписку банка за 2020 выведи", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-13-57-x008", + "status_code": 200, + "ok": true, + "elapsed_ms": 8260, + "reply_type": "partial_coverage", + "trace_id": "address-ASv-68ZKWh", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 9, + "id": "X009", + "question": "свк платежки за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-13-57-x009", + "status_code": 200, + "ok": true, + "elapsed_ms": 8217, + "reply_type": "partial_coverage", + "trace_id": "address-nWgWe1TI6q", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 10, + "id": "X010", + "question": "bank ops svk 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-13-57-x010", + "status_code": 200, + "ok": true, + "elapsed_ms": 755, + "reply_type": "factual", + "trace_id": "address-31V_cHIkka", + "assistant_reply": "Собран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 1.\n1. 2020-12-16T16:20:51Z | Списание с расчетного счета 00000000293 от 16.12.2020 16:20:51 | 0 / 0 | 60 | аналитика: СБЕРБАНК, ПАО", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_without_llm", + "fallback_rule_hit": "bank_operations_counterparty_year_rewrite", + "error_code": null, + "error_message": null + }, + { + "index": 11, + "id": "X011", + "question": "транзакции по свк за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-13-57-x011", + "status_code": 200, + "ok": true, + "elapsed_ms": 10728, + "reply_type": "clarification_required", + "trace_id": "G02R6JpH8F0-M5", + "assistant_reply": "Коротко: Наиболее вероятный механизм проблемы подтвержден частично и требует первичной проверки. Что сломано:\n- Есть признаки проблемы, но без уточнений по периоду и объекту вывод ненадежен. Почему это похоже на проблему:\n- Сигнал проблемы есть, но механизм подтвержден не полностью. На чем это основано:\n- Опора частичная: часть требований покрыта не полностью.\n- Отдельно не подтверждено или покрыто частично: R1. Что проверить первым:\n- Проверьте связку документов и проводок по проблемному участку в указанном периоде. Ограничения:\n- Якоря из вопроса без прямого подтверждения: 2020, period:2020.\n- Ни одно требование не получило подтвержденного покрытия.\n- Нет explainable-сигналов why_included в результатах выборки.\n- required anchors claim-bound grounding.\n- evidence.\n- Targeted evidence acquisition claim target path.", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": null, + "intent_match": false, + "expected_mode": "address_query", + "actual_mode": null, + "mode_match": false, + "semantic_pass": false, + "mcp_call_status": null, + "limited_reason_category": null, + "llm_decomposition_applied": null, + "llm_decomposition_reason": null, + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 12, + "id": "X012", + "question": "ёпт по свк че по банку 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-13-57-x012", + "status_code": 200, + "ok": true, + "elapsed_ms": 8813, + "reply_type": "partial_coverage", + "trace_id": "address-AbwCIFcGoP", + "assistant_reply": "Для точного адресного поиска не хватает обязательного якоря.\nПричина: якорь контрагента/договора не найден в материализованных live-строках.\nЧто нужно уточнить: уточните контрагента точным именем или добавьте ИНН/договор.", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "missing_anchor", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 13, + "id": "X013", + "question": "остаток по 60.01 на 2020-07-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-13-57-x013", + "status_code": 200, + "ok": true, + "elapsed_ms": 5893, + "reply_type": "factual", + "trace_id": "address-53aLXfXo02", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 5.\nСумма по отобранным движениям: 216200.\n1. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400\n2. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600\n3. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400\n4. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 14, + "id": "X014", + "question": "сальдо 60.01 на 31.07.2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-13-57-x014", + "status_code": 200, + "ok": true, + "elapsed_ms": 6071, + "reply_type": "factual", + "trace_id": "address-X55u5-KNtT", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 5.\nСумма по отобранным движениям: 216200.\n1. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400\n2. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600\n3. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400\n4. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 15, + "id": "X015", + "question": "что на счете 60 на 2020.05", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-13-57-x015", + "status_code": 200, + "ok": true, + "elapsed_ms": 6163, + "reply_type": "factual", + "trace_id": "address-xIeS7EJn-x", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 138.\nСумма по отобранным движениям: 24061597.5.\n1. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 900000\n2. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 144749\n3. 2020-11-26T12:00:02Z | Списание с расчетного счета 00000000276 от 26.11.2020 12:00:02 | 60.01 / 51 | 524730.5\n4. 2020-11-26T12:00:02Z | Списание с расчетного счета 00000000276 от 26.11.2020 12:00:02 | 60.01 / 51 | 210770.5", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 16, + "id": "X016", + "question": "дай остаток 62.01 на 2020 май", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-13-57-x016", + "status_code": 200, + "ok": true, + "elapsed_ms": 6045, + "reply_type": "factual", + "trace_id": "address-N02cNKP-e4", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 2.\nСумма по отобранным движениям: 1530000.\n1. 2020-05-18T12:00:01Z | Реализация товаров и услуг 00000000002 от 18.05.2020 12:00:01 | 62.01 / 90.01.1 | 765000\n2. 2020-05-18T12:00:01Z | Реализация товаров и услуг 00000000002 от 18.05.2020 12:00:01 | 62.02 / 62.01 | 765000", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 17, + "id": "X017", + "question": "saldo account 60 as of 2020-12-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-13-57-x017", + "status_code": 200, + "ok": true, + "elapsed_ms": 6103, + "reply_type": "partial_coverage", + "trace_id": "address-0CDCnSS1Rd", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "no_raw_rows", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 18, + "id": "X018", + "question": "плиз остаток по счету 51 на 2020-06-30", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-13-57-x018", + "status_code": 200, + "ok": true, + "elapsed_ms": 6119, + "reply_type": "factual", + "trace_id": "address-uvtvbkn_bg", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 30.\nСумма по отобранным движениям: 4579658.75.\n1. 2020-06-30T12:00:07Z | Списание с расчетного счета 00000000180 от 30.06.2020 12:00:07 | 66.03 / 51 | 35000\n2. 2020-06-30T12:00:05Z | Списание с расчетного счета 00000000178 от 30.06.2020 12:00:05 | 60.01 / 51 | 15800\n3. 2020-06-30T12:00:04Z | Списание с расчетного счета 00000000177 от 30.06.2020 12:00:04 | 70 / 51 | 50\n4. 2020-06-30T12:00:03Z | Списание с расчетного счета 00000000176 от 30.06.2020 12:00:03 | 91.02 / 51 | 35", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 19, + "id": "X019", + "question": "скока по 60.02 на конец 2020-12", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-13-57-x019", + "status_code": 200, + "ok": true, + "elapsed_ms": 10819, + "reply_type": "clarification_required", + "trace_id": "YbgJ6VuXh8C1v1", + "assistant_reply": "Коротко: Наиболее вероятная причина: переход от оплаты к закрытию расчета подтвержден не полностью. Что сломано:\n- Есть признаки проблемы, но без уточнений по периоду и объекту вывод ненадежен. Почему это похоже на проблему:\n- Сигнал проблемы есть, но механизм подтвержден не полностью. На чем это основано:\n- Опора частичная: часть требований покрыта не полностью.\n- Отдельно не подтверждено или покрыто частично: R1. Что проверить первым:\n- Сверьте договор и объект расчетов, затем подтвердите запись в регистре расчетов и документ зачета.\n- Проверьте связку платеж -> расчетный документ -> проводки по 60/62/76 и факт закрытия хвоста. Ограничения:\n- Якоря из вопроса без прямого подтверждения: 60.02, 2020-12, period:2020-12.\n- Ни одно требование не получило подтвержденного покрытия.\n- Нет explainable-сигналов why_included в результатах выборки.\n- supplier/customer polarity.\n- evidence.\n- Targeted evidence acquisition claim target path.", + "expected_intent": "account_balance_snapshot", + "actual_intent": null, + "intent_match": false, + "expected_mode": "address_query", + "actual_mode": null, + "mode_match": false, + "semantic_pass": false, + "mcp_call_status": null, + "limited_reason_category": null, + "llm_decomposition_applied": null, + "llm_decomposition_reason": null, + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 20, + "id": "X020", + "question": "бля сальдо 60.01 на 2020-05-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-13-57-x020", + "status_code": 200, + "ok": true, + "elapsed_ms": 6437, + "reply_type": "factual", + "trace_id": "address-oJLbt4Db_i", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 5.\nСумма по отобранным движениям: 707200.\n1. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 75367\n2. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 211833\n3. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 187967\n4. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 162033", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 21, + "id": "X021", + "question": "раскрой остаток 60.01 по документам на конец июля 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-13-57-x021", + "status_code": 200, + "ok": true, + "elapsed_ms": 5660, + "reply_type": "partial_coverage", + "trace_id": "address-TqLVnzrD7n", + "assistant_reply": "Для точного адресного поиска не хватает обязательного якоря.\nПричина: не хватает обязательных фильтров.\nЧто нужно уточнить: уточните: account.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "skipped", + "limited_reason_category": "missing_anchor", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 22, + "id": "X022", + "question": "доки под остатком 60.01 на 2020-07-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-13-57-x022", + "status_code": 200, + "ok": true, + "elapsed_ms": 5712, + "reply_type": "partial_coverage", + "trace_id": "address-h-C4_Eb6tt", + "assistant_reply": "Для точного адресного поиска не хватает обязательного якоря.\nПричина: не хватает обязательных фильтров.\nЧто нужно уточнить: уточните: account.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "skipped", + "limited_reason_category": "missing_anchor", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 23, + "id": "X023", + "question": "из чего остаток 60.01 на 2020-07-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-13-57-x023", + "status_code": 200, + "ok": true, + "elapsed_ms": 6176, + "reply_type": "partial_coverage", + "trace_id": "address-hitj-Vbud3", + "assistant_reply": "Для точного адресного поиска не хватает обязательного якоря.\nПричина: не хватает обязательных фильтров.\nЧто нужно уточнить: уточните: account.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "skipped", + "limited_reason_category": "missing_anchor", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 24, + "id": "X024", + "question": "какие документы формируют остаток по 60.01 на 2020-07-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-13-57-x024", + "status_code": 200, + "ok": true, + "elapsed_ms": 6831, + "reply_type": "factual", + "trace_id": "address-6E1zfcaZKZ", + "assistant_reply": "Собран drilldown документов, формирующих остаток по счету на указанную дату.\nДокументных строк отобрано: 5.\nСумма по отобранным движениям: 216200.\n1. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400\n2. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600\n3. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400\n4. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200\n5. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 7600\nМожно уточнить выборку по контрагенту, договору или периоду.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 25, + "id": "X025", + "question": "docs forming balance 60.01 as of 2020-07-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-13-57-x025", + "status_code": 200, + "ok": true, + "elapsed_ms": 6112, + "reply_type": "factual", + "trace_id": "address-jesvaLdV6P", + "assistant_reply": "Собран drilldown документов, формирующих остаток по счету на указанную дату.\nДокументных строк отобрано: 5.\nСумма по отобранным движениям: 216200.\n1. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400\n2. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600\n3. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400\n4. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200\n5. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 7600\nМожно уточнить выборку по контрагенту, договору или периоду.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 26, + "id": "X026", + "question": "раскидай остаток 62.01 по докам на 2020-12-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-13-57-x026", + "status_code": 200, + "ok": true, + "elapsed_ms": 8298, + "reply_type": "partial_coverage", + "trace_id": "address-5eKPNT2W8Z", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "documents_forming_balance", + "actual_intent": "list_documents_by_counterparty", + "intent_match": false, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": false, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 27, + "id": "X027", + "question": "по счету 51 раскрой остаток документами на 2020-06-30", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-13-57-x027", + "status_code": 200, + "ok": true, + "elapsed_ms": 6958, + "reply_type": "factual", + "trace_id": "address-5o4_Tn_39C", + "assistant_reply": "Собран drilldown документов, формирующих остаток по счету на указанную дату.\nДокументных строк отобрано: 3.\nСумма по отобранным движениям: 2190524.88.\n1. 2020-06-16T12:00:02Z | Поступление на расчетный счет 00000000026 от 16.06.2020 12:00:02 | 51 / 60.02 | 250000\n2. 2020-06-03T00:00:02Z | Поступление на расчетный счет 00000000025 от 03.06.2020 0:00:02 | 51 / 62.02 | 1642764.88\n3. 2020-06-03T00:00:01Z | Поступление на расчетный счет 00000000024 от 03.06.2020 0:00:01 | 51 / 62.02 | 297760\nМожно уточнить выборку по контрагенту, договору или периоду.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 28, + "id": "X028", + "question": "бля из чего состоит остаток по 60.01 на 2020-05-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-13-57-x028", + "status_code": 200, + "ok": true, + "elapsed_ms": 6024, + "reply_type": "partial_coverage", + "trace_id": "address-c4_5f90Y5B", + "assistant_reply": "Для точного адресного поиска не хватает обязательного якоря.\nПричина: не хватает обязательных фильтров.\nЧто нужно уточнить: уточните: account.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "skipped", + "limited_reason_category": "missing_anchor", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 29, + "id": "X029", + "question": "доки по договору 15/24 за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-13-57-x029", + "status_code": 200, + "ok": true, + "elapsed_ms": 7399, + "reply_type": "factual", + "trace_id": "address-nJM9SFhOxq", + "assistant_reply": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-08-31T15:00:06Z | Поступление товаров и услуг 00000000024 от 31.08.2020 15:00:06 | 19.04 / 76.05 | 233.33\n2. 2020-08-31T15:00:06Z | Поступление товаров и услуг 00000000024 от 31.08.2020 15:00:06 | 44.01 / 76.05 | 1166.67", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 30, + "id": "X030", + "question": "покажи документы контракт 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-13-57-x030", + "status_code": 200, + "ok": true, + "elapsed_ms": 7024, + "reply_type": "partial_coverage", + "trace_id": "address-lrMP9_gcpb", + "assistant_reply": "Не удалось выполнить адресный live-запрос в V1.\nПричина: live MCP вызов завершился ошибкой.\nЧто нужно уточнить: MCP fetch failed: This operation was aborted.", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "error", + "limited_reason_category": "execution_error", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 31, + "id": "X031", + "question": "docs by contract 15/24 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-13-57-x031", + "status_code": 200, + "ok": true, + "elapsed_ms": 7115, + "reply_type": "factual", + "trace_id": "address-J-HmRBILBE", + "assistant_reply": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-08-31T15:00:06Z | Поступление товаров и услуг 00000000024 от 31.08.2020 15:00:06 | 19.04 / 76.05 | 233.33\n2. 2020-08-31T15:00:06Z | Поступление товаров и услуг 00000000024 от 31.08.2020 15:00:06 | 44.01 / 76.05 | 1166.67", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 32, + "id": "X032", + "question": "по дог 15/24 какие документы", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-13-57-x032", + "status_code": 200, + "ok": true, + "elapsed_ms": 6222, + "reply_type": "factual", + "trace_id": "address-sDuP3mE4Q0", + "assistant_reply": "Документный фильтр в live дал пустой набор; показываю связанные банковские операции по договору.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 33, + "id": "X033", + "question": "договор 15/24 выведи доки", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-13-57-x033", + "status_code": 200, + "ok": true, + "elapsed_ms": 6957, + "reply_type": "partial_coverage", + "trace_id": "address-p2yZ1B2cgF", + "assistant_reply": "Не удалось выполнить адресный live-запрос в V1.\nПричина: live MCP вызов завершился ошибкой.\nЧто нужно уточнить: MCP fetch failed: This operation was aborted.", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "error", + "limited_reason_category": "execution_error", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 34, + "id": "X034", + "question": "нах покажи документы по 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-13-57-x034", + "status_code": 200, + "ok": true, + "elapsed_ms": 6275, + "reply_type": "factual", + "trace_id": "address-ECaL-A-vGj", + "assistant_reply": "Документный фильтр в live дал пустой набор; показываю связанные банковские операции по договору.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 35, + "id": "X035", + "question": "банк операции по договору 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-13-57-x035", + "status_code": 200, + "ok": true, + "elapsed_ms": 6120, + "reply_type": "factual", + "trace_id": "address-bQyMzJI61t", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "bank_operations_by_contract", + "actual_intent": "bank_operations_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 36, + "id": "X036", + "question": "платежки по дог 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-13-57-x036", + "status_code": 200, + "ok": true, + "elapsed_ms": 6010, + "reply_type": "factual", + "trace_id": "address-Ukpg9FPlvi", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "bank_operations_by_contract", + "actual_intent": "bank_operations_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 37, + "id": "X037", + "question": "выписка по контракту 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-13-57-x037", + "status_code": 200, + "ok": true, + "elapsed_ms": 6063, + "reply_type": "factual", + "trace_id": "address-Fudd30ZRSj", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "bank_operations_by_contract", + "actual_intent": "bank_operations_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 38, + "id": "X038", + "question": "bank ops by contract 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-13-57-x038", + "status_code": 200, + "ok": true, + "elapsed_ms": 7073, + "reply_type": "partial_coverage", + "trace_id": "address-bB8o6xw-qu", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "bank_operations_by_contract", + "actual_intent": "bank_operations_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 39, + "id": "X039", + "question": "покажи банк опер по дог 15/24 пж", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-13-57-x039", + "status_code": 200, + "ok": true, + "elapsed_ms": 7174, + "reply_type": "partial_coverage", + "trace_id": "address-Wqt4p9xZRQ", + "assistant_reply": "Не удалось выполнить адресный live-запрос в V1.\nПричина: live MCP вызов завершился ошибкой.\nЧто нужно уточнить: MCP fetch failed: This operation was aborted.", + "expected_intent": "bank_operations_by_contract", + "actual_intent": "bank_operations_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "error", + "limited_reason_category": "execution_error", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 40, + "id": "X040", + "question": "епт транзакции договор 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-13-57-x040", + "status_code": 200, + "ok": true, + "elapsed_ms": 7063, + "reply_type": "factual", + "trace_id": "address-E2CTPWZvlR", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "bank_operations_by_contract", + "actual_intent": "bank_operations_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 41, + "id": "X041", + "question": "покажи сальдо по счету 60 за 2020", + "session": "chain_balance_60_extra", + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-13-57-chain_balance_60_extra", + "status_code": 200, + "ok": true, + "elapsed_ms": 5988, + "reply_type": "factual", + "trace_id": "address-MYFUqNx3Eg", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 138.\nСумма по отобранным движениям: 24061597.5.\n1. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 900000\n2. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 144749\n3. 2020-11-26T12:00:02Z | Списание с расчетного счета 00000000276 от 26.11.2020 12:00:02 | 60.01 / 51 | 524730.5\n4. 2020-11-26T12:00:02Z | Списание с расчетного счета 00000000276 от 26.11.2020 12:00:02 | 60.01 / 51 | 210770.5", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 42, + "id": "X042", + "question": "а теперь только май 2020", + "session": "chain_balance_60_extra", + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-13-57-chain_balance_60_extra", + "status_code": 200, + "ok": true, + "elapsed_ms": 929, + "reply_type": "factual", + "trace_id": "address--olckfGVgW", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 6.\nСумма по отобранным движениям: 849499.\n1. 2020-05-22T10:14:43Z | Списание с расчетного счета 00000000148 от 22.05.2020 10:14:43 | 60.02 / 51 | 142299\n2. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 75367\n3. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 211833\n4. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 187967", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + } + ] +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-13-57/run_summary.json b/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-13-57/run_summary.json new file mode 100644 index 0000000..ad5f912 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-13-57/run_summary.json @@ -0,0 +1,54 @@ +{ + "run_id": "2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-13-57", + "generated_at": "2026-04-02T10:18:28", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\address_slang_stress_extra_2026-04-02.json", + "backend_url": "http://127.0.0.1:8787/api/assistant/message", + "llm_provider": "local", + "llm_model": "qwen2.5-14b-instruct-1m", + "llm_base_url": "http://127.0.0.1:1234", + "totals": { + "questions_total": 42, + "ok_200_count": 42, + "semantic_pass_count": 39, + "semantic_pass_rate": 0.9286, + "factual_count": 25, + "partial_coverage_count": 15, + "clarification_required_count": 2, + "http_error_count": 0, + "llm_decomposition_applied_count": 31, + "avg_elapsed_ms": 6452.5 + }, + "distributions": { + "reply_type": { + "partial_coverage": 15, + "factual": 25, + "clarification_required": 2 + }, + "actual_intent": { + "list_documents_by_counterparty": 7, + "bank_operations_by_counterparty": 5, + "None": 2, + "account_balance_snapshot": 9, + "documents_forming_balance": 7, + "list_documents_by_contract": 6, + "bank_operations_by_contract": 6 + }, + "actual_mode": { + "address_query": 40, + "None": 2 + }, + "mcp_call_status": { + "materialized_but_not_anchor_matched": 7, + "matched_non_empty": 25, + "None": 2, + "no_raw_rows": 1, + "skipped": 4, + "error": 3 + }, + "limited_reason_category": { + "empty_match": 7, + "missing_anchor": 5, + "execution_error": 3 + } + } +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-20-51/README.md b/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-20-51/README.md new file mode 100644 index 0000000..155cb98 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-20-51/README.md @@ -0,0 +1,23 @@ +# 2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-20-51 + +Generated at: 2026-04-02T10:24:58 +Questions file: X:\1C\NDC_1C\docs\ADDRESS\question_sets\address_slang_stress_extra_2026-04-02.json +Backend URL: http://127.0.0.1:8787/api/assistant/message +LLM: local / qwen2.5-14b-instruct-1m @ http://127.0.0.1:1234 + +## Totals +- questions_total: 42 +- ok_200_count: 42 +- semantic_pass_count: 40 +- semantic_pass_rate: 0.9524 +- factual_count: 25 +- partial_coverage_count: 17 +- clarification_required_count: 0 +- http_error_count: 0 +- llm_decomposition_applied_count: 29 +- avg_elapsed_ms: 5878.3 + +## Files +- run_summary.json +- full_live_results.json +- failures_only.json diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-20-51/failures_only.json b/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-20-51/failures_only.json new file mode 100644 index 0000000..93d03f2 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-20-51/failures_only.json @@ -0,0 +1,56 @@ +[ + { + "index": 15, + "id": "X015", + "question": "что на счете 60 на 2020.05", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-20-51-x015", + "status_code": 200, + "ok": true, + "elapsed_ms": 5072, + "reply_type": "partial_coverage", + "trace_id": "address-P9BOSmbc4z", + "assistant_reply": "Этот запрос не подходит под address_query V1.\nПричина: intent пока не поддержан в address V1.\nЧто нужно уточнить: переформулируйте вопрос как адресный lookup по счету/контрагенту/договору.", + "expected_intent": "account_balance_snapshot", + "actual_intent": "unknown", + "intent_match": false, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": false, + "mcp_call_status": "skipped", + "limited_reason_category": "unsupported", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 25, + "id": "X025", + "question": "docs forming balance 60.01 as of 2020-07-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-20-51-x025", + "status_code": 200, + "ok": true, + "elapsed_ms": 5960, + "reply_type": "partial_coverage", + "trace_id": "address-dWtI0q5djq", + "assistant_reply": "Для точного адресного поиска не хватает обязательного якоря.\nПричина: не хватает обязательных фильтров.\nЧто нужно уточнить: уточните: account.", + "expected_intent": "documents_forming_balance", + "actual_intent": "account_balance_snapshot", + "intent_match": false, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": false, + "mcp_call_status": "skipped", + "limited_reason_category": "missing_anchor", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + } +] diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-20-51/full_live_results.json b/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-20-51/full_live_results.json new file mode 100644 index 0000000..eb2e1ed --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-20-51/full_live_results.json @@ -0,0 +1,1192 @@ +{ + "run_id": "2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-20-51", + "generated_at": "2026-04-02T10:24:58", + "summary": { + "run_id": "2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-20-51", + "generated_at": "2026-04-02T10:24:58", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\address_slang_stress_extra_2026-04-02.json", + "backend_url": "http://127.0.0.1:8787/api/assistant/message", + "llm_provider": "local", + "llm_model": "qwen2.5-14b-instruct-1m", + "llm_base_url": "http://127.0.0.1:1234", + "totals": { + "questions_total": 42, + "ok_200_count": 42, + "semantic_pass_count": 40, + "semantic_pass_rate": 0.9524, + "factual_count": 25, + "partial_coverage_count": 17, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_applied_count": 29, + "avg_elapsed_ms": 5878.3 + }, + "distributions": { + "reply_type": { + "partial_coverage": 17, + "factual": 25 + }, + "actual_intent": { + "list_documents_by_counterparty": 6, + "bank_operations_by_counterparty": 6, + "account_balance_snapshot": 10, + "unknown": 1, + "documents_forming_balance": 7, + "list_documents_by_contract": 6, + "bank_operations_by_contract": 6 + }, + "actual_mode": { + "address_query": 42 + }, + "mcp_call_status": { + "materialized_but_not_anchor_matched": 7, + "matched_non_empty": 25, + "skipped": 8, + "no_raw_rows": 1, + "error": 1 + }, + "limited_reason_category": { + "empty_match": 7, + "missing_anchor": 8, + "unsupported": 1, + "execution_error": 1 + } + } + }, + "rows": [ + { + "index": 1, + "id": "X001", + "question": "свк доки кинь за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-20-51-x001", + "status_code": 200, + "ok": true, + "elapsed_ms": 8248, + "reply_type": "partial_coverage", + "trace_id": "address-zSwIwIU06R", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 2, + "id": "X002", + "question": "по свк все документы за 20й год", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-20-51-x002", + "status_code": 200, + "ok": true, + "elapsed_ms": 5878, + "reply_type": "factual", + "trace_id": "address-j1StbBetst", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 3, + "id": "X003", + "question": "пж вывали доки контрагент свк 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-20-51-x003", + "status_code": 200, + "ok": true, + "elapsed_ms": 6077, + "reply_type": "factual", + "trace_id": "address-DnB1AcGXN8", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 4, + "id": "X004", + "question": "svk poka docy za 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-20-51-x004", + "status_code": 200, + "ok": true, + "elapsed_ms": 1002, + "reply_type": "factual", + "trace_id": "address-dLTaWOlI9F", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_without_llm", + "fallback_rule_hit": "documents_counterparty_year_rewrite", + "error_code": null, + "error_message": null + }, + { + "index": 5, + "id": "X005", + "question": "какие доки по компании свк за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-20-51-x005", + "status_code": 200, + "ok": true, + "elapsed_ms": 6105, + "reply_type": "factual", + "trace_id": "address-Ex2PRmhKIL", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 6, + "id": "X006", + "question": "бля покаж свк документы 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-20-51-x006", + "status_code": 200, + "ok": true, + "elapsed_ms": 7438, + "reply_type": "partial_coverage", + "trace_id": "address-u1hGdGwqxo", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 7, + "id": "X007", + "question": "свк банк операции за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-20-51-x007", + "status_code": 200, + "ok": true, + "elapsed_ms": 9046, + "reply_type": "partial_coverage", + "trace_id": "address-q-w_cXJ9Ok", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 8, + "id": "X008", + "question": "по свк выписку банка за 2020 выведи", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-20-51-x008", + "status_code": 200, + "ok": true, + "elapsed_ms": 8260, + "reply_type": "partial_coverage", + "trace_id": "address-4pwNooycK-", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 9, + "id": "X009", + "question": "свк платежки за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-20-51-x009", + "status_code": 200, + "ok": true, + "elapsed_ms": 9036, + "reply_type": "partial_coverage", + "trace_id": "address-ANLS2sbQ9d", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 10, + "id": "X010", + "question": "bank ops svk 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-20-51-x010", + "status_code": 200, + "ok": true, + "elapsed_ms": 763, + "reply_type": "factual", + "trace_id": "address-5Buliuqv7y", + "assistant_reply": "Собран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 1.\n1. 2020-12-16T16:20:51Z | Списание с расчетного счета 00000000293 от 16.12.2020 16:20:51 | 0 / 0 | 60 | аналитика: СБЕРБАНК, ПАО", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_without_llm", + "fallback_rule_hit": "bank_operations_counterparty_year_rewrite", + "error_code": null, + "error_message": null + }, + { + "index": 11, + "id": "X011", + "question": "транзакции по свк за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-20-51-x011", + "status_code": 200, + "ok": true, + "elapsed_ms": 1028, + "reply_type": "factual", + "trace_id": "address-C8kf8PlldA", + "assistant_reply": "Собран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 12, + "id": "X012", + "question": "ёпт по свк че по банку 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-20-51-x012", + "status_code": 200, + "ok": true, + "elapsed_ms": 8456, + "reply_type": "partial_coverage", + "trace_id": "address-JTFBzNjlLn", + "assistant_reply": "Для точного адресного поиска не хватает обязательного якоря.\nПричина: якорь контрагента/договора не найден в материализованных live-строках.\nЧто нужно уточнить: уточните контрагента точным именем или добавьте ИНН/договор.", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "missing_anchor", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 13, + "id": "X013", + "question": "остаток по 60.01 на 2020-07-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-20-51-x013", + "status_code": 200, + "ok": true, + "elapsed_ms": 5761, + "reply_type": "factual", + "trace_id": "address-mSaxPpcZYK", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 5.\nСумма по отобранным движениям: 216200.\n1. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400\n2. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600\n3. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400\n4. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 14, + "id": "X014", + "question": "сальдо 60.01 на 31.07.2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-20-51-x014", + "status_code": 200, + "ok": true, + "elapsed_ms": 5206, + "reply_type": "partial_coverage", + "trace_id": "address-y_H6xQx_As", + "assistant_reply": "Для точного адресного поиска не хватает обязательного якоря.\nПричина: не хватает обязательных фильтров.\nЧто нужно уточнить: уточните: account.", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "skipped", + "limited_reason_category": "missing_anchor", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_drop", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 15, + "id": "X015", + "question": "что на счете 60 на 2020.05", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-20-51-x015", + "status_code": 200, + "ok": true, + "elapsed_ms": 5072, + "reply_type": "partial_coverage", + "trace_id": "address-P9BOSmbc4z", + "assistant_reply": "Этот запрос не подходит под address_query V1.\nПричина: intent пока не поддержан в address V1.\nЧто нужно уточнить: переформулируйте вопрос как адресный lookup по счету/контрагенту/договору.", + "expected_intent": "account_balance_snapshot", + "actual_intent": "unknown", + "intent_match": false, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": false, + "mcp_call_status": "skipped", + "limited_reason_category": "unsupported", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 16, + "id": "X016", + "question": "дай остаток 62.01 на 2020 май", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-20-51-x016", + "status_code": 200, + "ok": true, + "elapsed_ms": 6011, + "reply_type": "factual", + "trace_id": "address-FudrH4GDmZ", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 2.\nСумма по отобранным движениям: 1530000.\n1. 2020-05-18T12:00:01Z | Реализация товаров и услуг 00000000002 от 18.05.2020 12:00:01 | 62.01 / 90.01.1 | 765000\n2. 2020-05-18T12:00:01Z | Реализация товаров и услуг 00000000002 от 18.05.2020 12:00:01 | 62.02 / 62.01 | 765000", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 17, + "id": "X017", + "question": "saldo account 60 as of 2020-12-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-20-51-x017", + "status_code": 200, + "ok": true, + "elapsed_ms": 6093, + "reply_type": "partial_coverage", + "trace_id": "address-eoj6LLfjse", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "no_raw_rows", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 18, + "id": "X018", + "question": "плиз остаток по счету 51 на 2020-06-30", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-20-51-x018", + "status_code": 200, + "ok": true, + "elapsed_ms": 6141, + "reply_type": "factual", + "trace_id": "address-9I64rMZwzr", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 30.\nСумма по отобранным движениям: 4579658.75.\n1. 2020-06-30T12:00:07Z | Списание с расчетного счета 00000000180 от 30.06.2020 12:00:07 | 66.03 / 51 | 35000\n2. 2020-06-30T12:00:05Z | Списание с расчетного счета 00000000178 от 30.06.2020 12:00:05 | 60.01 / 51 | 15800\n3. 2020-06-30T12:00:04Z | Списание с расчетного счета 00000000177 от 30.06.2020 12:00:04 | 70 / 51 | 50\n4. 2020-06-30T12:00:03Z | Списание с расчетного счета 00000000176 от 30.06.2020 12:00:03 | 91.02 / 51 | 35", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 19, + "id": "X019", + "question": "скока по 60.02 на конец 2020-12", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-20-51-x019", + "status_code": 200, + "ok": true, + "elapsed_ms": 14, + "reply_type": "partial_coverage", + "trace_id": "address-LtYL5Rbw5g", + "assistant_reply": "Для точного адресного поиска не хватает обязательного якоря.\nПричина: не хватает обязательных фильтров.\nЧто нужно уточнить: уточните: account.", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "skipped", + "limited_reason_category": "missing_anchor", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 20, + "id": "X020", + "question": "бля сальдо 60.01 на 2020-05-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-20-51-x020", + "status_code": 200, + "ok": true, + "elapsed_ms": 6078, + "reply_type": "factual", + "trace_id": "address-JafAqjfSxs", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 5.\nСумма по отобранным движениям: 707200.\n1. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 75367\n2. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 211833\n3. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 187967\n4. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 162033", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 21, + "id": "X021", + "question": "раскрой остаток 60.01 по документам на конец июля 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-20-51-x021", + "status_code": 200, + "ok": true, + "elapsed_ms": 5639, + "reply_type": "partial_coverage", + "trace_id": "address-jubG6Q_JBu", + "assistant_reply": "Для точного адресного поиска не хватает обязательного якоря.\nПричина: не хватает обязательных фильтров.\nЧто нужно уточнить: уточните: account.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "skipped", + "limited_reason_category": "missing_anchor", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 22, + "id": "X022", + "question": "доки под остатком 60.01 на 2020-07-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-20-51-x022", + "status_code": 200, + "ok": true, + "elapsed_ms": 5629, + "reply_type": "partial_coverage", + "trace_id": "address--00Zqw7mCW", + "assistant_reply": "Для точного адресного поиска не хватает обязательного якоря.\nПричина: не хватает обязательных фильтров.\nЧто нужно уточнить: уточните: account.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "skipped", + "limited_reason_category": "missing_anchor", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 23, + "id": "X023", + "question": "из чего остаток 60.01 на 2020-07-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-20-51-x023", + "status_code": 200, + "ok": true, + "elapsed_ms": 7010, + "reply_type": "factual", + "trace_id": "address-e0S0TmkIz9", + "assistant_reply": "Собран drilldown документов, формирующих остаток по счету на указанную дату.\nДокументных строк отобрано: 5.\nСумма по отобранным движениям: 216200.\n1. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400\n2. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600\n3. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400\n4. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200\n5. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 7600\nМожно уточнить выборку по контрагенту, договору или периоду.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 24, + "id": "X024", + "question": "какие документы формируют остаток по 60.01 на 2020-07-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-20-51-x024", + "status_code": 200, + "ok": true, + "elapsed_ms": 6109, + "reply_type": "factual", + "trace_id": "address-kNVZpz_ZBG", + "assistant_reply": "Собран drilldown документов, формирующих остаток по счету на указанную дату.\nДокументных строк отобрано: 5.\nСумма по отобранным движениям: 216200.\n1. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400\n2. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600\n3. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400\n4. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200\n5. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 7600\nМожно уточнить выборку по контрагенту, договору или периоду.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 25, + "id": "X025", + "question": "docs forming balance 60.01 as of 2020-07-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-20-51-x025", + "status_code": 200, + "ok": true, + "elapsed_ms": 5960, + "reply_type": "partial_coverage", + "trace_id": "address-dWtI0q5djq", + "assistant_reply": "Для точного адресного поиска не хватает обязательного якоря.\nПричина: не хватает обязательных фильтров.\nЧто нужно уточнить: уточните: account.", + "expected_intent": "documents_forming_balance", + "actual_intent": "account_balance_snapshot", + "intent_match": false, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": false, + "mcp_call_status": "skipped", + "limited_reason_category": "missing_anchor", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 26, + "id": "X026", + "question": "раскидай остаток 62.01 по докам на 2020-12-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-20-51-x026", + "status_code": 200, + "ok": true, + "elapsed_ms": 5906, + "reply_type": "partial_coverage", + "trace_id": "address-h-4vasXrDJ", + "assistant_reply": "Для точного адресного поиска не хватает обязательного якоря.\nПричина: не хватает обязательных фильтров.\nЧто нужно уточнить: уточните: account.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "skipped", + "limited_reason_category": "missing_anchor", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 27, + "id": "X027", + "question": "по счету 51 раскрой остаток документами на 2020-06-30", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-20-51-x027", + "status_code": 200, + "ok": true, + "elapsed_ms": 6487, + "reply_type": "factual", + "trace_id": "address-f-6i-xZNqx", + "assistant_reply": "Собран drilldown документов, формирующих остаток по счету на указанную дату.\nДокументных строк отобрано: 3.\nСумма по отобранным движениям: 2190524.88.\n1. 2020-06-16T12:00:02Z | Поступление на расчетный счет 00000000026 от 16.06.2020 12:00:02 | 51 / 60.02 | 250000\n2. 2020-06-03T00:00:02Z | Поступление на расчетный счет 00000000025 от 03.06.2020 0:00:02 | 51 / 62.02 | 1642764.88\n3. 2020-06-03T00:00:01Z | Поступление на расчетный счет 00000000024 от 03.06.2020 0:00:01 | 51 / 62.02 | 297760\nМожно уточнить выборку по контрагенту, договору или периоду.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 28, + "id": "X028", + "question": "бля из чего состоит остаток по 60.01 на 2020-05-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-20-51-x028", + "status_code": 200, + "ok": true, + "elapsed_ms": 6036, + "reply_type": "partial_coverage", + "trace_id": "address-JBGG6-HAlf", + "assistant_reply": "Для точного адресного поиска не хватает обязательного якоря.\nПричина: не хватает обязательных фильтров.\nЧто нужно уточнить: уточните: account.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "skipped", + "limited_reason_category": "missing_anchor", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 29, + "id": "X029", + "question": "доки по договору 15/24 за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-20-51-x029", + "status_code": 200, + "ok": true, + "elapsed_ms": 7345, + "reply_type": "factual", + "trace_id": "address-6czu3kudP9", + "assistant_reply": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-08-31T15:00:06Z | Поступление товаров и услуг 00000000024 от 31.08.2020 15:00:06 | 19.04 / 76.05 | 233.33\n2. 2020-08-31T15:00:06Z | Поступление товаров и услуг 00000000024 от 31.08.2020 15:00:06 | 44.01 / 76.05 | 1166.67", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 30, + "id": "X030", + "question": "покажи документы контракт 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-20-51-x030", + "status_code": 200, + "ok": true, + "elapsed_ms": 6105, + "reply_type": "factual", + "trace_id": "address-puDsYv9VsJ", + "assistant_reply": "Документный фильтр в live дал пустой набор; показываю связанные банковские операции по договору.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 31, + "id": "X031", + "question": "docs by contract 15/24 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-20-51-x031", + "status_code": 200, + "ok": true, + "elapsed_ms": 7136, + "reply_type": "factual", + "trace_id": "address--iq0VaUe4V", + "assistant_reply": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-08-31T15:00:06Z | Поступление товаров и услуг 00000000024 от 31.08.2020 15:00:06 | 19.04 / 76.05 | 233.33\n2. 2020-08-31T15:00:06Z | Поступление товаров и услуг 00000000024 от 31.08.2020 15:00:06 | 44.01 / 76.05 | 1166.67", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 32, + "id": "X032", + "question": "по дог 15/24 какие документы", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-20-51-x032", + "status_code": 200, + "ok": true, + "elapsed_ms": 6111, + "reply_type": "factual", + "trace_id": "address-kyJrHYE4ir", + "assistant_reply": "Документный фильтр в live дал пустой набор; показываю связанные банковские операции по договору.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 33, + "id": "X033", + "question": "договор 15/24 выведи доки", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-20-51-x033", + "status_code": 200, + "ok": true, + "elapsed_ms": 6976, + "reply_type": "partial_coverage", + "trace_id": "address-9db29s0Kq2", + "assistant_reply": "Не удалось выполнить адресный live-запрос в V1.\nПричина: live MCP вызов завершился ошибкой.\nЧто нужно уточнить: MCP fetch failed: This operation was aborted.", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "error", + "limited_reason_category": "execution_error", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 34, + "id": "X034", + "question": "нах покажи документы по 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-20-51-x034", + "status_code": 200, + "ok": true, + "elapsed_ms": 6246, + "reply_type": "factual", + "trace_id": "address-PsvrkwtFkn", + "assistant_reply": "Документный фильтр в live дал пустой набор; показываю связанные банковские операции по договору.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 35, + "id": "X035", + "question": "банк операции по договору 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-20-51-x035", + "status_code": 200, + "ok": true, + "elapsed_ms": 6096, + "reply_type": "factual", + "trace_id": "address-xrITMPTno_", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "bank_operations_by_contract", + "actual_intent": "bank_operations_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 36, + "id": "X036", + "question": "платежки по дог 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-20-51-x036", + "status_code": 200, + "ok": true, + "elapsed_ms": 6093, + "reply_type": "factual", + "trace_id": "address-_EEHfJ7fkT", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "bank_operations_by_contract", + "actual_intent": "bank_operations_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 37, + "id": "X037", + "question": "выписка по контракту 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-20-51-x037", + "status_code": 200, + "ok": true, + "elapsed_ms": 6110, + "reply_type": "factual", + "trace_id": "address-UVvZszJySp", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "bank_operations_by_contract", + "actual_intent": "bank_operations_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 38, + "id": "X038", + "question": "bank ops by contract 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-20-51-x038", + "status_code": 200, + "ok": true, + "elapsed_ms": 7091, + "reply_type": "partial_coverage", + "trace_id": "address-81ftt48Ti5", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "bank_operations_by_contract", + "actual_intent": "bank_operations_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 39, + "id": "X039", + "question": "покажи банк опер по дог 15/24 пж", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-20-51-x039", + "status_code": 200, + "ok": true, + "elapsed_ms": 7079, + "reply_type": "factual", + "trace_id": "address-PkX3aEDBlA", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "bank_operations_by_contract", + "actual_intent": "bank_operations_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 40, + "id": "X040", + "question": "епт транзакции договор 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-20-51-x040", + "status_code": 200, + "ok": true, + "elapsed_ms": 7132, + "reply_type": "factual", + "trace_id": "address-t_7MbgrO0b", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "bank_operations_by_contract", + "actual_intent": "bank_operations_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 41, + "id": "X041", + "question": "покажи сальдо по счету 60 за 2020", + "session": "chain_balance_60_extra", + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-20-51-chain_balance_60_extra", + "status_code": 200, + "ok": true, + "elapsed_ms": 5920, + "reply_type": "factual", + "trace_id": "address-XWoPzRdv8v", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 138.\nСумма по отобранным движениям: 24061597.5.\n1. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 900000\n2. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 144749\n3. 2020-11-26T12:00:02Z | Списание с расчетного счета 00000000276 от 26.11.2020 12:00:02 | 60.01 / 51 | 524730.5\n4. 2020-11-26T12:00:02Z | Списание с расчетного счета 00000000276 от 26.11.2020 12:00:02 | 60.01 / 51 | 210770.5", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 42, + "id": "X042", + "question": "а теперь только май 2020", + "session": "chain_balance_60_extra", + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-20-51-chain_balance_60_extra", + "status_code": 200, + "ok": true, + "elapsed_ms": 960, + "reply_type": "factual", + "trace_id": "address-9BFJ__K3gy", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 6.\nСумма по отобранным движениям: 849499.\n1. 2020-05-22T10:14:43Z | Списание с расчетного счета 00000000148 от 22.05.2020 10:14:43 | 60.02 / 51 | 142299\n2. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 75367\n3. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 211833\n4. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 187967", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + } + ] +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-20-51/run_summary.json b/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-20-51/run_summary.json new file mode 100644 index 0000000..4f0398e --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-20-51/run_summary.json @@ -0,0 +1,52 @@ +{ + "run_id": "2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-20-51", + "generated_at": "2026-04-02T10:24:58", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\address_slang_stress_extra_2026-04-02.json", + "backend_url": "http://127.0.0.1:8787/api/assistant/message", + "llm_provider": "local", + "llm_model": "qwen2.5-14b-instruct-1m", + "llm_base_url": "http://127.0.0.1:1234", + "totals": { + "questions_total": 42, + "ok_200_count": 42, + "semantic_pass_count": 40, + "semantic_pass_rate": 0.9524, + "factual_count": 25, + "partial_coverage_count": 17, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_applied_count": 29, + "avg_elapsed_ms": 5878.3 + }, + "distributions": { + "reply_type": { + "partial_coverage": 17, + "factual": 25 + }, + "actual_intent": { + "list_documents_by_counterparty": 6, + "bank_operations_by_counterparty": 6, + "account_balance_snapshot": 10, + "unknown": 1, + "documents_forming_balance": 7, + "list_documents_by_contract": 6, + "bank_operations_by_contract": 6 + }, + "actual_mode": { + "address_query": 42 + }, + "mcp_call_status": { + "materialized_but_not_anchor_matched": 7, + "matched_non_empty": 25, + "skipped": 8, + "no_raw_rows": 1, + "error": 1 + }, + "limited_reason_category": { + "empty_match": 7, + "missing_anchor": 8, + "unsupported": 1, + "execution_error": 1 + } + } +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-26-25/README.md b/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-26-25/README.md new file mode 100644 index 0000000..1611a5d --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-26-25/README.md @@ -0,0 +1,23 @@ +# 2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-26-25 + +Generated at: 2026-04-02T10:30:27 +Questions file: X:\1C\NDC_1C\docs\ADDRESS\question_sets\address_slang_stress_extra_2026-04-02.json +Backend URL: http://127.0.0.1:8787/api/assistant/message +LLM: local / qwen2.5-14b-instruct-1m @ http://127.0.0.1:1234 + +## Totals +- questions_total: 42 +- ok_200_count: 42 +- semantic_pass_count: 42 +- semantic_pass_rate: 1.0 +- factual_count: 24 +- partial_coverage_count: 18 +- clarification_required_count: 0 +- http_error_count: 0 +- llm_decomposition_applied_count: 30 +- avg_elapsed_ms: 5757.0 + +## Files +- run_summary.json +- full_live_results.json +- failures_only.json diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-26-25/failures_only.json b/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-26-25/failures_only.json new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-26-25/failures_only.json @@ -0,0 +1 @@ +[] diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-26-25/full_live_results.json b/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-26-25/full_live_results.json new file mode 100644 index 0000000..eaa88bc --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-26-25/full_live_results.json @@ -0,0 +1,1190 @@ +{ + "run_id": "2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-26-25", + "generated_at": "2026-04-02T10:30:27", + "summary": { + "run_id": "2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-26-25", + "generated_at": "2026-04-02T10:30:27", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\address_slang_stress_extra_2026-04-02.json", + "backend_url": "http://127.0.0.1:8787/api/assistant/message", + "llm_provider": "local", + "llm_model": "qwen2.5-14b-instruct-1m", + "llm_base_url": "http://127.0.0.1:1234", + "totals": { + "questions_total": 42, + "ok_200_count": 42, + "semantic_pass_count": 42, + "semantic_pass_rate": 1.0, + "factual_count": 24, + "partial_coverage_count": 18, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_applied_count": 30, + "avg_elapsed_ms": 5757.0 + }, + "distributions": { + "reply_type": { + "partial_coverage": 18, + "factual": 24 + }, + "actual_intent": { + "list_documents_by_counterparty": 6, + "bank_operations_by_counterparty": 6, + "account_balance_snapshot": 10, + "documents_forming_balance": 8, + "list_documents_by_contract": 6, + "bank_operations_by_contract": 6 + }, + "actual_mode": { + "address_query": 42 + }, + "mcp_call_status": { + "materialized_but_not_anchor_matched": 9, + "matched_non_empty": 24, + "skipped": 6, + "no_raw_rows": 1, + "error": 2 + }, + "limited_reason_category": { + "empty_match": 9, + "missing_anchor": 7, + "execution_error": 2 + } + } + }, + "rows": [ + { + "index": 1, + "id": "X001", + "question": "свк доки кинь за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-26-25-x001", + "status_code": 200, + "ok": true, + "elapsed_ms": 8413, + "reply_type": "partial_coverage", + "trace_id": "address-amfP7fV-P0", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 2, + "id": "X002", + "question": "по свк все документы за 20й год", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-26-25-x002", + "status_code": 200, + "ok": true, + "elapsed_ms": 5765, + "reply_type": "factual", + "trace_id": "address-0F8z9VC5gu", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 3, + "id": "X003", + "question": "пж вывали доки контрагент свк 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-26-25-x003", + "status_code": 200, + "ok": true, + "elapsed_ms": 6119, + "reply_type": "factual", + "trace_id": "address-4l6tQTs4fx", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 4, + "id": "X004", + "question": "svk poka docy za 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-26-25-x004", + "status_code": 200, + "ok": true, + "elapsed_ms": 964, + "reply_type": "factual", + "trace_id": "address-Ek8nAHt9BC", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_without_llm", + "fallback_rule_hit": "documents_counterparty_year_rewrite", + "error_code": null, + "error_message": null + }, + { + "index": 5, + "id": "X005", + "question": "какие доки по компании свк за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-26-25-x005", + "status_code": 200, + "ok": true, + "elapsed_ms": 5098, + "reply_type": "factual", + "trace_id": "address-XGsRL144r_", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 6, + "id": "X006", + "question": "бля покаж свк документы 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-26-25-x006", + "status_code": 200, + "ok": true, + "elapsed_ms": 7300, + "reply_type": "partial_coverage", + "trace_id": "address-Op4JqcN5zF", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 7, + "id": "X007", + "question": "свк банк операции за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-26-25-x007", + "status_code": 200, + "ok": true, + "elapsed_ms": 9171, + "reply_type": "partial_coverage", + "trace_id": "address-ZyQr5VFWlz", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 8, + "id": "X008", + "question": "по свк выписку банка за 2020 выведи", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-26-25-x008", + "status_code": 200, + "ok": true, + "elapsed_ms": 8181, + "reply_type": "partial_coverage", + "trace_id": "address-Hcw_zR29gT", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 9, + "id": "X009", + "question": "свк платежки за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-26-25-x009", + "status_code": 200, + "ok": true, + "elapsed_ms": 9125, + "reply_type": "partial_coverage", + "trace_id": "address-KrndMpGOH8", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 10, + "id": "X010", + "question": "bank ops svk 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-26-25-x010", + "status_code": 200, + "ok": true, + "elapsed_ms": 778, + "reply_type": "factual", + "trace_id": "address-zVXveRzFwI", + "assistant_reply": "Собран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 1.\n1. 2020-12-16T16:20:51Z | Списание с расчетного счета 00000000293 от 16.12.2020 16:20:51 | 0 / 0 | 60 | аналитика: СБЕРБАНК, ПАО", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_without_llm", + "fallback_rule_hit": "bank_operations_counterparty_year_rewrite", + "error_code": null, + "error_message": null + }, + { + "index": 11, + "id": "X011", + "question": "транзакции по свк за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-26-25-x011", + "status_code": 200, + "ok": true, + "elapsed_ms": 1002, + "reply_type": "factual", + "trace_id": "address-Y1CbIDdG2P", + "assistant_reply": "Собран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 12, + "id": "X012", + "question": "ёпт по свк че по банку 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-26-25-x012", + "status_code": 200, + "ok": true, + "elapsed_ms": 8355, + "reply_type": "partial_coverage", + "trace_id": "address-eaFZpcikRb", + "assistant_reply": "Для точного адресного поиска не хватает обязательного якоря.\nПричина: якорь контрагента/договора не найден в материализованных live-строках.\nЧто нужно уточнить: уточните контрагента точным именем или добавьте ИНН/договор.", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "missing_anchor", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 13, + "id": "X013", + "question": "остаток по 60.01 на 2020-07-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-26-25-x013", + "status_code": 200, + "ok": true, + "elapsed_ms": 5905, + "reply_type": "factual", + "trace_id": "address-zeGCTrV433", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 5.\nСумма по отобранным движениям: 216200.\n1. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400\n2. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600\n3. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400\n4. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 14, + "id": "X014", + "question": "сальдо 60.01 на 31.07.2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-26-25-x014", + "status_code": 200, + "ok": true, + "elapsed_ms": 4907, + "reply_type": "partial_coverage", + "trace_id": "address-4ORbm4JSJh", + "assistant_reply": "Для точного адресного поиска не хватает обязательного якоря.\nПричина: не хватает обязательных фильтров.\nЧто нужно уточнить: уточните: account.", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "skipped", + "limited_reason_category": "missing_anchor", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_drop", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 15, + "id": "X015", + "question": "что на счете 60 на 2020.05", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-26-25-x015", + "status_code": 200, + "ok": true, + "elapsed_ms": 5339, + "reply_type": "factual", + "trace_id": "address-xwgcVP2f-9", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 138.\nСумма по отобранным движениям: 24061597.5.\n1. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 900000\n2. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 144749\n3. 2020-11-26T12:00:02Z | Списание с расчетного счета 00000000276 от 26.11.2020 12:00:02 | 60.01 / 51 | 524730.5\n4. 2020-11-26T12:00:02Z | Списание с расчетного счета 00000000276 от 26.11.2020 12:00:02 | 60.01 / 51 | 210770.5", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 16, + "id": "X016", + "question": "дай остаток 62.01 на 2020 май", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-26-25-x016", + "status_code": 200, + "ok": true, + "elapsed_ms": 4993, + "reply_type": "factual", + "trace_id": "address-pwrd2TW78q", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 2.\nСумма по отобранным движениям: 1530000.\n1. 2020-05-18T12:00:01Z | Реализация товаров и услуг 00000000002 от 18.05.2020 12:00:01 | 62.01 / 90.01.1 | 765000\n2. 2020-05-18T12:00:01Z | Реализация товаров и услуг 00000000002 от 18.05.2020 12:00:01 | 62.02 / 62.01 | 765000", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 17, + "id": "X017", + "question": "saldo account 60 as of 2020-12-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-26-25-x017", + "status_code": 200, + "ok": true, + "elapsed_ms": 5007, + "reply_type": "partial_coverage", + "trace_id": "address-m0hg8a1zrk", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "no_raw_rows", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 18, + "id": "X018", + "question": "плиз остаток по счету 51 на 2020-06-30", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-26-25-x018", + "status_code": 200, + "ok": true, + "elapsed_ms": 5141, + "reply_type": "factual", + "trace_id": "address-lxCzB4JEZ2", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 30.\nСумма по отобранным движениям: 4579658.75.\n1. 2020-06-30T12:00:07Z | Списание с расчетного счета 00000000180 от 30.06.2020 12:00:07 | 66.03 / 51 | 35000\n2. 2020-06-30T12:00:05Z | Списание с расчетного счета 00000000178 от 30.06.2020 12:00:05 | 60.01 / 51 | 15800\n3. 2020-06-30T12:00:04Z | Списание с расчетного счета 00000000177 от 30.06.2020 12:00:04 | 70 / 51 | 50\n4. 2020-06-30T12:00:03Z | Списание с расчетного счета 00000000176 от 30.06.2020 12:00:03 | 91.02 / 51 | 35", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 19, + "id": "X019", + "question": "скока по 60.02 на конец 2020-12", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-26-25-x019", + "status_code": 200, + "ok": true, + "elapsed_ms": 5, + "reply_type": "partial_coverage", + "trace_id": "address-P40Wc4cklx", + "assistant_reply": "Для точного адресного поиска не хватает обязательного якоря.\nПричина: не хватает обязательных фильтров.\nЧто нужно уточнить: уточните: account.", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "skipped", + "limited_reason_category": "missing_anchor", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 20, + "id": "X020", + "question": "бля сальдо 60.01 на 2020-05-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-26-25-x020", + "status_code": 200, + "ok": true, + "elapsed_ms": 6126, + "reply_type": "factual", + "trace_id": "address-4SgexKcvDr", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 5.\nСумма по отобранным движениям: 707200.\n1. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 75367\n2. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 211833\n3. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 187967\n4. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 162033", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 21, + "id": "X021", + "question": "раскрой остаток 60.01 по документам на конец июля 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-26-25-x021", + "status_code": 200, + "ok": true, + "elapsed_ms": 5465, + "reply_type": "partial_coverage", + "trace_id": "address-7Nfz636dvt", + "assistant_reply": "Для точного адресного поиска не хватает обязательного якоря.\nПричина: не хватает обязательных фильтров.\nЧто нужно уточнить: уточните: account.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "skipped", + "limited_reason_category": "missing_anchor", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 22, + "id": "X022", + "question": "доки под остатком 60.01 на 2020-07-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-26-25-x022", + "status_code": 200, + "ok": true, + "elapsed_ms": 5468, + "reply_type": "partial_coverage", + "trace_id": "address-uNvOsnJE03", + "assistant_reply": "Для точного адресного поиска не хватает обязательного якоря.\nПричина: не хватает обязательных фильтров.\nЧто нужно уточнить: уточните: account.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "skipped", + "limited_reason_category": "missing_anchor", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 23, + "id": "X023", + "question": "из чего остаток 60.01 на 2020-07-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-26-25-x023", + "status_code": 200, + "ok": true, + "elapsed_ms": 6338, + "reply_type": "factual", + "trace_id": "address-zg1xprIonD", + "assistant_reply": "Собран drilldown документов, формирующих остаток по счету на указанную дату.\nДокументных строк отобрано: 5.\nСумма по отобранным движениям: 216200.\n1. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400\n2. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600\n3. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400\n4. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200\n5. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 7600\nМожно уточнить выборку по контрагенту, договору или периоду.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 24, + "id": "X024", + "question": "какие документы формируют остаток по 60.01 на 2020-07-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-26-25-x024", + "status_code": 200, + "ok": true, + "elapsed_ms": 6091, + "reply_type": "factual", + "trace_id": "address--zVrefEDD2", + "assistant_reply": "Собран drilldown документов, формирующих остаток по счету на указанную дату.\nДокументных строк отобрано: 5.\nСумма по отобранным движениям: 216200.\n1. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400\n2. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600\n3. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400\n4. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200\n5. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 7600\nМожно уточнить выборку по контрагенту, договору или периоду.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 25, + "id": "X025", + "question": "docs forming balance 60.01 as of 2020-07-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-26-25-x025", + "status_code": 200, + "ok": true, + "elapsed_ms": 6111, + "reply_type": "factual", + "trace_id": "address-_NJ0kBXdiS", + "assistant_reply": "Собран drilldown документов, формирующих остаток по счету на указанную дату.\nДокументных строк отобрано: 5.\nСумма по отобранным движениям: 216200.\n1. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400\n2. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600\n3. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400\n4. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200\n5. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 7600\nМожно уточнить выборку по контрагенту, договору или периоду.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 26, + "id": "X026", + "question": "раскидай остаток 62.01 по докам на 2020-12-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-26-25-x026", + "status_code": 200, + "ok": true, + "elapsed_ms": 5557, + "reply_type": "partial_coverage", + "trace_id": "address-A_GHC4u0MZ", + "assistant_reply": "Для точного адресного поиска не хватает обязательного якоря.\nПричина: не хватает обязательных фильтров.\nЧто нужно уточнить: уточните: account.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "skipped", + "limited_reason_category": "missing_anchor", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 27, + "id": "X027", + "question": "по счету 51 раскрой остаток документами на 2020-06-30", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-26-25-x027", + "status_code": 200, + "ok": true, + "elapsed_ms": 6645, + "reply_type": "factual", + "trace_id": "address-HNKeqZP0y0", + "assistant_reply": "Собран drilldown документов, формирующих остаток по счету на указанную дату.\nДокументных строк отобрано: 3.\nСумма по отобранным движениям: 2190524.88.\n1. 2020-06-16T12:00:02Z | Поступление на расчетный счет 00000000026 от 16.06.2020 12:00:02 | 51 / 60.02 | 250000\n2. 2020-06-03T00:00:02Z | Поступление на расчетный счет 00000000025 от 03.06.2020 0:00:02 | 51 / 62.02 | 1642764.88\n3. 2020-06-03T00:00:01Z | Поступление на расчетный счет 00000000024 от 03.06.2020 0:00:01 | 51 / 62.02 | 297760\nМожно уточнить выборку по контрагенту, договору или периоду.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 28, + "id": "X028", + "question": "бля из чего состоит остаток по 60.01 на 2020-05-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-26-25-x028", + "status_code": 200, + "ok": true, + "elapsed_ms": 5862, + "reply_type": "partial_coverage", + "trace_id": "address-0pbIjCSA0P", + "assistant_reply": "Для точного адресного поиска не хватает обязательного якоря.\nПричина: не хватает обязательных фильтров.\nЧто нужно уточнить: уточните: account.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "skipped", + "limited_reason_category": "missing_anchor", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 29, + "id": "X029", + "question": "доки по договору 15/24 за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-26-25-x029", + "status_code": 200, + "ok": true, + "elapsed_ms": 7563, + "reply_type": "factual", + "trace_id": "address-AffkwiY8tA", + "assistant_reply": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-08-31T15:00:06Z | Поступление товаров и услуг 00000000024 от 31.08.2020 15:00:06 | 19.04 / 76.05 | 233.33\n2. 2020-08-31T15:00:06Z | Поступление товаров и услуг 00000000024 от 31.08.2020 15:00:06 | 44.01 / 76.05 | 1166.67", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 30, + "id": "X030", + "question": "покажи документы контракт 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-26-25-x030", + "status_code": 200, + "ok": true, + "elapsed_ms": 6168, + "reply_type": "factual", + "trace_id": "address-pU9PocKz0f", + "assistant_reply": "Документный фильтр в live дал пустой набор; показываю связанные банковские операции по договору.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 31, + "id": "X031", + "question": "docs by contract 15/24 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-26-25-x031", + "status_code": 200, + "ok": true, + "elapsed_ms": 8192, + "reply_type": "partial_coverage", + "trace_id": "address-qG_w3RngLU", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 32, + "id": "X032", + "question": "по дог 15/24 какие документы", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-26-25-x032", + "status_code": 200, + "ok": true, + "elapsed_ms": 5930, + "reply_type": "factual", + "trace_id": "address-bSXi7W-TLL", + "assistant_reply": "Документный фильтр в live дал пустой набор; показываю связанные банковские операции по договору.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 33, + "id": "X033", + "question": "договор 15/24 выведи доки", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-26-25-x033", + "status_code": 200, + "ok": true, + "elapsed_ms": 7113, + "reply_type": "partial_coverage", + "trace_id": "address-k1gtNAX890", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 34, + "id": "X034", + "question": "нах покажи документы по 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-26-25-x034", + "status_code": 200, + "ok": true, + "elapsed_ms": 6231, + "reply_type": "factual", + "trace_id": "address-NlpjFlzzQw", + "assistant_reply": "Документный фильтр в live дал пустой набор; показываю связанные банковские операции по договору.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 35, + "id": "X035", + "question": "банк операции по договору 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-26-25-x035", + "status_code": 200, + "ok": true, + "elapsed_ms": 5932, + "reply_type": "factual", + "trace_id": "address-y8ValVFMRv", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "bank_operations_by_contract", + "actual_intent": "bank_operations_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 36, + "id": "X036", + "question": "платежки по дог 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-26-25-x036", + "status_code": 200, + "ok": true, + "elapsed_ms": 6236, + "reply_type": "factual", + "trace_id": "address-Qxy-0G6jbQ", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "bank_operations_by_contract", + "actual_intent": "bank_operations_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 37, + "id": "X037", + "question": "выписка по контракту 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-26-25-x037", + "status_code": 200, + "ok": true, + "elapsed_ms": 6111, + "reply_type": "factual", + "trace_id": "address-nYBmUjeff7", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "bank_operations_by_contract", + "actual_intent": "bank_operations_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 38, + "id": "X038", + "question": "bank ops by contract 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-26-25-x038", + "status_code": 200, + "ok": true, + "elapsed_ms": 7114, + "reply_type": "partial_coverage", + "trace_id": "address-cNcAIlZedl", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "bank_operations_by_contract", + "actual_intent": "bank_operations_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 39, + "id": "X039", + "question": "покажи банк опер по дог 15/24 пж", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-26-25-x039", + "status_code": 200, + "ok": true, + "elapsed_ms": 6921, + "reply_type": "partial_coverage", + "trace_id": "address-MrM4lRdnvU", + "assistant_reply": "Не удалось выполнить адресный live-запрос в V1.\nПричина: live MCP вызов завершился ошибкой.\nЧто нужно уточнить: MCP fetch failed: This operation was aborted.", + "expected_intent": "bank_operations_by_contract", + "actual_intent": "bank_operations_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "error", + "limited_reason_category": "execution_error", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 40, + "id": "X040", + "question": "епт транзакции договор 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-26-25-x040", + "status_code": 200, + "ok": true, + "elapsed_ms": 7079, + "reply_type": "partial_coverage", + "trace_id": "address-wz_Y_-7o8g", + "assistant_reply": "Не удалось выполнить адресный live-запрос в V1.\nПричина: live MCP вызов завершился ошибкой.\nЧто нужно уточнить: MCP fetch failed: This operation was aborted.", + "expected_intent": "bank_operations_by_contract", + "actual_intent": "bank_operations_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "error", + "limited_reason_category": "execution_error", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 41, + "id": "X041", + "question": "покажи сальдо по счету 60 за 2020", + "session": "chain_balance_60_extra", + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-26-25-chain_balance_60_extra", + "status_code": 200, + "ok": true, + "elapsed_ms": 5049, + "reply_type": "factual", + "trace_id": "address-RRvO3-JeGs", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 138.\nСумма по отобранным движениям: 24061597.5.\n1. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 900000\n2. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 144749\n3. 2020-11-26T12:00:02Z | Списание с расчетного счета 00000000276 от 26.11.2020 12:00:02 | 60.01 / 51 | 524730.5\n4. 2020-11-26T12:00:02Z | Списание с расчетного счета 00000000276 от 26.11.2020 12:00:02 | 60.01 / 51 | 210770.5", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 42, + "id": "X042", + "question": "а теперь только май 2020", + "session": "chain_balance_60_extra", + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-26-25-chain_balance_60_extra", + "status_code": 200, + "ok": true, + "elapsed_ms": 926, + "reply_type": "factual", + "trace_id": "address-JS5pFtN04r", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 6.\nСумма по отобранным движениям: 849499.\n1. 2020-05-22T10:14:43Z | Списание с расчетного счета 00000000148 от 22.05.2020 10:14:43 | 60.02 / 51 | 142299\n2. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 75367\n3. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 211833\n4. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 187967", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + } + ] +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-26-25/run_summary.json b/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-26-25/run_summary.json new file mode 100644 index 0000000..d30efac --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-26-25/run_summary.json @@ -0,0 +1,50 @@ +{ + "run_id": "2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-26-25", + "generated_at": "2026-04-02T10:30:27", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\address_slang_stress_extra_2026-04-02.json", + "backend_url": "http://127.0.0.1:8787/api/assistant/message", + "llm_provider": "local", + "llm_model": "qwen2.5-14b-instruct-1m", + "llm_base_url": "http://127.0.0.1:1234", + "totals": { + "questions_total": 42, + "ok_200_count": 42, + "semantic_pass_count": 42, + "semantic_pass_rate": 1.0, + "factual_count": 24, + "partial_coverage_count": 18, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_applied_count": 30, + "avg_elapsed_ms": 5757.0 + }, + "distributions": { + "reply_type": { + "partial_coverage": 18, + "factual": 24 + }, + "actual_intent": { + "list_documents_by_counterparty": 6, + "bank_operations_by_counterparty": 6, + "account_balance_snapshot": 10, + "documents_forming_balance": 8, + "list_documents_by_contract": 6, + "bank_operations_by_contract": 6 + }, + "actual_mode": { + "address_query": 42 + }, + "mcp_call_status": { + "materialized_but_not_anchor_matched": 9, + "matched_non_empty": 24, + "skipped": 6, + "no_raw_rows": 1, + "error": 2 + }, + "limited_reason_category": { + "empty_match": 9, + "missing_anchor": 7, + "execution_error": 2 + } + } +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12/README.md b/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12/README.md new file mode 100644 index 0000000..826b9af --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12/README.md @@ -0,0 +1,23 @@ +# 2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12 + +Generated at: 2026-04-02T10:41:27 +Questions file: X:\1C\NDC_1C\docs\ADDRESS\question_sets\address_slang_stress_full_2026-04-02.json +Backend URL: http://127.0.0.1:8787/api/assistant/message +LLM: local / qwen2.5-14b-instruct-1m @ http://127.0.0.1:1234 + +## Totals +- questions_total: 102 +- ok_200_count: 102 +- semantic_pass_count: 101 +- semantic_pass_rate: 0.9902 +- factual_count: 69 +- partial_coverage_count: 33 +- clarification_required_count: 0 +- http_error_count: 0 +- llm_decomposition_applied_count: 76 +- avg_elapsed_ms: 6031.8 + +## Files +- run_summary.json +- full_live_results.json +- failures_only.json diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12/failures_only.json b/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12/failures_only.json new file mode 100644 index 0000000..5229c72 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12/failures_only.json @@ -0,0 +1,29 @@ +[ + { + "index": 27, + "id": "S027", + "question": "баланс account 60.01 as of 2020-07-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-s027", + "status_code": 200, + "ok": true, + "elapsed_ms": 5229, + "reply_type": "partial_coverage", + "trace_id": "address-Ad2n8uT34g", + "assistant_reply": "Этот запрос не подходит под address_query V1.\nПричина: intent пока не поддержан в address V1.\nЧто нужно уточнить: переформулируйте вопрос как адресный lookup по счету/контрагенту/договору.", + "expected_intent": "account_balance_snapshot", + "actual_intent": "unknown", + "intent_match": false, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": false, + "mcp_call_status": "skipped", + "limited_reason_category": "unsupported", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + } +] diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12/full_live_results.json b/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12/full_live_results.json new file mode 100644 index 0000000..309c864 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12/full_live_results.json @@ -0,0 +1,2814 @@ +{ + "run_id": "2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12", + "generated_at": "2026-04-02T10:41:27", + "summary": { + "run_id": "2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12", + "generated_at": "2026-04-02T10:41:27", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\address_slang_stress_full_2026-04-02.json", + "backend_url": "http://127.0.0.1:8787/api/assistant/message", + "llm_provider": "local", + "llm_model": "qwen2.5-14b-instruct-1m", + "llm_base_url": "http://127.0.0.1:1234", + "totals": { + "questions_total": 102, + "ok_200_count": 102, + "semantic_pass_count": 101, + "semantic_pass_rate": 0.9902, + "factual_count": 69, + "partial_coverage_count": 33, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_applied_count": 76, + "avg_elapsed_ms": 6031.8 + }, + "distributions": { + "reply_type": { + "partial_coverage": 33, + "factual": 69 + }, + "actual_intent": { + "list_documents_by_counterparty": 18, + "bank_operations_by_counterparty": 16, + "account_balance_snapshot": 25, + "unknown": 1, + "documents_forming_balance": 16, + "list_documents_by_contract": 14, + "bank_operations_by_contract": 12 + }, + "actual_mode": { + "address_query": 102 + }, + "mcp_call_status": { + "materialized_but_not_anchor_matched": 17, + "matched_non_empty": 69, + "skipped": 10, + "no_raw_rows": 3, + "materialized_but_filtered_out_by_recipe": 2, + "error": 1 + }, + "limited_reason_category": { + "empty_match": 19, + "missing_anchor": 10, + "unsupported": 1, + "recipe_visibility_gap": 2, + "execution_error": 1 + } + } + }, + "rows": [ + { + "index": 1, + "id": "S001", + "question": "свк доки за 2020 покаж пж", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-s001", + "status_code": 200, + "ok": true, + "elapsed_ms": 8894, + "reply_type": "partial_coverage", + "trace_id": "address-ap-s5wFnto", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 2, + "id": "S002", + "question": "покеж все доки по свк за 20 год", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-s002", + "status_code": 200, + "ok": true, + "elapsed_ms": 5806, + "reply_type": "factual", + "trace_id": "address-U-RPImyvUW", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 3, + "id": "S003", + "question": "дай список документов по свк за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-s003", + "status_code": 200, + "ok": true, + "elapsed_ms": 6095, + "reply_type": "factual", + "trace_id": "address-5sZqOcBfDV", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 4, + "id": "S004", + "question": "какие у свк есть доки за 2020?", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-s004", + "status_code": 200, + "ok": true, + "elapsed_ms": 8404, + "reply_type": "partial_coverage", + "trace_id": "address-WcB0E-B5gL", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 5, + "id": "S005", + "question": "че по свк по докам за 2020 год", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-s005", + "status_code": 200, + "ok": true, + "elapsed_ms": 812, + "reply_type": "factual", + "trace_id": "address-fXDA3kkqrv", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_without_llm", + "fallback_rule_hit": "documents_counterparty_year_rewrite", + "error_code": null, + "error_message": null + }, + { + "index": 6, + "id": "S006", + "question": "ёпт покажи доки по свк за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-s006", + "status_code": 200, + "ok": true, + "elapsed_ms": 6116, + "reply_type": "factual", + "trace_id": "address-FL1Fe57Msp", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 7, + "id": "S007", + "question": "бля, доки свк 2020 вывали", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-s007", + "status_code": 200, + "ok": true, + "elapsed_ms": 7111, + "reply_type": "factual", + "trace_id": "address-AEoVCv-vBW", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 8, + "id": "S008", + "question": "svk docs for 2020 please", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-s008", + "status_code": 200, + "ok": true, + "elapsed_ms": 6062, + "reply_type": "factual", + "trace_id": "address-IHhVcF0CKf", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 9, + "id": "S009", + "question": "docs by counterparty svk year 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-s009", + "status_code": 200, + "ok": true, + "elapsed_ms": 8306, + "reply_type": "partial_coverage", + "trace_id": "address-1JGxmvU-dO", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 10, + "id": "S010", + "question": "по контрагенту свк покаж документы за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-s010", + "status_code": 200, + "ok": true, + "elapsed_ms": 5971, + "reply_type": "factual", + "trace_id": "address-OqSvEGKJkd", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 11, + "id": "S011", + "question": "плс доки по свк 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-s011", + "status_code": 200, + "ok": true, + "elapsed_ms": 9344, + "reply_type": "partial_coverage", + "trace_id": "address-8o-hFscv1t", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 12, + "id": "S012", + "question": "свк док за 2020 гони", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-s012", + "status_code": 200, + "ok": true, + "elapsed_ms": 808, + "reply_type": "factual", + "trace_id": "address-7tgYzrTPwX", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_without_llm", + "fallback_rule_hit": "documents_counterparty_year_rewrite", + "error_code": null, + "error_message": null + }, + { + "index": 13, + "id": "S013", + "question": "по свк банковские операции за 2020 покаж", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-s013", + "status_code": 200, + "ok": true, + "elapsed_ms": 7070, + "reply_type": "factual", + "trace_id": "address-F2N2WtB3cB", + "assistant_reply": "Собран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 14, + "id": "S014", + "question": "свк выписка банка 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-s014", + "status_code": 200, + "ok": true, + "elapsed_ms": 7128, + "reply_type": "factual", + "trace_id": "address-RvhCvCwx0f", + "assistant_reply": "Собран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 15, + "id": "S015", + "question": "платежи по свк за 2020 выведи", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-s015", + "status_code": 200, + "ok": true, + "elapsed_ms": 7117, + "reply_type": "factual", + "trace_id": "address-eweaJJmMLH", + "assistant_reply": "Собран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 16, + "id": "S016", + "question": "оплаты по свк за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-s016", + "status_code": 200, + "ok": true, + "elapsed_ms": 6092, + "reply_type": "factual", + "trace_id": "address-Tu8emcTAqd", + "assistant_reply": "Собран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 17, + "id": "S017", + "question": "свк банк опер за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-s017", + "status_code": 200, + "ok": true, + "elapsed_ms": 6093, + "reply_type": "factual", + "trace_id": "address-jf6Ky_1BM4", + "assistant_reply": "Собран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 18, + "id": "S018", + "question": "че у свк по банку за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-s018", + "status_code": 200, + "ok": true, + "elapsed_ms": 8294, + "reply_type": "partial_coverage", + "trace_id": "address-A-dZbDQEEK", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 19, + "id": "S019", + "question": "свк списания/поступления за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-s019", + "status_code": 200, + "ok": true, + "elapsed_ms": 6257, + "reply_type": "partial_coverage", + "trace_id": "address-KuUvYIm5HF", + "assistant_reply": "Для точного адресного поиска не хватает обязательного якоря.\nПричина: не хватает обязательных фильтров.\nЧто нужно уточнить: уточните: counterparty.", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "skipped", + "limited_reason_category": "missing_anchor", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 20, + "id": "S020", + "question": "bank ops by svk for 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-s020", + "status_code": 200, + "ok": true, + "elapsed_ms": 656, + "reply_type": "factual", + "trace_id": "address-6N96KBcEnl", + "assistant_reply": "Собран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 1.\n1. 2020-12-16T16:20:51Z | Списание с расчетного счета 00000000293 от 16.12.2020 16:20:51 | 0 / 0 | 60 | аналитика: СБЕРБАНК, ПАО", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_without_llm", + "fallback_rule_hit": "bank_operations_counterparty_year_rewrite", + "error_code": null, + "error_message": null + }, + { + "index": 21, + "id": "S021", + "question": "transactions by counterparty svk 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-s021", + "status_code": 200, + "ok": true, + "elapsed_ms": 6075, + "reply_type": "factual", + "trace_id": "address-N4O7KbuX_M", + "assistant_reply": "Собран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 22, + "id": "S022", + "question": "бля, по свк банковские платежки 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-s022", + "status_code": 200, + "ok": true, + "elapsed_ms": 7159, + "reply_type": "factual", + "trace_id": "address-P5VUzUn-yK", + "assistant_reply": "Собран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 23, + "id": "S023", + "question": "сальдо по счету 60.01 на дату 2020-07-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-s023", + "status_code": 200, + "ok": true, + "elapsed_ms": 6057, + "reply_type": "factual", + "trace_id": "address-_GgJZL70Hv", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 5.\nСумма по отобранным движениям: 216200.\n1. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400\n2. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600\n3. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400\n4. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 24, + "id": "S024", + "question": "остаток по счету 60.01 на 2020.05", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-s024", + "status_code": 200, + "ok": true, + "elapsed_ms": 5101, + "reply_type": "factual", + "trace_id": "address-VqdP9VdROq", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 5.\nСумма по отобранным движениям: 707200.\n1. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 75367\n2. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 211833\n3. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 187967\n4. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 162033", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 25, + "id": "S025", + "question": "покажи остаток по 60.01 за май 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-s025", + "status_code": 200, + "ok": true, + "elapsed_ms": 6105, + "reply_type": "factual", + "trace_id": "address-2VDe_wfBn2", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 5.\nСумма по отобранным движениям: 707200.\n1. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 75367\n2. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 211833\n3. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 187967\n4. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 162033", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 26, + "id": "S026", + "question": "счет 60 остаток на май 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-s026", + "status_code": 200, + "ok": true, + "elapsed_ms": 6084, + "reply_type": "factual", + "trace_id": "address-DE-IVCpld0", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 6.\nСумма по отобранным движениям: 849499.\n1. 2020-05-22T10:14:43Z | Списание с расчетного счета 00000000148 от 22.05.2020 10:14:43 | 60.02 / 51 | 142299\n2. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 75367\n3. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 211833\n4. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 187967", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 27, + "id": "S027", + "question": "баланс account 60.01 as of 2020-07-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-s027", + "status_code": 200, + "ok": true, + "elapsed_ms": 5229, + "reply_type": "partial_coverage", + "trace_id": "address-Ad2n8uT34g", + "assistant_reply": "Этот запрос не подходит под address_query V1.\nПричина: intent пока не поддержан в address V1.\nЧто нужно уточнить: переформулируйте вопрос как адресный lookup по счету/контрагенту/договору.", + "expected_intent": "account_balance_snapshot", + "actual_intent": "unknown", + "intent_match": false, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": false, + "mcp_call_status": "skipped", + "limited_reason_category": "unsupported", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 28, + "id": "S028", + "question": "60.01 saldo на 31.07.2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-s028", + "status_code": 200, + "ok": true, + "elapsed_ms": 5971, + "reply_type": "factual", + "trace_id": "address-mG0b4uCiiF", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 5.\nСумма по отобранным движениям: 216200.\n1. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400\n2. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600\n3. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400\n4. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 29, + "id": "S029", + "question": "сколько на счете 60 на конец 2020-05", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-s029", + "status_code": 200, + "ok": true, + "elapsed_ms": 5086, + "reply_type": "factual", + "trace_id": "address-99DV7pwzcO", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 6.\nСумма по отобранным движениям: 849499.\n1. 2020-05-22T10:14:43Z | Списание с расчетного счета 00000000148 от 22.05.2020 10:14:43 | 60.02 / 51 | 142299\n2. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 75367\n3. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 211833\n4. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 187967", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 30, + "id": "S030", + "question": "дай остаток 60.02 на 2020-12-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-s030", + "status_code": 200, + "ok": true, + "elapsed_ms": 6100, + "reply_type": "factual", + "trace_id": "address-DPhIfs82WG", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 21.\nСумма по отобранным движениям: 6296596.\n1. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 900000\n2. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 144749\n3. 2020-11-20T12:00:00Z | Поступление товаров и услуг 00000000030 от 20.11.2020 12:00:00 | 60.01 / 60.02 | 8700\n4. 2020-11-19T12:00:02Z | Списание с расчетного счета 00000000270 от 19.11.2020 12:00:02 | 60.02 / 51 | 900000", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 31, + "id": "S031", + "question": "епт, сальдо по счету 62.01 на 2020-12-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-s031", + "status_code": 200, + "ok": true, + "elapsed_ms": 6100, + "reply_type": "partial_coverage", + "trace_id": "address-aCUQAM8ck8", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "no_raw_rows", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 32, + "id": "S032", + "question": "плс остаток по счету 51 на 2020-06-30", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-s032", + "status_code": 200, + "ok": true, + "elapsed_ms": 6141, + "reply_type": "factual", + "trace_id": "address-bFLZ4QXiTf", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 30.\nСумма по отобранным движениям: 4579658.75.\n1. 2020-06-30T12:00:07Z | Списание с расчетного счета 00000000180 от 30.06.2020 12:00:07 | 66.03 / 51 | 35000\n2. 2020-06-30T12:00:05Z | Списание с расчетного счета 00000000178 от 30.06.2020 12:00:05 | 60.01 / 51 | 15800\n3. 2020-06-30T12:00:04Z | Списание с расчетного счета 00000000177 от 30.06.2020 12:00:04 | 70 / 51 | 50\n4. 2020-06-30T12:00:03Z | Списание с расчетного счета 00000000176 от 30.06.2020 12:00:03 | 91.02 / 51 | 35", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 33, + "id": "S033", + "question": "как там по счету 60.01 на 2020.07?", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-s033", + "status_code": 200, + "ok": true, + "elapsed_ms": 6041, + "reply_type": "factual", + "trace_id": "address-YTPfI0bxew", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 5.\nСумма по отобранным движениям: 216200.\n1. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400\n2. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600\n3. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400\n4. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_drop", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 34, + "id": "S034", + "question": "сальдо 60 на 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-s034", + "status_code": 200, + "ok": true, + "elapsed_ms": 6157, + "reply_type": "factual", + "trace_id": "address-kSveKu-gkk", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 138.\nСумма по отобранным движениям: 24061597.5.\n1. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 900000\n2. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 144749\n3. 2020-11-26T12:00:02Z | Списание с расчетного счета 00000000276 от 26.11.2020 12:00:02 | 60.01 / 51 | 524730.5\n4. 2020-11-26T12:00:02Z | Списание с расчетного счета 00000000276 от 26.11.2020 12:00:02 | 60.01 / 51 | 210770.5", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 35, + "id": "S035", + "question": "какие документы формируют остаток по счету 60.01 на 2020-07-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-s035", + "status_code": 200, + "ok": true, + "elapsed_ms": 6032, + "reply_type": "factual", + "trace_id": "address-XGQsqPrhM6", + "assistant_reply": "Собран drilldown документов, формирующих остаток по счету на указанную дату.\nДокументных строк отобрано: 5.\nСумма по отобранным движениям: 216200.\n1. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400\n2. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600\n3. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400\n4. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200\n5. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 7600\nМожно уточнить выборку по контрагенту, договору или периоду.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 36, + "id": "S036", + "question": "из чего состоит остаток по счету 60 на 2020.05", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-s036", + "status_code": 200, + "ok": true, + "elapsed_ms": 6106, + "reply_type": "partial_coverage", + "trace_id": "address-y-nifbHCuY", + "assistant_reply": "Текущий live recipe не дает нужную видимость данных для этого сценария.\nПричина: строки по якорю найдены, но отфильтрованы intent-specific recipe.\nЧто нужно уточнить: сузьте период, уточните контрагента или документный тип.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_filtered_out_by_recipe", + "limited_reason_category": "recipe_visibility_gap", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 37, + "id": "S037", + "question": "раскрой остаток 60.01 по документам на конец июля 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-s037", + "status_code": 200, + "ok": true, + "elapsed_ms": 5706, + "reply_type": "partial_coverage", + "trace_id": "address-9R3afZuU6r", + "assistant_reply": "Для точного адресного поиска не хватает обязательного якоря.\nПричина: не хватает обязательных фильтров.\nЧто нужно уточнить: уточните: account.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "skipped", + "limited_reason_category": "missing_anchor", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 38, + "id": "S038", + "question": "доки под остатком 60.01 на 2020-07-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-s038", + "status_code": 200, + "ok": true, + "elapsed_ms": 5738, + "reply_type": "partial_coverage", + "trace_id": "address-x5oEKImXel", + "assistant_reply": "Для точного адресного поиска не хватает обязательного якоря.\nПричина: не хватает обязательных фильтров.\nЧто нужно уточнить: уточните: account.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "skipped", + "limited_reason_category": "missing_anchor", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 39, + "id": "S039", + "question": "documents forming balance for account 60.01 as of 2020-07-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-s039", + "status_code": 200, + "ok": true, + "elapsed_ms": 6806, + "reply_type": "factual", + "trace_id": "address-8XqahUO_Tw", + "assistant_reply": "Собран drilldown документов, формирующих остаток по счету на указанную дату.\nДокументных строк отобрано: 5.\nСумма по отобранным движениям: 216200.\n1. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400\n2. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600\n3. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400\n4. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200\n5. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 7600\nМожно уточнить выборку по контрагенту, договору или периоду.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 40, + "id": "S040", + "question": "бля, какие доки формируют остаток 60.01 на 2020-05-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-s040", + "status_code": 200, + "ok": true, + "elapsed_ms": 6117, + "reply_type": "partial_coverage", + "trace_id": "address-VvDJvrnTsX", + "assistant_reply": "Текущий live recipe не дает нужную видимость данных для этого сценария.\nПричина: строки по якорю найдены, но отфильтрованы intent-specific recipe.\nЧто нужно уточнить: сузьте период, уточните контрагента или документный тип.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_filtered_out_by_recipe", + "limited_reason_category": "recipe_visibility_gap", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 41, + "id": "S041", + "question": "по счету 62.01 раскрой остаток документами на 2020-12-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-s041", + "status_code": 200, + "ok": true, + "elapsed_ms": 7111, + "reply_type": "partial_coverage", + "trace_id": "address-daTwH2EYM6", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "no_raw_rows", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 42, + "id": "S042", + "question": "из чего остаток по счету 51 на 2020-06-30", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-s042", + "status_code": 200, + "ok": true, + "elapsed_ms": 6150, + "reply_type": "factual", + "trace_id": "address-dAEz15-TzX", + "assistant_reply": "Собран drilldown документов, формирующих остаток по счету на указанную дату.\nДокументных строк отобрано: 3.\nСумма по отобранным движениям: 2190524.88.\n1. 2020-06-16T12:00:02Z | Поступление на расчетный счет 00000000026 от 16.06.2020 12:00:02 | 51 / 60.02 | 250000\n2. 2020-06-03T00:00:02Z | Поступление на расчетный счет 00000000025 от 03.06.2020 0:00:02 | 51 / 62.02 | 1642764.88\n3. 2020-06-03T00:00:01Z | Поступление на расчетный счет 00000000024 от 03.06.2020 0:00:01 | 51 / 62.02 | 297760\nМожно уточнить выборку по контрагенту, договору или периоду.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 43, + "id": "S043", + "question": "покажи документы по договору 15/24 за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-s043", + "status_code": 200, + "ok": true, + "elapsed_ms": 7289, + "reply_type": "factual", + "trace_id": "address-1pqsLQE985", + "assistant_reply": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-08-31T15:00:06Z | Поступление товаров и услуг 00000000024 от 31.08.2020 15:00:06 | 19.04 / 76.05 | 233.33\n2. 2020-08-31T15:00:06Z | Поступление товаров и услуг 00000000024 от 31.08.2020 15:00:06 | 44.01 / 76.05 | 1166.67", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 44, + "id": "S044", + "question": "доки по дог. 15/24 за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-s044", + "status_code": 200, + "ok": true, + "elapsed_ms": 9169, + "reply_type": "partial_coverage", + "trace_id": "address-TxrR45cQ_7", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 45, + "id": "S045", + "question": "какие документы по контракту 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-s045", + "status_code": 200, + "ok": true, + "elapsed_ms": 7116, + "reply_type": "factual", + "trace_id": "address-AJ_7fwfx2D", + "assistant_reply": "Документный фильтр в live дал пустой набор; показываю связанные банковские операции по договору.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 46, + "id": "S046", + "question": "docs by contract 15/24 year 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-s046", + "status_code": 200, + "ok": true, + "elapsed_ms": 9202, + "reply_type": "partial_coverage", + "trace_id": "address-EP6kti482m", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 47, + "id": "S047", + "question": "бля, покажи по договору 15/24 доки", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-s047", + "status_code": 200, + "ok": true, + "elapsed_ms": 6025, + "reply_type": "factual", + "trace_id": "address-qc2WqKJIC8", + "assistant_reply": "Документный фильтр в live дал пустой набор; показываю связанные банковские операции по договору.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 48, + "id": "S048", + "question": "договор 15/24 документы", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-s048", + "status_code": 200, + "ok": true, + "elapsed_ms": 6119, + "reply_type": "factual", + "trace_id": "address-DRGNvOXedp", + "assistant_reply": "Документный фильтр в live дал пустой набор; показываю связанные банковские операции по договору.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 49, + "id": "S049", + "question": "плс документы договор №15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-s049", + "status_code": 200, + "ok": true, + "elapsed_ms": 7043, + "reply_type": "partial_coverage", + "trace_id": "address-MGN6Ik86OW", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 50, + "id": "S050", + "question": "покеж документы по 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-s050", + "status_code": 200, + "ok": true, + "elapsed_ms": 6128, + "reply_type": "factual", + "trace_id": "address-DcM6iPwYcF", + "assistant_reply": "Документный фильтр в live дал пустой набор; показываю связанные банковские операции по договору.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 51, + "id": "S051", + "question": "банковские операции по договору 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-s051", + "status_code": 200, + "ok": true, + "elapsed_ms": 7074, + "reply_type": "factual", + "trace_id": "address-y_e453P-lB", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "bank_operations_by_contract", + "actual_intent": "bank_operations_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 52, + "id": "S052", + "question": "платежи по договору 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-s052", + "status_code": 200, + "ok": true, + "elapsed_ms": 6158, + "reply_type": "factual", + "trace_id": "address-LaI8X5_80m", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "bank_operations_by_contract", + "actual_intent": "bank_operations_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 53, + "id": "S053", + "question": "выписка по договору 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-s053", + "status_code": 200, + "ok": true, + "elapsed_ms": 6054, + "reply_type": "partial_coverage", + "trace_id": "address-clhFP5BsB0", + "assistant_reply": "Не удалось выполнить адресный live-запрос в V1.\nПричина: live MCP вызов завершился ошибкой.\nЧто нужно уточнить: MCP fetch failed: This operation was aborted.", + "expected_intent": "bank_operations_by_contract", + "actual_intent": "bank_operations_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "error", + "limited_reason_category": "execution_error", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 54, + "id": "S054", + "question": "bank ops by contract 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-s054", + "status_code": 200, + "ok": true, + "elapsed_ms": 7109, + "reply_type": "partial_coverage", + "trace_id": "address-wyI4FJUnil", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "bank_operations_by_contract", + "actual_intent": "bank_operations_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 55, + "id": "S055", + "question": "ёпт, покажи банк операции по дог 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-s055", + "status_code": 200, + "ok": true, + "elapsed_ms": 6100, + "reply_type": "factual", + "trace_id": "address-WsYHaBcD_-", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "bank_operations_by_contract", + "actual_intent": "bank_operations_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 56, + "id": "S056", + "question": "по контракту 15/24 платежки", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-s056", + "status_code": 200, + "ok": true, + "elapsed_ms": 6123, + "reply_type": "factual", + "trace_id": "address-T35-SOepYt", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "bank_operations_by_contract", + "actual_intent": "bank_operations_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 57, + "id": "S057", + "question": "покажи сальдо по счету 60 за 2020", + "session": "chain_balance_60", + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-chain_balance_60", + "status_code": 200, + "ok": true, + "elapsed_ms": 5984, + "reply_type": "factual", + "trace_id": "address-Iarv5TaEtV", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 138.\nСумма по отобранным движениям: 24061597.5.\n1. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 900000\n2. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 144749\n3. 2020-11-26T12:00:02Z | Списание с расчетного счета 00000000276 от 26.11.2020 12:00:02 | 60.01 / 51 | 524730.5\n4. 2020-11-26T12:00:02Z | Списание с расчетного счета 00000000276 от 26.11.2020 12:00:02 | 60.01 / 51 | 210770.5", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 58, + "id": "S058", + "question": "а теперь только май 2020", + "session": "chain_balance_60", + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-chain_balance_60", + "status_code": 200, + "ok": true, + "elapsed_ms": 917, + "reply_type": "factual", + "trace_id": "address-mJELyupS27", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 6.\nСумма по отобранным движениям: 849499.\n1. 2020-05-22T10:14:43Z | Списание с расчетного счета 00000000148 от 22.05.2020 10:14:43 | 60.02 / 51 | 142299\n2. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 75367\n3. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 211833\n4. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 187967", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 59, + "id": "S059", + "question": "ок, теперь 2020.05", + "session": "chain_balance_60", + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-chain_balance_60", + "status_code": 200, + "ok": true, + "elapsed_ms": 1005, + "reply_type": "factual", + "trace_id": "address-R-8a5ZavXn", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 6.\nСумма по отобранным движениям: 849499.\n1. 2020-05-22T10:14:43Z | Списание с расчетного счета 00000000148 от 22.05.2020 10:14:43 | 60.02 / 51 | 142299\n2. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 75367\n3. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 211833\n4. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 187967", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 60, + "id": "S060", + "question": "теперь на 2020-07-31", + "session": "chain_balance_60", + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-chain_balance_60", + "status_code": 200, + "ok": true, + "elapsed_ms": 1019, + "reply_type": "factual", + "trace_id": "address-XPL4UQovLO", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 6.\nСумма по отобранным движениям: 271400.\n1. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400\n2. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600\n3. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400\n4. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 61, + "id": "X001", + "question": "свк доки кинь за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-x001", + "status_code": 200, + "ok": true, + "elapsed_ms": 8428, + "reply_type": "partial_coverage", + "trace_id": "address-e4YURhq0Xp", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 62, + "id": "X002", + "question": "по свк все документы за 20й год", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-x002", + "status_code": 200, + "ok": true, + "elapsed_ms": 6797, + "reply_type": "factual", + "trace_id": "address-0_-G38DJoq", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 63, + "id": "X003", + "question": "пж вывали доки контрагент свк 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-x003", + "status_code": 200, + "ok": true, + "elapsed_ms": 6097, + "reply_type": "factual", + "trace_id": "address-dGEsIvrWF5", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 64, + "id": "X004", + "question": "svk poka docy za 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-x004", + "status_code": 200, + "ok": true, + "elapsed_ms": 1037, + "reply_type": "factual", + "trace_id": "address-7VA1_HUGsE", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_without_llm", + "fallback_rule_hit": "documents_counterparty_year_rewrite", + "error_code": null, + "error_message": null + }, + { + "index": 65, + "id": "X005", + "question": "какие доки по компании свк за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-x005", + "status_code": 200, + "ok": true, + "elapsed_ms": 6137, + "reply_type": "factual", + "trace_id": "address-AH3ZYVY2xT", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 66, + "id": "X006", + "question": "бля покаж свк документы 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-x006", + "status_code": 200, + "ok": true, + "elapsed_ms": 8412, + "reply_type": "partial_coverage", + "trace_id": "address-TpCopJQCR1", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 67, + "id": "X007", + "question": "свк банк операции за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-x007", + "status_code": 200, + "ok": true, + "elapsed_ms": 9067, + "reply_type": "partial_coverage", + "trace_id": "address-bzPbwG1Hwb", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 68, + "id": "X008", + "question": "по свк выписку банка за 2020 выведи", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-x008", + "status_code": 200, + "ok": true, + "elapsed_ms": 8064, + "reply_type": "partial_coverage", + "trace_id": "address-Uyi_pzoGEf", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 69, + "id": "X009", + "question": "свк платежки за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-x009", + "status_code": 200, + "ok": true, + "elapsed_ms": 9116, + "reply_type": "partial_coverage", + "trace_id": "address-R5C8IHhQUl", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 70, + "id": "X010", + "question": "bank ops svk 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-x010", + "status_code": 200, + "ok": true, + "elapsed_ms": 860, + "reply_type": "factual", + "trace_id": "address-YbZ-jtHrb-", + "assistant_reply": "Собран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 1.\n1. 2020-12-16T16:20:51Z | Списание с расчетного счета 00000000293 от 16.12.2020 16:20:51 | 0 / 0 | 60 | аналитика: СБЕРБАНК, ПАО", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_without_llm", + "fallback_rule_hit": "bank_operations_counterparty_year_rewrite", + "error_code": null, + "error_message": null + }, + { + "index": 71, + "id": "X011", + "question": "транзакции по свк за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-x011", + "status_code": 200, + "ok": true, + "elapsed_ms": 1007, + "reply_type": "factual", + "trace_id": "address-eBNZOHNT-C", + "assistant_reply": "Собран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 72, + "id": "X012", + "question": "ёпт по свк че по банку 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-x012", + "status_code": 200, + "ok": true, + "elapsed_ms": 9401, + "reply_type": "partial_coverage", + "trace_id": "address-D6FRkmCnI3", + "assistant_reply": "Для точного адресного поиска не хватает обязательного якоря.\nПричина: якорь контрагента/договора не найден в материализованных live-строках.\nЧто нужно уточнить: уточните контрагента точным именем или добавьте ИНН/договор.", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "missing_anchor", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 73, + "id": "X013", + "question": "остаток по 60.01 на 2020-07-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-x013", + "status_code": 200, + "ok": true, + "elapsed_ms": 5794, + "reply_type": "factual", + "trace_id": "address-LkbjrD-FEp", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 5.\nСумма по отобранным движениям: 216200.\n1. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400\n2. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600\n3. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400\n4. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 74, + "id": "X014", + "question": "сальдо 60.01 на 31.07.2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-x014", + "status_code": 200, + "ok": true, + "elapsed_ms": 5182, + "reply_type": "partial_coverage", + "trace_id": "address-UepRSkRgks", + "assistant_reply": "Для точного адресного поиска не хватает обязательного якоря.\nПричина: не хватает обязательных фильтров.\nЧто нужно уточнить: уточните: account.", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "skipped", + "limited_reason_category": "missing_anchor", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_drop", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 75, + "id": "X015", + "question": "что на счете 60 на 2020.05", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-x015", + "status_code": 200, + "ok": true, + "elapsed_ms": 6127, + "reply_type": "factual", + "trace_id": "address-4FlDyFh5_Z", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 138.\nСумма по отобранным движениям: 24061597.5.\n1. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 900000\n2. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 144749\n3. 2020-11-26T12:00:02Z | Списание с расчетного счета 00000000276 от 26.11.2020 12:00:02 | 60.01 / 51 | 524730.5\n4. 2020-11-26T12:00:02Z | Списание с расчетного счета 00000000276 от 26.11.2020 12:00:02 | 60.01 / 51 | 210770.5", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 76, + "id": "X016", + "question": "дай остаток 62.01 на 2020 май", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-x016", + "status_code": 200, + "ok": true, + "elapsed_ms": 6009, + "reply_type": "factual", + "trace_id": "address-6CvvzLpBK7", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 2.\nСумма по отобранным движениям: 1530000.\n1. 2020-05-18T12:00:01Z | Реализация товаров и услуг 00000000002 от 18.05.2020 12:00:01 | 62.01 / 90.01.1 | 765000\n2. 2020-05-18T12:00:01Z | Реализация товаров и услуг 00000000002 от 18.05.2020 12:00:01 | 62.02 / 62.01 | 765000", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 77, + "id": "X017", + "question": "saldo account 60 as of 2020-12-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-x017", + "status_code": 200, + "ok": true, + "elapsed_ms": 6069, + "reply_type": "partial_coverage", + "trace_id": "address-x5Y83VcjLX", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "no_raw_rows", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 78, + "id": "X018", + "question": "плиз остаток по счету 51 на 2020-06-30", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-x018", + "status_code": 200, + "ok": true, + "elapsed_ms": 6116, + "reply_type": "factual", + "trace_id": "address-Gcb9FtrZsg", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 30.\nСумма по отобранным движениям: 4579658.75.\n1. 2020-06-30T12:00:07Z | Списание с расчетного счета 00000000180 от 30.06.2020 12:00:07 | 66.03 / 51 | 35000\n2. 2020-06-30T12:00:05Z | Списание с расчетного счета 00000000178 от 30.06.2020 12:00:05 | 60.01 / 51 | 15800\n3. 2020-06-30T12:00:04Z | Списание с расчетного счета 00000000177 от 30.06.2020 12:00:04 | 70 / 51 | 50\n4. 2020-06-30T12:00:03Z | Списание с расчетного счета 00000000176 от 30.06.2020 12:00:03 | 91.02 / 51 | 35", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 79, + "id": "X019", + "question": "скока по 60.02 на конец 2020-12", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-x019", + "status_code": 200, + "ok": true, + "elapsed_ms": 13, + "reply_type": "partial_coverage", + "trace_id": "address-2TLT8kQRef", + "assistant_reply": "Для точного адресного поиска не хватает обязательного якоря.\nПричина: не хватает обязательных фильтров.\nЧто нужно уточнить: уточните: account.", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "skipped", + "limited_reason_category": "missing_anchor", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 80, + "id": "X020", + "question": "бля сальдо 60.01 на 2020-05-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-x020", + "status_code": 200, + "ok": true, + "elapsed_ms": 6085, + "reply_type": "factual", + "trace_id": "address-9CAOMA-XM2", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 5.\nСумма по отобранным движениям: 707200.\n1. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 75367\n2. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 211833\n3. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 187967\n4. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 162033", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 81, + "id": "X021", + "question": "раскрой остаток 60.01 по документам на конец июля 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-x021", + "status_code": 200, + "ok": true, + "elapsed_ms": 5754, + "reply_type": "partial_coverage", + "trace_id": "address-GfxRVaNM7L", + "assistant_reply": "Для точного адресного поиска не хватает обязательного якоря.\nПричина: не хватает обязательных фильтров.\nЧто нужно уточнить: уточните: account.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "skipped", + "limited_reason_category": "missing_anchor", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 82, + "id": "X022", + "question": "доки под остатком 60.01 на 2020-07-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-x022", + "status_code": 200, + "ok": true, + "elapsed_ms": 5712, + "reply_type": "partial_coverage", + "trace_id": "address-cGjhbAInJL", + "assistant_reply": "Для точного адресного поиска не хватает обязательного якоря.\nПричина: не хватает обязательных фильтров.\nЧто нужно уточнить: уточните: account.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "skipped", + "limited_reason_category": "missing_anchor", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 83, + "id": "X023", + "question": "из чего остаток 60.01 на 2020-07-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-x023", + "status_code": 200, + "ok": true, + "elapsed_ms": 6804, + "reply_type": "factual", + "trace_id": "address-5GAdxVyM3M", + "assistant_reply": "Собран drilldown документов, формирующих остаток по счету на указанную дату.\nДокументных строк отобрано: 5.\nСумма по отобранным движениям: 216200.\n1. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400\n2. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600\n3. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400\n4. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200\n5. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 7600\nМожно уточнить выборку по контрагенту, договору или периоду.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 84, + "id": "X024", + "question": "какие документы формируют остаток по 60.01 на 2020-07-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-x024", + "status_code": 200, + "ok": true, + "elapsed_ms": 6134, + "reply_type": "factual", + "trace_id": "address-aAOqjKhi_N", + "assistant_reply": "Собран drilldown документов, формирующих остаток по счету на указанную дату.\nДокументных строк отобрано: 5.\nСумма по отобранным движениям: 216200.\n1. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400\n2. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600\n3. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400\n4. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200\n5. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 7600\nМожно уточнить выборку по контрагенту, договору или периоду.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 85, + "id": "X025", + "question": "docs forming balance 60.01 as of 2020-07-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-x025", + "status_code": 200, + "ok": true, + "elapsed_ms": 7103, + "reply_type": "factual", + "trace_id": "address-0q4jMEV4Zz", + "assistant_reply": "Собран drilldown документов, формирующих остаток по счету на указанную дату.\nДокументных строк отобрано: 5.\nСумма по отобранным движениям: 216200.\n1. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400\n2. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600\n3. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400\n4. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200\n5. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 7600\nМожно уточнить выборку по контрагенту, договору или периоду.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 86, + "id": "X026", + "question": "раскидай остаток 62.01 по докам на 2020-12-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-x026", + "status_code": 200, + "ok": true, + "elapsed_ms": 5965, + "reply_type": "partial_coverage", + "trace_id": "address-3usFB-eoyW", + "assistant_reply": "Для точного адресного поиска не хватает обязательного якоря.\nПричина: не хватает обязательных фильтров.\nЧто нужно уточнить: уточните: account.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "skipped", + "limited_reason_category": "missing_anchor", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 87, + "id": "X027", + "question": "по счету 51 раскрой остаток документами на 2020-06-30", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-x027", + "status_code": 200, + "ok": true, + "elapsed_ms": 6232, + "reply_type": "factual", + "trace_id": "address-jB431xr7XB", + "assistant_reply": "Собран drilldown документов, формирующих остаток по счету на указанную дату.\nДокументных строк отобрано: 3.\nСумма по отобранным движениям: 2190524.88.\n1. 2020-06-16T12:00:02Z | Поступление на расчетный счет 00000000026 от 16.06.2020 12:00:02 | 51 / 60.02 | 250000\n2. 2020-06-03T00:00:02Z | Поступление на расчетный счет 00000000025 от 03.06.2020 0:00:02 | 51 / 62.02 | 1642764.88\n3. 2020-06-03T00:00:01Z | Поступление на расчетный счет 00000000024 от 03.06.2020 0:00:01 | 51 / 62.02 | 297760\nМожно уточнить выборку по контрагенту, договору или периоду.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 88, + "id": "X028", + "question": "бля из чего состоит остаток по 60.01 на 2020-05-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-x028", + "status_code": 200, + "ok": true, + "elapsed_ms": 6037, + "reply_type": "partial_coverage", + "trace_id": "address-3f6r5KP5yX", + "assistant_reply": "Для точного адресного поиска не хватает обязательного якоря.\nПричина: не хватает обязательных фильтров.\nЧто нужно уточнить: уточните: account.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "skipped", + "limited_reason_category": "missing_anchor", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 89, + "id": "X029", + "question": "доки по договору 15/24 за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-x029", + "status_code": 200, + "ok": true, + "elapsed_ms": 7354, + "reply_type": "factual", + "trace_id": "address-hiS5aT3kPl", + "assistant_reply": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-08-31T15:00:06Z | Поступление товаров и услуг 00000000024 от 31.08.2020 15:00:06 | 19.04 / 76.05 | 233.33\n2. 2020-08-31T15:00:06Z | Поступление товаров и услуг 00000000024 от 31.08.2020 15:00:06 | 44.01 / 76.05 | 1166.67", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 90, + "id": "X030", + "question": "покажи документы контракт 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-x030", + "status_code": 200, + "ok": true, + "elapsed_ms": 6197, + "reply_type": "factual", + "trace_id": "address-75ul_UVWG0", + "assistant_reply": "Документный фильтр в live дал пустой набор; показываю связанные банковские операции по договору.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 91, + "id": "X031", + "question": "docs by contract 15/24 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-x031", + "status_code": 200, + "ok": true, + "elapsed_ms": 8038, + "reply_type": "factual", + "trace_id": "address-dS2KSv7h_V", + "assistant_reply": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-08-31T15:00:06Z | Поступление товаров и услуг 00000000024 от 31.08.2020 15:00:06 | 19.04 / 76.05 | 233.33\n2. 2020-08-31T15:00:06Z | Поступление товаров и услуг 00000000024 от 31.08.2020 15:00:06 | 44.01 / 76.05 | 1166.67", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 92, + "id": "X032", + "question": "по дог 15/24 какие документы", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-x032", + "status_code": 200, + "ok": true, + "elapsed_ms": 6219, + "reply_type": "factual", + "trace_id": "address-hDqeDttB6-", + "assistant_reply": "Документный фильтр в live дал пустой набор; показываю связанные банковские операции по договору.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 93, + "id": "X033", + "question": "договор 15/24 выведи доки", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-x033", + "status_code": 200, + "ok": true, + "elapsed_ms": 8009, + "reply_type": "partial_coverage", + "trace_id": "address-KnS5QSYg3I", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 94, + "id": "X034", + "question": "нах покажи документы по 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-x034", + "status_code": 200, + "ok": true, + "elapsed_ms": 6104, + "reply_type": "factual", + "trace_id": "address-J_GKufSm2g", + "assistant_reply": "Документный фильтр в live дал пустой набор; показываю связанные банковские операции по договору.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 95, + "id": "X035", + "question": "банк операции по договору 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-x035", + "status_code": 200, + "ok": true, + "elapsed_ms": 6110, + "reply_type": "factual", + "trace_id": "address-hyXwr4XPG4", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "bank_operations_by_contract", + "actual_intent": "bank_operations_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 96, + "id": "X036", + "question": "платежки по дог 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-x036", + "status_code": 200, + "ok": true, + "elapsed_ms": 6121, + "reply_type": "factual", + "trace_id": "address-PhW3HTIosH", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "bank_operations_by_contract", + "actual_intent": "bank_operations_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 97, + "id": "X037", + "question": "выписка по контракту 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-x037", + "status_code": 200, + "ok": true, + "elapsed_ms": 6013, + "reply_type": "factual", + "trace_id": "address-pgjezyJlxO", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "bank_operations_by_contract", + "actual_intent": "bank_operations_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 98, + "id": "X038", + "question": "bank ops by contract 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-x038", + "status_code": 200, + "ok": true, + "elapsed_ms": 7126, + "reply_type": "partial_coverage", + "trace_id": "address-ihgrX7cuEY", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "bank_operations_by_contract", + "actual_intent": "bank_operations_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 99, + "id": "X039", + "question": "покажи банк опер по дог 15/24 пж", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-x039", + "status_code": 200, + "ok": true, + "elapsed_ms": 7160, + "reply_type": "factual", + "trace_id": "address-Y9y9uD4eZl", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "bank_operations_by_contract", + "actual_intent": "bank_operations_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 100, + "id": "X040", + "question": "епт транзакции договор 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-x040", + "status_code": 200, + "ok": true, + "elapsed_ms": 7140, + "reply_type": "factual", + "trace_id": "address-dISC4sgoyR", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "bank_operations_by_contract", + "actual_intent": "bank_operations_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 101, + "id": "X041", + "question": "покажи сальдо по счету 60 за 2020", + "session": "chain_balance_60_extra", + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-chain_balance_60_extra", + "status_code": 200, + "ok": true, + "elapsed_ms": 5870, + "reply_type": "factual", + "trace_id": "address-rYIStcOgc_", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 138.\nСумма по отобранным движениям: 24061597.5.\n1. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 900000\n2. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 144749\n3. 2020-11-26T12:00:02Z | Списание с расчетного счета 00000000276 от 26.11.2020 12:00:02 | 60.01 / 51 | 524730.5\n4. 2020-11-26T12:00:02Z | Списание с расчетного счета 00000000276 от 26.11.2020 12:00:02 | 60.01 / 51 | 210770.5", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 102, + "id": "X042", + "question": "а теперь только май 2020", + "session": "chain_balance_60_extra", + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12-chain_balance_60_extra", + "status_code": 200, + "ok": true, + "elapsed_ms": 983, + "reply_type": "factual", + "trace_id": "address-AwvHH2b4hO", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 6.\nСумма по отобранным движениям: 849499.\n1. 2020-05-22T10:14:43Z | Списание с расчетного счета 00000000148 от 22.05.2020 10:14:43 | 60.02 / 51 | 142299\n2. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 75367\n3. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 211833\n4. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 187967", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + } + ] +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12/run_summary.json b/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12/run_summary.json new file mode 100644 index 0000000..ce08dc1 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12/run_summary.json @@ -0,0 +1,54 @@ +{ + "run_id": "2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-31-12", + "generated_at": "2026-04-02T10:41:27", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\address_slang_stress_full_2026-04-02.json", + "backend_url": "http://127.0.0.1:8787/api/assistant/message", + "llm_provider": "local", + "llm_model": "qwen2.5-14b-instruct-1m", + "llm_base_url": "http://127.0.0.1:1234", + "totals": { + "questions_total": 102, + "ok_200_count": 102, + "semantic_pass_count": 101, + "semantic_pass_rate": 0.9902, + "factual_count": 69, + "partial_coverage_count": 33, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_applied_count": 76, + "avg_elapsed_ms": 6031.8 + }, + "distributions": { + "reply_type": { + "partial_coverage": 33, + "factual": 69 + }, + "actual_intent": { + "list_documents_by_counterparty": 18, + "bank_operations_by_counterparty": 16, + "account_balance_snapshot": 25, + "unknown": 1, + "documents_forming_balance": 16, + "list_documents_by_contract": 14, + "bank_operations_by_contract": 12 + }, + "actual_mode": { + "address_query": 102 + }, + "mcp_call_status": { + "materialized_but_not_anchor_matched": 17, + "matched_non_empty": 69, + "skipped": 10, + "no_raw_rows": 3, + "materialized_but_filtered_out_by_recipe": 2, + "error": 1 + }, + "limited_reason_category": { + "empty_match": 19, + "missing_anchor": 10, + "unsupported": 1, + "recipe_visibility_gap": 2, + "execution_error": 1 + } + } +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26/README.md b/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26/README.md new file mode 100644 index 0000000..24224c1 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26/README.md @@ -0,0 +1,23 @@ +# 2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26 + +Generated at: 2026-04-02T10:52:44 +Questions file: X:\1C\NDC_1C\docs\ADDRESS\question_sets\address_slang_stress_full_2026-04-02.json +Backend URL: http://127.0.0.1:8787/api/assistant/message +LLM: local / qwen2.5-14b-instruct-1m @ http://127.0.0.1:1234 + +## Totals +- questions_total: 102 +- ok_200_count: 102 +- semantic_pass_count: 102 +- semantic_pass_rate: 1.0 +- factual_count: 69 +- partial_coverage_count: 33 +- clarification_required_count: 0 +- http_error_count: 0 +- llm_decomposition_applied_count: 77 +- avg_elapsed_ms: 6060.8 + +## Files +- run_summary.json +- full_live_results.json +- failures_only.json diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26/failures_only.json b/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26/failures_only.json new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26/failures_only.json @@ -0,0 +1 @@ +[] diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26/full_live_results.json b/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26/full_live_results.json new file mode 100644 index 0000000..544a89b --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26/full_live_results.json @@ -0,0 +1,2812 @@ +{ + "run_id": "2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26", + "generated_at": "2026-04-02T10:52:44", + "summary": { + "run_id": "2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26", + "generated_at": "2026-04-02T10:52:44", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\address_slang_stress_full_2026-04-02.json", + "backend_url": "http://127.0.0.1:8787/api/assistant/message", + "llm_provider": "local", + "llm_model": "qwen2.5-14b-instruct-1m", + "llm_base_url": "http://127.0.0.1:1234", + "totals": { + "questions_total": 102, + "ok_200_count": 102, + "semantic_pass_count": 102, + "semantic_pass_rate": 1.0, + "factual_count": 69, + "partial_coverage_count": 33, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_applied_count": 77, + "avg_elapsed_ms": 6060.8 + }, + "distributions": { + "reply_type": { + "partial_coverage": 33, + "factual": 69 + }, + "actual_intent": { + "list_documents_by_counterparty": 18, + "bank_operations_by_counterparty": 16, + "account_balance_snapshot": 26, + "documents_forming_balance": 16, + "list_documents_by_contract": 14, + "bank_operations_by_contract": 12 + }, + "actual_mode": { + "address_query": 102 + }, + "mcp_call_status": { + "materialized_but_not_anchor_matched": 19, + "matched_non_empty": 69, + "skipped": 8, + "no_raw_rows": 3, + "materialized_but_filtered_out_by_recipe": 2, + "error": 1 + }, + "limited_reason_category": { + "empty_match": 21, + "missing_anchor": 9, + "recipe_visibility_gap": 2, + "execution_error": 1 + } + } + }, + "rows": [ + { + "index": 1, + "id": "S001", + "question": "свк доки за 2020 покаж пж", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-s001", + "status_code": 200, + "ok": true, + "elapsed_ms": 8811, + "reply_type": "partial_coverage", + "trace_id": "address-3i8Lgqrw6x", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 2, + "id": "S002", + "question": "покеж все доки по свк за 20 год", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-s002", + "status_code": 200, + "ok": true, + "elapsed_ms": 6865, + "reply_type": "factual", + "trace_id": "address-cs4FBLEu4r", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 3, + "id": "S003", + "question": "дай список документов по свк за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-s003", + "status_code": 200, + "ok": true, + "elapsed_ms": 6067, + "reply_type": "factual", + "trace_id": "address-VxE_1TClr8", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 4, + "id": "S004", + "question": "какие у свк есть доки за 2020?", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-s004", + "status_code": 200, + "ok": true, + "elapsed_ms": 8409, + "reply_type": "partial_coverage", + "trace_id": "address-1xMpewK1to", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 5, + "id": "S005", + "question": "че по свк по докам за 2020 год", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-s005", + "status_code": 200, + "ok": true, + "elapsed_ms": 747, + "reply_type": "factual", + "trace_id": "address-Z2pjL9-U_p", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_without_llm", + "fallback_rule_hit": "documents_counterparty_year_rewrite", + "error_code": null, + "error_message": null + }, + { + "index": 6, + "id": "S006", + "question": "ёпт покажи доки по свк за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-s006", + "status_code": 200, + "ok": true, + "elapsed_ms": 6061, + "reply_type": "factual", + "trace_id": "address-TcRNfbXuUF", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 7, + "id": "S007", + "question": "бля, доки свк 2020 вывали", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-s007", + "status_code": 200, + "ok": true, + "elapsed_ms": 7158, + "reply_type": "factual", + "trace_id": "address-DcjBIxqBy4", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 8, + "id": "S008", + "question": "svk docs for 2020 please", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-s008", + "status_code": 200, + "ok": true, + "elapsed_ms": 6068, + "reply_type": "factual", + "trace_id": "address-_yChtFWsIE", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 9, + "id": "S009", + "question": "docs by counterparty svk year 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-s009", + "status_code": 200, + "ok": true, + "elapsed_ms": 8420, + "reply_type": "partial_coverage", + "trace_id": "address-Pu_OOSFfGI", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 10, + "id": "S010", + "question": "по контрагенту свк покаж документы за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-s010", + "status_code": 200, + "ok": true, + "elapsed_ms": 5816, + "reply_type": "factual", + "trace_id": "address-K-yFCO2VHj", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 11, + "id": "S011", + "question": "плс доки по свк 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-s011", + "status_code": 200, + "ok": true, + "elapsed_ms": 9400, + "reply_type": "partial_coverage", + "trace_id": "address-k7LleNz2Td", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 12, + "id": "S012", + "question": "свк док за 2020 гони", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-s012", + "status_code": 200, + "ok": true, + "elapsed_ms": 745, + "reply_type": "factual", + "trace_id": "address-YGKvNB5V-w", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_without_llm", + "fallback_rule_hit": "documents_counterparty_year_rewrite", + "error_code": null, + "error_message": null + }, + { + "index": 13, + "id": "S013", + "question": "по свк банковские операции за 2020 покаж", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-s013", + "status_code": 200, + "ok": true, + "elapsed_ms": 6102, + "reply_type": "factual", + "trace_id": "address-KzL17gZzh1", + "assistant_reply": "Собран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 14, + "id": "S014", + "question": "свк выписка банка 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-s014", + "status_code": 200, + "ok": true, + "elapsed_ms": 7091, + "reply_type": "factual", + "trace_id": "address-4jMH50uy_G", + "assistant_reply": "Собран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 15, + "id": "S015", + "question": "платежи по свк за 2020 выведи", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-s015", + "status_code": 200, + "ok": true, + "elapsed_ms": 7128, + "reply_type": "factual", + "trace_id": "address-bTj_sPIhu7", + "assistant_reply": "Собран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 16, + "id": "S016", + "question": "оплаты по свк за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-s016", + "status_code": 200, + "ok": true, + "elapsed_ms": 6060, + "reply_type": "factual", + "trace_id": "address-WQ1-eVeFUA", + "assistant_reply": "Собран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 17, + "id": "S017", + "question": "свк банк опер за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-s017", + "status_code": 200, + "ok": true, + "elapsed_ms": 6146, + "reply_type": "factual", + "trace_id": "address-tikRrJuYn1", + "assistant_reply": "Собран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 18, + "id": "S018", + "question": "че у свк по банку за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-s018", + "status_code": 200, + "ok": true, + "elapsed_ms": 8359, + "reply_type": "partial_coverage", + "trace_id": "address-_kFFpMD_yg", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 19, + "id": "S019", + "question": "свк списания/поступления за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-s019", + "status_code": 200, + "ok": true, + "elapsed_ms": 6113, + "reply_type": "partial_coverage", + "trace_id": "address-3jS664n3tS", + "assistant_reply": "Для точного адресного поиска не хватает обязательного якоря.\nПричина: не хватает обязательных фильтров.\nЧто нужно уточнить: уточните: counterparty.", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "skipped", + "limited_reason_category": "missing_anchor", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 20, + "id": "S020", + "question": "bank ops by svk for 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-s020", + "status_code": 200, + "ok": true, + "elapsed_ms": 735, + "reply_type": "factual", + "trace_id": "address-gMDFN0a4s3", + "assistant_reply": "Собран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 1.\n1. 2020-12-16T16:20:51Z | Списание с расчетного счета 00000000293 от 16.12.2020 16:20:51 | 0 / 0 | 60 | аналитика: СБЕРБАНК, ПАО", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_without_llm", + "fallback_rule_hit": "bank_operations_counterparty_year_rewrite", + "error_code": null, + "error_message": null + }, + { + "index": 21, + "id": "S021", + "question": "transactions by counterparty svk 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-s021", + "status_code": 200, + "ok": true, + "elapsed_ms": 6100, + "reply_type": "factual", + "trace_id": "address-zxvF3zSeHI", + "assistant_reply": "Собран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 22, + "id": "S022", + "question": "бля, по свк банковские платежки 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-s022", + "status_code": 200, + "ok": true, + "elapsed_ms": 7095, + "reply_type": "factual", + "trace_id": "address-6oOoJ3yHJa", + "assistant_reply": "Собран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 23, + "id": "S023", + "question": "сальдо по счету 60.01 на дату 2020-07-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-s023", + "status_code": 200, + "ok": true, + "elapsed_ms": 6111, + "reply_type": "factual", + "trace_id": "address-71nKkyhGXV", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 5.\nСумма по отобранным движениям: 216200.\n1. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400\n2. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600\n3. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400\n4. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 24, + "id": "S024", + "question": "остаток по счету 60.01 на 2020.05", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-s024", + "status_code": 200, + "ok": true, + "elapsed_ms": 5073, + "reply_type": "factual", + "trace_id": "address-9sk3CWc9gK", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 5.\nСумма по отобранным движениям: 707200.\n1. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 75367\n2. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 211833\n3. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 187967\n4. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 162033", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 25, + "id": "S025", + "question": "покажи остаток по 60.01 за май 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-s025", + "status_code": 200, + "ok": true, + "elapsed_ms": 6088, + "reply_type": "factual", + "trace_id": "address-0_3Wto96zt", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 5.\nСумма по отобранным движениям: 707200.\n1. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 75367\n2. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 211833\n3. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 187967\n4. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 162033", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 26, + "id": "S026", + "question": "счет 60 остаток на май 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-s026", + "status_code": 200, + "ok": true, + "elapsed_ms": 6114, + "reply_type": "factual", + "trace_id": "address-Z5OC6NBjXW", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 6.\nСумма по отобранным движениям: 849499.\n1. 2020-05-22T10:14:43Z | Списание с расчетного счета 00000000148 от 22.05.2020 10:14:43 | 60.02 / 51 | 142299\n2. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 75367\n3. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 211833\n4. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 187967", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 27, + "id": "S027", + "question": "баланс account 60.01 as of 2020-07-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-s027", + "status_code": 200, + "ok": true, + "elapsed_ms": 6086, + "reply_type": "factual", + "trace_id": "address-Cpv33uSGiW", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 5.\nСумма по отобранным движениям: 216200.\n1. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400\n2. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600\n3. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400\n4. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 28, + "id": "S028", + "question": "60.01 saldo на 31.07.2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-s028", + "status_code": 200, + "ok": true, + "elapsed_ms": 6133, + "reply_type": "factual", + "trace_id": "address-pHWVHOq5TS", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 5.\nСумма по отобранным движениям: 216200.\n1. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400\n2. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600\n3. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400\n4. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 29, + "id": "S029", + "question": "сколько на счете 60 на конец 2020-05", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-s029", + "status_code": 200, + "ok": true, + "elapsed_ms": 5071, + "reply_type": "factual", + "trace_id": "address-PX-wDFLH9g", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 6.\nСумма по отобранным движениям: 849499.\n1. 2020-05-22T10:14:43Z | Списание с расчетного счета 00000000148 от 22.05.2020 10:14:43 | 60.02 / 51 | 142299\n2. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 75367\n3. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 211833\n4. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 187967", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 30, + "id": "S030", + "question": "дай остаток 60.02 на 2020-12-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-s030", + "status_code": 200, + "ok": true, + "elapsed_ms": 6097, + "reply_type": "factual", + "trace_id": "address-lHtuS5tV7i", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 21.\nСумма по отобранным движениям: 6296596.\n1. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 900000\n2. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 144749\n3. 2020-11-20T12:00:00Z | Поступление товаров и услуг 00000000030 от 20.11.2020 12:00:00 | 60.01 / 60.02 | 8700\n4. 2020-11-19T12:00:02Z | Списание с расчетного счета 00000000270 от 19.11.2020 12:00:02 | 60.02 / 51 | 900000", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 31, + "id": "S031", + "question": "епт, сальдо по счету 62.01 на 2020-12-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-s031", + "status_code": 200, + "ok": true, + "elapsed_ms": 6097, + "reply_type": "partial_coverage", + "trace_id": "address-Stacwml7TS", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "no_raw_rows", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 32, + "id": "S032", + "question": "плс остаток по счету 51 на 2020-06-30", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-s032", + "status_code": 200, + "ok": true, + "elapsed_ms": 6144, + "reply_type": "factual", + "trace_id": "address-FWnpDU7K0a", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 30.\nСумма по отобранным движениям: 4579658.75.\n1. 2020-06-30T12:00:07Z | Списание с расчетного счета 00000000180 от 30.06.2020 12:00:07 | 66.03 / 51 | 35000\n2. 2020-06-30T12:00:05Z | Списание с расчетного счета 00000000178 от 30.06.2020 12:00:05 | 60.01 / 51 | 15800\n3. 2020-06-30T12:00:04Z | Списание с расчетного счета 00000000177 от 30.06.2020 12:00:04 | 70 / 51 | 50\n4. 2020-06-30T12:00:03Z | Списание с расчетного счета 00000000176 от 30.06.2020 12:00:03 | 91.02 / 51 | 35", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 33, + "id": "S033", + "question": "как там по счету 60.01 на 2020.07?", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-s033", + "status_code": 200, + "ok": true, + "elapsed_ms": 6064, + "reply_type": "factual", + "trace_id": "address-bZFMj_jamO", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 5.\nСумма по отобранным движениям: 216200.\n1. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400\n2. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600\n3. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400\n4. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_drop", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 34, + "id": "S034", + "question": "сальдо 60 на 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-s034", + "status_code": 200, + "ok": true, + "elapsed_ms": 6131, + "reply_type": "factual", + "trace_id": "address-t_0f21XoCZ", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 138.\nСумма по отобранным движениям: 24061597.5.\n1. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 900000\n2. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 144749\n3. 2020-11-26T12:00:02Z | Списание с расчетного счета 00000000276 от 26.11.2020 12:00:02 | 60.01 / 51 | 524730.5\n4. 2020-11-26T12:00:02Z | Списание с расчетного счета 00000000276 от 26.11.2020 12:00:02 | 60.01 / 51 | 210770.5", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 35, + "id": "S035", + "question": "какие документы формируют остаток по счету 60.01 на 2020-07-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-s035", + "status_code": 200, + "ok": true, + "elapsed_ms": 6009, + "reply_type": "factual", + "trace_id": "address-s7wqTb6Fnm", + "assistant_reply": "Собран drilldown документов, формирующих остаток по счету на указанную дату.\nДокументных строк отобрано: 5.\nСумма по отобранным движениям: 216200.\n1. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400\n2. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600\n3. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400\n4. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200\n5. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 7600\nМожно уточнить выборку по контрагенту, договору или периоду.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 36, + "id": "S036", + "question": "из чего состоит остаток по счету 60 на 2020.05", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-s036", + "status_code": 200, + "ok": true, + "elapsed_ms": 6157, + "reply_type": "partial_coverage", + "trace_id": "address-Ul_ZTWAc8h", + "assistant_reply": "Текущий live recipe не дает нужную видимость данных для этого сценария.\nПричина: строки по якорю найдены, но отфильтрованы intent-specific recipe.\nЧто нужно уточнить: сузьте период, уточните контрагента или документный тип.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_filtered_out_by_recipe", + "limited_reason_category": "recipe_visibility_gap", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 37, + "id": "S037", + "question": "раскрой остаток 60.01 по документам на конец июля 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-s037", + "status_code": 200, + "ok": true, + "elapsed_ms": 5696, + "reply_type": "partial_coverage", + "trace_id": "address-Of_2o4igaP", + "assistant_reply": "Для точного адресного поиска не хватает обязательного якоря.\nПричина: не хватает обязательных фильтров.\nЧто нужно уточнить: уточните: account.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "skipped", + "limited_reason_category": "missing_anchor", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 38, + "id": "S038", + "question": "доки под остатком 60.01 на 2020-07-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-s038", + "status_code": 200, + "ok": true, + "elapsed_ms": 5902, + "reply_type": "partial_coverage", + "trace_id": "address-ws3gZSrpl8", + "assistant_reply": "Для точного адресного поиска не хватает обязательного якоря.\nПричина: не хватает обязательных фильтров.\nЧто нужно уточнить: уточните: account.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "skipped", + "limited_reason_category": "missing_anchor", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 39, + "id": "S039", + "question": "documents forming balance for account 60.01 as of 2020-07-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-s039", + "status_code": 200, + "ok": true, + "elapsed_ms": 6693, + "reply_type": "factual", + "trace_id": "address-tw16xOqWU4", + "assistant_reply": "Собран drilldown документов, формирующих остаток по счету на указанную дату.\nДокументных строк отобрано: 5.\nСумма по отобранным движениям: 216200.\n1. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400\n2. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600\n3. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400\n4. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200\n5. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 7600\nМожно уточнить выборку по контрагенту, договору или периоду.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 40, + "id": "S040", + "question": "бля, какие доки формируют остаток 60.01 на 2020-05-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-s040", + "status_code": 200, + "ok": true, + "elapsed_ms": 6103, + "reply_type": "partial_coverage", + "trace_id": "address-voIkKwcGS3", + "assistant_reply": "Текущий live recipe не дает нужную видимость данных для этого сценария.\nПричина: строки по якорю найдены, но отфильтрованы intent-specific recipe.\nЧто нужно уточнить: сузьте период, уточните контрагента или документный тип.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_filtered_out_by_recipe", + "limited_reason_category": "recipe_visibility_gap", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 41, + "id": "S041", + "question": "по счету 62.01 раскрой остаток документами на 2020-12-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-s041", + "status_code": 200, + "ok": true, + "elapsed_ms": 7096, + "reply_type": "partial_coverage", + "trace_id": "address-NdSEJkj-dR", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "no_raw_rows", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 42, + "id": "S042", + "question": "из чего остаток по счету 51 на 2020-06-30", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-s042", + "status_code": 200, + "ok": true, + "elapsed_ms": 6075, + "reply_type": "factual", + "trace_id": "address-fNoxm40Qud", + "assistant_reply": "Собран drilldown документов, формирующих остаток по счету на указанную дату.\nДокументных строк отобрано: 3.\nСумма по отобранным движениям: 2190524.88.\n1. 2020-06-16T12:00:02Z | Поступление на расчетный счет 00000000026 от 16.06.2020 12:00:02 | 51 / 60.02 | 250000\n2. 2020-06-03T00:00:02Z | Поступление на расчетный счет 00000000025 от 03.06.2020 0:00:02 | 51 / 62.02 | 1642764.88\n3. 2020-06-03T00:00:01Z | Поступление на расчетный счет 00000000024 от 03.06.2020 0:00:01 | 51 / 62.02 | 297760\nМожно уточнить выборку по контрагенту, договору или периоду.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 43, + "id": "S043", + "question": "покажи документы по договору 15/24 за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-s043", + "status_code": 200, + "ok": true, + "elapsed_ms": 8384, + "reply_type": "partial_coverage", + "trace_id": "address-DC3OwA8A4X", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 44, + "id": "S044", + "question": "доки по дог. 15/24 за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-s044", + "status_code": 200, + "ok": true, + "elapsed_ms": 9038, + "reply_type": "partial_coverage", + "trace_id": "address-8oWf_7NeQ9", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 45, + "id": "S045", + "question": "какие документы по контракту 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-s045", + "status_code": 200, + "ok": true, + "elapsed_ms": 7229, + "reply_type": "factual", + "trace_id": "address-e4hphF7REY", + "assistant_reply": "Документный фильтр в live дал пустой набор; показываю связанные банковские операции по договору.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 46, + "id": "S046", + "question": "docs by contract 15/24 year 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-s046", + "status_code": 200, + "ok": true, + "elapsed_ms": 9160, + "reply_type": "partial_coverage", + "trace_id": "address-RsYT8eE_Gb", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 47, + "id": "S047", + "question": "бля, покажи по договору 15/24 доки", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-s047", + "status_code": 200, + "ok": true, + "elapsed_ms": 6105, + "reply_type": "factual", + "trace_id": "address-r2kw1nK1tJ", + "assistant_reply": "Документный фильтр в live дал пустой набор; показываю связанные банковские операции по договору.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 48, + "id": "S048", + "question": "договор 15/24 документы", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-s048", + "status_code": 200, + "ok": true, + "elapsed_ms": 6036, + "reply_type": "factual", + "trace_id": "address-YrVnAD7FCI", + "assistant_reply": "Документный фильтр в live дал пустой набор; показываю связанные банковские операции по договору.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 49, + "id": "S049", + "question": "плс документы договор №15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-s049", + "status_code": 200, + "ok": true, + "elapsed_ms": 7139, + "reply_type": "partial_coverage", + "trace_id": "address-3SHLc6ubwt", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 50, + "id": "S050", + "question": "покеж документы по 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-s050", + "status_code": 200, + "ok": true, + "elapsed_ms": 6141, + "reply_type": "factual", + "trace_id": "address-w1OHSKjqSA", + "assistant_reply": "Документный фильтр в live дал пустой набор; показываю связанные банковские операции по договору.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 51, + "id": "S051", + "question": "банковские операции по договору 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-s051", + "status_code": 200, + "ok": true, + "elapsed_ms": 7016, + "reply_type": "factual", + "trace_id": "address-cxo6LcHH4x", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "bank_operations_by_contract", + "actual_intent": "bank_operations_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 52, + "id": "S052", + "question": "платежи по договору 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-s052", + "status_code": 200, + "ok": true, + "elapsed_ms": 6193, + "reply_type": "factual", + "trace_id": "address-yEKLyGFYoO", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "bank_operations_by_contract", + "actual_intent": "bank_operations_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 53, + "id": "S053", + "question": "выписка по договору 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-s053", + "status_code": 200, + "ok": true, + "elapsed_ms": 6016, + "reply_type": "factual", + "trace_id": "address-rUvoNn0Fgc", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "bank_operations_by_contract", + "actual_intent": "bank_operations_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 54, + "id": "S054", + "question": "bank ops by contract 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-s054", + "status_code": 200, + "ok": true, + "elapsed_ms": 7262, + "reply_type": "partial_coverage", + "trace_id": "address-VDpCcnPg5a", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "bank_operations_by_contract", + "actual_intent": "bank_operations_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 55, + "id": "S055", + "question": "ёпт, покажи банк операции по дог 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-s055", + "status_code": 200, + "ok": true, + "elapsed_ms": 6003, + "reply_type": "factual", + "trace_id": "address-kTU4GdoXTX", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "bank_operations_by_contract", + "actual_intent": "bank_operations_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 56, + "id": "S056", + "question": "по контракту 15/24 платежки", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-s056", + "status_code": 200, + "ok": true, + "elapsed_ms": 6102, + "reply_type": "factual", + "trace_id": "address-eo56maTsNM", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "bank_operations_by_contract", + "actual_intent": "bank_operations_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 57, + "id": "S057", + "question": "покажи сальдо по счету 60 за 2020", + "session": "chain_balance_60", + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-chain_balance_60", + "status_code": 200, + "ok": true, + "elapsed_ms": 5875, + "reply_type": "factual", + "trace_id": "address-qhmZhdkA7J", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 138.\nСумма по отобранным движениям: 24061597.5.\n1. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 900000\n2. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 144749\n3. 2020-11-26T12:00:02Z | Списание с расчетного счета 00000000276 от 26.11.2020 12:00:02 | 60.01 / 51 | 524730.5\n4. 2020-11-26T12:00:02Z | Списание с расчетного счета 00000000276 от 26.11.2020 12:00:02 | 60.01 / 51 | 210770.5", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 58, + "id": "S058", + "question": "а теперь только май 2020", + "session": "chain_balance_60", + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-chain_balance_60", + "status_code": 200, + "ok": true, + "elapsed_ms": 940, + "reply_type": "factual", + "trace_id": "address-MVyA2Ap-oz", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 6.\nСумма по отобранным движениям: 849499.\n1. 2020-05-22T10:14:43Z | Списание с расчетного счета 00000000148 от 22.05.2020 10:14:43 | 60.02 / 51 | 142299\n2. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 75367\n3. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 211833\n4. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 187967", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 59, + "id": "S059", + "question": "ок, теперь 2020.05", + "session": "chain_balance_60", + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-chain_balance_60", + "status_code": 200, + "ok": true, + "elapsed_ms": 1027, + "reply_type": "factual", + "trace_id": "address-adtHXlMRTB", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 6.\nСумма по отобранным движениям: 849499.\n1. 2020-05-22T10:14:43Z | Списание с расчетного счета 00000000148 от 22.05.2020 10:14:43 | 60.02 / 51 | 142299\n2. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 75367\n3. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 211833\n4. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 187967", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 60, + "id": "S060", + "question": "теперь на 2020-07-31", + "session": "chain_balance_60", + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-chain_balance_60", + "status_code": 200, + "ok": true, + "elapsed_ms": 1024, + "reply_type": "factual", + "trace_id": "address-vERRIPnI6-", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 6.\nСумма по отобранным движениям: 271400.\n1. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400\n2. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600\n3. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400\n4. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 61, + "id": "X001", + "question": "свк доки кинь за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-x001", + "status_code": 200, + "ok": true, + "elapsed_ms": 8339, + "reply_type": "partial_coverage", + "trace_id": "address-39cMVxJJOY", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 62, + "id": "X002", + "question": "по свк все документы за 20й год", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-x002", + "status_code": 200, + "ok": true, + "elapsed_ms": 5887, + "reply_type": "factual", + "trace_id": "address-UwiVf1WrV4", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 63, + "id": "X003", + "question": "пж вывали доки контрагент свк 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-x003", + "status_code": 200, + "ok": true, + "elapsed_ms": 6104, + "reply_type": "factual", + "trace_id": "address-TtF5KT1knH", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 64, + "id": "X004", + "question": "svk poka docy za 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-x004", + "status_code": 200, + "ok": true, + "elapsed_ms": 1009, + "reply_type": "factual", + "trace_id": "address-2kjsQChahd", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_without_llm", + "fallback_rule_hit": "documents_counterparty_year_rewrite", + "error_code": null, + "error_message": null + }, + { + "index": 65, + "id": "X005", + "question": "какие доки по компании свк за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-x005", + "status_code": 200, + "ok": true, + "elapsed_ms": 6107, + "reply_type": "factual", + "trace_id": "address-LdIClhncIp", + "assistant_reply": "Собран список документов по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 66, + "id": "X006", + "question": "бля покаж свк документы 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-x006", + "status_code": 200, + "ok": true, + "elapsed_ms": 8382, + "reply_type": "partial_coverage", + "trace_id": "address-bowTJkZWpW", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "list_documents_by_counterparty", + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 67, + "id": "X007", + "question": "свк банк операции за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-x007", + "status_code": 200, + "ok": true, + "elapsed_ms": 9131, + "reply_type": "partial_coverage", + "trace_id": "address-wsYIiX7UpV", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 68, + "id": "X008", + "question": "по свк выписку банка за 2020 выведи", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-x008", + "status_code": 200, + "ok": true, + "elapsed_ms": 8139, + "reply_type": "partial_coverage", + "trace_id": "address-LcTK2oDfU5", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 69, + "id": "X009", + "question": "свк платежки за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-x009", + "status_code": 200, + "ok": true, + "elapsed_ms": 9137, + "reply_type": "partial_coverage", + "trace_id": "address-AilK7IPdL3", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 70, + "id": "X010", + "question": "bank ops svk 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-x010", + "status_code": 200, + "ok": true, + "elapsed_ms": 760, + "reply_type": "factual", + "trace_id": "address-GpK07Tp7wu", + "assistant_reply": "Собран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 1.\n1. 2020-12-16T16:20:51Z | Списание с расчетного счета 00000000293 от 16.12.2020 16:20:51 | 0 / 0 | 60 | аналитика: СБЕРБАНК, ПАО", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "fallback_rule_applied_without_llm", + "fallback_rule_hit": "bank_operations_counterparty_year_rewrite", + "error_code": null, + "error_message": null + }, + { + "index": 71, + "id": "X011", + "question": "транзакции по свк за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-x011", + "status_code": 200, + "ok": true, + "elapsed_ms": 1010, + "reply_type": "factual", + "trace_id": "address-C38OJ7-jQE", + "assistant_reply": "Собран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 3.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n2. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n3. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 72, + "id": "X012", + "question": "ёпт по свк че по банку 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-x012", + "status_code": 200, + "ok": true, + "elapsed_ms": 9408, + "reply_type": "partial_coverage", + "trace_id": "address-mXvD8sNweM", + "assistant_reply": "Для точного адресного поиска не хватает обязательного якоря.\nПричина: якорь контрагента/договора не найден в материализованных live-строках.\nЧто нужно уточнить: уточните контрагента точным именем или добавьте ИНН/договор.", + "expected_intent": "bank_operations_by_counterparty", + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "missing_anchor", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 73, + "id": "X013", + "question": "остаток по 60.01 на 2020-07-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-x013", + "status_code": 200, + "ok": true, + "elapsed_ms": 5825, + "reply_type": "factual", + "trace_id": "address-40jDR5Qi46", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 5.\nСумма по отобранным движениям: 216200.\n1. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400\n2. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600\n3. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400\n4. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 74, + "id": "X014", + "question": "сальдо 60.01 на 31.07.2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-x014", + "status_code": 200, + "ok": true, + "elapsed_ms": 6102, + "reply_type": "factual", + "trace_id": "address-P4HjbzPg9Z", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 5.\nСумма по отобранным движениям: 216200.\n1. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400\n2. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600\n3. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400\n4. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 75, + "id": "X015", + "question": "что на счете 60 на 2020.05", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-x015", + "status_code": 200, + "ok": true, + "elapsed_ms": 6202, + "reply_type": "factual", + "trace_id": "address-KLJkomAX3C", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 138.\nСумма по отобранным движениям: 24061597.5.\n1. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 900000\n2. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 144749\n3. 2020-11-26T12:00:02Z | Списание с расчетного счета 00000000276 от 26.11.2020 12:00:02 | 60.01 / 51 | 524730.5\n4. 2020-11-26T12:00:02Z | Списание с расчетного счета 00000000276 от 26.11.2020 12:00:02 | 60.01 / 51 | 210770.5", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 76, + "id": "X016", + "question": "дай остаток 62.01 на 2020 май", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-x016", + "status_code": 200, + "ok": true, + "elapsed_ms": 6030, + "reply_type": "factual", + "trace_id": "address-ZohpgBwclB", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 2.\nСумма по отобранным движениям: 1530000.\n1. 2020-05-18T12:00:01Z | Реализация товаров и услуг 00000000002 от 18.05.2020 12:00:01 | 62.01 / 90.01.1 | 765000\n2. 2020-05-18T12:00:01Z | Реализация товаров и услуг 00000000002 от 18.05.2020 12:00:01 | 62.02 / 62.01 | 765000", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 77, + "id": "X017", + "question": "saldo account 60 as of 2020-12-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-x017", + "status_code": 200, + "ok": true, + "elapsed_ms": 6072, + "reply_type": "partial_coverage", + "trace_id": "address-uHc3s5HuEt", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "no_raw_rows", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 78, + "id": "X018", + "question": "плиз остаток по счету 51 на 2020-06-30", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-x018", + "status_code": 200, + "ok": true, + "elapsed_ms": 6164, + "reply_type": "factual", + "trace_id": "address-vtd7TcfL-C", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 30.\nСумма по отобранным движениям: 4579658.75.\n1. 2020-06-30T12:00:07Z | Списание с расчетного счета 00000000180 от 30.06.2020 12:00:07 | 66.03 / 51 | 35000\n2. 2020-06-30T12:00:05Z | Списание с расчетного счета 00000000178 от 30.06.2020 12:00:05 | 60.01 / 51 | 15800\n3. 2020-06-30T12:00:04Z | Списание с расчетного счета 00000000177 от 30.06.2020 12:00:04 | 70 / 51 | 50\n4. 2020-06-30T12:00:03Z | Списание с расчетного счета 00000000176 от 30.06.2020 12:00:03 | 91.02 / 51 | 35", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 79, + "id": "X019", + "question": "скока по 60.02 на конец 2020-12", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-x019", + "status_code": 200, + "ok": true, + "elapsed_ms": 18, + "reply_type": "partial_coverage", + "trace_id": "address-YeMXL-5sO2", + "assistant_reply": "Для точного адресного поиска не хватает обязательного якоря.\nПричина: не хватает обязательных фильтров.\nЧто нужно уточнить: уточните: account.", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "skipped", + "limited_reason_category": "missing_anchor", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 80, + "id": "X020", + "question": "бля сальдо 60.01 на 2020-05-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-x020", + "status_code": 200, + "ok": true, + "elapsed_ms": 6029, + "reply_type": "factual", + "trace_id": "address-h43u90i_oQ", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 5.\nСумма по отобранным движениям: 707200.\n1. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 75367\n2. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 211833\n3. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 187967\n4. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 162033", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 81, + "id": "X021", + "question": "раскрой остаток 60.01 по документам на конец июля 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-x021", + "status_code": 200, + "ok": true, + "elapsed_ms": 5618, + "reply_type": "partial_coverage", + "trace_id": "address-sLdoJuHACV", + "assistant_reply": "Для точного адресного поиска не хватает обязательного якоря.\nПричина: не хватает обязательных фильтров.\nЧто нужно уточнить: уточните: account.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "skipped", + "limited_reason_category": "missing_anchor", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 82, + "id": "X022", + "question": "доки под остатком 60.01 на 2020-07-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-x022", + "status_code": 200, + "ok": true, + "elapsed_ms": 5739, + "reply_type": "partial_coverage", + "trace_id": "address-cYW8Jq0EBD", + "assistant_reply": "Для точного адресного поиска не хватает обязательного якоря.\nПричина: не хватает обязательных фильтров.\nЧто нужно уточнить: уточните: account.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "skipped", + "limited_reason_category": "missing_anchor", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 83, + "id": "X023", + "question": "из чего остаток 60.01 на 2020-07-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-x023", + "status_code": 200, + "ok": true, + "elapsed_ms": 6939, + "reply_type": "factual", + "trace_id": "address-eebx3mI6FM", + "assistant_reply": "Собран drilldown документов, формирующих остаток по счету на указанную дату.\nДокументных строк отобрано: 5.\nСумма по отобранным движениям: 216200.\n1. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400\n2. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600\n3. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400\n4. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200\n5. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 7600\nМожно уточнить выборку по контрагенту, договору или периоду.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 84, + "id": "X024", + "question": "какие документы формируют остаток по 60.01 на 2020-07-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-x024", + "status_code": 200, + "ok": true, + "elapsed_ms": 6116, + "reply_type": "factual", + "trace_id": "address-PBLRiHCfmY", + "assistant_reply": "Собран drilldown документов, формирующих остаток по счету на указанную дату.\nДокументных строк отобрано: 5.\nСумма по отобранным движениям: 216200.\n1. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400\n2. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600\n3. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400\n4. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200\n5. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 7600\nМожно уточнить выборку по контрагенту, договору или периоду.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 85, + "id": "X025", + "question": "docs forming balance 60.01 as of 2020-07-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-x025", + "status_code": 200, + "ok": true, + "elapsed_ms": 7103, + "reply_type": "factual", + "trace_id": "address-1eUPjpRAf5", + "assistant_reply": "Собран drilldown документов, формирующих остаток по счету на указанную дату.\nДокументных строк отобрано: 5.\nСумма по отобранным движениям: 216200.\n1. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 74400\n2. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 57600\n3. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 42400\n4. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 34200\n5. 2020-07-13T12:00:02Z | Поступление товаров и услуг 00000000029 от 13.07.2020 12:00:02 | 41.01 / 60.01 | 7600\nМожно уточнить выборку по контрагенту, договору или периоду.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 86, + "id": "X026", + "question": "раскидай остаток 62.01 по докам на 2020-12-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-x026", + "status_code": 200, + "ok": true, + "elapsed_ms": 5943, + "reply_type": "partial_coverage", + "trace_id": "address-JHLvu9U_wb", + "assistant_reply": "Для точного адресного поиска не хватает обязательного якоря.\nПричина: не хватает обязательных фильтров.\nЧто нужно уточнить: уточните: account.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "skipped", + "limited_reason_category": "missing_anchor", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 87, + "id": "X027", + "question": "по счету 51 раскрой остаток документами на 2020-06-30", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-x027", + "status_code": 200, + "ok": true, + "elapsed_ms": 6305, + "reply_type": "factual", + "trace_id": "address-HyJv07f7UF", + "assistant_reply": "Собран drilldown документов, формирующих остаток по счету на указанную дату.\nДокументных строк отобрано: 3.\nСумма по отобранным движениям: 2190524.88.\n1. 2020-06-16T12:00:02Z | Поступление на расчетный счет 00000000026 от 16.06.2020 12:00:02 | 51 / 60.02 | 250000\n2. 2020-06-03T00:00:02Z | Поступление на расчетный счет 00000000025 от 03.06.2020 0:00:02 | 51 / 62.02 | 1642764.88\n3. 2020-06-03T00:00:01Z | Поступление на расчетный счет 00000000024 от 03.06.2020 0:00:01 | 51 / 62.02 | 297760\nМожно уточнить выборку по контрагенту, договору или периоду.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 88, + "id": "X028", + "question": "бля из чего состоит остаток по 60.01 на 2020-05-31", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-x028", + "status_code": 200, + "ok": true, + "elapsed_ms": 6027, + "reply_type": "partial_coverage", + "trace_id": "address-CEvVwCVSBi", + "assistant_reply": "Для точного адресного поиска не хватает обязательного якоря.\nПричина: не хватает обязательных фильтров.\nЧто нужно уточнить: уточните: account.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "skipped", + "limited_reason_category": "missing_anchor", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 89, + "id": "X029", + "question": "доки по договору 15/24 за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-x029", + "status_code": 200, + "ok": true, + "elapsed_ms": 8355, + "reply_type": "partial_coverage", + "trace_id": "address-K6ZlbkFjo5", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 90, + "id": "X030", + "question": "покажи документы контракт 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-x030", + "status_code": 200, + "ok": true, + "elapsed_ms": 7065, + "reply_type": "partial_coverage", + "trace_id": "address-keQQWVRqvr", + "assistant_reply": "Не удалось выполнить адресный live-запрос в V1.\nПричина: live MCP вызов завершился ошибкой.\nЧто нужно уточнить: MCP fetch failed: This operation was aborted.", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "error", + "limited_reason_category": "execution_error", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 91, + "id": "X031", + "question": "docs by contract 15/24 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-x031", + "status_code": 200, + "ok": true, + "elapsed_ms": 7180, + "reply_type": "factual", + "trace_id": "address-8NirDGP3Po", + "assistant_reply": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-08-31T15:00:06Z | Поступление товаров и услуг 00000000024 от 31.08.2020 15:00:06 | 19.04 / 76.05 | 233.33\n2. 2020-08-31T15:00:06Z | Поступление товаров и услуг 00000000024 от 31.08.2020 15:00:06 | 44.01 / 76.05 | 1166.67", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 92, + "id": "X032", + "question": "по дог 15/24 какие документы", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-x032", + "status_code": 200, + "ok": true, + "elapsed_ms": 6166, + "reply_type": "factual", + "trace_id": "address-SS4BbXST4N", + "assistant_reply": "Документный фильтр в live дал пустой набор; показываю связанные банковские операции по договору.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 93, + "id": "X033", + "question": "договор 15/24 выведи доки", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-x033", + "status_code": 200, + "ok": true, + "elapsed_ms": 8085, + "reply_type": "partial_coverage", + "trace_id": "address-pZydh5MhMb", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 94, + "id": "X034", + "question": "нах покажи документы по 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-x034", + "status_code": 200, + "ok": true, + "elapsed_ms": 6098, + "reply_type": "factual", + "trace_id": "address-DpX0AARjT6", + "assistant_reply": "Документный фильтр в live дал пустой набор; показываю связанные банковские операции по договору.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "list_documents_by_contract", + "actual_intent": "list_documents_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 95, + "id": "X035", + "question": "банк операции по договору 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-x035", + "status_code": 200, + "ok": true, + "elapsed_ms": 6074, + "reply_type": "factual", + "trace_id": "address-Kznyh1lrKY", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "bank_operations_by_contract", + "actual_intent": "bank_operations_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 96, + "id": "X036", + "question": "платежки по дог 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-x036", + "status_code": 200, + "ok": true, + "elapsed_ms": 6183, + "reply_type": "factual", + "trace_id": "address-OzsPWzeV8J", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "bank_operations_by_contract", + "actual_intent": "bank_operations_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 97, + "id": "X037", + "question": "выписка по контракту 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-x037", + "status_code": 200, + "ok": true, + "elapsed_ms": 6056, + "reply_type": "factual", + "trace_id": "address-R7CBzziSH0", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "bank_operations_by_contract", + "actual_intent": "bank_operations_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 98, + "id": "X038", + "question": "bank ops by contract 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-x038", + "status_code": 200, + "ok": true, + "elapsed_ms": 7033, + "reply_type": "partial_coverage", + "trace_id": "address-n7milL9wsA", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "expected_intent": "bank_operations_by_contract", + "actual_intent": "bank_operations_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 99, + "id": "X039", + "question": "покажи банк опер по дог 15/24 пж", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-x039", + "status_code": 200, + "ok": true, + "elapsed_ms": 7134, + "reply_type": "factual", + "trace_id": "address-SinuaUUt-H", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "bank_operations_by_contract", + "actual_intent": "bank_operations_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 100, + "id": "X040", + "question": "епт транзакции договор 15/24", + "session": null, + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-x040", + "status_code": 200, + "ok": true, + "elapsed_ms": 7119, + "reply_type": "factual", + "trace_id": "address--D7Y2yezDX", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 2.\n1. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n2. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "expected_intent": "bank_operations_by_contract", + "actual_intent": "bank_operations_by_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 101, + "id": "X041", + "question": "покажи сальдо по счету 60 за 2020", + "session": "chain_balance_60_extra", + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-chain_balance_60_extra", + "status_code": 200, + "ok": true, + "elapsed_ms": 5901, + "reply_type": "factual", + "trace_id": "address-9hviiIJwf7", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 138.\nСумма по отобранным движениям: 24061597.5.\n1. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 900000\n2. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 144749\n3. 2020-11-26T12:00:02Z | Списание с расчетного счета 00000000276 от 26.11.2020 12:00:02 | 60.01 / 51 | 524730.5\n4. 2020-11-26T12:00:02Z | Списание с расчетного счета 00000000276 от 26.11.2020 12:00:02 | 60.01 / 51 | 210770.5", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + }, + { + "index": 102, + "id": "X042", + "question": "а теперь только май 2020", + "session": "chain_balance_60_extra", + "session_id": "asst-2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26-chain_balance_60_extra", + "status_code": 200, + "ok": true, + "elapsed_ms": 979, + "reply_type": "factual", + "trace_id": "address-WGeCsBIQKU", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 6.\nСумма по отобранным движениям: 849499.\n1. 2020-05-22T10:14:43Z | Списание с расчетного счета 00000000148 от 22.05.2020 10:14:43 | 60.02 / 51 | 142299\n2. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 75367\n3. 2020-05-22T10:12:50Z | Списание с расчетного счета 00000000147 от 22.05.2020 10:12:50 | 60.01 / 51 | 211833\n4. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 187967", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "semantic_pass": true, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "error_code": null, + "error_message": null + } + ] +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26/run_summary.json b/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26/run_summary.json new file mode 100644 index 0000000..262ad1d --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26/run_summary.json @@ -0,0 +1,52 @@ +{ + "run_id": "2026-04-02_Address_Slang_Live_Stress_2026-04-02_10-42-26", + "generated_at": "2026-04-02T10:52:44", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\address_slang_stress_full_2026-04-02.json", + "backend_url": "http://127.0.0.1:8787/api/assistant/message", + "llm_provider": "local", + "llm_model": "qwen2.5-14b-instruct-1m", + "llm_base_url": "http://127.0.0.1:1234", + "totals": { + "questions_total": 102, + "ok_200_count": 102, + "semantic_pass_count": 102, + "semantic_pass_rate": 1.0, + "factual_count": 69, + "partial_coverage_count": 33, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_applied_count": 77, + "avg_elapsed_ms": 6060.8 + }, + "distributions": { + "reply_type": { + "partial_coverage": 33, + "factual": 69 + }, + "actual_intent": { + "list_documents_by_counterparty": 18, + "bank_operations_by_counterparty": 16, + "account_balance_snapshot": 26, + "documents_forming_balance": 16, + "list_documents_by_contract": 14, + "bank_operations_by_contract": 12 + }, + "actual_mode": { + "address_query": 102 + }, + "mcp_call_status": { + "materialized_but_not_anchor_matched": 19, + "matched_non_empty": 69, + "skipped": 8, + "no_raw_rows": 3, + "materialized_but_filtered_out_by_recipe": 2, + "error": 1 + }, + "limited_reason_category": { + "empty_match": 21, + "missing_anchor": 9, + "recipe_visibility_gap": 2, + "execution_error": 1 + } + } +} diff --git a/llm_normalizer/backend/src/services/addressFilterExtractor.ts b/llm_normalizer/backend/src/services/addressFilterExtractor.ts index 9283b1d..1c6fe7c 100644 --- a/llm_normalizer/backend/src/services/addressFilterExtractor.ts +++ b/llm_normalizer/backend/src/services/addressFilterExtractor.ts @@ -721,19 +721,8 @@ export function extractAddressFilters(userMessage: string, intent: AddressIntent } } - // For document/bank lists we default to a short recent window if no explicit period was provided. - if ( - (intent === "list_documents_by_counterparty" || - intent === "bank_operations_by_counterparty") && - !filters.period_from && - !filters.period_to && - !hasAllTimeHint(text) - ) { - const today = new Date().toISOString().slice(0, 10); - filters.period_to = today; - filters.period_from = shiftDaysIso(today, -90); - warnings.push("period_defaulted_last_90_days"); - } + // For counterparty document/bank lists we keep period open by default (all-time over available data) + // and rely on runtime limits/recovery instead of forcing a recent window. // For balance-style intents we force as_of_date deterministically: // - explicit as_of has priority; diff --git a/llm_normalizer/backend/src/services/addressIntentResolver.ts b/llm_normalizer/backend/src/services/addressIntentResolver.ts index 0986814..91edd63 100644 --- a/llm_normalizer/backend/src/services/addressIntentResolver.ts +++ b/llm_normalizer/backend/src/services/addressIntentResolver.ts @@ -28,14 +28,20 @@ const ACCOUNT_BALANCE_HINTS = [ "account balance", "balance by account", "saldo", + "баланс", "остаток по счет", "сальдо по счет", - "по счету" + "по счету", + "что на счете", + "что на счёте", + "на конец" ]; const DOCUMENTS_FORMING_BALANCE_HINTS = [ "documents forming balance", + "docs forming balance", "documents form balance", + "docs form balance", "balance documents", "documents for balance", "which documents form balance", @@ -61,6 +67,8 @@ const OPEN_ITEMS_HINTS = [ "висят", "незакрыт", "открыт", + "долг", + "задолж", "позици" ]; @@ -93,14 +101,21 @@ const BANK_OPERATIONS_BY_COUNTERPARTY_HINTS = [ "bank operations by customer", "show bank operations by counterparty", "bank ops", + "bank oper", "transactions by counterparty", + "транзак", + "банк", "банков", + "по банку", + "опер", "выписк", "платеж", "платёж", "оплат", "списан", + "списани", "поступлен", + "поступлени", "движени" ]; const DOCUMENTS_BY_CONTRACT_HINTS = [ @@ -126,7 +141,10 @@ const BANK_OPERATIONS_BY_CONTRACT_HINTS = [ ]; const BANK_OPERATION_CORE_HINTS = [ + "банк", "банков", + "операц", + "опер", "выписк", "платеж", "платёж", @@ -148,18 +166,62 @@ function hasAny(text: string, patterns: string[]): boolean { return patterns.some((item) => text.includes(item)); } +function hasCompactAccountCodeToken(text: string): boolean { + // Match compact account tokens like 60.01 / 62, while avoiding date fragments. + return /(? Number(part)); if (!parts.every((part) => Number.isFinite(part))) { return true; @@ -381,7 +449,7 @@ function hasDocumentSignal(text: string): boolean { } function hasHeuristicCounterpartyAnchor(text: string): boolean { - if (!hasDocsOrBankSignal(text)) { + if (!hasDocsOrBankSignal(text) && !hasBankOperationSignal(text)) { return false; } const tokens = String(text ?? "") @@ -441,7 +509,7 @@ export function resolveAddressIntent(userMessage: string): AddressIntentResoluti }; } - if (hasDocumentsFormingBalanceSignal(text) && (hasAccountNumberAnchor(text) || text.includes("счет"))) { + if (hasDocumentsFormingBalanceSignal(text) && hasDocumentsFormingBalanceAccountAnchor(text)) { return { intent: "documents_forming_balance", confidence: "high", @@ -449,6 +517,17 @@ export function resolveAddressIntent(userMessage: string): AddressIntentResoluti }; } + if ( + hasAny(text, OPEN_ITEMS_HINTS) && + (text.includes("контраг") || text.includes("договор") || text.includes("counterparty") || text.includes("contract")) + ) { + return { + intent: "open_items_by_counterparty_or_contract", + confidence: "medium", + reasons: ["open_items_signal_detected"] + }; + } + if ( hasContractAnchorSignal(text) && hasBankOperationSignal(text) @@ -496,7 +575,7 @@ export function resolveAddressIntent(userMessage: string): AddressIntentResoluti }; } - if (hasAny(text, ACCOUNT_BALANCE_HINTS) || hasAccountNumberAnchor(text)) { + if (hasAccountBalanceSignal(text)) { return { intent: "account_balance_snapshot", confidence: "high", @@ -512,14 +591,6 @@ export function resolveAddressIntent(userMessage: string): AddressIntentResoluti }; } - if (hasAny(text, OPEN_ITEMS_HINTS) && (text.includes("контраг") || text.includes("договор") || text.includes("counterparty") || text.includes("contract"))) { - return { - intent: "open_items_by_counterparty_or_contract", - confidence: "medium", - reasons: ["open_items_signal_detected"] - }; - } - if (hasAny(text, OPEN_CONTRACTS_HINTS) && (text.includes("договор") || text.includes("contract"))) { return { intent: "list_open_contracts", diff --git a/llm_normalizer/backend/src/services/addressQueryClassifier.ts b/llm_normalizer/backend/src/services/addressQueryClassifier.ts index a8ecf86..b844f99 100644 --- a/llm_normalizer/backend/src/services/addressQueryClassifier.ts +++ b/llm_normalizer/backend/src/services/addressQueryClassifier.ts @@ -22,7 +22,11 @@ const ADDRESS_ACTION_TOKENS = [ "кому", "какие", "что по", + "че по", + "чё по", "остаток", + "скока", + "сколько", "долг", "задолж", "хвост", @@ -64,6 +68,7 @@ const ADDRESS_ENTITY_TOKENS = [ "банк", "выписк", "операц", + "транзак", "договор", "счет", "счёт", @@ -152,11 +157,15 @@ function hasAddressFollowupSignal(text: string): boolean { } function hasDocsOrBankSignal(text: string): boolean { - return /(?:док(?:и|умент|ументы|ументов)|docs?|documents?|банк|выписк|платеж|платёж|оплат|поступлен|списан|transactions?|bank\s+ops|bank\s+operations?)/iu.test( + return /(?:док(?:и|умент|ументы|ументов)|docs?|documents?|банк|выписк|платеж|платёж|оплат|поступлен|списан|транзак|transactions?|bank\s+ops|bank\s+operations?)/iu.test( text ); } +function hasAccountCodeAnchor(text: string): boolean { + return /(? 0) { + const recoveredBankRows = applyIntentSpecificFilter("bank_operations_by_contract", filterByAnchors); + const recoveredRows = recoveredBankRows.length > 0 ? recoveredBankRows : filterByAnchors; + if (recoveredRows.length > 0) { + const factual = composeFactualReply(intent.intent, recoveredRows); + const recoveryReason = + recoveredBankRows.length > 0 + ? "contract_docs_recovered_via_bank_fallback" + : "contract_docs_recovered_via_anchor_rows"; + const replyPrefix = + recoveredBankRows.length > 0 + ? "Документный фильтр в live дал пустой набор; показываю связанные банковские операции по договору." + : "Документный фильтр в live дал пустой набор; показываю найденные строки по договорному якорю."; + return { + handled: true, + reply_text: `${replyPrefix}\n${factual.text}`, + reply_type: inferReplyType(factual.responseType), + response_type: factual.responseType, + debug: { + detected_mode: mode.mode, + detected_mode_confidence: mode.confidence, + query_shape: shape.shape, + query_shape_confidence: shape.confidence, + detected_intent: intent.intent, + detected_intent_confidence: intent.confidence, + extracted_filters: filters.extracted_filters, + missing_required_filters: [], + selected_recipe: recipeSelection.selected_recipe.recipe_id, + mcp_call_status_legacy: toLegacyMcpStatus("matched_non_empty"), + account_scope_mode: plan.account_scope_mode, + account_scope_fallback_applied: accountScopeFallbackApplied, + anchor_type: anchor.anchor_type, + anchor_value_raw: anchor.anchor_value_raw, + anchor_value_resolved: anchor.anchor_value_resolved, + resolver_confidence: anchor.resolver_confidence, + ambiguity_count: anchor.ambiguity_count, + match_failure_stage: "none", + match_failure_reason: null, + mcp_call_status: "matched_non_empty", + rows_fetched: mcp.fetched_rows, + raw_rows_received: mcp.raw_rows.length, + rows_after_account_scope: normalizedRows.length, + rows_after_recipe_filter: filterByAnchors.length, + rows_materialized: normalizedRows.length, + rows_matched: recoveredRows.length, + raw_row_keys_sample: rowDiagnostics.rawRowKeysSample, + materialization_drop_reason: rowDiagnostics.materializationDropReason, + account_token_raw: accountScopeAudit.accountTokenRaw, + account_token_normalized: accountScopeAudit.accountTokenNormalized, + account_scope_fields_checked: accountScopeAudit.accountScopeFieldsChecked, + account_scope_match_strategy: accountScopeAudit.accountScopeMatchStrategy, + account_scope_drop_reason: accountScopeAudit.accountScopeDropReason, + runtime_readiness: "LIVE_QUERYABLE_WITH_LIMITS", + limited_reason_category: null, + response_type: factual.responseType, + limitations: [...filters.warnings, recoveryReason], + reasons: [...baseReasons, recoveryReason] + } + }; + } + } + if (intent.intent === "list_open_contracts" && filteredRows.length > 0 && contractCandidatesFromRows(filteredRows).length === 0) { return buildLimitedExecutionResult({ mode, diff --git a/llm_normalizer/backend/src/services/assistantService.ts b/llm_normalizer/backend/src/services/assistantService.ts index aea9bbf..b0990c6 100644 --- a/llm_normalizer/backend/src/services/assistantService.ts +++ b/llm_normalizer/backend/src/services/assistantService.ts @@ -13,6 +13,8 @@ import * as companyAnchorResolver_1 from "./companyAnchorResolver"; import * as assistantRuntimeGuards_1 from "./assistantRuntimeGuards"; import * as assistantClaimBoundEvidence_1 from "./assistantClaimBoundEvidence"; import * as addressQueryService_1 from "./addressQueryService"; +import * as addressQueryClassifier_1 from "./addressQueryClassifier"; +import * as addressIntentResolver_1 from "./addressIntentResolver"; import iconv from "iconv-lite"; function retrievalSummaryForRoute(route) { if (route === "store_canonical") @@ -1924,9 +1926,9 @@ const ADDRESS_MONTH_ALIAS_MAP = { december: "12", dec: "12" }; -const ADDRESS_DOCS_SIGNAL_PATTERN = /(?:док|доки|документ|документы|документов|docs?|documents?|bank|выписк|плат[её]ж|оплат|поступлен|списан|операц)/i; -const ADDRESS_BANK_SIGNAL_PATTERN = /(?:bank|банк|банков|выписк|плат[её]ж|оплат|поступлен|списан|операц|расчетн)/i; -const ADDRESS_CONTRACT_SIGNAL_PATTERN = /(?:договор(?:а|у|ом|е)?|\bcontract\b)/iu; +const ADDRESS_DOCS_SIGNAL_PATTERN = /(?:док|доки|документ|документы|документов|docs?|documents?|bank|выписк|плат[её]ж|оплат|поступлен|списан|операц|опер|transaction)/i; +const ADDRESS_BANK_SIGNAL_PATTERN = /(?:bank|банк|банков|выписк|плат[её]ж|оплат|поступлен|списан|операц|опер|расчетн|транзак)/i; +const ADDRESS_CONTRACT_SIGNAL_PATTERN = /(?:договор(?:а|у|ом|е)?|(?:^|[^\p{L}\p{N}_])(?:дог\.?|[dд][oо][gг]\.?|dog\.?)(?=$|[^\p{L}\p{N}_])|contract|dogovor)/iu; const ADDRESS_BALANCE_SIGNAL_PATTERN = /(?:остат|сальдо|баланс|взаиморасч|долг|saldo|balance)/i; const ADDRESS_ALL_TIME_PATTERN = /(?:за\s+вс[её]\s+время|за\s+весь\s+период|за\s+всю\s+истори(?:ю|и)|for\s+all\s+time|all\s+time|entire\s+period|full\s+history)/iu; function normalizeAddressMonthAliasToken(token) { @@ -1964,6 +1966,10 @@ function sanitizeAddressMessageForFallback(userMessage) { .replace(/\bpokezh\b/giu, "покажи") .replace(/\bpokazh(?:i)?\b/giu, "покажи") .replace(/\bpokaji\b/giu, "покажи") + .replace(/\bop(?:er|ers?)\b/giu, "операции") + .replace(/(^|[^\p{L}\p{N}_])опер(?:аци[яиюе]|ы|)?(?=$|[^\p{L}\p{N}_])/giu, "$1операции") + .replace(/(^|[^\p{L}\p{N}_])дог\.?(?=$|[^\p{L}\p{N}_])/giu, "$1договор") + .replace(/(^|[^\p{L}\p{N}_])dog\.?(?=$|[^\p{L}\p{N}_])/giu, "$1contract") .replace(/\bdok(?:i|y)?\b/giu, "доки") .replace(/\bdocuments?\b/giu, "документы") .replace(/\bdocs?\b/giu, "документы") @@ -2070,7 +2076,7 @@ function pickAddressFallbackCounterpartyToken(text) { !/^\d{2}(?:\.\d{1,2})?$/.test(normalizedByToken) && !/^(?:19|20)\d{2}$/.test(normalizedByToken) && !/^(?:янв|фев|мар|апр|май|июн|июл|авг|сен|сент|окт|ноя|дек|january|february|march|april|may|june|july|august|september|october|november|december)/i.test(normalizedByToken) && - !/^(?:договор|договора|договору|договором|договоре|contract)$/.test(normalizedByToken)) { + !/^(?:договор|договора|договору|договором|договоре|contract|dogovor|dog|дог|d[oо]g|д[oо]г)$/.test(normalizedByToken)) { return byToken; } } @@ -2086,7 +2092,7 @@ function pickAddressFallbackCounterpartyToken(text) { if (/^(?:янв|фев|мар|апр|май|июн|июл|авг|сен|сент|окт|ноя|дек|january|february|march|april|may|june|july|august|september|october|november|december)/i.test(normalized)) { continue; } - if (/^(?:договор|договора|договору|договором|договоре|contract)$/.test(normalized)) { + if (/^(?:договор|договора|договору|договором|договоре|contract|dogovor|dog|дог|d[oо]g|д[oо]г)$/.test(normalized)) { continue; } return token; @@ -2096,8 +2102,8 @@ function pickAddressFallbackCounterpartyToken(text) { function extractAddressFallbackContractToken(text) { const source = String(text ?? ""); const patterns = [ - /(?:договор(?:а|у|ом|е)?|\bcontract\b)\s*(?:№|#|n|no\.?)?\s*([a-zа-я0-9][a-zа-я0-9/_-]{1,})/iu, - /(?:№|#|n|no\.?)\s*([a-zа-я0-9][a-zа-я0-9/_-]{1,})\s*(?:договор(?:а|у|ом|е)?|\bcontract\b)/iu + /(?:договор(?:а|у|ом|е)?|дог\.?|[dд][oо][gг]\.?|contract|dogovor|dog\.?)\s*(?:№|#|n|no\.?)?\s*([a-zа-я0-9][a-zа-я0-9/_-]{1,})/iu, + /(?:№|#|n|no\.?)\s*([a-zа-я0-9][a-zа-я0-9/_-]{1,})\s*(?:договор(?:а|у|ом|е)?|дог\.?|[dд][oо][gг]\.?|contract|dogovor|dog\.?)/iu ]; for (const pattern of patterns) { const match = pattern.exec(source); @@ -2116,7 +2122,7 @@ function extractAddressFallbackContractToken(text) { } return candidate; } - if (ADDRESS_CONTRACT_SIGNAL_PATTERN.test(source)) { + if (ADDRESS_CONTRACT_SIGNAL_PATTERN.test(source) || /(?:^|[^\p{L}\p{N}_])(?:[dд][oо][gг]|dogovor)(?=$|[^\p{L}\p{N}_])/iu.test(source)) { const generic = source.match(/\b([a-zа-я0-9]{1,10}[/-][a-zа-я0-9]{1,10}(?:[/-][a-zа-я0-9]{1,10})?)\b/iu); if (generic && generic[1]) { return generic[1]; @@ -2157,9 +2163,36 @@ function resolveAddressDeterministicFallback(userMessage, sanitizedUserMessage) }; } } + if (!docsSignal && !contractSignal && !balanceSignal) { + const counterparty = pickAddressFallbackCounterpartyToken(source); + const genericLookupSignal = /(?:\bесть\b|\bпокажи\b|\bвыведи\b|\bч[её]\b|\bчто\b)/iu.test(source); + if (counterparty && (allTime || monthYear || year) && genericLookupSignal) { + let periodClause = ""; + let rule = "documents_counterparty_rewrite_from_generic_lookup"; + if (allTime) { + periodClause = " за все время"; + rule = "documents_counterparty_all_time_rewrite_from_generic_lookup"; + } + else if (monthYear) { + periodClause = ` за ${monthYear}`; + rule = "documents_counterparty_month_rewrite_from_generic_lookup"; + } + else if (year) { + periodClause = ` за ${year} год`; + rule = "documents_counterparty_year_rewrite_from_generic_lookup"; + } + const candidate = compactWhitespace(`документы по контрагенту ${counterparty}${periodClause}`); + if (candidate && candidate !== sourceRaw.toLowerCase()) { + return { + candidate, + rule + }; + } + } + } if (docsSignal) { - if (contractSignal) { - const contract = extractAddressFallbackContractToken(sourceRaw || source); + const contract = extractAddressFallbackContractToken(sourceRaw || source); + if (contractSignal || contract) { if (contract) { let periodClause = ""; let rule = bankSignal ? "bank_operations_contract_rewrite" : "documents_contract_rewrite"; @@ -2642,6 +2675,32 @@ async function runAddressLlmPreDecompose(normalizerService, payload, userMessage reason: normalized?.ok ? "no_usable_fragment" : "normalize_failed" }; } + const repairedSourceMessage = repairAddressMojibake(userMessage); + const sourceIntentResolution = (0, addressIntentResolver_1.resolveAddressIntent)(repairedSourceMessage || userMessage); + const candidateIntentResolution = (0, addressIntentResolver_1.resolveAddressIntent)(candidate); + const sourceIntentKnown = sourceIntentResolution.intent !== "unknown"; + const candidateIntentKnown = candidateIntentResolution.intent !== "unknown"; + const intentConflict = sourceIntentKnown && + candidateIntentKnown && + sourceIntentResolution.intent !== candidateIntentResolution.intent; + const intentDroppedByCandidate = sourceIntentKnown && !candidateIntentKnown; + const rejectCandidateForIntentSafety = intentDroppedByCandidate || + (intentConflict && + (sourceIntentResolution.confidence === "high" || candidateIntentResolution.confidence !== "high")); + if (rejectCandidateForIntentSafety) { + return { + ...baseMeta, + attempted: true, + applied: false, + traceId: normalized?.trace_id ?? null, + effectiveMessage: userMessage, + reason: intentDroppedByCandidate + ? "normalized_fragment_rejected_intent_drop" + : "normalized_fragment_rejected_intent_conflict", + fallbackRuleHit: null, + sanitizedUserMessage + }; + } const sourceCompact = compactWhitespace(String(userMessage ?? "").toLowerCase()); const candidateCompact = compactWhitespace(candidate.toLowerCase()); const applied = sourceCompact !== candidateCompact; @@ -2692,12 +2751,19 @@ async function runAddressLlmPreDecompose(normalizerService, payload, userMessage } } function resolveAddressToolGateDecision(addressInputMessage, followupContext) { - const hasMessageSignal = isAddressLlmPreDecomposeCandidate(addressInputMessage) || hasAccountingSignal(addressInputMessage); + const repairedInputMessage = repairAddressMojibake(String(addressInputMessage ?? "")); + const modeDetection = (0, addressQueryClassifier_1.detectAddressQuestionMode)(repairedInputMessage || addressInputMessage); + const hasClassifierSignal = modeDetection.mode === "address_query"; + const hasMessageSignal = hasClassifierSignal || + isAddressLlmPreDecomposeCandidate(addressInputMessage) || + isAddressLlmPreDecomposeCandidate(repairedInputMessage) || + hasAccountingSignal(addressInputMessage) || + hasAccountingSignal(repairedInputMessage); if (hasMessageSignal) { return { runAddressLane: true, decision: "run_address_lane", - reason: "address_signal_detected" + reason: hasClassifierSignal ? "address_mode_classifier_detected" : "address_signal_detected" }; } if (followupContext) { diff --git a/llm_normalizer/backend/src/services/openaiResponsesClient.ts b/llm_normalizer/backend/src/services/openaiResponsesClient.ts index 914ba3f..02373cd 100644 --- a/llm_normalizer/backend/src/services/openaiResponsesClient.ts +++ b/llm_normalizer/backend/src/services/openaiResponsesClient.ts @@ -132,6 +132,9 @@ function shouldFallbackToChatCompletions(error: unknown): boolean { if (!(error instanceof ApiError)) { return false; } + if (error.code === "OPENAI_OUTPUT_PARSE_FAILED" || error.code === "OPENAI_NON_JSON_RESPONSE") { + return true; + } if (error.code !== "OPENAI_REQUEST_FAILED") { return false; } @@ -144,6 +147,35 @@ function shouldFallbackToChatCompletions(error: unknown): boolean { return message.includes("/responses") || message.includes("responses"); } +function extractModelErrorMessage(data: Record): string | null { + const rawError = data.error; + if (typeof rawError === "string" && rawError.trim().length > 0) { + return rawError.trim(); + } + if (rawError && typeof rawError === "object") { + const errorObj = rawError as Record; + const message = errorObj.message; + if (typeof message === "string" && message.trim().length > 0) { + return message.trim(); + } + } + return null; +} + +function isRouteMismatchErrorMessage(message: string): boolean { + const source = String(message ?? "").toLowerCase(); + if (!source) { + return false; + } + return ( + /unexpected endpoint|unexpected route|unknown endpoint|unknown route|unsupported endpoint|unsupported route/.test(source) || + (/endpoint/.test(source) && /method/.test(source)) || + (/endpoint/.test(source) && /not found/.test(source)) || + (/route/.test(source) && /not found/.test(source)) || + (/path/.test(source) && /not found/.test(source)) + ); +} + function loadSchemaForTransport(schemaVersion: "v1" | "v2" | "v2_0_1" | "v2_0_2"): Record { const schemaFile = schemaVersion === "v1" @@ -398,11 +430,16 @@ export class OpenAIResponsesClient { } } + const modelErrorMessage = extractModelErrorMessage(data); + if (modelErrorMessage && canFallbackToAlternativeBase && !isLastCandidate && isRouteMismatchErrorMessage(modelErrorMessage)) { + continue; + } + if (!response.ok) { const errorObj = (data.error ?? {}) as Record; throw new ApiError( "OPENAI_REQUEST_FAILED", - String(errorObj.message ?? `Model endpoint failed: ${response.status}`), + modelErrorMessage ?? String(errorObj.message ?? `Model endpoint failed: ${response.status}`), response.status, { route: routePath, @@ -414,6 +451,14 @@ export class OpenAIResponsesClient { ); } + if (modelErrorMessage) { + throw new ApiError("OPENAI_REQUEST_FAILED", modelErrorMessage, 502, { + route: routePath, + url, + status: response.status + }); + } + return data; } diff --git a/llm_normalizer/backend/tests/addressQueryRuntimeM23.test.ts b/llm_normalizer/backend/tests/addressQueryRuntimeM23.test.ts index f9b2c48..616a11f 100644 --- a/llm_normalizer/backend/tests/addressQueryRuntimeM23.test.ts +++ b/llm_normalizer/backend/tests/addressQueryRuntimeM23.test.ts @@ -34,6 +34,17 @@ describe("address query shape classifier", () => { const result = detectAddressQuestionMode("за любой период есть что-то по свк?"); expect(result.mode).toBe("address_query"); }); + + it("keeps slang transaction phrasing in address lane", () => { + const result = detectAddressQuestionMode("транзакции по свк за 2020"); + expect(result.mode).toBe("address_query"); + }); + + it("keeps short balance slang with compact account token in address lane", () => { + const result = detectAddressQuestionMode("скока по 60.02 на конец 2020-12"); + expect(result.mode).toBe("address_query"); + }); + }); describe("address compose stage utf8 headers", () => { @@ -87,6 +98,16 @@ describe("address intent resolver expansion (M2.3a)", () => { expect(result.intent).toBe("documents_forming_balance"); }); + it("resolves documents forming balance for slang phrase with compact account token", () => { + const result = resolveAddressIntent("раскрой остаток 60.01 по документам на конец июля 2020"); + expect(result.intent).toBe("documents_forming_balance"); + }); + + it("resolves documents forming balance for 'доки под остатком' slang phrase", () => { + const result = resolveAddressIntent("доки под остатком 60.01 на 2020-07-31"); + expect(result.intent).toBe("documents_forming_balance"); + }); + it("resolves documents by company phrase as counterparty intent", () => { const result = resolveAddressIntent("Какие документы доступны по компании СВК за 2021 год?"); expect(result.intent).toBe("list_documents_by_counterparty"); @@ -107,6 +128,16 @@ describe("address intent resolver expansion (M2.3a)", () => { expect(result.intent).toBe("bank_operations_by_contract"); }); + it("resolves shorthand bank-by-contract slang intent", () => { + const result = resolveAddressIntent("покажи банк опер по дог 15/24 пж"); + expect(result.intent).toBe("bank_operations_by_contract"); + }); + + it("resolves debt-by-contract query to open items intent", () => { + const result = resolveAddressIntent("Есть ли долг по договору 15/24 на 2020-07-31"); + expect(result.intent).toBe("open_items_by_counterparty_or_contract"); + }); + it("resolves bank operations by contract for normalized phrase with linked contract wording", () => { const result = resolveAddressIntent( "Показать банковские операции (счета 51, 60, 62) связанные с договором 15/24." @@ -139,6 +170,36 @@ describe("address intent resolver expansion (M2.3a)", () => { expect(result.intent).toBe("list_documents_by_counterparty"); }); + it("resolves slang transactions phrase by counterparty", () => { + const result = resolveAddressIntent("транзакции по свк за 2020"); + expect(result.intent).toBe("bank_operations_by_counterparty"); + }); + + it("resolves short balance slang with compact account token", () => { + const result = resolveAddressIntent("скока по 60.02 на конец 2020-12"); + expect(result.intent).toBe("account_balance_snapshot"); + }); + + it("resolves colloquial 'что на счете' phrasing as account balance snapshot", () => { + const result = resolveAddressIntent("что на счете 60 на 2020.05"); + expect(result.intent).toBe("account_balance_snapshot"); + }); + + it("resolves mixed ru/en balance phrasing with account token", () => { + const result = resolveAddressIntent("баланс account 60.01 as of 2020-07-31"); + expect(result.intent).toBe("account_balance_snapshot"); + }); + + it("resolves 'по докам' slang as documents forming balance", () => { + const result = resolveAddressIntent("раскидай остаток 62.01 по докам на 2020-12-31"); + expect(result.intent).toBe("documents_forming_balance"); + }); + + it("resolves english compact docs-forming phrasing", () => { + const result = resolveAddressIntent("docs forming balance 60.01 as of 2020-07-31"); + expect(result.intent).toBe("documents_forming_balance"); + }); + it("resolves loose by-anchor follow-up as documents by counterparty fallback", () => { const result = resolveAddressIntent("за любой период есть что-то по свк?"); expect(result.intent).toBe("list_documents_by_counterparty"); @@ -174,6 +235,17 @@ describe("address filter extraction for balance drilldown", () => { expect(result.warnings).not.toContain("period_defaulted_last_90_days"); }); + it("keeps all-time period by default for counterparty docs query without explicit window", () => { + const result = extractAddressFilters( + "Покажи документы по контрагенту тестовый", + "list_documents_by_counterparty" + ); + expect(result.extracted_filters.counterparty).toBe("тестовый"); + expect(result.extracted_filters.period_from).toBeUndefined(); + expect(result.extracted_filters.period_to).toBeUndefined(); + expect(result.warnings).not.toContain("period_defaulted_last_90_days"); + }); + it("extracts counterparty from company phrase and derives year period", () => { const result = extractAddressFilters( "Какие документы доступны по компании СВК за 2021 год?", diff --git a/llm_normalizer/backend/tests/assistantAddressFollowupContext.test.ts b/llm_normalizer/backend/tests/assistantAddressFollowupContext.test.ts index dc53507..9888abb 100644 --- a/llm_normalizer/backend/tests/assistantAddressFollowupContext.test.ts +++ b/llm_normalizer/backend/tests/assistantAddressFollowupContext.test.ts @@ -62,9 +62,6 @@ describe("assistant address follow-up carryover", () => { const addressQueryService = { tryHandle: vi.fn(async (message: string, options?: any) => { calls.push({ message, options }); - if (message === "какие есть доки по свк с 2020 по 2025 год") { - return buildAddressLaneResult(); - } if (message === "а за все время?" && !options?.followupContext) { return null; } @@ -77,7 +74,7 @@ describe("assistant address follow-up carryover", () => { } }); } - return null; + return buildAddressLaneResult(); }) } as any; @@ -101,7 +98,7 @@ describe("assistant address follow-up carryover", () => { const sessionId = `asst-address-followup-${Date.now()}`; const first = await service.handleMessage({ session_id: sessionId, - user_message: "какие есть доки по свк с 2020 по 2025 год", + user_message: "покажи документы по свк за 2020", useMock: true } as any); expect(first.ok).toBe(true); @@ -121,7 +118,7 @@ describe("assistant address follow-up carryover", () => { expect(second.debug?.answer_grounding_check?.reasons).toContain("address_followup_context_applied"); expect(calls).toHaveLength(2); - expect(calls[0].message).toBe("какие есть доки по свк с 2020 по 2025 год"); + expect(calls[0].message.toLowerCase()).toContain("свк"); expect(calls[1].message).toBe("а за все время?"); expect(calls[1].options?.followupContext?.previous_intent).toBe("list_documents_by_counterparty"); expect(calls[1].options?.followupContext?.previous_anchor_type).toBe("counterparty"); diff --git a/llm_normalizer/backend/tests/assistantAddressLlmPredecompose.test.ts b/llm_normalizer/backend/tests/assistantAddressLlmPredecompose.test.ts index f247467..fdda671 100644 --- a/llm_normalizer/backend/tests/assistantAddressLlmPredecompose.test.ts +++ b/llm_normalizer/backend/tests/assistantAddressLlmPredecompose.test.ts @@ -494,6 +494,118 @@ describe("assistant address llm pre-decompose candidate preference", () => { expect(response.debug?.fallback_rule_hit).toBe("bank_operations_counterparty_year_rewrite"); }); + it("rewrites shorthand bank/contract slang phrase to bank operations by contract", async () => { + const calls: Array<{ message: string }> = []; + const addressQueryService = { + tryHandle: vi.fn(async (message: string) => { + calls.push({ message }); + return buildAddressLaneResult(message); + }) + } as any; + + const normalizerService = { + normalize: vi.fn(async () => ({ + trace_id: "norm-predecompose-bank-contract-slang", + ok: true, + normalized: { + schema_version: "normalized_query_v2_0_2", + user_message_raw: "покажи банк опер по дог 15/24 пж", + message_in_scope: true, + scope_confidence: "medium", + contains_multiple_tasks: false, + fragments: [] + }, + raw_model_output: null, + validation: { passed: true, errors: [] }, + usage: { input_tokens: 1, output_tokens: 1, total_tokens: 2 }, + latency_ms: 10, + prompt_version: "normalizer_v2_0_2", + schema_version: "v2_0_2", + request_count_for_case: 1 + })) + } as any; + + const sessions = new AssistantSessionStore(); + const service = new AssistantService( + normalizerService, + sessions as any, + {} as any, + { persistSession: vi.fn() } as any, + addressQueryService + ); + + const response = await service.handleMessage({ + session_id: `asst-predecompose-bank-contract-slang-${Date.now()}`, + user_message: "покажи банк опер по дог 15/24 пж", + llmProvider: "local", + useMock: false + } as any); + + expect(response.ok).toBe(true); + expect(response.reply_type).toBe("factual"); + expect(calls).toHaveLength(1); + expect(calls[0].message).toBe("банковские операции по договору 15/24"); + expect(response.debug?.llm_decomposition_reason).toBe("fallback_rule_applied_after_llm"); + expect(response.debug?.fallback_rule_hit).toBe("bank_operations_contract_rewrite"); + }); + + it("keeps loose all-time colloquial lookup in address lane without forcing rewrite", async () => { + const calls: Array<{ message: string }> = []; + const addressQueryService = { + tryHandle: vi.fn(async (message: string) => { + calls.push({ message }); + return buildAddressLaneResult(message); + }) + } as any; + + const normalizerService = { + normalize: vi.fn(async () => ({ + trace_id: "norm-predecompose-loose-all-time", + ok: true, + normalized: { + schema_version: "normalized_query_v2_0_2", + user_message_raw: "по свк за весь период че есть", + message_in_scope: true, + scope_confidence: "medium", + contains_multiple_tasks: false, + fragments: [] + }, + raw_model_output: null, + validation: { passed: true, errors: [] }, + usage: { input_tokens: 1, output_tokens: 1, total_tokens: 2 }, + latency_ms: 10, + prompt_version: "normalizer_v2_0_2", + schema_version: "v2_0_2", + request_count_for_case: 1 + })) + } as any; + + const sessions = new AssistantSessionStore(); + const service = new AssistantService( + normalizerService, + sessions as any, + {} as any, + { persistSession: vi.fn() } as any, + addressQueryService + ); + + const response = await service.handleMessage({ + session_id: `asst-predecompose-loose-all-time-${Date.now()}`, + user_message: "по свк за весь период че есть", + llmProvider: "local", + useMock: false + } as any); + + expect(response.ok).toBe(true); + expect(response.reply_type).toBe("factual"); + expect(calls).toHaveLength(1); + expect(calls[0].message).toBe("по свк за весь период че есть"); + expect(response.debug?.llm_decomposition_applied).toBe(false); + expect(response.debug?.llm_decomposition_reason).toBe("not_address_like"); + expect(response.debug?.fallback_rule_hit).toBeNull(); + expect(response.debug?.tool_gate_decision).toBe("run_address_lane"); + }); + it("normalizes short ordinal year like '20й' in noisy docs phrasing", async () => { const calls: Array<{ message: string }> = []; const addressQueryService = { diff --git a/llm_normalizer/backend/tests/openaiResponsesClientLocalFallback.test.ts b/llm_normalizer/backend/tests/openaiResponsesClientLocalFallback.test.ts new file mode 100644 index 0000000..9fa8103 --- /dev/null +++ b/llm_normalizer/backend/tests/openaiResponsesClientLocalFallback.test.ts @@ -0,0 +1,125 @@ +import { afterEach, describe, expect, it, vi } from "vitest"; +import { OpenAIResponsesClient } from "../src/services/openaiResponsesClient"; + +describe("openai local responses fallback", () => { + const originalFetch = global.fetch; + + afterEach(() => { + vi.restoreAllMocks(); + global.fetch = originalFetch; + }); + + it("falls back to /chat/completions when /responses payload is parseable JSON but has no output_text", async () => { + const fetchMock = vi + .fn() + .mockResolvedValueOnce( + new Response(JSON.stringify({ id: "resp-1", output: [], usage: { prompt_tokens: 4, completion_tokens: 3 } }), { + status: 200, + headers: { "content-type": "application/json" } + }) + ) + .mockResolvedValueOnce( + new Response( + JSON.stringify({ + id: "chat-1", + choices: [{ message: { content: "{\"schema_version\":\"normalized_query_v2_0_2\"}" } }], + usage: { prompt_tokens: 7, completion_tokens: 5, total_tokens: 12 } + }), + { + status: 200, + headers: { "content-type": "application/json" } + } + ) + ); + + global.fetch = fetchMock as unknown as typeof fetch; + + const client = new OpenAIResponsesClient(); + const response = await client.normalize( + { + llmProvider: "local", + apiKey: "", + model: "qwen2.5-14b-instruct-1m", + baseUrl: "http://127.0.0.1:1234", + temperature: 0 + }, + { + systemPrompt: "system", + developerPrompt: "developer", + domainPrompt: "domain", + userQuestion: "question", + schemaVersion: "v2_0_2" + } + ); + + expect(response.outputText).toContain("\"schema_version\":\"normalized_query_v2_0_2\""); + expect(response.usage.total_tokens).toBe(12); + expect(fetchMock).toHaveBeenCalledTimes(2); + expect(String(fetchMock.mock.calls[0]?.[0] ?? "")).toContain("/responses"); + expect(String(fetchMock.mock.calls[1]?.[0] ?? "")).toContain("/chat/completions"); + }); + + it("retries alternative local base when endpoint mismatch payload is returned for chat completions", async () => { + const fetchMock = vi + .fn() + .mockResolvedValueOnce( + new Response(JSON.stringify({ error: { message: "Unexpected endpoint or method. (POST /responses)" } }), { + status: 404, + headers: { "content-type": "application/json" } + }) + ) + .mockResolvedValueOnce( + new Response(JSON.stringify({ error: { message: "Unexpected endpoint or method. (POST /responses)" } }), { + status: 404, + headers: { "content-type": "application/json" } + }) + ) + .mockResolvedValueOnce( + new Response(JSON.stringify({ error: "Unexpected endpoint or method. (POST /chat/completions)" }), { + status: 200, + headers: { "content-type": "application/json" } + }) + ) + .mockResolvedValueOnce( + new Response( + JSON.stringify({ + id: "chat-v1", + choices: [{ message: { content: "{\"schema_version\":\"normalized_query_v2_0_2\"}" } }], + usage: { prompt_tokens: 10, completion_tokens: 7, total_tokens: 17 } + }), + { + status: 200, + headers: { "content-type": "application/json" } + } + ) + ); + + global.fetch = fetchMock as unknown as typeof fetch; + + const client = new OpenAIResponsesClient(); + const response = await client.normalize( + { + llmProvider: "local", + apiKey: "", + model: "qwen2.5-14b-instruct-1m", + baseUrl: "http://127.0.0.1:1234", + temperature: 0 + }, + { + systemPrompt: "system", + developerPrompt: "developer", + domainPrompt: "domain", + userQuestion: "question", + schemaVersion: "v2_0_2" + } + ); + + expect(response.outputText).toContain("\"schema_version\":\"normalized_query_v2_0_2\""); + expect(response.usage.total_tokens).toBe(17); + expect(fetchMock).toHaveBeenCalledTimes(4); + expect(String(fetchMock.mock.calls[0]?.[0] ?? "")).toBe("http://127.0.0.1:1234/responses"); + expect(String(fetchMock.mock.calls[1]?.[0] ?? "")).toBe("http://127.0.0.1:1234/v1/responses"); + expect(String(fetchMock.mock.calls[2]?.[0] ?? "")).toBe("http://127.0.0.1:1234/chat/completions"); + expect(String(fetchMock.mock.calls[3]?.[0] ?? "")).toBe("http://127.0.0.1:1234/v1/chat/completions"); + }); +}); diff --git a/llm_normalizer/backend/tmp/inspect_contract_query.js b/llm_normalizer/backend/tmp/inspect_contract_query.js new file mode 100644 index 0000000..936d70f --- /dev/null +++ b/llm_normalizer/backend/tmp/inspect_contract_query.js @@ -0,0 +1,25 @@ +const { resolveAddressIntent } = require('../dist/services/addressIntentResolver.js'); +const { extractAddressFilters } = require('../dist/services/addressFilterExtractor.js'); +const { selectAddressRecipe, buildAddressRecipePlan } = require('../dist/services/addressRecipeCatalog.js'); +const { executeAddressMcpQuery } = require('../dist/services/addressMcpClient.js'); + +(async () => { + const q = 'Покажи документы по договору 15/24'; + const intentObj = resolveAddressIntent(q); + const filtersObj = extractAddressFilters(q, intentObj.intent); + const sel = selectAddressRecipe(intentObj.intent, filtersObj.extracted_filters); + console.log('intent_obj=', intentObj); + console.log('filters_obj=', filtersObj); + console.log('selection=', sel); + if (!sel.selected_recipe) return; + const plan = buildAddressRecipePlan(sel.selected_recipe, filtersObj.extracted_filters); + const mcp = await executeAddressMcpQuery({ query: plan.query, limit: plan.limit }); + const rows = Array.isArray(mcp.raw_rows) ? mcp.raw_rows : []; + const contractNeedle = String(filtersObj.extracted_filters.contract || '').toLowerCase(); + const byAnchor = rows.filter((r) => JSON.stringify(r).toLowerCase().includes(contractNeedle)); + console.log('query_limit=', plan.limit); + console.log('raw_rows=', rows.length); + console.log('by_anchor=', byAnchor.length); + console.log('sample_registrators=', byAnchor.slice(0,10).map((r)=>String(r['Регистратор'] ?? r['Registrator'] ?? ''))); + console.log('sample_rows=', byAnchor.slice(0,5)); +})(); diff --git a/scripts/run_address_live_slang_stress.py b/scripts/run_address_live_slang_stress.py new file mode 100644 index 0000000..012b466 --- /dev/null +++ b/scripts/run_address_live_slang_stress.py @@ -0,0 +1,308 @@ +#!/usr/bin/env python3 +from __future__ import annotations + +import argparse +import json +import statistics +import time +import urllib.error +import urllib.request +from collections import Counter +from dataclasses import dataclass +from datetime import datetime +from pathlib import Path +from typing import Any + + +PROJECT_ROOT = Path(__file__).resolve().parents[1] + + +@dataclass +class QuestionCase: + id: str + text: str + expected_intent: str | None + expected_mode: str | None + session: str | None + + +def parse_args() -> argparse.Namespace: + parser = argparse.ArgumentParser( + description="Run slang stress live-batch against /api/assistant/message and produce summary artifacts." + ) + parser.add_argument( + "--questions-file", + required=True, + help="Path to JSON questions file (list of strings or objects with id/text/expected_intent/session).", + ) + parser.add_argument( + "--backend-url", + default="http://127.0.0.1:8787/api/assistant/message", + help="Assistant endpoint URL.", + ) + parser.add_argument("--prompt-version", default="address_query_runtime_v1") + parser.add_argument("--llm-provider", default="local") + parser.add_argument("--llm-model", default="qwen2.5-14b-instruct-1m") + parser.add_argument("--llm-base-url", default="http://127.0.0.1:1234") + parser.add_argument("--temperature", type=float, default=0.0) + parser.add_argument("--max-output-tokens", type=int, default=900) + parser.add_argument("--timeout-sec", type=int, default=120) + parser.add_argument("--run-id", default="") + parser.add_argument( + "--output-root", + default=str(PROJECT_ROOT / "docs" / "ADDRESS" / "runs"), + help="Root directory where run folder will be created.", + ) + return parser.parse_args() + + +def now_stamp() -> str: + return datetime.now().strftime("%Y-%m-%d_%H-%M-%S") + + +def load_cases(path: Path) -> list[QuestionCase]: + raw = json.loads(path.read_text(encoding="utf-8")) + if not isinstance(raw, list): + raise ValueError("questions-file must contain JSON array") + + cases: list[QuestionCase] = [] + for idx, item in enumerate(raw, start=1): + if isinstance(item, str): + text = item.strip() + if not text: + continue + cases.append( + QuestionCase( + id=f"Q{idx:03d}", + text=text, + expected_intent=None, + expected_mode="address_query", + session=None, + ) + ) + continue + + if not isinstance(item, dict): + raise ValueError(f"questions-file element #{idx} must be string or object") + + text = str(item.get("text", "")).strip() + if not text: + continue + case_id = str(item.get("id", f"Q{idx:03d}")).strip() or f"Q{idx:03d}" + expected_intent = item.get("expected_intent") + expected_mode = item.get("expected_mode", "address_query") + session = item.get("session") + cases.append( + QuestionCase( + id=case_id, + text=text, + expected_intent=str(expected_intent).strip() if expected_intent else None, + expected_mode=str(expected_mode).strip() if expected_mode else None, + session=str(session).strip() if session else None, + ) + ) + + if not cases: + raise ValueError("questions-file has no non-empty cases") + return cases + + +def post_json(url: str, payload: dict[str, Any], timeout_sec: int) -> tuple[int, dict[str, Any]]: + data = json.dumps(payload, ensure_ascii=False).encode("utf-8") + req = urllib.request.Request(url, data=data, headers={"Content-Type": "application/json"}, method="POST") + try: + with urllib.request.urlopen(req, timeout=timeout_sec) as response: + status = int(response.getcode()) + body = json.loads(response.read().decode("utf-8")) + return status, body + except urllib.error.HTTPError as error: + status = int(error.code) + raw = error.read().decode("utf-8", errors="replace") + try: + return status, json.loads(raw) + except json.JSONDecodeError: + return status, {"ok": False, "error": {"code": "HTTP_ERROR", "message": raw}} + + +def main() -> None: + args = parse_args() + questions_path = Path(args.questions_file).resolve() + output_root = Path(args.output_root).resolve() + cases = load_cases(questions_path) + + run_id = args.run_id.strip() or f"{datetime.now().date().isoformat()}_Address_Slang_Live_Stress_{now_stamp()}" + run_dir = output_root / run_id + run_dir.mkdir(parents=True, exist_ok=True) + + session_map: dict[str, str] = {} + rows: list[dict[str, Any]] = [] + elapsed_values: list[int] = [] + + for index, case in enumerate(cases, start=1): + if case.session: + session_id = session_map.get(case.session) + if not session_id: + session_id = f"asst-{run_id}-{case.session}" + session_map[case.session] = session_id + else: + session_id = f"asst-{run_id}-{case.id.lower()}" + + payload = { + "session_id": session_id, + "user_message": case.text, + "mode": "assistant", + "promptVersion": args.prompt_version, + "llmProvider": args.llm_provider, + "model": args.llm_model, + "baseUrl": args.llm_base_url, + "temperature": args.temperature, + "maxOutputTokens": args.max_output_tokens, + "useMock": False, + } + + started = time.perf_counter() + status_code, body = post_json(args.backend_url, payload, args.timeout_sec) + elapsed_ms = int((time.perf_counter() - started) * 1000) + elapsed_values.append(elapsed_ms) + + ok_flag = bool(body.get("ok")) if isinstance(body, dict) else False + debug = {} + if isinstance(body, dict): + debug = body.get("debug") or body.get("conversation_item", {}).get("debug") or {} + if not isinstance(debug, dict): + debug = {} + + actual_intent = debug.get("detected_intent") + actual_mode = debug.get("detected_mode") + reply_type = body.get("reply_type") if isinstance(body, dict) else None + trace_id = debug.get("trace_id") or body.get("trace_id") + + intent_match = case.expected_intent is None or actual_intent == case.expected_intent + mode_match = case.expected_mode is None or actual_mode == case.expected_mode + semantic_pass = bool(intent_match and mode_match and status_code == 200 and ok_flag) + + row = { + "index": index, + "id": case.id, + "question": case.text, + "session": case.session, + "session_id": session_id, + "status_code": status_code, + "ok": ok_flag, + "elapsed_ms": elapsed_ms, + "reply_type": reply_type, + "trace_id": trace_id, + "assistant_reply": body.get("assistant_reply") if isinstance(body, dict) else None, + "expected_intent": case.expected_intent, + "actual_intent": actual_intent, + "intent_match": intent_match, + "expected_mode": case.expected_mode, + "actual_mode": actual_mode, + "mode_match": mode_match, + "semantic_pass": semantic_pass, + "mcp_call_status": debug.get("mcp_call_status"), + "limited_reason_category": debug.get("limited_reason_category"), + "llm_decomposition_applied": debug.get("llm_decomposition_applied"), + "llm_decomposition_reason": debug.get("llm_decomposition_reason"), + "fallback_rule_hit": debug.get("fallback_rule_hit"), + "error_code": body.get("error", {}).get("code") if isinstance(body, dict) and isinstance(body.get("error"), dict) else None, + "error_message": body.get("error", {}).get("message") if isinstance(body, dict) and isinstance(body.get("error"), dict) else None, + } + rows.append(row) + + print( + f"[{index:03d}/{len(cases):03d}] {case.id} | status={status_code} reply={reply_type} " + f"intent={actual_intent} mode={actual_mode} pass={semantic_pass}" + ) + + reply_counter = Counter(str(r.get("reply_type")) for r in rows) + intent_counter = Counter(str(r.get("actual_intent")) for r in rows) + mode_counter = Counter(str(r.get("actual_mode")) for r in rows) + mcp_counter = Counter(str(r.get("mcp_call_status")) for r in rows) + limited_counter = Counter(str(r.get("limited_reason_category")) for r in rows if r.get("limited_reason_category") is not None) + + semantic_pass_count = sum(1 for r in rows if r.get("semantic_pass")) + factual_count = sum(1 for r in rows if r.get("reply_type") == "factual") + ok_200_count = sum(1 for r in rows if r.get("status_code") == 200 and r.get("ok")) + llm_decomposition_applied_count = sum(1 for r in rows if r.get("llm_decomposition_applied") is True) + avg_elapsed = round(statistics.mean(elapsed_values), 1) if elapsed_values else 0.0 + + summary = { + "run_id": run_id, + "generated_at": datetime.now().isoformat(timespec="seconds"), + "source_questions_file": str(questions_path), + "backend_url": args.backend_url, + "llm_provider": args.llm_provider, + "llm_model": args.llm_model, + "llm_base_url": args.llm_base_url, + "totals": { + "questions_total": len(rows), + "ok_200_count": ok_200_count, + "semantic_pass_count": semantic_pass_count, + "semantic_pass_rate": round(semantic_pass_count / len(rows), 4) if rows else 0.0, + "factual_count": factual_count, + "partial_coverage_count": sum(1 for r in rows if r.get("reply_type") == "partial_coverage"), + "clarification_required_count": sum(1 for r in rows if r.get("reply_type") == "clarification_required"), + "http_error_count": sum(1 for r in rows if r.get("status_code") != 200), + "llm_decomposition_applied_count": llm_decomposition_applied_count, + "avg_elapsed_ms": avg_elapsed, + }, + "distributions": { + "reply_type": dict(reply_counter), + "actual_intent": dict(intent_counter), + "actual_mode": dict(mode_counter), + "mcp_call_status": dict(mcp_counter), + "limited_reason_category": dict(limited_counter), + }, + } + + failures = [ + r + for r in rows + if not r.get("semantic_pass") + or r.get("status_code") != 200 + or r.get("reply_type") in {"clarification_required", "backend_error"} + ] + + (run_dir / "run_summary.json").write_text(json.dumps(summary, ensure_ascii=False, indent=2) + "\n", encoding="utf-8") + (run_dir / "full_live_results.json").write_text( + json.dumps({"run_id": run_id, "generated_at": summary["generated_at"], "summary": summary, "rows": rows}, ensure_ascii=False, indent=2) + + "\n", + encoding="utf-8", + ) + (run_dir / "failures_only.json").write_text(json.dumps(failures, ensure_ascii=False, indent=2) + "\n", encoding="utf-8") + + lines = [ + f"# {run_id}", + "", + f"Generated at: {summary['generated_at']}", + f"Questions file: {questions_path}", + f"Backend URL: {args.backend_url}", + f"LLM: {args.llm_provider} / {args.llm_model} @ {args.llm_base_url}", + "", + "## Totals", + f"- questions_total: {summary['totals']['questions_total']}", + f"- ok_200_count: {summary['totals']['ok_200_count']}", + f"- semantic_pass_count: {summary['totals']['semantic_pass_count']}", + f"- semantic_pass_rate: {summary['totals']['semantic_pass_rate']}", + f"- factual_count: {summary['totals']['factual_count']}", + f"- partial_coverage_count: {summary['totals']['partial_coverage_count']}", + f"- clarification_required_count: {summary['totals']['clarification_required_count']}", + f"- http_error_count: {summary['totals']['http_error_count']}", + f"- llm_decomposition_applied_count: {summary['totals']['llm_decomposition_applied_count']}", + f"- avg_elapsed_ms: {summary['totals']['avg_elapsed_ms']}", + "", + "## Files", + "- run_summary.json", + "- full_live_results.json", + "- failures_only.json", + ] + (run_dir / "README.md").write_text("\n".join(lines) + "\n", encoding="utf-8") + + print(f"\nRun directory: {run_dir}") + print(f"Semantic pass: {semantic_pass_count}/{len(rows)}") + + +if __name__ == "__main__": + main() +