diff --git a/docs/ADDRESS/000.txt b/docs/ADDRESS/000.txt new file mode 100644 index 0000000..7f8fb84 --- /dev/null +++ b/docs/ADDRESS/000.txt @@ -0,0 +1,747 @@ +# Assistant conversation export +session_id: asst-3KQrGYhD0w +export_mode: technical +exported_at: 2026-04-02T16:09:54.950Z + +## 1. user +message_id: msg-aZNISHU00l +created_at: 2026-04-02T16:04:35.848Z +reply_type: n/a + +За какие годы в базе есть данные? + +## 2. assistant +message_id: msg-EKRX285J1Z +created_at: 2026-04-02T16:04:36.657Z +reply_type: factual +trace_id: address-lUBiGVp1LX + +Профиль периодов базы собран (movement-based aggregate). +Строк агрегата: 20. +Покрытие по датам: 2014-05-27T12:00:00Z.. 2030-08-03T12:00:00Z. +Самый активный месяц по операциям: 2015-02 (1249). +Топ месяцев по операциям: +1. 2015-02: 1249 +2. 2015-01: 924 +3. 2015-12: 225 +4. 2015-09: 162 +5. 2015-03: 110 + +### technical_debug_payload_json +```json +{ + "trace_id": "address-lUBiGVp1LX", + "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": [ + "management_profile_signal_detected", + "shape_not_detected", + "period_coverage_profile_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": "period_coverage_profile", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "limit": 20 + }, + "missing_required_filters": [], + "selected_recipe": "address_period_coverage_profile_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "matched_non_empty", + "rows_fetched": 20, + "raw_rows_received": 20, + "rows_after_account_scope": 20, + "rows_after_recipe_filter": 20, + "rows_materialized": 20, + "rows_matched": 20, + "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_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": "За какие годы в базе есть данные?", + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "sanitized_user_message": "за какие годы в базе есть данные?", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null +} +``` + +## 3. user +message_id: msg-2AdcL2htV8 +created_at: 2026-04-02T16:05:21.646Z +reply_type: n/a + +Какой год самый активный по количеству документов? + +## 4. assistant +message_id: msg-I_td0fKwXe +created_at: 2026-04-02T16:05:27.411Z +reply_type: factual +trace_id: address-YhDBgtmKsB + +Профиль периодов базы собран (movement-based aggregate). +Строк агрегата: 20. +Покрытие по датам: 2014-05-27T12:00:00Z.. 2030-08-03T12:00:00Z. +Самый активный месяц по операциям: 2015-02 (1249). +Топ месяцев по операциям: +1. 2015-02: 1249 +2. 2015-01: 924 +3. 2015-12: 225 +4. 2015-09: 162 +5. 2015-03: 110 + +### technical_debug_payload_json +```json +{ + "trace_id": "address-YhDBgtmKsB", + "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": [ + "management_profile_signal_detected", + "document_list_signal_detected", + "period_coverage_profile_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": "period_coverage_profile", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "limit": 20 + }, + "missing_required_filters": [], + "selected_recipe": "address_period_coverage_profile_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "matched_non_empty", + "rows_fetched": 20, + "raw_rows_received": 20, + "rows_after_account_scope": 20, + "rows_after_recipe_filter": 20, + "rows_materialized": 20, + "rows_matched": 20, + "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_SUMMARY", + "execution_lane": "address_query", + "llm_decomposition_applied": false, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "uHF8hKRPNeVaEz", + "llm_decomposition_effective_message": "Какой год самый активный по количеству документов?", + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "sanitized_user_message": "какой год самый активный по количеству документов?", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "uHF8hKRPNeVaEz", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "Какой год самый активный по количеству документов?" + } +} +``` + +## 5. user +message_id: msg-epEcLkLqBg +created_at: 2026-04-02T16:05:53.209Z +reply_type: n/a + +Какой месяц самый активный по количеству операций + +## 6. assistant +message_id: msg-Tatd8G4RuZ +created_at: 2026-04-02T16:05:55.249Z +reply_type: factual +trace_id: address-eq9t1zFuet + +Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу. +Собран список банковских операций по контрагенту (live address lane). +Строк отобрано: 124. +1. 2022-04-13T12:00:00Z | Поступление на расчетный счет 00000000004 от 13.04.2022 12:00:00 | 0 / 0 | 1200000 | аналитика: СервисКонсалт, ООО +2. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 0 / 0 | 2254115 | аналитика: НОРТОН +3. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 0 / 0 | 1699940 | аналитика: МНН +4. 2022-01-20T12:00:03Z | Поступление на расчетный счет 00000000001 от 20.01.2022 12:00:03 | 0 / 0 | 890660 | аналитика: Чепурнов П.Д. +5. 2021-11-10T12:00:07Z | Поступление на расчетный счет 00000000013 от 10.11.2021 12:00:07 | 0 / 0 | 20000 | аналитика: Группа +6. 2021-09-29T12:00:03Z | Поступление на расчетный счет 00000000012 от 29.09.2021 12:00:03 | 0 / 0 | 50000 | аналитика: Группа +7. 2021-08-31T12:00:04Z | Поступление на расчетный счет 00000000011 от 31.08.2021 12:00:04 | 0 / 0 | 120500 | аналитика: Группа +8. 2021-06-22T12:00:00Z | Поступление на расчетный счет 00000000010 от 22.06.2021 12:00:00 | 0 / 0 | 498630 | аналитика: Группа +9. 2021-06-09T12:00:05Z | Поступление на расчетный счет 00000000009 от 09.06.2021 12:00:05 | 0 / 0 | 418960 | аналитика: Группа +10. 2021-04-28T12:00:08Z | Поступление на расчетный счет 00000000008 от 28.04.2021 12:00:08 | 0 / 0 | 564300 | аналитика: Группа +11. 2021-04-22T12:00:00Z | Поступление на расчетный счет 00000000007 от 22.04.2021 12:00:00 | 0 / 0 | 982420 | аналитика: Группа +12. 2021-04-13T12:00:11Z | Поступление на расчетный счет 00000000006 от 13.04.2021 12:00:11 | 0 / 0 | 1882400 | аналитика: Группа +13. 2021-03-25T12:00:02Z | Поступление на расчетный счет 00000000005 от 25.03.2021 12:00:02 | 0 / 0 | 644315 | аналитика: Группа +14. 2021-03-24T12:00:03Z | Поступление на расчетный счет 00000000004 от 24.03.2021 12:00:03 | 0 / 0 | 1219990 | аналитика: Группа +15. 2021-03-18T12:00:00Z | Поступление на расчетный счет 00000000003 от 18.03.2021 12:00:00 | 0 / 0 | 1425310 | аналитика: Группа +16. 2021-03-12T12:00:03Z | Поступление на расчетный счет 00000000002 от 12.03.2021 12:00:03 | 0 / 0 | 214600 | аналитика: Группа +17. 2021-02-19T12:00:01Z | Поступление на расчетный счет 00000000001 от 19.02.2021 12:00:01 | 0 / 0 | 518600 | аналитика: Группа +18. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа +19. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа +20. 2020-12-16T16:20:52Z | Списание с расчетного счета 00000000294 от 16.12.2020 16:20:52 | 0 / 0 | 3849.26 | аналитика: УФК по г. Москве (для ГУ - Отделения ПФР по г. Москве и МО) +21. 2020-12-16T16:20:51Z | Списание с расчетного счета 00000000293 от 16.12.2020 16:20:51 | 0 / 0 | 60 | аналитика: СБЕРБАНК, ПАО +22. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа +23. 2020-11-30T12:00:07Z | Поступление на расчетный счет 00000000041 от 30.11.2020 12:00:07 | 0 / 0 | 38900 | аналитика: Группа +25. 2020-11-19T12:00:04Z | Поступление на расчетный счет 00000000039 от 19.11.2020 12:00:04 | 0 / 0 | 3320600 | аналитика: Группа +26. 2020-11-18T12:00:05Z | Поступление на расчетный счет 00000000038 от 18.11.2020 12:00:05 | 0 / 0 | 745300 | аналитика: Группа +27. 2020-11-18T12:00:04Z | Поступление на расчетный счет 00000000037 от 18.11.2020 12:00:04 | 0 / 0 | 320000 | аналитика: Группа +29. 2020-11-16T16:08:51Z | Списание с расчетного счета 00000000262 от 16.11.2020 16:08:51 | 0 / 0 | 8700 | аналитика: ВИЗАНТИЯ +30. 2020-11-13T12:00:03Z | Поступление на расчетный счет 00000000036 от 13.11.2020 12:00:03 | 0 / 0 | 313600 | аналитика: Группа +31. 2020-11-10T15:39:13Z | Поступление на расчетный счет 00000000035 от 10.11.2020 15:39:13 | 0 / 0 | 328300 | аналитика: Группа +32. 2020-10-26T12:00:00Z | Поступление на расчетный счет 00000000034 от 26.10.2020 12:00:00 | 0 / 0 | 175000 | аналитика: Группа +34. 2020-08-20T12:00:06Z | Поступление на расчетный счет 00000000032 от 20.08.2020 12:00:06 | 0 / 0 | 3126005 | аналитика: Группа +35. 2020-08-11T13:16:37Z | Поступление на расчетный счет 00000000031 от 11.08.2020 13:16:37 | 0 / 0 | 55200 | аналитика: МНН +36. 2020-08-11T13:15:30Z | Поступление на расчетный счет 00000000030 от 11.08.2020 13:15:30 | 0 / 0 | 221000 | аналитика: Гамма-мебель, ООО +37. 2020-07-30T12:00:00Z | Поступление на расчетный счет 00000000029 от 30.07.2020 12:00:00 | 0 / 0 | 20000 | аналитика: Группа +38. 2020-07-27T12:00:00Z | Поступление на расчетный счет 00000000028 от 27.07.2020 12:00:00 | 0 / 0 | 40860 | аналитика: Группа +39. 2020-07-13T12:00:00Z | Поступление на расчетный счет 00000000027 от 13.07.2020 12:00:00 | 0 / 0 | 276873.6 | аналитика: «Олимпстрой» +40. 2020-06-16T12:00:02Z | Поступление на расчетный счет 00000000026 от 16.06.2020 12:00:02 | 0 / 0 | 250000 | аналитика: Гамма-мебель, ООО +41. 2020-06-03T00:00:02Z | Поступление на расчетный счет 00000000025 от 03.06.2020 0:00:02 | 0 / 0 | 1642764.88 | аналитика: ЗАО Ремонтно-строительная фирма «Ремстройсервис» +42. 2020-06-03T00:00:01Z | Поступление на расчетный счет 00000000024 от 03.06.2020 0:00:01 | 0 / 0 | 297760 | аналитика: ЗАО Ремонтно-строительная фирма «Ремстройсервис» +43. 2020-05-21T12:00:00Z | Поступление на расчетный счет 00000000023 от 21.05.2020 12:00:00 | 0 / 0 | 250546.24 | аналитика: ЗАО Ремонтно-строительная фирма «Ремстройсервис» +44. 2020-05-15T12:00:02Z | Поступление на расчетный счет 00000000022 от 15.05.2020 12:00:02 | 0 / 0 | 765000 | аналитика: ПрофТренд,ООО +45. 2020-04-27T12:00:00Z | Поступление на расчетный счет 00000000021 от 27.04.2020 12:00:00 | 0 / 0 | 500000 | аналитика: ЭталонМебель +46. 2020-03-26T12:00:04Z | Поступление на расчетный счет 00000000020 от 26.03.2020 12:00:04 | 0 / 0 | 355000 | аналитика: ЭталонМебель +47. 2020-03-19T12:00:01Z | Поступление на расчетный счет 00000000019 от 19.03.2020 12:00:01 | 0 / 0 | 4000000 | аналитика: ЭталонМебель +48. 2020-03-19T12:00:00Z | Поступление на расчетный счет 00000000018 от 19.03.2020 12:00:00 | 0 / 0 | 2500000 | аналитика: НОРТОН +49. 2020-03-02T12:00:04Z | Поступление на расчетный счет 00000000017 от 02.03.2020 12:00:04 | 0 / 0 | 0.26 | аналитика: СБЕРБАНК, ПАО +50. 2020-03-02T12:00:03Z | Поступление на расчетный счет 00000000016 от 02.03.2020 12:00:03 | 0 / 0 | 3000000 | аналитика: ИП Калинин Н.М. +51. 2020-03-02T12:00:02Z | Поступление на расчетный счет 00000000015 от 02.03.2020 12:00:02 | 0 / 0 | 2500000 | аналитика: Лайсвуд, ООО +52. 2020-03-02T12:00:01Z | Поступление на расчетный счет 00000000013 от 02.03.2020 12:00:01 | 0 / 0 | 1100000 | аналитика: Гамма-мебель, ООО +53. 2020-03-02T12:00:00Z | Поступление на расчетный счет 00000000012 от 02.03.2020 12:00:00 | 0 / 0 | 1000000 | аналитика: ЭталонМебель +54. 2020-03-02T00:00:00Z | Поступление на расчетный счет 00000000014 от 02.03.2020 0:00:00 | 0 / 0 | 1920000 | аналитика: НОРТОН +55. 2020-02-21T12:00:02Z | Поступление на расчетный счет 00000000011 от 21.02.2020 12:00:02 | 0 / 0 | 400000 | аналитика: НОРТОН +56. 2020-02-18T12:00:03Z | Поступление на расчетный счет 00000000010 от 18.02.2020 12:00:03 | 0 / 0 | 200000 | аналитика: ИП Калинин Н.М. +57. 2020-02-07T12:00:03Z | Поступление на расчетный счет 00000000009 от 07.02.2020 12:00:03 | 0 / 0 | 304300 | аналитика: Смарт +58. 2020-02-03T00:00:01Z | Поступление на расчетный счет 00000000008 от 03.02.2020 0:00:01 | 0 / 0 | 0.01 | аналитика: СБЕРБАНК, ПАО +59. 2020-02-03T00:00:00Z | Поступление на расчетный счет 00000000006 от 03.02.2020 0:00:00 | 0 / 0 | 2500000 | аналитика: СБЕРБАНК, ПАО +60. 2020-02-03T00:00:00Z | Поступление на расчетный счет 00000000007 от 03.02.2020 0:00:00 | 0 / 0 | 1778.69 | аналитика: СБЕРБАНК, ПАО +61. 2020-01-20T11:36:40Z | Поступление на расчетный счет 00000000005 от 20.01.2020 11:36:40 | 0 / 0 | 3678.69 | аналитика: СБЕРБАНК, ПАО +62. 2020-01-20T11:35:27Z | Поступление на расчетный счет 00000000004 от 20.01.2020 11:35:27 | 0 / 0 | 3600000 | аналитика: СБЕРБАНК, ПАО +63. 2020-01-09T12:00:02Z | Поступление на расчетный счет 00000000003 от 09.01.2020 12:00:02 | 0 / 0 | 6736.6 | аналитика: СБЕРБАНК, ПАО +64. 2020-01-09T12:00:01Z | Поступление на расчетный счет 00000000002 от 09.01.2020 12:00:01 | 0 / 0 | 6680000 | аналитика: СБЕРБАНК, ПАО +65. 2020-01-09T12:00:00Z | Поступление на расчетный счет 00000000001 от 09.01.2020 12:00:00 | 0 / 0 | 0.06 | аналитика: СБЕРБАНК, ПАО +66. 2019-12-26T12:00:03Z | Поступление на расчетный счет 00000000073 от 26.12.2019 12:00:03 | 0 / 0 | 400035.05 | аналитика: ИП Калинин Н.М. +67. 2019-12-25T16:09:27Z | Поступление на расчетный счет 00000000072 от 25.12.2019 16:09:27 | 0 / 0 | 6787560 | аналитика: ГКУ +68. 2019-12-24T14:52:22Z | Списание с расчетного счета 00000000552 от 24.12.2019 14:52:22 | 0 / 0 | 5100 | аналитика: СБЕРБАНК, ПАО +69. 2019-12-24T14:52:21Z | Поступление на расчетный счет 00000000071 от 24.12.2019 14:52:21 | 0 / 0 | 400000 | аналитика: НОРТОН +70. 2019-12-24T14:52:20Z | Списание с расчетного счета 00000000551 от 24.12.2019 14:52:20 | 0 / 0 | 22100 | аналитика: УФК МФ по г. Москве (ИФНС России №36 по г. Москве) +71. 2019-12-24T14:51:56Z | Списание с расчетного счета 00000000546 от 24.12.2019 14:51:56 | 0 / 0 | 32560 | аналитика: УФК по г. Москве (для ГУ - Отделения ПФР по г. Москве и МО) +72. 2019-12-24T14:51:45Z | Списание с расчетного счета 00000000545 от 24.12.2019 14:51:45 | 0 / 0 | 7548 | аналитика: УФК по г. Москве (для ГУ - Отделения ПФР по г. Москве и МО) +73. 2019-12-24T14:51:33Z | Списание с расчетного счета 00000000544 от 24.12.2019 14:51:33 | 0 / 0 | 296 | аналитика: УФК по г. Москве (ГУ - +74. 2019-12-13T12:00:04Z | Поступление на расчетный счет 00000000070 от 13.12.2019 12:00:04 | 0 / 0 | 572800 | аналитика: ИП Калинин Н.М. +75. 2019-12-11T12:35:33Z | Поступление на расчетный счет 00000000069 от 11.12.2019 12:35:33 | 0 / 0 | 399800 | аналитика: Гамма-мебель, ООО +76. 2019-12-02T12:00:02Z | Поступление на расчетный счет 00000000068 от 02.12.2019 12:00:02 | 0 / 0 | 0.59 | аналитика: СБЕРБАНК, ПАО +77. 2019-11-29T12:00:07Z | Поступление на расчетный счет 00000000067 от 29.11.2019 12:00:07 | 0 / 0 | 120800 | аналитика: Смарт +78. 2019-11-20T12:00:00Z | Поступление на расчетный счет 00000000066 от 20.11.2019 12:00:00 | 0 / 0 | 155000 | аналитика: НОРТОН +79. 2019-11-18T12:00:00Z | Поступление на расчетный счет 00000000065 от 18.11.2019 12:00:00 | 0 / 0 | 10000 | аналитика: НОРТОН +80. 2019-11-14T00:00:00Z | Поступление на расчетный счет 00000000064 от 14.11.2019 0:00:00 | 0 / 0 | 250000 | аналитика: НОРТОН +81. 2019-11-06T12:00:00Z | Поступление на расчетный счет 00000000063 от 06.11.2019 12:00:00 | 0 / 0 | 85000 | аналитика: ИП Калинин Н.М. +82. 2019-11-01T12:00:00Z | Поступление на расчетный счет 00000000062 от 01.11.2019 12:00:00 | 0 / 0 | 0.04 | аналитика: СБЕРБАНК, ПАО +83. 2019-10-25T12:00:00Z | Поступление на расчетный счет 00000000061 от 25.10.2019 12:00:00 | 0 / 0 | 570177.4 | аналитика: ГБПОУ г. Москвы \Московская театральная школа Олега Табакова\ +84. 2019-10-23T12:00:07Z | Поступление на расчетный счет 00000000060 от 23.10.2019 12:00:07 | 0 / 0 | 331634.63 | аналитика: ГБПОУ г. Москвы \Московская театральная школа Олега Табакова\ +85. 2019-10-23T12:00:06Z | Поступление на расчетный счет 00000000059 от 23.10.2019 12:00:06 | 0 / 0 | 203536.42 | аналитика: ГБПОУ г. Москвы \Московская театральная школа Олега Табакова\ +86. 2019-10-23T12:00:05Z | Поступление на расчетный счет 00000000058 от 23.10.2019 12:00:05 | 0 / 0 | 100000 | аналитика: Смарт +87. 2019-10-22T12:00:01Z | Поступление на расчетный счет 00000000057 от 22.10.2019 12:00:01 | 0 / 0 | 943400 | аналитика: Смарт +88. 2019-10-22T12:00:00Z | Поступление на расчетный счет 00000000056 от 22.10.2019 12:00:00 | 0 / 0 | 765000 | аналитика: НОРТОН +89. 2019-10-16T12:00:01Z | Поступление на расчетный счет 00000000055 от 16.10.2019 12:00:01 | 0 / 0 | 364475 | аналитика: ЭталонМебель +90. 2019-10-16T12:00:00Z | Поступление на расчетный счет 00000000053 от 16.10.2019 12:00:00 | 0 / 0 | 120500 | аналитика: ПрофТренд,ООО +91. 2019-10-16T11:58:53Z | Поступление на расчетный счет 00000000054 от 16.10.2019 11:58:53 | 0 / 0 | 161641 | аналитика: Лайсвуд, ООО +92. 2019-10-15T12:00:07Z | Поступление на расчетный счет 00000000052 от 15.10.2019 12:00:07 | 0 / 0 | 5000000 | аналитика: СБЕРБАНК, ПАО +93. 2019-10-08T12:00:00Z | Поступление на расчетный счет 00000000051 от 08.10.2019 12:00:00 | 0 / 0 | 289101 | аналитика: НОРТОН +94. 2019-10-01T12:00:04Z | Поступление на расчетный счет 00000000050 от 01.10.2019 12:00:04 | 0 / 0 | 0.75 | аналитика: СБЕРБАНК, ПАО +95. 2019-09-23T14:49:17Z | Поступление на расчетный счет 00000000049 от 23.09.2019 14:49:17 | 0 / 0 | 211800 | аналитика: МНН +96. 2019-09-16T11:00:00Z | Поступление на расчетный счет 00000000048 от 16.09.2019 11:00:00 | 0 / 0 | 10147409.75 | аналитика: Департамент капитального ремонта города Москвы. +98. 2019-09-02T12:00:01Z | Поступление на расчетный счет 00000000046 от 02.09.2019 12:00:01 | 0 / 0 | 1.61 | аналитика: СБЕРБАНК, ПАО +100. 2019-08-13T12:00:00Z | Поступление на расчетный счет 00000000044 от 13.08.2019 12:00:00 | 0 / 0 | 1250000 | аналитика: НОРТОН +101. 2019-08-05T18:34:52Z | Списание с расчетного счета 00000000350 от 05.08.2019 18:34:52 | 0 / 0 | 8 | аналитика: СБЕРБАНК, ПАО +102. 2019-08-01T14:38:57Z | Поступление на расчетный счет 00000000043 от 01.08.2019 14:38:57 | 0 / 0 | 0.07 | аналитика: СБЕРБАНК, ПАО +103. 2019-08-01T14:38:56Z | Поступление на расчетный счет 00000000042 от 01.08.2019 14:38:56 | 0 / 0 | 4341417.9 | аналитика: Департамент капитального ремонта города Москвы. +104. 2019-07-31T12:00:22Z | Поступление на расчетный счет 00000000041 от 31.07.2019 12:00:22 | 0 / 0 | 885750 | аналитика: МОСКОВСКИЙ ФИЛИАЛ ООО КБ\МЕГАПОЛИС\ +105. 2019-07-31T00:00:00Z | Поступление на расчетный счет 00000000040 от 31.07.2019 0:00:00 | 0 / 0 | 5851476.3 | аналитика: Департамент капитального ремонта города Москвы. +106. 2019-07-30T12:28:33Z | Поступление на расчетный счет 00000000039 от 30.07.2019 12:28:33 | 0 / 0 | 150000 | аналитика: ПрофТренд,ООО +107. 2019-07-26T12:00:03Z | Поступление на расчетный счет 00000000038 от 26.07.2019 12:00:03 | 0 / 0 | 2300000 | аналитика: НОРТОН +108. 2019-07-26T12:00:00Z | Поступление на расчетный счет 00000000037 от 26.07.2019 12:00:00 | 0 / 0 | 1089000 | аналитика: МОСКОВСКИЙ ФИЛИАЛ ООО КБ\МЕГАПОЛИС\ +109. 2019-07-19T12:00:00Z | Поступление на расчетный счет 00000000036 от 19.07.2019 12:00:00 | 0 / 0 | 659709 | аналитика: МОСКОВСКИЙ ФИЛИАЛ ООО КБ\МЕГАПОЛИС\ +110. 2019-07-17T12:26:22Z | Поступление на расчетный счет 00000000035 от 17.07.2019 12:26:22 | 0 / 0 | 2545480 | аналитика: МОСКОВСКИЙ ФИЛИАЛ ООО КБ\МЕГАПОЛИС\ +111. 2019-07-05T00:00:03Z | Поступление на расчетный счет 00000000034 от 05.07.2019 0:00:03 | 0 / 0 | 3065950 | аналитика: МОСКОВСКИЙ ФИЛИАЛ ООО КБ\МЕГАПОЛИС\ +112. 2019-07-01T12:00:03Z | Поступление на расчетный счет 00000000033 от 01.07.2019 12:00:03 | 0 / 0 | 1.88 | аналитика: СБЕРБАНК, ПАО +113. 2019-07-01T12:00:02Z | Поступление на расчетный счет 00000000032 от 01.07.2019 12:00:02 | 0 / 0 | 1943295 | аналитика: Лайсвуд, ООО +114. 2019-06-26T00:00:01Z | Поступление на расчетный счет 00000000031 от 26.06.2019 0:00:01 | 0 / 0 | 4148050 | аналитика: МОСКОВСКИЙ ФИЛИАЛ ООО КБ\МЕГАПОЛИС\ +115. 2019-06-25T17:29:13Z | Поступление на расчетный счет 00000000030 от 25.06.2019 17:29:13 | 0 / 0 | 2606060 | аналитика: МОСКОВСКИЙ ФИЛИАЛ ООО КБ\МЕГАПОЛИС\ +116. 2019-06-25T17:29:10Z | Поступление на расчетный счет 00000000029 от 25.06.2019 17:29:10 | 0 / 0 | 57700 | аналитика: Лайсвуд, ООО +117. 2019-06-24T12:00:07Z | Поступление на расчетный счет 00000000028 от 24.06.2019 12:00:07 | 0 / 0 | 877000 | аналитика: Лайсвуд, ООО +118. 2019-06-17T12:10:24Z | Поступление на расчетный счет 00000000027 от 17.06.2019 12:10:24 | 0 / 0 | 9500644.3 | аналитика: Департамент капитального ремонта города Москвы. +119. 2019-06-17T12:10:23Z | Поступление на расчетный счет 00000000026 от 17.06.2019 12:10:23 | 0 / 0 | 6369341.5 | аналитика: Департамент капитального ремонта города Москвы. +120. 2019-06-13T12:00:01Z | Поступление на расчетный счет 00000000025 от 13.06.2019 12:00:01 | 0 / 0 | 20000 | аналитика: МНН +121. 2019-06-10T17:03:15Z | Поступление на расчетный счет 00000000024 от 10.06.2019 17:03:15 | 0 / 0 | 7714130 | аналитика: МОСКОВСКИЙ ФИЛИАЛ ООО КБ\МЕГАПОЛИС\ +122. 2019-06-07T13:19:06Z | Поступление на расчетный счет 00000000023 от 07.06.2019 13:19:06 | 0 / 0 | 13590525.6 | аналитика: Департамент капитального ремонта города Москвы. +123. 2019-06-07T13:19:05Z | Поступление на расчетный счет 00000000022 от 07.06.2019 13:19:05 | 0 / 0 | 3874887.07 | аналитика: Департамент капитального ремонта города Москвы. +124. 2019-06-07T13:19:04Z | Поступление на расчетный счет 00000000021 от 07.06.2019 13:19:04 | 0 / 0 | 386923.5 | аналитика: Департамент капитального ремонта города Москвы. + +### technical_debug_payload_json +```json +{ + "trace_id": "address-eq9t1zFuet", + "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", + "anchor_not_matched_fallback_rows" + ], + "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": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "mcp_call_status": "matched_non_empty", + "rows_fetched": 1000, + "raw_rows_received": 1000, + "rows_after_account_scope": 124, + "rows_after_recipe_filter": 0, + "rows_materialized": 124, + "rows_matched": 124, + "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": false, + "llm_provider_used": "local", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "банковские операции по контрагенту количеству", + "llm_decomposition_reason": "fallback_rule_applied_without_llm", + "fallback_rule_hit": "bank_operations_counterparty_rewrite", + "sanitized_user_message": "какой месяц самый активный по количеству операций", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null +} +``` + +## 7. user +message_id: msg-s8Y4cC0eSo +created_at: 2026-04-02T16:06:51.459Z +reply_type: n/a + +Какие типы документов используются чаще всего в базе? + +## 8. assistant +message_id: msg-jl4AqKTa9W +created_at: 2026-04-02T16:06:56.851Z +reply_type: partial_coverage +trace_id: address-hNDQIn8hKi + +Не удалось выполнить адресный live-запрос в V1. +Причина: live MCP вызов завершился ошибкой. +Что нужно уточнить: {ВнешняяОбработка.MCPToolkit.Форма.Форма.Форма(1989)}: Ошибка при вызове метода контекста (Выполнить): {(23, 5)}: Недопустимое поле для группировки +<>ЛЕВ(Движения.СчетДт.Код, 2). + +### technical_debug_payload_json +```json +{ + "trace_id": "address-hNDQIn8hKi", + "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", + "document_type_and_account_section_profile_signal_detected", + "{ВнешняяОбработка.MCPToolkit.Форма.Форма.Форма(1989)}: Ошибка при вызове метода контекста (Выполнить): {(23, 5)}: Недопустимое поле для группировки\n<>ЛЕВ(Движения.СчетДт.Код, 2)" + ], + "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": "document_type_and_account_section_profile", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "limit": 20 + }, + "missing_required_filters": [], + "selected_recipe": "address_document_type_and_account_section_profile_v1", + "mcp_call_status_legacy": "error", + "account_scope_mode": "preferred", + "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": "error", + "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": "UNKNOWN", + "limited_reason_category": "execution_error", + "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": "mVOahmoBPM_s6k", + "llm_decomposition_effective_message": "Какие типы документов используются чаще всего в базе?", + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "sanitized_user_message": "какие типы документов используются чаще всего в базе?", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "mVOahmoBPM_s6k", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "Какие типы документов используются чаще всего в базе?" + } +} +``` + +## 9. user +message_id: msg--Ca80tRkFu +created_at: 2026-04-02T16:07:07.478Z +reply_type: n/a + +Какие разделы учета наиболее заполнены и какие почти не используются? + +## 10. assistant +message_id: msg-poa532-zrB +created_at: 2026-04-02T16:07:08.043Z +reply_type: partial_coverage +trace_id: address-m94uk3kCNM + +Не удалось выполнить адресный live-запрос в V1. +Причина: live MCP вызов завершился ошибкой. +Что нужно уточнить: {ВнешняяОбработка.MCPToolkit.Форма.Форма.Форма(1989)}: Ошибка при вызове метода контекста (Выполнить): {(23, 5)}: Недопустимое поле для группировки +<>ЛЕВ(Движения.СчетДт.Код, 2). + +### technical_debug_payload_json +```json +{ + "trace_id": "address-m94uk3kCNM", + "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": [ + "management_profile_signal_detected", + "shape_not_detected", + "document_type_and_account_section_profile_signal_detected", + "{ВнешняяОбработка.MCPToolkit.Форма.Форма.Форма(1989)}: Ошибка при вызове метода контекста (Выполнить): {(23, 5)}: Недопустимое поле для группировки\n<>ЛЕВ(Движения.СчетДт.Код, 2)" + ], + "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": "document_type_and_account_section_profile", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "limit": 20 + }, + "missing_required_filters": [], + "selected_recipe": "address_document_type_and_account_section_profile_v1", + "mcp_call_status_legacy": "error", + "account_scope_mode": "preferred", + "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": "error", + "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": "UNKNOWN", + "limited_reason_category": "execution_error", + "response_type": "LIMITED_WITH_REASON", + "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": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null +} +``` diff --git a/docs/ADDRESS/address_query/README.md b/docs/ADDRESS/address_query/README.md index e649c29..187a776 100644 --- a/docs/ADDRESS/address_query/README.md +++ b/docs/ADDRESS/address_query/README.md @@ -21,6 +21,8 @@ Поддерживаемые intents в runtime: +- `period_coverage_profile` (Wave-1 B1, pre-gate) +- `document_type_and_account_section_profile` (Wave-1 B1, pre-gate) - `list_open_contracts` - `list_payables_counterparties` - `list_receivables_counterparties` @@ -35,6 +37,7 @@ Ключевой scope-лимит: - `COMPOUND_FACTUAL_QUERY` пока detection-only (без multi-intent execution). +- `period_coverage_profile` и `document_type_and_account_section_profile` реализованы в коде, но еще не закрыты через domain live-gate Batch-1. - `account_turnover_snapshot` и `list_documents_by_type` не реализованы в runtime V1. ## Основные документы @@ -50,6 +53,13 @@ - `step0_preprod_rail_plan_v1.md` - обязательный pre-prod рельсовый этап перед массовым расширением доменов. - `step0_closeout_2026-04-02.md` - факт закрытия Step-0 с артефактами и gate-подтверждением. - `domain_expansion_implementation_plan_v1.md` - план `Step-4`. +- `general_domain_questions_analysis_plan_v1_2026-04-02.md` - глубокий разбор общего домена (40 вопросов), route-модель и batch-план внедрения. +- `management_route_probe_report_g1_2026-04-02.md` - live Batch-0 probe по первой группе общего домена (Q1–Q5) с route-верификацией через MCP/1С. +- `complex_questions_status_and_reuse_map_2026-04-02.md` - сверка кода/доков по "сложным вопросам": что реализовано, что detection-only, и как переиспользовать в продуктовом плане. +- `step4_wave1_batch1_master_checker_v1.md` - master checker первой волны Step-4 (`Q1..Q7 + Q28`) с go/no-go фазами. +- `wave1_batch1_readiness_report_2026-04-02.md` - авто-отчет готовности к старту Batch-1. +- `domain_general_batch1_foundation_card_v1.md` - domain card первой волны (Phase A). +- `step4_wave1_batch1_phaseA_backlog_v1.md` - рабочий backlog по подготовке кода и gate-этапам Batch-1. - `domain_card_template_v1.md` - шаблон описания домена для repeatable delivery. - `domain_acceptance_question_set_template_v1.md` - шаблон структуры domain acceptance question set. - `run_pack_spec_v1.md` - обязательный формат run-артефактов и gate-валидации. @@ -68,6 +78,7 @@ - `python scripts/compare_address_run_summary.py --baseline-summary --candidate-summary ` - `python scripts/run_address_nightly_regression.py` - `python scripts/run_address_nightly_regression.py --dry-run` +- `python scripts/check_address_wave1_batch1_readiness.py` - `powershell -ExecutionPolicy Bypass -File .\scripts\run_address_nightly_regression.ps1` ## Связанные run-паки diff --git a/docs/ADDRESS/address_query/_tmp_probe_now.md b/docs/ADDRESS/address_query/_tmp_probe_now.md new file mode 100644 index 0000000..3db6ba1 --- /dev/null +++ b/docs/ADDRESS/address_query/_tmp_probe_now.md @@ -0,0 +1,112 @@ +# Management Route Probe Report — General Domain Group 1 (Q1–Q5) + +- Дата/время запуска: `2026-04-02T19:55:56+03:00` +- Endpoint: `http://127.0.0.1:6003` +- Channel: `default` +- Контур: `question_mode=address_query`, Batch-0 route probes + +## Вердикт по вопросам группы 1 +- Q1 (покрытие периодов): **PASS** +- Q2 (самый активный год по документам): **PASS** +- Q3 (самый активный месяц по операциям): **PASS** +- Q4 (наиболее частые типы документов): **PASS** +- Q5 (наиболее/наименее заполненные разделы учета): **PASS** + +## Q1 — Покрытие базы и активность по годам +- Мин период: `2014-05-27T12:00:00Z` +- Макс период: `2030-08-03T12:00:00Z` +- Всего операций в регистре: `12659` +- Годы с данными: `2014..2030` (уникальных лет: `13`) +- Топ годов по количеству операций: + - `2015`: `3212` + - `2019`: `2273` + - `2018`: `2234` + - `2020`: `1391` + - `2017`: `1376` + - `2016`: `1187` + - `2021`: `553` + - `2014`: `235` + +## Q2 — Самый активный год по количеству документов +- Метрика: `COUNT(DISTINCT Регистратор)` по годам на `РегистрБухгалтерии.Хозрасчетный`. +- Топ годов: + - `2019`: `1004` + - `2018`: `703` + - `2015`: `671` + - `2016`: `577` + - `2020`: `536` + - `2017`: `456` + - `2021`: `308` + - `2014`: `115` +- Вывод: route дает корректный ranking по документной активности в контуре движений. + +## Q3 — Самый активный месяц по количеству операций +- Метрика: `COUNT(*)` по `НАЧАЛОПЕРИОДА(Период, МЕСЯЦ)`. +- Топ месяцев: + - `2015-02`: `1249` + - `2015-01`: `924` + - `2018-08`: `854` + - `2019-05`: `536` + - `2017-12`: `503` + - `2020-06`: `305` + - `2020-03`: `297` + - `2019-09`: `273` + - `2018-11`: `261` + - `2015-12`: `225` + - `2018-12`: `213` + - `2019-08`: `185` + +## Q4 — Наиболее частые типы документов +- Метрика: `COUNT(DISTINCT Регистратор)` по `ПРЕДСТАВЛЕНИЕ(ТИПЗНАЧЕНИЯ(Регистратор))`. +- Топ типов: + - `Списание с расчетного счета`: `2352` + - `Поступление товаров и услуг`: `486` + - `Регламентная операция`: `414` + - `Поступление на расчетный счет`: `323` + - `Счет-фактура полученный`: `262` + - `Операция (бухгалтерский и налоговый учет)`: `147` + - `Реализация товаров и услуг`: `123` + - `Отражение зарплаты в регламентированном учете`: `87` + - `Приходный кассовый ордер`: `76` + - `Расходный кассовый ордер`: `73` + - `Требование-накладная`: `45` + - `Передача товаров`: `16` + +## Q5 — Заполненность разделов учета +- Метод: агрегирование по первым двум цифрам кода счета (дебет + кредит). +- Топ разделов: + - `90` `Продажи`: `2973` + - `51` `Расчетные счета`: `2967` + - `60` `Расчеты с поставщиками и подрядчиками`: `2793` + - `44` `Расходы на продажу`: `2422` + - `68` `Расчеты по налогам и сборам`: `1554` + - `10` `Материалы`: `1494` + - `19` `НДС по приобретенным ценностям`: `1490` + - `91` `Прочие доходы и расходы`: `1324` + - `41` `Товары`: `1312` + - `76` `Расчеты с разными дебиторами и кредиторами`: `1240` +- Разделы с минимальной активностью (среди использованных): + - `58` `Финансовые вложения`: `2` + - `81` `Собственные акции (доли)`: `2` + - `80` `Уставный капитал`: `5` + - `75` `Расчеты с учредителями`: `16` + - `55` `Специальные счета в банках`: `18` + - `84` `Нераспределенная прибыль (непокрытый убыток)`: `20` + - `26` `Общехозяйственные расходы`: `51` + - `71` `Расчеты с подотчетными лицами`: `76` + - `43` `Готовая продукция`: `81` + - `50` `Касса`: `163` + +## Что подтверждено для продуктового плана +- `R01 period_coverage_profile`: подтвержден (Q1/Q3). +- `R02 document_type_usage_profile`: подтвержден (Q2/Q4). +- `Q5` закрывается route-контрактом через account-section aggregation; нужна фиксация правила для "почти не используются" (порог/квантиль). + +## Ограничения и требования к точности +- Q2/Q4 измеряются по `Регистратор` в движениях; это нужно явно закрепить как `movement-based document activity`. +- Для Q5 нельзя опираться только на raw счета: обязателен post-processing `section = account_code[:2]`. +- Есть записи с редкими/системными кодами (например off-balance); требуется whitelist/normalization policy для бизнес-отчета. + +## Следующий шаг Batch-0 +- Зафиксировать route contracts для `R01` и `R02` в runtime docs. +- Добавить acceptance-вопросы Q1..Q5 в domain pack с жесткой проверкой метрик и сортировки. diff --git a/docs/ADDRESS/address_query/address_scenario_matrix.md b/docs/ADDRESS/address_query/address_scenario_matrix.md index a7217c8..a1aa3b1 100644 --- a/docs/ADDRESS/address_query/address_scenario_matrix.md +++ b/docs/ADDRESS/address_query/address_scenario_matrix.md @@ -31,6 +31,8 @@ | AQ-P0-08 | Покажи документы по договору Y | `list_documents_by_contract` | `contract` | `period_from`, `period_to`, `as_of_date`, `organization`, `counterparty`, `limit`, `sort` | `DOCUMENT`, `DOCUMENT_JOURNAL`, `ACCOUNTING_REGISTER`, `NSI_CATALOG` | `address_documents_by_contract_v1` | `FACTUAL_LIST` | P0 | | AQ-P0-08B | Покажи банковские операции по договору Y | `bank_operations_by_contract` | `contract` | `period_from`, `period_to`, `as_of_date`, `organization`, `counterparty`, `limit`, `sort` | `DOCUMENT`, `DOCUMENT_JOURNAL`, `ACCOUNTING_REGISTER`, `NSI_CATALOG` | `address_bank_operations_by_contract_v1` | `FACTUAL_LIST` | P0 | | AQ-P0-09 | Какие документы формируют остаток по счету 62? | `documents_forming_balance` | `account` + `as_of_date` (`as_of_date` defaulted) | `organization`, `counterparty`, `contract`, `period_from`, `period_to`, `limit`, `sort` | `ACCOUNTING_REGISTER`, `DOCUMENT` | `address_documents_forming_balance_v1` | `FACTUAL_LIST` | P0 | +| AQ-B1-10 | За какие годы/месяцы в базе есть активность? | `period_coverage_profile` | - | `period_from`, `period_to`, `organization`, `limit` | `ACCOUNTING_REGISTER` | `address_period_coverage_profile_v1` | `FACTUAL_SUMMARY` | B1 | +| AQ-B1-11 | Какие типы документов чаще всего и какие разделы учета заполнены/пустые? | `document_type_and_account_section_profile` | - | `period_from`, `period_to`, `organization`, `limit` | `ACCOUNTING_REGISTER`, `DOCUMENT` | `address_document_type_and_account_section_profile_v1` | `FACTUAL_SUMMARY` | B1 | | AQ-P1-10 | Дай обороты по счету 51 за период | `account_turnover_snapshot` | `account`, `period_from`, `period_to` | `organization`, `counterparty`, `limit` | `ACCOUNTING_REGISTER`, `DOCUMENT` | - (not implemented) | `LIMITED_WITH_REASON` | P1 | | AQ-P1-11 | Дай список документов по типу за период | `list_documents_by_type` | `document_type`, `period_from`, `period_to` | `organization`, `counterparty`, `contract`, `limit` | `DOCUMENT`, `DOCUMENT_JOURNAL` | - (not implemented) | `LIMITED_WITH_REASON` | P1 | | AQ-P2-12 | Покажи технические константы конфигурации | `unsupported_for_v1` | - | - | `CONSTANT` | - | `LIMITED_WITH_REASON` | P2 | @@ -50,6 +52,8 @@ Реально реализованы в runtime: +- `period_coverage_profile` +- `document_type_and_account_section_profile` - `list_open_contracts` - `open_items_by_counterparty_or_contract` - `list_documents_by_counterparty` diff --git a/docs/ADDRESS/address_query/complex_questions_status_and_reuse_map_2026-04-02.md b/docs/ADDRESS/address_query/complex_questions_status_and_reuse_map_2026-04-02.md new file mode 100644 index 0000000..ca9ea76 --- /dev/null +++ b/docs/ADDRESS/address_query/complex_questions_status_and_reuse_map_2026-04-02.md @@ -0,0 +1,45 @@ +# Статус сложных вопросов и карта переиспользования (2026-04-02) + +Контур: `question_mode=address_query` + +## 1. Что реально есть в коде сейчас + +1. Сложная форма вопроса распознается: +- `AddressQueryShape` содержит `COMPOUND_FACTUAL_QUERY`. +- `classifyAddressQueryShape()` детектирует compound-сигналы. + +2. Но runtime multi-step исполнения нет: +- `AddressIntent` в runtime ограничен P0-набором + `unknown`. +- В `resolveAddressIntent()` нет management/P1 intent-ов (`account_turnover_snapshot`, `list_documents_by_type`, lifecycle/aging/risk intents). +- В `addressRecipeCatalog.ts` нет recipe под сложные aggregate/comparative management-вопросы. +- В `AddressQueryService` неизвестный intent уходит в `LIMITED_WITH_REASON` (`category=unsupported`), а не в multi-step plan execution. + +Итог: мы не "забили", а остановились на стабилизации P0 и рельсах; сложные вопросы остались в detection/design слое, но не доведены до execution слоя. + +## 2. Что уже можно переиспользовать без переписывания + +1. `Decompose -> Resolve -> Execute -> Compose` каркас уже рабочий. +2. У нас есть зрелый debug-контракт (`reasons`, `limited_reason_category`, stage status), его можно сохранить и расширять. +3. Follow-up context слой уже есть и пригоден для management-цепочек. +4. Gate-механика Step-0 и nightly regression уже в прод-ритме. +5. Для общего домена уже есть: +- смысловая декомпозиция 40 вопросов; +- route-модель `R01..R09`; +- batch rollout (`B1..B5`); +- live-подтверждение первой группы (`Q1..Q5`) через Batch-0 probe. + +## 3. Что усиливать в продуктовом плане + +1. Не внедрять домены "по одному интенту", а только batch-пачками с gate. +2. Для каждого route фиксировать: +- fact-источник (`movement` vs `document`); +- ключи фильтрации (`*_Key`); +- метрики и формулы; +- правила сортировки и tie-break. +3. Для сложных C4 вопросов сначала включить multi-step executor, потом запускать quality/risk домен. + +## 4. Ближайший практический путь + +1. Закрыть Batch-1 (`Q1..Q7`, `Q28`) на базе уже подтвержденных `R01/R02` + `R03` + часть `R07`. +2. После Batch-1 перейти к lifecycle (Batch-2), не смешивая его с risk/аномалиями. +3. Каждую пачку закрывать run-pack артефактами и обязательным comparator к baseline. diff --git a/docs/ADDRESS/address_query/contracts_by_counterparty_fix_report_2026-04-02.md b/docs/ADDRESS/address_query/contracts_by_counterparty_fix_report_2026-04-02.md new file mode 100644 index 0000000..125ea9e --- /dev/null +++ b/docs/ADDRESS/address_query/contracts_by_counterparty_fix_report_2026-04-02.md @@ -0,0 +1,41 @@ +# Contracts-By-Counterparty Fix Report (2026-04-02) + +## Problem (live repro) +- Query `покажи договора все по жуковке 51` was not handled as a contract-list-by-anchor scenario. +- Query often fell into wrong lanes (`list_documents_by_contract` with `missing_required_filters`, or broad fallback lists). + +## Implemented fixes +1. Added dedicated intent: `list_contracts_by_counterparty`. +2. Added dedicated recipe: `address_contracts_by_counterparty_v1` (contract catalog based). +3. Added compose output branch for contract list answers. +4. Updated decompose/filter/resolve/runtime to require and carry `counterparty` anchor for this intent. +5. Improved loose anchor extraction for `по ` (e.g. `по жуковке 51`). +6. Prevented false `contract` extraction (`contract="все"`) for this intent. +7. Disabled broad unrelated fallback for doc/bank intents when anchor is not matched (`filterByAnchors` guard). +8. Added historical-window recovery for doc/bank anchor lookups (retry with ascending period sort when all-time latest slice misses old anchors). +9. Added short follow-up year parsing (`теперь за 21` -> `2021-01-01..2021-12-31`). +10. Added dynamic counterparty resolver via live 1C catalog (`Справочник.Контрагенты`) without hardcoded client dictionaries: + - anchor canonicalization now happens before main recipe execution; + - resolved value is stored in `anchor_value_resolved`; + - extraction `raw` value is preserved in `anchor_value_raw`; + - catalog list is cached for 2 minutes to avoid repeated latency. + +## Validation +- Unit tests: `tests/addressQueryRuntimeM23.test.ts` -> 163/163 passed. +- Build: `npm run build` -> passed. +- Targeted live run: + - run id: `Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02_v3` + - semantic pass: 3/3 + - route pass: 2/3 + - factual pass: `покажи договора по свк` and `покажи договора все по жуковке 51` + - docs query `покажи документы все по жуковке 51` now returns clean `empty_match` (no broad unrelated fallback list) +- User repro validation run: + - run id: `Address_UserRepro_Followup_Zhukovka_AfterFix_2026-04-02` + - `покажи заказчиков за 20 год` -> factual (2020) + - `теперь за 21` -> factual with extracted period `2021-01-01..2021-12-31` + - `покажи доки по жуковке за все время` and `...жуковке 51...` -> factual via historical-window recovery (2017 row found) + +## Current status +- Contract-list route is implemented and operational. +- `жуковке 51` is now canonicalized to the real counterparty from 1C catalog (`ТСЖ \Жуковка 51\`) in runtime without static dictionaries. +- Remaining accuracy risk is generic ambiguity for very short anchors (when multiple counterparties fit equally); this now degrades safely via low-confidence/ambiguous resolver path. diff --git a/docs/ADDRESS/address_query/domain_expansion_implementation_plan_v1.md b/docs/ADDRESS/address_query/domain_expansion_implementation_plan_v1.md index fb35c7e..01412d8 100644 --- a/docs/ADDRESS/address_query/domain_expansion_implementation_plan_v1.md +++ b/docs/ADDRESS/address_query/domain_expansion_implementation_plan_v1.md @@ -255,3 +255,21 @@ Core metrics: 2. Для каждого домена есть полный комплект артефактов (docs + question set + run artifacts). 3. Global baseline-паки не деградируют после каждого включения. 4. `global_execution_checklist_v1.md` отражает актуальный финальный статус. + +## 13. Wave-1 Kickoff Status (2026-04-02) + +Первая волна расширения (`Batch-1: Q1..Q7 + Q28`) переведена в управляемый стартовый режим: + +1. Master checker: +- `step4_wave1_batch1_master_checker_v1.md` + +2. Авто-checker готовности: +- `scripts/check_address_wave1_batch1_readiness.py` +- отчет: `wave1_batch1_readiness_report_2026-04-02.md` + +3. Phase A артефакты: +- `domain_general_batch1_foundation_card_v1.md` +- `domain_general_batch1_acceptance_2026-04-02_phaseA.json` +- `step4_wave1_batch1_phaseA_backlog_v1.md` + +Текущее решение: `READY_FOR_PHASE_A` (можно начинать по фазам, без прямого включения Batch-1 intents в production-path до закрытия Phase B/C gate). diff --git a/docs/ADDRESS/address_query/domain_general_batch1_foundation_card_v1.md b/docs/ADDRESS/address_query/domain_general_batch1_foundation_card_v1.md new file mode 100644 index 0000000..408249e --- /dev/null +++ b/docs/ADDRESS/address_query/domain_general_batch1_foundation_card_v1.md @@ -0,0 +1,154 @@ +# Domain Card — general_batch1_foundation V1 + +Дата: `2026-04-02` +Домен: `general_batch1_foundation` +Статус: `active` (Phase A prepared, Phase B runtime intents implemented, Phase C pending) +Владелец: `Address Runtime Team` + +## 1. Scope + +Кратко: домен закрывает стартовый управленческий слой общего домена (`Q1..Q7 + Q28`) без multi-intent и без quality/risk аналитики. + +In-scope intents: + +1. `period_coverage_profile` (`Q1`, `Q2`, `Q3`) +2. `document_type_and_account_section_profile` (`Q4`, `Q5`) +3. `counterparty_population_and_roles` (`Q6`, `Q7`) +4. `contract_usage_overview` (`Q28`) + +Out-of-scope: + +1. lifecycle/cohort (`Q8+`) +2. revenue/supplier/aging/risk блоки (`Q14+`, `Q33+`, `Q39+`) +3. `COMPOUND_FACTUAL_QUERY` multi-step execution + +## 2. Intent Contract + +### 2.1 `period_coverage_profile` + +- `query_shape`: `FACTUAL_SUMMARY` +- `required_filters`: `[]` +- `optional_filters`: `[period_from, period_to, organization, limit]` +- `resolver_signals`: `годы`, `периоды`, `самый активный год`, `самый активный месяц` +- `ambiguity_rules`: если вопрос содержит одновременно `год` и `месяц`, приоритет у `месяц`-ранжирования +- `fallback_policy`: при пустом окне периода разрешен controlled broaden до доступного окна с явным пояснением + +### 2.2 `document_type_and_account_section_profile` + +- `query_shape`: `FACTUAL_SUMMARY` +- `required_filters`: `[]` +- `optional_filters`: `[period_from, period_to, organization, limit]` +- `resolver_signals`: `типы документов`, `чаще всего документы`, `разделы учета`, `заполнены/не используются` +- `ambiguity_rules`: + `типы документов` -> профиль типов; + `разделы учета` -> профиль sections (первые 2 символа кода счета, дебет+кредит) +- `fallback_policy`: только внутри intent; не переключать на `period_coverage_profile` + +### 2.3 `counterparty_population_and_roles` + +- `query_shape`: `FACTUAL_SUMMARY` +- `required_filters`: `[]` +- `optional_filters`: `[period_from, period_to, organization, limit]` +- `resolver_signals`: `сколько контрагентов`, `сколько заказчиков`, `сколько поставщиков`, `типы контрагентов` +- `ambiguity_rules`: роль `customer/supplier/mixed` определяется по account/direction сигнатуре, не по свободному тексту +- `fallback_policy`: при неоднозначной роли возвращать `mixed/unknown` bucket с пояснением, без ложной категоризации + +### 2.4 `contract_usage_overview` + +- `query_shape`: `FACTUAL_SUMMARY` +- `required_filters`: `[]` +- `optional_filters`: `[period_from, period_to, organization, limit]` +- `resolver_signals`: `сколько всего договоров`, `сколько использовались`, `мертвые договоры` +- `ambiguity_rules`: `used` считается только при наличии factual связи договора с движением/документом +- `fallback_policy`: если нет стабильной связи на ключах, вернуть `LIMITED_WITH_REASON` (`recipe_visibility_gap`) + +## 3. Recipe Mapping + +Связка `intent -> recipe_id` должна совпасть с runtime catalog после Phase B. + +| intent | recipe_id (runtime/planned) | mcp_method | expected_statuses | +| --- | --- | --- | --- | +| `period_coverage_profile` | `address_period_coverage_profile_v1` (runtime) | `POST /api/execute_query` | `matched_non_empty`, `no_raw_rows` | +| `document_type_and_account_section_profile` | `address_document_type_and_account_section_profile_v1` (runtime) | `POST /api/execute_query` | `matched_non_empty`, `no_raw_rows`, `materialized_but_not_matched` | +| `counterparty_population_and_roles` | `address_counterparty_population_roles_v1` (planned) | `POST /api/execute_query` | `matched_non_empty`, `materialized_but_not_matched`, `no_raw_rows` | +| `contract_usage_overview` | `address_contract_usage_overview_v1` (planned) | `POST /api/execute_query` | `matched_non_empty`, `recipe_visibility_gap`, `no_raw_rows` | + +## 4. Anchor and Resolver Rules + +- `anchor_type`: `period`, `organization` (в Batch-1 нет обязательного party anchor) +- `anchor_resolution_order`: explicit period -> organization -> default all-time +- `min_confidence`: `medium` +- `unresolved_behavior`: при неразрешенном required-filter (если появится в реализации) -> `LIMITED_WITH_REASON`, без псевдо-factual + +## 5. Limited Reasons (taxonomy) + +Разрешенные категории для домена: + +1. `empty_match` +2. `recipe_visibility_gap` +3. `execution_error` +4. `unsupported` + +Запрещено: + +- выдавать factual при неподтвержденной метрике; +- смешивать `operations` и `documents` в одной метрике без явной оговорки. + +## 6. Test Coverage + +Unit: + +1. resolver intent positives/negatives для 4 интентов Batch-1 +2. extraction period filters (`YYYY`, `YYYY-MM`, `YYYY-MM-DD`) +3. role-split classifier tests (`customer/supplier/mixed`) +4. account-section parser tests (`code[:2]`) + +Integration: + +1. recipe selection per intent +2. execution status mapping +3. debug payload completeness + +Live acceptance: + +1. canonical questions +2. noisy/slang questions +3. follow-up chains + +## 7. Gate Criteria + +Domain gate: + +- `strict_pass(route)=100%` +- `false_factual_rate=0` +- `execution_error_rate=0` + +Global gate: + +- baseline stress `102/102` сохраняется +- baseline follow-up `25/25` сохраняется + +## 8. Rollout Plan + +1. `shadow` — прогоны без влияния на production answer path. +2. `soft-enable` — включение под feature-flag только для Batch-1 intents. +3. `prod` — после green domain gate и global non-regression gate. + +## 9. Artifacts + +Обязательные артефакты: + +1. `domain_general_batch1_foundation_card_v1.md` +2. `question_sets/domain_general_batch1_acceptance_2026-04-02_phaseA.json` +3. `runs//run_summary.json` +4. `runs//full_live_results.json` +5. `runs//failures_only.json` +6. `runs//README.md` + +## 10. Change Log + +- `2026-04-02` — создана карточка домена для Batch-1 новой волны (Phase A). +- `2026-04-02` — синхронизирован runtime status Phase B.1: в коде реализованы `period_coverage_profile` и `document_type_and_account_section_profile`. +- `2026-04-02` — реализованы `counterparty_population_and_roles` и `contract_usage_overview`; targeted live-pack `Q6/Q7/Q28` прошел `strict factual 9/9` (`2026-04-02_Address_Batch1_NextPack_Q6_Q7_Q28`). +- 2026-04-02 - hotfix slang count routing: скока/скок поставщиков|заказчиков стабильно маршрутизируются в counterparty_population_and_roles; targeted live-pack 2026-04-02_Address_SupplierCount_Targeted_AfterFix прошел strict factual 4/4. +- 2026-04-02 - hotfix follow-up slang variant: скок клиентов now maps to counterparty_population_and_roles; targeted live-pack 2026-04-02_Address_SupplierClient_Followup_AfterFix passed strict factual 3/3. diff --git a/docs/ADDRESS/address_query/general_domain_questions_analysis_plan_v1_2026-04-02.md b/docs/ADDRESS/address_query/general_domain_questions_analysis_plan_v1_2026-04-02.md new file mode 100644 index 0000000..9764125 --- /dev/null +++ b/docs/ADDRESS/address_query/general_domain_questions_analysis_plan_v1_2026-04-02.md @@ -0,0 +1,444 @@ +# Общий Домен Вопросов — Анализ и План Внедрения V1 + +Дата: 2026-04-02 +Источник: `docs/ADDRESS/TEMP/ОБЩИЙ_ДОМЕН_ВОПРОСОВ.md` +Контур: `question_mode=address_query` + +## 1. Ключевой вывод по текущему состоянию + +1. Текущий runtime хорошо закрывает P0 address lookup/drilldown, но не закрывает управленческие агрегаты из общего домена. +2. Вопросы из общего домена требуют не только фильтрации, но и устойчивых агрегатов, ранжирования, cohort/lifecycle логики и сравнений между выборками. +3. Для точного забора данных нужен переход от текстовых anchor-match паттернов к key-based маршрутам (`*_Key`) и явным group-by query templates. +4. Для части вопросов нужен multi-step execution (сейчас `COMPOUND_FACTUAL_QUERY` только detection-only). + +## 2. Разбор 40 вопросов по смысловым группам + +### G1. Профиль данных и активности (Q1–Q5) +Суть: «что есть в базе», активность по годам/месяцам, типы документов, заполненность контуров. + +Сложность: +- C1: Q1, Q2, Q3, Q4 +- C2: Q5 + +### G2. Контрагенты и жизненный цикл базы (Q6–Q13) +Суть: численность, роли, активность в периоде, новые/ушедшие, одноразовые, долгоживущие. + +Сложность: +- C1: Q6, Q7, Q8, Q9 +- C3: Q10, Q11, Q12, Q13 + +### G3. Клиентская ценность, выручка, оплаты (Q14–Q21) +Суть: вклад клиентов в деньги/частоту/средний чек, концентрация выручки. + +Сложность: +- C2: Q14, Q15, Q16, Q17, Q18, Q19, Q20 +- C3: Q21 + +### G4. Поставщики и выплаты (Q22–Q27) +Суть: ключевые/малозначимые поставщики, частота операций, регулярность, неактивные. + +Сложность: +- C2: Q22, Q23, Q24, Q25 +- C3: Q26, Q27 + +### G5. Договорная база (Q28–Q32) +Суть: total vs used, активность по суммам/документам, stale договоры, мультидоговорность контрагентов. + +Сложность: +- C2: Q28, Q29, Q30 +- C3: Q31, Q32 + +### G6. Дебиторка/кредиторка и хвосты (Q33–Q38) +Суть: top debtors/creditors, старение долгов, сравнение проблемности customer vs supplier контуров. + +Сложность: +- C2: Q33, Q36 +- C3: Q34, Q35, Q38 +- C4: Q37 + +### G7. Качество учета и риск-аномалии (Q39–Q40) +Суть: подозрительные/неполные документы, разрозненные кейсы с высокой активностью. + +Сложность: +- C4: Q39, Q40 + +## 3. Уровни сложности (для реализации пачками) + +- C1: одношаговый aggregate/list по одной fact-проекции. +- C2: агрегат + период/роль + ранжирование top/bottom. +- C3: lifecycle/cohort и/или временные сравнения с вычислением first/last activity. +- C4: multi-step comparative и quality-scoring (несколько подзапросов + сводка). + +## 4. Маршруты данных 1С (target route set) + +Ниже маршруты в терминах «что нужно строить» для точного забора данных. + +### R01. `period_coverage_profile` +Назначение: Q1–Q3. + +Source objects: +- `РегистрБухгалтерии.Хозрасчетный` +- `Документ.*` (для проверки активности по документным датам) + +Key metrics: +- min/max дата в фактах +- count операций по годам +- count операций по месяцам + +Output: +- покрытие периодов +- топ активный год/месяц + +### R02. `document_type_usage_profile` +Назначение: Q4, часть Q5. + +Source objects: +- `ДокументЖурнал.*` +- `Документ.*` + +Key metrics: +- count документов по `Recorder_Type`/типу документа +- доля каждого типа + +Output: +- рейтинг типов документов +- профиль заполненности контуров по типам + +### R03. `counterparty_population_and_roles` +Назначение: Q6, Q7. + +Source objects: +- `Справочник.Контрагенты` +- факты движения/документы для определения роли в деятельности + +Key metrics: +- total уникальных контрагентов +- active контрагенты +- распределение customer/supplier/mixed + +Output: +- сводка по размеру и структуре базы контрагентов + +### R04. `counterparty_activity_lifecycle` +Назначение: Q8–Q13, Q26–Q27. + +Source objects: +- `РегистрБухгалтерии.Хозрасчетный` (через контрагентные аналитики) +- `Документ.*` банковых контуров + +Key metrics: +- first_activity_date +- last_activity_date +- ops_count +- active_year_flags + +Output: +- active in year/all-time +- new/lost counterparties +- one-time counterparties +- longest-running counterparties +- regular vs episodic, stale entries + +### R05. `customer_revenue_and_payments` +Назначение: Q14–Q21. + +Source objects: +- `Документ.ПоступлениеНаРасчетныйСчет` +- `РегистрБухгалтерии.Хозрасчетный` (в т.ч. account 62/76 для customer-контура) + +Key metrics: +- total_inflow_by_counterparty +- payment_ops_count +- avg_check +- max_single_payment +- revenue_share + +Output: +- top/bottom customers +- частота оплат +- средний чек +- концентрация выручки + +### R06. `supplier_payouts_profile` +Назначение: Q22–Q25. + +Source objects: +- `Документ.СписаниеСРасчетногоСчета` +- `РегистрБухгалтерии.Хозрасчетный` (account 60/76) + +Key metrics: +- total_outflow_by_supplier +- payout_ops_count +- active_supplier_flags + +Output: +- top/bottom suppliers by payouts +- suppliers by operations frequency + +### R07. `contract_usage_and_value` +Назначение: Q28–Q32. + +Source objects: +- `Справочник.ДоговорыКонтрагентов` +- факты движений/документов с `Договор*_Key` + +Key metrics: +- contracts_total +- contracts_used +- amount_by_contract +- docs_count_by_contract +- last_activity_by_contract + +Output: +- used vs unused contracts +- top contracts by amount/docs +- stale contracts +- counterparties with multi-contract structure (working vs dead) + +### R08. `open_items_and_aging` +Назначение: Q33–Q38. + +Source objects: +- `РегистрБухгалтерии.Хозрасчетный` +- при необходимости специализированный register/обороты для aging + +Key metrics: +- open_balance_by_party +- debt_age_buckets +- oldest_open_items + +Output: +- top debtors/creditors +- old small tails +- supplier/customer open-item contrasts +- oldest unresolved debts + +### R09. `accounting_quality_risk_scan` +Назначение: Q39–Q40. + +Source objects: +- `Документ.*` +- `ДокументЖурнал.*` +- `РегистрБухгалтерии.Хозрасчетный` + +Deterministic checks (v1): +- неполные обязательные поля +- аномальные суммы/частоты +- противоречивые связи контрагент-договор-документ +- высокая активность при нестабильной структуре данных + +Output: +- risk-ranked список документов/контрагентов +- причины попадания в риск + +## 5. Критически важные требования к точности маршрутов + +1. Key-first фильтрация: +- для контрагента/договора использовать `*_Key`, а не только текстовые представления. + +2. Единая каноническая проекция фактов: +- `event_date`, `doc_ref`, `doc_type`, `amount`, `direction`, `account_dt/kt`, `counterparty_key`, `contract_key`, `organization_key`. + +3. Сигнатура роли контрагента: +- customer/supplier определять по account/направлению движения, а не по свободному тексту вопроса. + +4. Разделение «операции» vs «документы»: +- в каждом route явно фиксировать базу расчета (движения или документы), чтобы не смешивать метрики. + +5. Multi-step вопросы (C4) исполнять как план из подзапросов: +- сначала отдельные factual подвыборки, +- затем агрегирование/сравнение в composer. + +## 6. Что нужно расширить в runtime перед внедрением домена + +1. Новые intents (management layer): +- `period_coverage_profile` +- `document_type_usage` +- `counterparty_lifecycle_profile` +- `customer_revenue_ranking` +- `supplier_payout_ranking` +- `contract_portfolio_profile` +- `open_items_aging_profile` +- `accounting_quality_anomalies` + +2. Новые recipe templates: +- `group_by_year_month` +- `group_by_counterparty` +- `group_by_contract` +- `aging_bucket` +- `quality_scan` + +3. Новый execution path для compound/comparative: +- multi-step executor для C4 (в текущем V1 этого нет). + +4. Composer расширение: +- табличные ранжированные summary-блоки (top/bottom, доли, buckets, risk reasons). + +## 7. План внедрения пачками + +### Batch 0 (обязательный foundation) +Scope: +- route probes по полям `counterparty_key/contract_key` и качеству join. +- подтверждение query templates для group-by на live. + +Artifacts: +- `management_route_probe_report_*.md` +- baseline query fixtures. + +Gate: +- ни одного route без подтвержденного key-based фильтра. + +### Batch 1 (C1/C2, быстрый бизнес-эффект) +Вопросы: +- Q1–Q7, Q28. + +Routes: +- R01, R02, R03, часть R07. + +Результат: +- общий профиль базы + структура контрагентов + базовая договорная метрика. + +### Batch 2 (C3 lifecycle) +Вопросы: +- Q8–Q13, Q26, Q27, Q31, Q32. + +Routes: +- R04, часть R07. + +Результат: +- устойчивый lifecycle слой (new/lost/one-time/long-term/stale). + +### Batch 3 (ценность и концентрация) +Вопросы: +- Q14–Q25, Q29, Q30. + +Routes: +- R05, R06, часть R07. + +Результат: +- клиентская/поставщическая ценность и контрактные рейтинги. + +### Batch 4 (задолженности и aging) +Вопросы: +- Q33–Q38. + +Routes: +- R08. + +Результат: +- дебиторка/кредиторка с age-buckets и сравнительной аналитикой. + +### Batch 5 (quality/risk) +Вопросы: +- Q39–Q40. + +Routes: +- R09. + +Результат: +- управленческий quality/risk слой с объяснимыми причинами аномалий. + +## 8. Acceptance и рельсовые критерии для каждой пачки + +1. Domain pack обязателен: +- canonical +- noisy/slang +- follow-up chains +- multi-step (для C4) + +2. Gate каждой пачки: +- `strict_pass(route)=100%` на domain pack +- `false_factual_rate=0` +- `execution_error_count=0` + +3. После каждой пачки: +- обязательный global regression `102 + 25` +- comparator against baseline PASS + +4. Обновление docs: +- `runtime_readiness_matrix_v1.md` +- `address_scenario_matrix.md` +- domain card + run artifacts + +## 9. Риски и как их снимать + +1. Риск: ложные агрегаты из-за текстовых anchor-match. +- Мера: key-based joins и route probes до включения intent. + +2. Риск: смешение операций и документов в одной метрике. +- Мера: отдельные route contracts для movement-based и document-based метрик. + +3. Риск: срыв на multi-step вопросах. +- Мера: отдельный compound executor для C4, без неявных fallback в single-intent. + +4. Риск: рост R&D хаоса по доменам. +- Мера: только batch rollout + обязательный gate + closeout per batch. + +## 10. Практический next step (сейчас) + +1. Запустить Batch 0: +- field-probe по key-полям для контрагента/договора в register/docs. +- зафиксировать финальный route contract для R01–R03 и R07 (часть). + +2. После Batch 0 сразу брать Batch 1 как первый production-ready срез общего домена. + +Фактический статус на 2026-04-02: +- стартовая управленческая рамка Batch-1 зафиксирована в `step4_wave1_batch1_master_checker_v1.md`; +- readiness подтвержден авто-отчетом `wave1_batch1_readiness_report_2026-04-02.md` (`READY_FOR_PHASE_A`). + +## 11. Полная матрица Q -> Route -> Complexity -> Batch + +| Q | Краткий смысл | Route | Complexity | Batch | +|---|---|---|---|---| +| Q1 | годы покрытия базы | R01 | C1 | B1 | +| Q2 | самый активный год | R01/R02 | C1 | B1 | +| Q3 | самый активный месяц | R01 | C1 | B1 | +| Q4 | самые частые типы документов | R02 | C1 | B1 | +| Q5 | заполненность контуров учета | R02 (+R01) | C2 | B1 | +| Q6 | всего уникальных контрагентов | R03 | C1 | B1 | +| Q7 | заказчики/поставщики/прочие | R03 | C1 | B1 | +| Q8 | заказчики активные в году | R04 | C1 | B2 | +| Q9 | заказчики активные за все время | R04 | C1 | B2 | +| Q10 | новые заказчики в году | R04 | C3 | B2 | +| Q11 | заказчики, ушедшие после периода | R04 | C3 | B2 | +| Q12 | контрагенты с одной активностью | R04 | C3 | B2 | +| Q13 | самые долгоживущие контрагенты | R04 | C3 | B2 | +| Q14 | top заказчики по деньгам (all-time) | R05 | C2 | B3 | +| Q15 | top заказчики по деньгам (год) | R05 | C2 | B3 | +| Q16 | low-value активные заказчики | R05 | C2 | B3 | +| Q17 | кто платит чаще всего | R05 | C2 | B3 | +| Q18 | самые крупные разовые оплаты | R05 | C2 | B3 | +| Q19 | самый высокий средний чек | R05 | C2 | B3 | +| Q20 | низкий средний чек + много операций | R05 | C2/C3 | B3 | +| Q21 | концентрация выручки по клиентам | R05 | C3 | B3 | +| Q22 | top поставщики по выплатам (all-time) | R06 | C2 | B3 | +| Q23 | top поставщики по выплатам (период) | R06 | C2 | B3 | +| Q24 | минимальные выплаты среди активных | R06 | C2 | B3 | +| Q25 | поставщики с max числом операций | R06 | C2 | B3 | +| Q26 | регулярные vs эпизодические поставщики | R04/R06 | C3 | B2 | +| Q27 | давно неиспользуемые поставщики | R04 | C3 | B2 | +| Q28 | договоры: всего vs реально использованные | R07 | C2 | B1 | +| Q29 | top договоры по деньгам | R07 | C2 | B3 | +| Q30 | top договоры по числу документов | R07 | C2 | B3 | +| Q31 | давно неиспользуемые договоры | R07 | C3 | B2 | +| Q32 | мультидоговорные контрагенты + рабочие договоры | R07 | C3 | B2 | +| Q33 | top дебиторы на сейчас | R08 | C2 | B4 | +| Q34 | мелкие, но старые долги | R08 | C3 | B4 | +| Q35 | поставщики с незакрытыми расчетами в нашу пользу | R08 | C3 | B4 | +| Q36 | top кредиторы (кому должны) | R08 | C2 | B4 | +| Q37 | где больше проблемных хвостов: customer vs supplier | R08 (+compound compare) | C4 | B4 | +| Q38 | самые старые незакрытые задолженности | R08 | C3 | B4 | +| Q39 | документы с ошибками/неполнотой/подозрительностью | R09 | C4 | B5 | +| Q40 | контрагенты с активностью и нестабильностью данных | R09 | C4 | B5 | + +## 12. Статус Batch-0 по первой группе (live-подтверждение) + +На дату `2026-04-02` выполнен live probe первой группы общего домена (`Q1..Q5`) через MCP endpoint `POST /api/execute_query?channel=default`. + +Артефакт: +- `management_route_probe_report_g1_2026-04-02.md` + +Итог: +1. `R01 period_coverage_profile` подтвержден на live-данных (`Q1`, `Q3`). +2. `R02 document_type_usage_profile` подтвержден на live-данных (`Q2`, `Q4`). +3. Для `Q5` подтверждена реализуемость через account-section aggregation (по первым двум символам кода счета, дебет+кредит), требуется формализовать policy для "почти не используется" (порог/квантиль + исключения по off-balance/служебным кодам). diff --git a/docs/ADDRESS/address_query/global_execution_checklist_v1.md b/docs/ADDRESS/address_query/global_execution_checklist_v1.md index 0a4e6ef..836e8c3 100644 --- a/docs/ADDRESS/address_query/global_execution_checklist_v1.md +++ b/docs/ADDRESS/address_query/global_execution_checklist_v1.md @@ -80,6 +80,21 @@ - [ ] Resolver hardening для более широкого набора anchor-типов (без company-specific словарей). - [ ] CI/nightly automation полного regression-пака. +#### Step-4 Wave-1 (general domain, Batch-1: Q1..Q7 + Q28) + +- [x] Создан master checker новой волны: `step4_wave1_batch1_master_checker_v1.md`. +- [x] Добавлен автоматический readiness checker: `scripts/check_address_wave1_batch1_readiness.py`. +- [x] Выпущен readiness report: `wave1_batch1_readiness_report_2026-04-02.md` (`READY_FOR_PHASE_A`). +- [x] Phase A стартован: + - `domain_general_batch1_foundation_card_v1.md` + - `domain_general_batch1_acceptance_2026-04-02_phaseA.json` + - `step4_wave1_batch1_phaseA_backlog_v1.md` +- [ ] Phase A закрыт (intent naming freeze + negative cases). +- [ ] Phase B закрыт (resolver/types/recipes/compose для Batch-1). +- [ ] Phase C закрыт (domain gate + global non-regression gate). +- [x] Phase B.1 начат: реализован первый Batch-1 intent `period_coverage_profile` (resolver + types + recipe + compose), unit/build green. +- [x] Phase B.1 progress: реализован второй Batch-1 intent `document_type_and_account_section_profile` (resolver + classifier + recipe + compose), unit/build green (`107 passed`). + ## Документация (code-sync) - [x] Базовые docs синхронизированы с текущим runtime-кодом (`README`, `address_scenario_matrix`, `query_recipes`, `runtime_readiness_matrix`, `address_runtime_contracts`, `runtime_integration_plan`). diff --git a/docs/ADDRESS/address_query/llm_first_pre_gate_contract_v1_2026-04-02.md b/docs/ADDRESS/address_query/llm_first_pre_gate_contract_v1_2026-04-02.md new file mode 100644 index 0000000..4652cef --- /dev/null +++ b/docs/ADDRESS/address_query/llm_first_pre_gate_contract_v1_2026-04-02.md @@ -0,0 +1,118 @@ +# LLM-First Pre-Gate Contract V1 (2026-04-02) + +## Цель + +Убрать зависимость от ручного пополнения сленговых словарей на входе в `address_query`. + +Новый принцип: + +1. Сначала выполняется `LLM pre-decompose` (попытка канонизации пользовательского текста). +2. Затем rule-gate работает как валидатор маршрута, а не как первичный смысловой парсер. +3. В debug и в run-артефактах фиксируется единый контракт канонизации + метрики качества. + +## Что внедрено в код + +### 1. Контракт канонизации (новый модуль) + +Файл: + +- `llm_normalizer/backend/src/services/address_runtime/predecomposeContract.ts` + +Экспорт: + +- `buildAddressLlmPredecomposeContractV1(...)` + +Схема контракта: + +- `schema_version: address_llm_predecompose_contract_v1` +- `source_message` +- `canonical_message` +- `mode`, `mode_confidence` +- `query_shape`, `query_shape_confidence` +- `intent`, `intent_confidence` +- `entities` (`account`, `counterparty`, `contract`, `document_type`, `document_ref`, `organization`) +- `period` (`scope`, `period_from`, `period_to`, `as_of_date`, `has_explicit_period`) +- `aggregation_profile` (`management_profile | list_lookup | balance_snapshot | open_items | unknown`) + +### 2. Прокидка контракта в runtime debug + +Файл: + +- `llm_normalizer/backend/src/services/assistantService.ts` + +Добавлено: + +- `llm_predecompose_contract` в address-debug payload. +- Прокидка `address_*` полей pre-decompose/gate в debug deep-ответов (для случаев, когда address lane заблокирован и финальный ответ не address). + +### 3. LLM-first поведение pre-decompose + +Файл: + +- `llm_normalizer/backend/src/services/assistantService.ts` + +Сделано: + +- Убрана ранняя блокировка `not_address_like` перед попыткой LLM нормализации. +- Убрана отсечка кандидатов по `execution_readiness=no_route` + regex в pre-decompose candidate extraction. +- Добавлен сигнал gate: `llm_canonical_candidate_detected`. + +### 4. Метрики в live-runner + +Файл: + +- `scripts/run_address_live_slang_stress.py` + +`run_summary.json` теперь включает: + +- `totals.llm_decomposition_attempted_count` +- `totals.llm_decomposition_applied_count` +- `totals.llm_fallback_count` +- `totals.llm_fallback_rate` +- `totals.tool_gate_blocked_count` +- `totals.tool_gate_blocked_rate` +- `distributions.tool_gate_decision` +- `distributions.tool_gate_reason` +- `address_llm_predecompose_metrics.overall` +- `address_llm_predecompose_metrics.by_intent` + +### 5. Intent-усиление для roster-формулировок + +Файл: + +- `llm_normalizer/backend/src/services/addressIntentResolver.ts` + +Добавлен сигнал lifecycle для формулировок вида: + +- `кто у нас заказчики вообще` +- `какие есть заказчики/клиенты` +- `кто есть заказчики в базе` + +## Валидация + +### Unit/Integration tests + +- `tests/assistantAddressLlmPredecompose.test.ts` -> pass +- `tests/addressQueryRuntimeM23.test.ts` -> pass + +### Live run (targeted) + +- `docs/ADDRESS/runs/2026-04-02_Address_LLM_First_Gate_Probe_WithMetrics/run_summary.json` + - `strict_pass_rate = 1.0` + - `tool_gate_blocked_rate = 0.0` + +- `docs/ADDRESS/runs/2026-04-02_Address_GateBlock_Probe_WithMetrics_02/run_summary.json` + - подтвержден захват блокировки gate: + - `tool_gate_blocked_count = 1` + - `tool_gate_blocked_rate = 0.5` + - `address_llm_predecompose_metrics.by_intent.unknown.gate_block_rate = 1.0` + +## Что это дает в процессной модели + +1. Мы больше не “размазываем” смысловую обработку по regex-словарам. +2. У нас есть наблюдаемая метрика, когда gate начинает душить реальный поток: + - `gate_block_rate` overall/by intent. +3. У нас есть наблюдаемая метрика костыльности: + - `fallback_rate` overall/by intent. +4. Расширение доменов можно вести через route/recipe-пакеты и acceptance-паки, а не через бесконечные сленг-патчи. + diff --git a/docs/ADDRESS/address_query/management_route_probe_report_g1_2026-04-02.md b/docs/ADDRESS/address_query/management_route_probe_report_g1_2026-04-02.md new file mode 100644 index 0000000..318d3e0 --- /dev/null +++ b/docs/ADDRESS/address_query/management_route_probe_report_g1_2026-04-02.md @@ -0,0 +1,112 @@ +# Management Route Probe Report — General Domain Group 1 (Q1–Q5) + +- Дата/время запуска: `2026-04-02T18:15:58+03:00` +- Endpoint: `http://127.0.0.1:6003` +- Channel: `default` +- Контур: `question_mode=address_query`, Batch-0 route probes + +## Вердикт по вопросам группы 1 +- Q1 (покрытие периодов): **PASS** +- Q2 (самый активный год по документам): **PASS** +- Q3 (самый активный месяц по операциям): **PASS** +- Q4 (наиболее частые типы документов): **PASS** +- Q5 (наиболее/наименее заполненные разделы учета): **PASS** + +## Q1 — Покрытие базы и активность по годам +- Мин период: `2014-05-27T12:00:00Z` +- Макс период: `2030-08-03T12:00:00Z` +- Всего операций в регистре: `12659` +- Годы с данными: `2014..2030` (уникальных лет: `13`) +- Топ годов по количеству операций: + - `2015`: `3212` + - `2019`: `2273` + - `2018`: `2234` + - `2020`: `1391` + - `2017`: `1376` + - `2016`: `1187` + - `2021`: `553` + - `2014`: `235` + +## Q2 — Самый активный год по количеству документов +- Метрика: `COUNT(DISTINCT Регистратор)` по годам на `РегистрБухгалтерии.Хозрасчетный`. +- Топ годов: + - `2019`: `1004` + - `2018`: `703` + - `2015`: `671` + - `2016`: `577` + - `2020`: `536` + - `2017`: `456` + - `2021`: `308` + - `2014`: `115` +- Вывод: route дает корректный ranking по документной активности в контуре движений. + +## Q3 — Самый активный месяц по количеству операций +- Метрика: `COUNT(*)` по `НАЧАЛОПЕРИОДА(Период, МЕСЯЦ)`. +- Топ месяцев: + - `2015-02`: `1249` + - `2015-01`: `924` + - `2018-08`: `854` + - `2019-05`: `536` + - `2017-12`: `503` + - `2020-06`: `305` + - `2020-03`: `297` + - `2019-09`: `273` + - `2018-11`: `261` + - `2015-12`: `225` + - `2018-12`: `213` + - `2019-08`: `185` + +## Q4 — Наиболее частые типы документов +- Метрика: `COUNT(DISTINCT Регистратор)` по `ПРЕДСТАВЛЕНИЕ(ТИПЗНАЧЕНИЯ(Регистратор))`. +- Топ типов: + - `Списание с расчетного счета`: `2352` + - `Поступление товаров и услуг`: `486` + - `Регламентная операция`: `414` + - `Поступление на расчетный счет`: `323` + - `Счет-фактура полученный`: `262` + - `Операция (бухгалтерский и налоговый учет)`: `147` + - `Реализация товаров и услуг`: `123` + - `Отражение зарплаты в регламентированном учете`: `87` + - `Приходный кассовый ордер`: `76` + - `Расходный кассовый ордер`: `73` + - `Требование-накладная`: `45` + - `Передача товаров`: `16` + +## Q5 — Заполненность разделов учета +- Метод: агрегирование по первым двум цифрам кода счета (дебет + кредит). +- Топ разделов: + - `90` `Продажи`: `2973` + - `51` `Расчетные счета`: `2967` + - `60` `Расчеты с поставщиками и подрядчиками`: `2793` + - `44` `Расходы на продажу`: `2422` + - `68` `Расчеты по налогам и сборам`: `1554` + - `10` `Материалы`: `1494` + - `19` `НДС по приобретенным ценностям`: `1490` + - `91` `Прочие доходы и расходы`: `1324` + - `41` `Товары`: `1312` + - `76` `Расчеты с разными дебиторами и кредиторами`: `1240` +- Разделы с минимальной активностью (среди использованных): + - `58` `Финансовые вложения`: `2` + - `81` `Собственные акции (доли)`: `2` + - `80` `Уставный капитал`: `5` + - `75` `Расчеты с учредителями`: `16` + - `55` `Специальные счета в банках`: `18` + - `84` `Нераспределенная прибыль (непокрытый убыток)`: `20` + - `26` `Общехозяйственные расходы`: `51` + - `71` `Расчеты с подотчетными лицами`: `76` + - `43` `Готовая продукция`: `81` + - `50` `Касса`: `163` + +## Что подтверждено для продуктового плана +- `R01 period_coverage_profile`: подтвержден (Q1/Q3). +- `R02 document_type_usage_profile`: подтвержден (Q2/Q4). +- `Q5` закрывается route-контрактом через account-section aggregation; нужна фиксация правила для "почти не используются" (порог/квантиль). + +## Ограничения и требования к точности +- Q2/Q4 измеряются по `Регистратор` в движениях; это нужно явно закрепить как `movement-based document activity`. +- Для Q5 нельзя опираться только на raw счета: обязателен post-processing `section = account_code[:2]`. +- Есть записи с редкими/системными кодами (например off-balance); требуется whitelist/normalization policy для бизнес-отчета. + +## Следующий шаг Batch-0 +- Зафиксировать route contracts для `R01` и `R02` в runtime docs. +- Добавить acceptance-вопросы Q1..Q5 в domain pack с жесткой проверкой метрик и сортировки. diff --git a/docs/ADDRESS/address_query/query_recipes_v1.md b/docs/ADDRESS/address_query/query_recipes_v1.md index 74370b3..1e1d88b 100644 --- a/docs/ADDRESS/address_query/query_recipes_v1.md +++ b/docs/ADDRESS/address_query/query_recipes_v1.md @@ -44,6 +44,8 @@ | recipe_id | intent | purpose | required_filters | optional_filters | query_template | account_scope_mode | |---|---|---|---|---|---|---| +| `address_period_coverage_profile_v1` | `period_coverage_profile` | профиль покрытия периодов + топ год/месяц активности | - | `period_from`, `period_to`, `organization`, `limit` | `period_profile` | `preferred` | +| `address_document_type_and_account_section_profile_v1` | `document_type_and_account_section_profile` | профиль типов документов + заполненность разделов учета | - | `period_from`, `period_to`, `organization`, `limit` | `document_section_profile` | `preferred` | | `address_movements_payables_v1` | `list_payables_counterparties` | movement-срез по обязательствам | - | `as_of_date`, `counterparty`, `contract`, `limit` | `movements` | `preferred` | | `address_movements_receivables_v1` | `list_receivables_counterparties` | movement-срез по требованиям | - | `as_of_date`, `counterparty`, `contract`, `limit` | `movements` | `preferred` | | `address_open_contracts_candidates_v1` | `list_open_contracts` | кандидаты незакрытых договоров | - | `as_of_date`, `organization`, `limit` | `movements` | `preferred` | @@ -59,6 +61,8 @@ - Базовый max limit: `200`. - Расширенный max limit (`1000`) для: + - `period_coverage_profile`; + - `document_type_and_account_section_profile`; - `documents/bank by counterparty|contract`; - `open_items_by_counterparty_or_contract`; - `list_open_contracts`. @@ -96,7 +100,7 @@ Legacy совместимость: Фактическая реализация `composeStage` сейчас отдает: -- `FACTUAL_SUMMARY` в основном для `account_balance_snapshot`; +- `FACTUAL_SUMMARY` для `account_balance_snapshot`, `period_coverage_profile`, `document_type_and_account_section_profile`; - для остальных factual intents — `FACTUAL_LIST`. ## 9) Guardrails diff --git a/docs/ADDRESS/address_query/runtime_readiness_matrix_v1.md b/docs/ADDRESS/address_query/runtime_readiness_matrix_v1.md index d98e3ab..5749fc3 100644 --- a/docs/ADDRESS/address_query/runtime_readiness_matrix_v1.md +++ b/docs/ADDRESS/address_query/runtime_readiness_matrix_v1.md @@ -27,6 +27,8 @@ | AQ-P0-08 | list_documents_by_contract | STRUCTURALLY_VISIBLE | LIVE_QUERYABLE_WITH_LIMITS | document-filter может обнулять rows по узкому окну | contract docs fallback + resolver hardening | | AQ-P0-08B | bank_operations_by_contract | STRUCTURALLY_VISIBLE | LIVE_QUERYABLE_WITH_LIMITS | устойчивость зависит от contract anchor качества | усилить contract normalization и follow-up carryover | | AQ-P0-09 | documents_forming_balance | STRUCTURALLY_VISIBLE | LIVE_QUERYABLE_WITH_LIMITS | account-family чувствителен к row-shape/materialization | продолжить materialization diagnostics | +| AQ-B1-10 | period_coverage_profile | STRUCTURALLY_VISIBLE | LIVE_QUERYABLE_WITH_LIMITS | новый management intent, еще не закрыт domain-gate Batch-1 | закрыть Phase B/C gate на `Q1..Q7 + Q28` | +| AQ-B1-11 | document_type_and_account_section_profile | STRUCTURALLY_VISIBLE | LIVE_QUERYABLE_WITH_LIMITS | новый management intent, требуется gate-проверка ranking стабильности | закрыть Phase B/C gate на `Q1..Q7 + Q28` | | AQ-P1-10 | account_turnover_snapshot | STRUCTURALLY_VISIBLE | UNKNOWN | intent/recipe отсутствуют в runtime | планировать как отдельный домен Step-4 | | AQ-P1-11 | list_documents_by_type | STRUCTURALLY_VISIBLE | UNKNOWN | intent/recipe отсутствуют в runtime | планировать как отдельный домен Step-4 | @@ -35,6 +37,9 @@ - В runtime реализованы by-contract intents: - `list_documents_by_contract` - `bank_operations_by_contract` +- В runtime реализованы первые management intents Batch-1: + - `period_coverage_profile` + - `document_type_and_account_section_profile` - `COMPOUND_FACTUAL_QUERY` остается detection-only (без multi-intent execution). - Финальные gate-артефакты стабильности: - stress `102/102`: `docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_12-57-27/run_summary.json` diff --git a/docs/ADDRESS/address_query/step4_wave1_batch1_master_checker_v1.md b/docs/ADDRESS/address_query/step4_wave1_batch1_master_checker_v1.md new file mode 100644 index 0000000..c787872 --- /dev/null +++ b/docs/ADDRESS/address_query/step4_wave1_batch1_master_checker_v1.md @@ -0,0 +1,60 @@ +# Step-4 Wave-1 Batch-1 Master Checker V1 + +Дата: 2026-04-02 +Контур: `question_mode=address_query` +Scope Batch-1: `Q1..Q7 + Q28` (первая волна общего домена) + +## 1. Go/No-Go Checker (перед стартом кодирования) + +Источник авто-проверки: +- `wave1_batch1_readiness_report_2026-04-02.md` +- script: `python scripts/check_address_wave1_batch1_readiness.py` + +Результат на 2026-04-02: +- **READY_FOR_PHASE_A** + +Контрольные пункты: + +- [x] Step-0 pre-prod rails закрыт. +- [x] Базовый Step-4 план зафиксирован. +- [x] Анализ общего домена (40 вопросов) зафиксирован. +- [x] Live probe первой группы (`Q1..Q5`) зафиксирован. +- [x] Карта статуса сложных вопросов и reuse-слой зафиксированы. +- [x] Baseline stress `102/102`. +- [x] Baseline follow-up `25/25`. +- [x] Nightly regression green. + +## 2. Гейтинг Batch-1 (чтобы не "вкорячивать") + +Batch-1 можно переводить в runtime только после закрытия трех фаз: + +1. **Phase A — Design/Contract** +- domain card для Batch-1; +- финализированный intent contract; +- acceptance question set (canonical + noisy + follow-up). + +2. **Phase B — Runtime Prep** +- intent resolver additions; +- filter extractor additions; +- recipe catalog additions; +- composer output contract для ranking/summary формата. + +3. **Phase C — Live Gate** +- domain acceptance run-pack; +- global regression (`102 + 25`); +- comparator PASS к baseline. + +## 3. Статус текущей волны + +- [x] **Phase A стартован** (документационный контур и readiness checker подготовлены). +- [ ] Phase A закрыт. +- [x] Phase B.1 в работе: реализованы `period_coverage_profile`, `document_type_and_account_section_profile`, `counterparty_population_and_roles`, `contract_usage_overview` (unit/build green). +- [x] Targeted live-check Batch-1 next pack (`Q6/Q7/Q28`) выполнен: `strict factual 9/9`. +- [ ] Phase B закрыт. +- [ ] Phase C закрыт. + +## 4. Решение на сейчас + +1. Начинать можно, но строго по фазам выше. +2. Прямое включение Batch-1 intents в production-path без Phase B/C — запрещено. +3. Точка входа в работу: `Phase C` (full Batch-1 acceptance + global non-regression). diff --git a/docs/ADDRESS/address_query/step4_wave1_batch1_phaseA_backlog_v1.md b/docs/ADDRESS/address_query/step4_wave1_batch1_phaseA_backlog_v1.md new file mode 100644 index 0000000..2ac57ba --- /dev/null +++ b/docs/ADDRESS/address_query/step4_wave1_batch1_phaseA_backlog_v1.md @@ -0,0 +1,88 @@ +# Step-4 Wave-1 Batch-1 — Phase A/B Backlog V1 + +Дата: 2026-04-02 +Статус: `active` +Scope: `Q1..Q7 + Q28` + +## 1. Phase A (Design/Contract) — старт + +- [x] Зафиксирован master checker: `step4_wave1_batch1_master_checker_v1.md` +- [x] Выпущен readiness report: `wave1_batch1_readiness_report_2026-04-02.md` +- [x] Зафиксирована domain card: `domain_general_batch1_foundation_card_v1.md` +- [x] Сформирован стартовый acceptance набор: `domain_general_batch1_acceptance_2026-04-02_phaseA.json` +- [x] Финализировано именование Batch-1 intent-ов (freeze): + `period_coverage_profile`, `document_type_and_account_section_profile`, `counterparty_population_and_roles`, `contract_usage_overview`. +- [ ] Добавить negative-кейсы (похожая формулировка -> другой intent/limited) + +## 2. Phase B (Runtime Prep) — задачи по коду + +### 2.1 Resolver / Types + +- [x] `llm_normalizer/backend/src/services/addressIntentResolver.ts` + Добавить intents Batch-1: + `period_coverage_profile`, `document_type_and_account_section_profile`, `counterparty_population_and_roles`, `contract_usage_overview`. +- [x] `llm_normalizer/backend/src/types/addressQuery.ts` + Расширить `AddressIntent`, `AddressResponseType`/debug контракт при необходимости. +- [ ] `llm_normalizer/backend/src/services/address_runtime/decomposeStage.ts` + Добавить follow-up carryover правила для Batch-1 summary intents. + +Статус Phase B.1 (факт): + +- [x] Добавлен `period_coverage_profile` в `AddressIntent` и resolver-сигналы. +- [x] Добавлен `document_type_and_account_section_profile` в `AddressIntent` и resolver-сигналы. +- [x] Добавлен `counterparty_population_and_roles` в `AddressIntent` и resolver-сигналы. +- [x] Добавлен `contract_usage_overview` в `AddressIntent` и resolver-сигналы. +- [x] Расширен mode classifier для management profile вопросов (`management_profile_signal_detected`). + +### 2.2 Recipe / Execution + +- [x] `llm_normalizer/backend/src/services/addressRecipeCatalog.ts` + Добавить recipes: + - `address_period_coverage_profile_v1` + - `address_document_type_and_account_section_profile_v1` + - `address_counterparty_population_roles_v1` + - `address_contract_usage_overview_v1` +- [ ] `llm_normalizer/backend/src/services/addressQueryService.ts` + Добавить обработку summary/list composer-путей для новых intents. +- [ ] Зафиксировать operation-vs-document contracts для метрик `Q1..Q5`. + +Статус Phase B.1 (факт): + +- [x] Добавлен recipe `address_period_coverage_profile_v1` + query template `period_profile`. +- [x] Добавлен recipe `address_document_type_and_account_section_profile_v1` + query template `document_section_profile`. +- [x] Добавлен recipe `address_counterparty_population_roles_v1` + query template `counterparty_roles_profile`. +- [x] Добавлен recipe `address_contract_usage_overview_v1` + query template `contract_usage_profile`. + +### 2.3 Compose / Output + +- [ ] `llm_normalizer/backend/src/services/address_runtime/composeStage.ts` + Формат rank-list/summary для management intents (top/bottom + labels + metric basis). +- [ ] Добавить единый wording для partial (`limited_reason_category`) в Batch-1. + +Статус Phase B.1 (факт): + +- [x] Добавлен summary composer для `period_coverage_profile` (coverage range + top year/docs + top month/ops). +- [x] Добавлен summary composer для `document_type_and_account_section_profile` (top doc types + top/low account sections). +- [x] Добавлен summary composer для `counterparty_population_and_roles` (total + role split). +- [x] Добавлен summary composer для `contract_usage_overview` (total vs used + unused + share). +- [x] Прогнаны build + unit: + - `npm.cmd run build` + - `npm.cmd test -- tests/addressQueryRuntimeM23.test.ts` (`132 passed`) + - live targeted pack `Q6/Q7/Q28`: `2026-04-02_Address_Batch1_NextPack_Q6_Q7_Q28` (`strict factual 9/9`) + +## 3. Phase C (Gate) — критерии закрытия + +- [ ] Domain run-pack по `domain_general_batch1_acceptance_2026-04-02_phaseA.json`: + - `strict_pass(route)=100%` + - `false_factual_rate=0` + - `execution_error_rate=0` +- [ ] Global non-regression: + - `address_slang_stress_full_2026-04-02.json` + - `address_followup_context_chains_2026-04-02.json` + обе метрики не ниже baseline (`102/102`, `25/25`). +- [ ] Обновить docs: `runtime_readiness_matrix_v1.md`, `address_scenario_matrix.md`, `global_execution_checklist_v1.md`. + +## 4. Точка старта работ + +Следующая практическая задача: перейти к domain gate по full Batch-1 pack +(`domain_general_batch1_acceptance_2026-04-02_phaseA.json`) и закрыть Phase C. diff --git a/docs/ADDRESS/address_query/wave1_batch1_readiness_report_2026-04-02.md b/docs/ADDRESS/address_query/wave1_batch1_readiness_report_2026-04-02.md new file mode 100644 index 0000000..593daca --- /dev/null +++ b/docs/ADDRESS/address_query/wave1_batch1_readiness_report_2026-04-02.md @@ -0,0 +1,18 @@ +# Wave-1 Batch-1 Readiness Report + +- Generated at: `2026-04-02T18:35:01+03:00` +- Decision: **READY_FOR_PHASE_A** + +## Checks +- `master_checklist_exists`: **PASS** — X:\1C\NDC_1C\docs\ADDRESS\address_query\global_execution_checklist_v1.md +- `step0_closeout_exists`: **PASS** — X:\1C\NDC_1C\docs\ADDRESS\address_query\step0_closeout_2026-04-02.md +- `step4_plan_exists`: **PASS** — X:\1C\NDC_1C\docs\ADDRESS\address_query\domain_expansion_implementation_plan_v1.md +- `general_domain_analysis_exists`: **PASS** — X:\1C\NDC_1C\docs\ADDRESS\address_query\general_domain_questions_analysis_plan_v1_2026-04-02.md +- `group1_probe_report_exists`: **PASS** — X:\1C\NDC_1C\docs\ADDRESS\address_query\management_route_probe_report_g1_2026-04-02.md +- `complex_status_map_exists`: **PASS** — X:\1C\NDC_1C\docs\ADDRESS\address_query\complex_questions_status_and_reuse_map_2026-04-02.md +- `baseline_stress_102`: **PASS** — strict=102/102, route=102/102 +- `baseline_followup_25`: **PASS** — strict=25/25, route=25/25 +- `nightly_regression_green`: **PASS** — overall_ok=true, packs=2 + +## Next Action +- Start/continue Phase A for Batch-1 (domain card + acceptance set + implementation backlog). diff --git a/docs/ADDRESS/question_sets/domain_general_batch1_acceptance_2026-04-02_phaseA.json b/docs/ADDRESS/question_sets/domain_general_batch1_acceptance_2026-04-02_phaseA.json new file mode 100644 index 0000000..0310f75 --- /dev/null +++ b/docs/ADDRESS/question_sets/domain_general_batch1_acceptance_2026-04-02_phaseA.json @@ -0,0 +1,204 @@ +[ + { + "id": "B1_C001", + "group": "canonical", + "text": "За какие годы в базе есть данные?", + "expected_intent": "period_coverage_profile", + "expected_mode": "address_query" + }, + { + "id": "B1_C002", + "group": "canonical", + "text": "Какой год самый активный по количеству документов?", + "expected_intent": "period_coverage_profile", + "expected_mode": "address_query" + }, + { + "id": "B1_C003", + "group": "canonical", + "text": "Какой месяц самый активный по количеству операций?", + "expected_intent": "period_coverage_profile", + "expected_mode": "address_query" + }, + { + "id": "B1_C004", + "group": "canonical", + "text": "Какие типы документов используются чаще всего в базе?", + "expected_intent": "document_type_and_account_section_profile", + "expected_mode": "address_query" + }, + { + "id": "B1_C005", + "group": "canonical", + "text": "Какие разделы учета наиболее заполнены и какие почти не используются?", + "expected_intent": "document_type_and_account_section_profile", + "expected_mode": "address_query" + }, + { + "id": "B1_C006", + "group": "canonical", + "text": "Сколько всего уникальных контрагентов в базе?", + "expected_intent": "counterparty_population_and_roles", + "expected_mode": "address_query" + }, + { + "id": "B1_C007", + "group": "canonical", + "text": "Сколько у нас заказчиков, поставщиков и смешанных контрагентов?", + "expected_intent": "counterparty_population_and_roles", + "expected_mode": "address_query" + }, + { + "id": "B1_C008", + "group": "canonical", + "text": "Сколько всего договоров заведено и сколько из них реально использовались?", + "expected_intent": "contract_usage_overview", + "expected_mode": "address_query" + }, + { + "id": "B1_C009", + "group": "canonical", + "text": "Покажи профиль данных по базе: диапазон лет, топ год и топ месяц активности.", + "expected_intent": "period_coverage_profile", + "expected_mode": "address_query" + }, + { + "id": "B1_C010", + "group": "canonical", + "text": "Сформируй сводку по типам документов и их доле в общем объеме.", + "expected_intent": "document_type_and_account_section_profile", + "expected_mode": "address_query" + }, + { + "id": "B1_C011", + "group": "canonical", + "text": "Сколько контрагентов активны как клиенты и как поставщики?", + "expected_intent": "counterparty_population_and_roles", + "expected_mode": "address_query" + }, + { + "id": "B1_C012", + "group": "canonical", + "text": "Дай обзор договорной базы: total договоров и used договоров.", + "expected_intent": "contract_usage_overview", + "expected_mode": "address_query" + }, + { + "id": "B1_N001", + "group": "noisy_slang", + "text": "за какие года база ваще живая?", + "expected_intent": "period_coverage_profile", + "expected_mode": "address_query" + }, + { + "id": "B1_N002", + "group": "noisy_slang", + "text": "какой год тут самый движовый по докам", + "expected_intent": "period_coverage_profile", + "expected_mode": "address_query" + }, + { + "id": "B1_N003", + "group": "noisy_slang", + "text": "какой месяц прям пик по операциям?", + "expected_intent": "period_coverage_profile", + "expected_mode": "address_query" + }, + { + "id": "B1_N004", + "group": "noisy_slang", + "text": "каких доков у нас больше всего крутится?", + "expected_intent": "document_type_and_account_section_profile", + "expected_mode": "address_query" + }, + { + "id": "B1_N005", + "group": "noisy_slang", + "text": "какие разделы учета жирные, а какие мертвые?", + "expected_intent": "document_type_and_account_section_profile", + "expected_mode": "address_query" + }, + { + "id": "B1_N006", + "group": "noisy_slang", + "text": "скок уник контрагентов вообще есть", + "expected_intent": "counterparty_population_and_roles", + "expected_mode": "address_query" + }, + { + "id": "B1_N007", + "group": "noisy_slang", + "text": "разбей контров на клиентов/поставщиков/смешанных", + "expected_intent": "counterparty_population_and_roles", + "expected_mode": "address_query" + }, + { + "id": "B1_N008", + "group": "noisy_slang", + "text": "договоров сколько всего и сколько реально юзались?", + "expected_intent": "contract_usage_overview", + "expected_mode": "address_query" + }, + { + "id": "B1_N009", + "group": "noisy_slang", + "text": "покажи по базе years/top year/top month, только без воды", + "expected_intent": "period_coverage_profile", + "expected_mode": "address_query" + }, + { + "id": "B1_N010", + "group": "noisy_slang", + "text": "чо по договорной базе: total vs used", + "expected_intent": "contract_usage_overview", + "expected_mode": "address_query" + }, + { + "id": "B1_F001", + "group": "followup_chain", + "session": "b1_chain_period_profile", + "text": "За какие годы в базе есть данные?", + "expected_intent": "period_coverage_profile", + "expected_mode": "address_query" + }, + { + "id": "B1_F002", + "group": "followup_chain", + "session": "b1_chain_period_profile", + "text": "а какой год самый активный по документам?", + "expected_intent": "period_coverage_profile", + "expected_mode": "address_query" + }, + { + "id": "B1_F003", + "group": "followup_chain", + "session": "b1_chain_period_profile", + "text": "а теперь месяц-пик по операциям", + "expected_intent": "period_coverage_profile", + "expected_mode": "address_query" + }, + { + "id": "B1_F004", + "group": "followup_chain", + "session": "b1_chain_population_contracts", + "text": "Сколько всего уникальных контрагентов в базе?", + "expected_intent": "counterparty_population_and_roles", + "expected_mode": "address_query" + }, + { + "id": "B1_F005", + "group": "followup_chain", + "session": "b1_chain_population_contracts", + "text": "а теперь разбей их на заказчиков и поставщиков", + "expected_intent": "counterparty_population_and_roles", + "expected_mode": "address_query" + }, + { + "id": "B1_F006", + "group": "followup_chain", + "session": "b1_chain_population_contracts", + "text": "и сразу сколько всего договоров и сколько used", + "expected_intent": "contract_usage_overview", + "expected_mode": "address_query" + } +] diff --git a/docs/ADDRESS/question_sets/temp_batch1_next_pack_q6_q7_q28_2026-04-02.json b/docs/ADDRESS/question_sets/temp_batch1_next_pack_q6_q7_q28_2026-04-02.json new file mode 100644 index 0000000..babb4e3 --- /dev/null +++ b/docs/ADDRESS/question_sets/temp_batch1_next_pack_q6_q7_q28_2026-04-02.json @@ -0,0 +1,11 @@ +[ + {"id":"NXP_C006","text":"Сколько всего уникальных контрагентов в базе?","expected_intent":"counterparty_population_and_roles","expected_mode":"address_query"}, + {"id":"NXP_C007","text":"Сколько у нас заказчиков, поставщиков и смешанных контрагентов?","expected_intent":"counterparty_population_and_roles","expected_mode":"address_query"}, + {"id":"NXP_C008","text":"Сколько всего договоров заведено и сколько из них реально использовались?","expected_intent":"contract_usage_overview","expected_mode":"address_query"}, + {"id":"NXP_N006","text":"скок уник контрагентов вообще есть","expected_intent":"counterparty_population_and_roles","expected_mode":"address_query"}, + {"id":"NXP_N007","text":"разбей контров на клиентов/поставщиков/смешанных","expected_intent":"counterparty_population_and_roles","expected_mode":"address_query"}, + {"id":"NXP_N008","text":"договоров сколько всего и сколько реально юзались?","expected_intent":"contract_usage_overview","expected_mode":"address_query"}, + {"id":"NXP_F004","session":"nxp_chain_population_contracts","text":"Сколько всего уникальных контрагентов в базе?","expected_intent":"counterparty_population_and_roles","expected_mode":"address_query"}, + {"id":"NXP_F005","session":"nxp_chain_population_contracts","text":"а теперь разбей их на заказчиков и поставщиков","expected_intent":"counterparty_population_and_roles","expected_mode":"address_query"}, + {"id":"NXP_F006","session":"nxp_chain_population_contracts","text":"и сразу сколько всего договоров и сколько used","expected_intent":"contract_usage_overview","expected_mode":"address_query"} +] diff --git a/docs/ADDRESS/question_sets/temp_batch2_q8_q9_2026-04-02.json b/docs/ADDRESS/question_sets/temp_batch2_q8_q9_2026-04-02.json new file mode 100644 index 0000000..3f9655c --- /dev/null +++ b/docs/ADDRESS/question_sets/temp_batch2_q8_q9_2026-04-02.json @@ -0,0 +1,52 @@ +[ + { + "id": "B2_C001", + "group": "canonical", + "text": "Какие заказчики работали с нами в 2020 году?", + "expected_intent": "counterparty_activity_lifecycle", + "expected_mode": "address_query", + "expected_reply_type": "factual" + }, + { + "id": "B2_C002", + "group": "canonical", + "text": "Какие заказчики работали с нами за все время?", + "expected_intent": "counterparty_activity_lifecycle", + "expected_mode": "address_query", + "expected_reply_type": "factual" + }, + { + "id": "B2_N001", + "group": "noisy_slang", + "text": "какие клиенты у нас были активны в 2020?", + "expected_intent": "counterparty_activity_lifecycle", + "expected_mode": "address_query", + "expected_reply_type": "factual" + }, + { + "id": "B2_N002", + "group": "noisy_slang", + "text": "выведи активных клиентов за все время", + "expected_intent": "counterparty_activity_lifecycle", + "expected_mode": "address_query", + "expected_reply_type": "factual" + }, + { + "id": "B2_F001", + "group": "followup_chain", + "session": "b2_q8_q9_customer_activity_chain", + "text": "Какие заказчики работали с нами в 2020 году?", + "expected_intent": "counterparty_activity_lifecycle", + "expected_mode": "address_query", + "expected_reply_type": "factual" + }, + { + "id": "B2_F002", + "group": "followup_chain", + "session": "b2_q8_q9_customer_activity_chain", + "text": "а за все время?", + "expected_intent": "counterparty_activity_lifecycle", + "expected_mode": "address_query", + "expected_reply_type": "factual" + } +] diff --git a/docs/ADDRESS/question_sets/temp_contracts_zhukovka_targeted_2026-04-02.json b/docs/ADDRESS/question_sets/temp_contracts_zhukovka_targeted_2026-04-02.json new file mode 100644 index 0000000..5a71dbc --- /dev/null +++ b/docs/ADDRESS/question_sets/temp_contracts_zhukovka_targeted_2026-04-02.json @@ -0,0 +1,20 @@ +[ + { + "id": "Q_CONTRACTS_ZHUKOVKA", + "text": "покажи договора все по жуковке 51", + "expected_intent": "list_contracts_by_counterparty", + "expected_mode": "address_query" + }, + { + "id": "Q_DOCS_ZHUKOVKA", + "text": "покажи документы все по жуковке 51", + "expected_intent": "list_documents_by_counterparty", + "expected_mode": "address_query" + }, + { + "id": "Q_CONTRACTS_SVK", + "text": "покажи договора по свк", + "expected_intent": "list_contracts_by_counterparty", + "expected_mode": "address_query" + } +] diff --git a/docs/ADDRESS/question_sets/temp_contracts_zhukovka_variants_2026-04-02.json b/docs/ADDRESS/question_sets/temp_contracts_zhukovka_variants_2026-04-02.json new file mode 100644 index 0000000..53e01ba --- /dev/null +++ b/docs/ADDRESS/question_sets/temp_contracts_zhukovka_variants_2026-04-02.json @@ -0,0 +1,4 @@ +[ + {"id":"Q_Z1","text":"покажи договора все по жуковка 51","expected_mode":"address_query"}, + {"id":"Q_Z2","text":"покажи договора все по жуковка","expected_mode":"address_query"} +] diff --git a/docs/ADDRESS/question_sets/temp_customer_role_probe_2026-04-02.json b/docs/ADDRESS/question_sets/temp_customer_role_probe_2026-04-02.json new file mode 100644 index 0000000..3466ae6 --- /dev/null +++ b/docs/ADDRESS/question_sets/temp_customer_role_probe_2026-04-02.json @@ -0,0 +1,4 @@ +[ + { "id": "P001", "text": "скок клиентов" }, + { "id": "P002", "text": "кто у нас заказчики вообще" } +] diff --git a/docs/ADDRESS/question_sets/temp_gate_block_probe_2026-04-02.json b/docs/ADDRESS/question_sets/temp_gate_block_probe_2026-04-02.json new file mode 100644 index 0000000..1a2c289 --- /dev/null +++ b/docs/ADDRESS/question_sets/temp_gate_block_probe_2026-04-02.json @@ -0,0 +1,4 @@ +[ + { "id": "G001", "text": "привет как дела" }, + { "id": "G002", "text": "выведи список заказчиков за все время" } +] diff --git a/docs/ADDRESS/question_sets/temp_general5_live_check_2026-04-02.json b/docs/ADDRESS/question_sets/temp_general5_live_check_2026-04-02.json new file mode 100644 index 0000000..b0e1385 --- /dev/null +++ b/docs/ADDRESS/question_sets/temp_general5_live_check_2026-04-02.json @@ -0,0 +1,7 @@ +[ + {"id":"Q1","text":"За какие годы в базе есть данные?","expected_intent":"period_coverage_profile","expected_mode":"address_query"}, + {"id":"Q2","text":"Какой год самый активный по количеству документов?","expected_intent":"period_coverage_profile","expected_mode":"address_query"}, + {"id":"Q3","text":"Какой месяц самый активный по количеству операций?","expected_intent":"period_coverage_profile","expected_mode":"address_query"}, + {"id":"Q4","text":"Какие типы документов используются чаще всего в базе?","expected_intent":"document_type_and_account_section_profile","expected_mode":"address_query"}, + {"id":"Q5","text":"Какие разделы учета наиболее заполнены и какие почти не используются?","expected_intent":"document_type_and_account_section_profile","expected_mode":"address_query"} +] diff --git a/docs/ADDRESS/question_sets/temp_llm_first_gate_probe_2026-04-02.json b/docs/ADDRESS/question_sets/temp_llm_first_gate_probe_2026-04-02.json new file mode 100644 index 0000000..e6a1cb6 --- /dev/null +++ b/docs/ADDRESS/question_sets/temp_llm_first_gate_probe_2026-04-02.json @@ -0,0 +1,6 @@ +[ + { "id": "L001", "text": "выведи список заказчиков за все время" }, + { "id": "L002", "text": "покажи список заказчиков за 20год" }, + { "id": "L003", "text": "zakazchiki za 20 god spisok" }, + { "id": "L004", "text": "кто у нас заказчики вообще" } +] diff --git a/docs/ADDRESS/question_sets/temp_repro_customer_list_issue_2026-04-02.json b/docs/ADDRESS/question_sets/temp_repro_customer_list_issue_2026-04-02.json new file mode 100644 index 0000000..e10dd85 --- /dev/null +++ b/docs/ADDRESS/question_sets/temp_repro_customer_list_issue_2026-04-02.json @@ -0,0 +1,10 @@ +[ + { + "id": "R001", + "text": "выведи список заказчиков за все время" + }, + { + "id": "R002", + "text": "покажи список заказчиков за 20год" + } +] diff --git a/docs/ADDRESS/question_sets/temp_reverse_variations_2026-04-02.json b/docs/ADDRESS/question_sets/temp_reverse_variations_2026-04-02.json new file mode 100644 index 0000000..43e92a9 --- /dev/null +++ b/docs/ADDRESS/question_sets/temp_reverse_variations_2026-04-02.json @@ -0,0 +1,6 @@ +[ + {"id":"R001","text":"Какой год самый пассивный по количеству документов?"}, + {"id":"R002","text":"Какой месяц самый пассивный по количеству операций?"}, + {"id":"R003","text":"Какие типы документов используются реже всего в базе?"}, + {"id":"R004","text":"Какие разделы учета наименее заполнены?"} +] diff --git a/docs/ADDRESS/question_sets/temp_supplier_client_followup_targeted_2026-04-02.json b/docs/ADDRESS/question_sets/temp_supplier_client_followup_targeted_2026-04-02.json new file mode 100644 index 0000000..d5ceff6 --- /dev/null +++ b/docs/ADDRESS/question_sets/temp_supplier_client_followup_targeted_2026-04-02.json @@ -0,0 +1,25 @@ +[ + { + "id": "Q001", + "text": "скок поставщиков в базе", + "expected_intent": "counterparty_population_and_roles", + "expected_mode": "address_query", + "expected_reply_type": "factual", + "session": "supplier_client_followup_2026-04-02" + }, + { + "id": "Q002", + "text": "скок клиентов", + "expected_intent": "counterparty_population_and_roles", + "expected_mode": "address_query", + "expected_reply_type": "factual", + "session": "supplier_client_followup_2026-04-02" + }, + { + "id": "Q003", + "text": "скок клиентов в базе", + "expected_intent": "counterparty_population_and_roles", + "expected_mode": "address_query", + "expected_reply_type": "factual" + } +] diff --git a/docs/ADDRESS/question_sets/temp_supplier_count_targeted_2026-04-02.json b/docs/ADDRESS/question_sets/temp_supplier_count_targeted_2026-04-02.json new file mode 100644 index 0000000..3b86a94 --- /dev/null +++ b/docs/ADDRESS/question_sets/temp_supplier_count_targeted_2026-04-02.json @@ -0,0 +1,33 @@ +[ + { + "id": "Q001", + "text": "скока всего контрагентов в базе", + "expected_intent": "counterparty_population_and_roles", + "expected_mode": "address_query", + "expected_reply_type": "factual", + "session": "supplier_count_targeted_2026-04-02" + }, + { + "id": "Q002", + "text": "скока поставщиков", + "expected_intent": "counterparty_population_and_roles", + "expected_mode": "address_query", + "expected_reply_type": "factual", + "session": "supplier_count_targeted_2026-04-02" + }, + { + "id": "Q003", + "text": "скока поставщиков в базе", + "expected_intent": "counterparty_population_and_roles", + "expected_mode": "address_query", + "expected_reply_type": "factual", + "session": "supplier_count_targeted_2026-04-02" + }, + { + "id": "Q004", + "text": "скока заказчиков в базе", + "expected_intent": "counterparty_population_and_roles", + "expected_mode": "address_query", + "expected_reply_type": "factual" + } +] diff --git a/docs/ADDRESS/question_sets/temp_user_repro_followup_zhukovka_2026-04-02.json b/docs/ADDRESS/question_sets/temp_user_repro_followup_zhukovka_2026-04-02.json new file mode 100644 index 0000000..243e87e --- /dev/null +++ b/docs/ADDRESS/question_sets/temp_user_repro_followup_zhukovka_2026-04-02.json @@ -0,0 +1,29 @@ +[ + { + "id": "Q_DOCS_ZH_2020", + "text": "покажи доки по жуковке за 20 год", + "expected_mode": "address_query" + }, + { + "id": "Q_CUST_2020", + "text": "покажи заказчиков за 20 год", + "expected_mode": "address_query", + "session": "cust_followup_2020_2021" + }, + { + "id": "Q_CUST_2021_FOLLOWUP", + "text": "теперь за 21", + "expected_mode": "address_query", + "session": "cust_followup_2020_2021" + }, + { + "id": "Q_DOCS_ZH_ALL", + "text": "покажи доки по жуковке за все время", + "expected_mode": "address_query" + }, + { + "id": "Q_DOCS_ZH51_ALL", + "text": "покажи доки по жуковке 51 за все время", + "expected_mode": "address_query" + } +] diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Batch1_NextPack_Q6_Q7_Q28/README.md b/docs/ADDRESS/runs/2026-04-02_Address_Batch1_NextPack_Q6_Q7_Q28/README.md new file mode 100644 index 0000000..da5232f --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Batch1_NextPack_Q6_Q7_Q28/README.md @@ -0,0 +1,28 @@ +# 2026-04-02_Address_Batch1_NextPack_Q6_Q7_Q28 + +Generated at: 2026-04-02T21:06:15 +Questions file: X:\1C\NDC_1C\docs\ADDRESS\question_sets\temp_batch1_next_pack_q6_q7_q28_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 +Strict policy: factual + +## Totals +- questions_total: 9 +- ok_200_count: 9 +- semantic_pass_count: 9 +- semantic_pass_rate: 1.0 +- route_pass_count: 9 +- route_pass_rate: 1.0 +- strict_pass_count: 9 +- strict_pass_rate: 1.0 +- factual_count: 9 +- partial_coverage_count: 0 +- clarification_required_count: 0 +- http_error_count: 0 +- llm_decomposition_applied_count: 4 +- avg_elapsed_ms: 5195.3 + +## Files +- run_summary.json +- full_live_results.json +- failures_only.json diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Batch1_NextPack_Q6_Q7_Q28/failures_only.json b/docs/ADDRESS/runs/2026-04-02_Address_Batch1_NextPack_Q6_Q7_Q28/failures_only.json new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Batch1_NextPack_Q6_Q7_Q28/failures_only.json @@ -0,0 +1 @@ +[] diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Batch1_NextPack_Q6_Q7_Q28/full_live_results.json b/docs/ADDRESS/runs/2026-04-02_Address_Batch1_NextPack_Q6_Q7_Q28/full_live_results.json new file mode 100644 index 0000000..bff898c --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Batch1_NextPack_Q6_Q7_Q28/full_live_results.json @@ -0,0 +1,1361 @@ +{ + "run_id": "2026-04-02_Address_Batch1_NextPack_Q6_Q7_Q28", + "generated_at": "2026-04-02T21:06:15", + "summary": { + "run_id": "2026-04-02_Address_Batch1_NextPack_Q6_Q7_Q28", + "generated_at": "2026-04-02T21:06:15", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\temp_batch1_next_pack_q6_q7_q28_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", + "strict_policy": "factual", + "totals": { + "questions_total": 9, + "ok_200_count": 9, + "semantic_pass_count": 9, + "semantic_pass_rate": 1.0, + "route_pass_count": 9, + "route_pass_rate": 1.0, + "strict_pass_count": 9, + "strict_pass_rate": 1.0, + "factual_count": 9, + "partial_coverage_count": 0, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_applied_count": 4, + "avg_elapsed_ms": 5195.3 + }, + "distributions": { + "reply_type": { + "factual": 9 + }, + "actual_intent": { + "counterparty_population_and_roles": 6, + "contract_usage_overview": 3 + }, + "actual_mode": { + "address_query": 9 + }, + "mcp_call_status": { + "matched_non_empty": 9 + }, + "limited_reason_category": {}, + "route_health": { + "ok_or_factual": 9 + } + } + }, + "rows": [ + { + "index": 1, + "id": "NXP_C006", + "question": "Сколько всего уникальных контрагентов в базе?", + "session": null, + "session_id": "asst-2026-04-02_Address_Batch1_NextPack_Q6_Q7_Q28-nxp_c006", + "status_code": 200, + "ok": true, + "elapsed_ms": 6143, + "reply_type": "factual", + "trace_id": "address-XZ4jiMmfhs", + "assistant_reply": "Профиль контрагентов собран (catalog + bank-doc activity aggregate).\nСтрок агрегата: 5.\nВсего уникальных контрагентов в базе: 139.", + "assistant_reply_first_line": "Профиль контрагентов собран (catalog + bank-doc activity aggregate).", + "expected_intent": "counterparty_population_and_roles", + "actual_intent": "counterparty_population_and_roles", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "factual", + "strict_pass": true, + "selected_recipe": "address_counterparty_population_roles_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "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, + "debug_payload": { + "trace_id": "address-XZ4jiMmfhs", + "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", + "object_signal_detected", + "counterparty_population_and_roles_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": "counterparty_population_and_roles", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_to": "2026-04-02" + }, + "missing_required_filters": [], + "selected_recipe": "address_counterparty_population_roles_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "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", + "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_SUMMARY", + "execution_lane": "address_query", + "llm_decomposition_applied": false, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "MisHVlDQrWD8mI", + "llm_decomposition_effective_message": "Сколько всего уникальных контрагентов в базе?", + "llm_decomposition_reason": "normalized_fragment_rejected_intent_drop", + "fallback_rule_hit": null, + "sanitized_user_message": "сколько всего уникальных контрагентов в базе?", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "MisHVlDQrWD8mI", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "Сколько всего уникальных контрагентов в базе?" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 2, + "id": "NXP_C007", + "question": "Сколько у нас заказчиков, поставщиков и смешанных контрагентов?", + "session": null, + "session_id": "asst-2026-04-02_Address_Batch1_NextPack_Q6_Q7_Q28-nxp_c007", + "status_code": 200, + "ok": true, + "elapsed_ms": 7106, + "reply_type": "factual", + "trace_id": "address-psNtWF0yca", + "assistant_reply": "Профиль контрагентов собран (catalog + bank-doc activity aggregate).\nСтрок агрегата: 5.\nРоли контрагентов по активности:\n1. Заказчики (только customer-роль): 14.\n2. Поставщики (только supplier-роль): 79.\n3. Смешанные (и покупатель, и поставщик): 32.\n4. Активные контрагенты (union ролей): 125.\n5. Прочие/неактивные в выбранном окне: 14.", + "assistant_reply_first_line": "Профиль контрагентов собран (catalog + bank-doc activity aggregate).", + "expected_intent": "counterparty_population_and_roles", + "actual_intent": "counterparty_population_and_roles", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "factual", + "strict_pass": true, + "selected_recipe": "address_counterparty_population_roles_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-psNtWF0yca", + "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", + "counterparty_population_and_roles_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": "counterparty_population_and_roles", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_to": "2026-04-02" + }, + "missing_required_filters": [], + "selected_recipe": "address_counterparty_population_roles_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "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", + "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_SUMMARY", + "execution_lane": "address_query", + "llm_decomposition_applied": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "J6i4X-bsdseBsk", + "llm_decomposition_effective_message": "Количество заказчиков, поставщиков и смешанных контрагентов.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "сколько у нас заказчиков, поставщиков и смешанных контрагентов?", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "J6i4X-bsdseBsk", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Количество заказчиков, поставщиков и смешанных контрагентов." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 3, + "id": "NXP_C008", + "question": "Сколько всего договоров заведено и сколько из них реально использовались?", + "session": null, + "session_id": "asst-2026-04-02_Address_Batch1_NextPack_Q6_Q7_Q28-nxp_c008", + "status_code": 200, + "ok": true, + "elapsed_ms": 6107, + "reply_type": "factual", + "trace_id": "address-QPi-30tg8R", + "assistant_reply": "Профиль договорной базы собран (catalog + usage aggregate).\nСтрок агрегата: 2.\nВсего договоров в базе: 394.\nИспользованных договоров (есть factual связь с операциями): 291.\nНеиспользуемых договоров: 103.\nДоля используемых договоров: 73.9%.", + "assistant_reply_first_line": "Профиль договорной базы собран (catalog + usage aggregate).", + "expected_intent": "contract_usage_overview", + "actual_intent": "contract_usage_overview", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "factual", + "strict_pass": true, + "selected_recipe": "address_contract_usage_overview_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 2, + "rows_matched": 2, + "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, + "debug_payload": { + "trace_id": "address-QPi-30tg8R", + "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", + "object_signal_detected", + "contract_usage_overview_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": "contract_usage_overview", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_to": "2026-04-02" + }, + "missing_required_filters": [], + "selected_recipe": "address_contract_usage_overview_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "matched_non_empty", + "rows_fetched": 2, + "raw_rows_received": 2, + "rows_after_account_scope": 2, + "rows_after_recipe_filter": 2, + "rows_materialized": 2, + "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_SUMMARY", + "execution_lane": "address_query", + "llm_decomposition_applied": false, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "lhG2Qkz_EZgoqn", + "llm_decomposition_effective_message": "Сколько всего договоров заведено и сколько из них реально использовались?", + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "sanitized_user_message": "сколько всего договоров заведено и сколько из них реально использовались?", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "lhG2Qkz_EZgoqn", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "Сколько всего договоров заведено и сколько из них реально использовались?" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 4, + "id": "NXP_N006", + "question": "скок уник контрагентов вообще есть", + "session": null, + "session_id": "asst-2026-04-02_Address_Batch1_NextPack_Q6_Q7_Q28-nxp_n006", + "status_code": 200, + "ok": true, + "elapsed_ms": 5073, + "reply_type": "factual", + "trace_id": "address-AdKBmtQMH-", + "assistant_reply": "Профиль контрагентов собран (catalog + bank-doc activity aggregate).\nСтрок агрегата: 5.\nВсего уникальных контрагентов в базе: 139.", + "assistant_reply_first_line": "Профиль контрагентов собран (catalog + bank-doc activity aggregate).", + "expected_intent": "counterparty_population_and_roles", + "actual_intent": "counterparty_population_and_roles", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "factual", + "strict_pass": true, + "selected_recipe": "address_counterparty_population_roles_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-AdKBmtQMH-", + "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", + "object_signal_detected", + "counterparty_population_and_roles_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": "counterparty_population_and_roles", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_to": "2026-04-02" + }, + "missing_required_filters": [], + "selected_recipe": "address_counterparty_population_roles_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "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", + "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_SUMMARY", + "execution_lane": "address_query", + "llm_decomposition_applied": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "LMsdBgxxJKdeEx", + "llm_decomposition_effective_message": "сколько уникальных контрагентов существует в системе", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "скок уник контрагентов вообще есть", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "LMsdBgxxJKdeEx", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "сколько уникальных контрагентов существует в системе" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 5, + "id": "NXP_N007", + "question": "разбей контров на клиентов/поставщиков/смешанных", + "session": null, + "session_id": "asst-2026-04-02_Address_Batch1_NextPack_Q6_Q7_Q28-nxp_n007", + "status_code": 200, + "ok": true, + "elapsed_ms": 1010, + "reply_type": "factual", + "trace_id": "address-tFfYx75k6v", + "assistant_reply": "Профиль контрагентов собран (catalog + bank-doc activity aggregate).\nСтрок агрегата: 5.\nРоли контрагентов по активности:\n1. Заказчики (только customer-роль): 14.\n2. Поставщики (только supplier-роль): 79.\n3. Смешанные (и покупатель, и поставщик): 32.\n4. Активные контрагенты (union ролей): 125.\n5. Прочие/неактивные в выбранном окне: 14.", + "assistant_reply_first_line": "Профиль контрагентов собран (catalog + bank-doc activity aggregate).", + "expected_intent": "counterparty_population_and_roles", + "actual_intent": "counterparty_population_and_roles", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "factual", + "strict_pass": true, + "selected_recipe": "address_counterparty_population_roles_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-tFfYx75k6v", + "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": [ + "management_profile_signal_detected", + "shape_not_detected", + "counterparty_population_and_roles_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": "counterparty_population_and_roles", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_to": "2026-04-02" + }, + "missing_required_filters": [], + "selected_recipe": "address_counterparty_population_roles_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "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", + "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_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": "разбей контров на клиентов/поставщиков/смешанных", + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "sanitized_user_message": "разбей контров на клиентов/поставщиков/смешанных", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + }, + "error_code": null, + "error_message": null + }, + { + "index": 6, + "id": "NXP_N008", + "question": "договоров сколько всего и сколько реально юзались?", + "session": null, + "session_id": "asst-2026-04-02_Address_Batch1_NextPack_Q6_Q7_Q28-nxp_n008", + "status_code": 200, + "ok": true, + "elapsed_ms": 6098, + "reply_type": "factual", + "trace_id": "address-frl3cP5aIp", + "assistant_reply": "Профиль договорной базы собран (catalog + usage aggregate).\nСтрок агрегата: 2.\nВсего договоров в базе: 394.\nИспользованных договоров (есть factual связь с операциями): 291.\nНеиспользуемых договоров: 103.\nДоля используемых договоров: 73.9%.", + "assistant_reply_first_line": "Профиль договорной базы собран (catalog + usage aggregate).", + "expected_intent": "contract_usage_overview", + "actual_intent": "contract_usage_overview", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "factual", + "strict_pass": true, + "selected_recipe": "address_contract_usage_overview_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 2, + "rows_matched": 2, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-frl3cP5aIp", + "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", + "object_signal_detected", + "contract_usage_overview_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": "contract_usage_overview", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_to": "2026-04-02" + }, + "missing_required_filters": [], + "selected_recipe": "address_contract_usage_overview_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "matched_non_empty", + "rows_fetched": 2, + "raw_rows_received": 2, + "rows_after_account_scope": 2, + "rows_after_recipe_filter": 2, + "rows_materialized": 2, + "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_SUMMARY", + "execution_lane": "address_query", + "llm_decomposition_applied": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "f6qNdJhxD55CEm", + "llm_decomposition_effective_message": "сколько всего договоров и сколько из них были использованы в реальной деятельности?", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "договоров сколько всего и сколько реально юзались?", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "f6qNdJhxD55CEm", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "сколько всего договоров и сколько из них были использованы в реальной деятельности?" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 7, + "id": "NXP_F004", + "question": "Сколько всего уникальных контрагентов в базе?", + "session": "nxp_chain_population_contracts", + "session_id": "asst-2026-04-02_Address_Batch1_NextPack_Q6_Q7_Q28-nxp_chain_population_contracts", + "status_code": 200, + "ok": true, + "elapsed_ms": 5069, + "reply_type": "factual", + "trace_id": "address-gu_yxkCRGc", + "assistant_reply": "Профиль контрагентов собран (catalog + bank-doc activity aggregate).\nСтрок агрегата: 5.\nВсего уникальных контрагентов в базе: 139.", + "assistant_reply_first_line": "Профиль контрагентов собран (catalog + bank-doc activity aggregate).", + "expected_intent": "counterparty_population_and_roles", + "actual_intent": "counterparty_population_and_roles", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "factual", + "strict_pass": true, + "selected_recipe": "address_counterparty_population_roles_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "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, + "debug_payload": { + "trace_id": "address-gu_yxkCRGc", + "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", + "object_signal_detected", + "counterparty_population_and_roles_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": "counterparty_population_and_roles", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_to": "2026-04-02" + }, + "missing_required_filters": [], + "selected_recipe": "address_counterparty_population_roles_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "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", + "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_SUMMARY", + "execution_lane": "address_query", + "llm_decomposition_applied": false, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "r1mlStnrNksqf5", + "llm_decomposition_effective_message": "Сколько всего уникальных контрагентов в базе?", + "llm_decomposition_reason": "normalized_fragment_rejected_intent_drop", + "fallback_rule_hit": null, + "sanitized_user_message": "сколько всего уникальных контрагентов в базе?", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "r1mlStnrNksqf5", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "Сколько всего уникальных контрагентов в базе?" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 8, + "id": "NXP_F005", + "question": "а теперь разбей их на заказчиков и поставщиков", + "session": "nxp_chain_population_contracts", + "session_id": "asst-2026-04-02_Address_Batch1_NextPack_Q6_Q7_Q28-nxp_chain_population_contracts", + "status_code": 200, + "ok": true, + "elapsed_ms": 982, + "reply_type": "factual", + "trace_id": "address-npG4vyBIUF", + "assistant_reply": "Профиль контрагентов собран (catalog + bank-doc activity aggregate).\nСтрок агрегата: 5.\nРоли контрагентов по активности:\n1. Заказчики (только customer-роль): 14.\n2. Поставщики (только supplier-роль): 79.\n3. Смешанные (и покупатель, и поставщик): 32.\n4. Активные контрагенты (union ролей): 125.\n5. Прочие/неактивные в выбранном окне: 14.", + "assistant_reply_first_line": "Профиль контрагентов собран (catalog + bank-doc activity aggregate).", + "expected_intent": "counterparty_population_and_roles", + "actual_intent": "counterparty_population_and_roles", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "factual", + "strict_pass": true, + "selected_recipe": "address_counterparty_population_roles_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-npG4vyBIUF", + "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", + "counterparty_population_and_roles_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": "counterparty_population_and_roles", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_to": "2026-04-02" + }, + "missing_required_filters": [], + "selected_recipe": "address_counterparty_population_roles_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "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", + "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_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": "а теперь разбей их на заказчиков и поставщиков", + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "sanitized_user_message": "а теперь разбей их на заказчиков и поставщиков", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + }, + "error_code": null, + "error_message": null + }, + { + "index": 9, + "id": "NXP_F006", + "question": "и сразу сколько всего договоров и сколько used", + "session": "nxp_chain_population_contracts", + "session_id": "asst-2026-04-02_Address_Batch1_NextPack_Q6_Q7_Q28-nxp_chain_population_contracts", + "status_code": 200, + "ok": true, + "elapsed_ms": 9170, + "reply_type": "factual", + "trace_id": "address-VVTvYltgsD", + "assistant_reply": "Профиль договорной базы собран (catalog + usage aggregate).\nСтрок агрегата: 2.\nВсего договоров в базе: 394.\nИспользованных договоров (есть factual связь с операциями): 291.\nНеиспользуемых договоров: 103.\nДоля используемых договоров: 73.9%.", + "assistant_reply_first_line": "Профиль договорной базы собран (catalog + usage aggregate).", + "expected_intent": "contract_usage_overview", + "actual_intent": "contract_usage_overview", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "factual", + "strict_pass": true, + "selected_recipe": "address_contract_usage_overview_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 2, + "rows_matched": 2, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-VVTvYltgsD", + "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", + "object_signal_detected", + "contract_usage_overview_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": "contract_usage_overview", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_to": "2026-04-02" + }, + "missing_required_filters": [], + "selected_recipe": "address_contract_usage_overview_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "matched_non_empty", + "rows_fetched": 2, + "raw_rows_received": 2, + "rows_after_account_scope": 2, + "rows_after_recipe_filter": 2, + "rows_materialized": 2, + "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_SUMMARY", + "execution_lane": "address_query", + "llm_decomposition_applied": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "nuAGWFQG1ojx43", + "llm_decomposition_effective_message": "сколько всего договоров", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "и сразу сколько всего договоров и сколько used", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "nuAGWFQG1ojx43", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "сколько всего договоров" + } + }, + "error_code": null, + "error_message": null + } + ] +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Batch1_NextPack_Q6_Q7_Q28/response_audit.md b/docs/ADDRESS/runs/2026-04-02_Address_Batch1_NextPack_Q6_Q7_Q28/response_audit.md new file mode 100644 index 0000000..3d4d210 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Batch1_NextPack_Q6_Q7_Q28/response_audit.md @@ -0,0 +1,13 @@ +# Response Audit: 2026-04-02_Address_Batch1_NextPack_Q6_Q7_Q28 + +| id | strict | route_health | reply_type | intent | limited_reason | question | assistant_first_line | +|---|---|---|---|---|---|---|---| +| NXP_C006 | True | ok_or_factual | factual | counterparty_population_and_roles | None | Сколько всего уникальных контрагентов в базе? | Профиль контрагентов собран (catalog + bank-doc activity aggregate). | +| NXP_C007 | True | ok_or_factual | factual | counterparty_population_and_roles | None | Сколько у нас заказчиков, поставщиков и смешанных контрагентов? | Профиль контрагентов собран (catalog + bank-doc activity aggregate). | +| NXP_C008 | True | ok_or_factual | factual | contract_usage_overview | None | Сколько всего договоров заведено и сколько из них реально использовались? | Профиль договорной базы собран (catalog + usage aggregate). | +| NXP_N006 | True | ok_or_factual | factual | counterparty_population_and_roles | None | скок уник контрагентов вообще есть | Профиль контрагентов собран (catalog + bank-doc activity aggregate). | +| NXP_N007 | True | ok_or_factual | factual | counterparty_population_and_roles | None | разбей контров на клиентов/поставщиков/смешанных | Профиль контрагентов собран (catalog + bank-doc activity aggregate). | +| NXP_N008 | True | ok_or_factual | factual | contract_usage_overview | None | договоров сколько всего и сколько реально юзались? | Профиль договорной базы собран (catalog + usage aggregate). | +| NXP_F004 | True | ok_or_factual | factual | counterparty_population_and_roles | None | Сколько всего уникальных контрагентов в базе? | Профиль контрагентов собран (catalog + bank-doc activity aggregate). | +| NXP_F005 | True | ok_or_factual | factual | counterparty_population_and_roles | None | а теперь разбей их на заказчиков и поставщиков | Профиль контрагентов собран (catalog + bank-doc activity aggregate). | +| NXP_F006 | True | ok_or_factual | factual | contract_usage_overview | None | и сразу сколько всего договоров и сколько used | Профиль договорной базы собран (catalog + usage aggregate). | diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Batch1_NextPack_Q6_Q7_Q28/run_summary.json b/docs/ADDRESS/runs/2026-04-02_Address_Batch1_NextPack_Q6_Q7_Q28/run_summary.json new file mode 100644 index 0000000..3ea0bda --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Batch1_NextPack_Q6_Q7_Q28/run_summary.json @@ -0,0 +1,45 @@ +{ + "run_id": "2026-04-02_Address_Batch1_NextPack_Q6_Q7_Q28", + "generated_at": "2026-04-02T21:06:15", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\temp_batch1_next_pack_q6_q7_q28_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", + "strict_policy": "factual", + "totals": { + "questions_total": 9, + "ok_200_count": 9, + "semantic_pass_count": 9, + "semantic_pass_rate": 1.0, + "route_pass_count": 9, + "route_pass_rate": 1.0, + "strict_pass_count": 9, + "strict_pass_rate": 1.0, + "factual_count": 9, + "partial_coverage_count": 0, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_applied_count": 4, + "avg_elapsed_ms": 5195.3 + }, + "distributions": { + "reply_type": { + "factual": 9 + }, + "actual_intent": { + "counterparty_population_and_roles": 6, + "contract_usage_overview": 3 + }, + "actual_mode": { + "address_query": 9 + }, + "mcp_call_status": { + "matched_non_empty": 9 + }, + "limited_reason_category": {}, + "route_health": { + "ok_or_factual": 9 + } + } +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Batch2_Q8_Q9_Targeted/README.md b/docs/ADDRESS/runs/2026-04-02_Address_Batch2_Q8_Q9_Targeted/README.md new file mode 100644 index 0000000..c3153c4 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Batch2_Q8_Q9_Targeted/README.md @@ -0,0 +1,28 @@ +# 2026-04-02_Address_Batch2_Q8_Q9_Targeted + +Generated at: 2026-04-02T21:37:06 +Questions file: X:\1C\NDC_1C\docs\ADDRESS\question_sets\temp_batch2_q8_q9_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 +Strict policy: factual + +## Totals +- questions_total: 6 +- ok_200_count: 6 +- semantic_pass_count: 6 +- semantic_pass_rate: 1.0 +- route_pass_count: 6 +- route_pass_rate: 1.0 +- strict_pass_count: 6 +- strict_pass_rate: 1.0 +- factual_count: 6 +- partial_coverage_count: 0 +- clarification_required_count: 0 +- http_error_count: 0 +- llm_decomposition_applied_count: 0 +- avg_elapsed_ms: 914.3 + +## Files +- run_summary.json +- full_live_results.json +- failures_only.json diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Batch2_Q8_Q9_Targeted/failures_only.json b/docs/ADDRESS/runs/2026-04-02_Address_Batch2_Q8_Q9_Targeted/failures_only.json new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Batch2_Q8_Q9_Targeted/failures_only.json @@ -0,0 +1 @@ +[] diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Batch2_Q8_Q9_Targeted/full_live_results.json b/docs/ADDRESS/runs/2026-04-02_Address_Batch2_Q8_Q9_Targeted/full_live_results.json new file mode 100644 index 0000000..9b262d4 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Batch2_Q8_Q9_Targeted/full_live_results.json @@ -0,0 +1,910 @@ +{ + "run_id": "2026-04-02_Address_Batch2_Q8_Q9_Targeted", + "generated_at": "2026-04-02T21:37:06", + "summary": { + "run_id": "2026-04-02_Address_Batch2_Q8_Q9_Targeted", + "generated_at": "2026-04-02T21:37:06", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\temp_batch2_q8_q9_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", + "strict_policy": "factual", + "totals": { + "questions_total": 6, + "ok_200_count": 6, + "semantic_pass_count": 6, + "semantic_pass_rate": 1.0, + "route_pass_count": 6, + "route_pass_rate": 1.0, + "strict_pass_count": 6, + "strict_pass_rate": 1.0, + "factual_count": 6, + "partial_coverage_count": 0, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_applied_count": 0, + "avg_elapsed_ms": 914.3 + }, + "distributions": { + "reply_type": { + "factual": 6 + }, + "actual_intent": { + "counterparty_activity_lifecycle": 6 + }, + "actual_mode": { + "address_query": 6 + }, + "mcp_call_status": { + "matched_non_empty": 6 + }, + "limited_reason_category": {}, + "route_health": { + "ok_or_factual": 6 + } + } + }, + "rows": [ + { + "index": 1, + "id": "B2_C001", + "question": "Какие заказчики работали с нами в 2020 году?", + "session": null, + "session_id": "asst-2026-04-02_Address_Batch2_Q8_Q9_Targeted-b2_c001", + "status_code": 200, + "ok": true, + "elapsed_ms": 425, + "reply_type": "factual", + "trace_id": "address-xv2CdIiF1C", + "assistant_reply": "Собран профиль активности заказчиков (bank-doc activity aggregate).\nСтрок агрегата: 13.\nАктивные заказчики в 2020 году: 13.\n1. Группа | операций: 13 | последняя активность: 2020-12-30T12:00:00Z\n2. СБЕРБАНК, ПАО | операций: 9 | последняя активность: 2020-03-02T12:00:04Z\n3. ЭталонМебель | операций: 4 | последняя активность: 2020-04-27T12:00:00Z\n4. Гамма-мебель, ООО | операций: 3 | последняя активность: 2020-08-11T13:15:30Z\n5. ЗАО Ремонтно-строительная фирма «Ремстройсервис» | операций: 3 | последняя активность: 2020-06-03T00:00:02Z\n6. НОРТОН | операций: 3 | последняя активность: 2020-03-19T12:00:00Z\n8. ИП Калинин Н.М. | операций: 2 | последняя активность: 2020-03-02T12:00:03Z\n9. МНН | операций: 1 | последняя активность: 2020-08-11T13:16:37Z\n10. «Олимпстрой» | операций: 1 | последняя активность: 2020-07-13T12:00:00Z\n11. ПрофТренд,ООО | операций: 1 | последняя активность: 2020-05-15T12:00:02Z\n12. Лайсвуд, ООО | операций: 1 | последняя активность: 2020-03-02T12:00:02Z\n13. Смарт | операций: 1 | последняя активность: 2020-02-07T12:00:03Z", + "assistant_reply_first_line": "Собран профиль активности заказчиков (bank-doc activity aggregate).", + "expected_intent": "counterparty_activity_lifecycle", + "actual_intent": "counterparty_activity_lifecycle", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": "factual", + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "factual", + "strict_pass": true, + "selected_recipe": "address_counterparty_activity_lifecycle_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 13, + "rows_matched": 13, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-xv2CdIiF1C", + "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": [ + "management_profile_signal_detected", + "shape_not_detected", + "counterparty_activity_lifecycle_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": "counterparty_activity_lifecycle", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_from": "2020-01-01", + "period_to": "2020-12-31" + }, + "missing_required_filters": [], + "selected_recipe": "address_counterparty_activity_lifecycle_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "matched_non_empty", + "rows_fetched": 13, + "raw_rows_received": 13, + "rows_after_account_scope": 13, + "rows_after_recipe_filter": 13, + "rows_materialized": 13, + "rows_matched": 13, + "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": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + }, + "error_code": null, + "error_message": null + }, + { + "index": 2, + "id": "B2_C002", + "question": "Какие заказчики работали с нами за все время?", + "session": null, + "session_id": "asst-2026-04-02_Address_Batch2_Q8_Q9_Targeted-b2_c002", + "status_code": 200, + "ok": true, + "elapsed_ms": 1022, + "reply_type": "factual", + "trace_id": "address-9Ov9i2afLx", + "assistant_reply": "Собран профиль активности заказчиков (bank-doc activity aggregate).\nСтрок агрегата: 46.\nАктивные заказчики за все время: 46.\n1. ГКУ | операций: 44 | последняя активность: 2019-12-25T16:09:27Z\n2. ГБУ \\Многофункциональный центр\\ | операций: 38 | последняя активность: 2018-12-04T12:00:01Z\n3. СБЕРБАНК, ПАО | операций: 36 | последняя активность: 2020-03-02T12:00:04Z\n4. Комитет государственных услуг г. Москвы | операций: 27 | последняя активность: 2015-05-19T12:00:00Z\n5. Группа | операций: 26 | последняя активность: 2021-11-10T12:00:07Z\n6. НОРТОН | операций: 14 | последняя активность: 2022-01-20T12:00:05Z\n7. МНН | операций: 14 | последняя активность: 2022-01-20T12:00:04Z\n8. МОСКОВСКИЙ ФИЛИАЛ ООО КБ\\МЕГАПОЛИС\\ | операций: 11 | последняя активность: 2019-07-31T12:00:22Z\n9. Департамент капитального ремонта города Москвы. | операций: 10 | последняя активность: 2019-09-16T11:00:00Z\n10. Департамент финансов города Москвы | операций: 10 | последняя активность: 2015-12-29T12:00:03Z\n11. Лайсвуд, ООО | операций: 7 | последняя активность: 2020-03-02T12:00:02Z\n12. Единая электронная торговая площадка, АО | операций: 7 | последняя активность: 2018-08-10T12:00:00Z\n13. ЭталонМебель | операций: 6 | последняя активность: 2020-04-27T12:00:00Z\n14. ИП Калинин Н.М. | операций: 5 | последняя активность: 2020-03-02T12:00:03Z\n15. Элмаш-К | операций: 5 | последняя активность: 2018-02-06T12:32:17Z\n16. ГТК-Интер, ООО | операций: 5 | последняя активность: 2016-07-07T12:00:00Z\n17. Гамма-мебель, ООО | операций: 4 | последняя активность: 2020-08-11T13:15:30Z\n18. Смарт | операций: 4 | последняя активность: 2020-02-07T12:00:03Z\n19. Сбербанк-АСТ, ЗАО | операций: 4 | последняя активность: 2017-07-26T12:00:00Z\n20. КБ \\НЕФТЯНОЙ АЛЬЯНС\\ (ПАО) (Расчетный) | операций: 4 | последняя активность: 2015-02-05T12:00:06Z\n21. ЗАО Ремонтно-строительная фирма «Ремстройсервис» | операций: 3 | последняя активность: 2020-06-03T00:00:02Z\n22. ПрофТренд,ООО | операций: 3 | последняя активность: 2020-05-15T12:00:02Z\n23. ГБПОУ г. Москвы \\Московская театральная школа Олега Табакова\\ | операций: 3 | последняя активность: 2019-10-25T12:00:00Z\n24. Газпром авиа, ООО | операций: 3 | последняя активность: 2016-11-29T12:00:01Z\n25. ФГКУ \\Центрреставрация\\ | операций: 3 | последняя активность: 2015-12-30T12:00:03Z\n26. РАЙМ, ООО | операций: 3 | последняя активность: 2015-08-13T12:00:00Z\n27. СервисКонсалт, ООО | операций: 2 | последняя активность: 2022-04-13T12:00:00Z\n30. УФК по г. Москве (ГУ - | операций: 2 | последняя активность: 2018-12-12T12:00:01Z\n31. Чепурнов П.Д. | операций: 1 | последняя активность: 2022-01-20T12:00:03Z\n32. «Олимпстрой» | операций: 1 | последняя активность: 2020-07-13T12:00:00Z\n33. КПК \\Столичная Сберегательная компания\\ | операций: 1 | последняя активность: 2019-04-17T12:00:00Z\n34. РТС-тендер | операций: 1 | последняя активность: 2018-12-17T00:00:00Z\n35. ФГБУ «УЗС» | операций: 1 | последняя активность: 2018-12-13T12:00:02Z\n36. АС \\ЕО | операций: 1 | последняя активность: 2018-01-15T13:25:36Z\n37. АкваСервис, ООО | операций: 1 | последняя активность: 2017-09-19T12:00:01Z\n38. ГБУ МФЦ города Москвы | операций: 1 | последняя активность: 2017-04-27T00:00:00Z\n39. \\Жуковка 51\\ | операций: 1 | последняя активность: 2017-04-10T16:50:38Z\n40. 0 | операций: 1 | последняя активность: 2017-03-02T12:00:00Z\n41. ФГБОУ ВО \\Московский государственный университет имени М.В. Ломоносова\\ | операций: 1 | последняя активность: 2016-11-25T00:00:00Z\n42. ДжетАэроКонцепт, ООО | операций: 1 | последняя активность: 2016-08-18T13:13:35Z\n43. УМ и автотранспорта, ЗАО | операций: 1 | последняя активность: 2015-12-24T12:00:00Z\n44. Межрегиональное операционное УФК | операций: 1 | последняя активность: 2015-11-12T12:00:00Z\n45. Банк ГПБ (АО) г. Москва | операций: 1 | последняя активность: 2015-10-30T12:00:03Z\n46. Спецстрой, ООО | операций: 1 | последняя активность: 2015-09-14T12:00:00Z", + "assistant_reply_first_line": "Собран профиль активности заказчиков (bank-doc activity aggregate).", + "expected_intent": "counterparty_activity_lifecycle", + "actual_intent": "counterparty_activity_lifecycle", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": "factual", + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "factual", + "strict_pass": true, + "selected_recipe": "address_counterparty_activity_lifecycle_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 46, + "rows_matched": 46, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-9Ov9i2afLx", + "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": [ + "management_profile_signal_detected", + "shape_not_detected", + "counterparty_activity_lifecycle_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": "counterparty_activity_lifecycle", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_to": "2026-04-02" + }, + "missing_required_filters": [], + "selected_recipe": "address_counterparty_activity_lifecycle_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "matched_non_empty", + "rows_fetched": 46, + "raw_rows_received": 46, + "rows_after_account_scope": 46, + "rows_after_recipe_filter": 46, + "rows_materialized": 46, + "rows_matched": 46, + "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": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + }, + "error_code": null, + "error_message": null + }, + { + "index": 3, + "id": "B2_N001", + "question": "какие клиенты у нас были активны в 2020?", + "session": null, + "session_id": "asst-2026-04-02_Address_Batch2_Q8_Q9_Targeted-b2_n001", + "status_code": 200, + "ok": true, + "elapsed_ms": 977, + "reply_type": "factual", + "trace_id": "address-RE_9ysp07O", + "assistant_reply": "Собран профиль активности заказчиков (bank-doc activity aggregate).\nСтрок агрегата: 13.\nАктивные заказчики в 2020 году: 13.\n1. Группа | операций: 13 | последняя активность: 2020-12-30T12:00:00Z\n2. СБЕРБАНК, ПАО | операций: 9 | последняя активность: 2020-03-02T12:00:04Z\n3. ЭталонМебель | операций: 4 | последняя активность: 2020-04-27T12:00:00Z\n4. Гамма-мебель, ООО | операций: 3 | последняя активность: 2020-08-11T13:15:30Z\n5. ЗАО Ремонтно-строительная фирма «Ремстройсервис» | операций: 3 | последняя активность: 2020-06-03T00:00:02Z\n6. НОРТОН | операций: 3 | последняя активность: 2020-03-19T12:00:00Z\n8. ИП Калинин Н.М. | операций: 2 | последняя активность: 2020-03-02T12:00:03Z\n9. МНН | операций: 1 | последняя активность: 2020-08-11T13:16:37Z\n10. «Олимпстрой» | операций: 1 | последняя активность: 2020-07-13T12:00:00Z\n11. ПрофТренд,ООО | операций: 1 | последняя активность: 2020-05-15T12:00:02Z\n12. Лайсвуд, ООО | операций: 1 | последняя активность: 2020-03-02T12:00:02Z\n13. Смарт | операций: 1 | последняя активность: 2020-02-07T12:00:03Z", + "assistant_reply_first_line": "Собран профиль активности заказчиков (bank-doc activity aggregate).", + "expected_intent": "counterparty_activity_lifecycle", + "actual_intent": "counterparty_activity_lifecycle", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": "factual", + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "factual", + "strict_pass": true, + "selected_recipe": "address_counterparty_activity_lifecycle_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 13, + "rows_matched": 13, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-RE_9ysp07O", + "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", + "counterparty_activity_lifecycle_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": "counterparty_activity_lifecycle", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_from": "2020-01-01", + "period_to": "2020-12-31" + }, + "missing_required_filters": [], + "selected_recipe": "address_counterparty_activity_lifecycle_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "matched_non_empty", + "rows_fetched": 13, + "raw_rows_received": 13, + "rows_after_account_scope": 13, + "rows_after_recipe_filter": 13, + "rows_materialized": 13, + "rows_matched": 13, + "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": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + }, + "error_code": null, + "error_message": null + }, + { + "index": 4, + "id": "B2_N002", + "question": "выведи активных клиентов за все время", + "session": null, + "session_id": "asst-2026-04-02_Address_Batch2_Q8_Q9_Targeted-b2_n002", + "status_code": 200, + "ok": true, + "elapsed_ms": 1023, + "reply_type": "factual", + "trace_id": "address-Rbiaj-sMWf", + "assistant_reply": "Собран профиль активности заказчиков (bank-doc activity aggregate).\nСтрок агрегата: 46.\nАктивные заказчики за все время: 46.\n1. ГКУ | операций: 44 | последняя активность: 2019-12-25T16:09:27Z\n2. ГБУ \\Многофункциональный центр\\ | операций: 38 | последняя активность: 2018-12-04T12:00:01Z\n3. СБЕРБАНК, ПАО | операций: 36 | последняя активность: 2020-03-02T12:00:04Z\n4. Комитет государственных услуг г. Москвы | операций: 27 | последняя активность: 2015-05-19T12:00:00Z\n5. Группа | операций: 26 | последняя активность: 2021-11-10T12:00:07Z\n6. НОРТОН | операций: 14 | последняя активность: 2022-01-20T12:00:05Z\n7. МНН | операций: 14 | последняя активность: 2022-01-20T12:00:04Z\n8. МОСКОВСКИЙ ФИЛИАЛ ООО КБ\\МЕГАПОЛИС\\ | операций: 11 | последняя активность: 2019-07-31T12:00:22Z\n9. Департамент капитального ремонта города Москвы. | операций: 10 | последняя активность: 2019-09-16T11:00:00Z\n10. Департамент финансов города Москвы | операций: 10 | последняя активность: 2015-12-29T12:00:03Z\n11. Лайсвуд, ООО | операций: 7 | последняя активность: 2020-03-02T12:00:02Z\n12. Единая электронная торговая площадка, АО | операций: 7 | последняя активность: 2018-08-10T12:00:00Z\n13. ЭталонМебель | операций: 6 | последняя активность: 2020-04-27T12:00:00Z\n14. ИП Калинин Н.М. | операций: 5 | последняя активность: 2020-03-02T12:00:03Z\n15. Элмаш-К | операций: 5 | последняя активность: 2018-02-06T12:32:17Z\n16. ГТК-Интер, ООО | операций: 5 | последняя активность: 2016-07-07T12:00:00Z\n17. Гамма-мебель, ООО | операций: 4 | последняя активность: 2020-08-11T13:15:30Z\n18. Смарт | операций: 4 | последняя активность: 2020-02-07T12:00:03Z\n19. Сбербанк-АСТ, ЗАО | операций: 4 | последняя активность: 2017-07-26T12:00:00Z\n20. КБ \\НЕФТЯНОЙ АЛЬЯНС\\ (ПАО) (Расчетный) | операций: 4 | последняя активность: 2015-02-05T12:00:06Z\n21. ЗАО Ремонтно-строительная фирма «Ремстройсервис» | операций: 3 | последняя активность: 2020-06-03T00:00:02Z\n22. ПрофТренд,ООО | операций: 3 | последняя активность: 2020-05-15T12:00:02Z\n23. ГБПОУ г. Москвы \\Московская театральная школа Олега Табакова\\ | операций: 3 | последняя активность: 2019-10-25T12:00:00Z\n24. Газпром авиа, ООО | операций: 3 | последняя активность: 2016-11-29T12:00:01Z\n25. ФГКУ \\Центрреставрация\\ | операций: 3 | последняя активность: 2015-12-30T12:00:03Z\n26. РАЙМ, ООО | операций: 3 | последняя активность: 2015-08-13T12:00:00Z\n27. СервисКонсалт, ООО | операций: 2 | последняя активность: 2022-04-13T12:00:00Z\n30. УФК по г. Москве (ГУ - | операций: 2 | последняя активность: 2018-12-12T12:00:01Z\n31. Чепурнов П.Д. | операций: 1 | последняя активность: 2022-01-20T12:00:03Z\n32. «Олимпстрой» | операций: 1 | последняя активность: 2020-07-13T12:00:00Z\n33. КПК \\Столичная Сберегательная компания\\ | операций: 1 | последняя активность: 2019-04-17T12:00:00Z\n34. РТС-тендер | операций: 1 | последняя активность: 2018-12-17T00:00:00Z\n35. ФГБУ «УЗС» | операций: 1 | последняя активность: 2018-12-13T12:00:02Z\n36. АС \\ЕО | операций: 1 | последняя активность: 2018-01-15T13:25:36Z\n37. АкваСервис, ООО | операций: 1 | последняя активность: 2017-09-19T12:00:01Z\n38. ГБУ МФЦ города Москвы | операций: 1 | последняя активность: 2017-04-27T00:00:00Z\n39. \\Жуковка 51\\ | операций: 1 | последняя активность: 2017-04-10T16:50:38Z\n40. 0 | операций: 1 | последняя активность: 2017-03-02T12:00:00Z\n41. ФГБОУ ВО \\Московский государственный университет имени М.В. Ломоносова\\ | операций: 1 | последняя активность: 2016-11-25T00:00:00Z\n42. ДжетАэроКонцепт, ООО | операций: 1 | последняя активность: 2016-08-18T13:13:35Z\n43. УМ и автотранспорта, ЗАО | операций: 1 | последняя активность: 2015-12-24T12:00:00Z\n44. Межрегиональное операционное УФК | операций: 1 | последняя активность: 2015-11-12T12:00:00Z\n45. Банк ГПБ (АО) г. Москва | операций: 1 | последняя активность: 2015-10-30T12:00:03Z\n46. Спецстрой, ООО | операций: 1 | последняя активность: 2015-09-14T12:00:00Z", + "assistant_reply_first_line": "Собран профиль активности заказчиков (bank-doc activity aggregate).", + "expected_intent": "counterparty_activity_lifecycle", + "actual_intent": "counterparty_activity_lifecycle", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": "factual", + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "factual", + "strict_pass": true, + "selected_recipe": "address_counterparty_activity_lifecycle_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 46, + "rows_matched": 46, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-Rbiaj-sMWf", + "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", + "counterparty_activity_lifecycle_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": "counterparty_activity_lifecycle", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_to": "2026-04-02" + }, + "missing_required_filters": [], + "selected_recipe": "address_counterparty_activity_lifecycle_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "matched_non_empty", + "rows_fetched": 46, + "raw_rows_received": 46, + "rows_after_account_scope": 46, + "rows_after_recipe_filter": 46, + "rows_materialized": 46, + "rows_matched": 46, + "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": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + }, + "error_code": null, + "error_message": null + }, + { + "index": 5, + "id": "B2_F001", + "question": "Какие заказчики работали с нами в 2020 году?", + "session": "b2_q8_q9_customer_activity_chain", + "session_id": "asst-2026-04-02_Address_Batch2_Q8_Q9_Targeted-b2_q8_q9_customer_activity_chain", + "status_code": 200, + "ok": true, + "elapsed_ms": 1015, + "reply_type": "factual", + "trace_id": "address-5Xdb1lvs-9", + "assistant_reply": "Собран профиль активности заказчиков (bank-doc activity aggregate).\nСтрок агрегата: 13.\nАктивные заказчики в 2020 году: 13.\n1. Группа | операций: 13 | последняя активность: 2020-12-30T12:00:00Z\n2. СБЕРБАНК, ПАО | операций: 9 | последняя активность: 2020-03-02T12:00:04Z\n3. ЭталонМебель | операций: 4 | последняя активность: 2020-04-27T12:00:00Z\n4. Гамма-мебель, ООО | операций: 3 | последняя активность: 2020-08-11T13:15:30Z\n5. ЗАО Ремонтно-строительная фирма «Ремстройсервис» | операций: 3 | последняя активность: 2020-06-03T00:00:02Z\n6. НОРТОН | операций: 3 | последняя активность: 2020-03-19T12:00:00Z\n8. ИП Калинин Н.М. | операций: 2 | последняя активность: 2020-03-02T12:00:03Z\n9. МНН | операций: 1 | последняя активность: 2020-08-11T13:16:37Z\n10. «Олимпстрой» | операций: 1 | последняя активность: 2020-07-13T12:00:00Z\n11. ПрофТренд,ООО | операций: 1 | последняя активность: 2020-05-15T12:00:02Z\n12. Лайсвуд, ООО | операций: 1 | последняя активность: 2020-03-02T12:00:02Z\n13. Смарт | операций: 1 | последняя активность: 2020-02-07T12:00:03Z", + "assistant_reply_first_line": "Собран профиль активности заказчиков (bank-doc activity aggregate).", + "expected_intent": "counterparty_activity_lifecycle", + "actual_intent": "counterparty_activity_lifecycle", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": "factual", + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "factual", + "strict_pass": true, + "selected_recipe": "address_counterparty_activity_lifecycle_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 13, + "rows_matched": 13, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-5Xdb1lvs-9", + "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": [ + "management_profile_signal_detected", + "shape_not_detected", + "counterparty_activity_lifecycle_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": "counterparty_activity_lifecycle", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_from": "2020-01-01", + "period_to": "2020-12-31" + }, + "missing_required_filters": [], + "selected_recipe": "address_counterparty_activity_lifecycle_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "matched_non_empty", + "rows_fetched": 13, + "raw_rows_received": 13, + "rows_after_account_scope": 13, + "rows_after_recipe_filter": 13, + "rows_materialized": 13, + "rows_matched": 13, + "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": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + }, + "error_code": null, + "error_message": null + }, + { + "index": 6, + "id": "B2_F002", + "question": "а за все время?", + "session": "b2_q8_q9_customer_activity_chain", + "session_id": "asst-2026-04-02_Address_Batch2_Q8_Q9_Targeted-b2_q8_q9_customer_activity_chain", + "status_code": 200, + "ok": true, + "elapsed_ms": 1024, + "reply_type": "factual", + "trace_id": "address-sMVbyuPZxE", + "assistant_reply": "Собран профиль активности заказчиков (bank-doc activity aggregate).\nСтрок агрегата: 46.\nАктивные заказчики за все время: 46.\n1. ГКУ | операций: 44 | последняя активность: 2019-12-25T16:09:27Z\n2. ГБУ \\Многофункциональный центр\\ | операций: 38 | последняя активность: 2018-12-04T12:00:01Z\n3. СБЕРБАНК, ПАО | операций: 36 | последняя активность: 2020-03-02T12:00:04Z\n4. Комитет государственных услуг г. Москвы | операций: 27 | последняя активность: 2015-05-19T12:00:00Z\n5. Группа | операций: 26 | последняя активность: 2021-11-10T12:00:07Z\n6. НОРТОН | операций: 14 | последняя активность: 2022-01-20T12:00:05Z\n7. МНН | операций: 14 | последняя активность: 2022-01-20T12:00:04Z\n8. МОСКОВСКИЙ ФИЛИАЛ ООО КБ\\МЕГАПОЛИС\\ | операций: 11 | последняя активность: 2019-07-31T12:00:22Z\n9. Департамент капитального ремонта города Москвы. | операций: 10 | последняя активность: 2019-09-16T11:00:00Z\n10. Департамент финансов города Москвы | операций: 10 | последняя активность: 2015-12-29T12:00:03Z\n11. Лайсвуд, ООО | операций: 7 | последняя активность: 2020-03-02T12:00:02Z\n12. Единая электронная торговая площадка, АО | операций: 7 | последняя активность: 2018-08-10T12:00:00Z\n13. ЭталонМебель | операций: 6 | последняя активность: 2020-04-27T12:00:00Z\n14. ИП Калинин Н.М. | операций: 5 | последняя активность: 2020-03-02T12:00:03Z\n15. Элмаш-К | операций: 5 | последняя активность: 2018-02-06T12:32:17Z\n16. ГТК-Интер, ООО | операций: 5 | последняя активность: 2016-07-07T12:00:00Z\n17. Гамма-мебель, ООО | операций: 4 | последняя активность: 2020-08-11T13:15:30Z\n18. Смарт | операций: 4 | последняя активность: 2020-02-07T12:00:03Z\n19. Сбербанк-АСТ, ЗАО | операций: 4 | последняя активность: 2017-07-26T12:00:00Z\n20. КБ \\НЕФТЯНОЙ АЛЬЯНС\\ (ПАО) (Расчетный) | операций: 4 | последняя активность: 2015-02-05T12:00:06Z\n21. ЗАО Ремонтно-строительная фирма «Ремстройсервис» | операций: 3 | последняя активность: 2020-06-03T00:00:02Z\n22. ПрофТренд,ООО | операций: 3 | последняя активность: 2020-05-15T12:00:02Z\n23. ГБПОУ г. Москвы \\Московская театральная школа Олега Табакова\\ | операций: 3 | последняя активность: 2019-10-25T12:00:00Z\n24. Газпром авиа, ООО | операций: 3 | последняя активность: 2016-11-29T12:00:01Z\n25. ФГКУ \\Центрреставрация\\ | операций: 3 | последняя активность: 2015-12-30T12:00:03Z\n26. РАЙМ, ООО | операций: 3 | последняя активность: 2015-08-13T12:00:00Z\n27. СервисКонсалт, ООО | операций: 2 | последняя активность: 2022-04-13T12:00:00Z\n30. УФК по г. Москве (ГУ - | операций: 2 | последняя активность: 2018-12-12T12:00:01Z\n31. Чепурнов П.Д. | операций: 1 | последняя активность: 2022-01-20T12:00:03Z\n32. «Олимпстрой» | операций: 1 | последняя активность: 2020-07-13T12:00:00Z\n33. КПК \\Столичная Сберегательная компания\\ | операций: 1 | последняя активность: 2019-04-17T12:00:00Z\n34. РТС-тендер | операций: 1 | последняя активность: 2018-12-17T00:00:00Z\n35. ФГБУ «УЗС» | операций: 1 | последняя активность: 2018-12-13T12:00:02Z\n36. АС \\ЕО | операций: 1 | последняя активность: 2018-01-15T13:25:36Z\n37. АкваСервис, ООО | операций: 1 | последняя активность: 2017-09-19T12:00:01Z\n38. ГБУ МФЦ города Москвы | операций: 1 | последняя активность: 2017-04-27T00:00:00Z\n39. \\Жуковка 51\\ | операций: 1 | последняя активность: 2017-04-10T16:50:38Z\n40. 0 | операций: 1 | последняя активность: 2017-03-02T12:00:00Z\n41. ФГБОУ ВО \\Московский государственный университет имени М.В. Ломоносова\\ | операций: 1 | последняя активность: 2016-11-25T00:00:00Z\n42. ДжетАэроКонцепт, ООО | операций: 1 | последняя активность: 2016-08-18T13:13:35Z\n43. УМ и автотранспорта, ЗАО | операций: 1 | последняя активность: 2015-12-24T12:00:00Z\n44. Межрегиональное операционное УФК | операций: 1 | последняя активность: 2015-11-12T12:00:00Z\n45. Банк ГПБ (АО) г. Москва | операций: 1 | последняя активность: 2015-10-30T12:00:03Z\n46. Спецстрой, ООО | операций: 1 | последняя активность: 2015-09-14T12:00:00Z", + "assistant_reply_first_line": "Собран профиль активности заказчиков (bank-doc activity aggregate).", + "expected_intent": "counterparty_activity_lifecycle", + "actual_intent": "counterparty_activity_lifecycle", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": "factual", + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "factual", + "strict_pass": true, + "selected_recipe": "address_counterparty_activity_lifecycle_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 46, + "rows_matched": 46, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-sMVbyuPZxE", + "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", + "period_cleared_by_all_time_followup", + "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": "counterparty_activity_lifecycle", + "detected_intent_confidence": "low", + "extracted_filters": { + "sort": "period_desc" + }, + "missing_required_filters": [], + "selected_recipe": "address_counterparty_activity_lifecycle_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "matched_non_empty", + "rows_fetched": 46, + "raw_rows_received": 46, + "rows_after_account_scope": 46, + "rows_after_recipe_filter": 46, + "rows_materialized": 46, + "rows_matched": 46, + "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 + }, + "error_code": null, + "error_message": null + } + ] +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Batch2_Q8_Q9_Targeted/response_audit.md b/docs/ADDRESS/runs/2026-04-02_Address_Batch2_Q8_Q9_Targeted/response_audit.md new file mode 100644 index 0000000..f68048f --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Batch2_Q8_Q9_Targeted/response_audit.md @@ -0,0 +1,10 @@ +# Response Audit: 2026-04-02_Address_Batch2_Q8_Q9_Targeted + +| id | strict | route_health | reply_type | intent | limited_reason | question | assistant_first_line | +|---|---|---|---|---|---|---|---| +| B2_C001 | True | ok_or_factual | factual | counterparty_activity_lifecycle | None | Какие заказчики работали с нами в 2020 году? | Собран профиль активности заказчиков (bank-doc activity aggregate). | +| B2_C002 | True | ok_or_factual | factual | counterparty_activity_lifecycle | None | Какие заказчики работали с нами за все время? | Собран профиль активности заказчиков (bank-doc activity aggregate). | +| B2_N001 | True | ok_or_factual | factual | counterparty_activity_lifecycle | None | какие клиенты у нас были активны в 2020? | Собран профиль активности заказчиков (bank-doc activity aggregate). | +| B2_N002 | True | ok_or_factual | factual | counterparty_activity_lifecycle | None | выведи активных клиентов за все время | Собран профиль активности заказчиков (bank-doc activity aggregate). | +| B2_F001 | True | ok_or_factual | factual | counterparty_activity_lifecycle | None | Какие заказчики работали с нами в 2020 году? | Собран профиль активности заказчиков (bank-doc activity aggregate). | +| B2_F002 | True | ok_or_factual | factual | counterparty_activity_lifecycle | None | а за все время? | Собран профиль активности заказчиков (bank-doc activity aggregate). | diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Batch2_Q8_Q9_Targeted/run_summary.json b/docs/ADDRESS/runs/2026-04-02_Address_Batch2_Q8_Q9_Targeted/run_summary.json new file mode 100644 index 0000000..aa0a04f --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Batch2_Q8_Q9_Targeted/run_summary.json @@ -0,0 +1,44 @@ +{ + "run_id": "2026-04-02_Address_Batch2_Q8_Q9_Targeted", + "generated_at": "2026-04-02T21:37:06", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\temp_batch2_q8_q9_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", + "strict_policy": "factual", + "totals": { + "questions_total": 6, + "ok_200_count": 6, + "semantic_pass_count": 6, + "semantic_pass_rate": 1.0, + "route_pass_count": 6, + "route_pass_rate": 1.0, + "strict_pass_count": 6, + "strict_pass_rate": 1.0, + "factual_count": 6, + "partial_coverage_count": 0, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_applied_count": 0, + "avg_elapsed_ms": 914.3 + }, + "distributions": { + "reply_type": { + "factual": 6 + }, + "actual_intent": { + "counterparty_activity_lifecycle": 6 + }, + "actual_mode": { + "address_query": 6 + }, + "mcp_call_status": { + "matched_non_empty": 6 + }, + "limited_reason_category": {}, + "route_health": { + "ok_or_factual": 6 + } + } +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_CustomerRole_Probe/README.md b/docs/ADDRESS/runs/2026-04-02_Address_CustomerRole_Probe/README.md new file mode 100644 index 0000000..5c723c3 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_CustomerRole_Probe/README.md @@ -0,0 +1,28 @@ +# 2026-04-02_Address_CustomerRole_Probe + +Generated at: 2026-04-02T21:57:59 +Questions file: X:\1C\NDC_1C\docs\ADDRESS\question_sets\temp_customer_role_probe_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 +Strict policy: factual + +## Totals +- questions_total: 2 +- ok_200_count: 2 +- semantic_pass_count: 2 +- semantic_pass_rate: 1.0 +- route_pass_count: 1 +- route_pass_rate: 0.5 +- strict_pass_count: 1 +- strict_pass_rate: 0.5 +- factual_count: 1 +- partial_coverage_count: 1 +- clarification_required_count: 0 +- http_error_count: 0 +- llm_decomposition_applied_count: 1 +- avg_elapsed_ms: 5432.5 + +## Files +- run_summary.json +- full_live_results.json +- failures_only.json diff --git a/docs/ADDRESS/runs/2026-04-02_Address_CustomerRole_Probe/failures_only.json b/docs/ADDRESS/runs/2026-04-02_Address_CustomerRole_Probe/failures_only.json new file mode 100644 index 0000000..ae37c8c --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_CustomerRole_Probe/failures_only.json @@ -0,0 +1,141 @@ +[ + { + "index": 2, + "id": "P002", + "question": "кто у нас заказчики вообще", + "session": null, + "session_id": "asst-2026-04-02_Address_CustomerRole_Probe-p002", + "status_code": 200, + "ok": true, + "elapsed_ms": 4503, + "reply_type": "partial_coverage", + "trace_id": "address-_VaGpRcHM0", + "assistant_reply": "Этот запрос не подходит под address_query V1.\nПричина: intent пока не поддержан в address V1.\nЧто нужно уточнить: переформулируйте вопрос как адресный lookup по счету/контрагенту/договору.", + "assistant_reply_first_line": "Этот запрос не подходит под address_query V1.", + "expected_intent": null, + "actual_intent": "unknown", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": false, + "route_health": "blocked_unsupported", + "strict_policy": "factual", + "strict_pass": false, + "selected_recipe": null, + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 0, + "rows_matched": 0, + "mcp_call_status": "skipped", + "limited_reason_category": "unsupported", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-_VaGpRcHM0", + "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": false, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "wDo3K7gI394XmR", + "llm_decomposition_effective_message": "кто у нас заказчики вообще", + "llm_decomposition_reason": "normalized_fragment_same", + "llm_canonical_candidate_detected": true, + "fallback_rule_hit": null, + "sanitized_user_message": "кто у нас заказчики вообще", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "wDo3K7gI394XmR", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "кто у нас заказчики вообще" + } + }, + "error_code": null, + "error_message": null + } +] diff --git a/docs/ADDRESS/runs/2026-04-02_Address_CustomerRole_Probe/full_live_results.json b/docs/ADDRESS/runs/2026-04-02_Address_CustomerRole_Probe/full_live_results.json new file mode 100644 index 0000000..935c57c --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_CustomerRole_Probe/full_live_results.json @@ -0,0 +1,343 @@ +{ + "run_id": "2026-04-02_Address_CustomerRole_Probe", + "generated_at": "2026-04-02T21:57:59", + "summary": { + "run_id": "2026-04-02_Address_CustomerRole_Probe", + "generated_at": "2026-04-02T21:57:59", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\temp_customer_role_probe_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", + "strict_policy": "factual", + "totals": { + "questions_total": 2, + "ok_200_count": 2, + "semantic_pass_count": 2, + "semantic_pass_rate": 1.0, + "route_pass_count": 1, + "route_pass_rate": 0.5, + "strict_pass_count": 1, + "strict_pass_rate": 0.5, + "factual_count": 1, + "partial_coverage_count": 1, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_applied_count": 1, + "avg_elapsed_ms": 5432.5 + }, + "distributions": { + "reply_type": { + "factual": 1, + "partial_coverage": 1 + }, + "actual_intent": { + "counterparty_population_and_roles": 1, + "unknown": 1 + }, + "actual_mode": { + "address_query": 2 + }, + "mcp_call_status": { + "matched_non_empty": 1, + "skipped": 1 + }, + "limited_reason_category": { + "unsupported": 1 + }, + "route_health": { + "ok_or_factual": 1, + "blocked_unsupported": 1 + } + } + }, + "rows": [ + { + "index": 1, + "id": "P001", + "question": "скок клиентов", + "session": null, + "session_id": "asst-2026-04-02_Address_CustomerRole_Probe-p001", + "status_code": 200, + "ok": true, + "elapsed_ms": 6362, + "reply_type": "factual", + "trace_id": "address-BlXqmGgtXZ", + "assistant_reply": "Профиль контрагентов собран (catalog + bank-doc activity aggregate).\nСтрок агрегата: 5.\nВсего уникальных контрагентов в базе: 139.", + "assistant_reply_first_line": "Профиль контрагентов собран (catalog + bank-doc activity aggregate).", + "expected_intent": null, + "actual_intent": "counterparty_population_and_roles", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "factual", + "strict_pass": true, + "selected_recipe": "address_counterparty_population_roles_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-BlXqmGgtXZ", + "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", + "object_signal_detected", + "counterparty_population_and_roles_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": "counterparty_population_and_roles", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_to": "2026-04-02" + }, + "missing_required_filters": [], + "selected_recipe": "address_counterparty_population_roles_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "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", + "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_SUMMARY", + "execution_lane": "address_query", + "llm_decomposition_applied": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "kR-YwJ1dNUHCTn", + "llm_decomposition_effective_message": "сколько контрагентов?", + "llm_decomposition_reason": "normalized_fragment_applied", + "llm_canonical_candidate_detected": true, + "fallback_rule_hit": null, + "sanitized_user_message": "скок клиентов", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "kR-YwJ1dNUHCTn", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "сколько контрагентов?" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 2, + "id": "P002", + "question": "кто у нас заказчики вообще", + "session": null, + "session_id": "asst-2026-04-02_Address_CustomerRole_Probe-p002", + "status_code": 200, + "ok": true, + "elapsed_ms": 4503, + "reply_type": "partial_coverage", + "trace_id": "address-_VaGpRcHM0", + "assistant_reply": "Этот запрос не подходит под address_query V1.\nПричина: intent пока не поддержан в address V1.\nЧто нужно уточнить: переформулируйте вопрос как адресный lookup по счету/контрагенту/договору.", + "assistant_reply_first_line": "Этот запрос не подходит под address_query V1.", + "expected_intent": null, + "actual_intent": "unknown", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": false, + "route_health": "blocked_unsupported", + "strict_policy": "factual", + "strict_pass": false, + "selected_recipe": null, + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 0, + "rows_matched": 0, + "mcp_call_status": "skipped", + "limited_reason_category": "unsupported", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-_VaGpRcHM0", + "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": false, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "wDo3K7gI394XmR", + "llm_decomposition_effective_message": "кто у нас заказчики вообще", + "llm_decomposition_reason": "normalized_fragment_same", + "llm_canonical_candidate_detected": true, + "fallback_rule_hit": null, + "sanitized_user_message": "кто у нас заказчики вообще", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "wDo3K7gI394XmR", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "кто у нас заказчики вообще" + } + }, + "error_code": null, + "error_message": null + } + ] +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_CustomerRole_Probe/response_audit.md b/docs/ADDRESS/runs/2026-04-02_Address_CustomerRole_Probe/response_audit.md new file mode 100644 index 0000000..23f526d --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_CustomerRole_Probe/response_audit.md @@ -0,0 +1,6 @@ +# Response Audit: 2026-04-02_Address_CustomerRole_Probe + +| id | strict | route_health | reply_type | intent | limited_reason | question | assistant_first_line | +|---|---|---|---|---|---|---|---| +| P001 | True | ok_or_factual | factual | counterparty_population_and_roles | None | скок клиентов | Профиль контрагентов собран (catalog + bank-doc activity aggregate). | +| P002 | False | blocked_unsupported | partial_coverage | unknown | unsupported | кто у нас заказчики вообще | Этот запрос не подходит под address_query V1. | diff --git a/docs/ADDRESS/runs/2026-04-02_Address_CustomerRole_Probe/run_summary.json b/docs/ADDRESS/runs/2026-04-02_Address_CustomerRole_Probe/run_summary.json new file mode 100644 index 0000000..805db48 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_CustomerRole_Probe/run_summary.json @@ -0,0 +1,50 @@ +{ + "run_id": "2026-04-02_Address_CustomerRole_Probe", + "generated_at": "2026-04-02T21:57:59", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\temp_customer_role_probe_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", + "strict_policy": "factual", + "totals": { + "questions_total": 2, + "ok_200_count": 2, + "semantic_pass_count": 2, + "semantic_pass_rate": 1.0, + "route_pass_count": 1, + "route_pass_rate": 0.5, + "strict_pass_count": 1, + "strict_pass_rate": 0.5, + "factual_count": 1, + "partial_coverage_count": 1, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_applied_count": 1, + "avg_elapsed_ms": 5432.5 + }, + "distributions": { + "reply_type": { + "factual": 1, + "partial_coverage": 1 + }, + "actual_intent": { + "counterparty_population_and_roles": 1, + "unknown": 1 + }, + "actual_mode": { + "address_query": 2 + }, + "mcp_call_status": { + "matched_non_empty": 1, + "skipped": 1 + }, + "limited_reason_category": { + "unsupported": 1 + }, + "route_health": { + "ok_or_factual": 1, + "blocked_unsupported": 1 + } + } +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_CustomerRole_Probe_AfterRosterFix/README.md b/docs/ADDRESS/runs/2026-04-02_Address_CustomerRole_Probe_AfterRosterFix/README.md new file mode 100644 index 0000000..16d8560 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_CustomerRole_Probe_AfterRosterFix/README.md @@ -0,0 +1,28 @@ +# 2026-04-02_Address_CustomerRole_Probe_AfterRosterFix + +Generated at: 2026-04-02T22:00:04 +Questions file: X:\1C\NDC_1C\docs\ADDRESS\question_sets\temp_customer_role_probe_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 +Strict policy: factual + +## Totals +- questions_total: 2 +- ok_200_count: 2 +- semantic_pass_count: 2 +- semantic_pass_rate: 1.0 +- route_pass_count: 2 +- route_pass_rate: 1.0 +- strict_pass_count: 2 +- strict_pass_rate: 1.0 +- factual_count: 2 +- partial_coverage_count: 0 +- clarification_required_count: 0 +- http_error_count: 0 +- llm_decomposition_applied_count: 1 +- avg_elapsed_ms: 5649 + +## Files +- run_summary.json +- full_live_results.json +- failures_only.json diff --git a/docs/ADDRESS/runs/2026-04-02_Address_CustomerRole_Probe_AfterRosterFix/failures_only.json b/docs/ADDRESS/runs/2026-04-02_Address_CustomerRole_Probe_AfterRosterFix/failures_only.json new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_CustomerRole_Probe_AfterRosterFix/failures_only.json @@ -0,0 +1 @@ +[] diff --git a/docs/ADDRESS/runs/2026-04-02_Address_CustomerRole_Probe_AfterRosterFix/full_live_results.json b/docs/ADDRESS/runs/2026-04-02_Address_CustomerRole_Probe_AfterRosterFix/full_live_results.json new file mode 100644 index 0000000..1530d97 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_CustomerRole_Probe_AfterRosterFix/full_live_results.json @@ -0,0 +1,348 @@ +{ + "run_id": "2026-04-02_Address_CustomerRole_Probe_AfterRosterFix", + "generated_at": "2026-04-02T22:00:04", + "summary": { + "run_id": "2026-04-02_Address_CustomerRole_Probe_AfterRosterFix", + "generated_at": "2026-04-02T22:00:04", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\temp_customer_role_probe_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", + "strict_policy": "factual", + "totals": { + "questions_total": 2, + "ok_200_count": 2, + "semantic_pass_count": 2, + "semantic_pass_rate": 1.0, + "route_pass_count": 2, + "route_pass_rate": 1.0, + "strict_pass_count": 2, + "strict_pass_rate": 1.0, + "factual_count": 2, + "partial_coverage_count": 0, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_applied_count": 1, + "avg_elapsed_ms": 5649 + }, + "distributions": { + "reply_type": { + "factual": 2 + }, + "actual_intent": { + "counterparty_population_and_roles": 1, + "counterparty_activity_lifecycle": 1 + }, + "actual_mode": { + "address_query": 2 + }, + "mcp_call_status": { + "matched_non_empty": 2 + }, + "limited_reason_category": {}, + "route_health": { + "ok_or_factual": 2 + } + } + }, + "rows": [ + { + "index": 1, + "id": "P001", + "question": "скок клиентов", + "session": null, + "session_id": "asst-2026-04-02_Address_CustomerRole_Probe_AfterRosterFix-p001", + "status_code": 200, + "ok": true, + "elapsed_ms": 6244, + "reply_type": "factual", + "trace_id": "address-jv1LVcF9Vq", + "assistant_reply": "Профиль контрагентов собран (catalog + bank-doc activity aggregate).\nСтрок агрегата: 5.\nВсего уникальных контрагентов в базе: 139.", + "assistant_reply_first_line": "Профиль контрагентов собран (catalog + bank-doc activity aggregate).", + "expected_intent": null, + "actual_intent": "counterparty_population_and_roles", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "factual", + "strict_pass": true, + "selected_recipe": "address_counterparty_population_roles_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-jv1LVcF9Vq", + "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", + "object_signal_detected", + "counterparty_population_and_roles_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": "counterparty_population_and_roles", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_to": "2026-04-02" + }, + "missing_required_filters": [], + "selected_recipe": "address_counterparty_population_roles_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "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", + "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_SUMMARY", + "execution_lane": "address_query", + "llm_decomposition_applied": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "mquQefjwqE-Pd7", + "llm_decomposition_effective_message": "сколько контрагентов?", + "llm_decomposition_reason": "normalized_fragment_applied", + "llm_canonical_candidate_detected": true, + "fallback_rule_hit": null, + "sanitized_user_message": "скок клиентов", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "mquQefjwqE-Pd7", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "сколько контрагентов?" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 2, + "id": "P002", + "question": "кто у нас заказчики вообще", + "session": null, + "session_id": "asst-2026-04-02_Address_CustomerRole_Probe_AfterRosterFix-p002", + "status_code": 200, + "ok": true, + "elapsed_ms": 5054, + "reply_type": "factual", + "trace_id": "address-bOIHWDgpFi", + "assistant_reply": "Собран профиль активности заказчиков (bank-doc activity aggregate).\nСтрок агрегата: 46.\nАктивные заказчики в выбранном периоде: 46.\n1. ГКУ | операций: 44 | последняя активность: 2019-12-25T16:09:27Z\n2. ГБУ \\Многофункциональный центр\\ | операций: 38 | последняя активность: 2018-12-04T12:00:01Z\n3. СБЕРБАНК, ПАО | операций: 36 | последняя активность: 2020-03-02T12:00:04Z\n4. Комитет государственных услуг г. Москвы | операций: 27 | последняя активность: 2015-05-19T12:00:00Z\n5. Группа | операций: 26 | последняя активность: 2021-11-10T12:00:07Z\n6. НОРТОН | операций: 14 | последняя активность: 2022-01-20T12:00:05Z\n7. МНН | операций: 14 | последняя активность: 2022-01-20T12:00:04Z\n8. МОСКОВСКИЙ ФИЛИАЛ ООО КБ\\МЕГАПОЛИС\\ | операций: 11 | последняя активность: 2019-07-31T12:00:22Z\n9. Департамент капитального ремонта города Москвы. | операций: 10 | последняя активность: 2019-09-16T11:00:00Z\n10. Департамент финансов города Москвы | операций: 10 | последняя активность: 2015-12-29T12:00:03Z\n11. Лайсвуд, ООО | операций: 7 | последняя активность: 2020-03-02T12:00:02Z\n12. Единая электронная торговая площадка, АО | операций: 7 | последняя активность: 2018-08-10T12:00:00Z\n13. ЭталонМебель | операций: 6 | последняя активность: 2020-04-27T12:00:00Z\n14. ИП Калинин Н.М. | операций: 5 | последняя активность: 2020-03-02T12:00:03Z\n15. Элмаш-К | операций: 5 | последняя активность: 2018-02-06T12:32:17Z\n16. ГТК-Интер, ООО | операций: 5 | последняя активность: 2016-07-07T12:00:00Z\n17. Гамма-мебель, ООО | операций: 4 | последняя активность: 2020-08-11T13:15:30Z\n18. Смарт | операций: 4 | последняя активность: 2020-02-07T12:00:03Z\n19. Сбербанк-АСТ, ЗАО | операций: 4 | последняя активность: 2017-07-26T12:00:00Z\n20. КБ \\НЕФТЯНОЙ АЛЬЯНС\\ (ПАО) (Расчетный) | операций: 4 | последняя активность: 2015-02-05T12:00:06Z\n21. ЗАО Ремонтно-строительная фирма «Ремстройсервис» | операций: 3 | последняя активность: 2020-06-03T00:00:02Z\n22. ПрофТренд,ООО | операций: 3 | последняя активность: 2020-05-15T12:00:02Z\n23. ГБПОУ г. Москвы \\Московская театральная школа Олега Табакова\\ | операций: 3 | последняя активность: 2019-10-25T12:00:00Z\n24. Газпром авиа, ООО | операций: 3 | последняя активность: 2016-11-29T12:00:01Z\n25. ФГКУ \\Центрреставрация\\ | операций: 3 | последняя активность: 2015-12-30T12:00:03Z\n26. РАЙМ, ООО | операций: 3 | последняя активность: 2015-08-13T12:00:00Z\n27. СервисКонсалт, ООО | операций: 2 | последняя активность: 2022-04-13T12:00:00Z\n30. УФК по г. Москве (ГУ - | операций: 2 | последняя активность: 2018-12-12T12:00:01Z\n31. Чепурнов П.Д. | операций: 1 | последняя активность: 2022-01-20T12:00:03Z\n32. «Олимпстрой» | операций: 1 | последняя активность: 2020-07-13T12:00:00Z\n33. КПК \\Столичная Сберегательная компания\\ | операций: 1 | последняя активность: 2019-04-17T12:00:00Z\n34. РТС-тендер | операций: 1 | последняя активность: 2018-12-17T00:00:00Z\n35. ФГБУ «УЗС» | операций: 1 | последняя активность: 2018-12-13T12:00:02Z\n36. АС \\ЕО | операций: 1 | последняя активность: 2018-01-15T13:25:36Z\n37. АкваСервис, ООО | операций: 1 | последняя активность: 2017-09-19T12:00:01Z\n38. ГБУ МФЦ города Москвы | операций: 1 | последняя активность: 2017-04-27T00:00:00Z\n39. \\Жуковка 51\\ | операций: 1 | последняя активность: 2017-04-10T16:50:38Z\n40. 0 | операций: 1 | последняя активность: 2017-03-02T12:00:00Z\n41. ФГБОУ ВО \\Московский государственный университет имени М.В. Ломоносова\\ | операций: 1 | последняя активность: 2016-11-25T00:00:00Z\n42. ДжетАэроКонцепт, ООО | операций: 1 | последняя активность: 2016-08-18T13:13:35Z\n43. УМ и автотранспорта, ЗАО | операций: 1 | последняя активность: 2015-12-24T12:00:00Z\n44. Межрегиональное операционное УФК | операций: 1 | последняя активность: 2015-11-12T12:00:00Z\n45. Банк ГПБ (АО) г. Москва | операций: 1 | последняя активность: 2015-10-30T12:00:03Z\n46. Спецстрой, ООО | операций: 1 | последняя активность: 2015-09-14T12:00:00Z", + "assistant_reply_first_line": "Собран профиль активности заказчиков (bank-doc activity aggregate).", + "expected_intent": null, + "actual_intent": "counterparty_activity_lifecycle", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "factual", + "strict_pass": true, + "selected_recipe": "address_counterparty_activity_lifecycle_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 46, + "rows_matched": 46, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-bOIHWDgpFi", + "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", + "counterparty_activity_lifecycle_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": "counterparty_activity_lifecycle", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_to": "2026-04-02" + }, + "missing_required_filters": [], + "selected_recipe": "address_counterparty_activity_lifecycle_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "matched_non_empty", + "rows_fetched": 46, + "raw_rows_received": 46, + "rows_after_account_scope": 46, + "rows_after_recipe_filter": 46, + "rows_materialized": 46, + "rows_matched": 46, + "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": "yf5HqUJmK1Ylw2", + "llm_decomposition_effective_message": "кто у нас заказчики вообще", + "llm_decomposition_reason": "normalized_fragment_same", + "llm_canonical_candidate_detected": true, + "fallback_rule_hit": null, + "sanitized_user_message": "кто у нас заказчики вообще", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "yf5HqUJmK1Ylw2", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "кто у нас заказчики вообще" + } + }, + "error_code": null, + "error_message": null + } + ] +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_CustomerRole_Probe_AfterRosterFix/response_audit.md b/docs/ADDRESS/runs/2026-04-02_Address_CustomerRole_Probe_AfterRosterFix/response_audit.md new file mode 100644 index 0000000..13a02fe --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_CustomerRole_Probe_AfterRosterFix/response_audit.md @@ -0,0 +1,6 @@ +# Response Audit: 2026-04-02_Address_CustomerRole_Probe_AfterRosterFix + +| id | strict | route_health | reply_type | intent | limited_reason | question | assistant_first_line | +|---|---|---|---|---|---|---|---| +| P001 | True | ok_or_factual | factual | counterparty_population_and_roles | None | скок клиентов | Профиль контрагентов собран (catalog + bank-doc activity aggregate). | +| P002 | True | ok_or_factual | factual | counterparty_activity_lifecycle | None | кто у нас заказчики вообще | Собран профиль активности заказчиков (bank-doc activity aggregate). | diff --git a/docs/ADDRESS/runs/2026-04-02_Address_CustomerRole_Probe_AfterRosterFix/run_summary.json b/docs/ADDRESS/runs/2026-04-02_Address_CustomerRole_Probe_AfterRosterFix/run_summary.json new file mode 100644 index 0000000..d49bcf8 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_CustomerRole_Probe_AfterRosterFix/run_summary.json @@ -0,0 +1,45 @@ +{ + "run_id": "2026-04-02_Address_CustomerRole_Probe_AfterRosterFix", + "generated_at": "2026-04-02T22:00:04", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\temp_customer_role_probe_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", + "strict_policy": "factual", + "totals": { + "questions_total": 2, + "ok_200_count": 2, + "semantic_pass_count": 2, + "semantic_pass_rate": 1.0, + "route_pass_count": 2, + "route_pass_rate": 1.0, + "strict_pass_count": 2, + "strict_pass_rate": 1.0, + "factual_count": 2, + "partial_coverage_count": 0, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_applied_count": 1, + "avg_elapsed_ms": 5649 + }, + "distributions": { + "reply_type": { + "factual": 2 + }, + "actual_intent": { + "counterparty_population_and_roles": 1, + "counterparty_activity_lifecycle": 1 + }, + "actual_mode": { + "address_query": 2 + }, + "mcp_call_status": { + "matched_non_empty": 2 + }, + "limited_reason_category": {}, + "route_health": { + "ok_or_factual": 2 + } + } +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_GateBlock_Probe_WithMetrics/README.md b/docs/ADDRESS/runs/2026-04-02_Address_GateBlock_Probe_WithMetrics/README.md new file mode 100644 index 0000000..23321dd --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_GateBlock_Probe_WithMetrics/README.md @@ -0,0 +1,33 @@ +# 2026-04-02_Address_GateBlock_Probe_WithMetrics + +Generated at: 2026-04-02T22:11:14 +Questions file: X:\1C\NDC_1C\docs\ADDRESS\question_sets\temp_gate_block_probe_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 +Strict policy: semantic + +## Totals +- questions_total: 2 +- ok_200_count: 2 +- semantic_pass_count: 1 +- semantic_pass_rate: 0.5 +- route_pass_count: 1 +- route_pass_rate: 0.5 +- strict_pass_count: 1 +- strict_pass_rate: 0.5 +- factual_count: 1 +- partial_coverage_count: 0 +- clarification_required_count: 1 +- http_error_count: 0 +- llm_decomposition_attempted_count: 1 +- llm_decomposition_applied_count: 0 +- llm_fallback_count: 0 +- llm_fallback_rate: 0.0 +- tool_gate_blocked_count: 0 +- tool_gate_blocked_rate: 0.0 +- avg_elapsed_ms: 8938 + +## Files +- run_summary.json +- full_live_results.json +- failures_only.json diff --git a/docs/ADDRESS/runs/2026-04-02_Address_GateBlock_Probe_WithMetrics/failures_only.json b/docs/ADDRESS/runs/2026-04-02_Address_GateBlock_Probe_WithMetrics/failures_only.json new file mode 100644 index 0000000..7a8d259 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_GateBlock_Probe_WithMetrics/failures_only.json @@ -0,0 +1,395 @@ +[ + { + "index": 1, + "id": "G001", + "question": "привет как дела", + "session": null, + "session_id": "asst-2026-04-02_Address_GateBlock_Probe_WithMetrics-g001", + "status_code": 200, + "ok": true, + "elapsed_ms": 12732, + "reply_type": "clarification_required", + "trace_id": "y_xkHosQzDZRaL", + "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.", + "assistant_reply_first_line": "Коротко: Наиболее вероятный механизм проблемы подтвержден частично и требует первичной проверки. Что сломано:", + "expected_intent": null, + "actual_intent": null, + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": null, + "mode_match": false, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": false, + "route_pass": false, + "route_health": "blocked_clarification", + "strict_policy": "semantic", + "strict_pass": false, + "selected_recipe": null, + "missing_required_filters": null, + "match_failure_stage": null, + "match_failure_reason": null, + "rows_fetched": null, + "rows_matched": null, + "mcp_call_status": null, + "limited_reason_category": null, + "llm_decomposition_attempted": null, + "llm_decomposition_applied": null, + "llm_decomposition_reason": null, + "llm_canonical_candidate_detected": null, + "fallback_rule_hit": null, + "tool_gate_decision": null, + "tool_gate_reason": null, + "predecompose_contract_intent": null, + "predecompose_contract_aggregation_profile": null, + "predecompose_contract_period_scope": null, + "debug_payload": { + "trace_id": "y_xkHosQzDZRaL", + "prompt_version": "address_query_runtime_v1", + "schema_version": "v1", + "fallback_type": "clarification", + "route_summary": null, + "fragments": [], + "requirements_extracted": [ + { + "requirement_id": "R1", + "source_fragment_id": null, + "requirement_text": "привет как дела", + "subject_tokens": [], + "status": "clarification_needed", + "route": null + } + ], + "coverage_report": { + "requirements_total": 1, + "requirements_covered": 0, + "requirements_uncovered": [], + "requirements_partially_covered": [], + "clarification_needed_for": [ + "R1" + ], + "out_of_scope_requirements": [] + }, + "routes": [], + "retrieval_status": [], + "retrieval_results": [], + "answer_grounding_check": { + "status": "no_grounded_answer", + "route_subject_match": true, + "missing_requirements": [ + "R1" + ], + "reasons": [ + "Ни одно требование не получило подтвержденного покрытия.", + "Нет explainable-сигналов why_included в результатах выборки.", + "Недостаточно покрытия required anchors для claim-bound grounding.", + "Недостаточно допустимого evidence для обоснованного ответа.", + "Targeted evidence acquisition РЅРµ дал допустимых попаданий РїРѕ claim target path." + ], + "why_included_summary": [], + "selection_reason_summary": [] + }, + "dropped_intent_segments": [], + "question_type_class": "why_breaks", + "company_anchors": { + "contract_numbers": [], + "document_numbers": [], + "dates": [], + "amounts": [], + "accounts": [], + "periods": [], + "document_types": [], + "all": [] + }, + "business_scope_raw": [], + "business_scope_resolved": [ + "company_specific_accounting" + ], + "company_grounding_applied": true, + "scope_resolution_reason": [ + "settlement_claim_company_scope_recovery" + ], + "company_scope_resolution_reason": [ + "settlement_claim_company_scope_recovery" + ], + "raw_time_anchor": null, + "raw_time_scope": null, + "resolved_time_anchor": null, + "resolved_primary_period": null, + "effective_primary_period": null, + "temporal_guard_input": null, + "temporal_alignment_status": "conflicting", + "temporal_resolution_source": "normalized_time_scope:missing", + "temporal_guard_basis": "none", + "temporal_guard_applied": false, + "temporal_guard_outcome": "passed", + "temporal_guard": { + "raw_time_anchor": null, + "raw_time_scope": null, + "resolved_time_anchor": null, + "resolved_primary_period": null, + "effective_primary_period": null, + "temporal_guard_input": null, + "temporal_alignment_status": "conflicting", + "temporal_resolution_source": "normalized_time_scope:missing", + "temporal_guard_basis": "none", + "temporal_guard_applied": false, + "temporal_guard_outcome": "passed", + "primary_period_window": null, + "allowed_context_window": null, + "controlled_temporal_expansion_enabled": false, + "context_expansion_reasons_allowed": [ + "prehistory", + "carryover", + "post_period_closure", + "long_running_contract_context" + ], + "normalized_anchor_drift_detected": false, + "reason_codes": [ + "missing_resolved_primary_period" + ] + }, + "raw_numeric_tokens": [], + "classified_numeric_tokens": [], + "rejected_as_non_accounts": [], + "resolved_account_anchors": [], + "domain_polarity_guard": { + "applied": false, + "polarity": "not_applicable", + "outcome": "not_applicable", + "supplier_score": 0, + "customer_score": 0, + "account_scope": [], + "raw_numeric_tokens": [], + "classified_numeric_tokens": [], + "rejected_as_non_accounts": [], + "resolved_account_anchors": [], + "rejected_problem_units": 0, + "rejected_evidence": 0, + "critical_contradiction": false, + "reason_codes": [] + }, + "claim_anchor_audit": { + "claim_type": "prove_settlement_closure_state", + "settlement_role": "unknown", + "settlement_role_resolution_reason": [ + "settlement_role_resolved_unknown" + ], + "polarity_resolution_status": "unknown", + "required_anchors": [ + "period", + "account_scope", + "counterparty_scope_or_contract", + "closure_signal" + ], + "resolved_anchors": { + "period": [], + "account_scope": [], + "amounts": [], + "contract": [], + "document_numbers": [], + "document_types": [], + "counterparty_scope": [], + "advance_signal": [], + "closure_signal": [], + "vat_signal": [], + "chain_signal": [], + "close_signal": [], + "cost_scope": [], + "rbp_signal": [], + "writeoff_signal": [], + "fixed_asset_signal": [], + "amortization_signal": [], + "expected_fa_set": [], + "actual_fa_set": [] + }, + "missing_anchors": [ + "period", + "account_scope", + "counterparty_scope_or_contract", + "closure_signal" + ], + "claim_anchor_resolution_rate": 0, + "primary_period": null, + "allowed_context_window": null, + "context_expansion_reasons_allowed": [ + "prehistory", + "carryover", + "post_period_closure", + "long_running_contract_context" + ], + "reason_codes": [ + "claim_missing_required_anchors", + "claim_anchor_resolution_low", + "unresolved_supplier_customer_polarity" + ] + }, + "settlement_role": "unknown", + "settlement_role_resolution_reason": [ + "settlement_role_resolved_unknown" + ], + "polarity_resolution_status": "unknown", + "targeted_evidence_acquisition": { + "claim_type": "prove_settlement_closure_state", + "required_checks": [ + "payment_document_found", + "contract_matched", + "settlement_object_matched", + "closing_document_found", + "register_closure_entry_found", + "posting_link_found" + ], + "check_status": { + "payment_document_found": "not_found", + "contract_matched": "not_found", + "settlement_object_matched": "not_found", + "closing_document_found": "not_found", + "register_closure_entry_found": "not_found", + "posting_link_found": "not_found" + }, + "targeted_item_hits": 0, + "targeted_evidence_hits": 0, + "targeted_evidence_hit_rate": 0, + "targeted_evidence_source_refs": [], + "reason_codes": [ + "targeted_evidence_not_found", + "targeted_evidence_hit_rate_low" + ] + }, + "evidence_admissibility_gate": { + "candidate_evidence_total": 0, + "admissible_evidence_count": 0, + "rejected_evidence_count": 0, + "rejected_item_count": 0, + "reject_breakdown": { + "wrong_period": 0, + "wrong_domain": 0, + "wrong_account_scope": 0, + "weak_source_mapping": 0, + "zero_live_match": 0, + "future_dated_or_out_of_window": 0 + }, + "category_breakdown": { + "hard_evidence": 0, + "supporting_signal": 0, + "inadmissible_noise": 0 + }, + "reason_codes": [ + "no_admissible_evidence_for_grounded_answer" + ] + }, + "eligibility_time_basis": "none", + "grounded_answer_eligibility_guard": { + "eligible": false, + "temporal_passed": true, + "eligibility_time_basis": "none", + "business_scope_passed": true, + "polarity_passed": true, + "claim_anchors_passed": false, + "claim_anchor_resolution_rate": 0, + "missing_required_anchors": 4, + "admissible_evidence_count": 0, + "critical_contradiction": false, + "outcome": "limited_or_insufficient_evidence", + "grounding_mode": "limited_or_insufficient_evidence", + "reason_codes": [ + "claim_anchor_coverage_insufficient", + "admissible_evidence_count_zero", + "targeted_evidence_hit_rate_zero" + ] + }, + "problem_centric_answer_applied": false, + "problem_units_used_count": 0, + "problem_answer_mode": "stage1_policy_v11", + "answer_structure_v11": { + "schema_version": "answer_structure_v1_1", + "answer_summary": "Нужны уточнения: без сужения фокуса надежный вывод невозможен.", + "direct_answer": "Есть признаки проблемы, но без уточнений по периоду и объекту вывод ненадежен.", + "mechanism_block": { + "status": "unresolved", + "mechanism_notes": [], + "limitation_reason_codes": [] + }, + "evidence_block": { + "evidence_ids": [], + "source_refs": [], + "mechanism_notes": [], + "coverage_note": "coverage_partial_or_limited" + }, + "uncertainty_block": { + "open_uncertainties": [ + "R1", + "missing_anchor:period", + "missing_anchor:account", + "missing_anchor:document_or_object", + "missing_anchor:counterparty" + ], + "limitations": [ + "Ни одно требование не получило подтвержденного покрытия.", + "Нет explainable-сигналов why_included в результатах выборки.", + "Недостаточно покрытия required anchors для claim-bound grounding.", + "Недостаточно допустимого evidence для обоснованного ответа.", + "Targeted evidence acquisition РЅРµ дал допустимых попаданий РїРѕ claim target path." + ] + }, + "next_step_block": { + "recommended_actions": [ + "Дайте недостающие СЏРєРѕСЂСЏ (период/счет/объект), иначе сильный factual вывод невозможен." + ], + "clarification_questions": [ + "Уточните период проверки (например, июль 2020).", + "Уточните счет или РіСЂСѓРїРїСѓ счетов (например, 19, 60, 62).", + "Укажите документ/GUID/конкретный объект для трассировки.", + "Укажите контрагента или РіСЂСѓРїРїСѓ контрагентов.", + "Закройте уточнения для требований: R1." + ] + } + }, + "investigation_state_snapshot": { + "schema_version": "investigation_state_v1", + "session_id": "asst-2026-04-02_Address_GateBlock_Probe_WithMetrics-g001", + "status": "active", + "turn_index": 1, + "updated_at": "2026-04-02T19:11:09.280Z", + "question_id": "msg-wm3KZbU0j2", + "question_scope_id": "s:привет как дела", + "scope_origin": "underspecified", + "focus": { + "domain": null, + "period": null, + "primary_accounts": [], + "active_query_subject": "привет как дела" + }, + "narrowing_status": "unknown", + "evidence_refs": [], + "open_uncertainties": [ + "clarify:R1" + ], + "last_answer_mode": "clarification_required", + "followup_context": { + "previous_question_id": null, + "last_user_message": "привет как дела", + "referenced_requirement_ids": [ + "R1" + ], + "active_domain": null, + "active_requirement_ids": [ + "R1" + ], + "uncovered_requirement_ids": [ + "R1" + ], + "last_problem_unit_id": null, + "settlement_next_actions": [], + "evidence_summary": [], + "question_scope_id": "s:привет как дела", + "scope_origin": "underspecified" + }, + "query_mode_hint": "investigation_candidate" + }, + "normalized": null + }, + "error_code": null, + "error_message": null + } +] diff --git a/docs/ADDRESS/runs/2026-04-02_Address_GateBlock_Probe_WithMetrics/full_live_results.json b/docs/ADDRESS/runs/2026-04-02_Address_GateBlock_Probe_WithMetrics/full_live_results.json new file mode 100644 index 0000000..e660743 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_GateBlock_Probe_WithMetrics/full_live_results.json @@ -0,0 +1,672 @@ +{ + "run_id": "2026-04-02_Address_GateBlock_Probe_WithMetrics", + "generated_at": "2026-04-02T22:11:14", + "summary": { + "run_id": "2026-04-02_Address_GateBlock_Probe_WithMetrics", + "generated_at": "2026-04-02T22:11:14", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\temp_gate_block_probe_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", + "strict_policy": "semantic", + "totals": { + "questions_total": 2, + "ok_200_count": 2, + "semantic_pass_count": 1, + "semantic_pass_rate": 0.5, + "route_pass_count": 1, + "route_pass_rate": 0.5, + "strict_pass_count": 1, + "strict_pass_rate": 0.5, + "factual_count": 1, + "partial_coverage_count": 0, + "clarification_required_count": 1, + "http_error_count": 0, + "llm_decomposition_attempted_count": 1, + "llm_decomposition_applied_count": 0, + "llm_fallback_count": 0, + "llm_fallback_rate": 0.0, + "tool_gate_blocked_count": 0, + "tool_gate_blocked_rate": 0.0, + "avg_elapsed_ms": 8938 + }, + "distributions": { + "reply_type": { + "clarification_required": 1, + "factual": 1 + }, + "actual_intent": { + "None": 1, + "counterparty_activity_lifecycle": 1 + }, + "actual_mode": { + "None": 1, + "address_query": 1 + }, + "mcp_call_status": { + "None": 1, + "matched_non_empty": 1 + }, + "limited_reason_category": {}, + "route_health": { + "blocked_clarification": 1, + "ok_or_factual": 1 + }, + "tool_gate_decision": { + "run_address_lane": 1 + }, + "tool_gate_reason": { + "address_mode_classifier_detected": 1 + } + }, + "address_llm_predecompose_metrics": { + "overall": { + "llm_attempted": 1, + "llm_applied": 0, + "fallback_used": 0, + "fallback_rate": 0.0, + "tool_gate_blocked": 0, + "gate_block_rate": 0.0 + }, + "by_intent": { + "unknown": { + "total": 1, + "llm_attempted": 0, + "llm_applied": 0, + "fallback_used": 0, + "tool_gate_blocked": 0, + "fallback_rate": 0.0, + "gate_block_rate": 0.0 + }, + "counterparty_activity_lifecycle": { + "total": 1, + "llm_attempted": 1, + "llm_applied": 0, + "fallback_used": 0, + "tool_gate_blocked": 0, + "fallback_rate": 0.0, + "gate_block_rate": 0.0 + } + } + } + }, + "rows": [ + { + "index": 1, + "id": "G001", + "question": "привет как дела", + "session": null, + "session_id": "asst-2026-04-02_Address_GateBlock_Probe_WithMetrics-g001", + "status_code": 200, + "ok": true, + "elapsed_ms": 12732, + "reply_type": "clarification_required", + "trace_id": "y_xkHosQzDZRaL", + "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.", + "assistant_reply_first_line": "Коротко: Наиболее вероятный механизм проблемы подтвержден частично и требует первичной проверки. Что сломано:", + "expected_intent": null, + "actual_intent": null, + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": null, + "mode_match": false, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": false, + "route_pass": false, + "route_health": "blocked_clarification", + "strict_policy": "semantic", + "strict_pass": false, + "selected_recipe": null, + "missing_required_filters": null, + "match_failure_stage": null, + "match_failure_reason": null, + "rows_fetched": null, + "rows_matched": null, + "mcp_call_status": null, + "limited_reason_category": null, + "llm_decomposition_attempted": null, + "llm_decomposition_applied": null, + "llm_decomposition_reason": null, + "llm_canonical_candidate_detected": null, + "fallback_rule_hit": null, + "tool_gate_decision": null, + "tool_gate_reason": null, + "predecompose_contract_intent": null, + "predecompose_contract_aggregation_profile": null, + "predecompose_contract_period_scope": null, + "debug_payload": { + "trace_id": "y_xkHosQzDZRaL", + "prompt_version": "address_query_runtime_v1", + "schema_version": "v1", + "fallback_type": "clarification", + "route_summary": null, + "fragments": [], + "requirements_extracted": [ + { + "requirement_id": "R1", + "source_fragment_id": null, + "requirement_text": "привет как дела", + "subject_tokens": [], + "status": "clarification_needed", + "route": null + } + ], + "coverage_report": { + "requirements_total": 1, + "requirements_covered": 0, + "requirements_uncovered": [], + "requirements_partially_covered": [], + "clarification_needed_for": [ + "R1" + ], + "out_of_scope_requirements": [] + }, + "routes": [], + "retrieval_status": [], + "retrieval_results": [], + "answer_grounding_check": { + "status": "no_grounded_answer", + "route_subject_match": true, + "missing_requirements": [ + "R1" + ], + "reasons": [ + "Ни одно требование не получило подтвержденного покрытия.", + "Нет explainable-сигналов why_included в результатах выборки.", + "Недостаточно покрытия required anchors для claim-bound grounding.", + "Недостаточно допустимого evidence для обоснованного ответа.", + "Targeted evidence acquisition РЅРµ дал допустимых попаданий РїРѕ claim target path." + ], + "why_included_summary": [], + "selection_reason_summary": [] + }, + "dropped_intent_segments": [], + "question_type_class": "why_breaks", + "company_anchors": { + "contract_numbers": [], + "document_numbers": [], + "dates": [], + "amounts": [], + "accounts": [], + "periods": [], + "document_types": [], + "all": [] + }, + "business_scope_raw": [], + "business_scope_resolved": [ + "company_specific_accounting" + ], + "company_grounding_applied": true, + "scope_resolution_reason": [ + "settlement_claim_company_scope_recovery" + ], + "company_scope_resolution_reason": [ + "settlement_claim_company_scope_recovery" + ], + "raw_time_anchor": null, + "raw_time_scope": null, + "resolved_time_anchor": null, + "resolved_primary_period": null, + "effective_primary_period": null, + "temporal_guard_input": null, + "temporal_alignment_status": "conflicting", + "temporal_resolution_source": "normalized_time_scope:missing", + "temporal_guard_basis": "none", + "temporal_guard_applied": false, + "temporal_guard_outcome": "passed", + "temporal_guard": { + "raw_time_anchor": null, + "raw_time_scope": null, + "resolved_time_anchor": null, + "resolved_primary_period": null, + "effective_primary_period": null, + "temporal_guard_input": null, + "temporal_alignment_status": "conflicting", + "temporal_resolution_source": "normalized_time_scope:missing", + "temporal_guard_basis": "none", + "temporal_guard_applied": false, + "temporal_guard_outcome": "passed", + "primary_period_window": null, + "allowed_context_window": null, + "controlled_temporal_expansion_enabled": false, + "context_expansion_reasons_allowed": [ + "prehistory", + "carryover", + "post_period_closure", + "long_running_contract_context" + ], + "normalized_anchor_drift_detected": false, + "reason_codes": [ + "missing_resolved_primary_period" + ] + }, + "raw_numeric_tokens": [], + "classified_numeric_tokens": [], + "rejected_as_non_accounts": [], + "resolved_account_anchors": [], + "domain_polarity_guard": { + "applied": false, + "polarity": "not_applicable", + "outcome": "not_applicable", + "supplier_score": 0, + "customer_score": 0, + "account_scope": [], + "raw_numeric_tokens": [], + "classified_numeric_tokens": [], + "rejected_as_non_accounts": [], + "resolved_account_anchors": [], + "rejected_problem_units": 0, + "rejected_evidence": 0, + "critical_contradiction": false, + "reason_codes": [] + }, + "claim_anchor_audit": { + "claim_type": "prove_settlement_closure_state", + "settlement_role": "unknown", + "settlement_role_resolution_reason": [ + "settlement_role_resolved_unknown" + ], + "polarity_resolution_status": "unknown", + "required_anchors": [ + "period", + "account_scope", + "counterparty_scope_or_contract", + "closure_signal" + ], + "resolved_anchors": { + "period": [], + "account_scope": [], + "amounts": [], + "contract": [], + "document_numbers": [], + "document_types": [], + "counterparty_scope": [], + "advance_signal": [], + "closure_signal": [], + "vat_signal": [], + "chain_signal": [], + "close_signal": [], + "cost_scope": [], + "rbp_signal": [], + "writeoff_signal": [], + "fixed_asset_signal": [], + "amortization_signal": [], + "expected_fa_set": [], + "actual_fa_set": [] + }, + "missing_anchors": [ + "period", + "account_scope", + "counterparty_scope_or_contract", + "closure_signal" + ], + "claim_anchor_resolution_rate": 0, + "primary_period": null, + "allowed_context_window": null, + "context_expansion_reasons_allowed": [ + "prehistory", + "carryover", + "post_period_closure", + "long_running_contract_context" + ], + "reason_codes": [ + "claim_missing_required_anchors", + "claim_anchor_resolution_low", + "unresolved_supplier_customer_polarity" + ] + }, + "settlement_role": "unknown", + "settlement_role_resolution_reason": [ + "settlement_role_resolved_unknown" + ], + "polarity_resolution_status": "unknown", + "targeted_evidence_acquisition": { + "claim_type": "prove_settlement_closure_state", + "required_checks": [ + "payment_document_found", + "contract_matched", + "settlement_object_matched", + "closing_document_found", + "register_closure_entry_found", + "posting_link_found" + ], + "check_status": { + "payment_document_found": "not_found", + "contract_matched": "not_found", + "settlement_object_matched": "not_found", + "closing_document_found": "not_found", + "register_closure_entry_found": "not_found", + "posting_link_found": "not_found" + }, + "targeted_item_hits": 0, + "targeted_evidence_hits": 0, + "targeted_evidence_hit_rate": 0, + "targeted_evidence_source_refs": [], + "reason_codes": [ + "targeted_evidence_not_found", + "targeted_evidence_hit_rate_low" + ] + }, + "evidence_admissibility_gate": { + "candidate_evidence_total": 0, + "admissible_evidence_count": 0, + "rejected_evidence_count": 0, + "rejected_item_count": 0, + "reject_breakdown": { + "wrong_period": 0, + "wrong_domain": 0, + "wrong_account_scope": 0, + "weak_source_mapping": 0, + "zero_live_match": 0, + "future_dated_or_out_of_window": 0 + }, + "category_breakdown": { + "hard_evidence": 0, + "supporting_signal": 0, + "inadmissible_noise": 0 + }, + "reason_codes": [ + "no_admissible_evidence_for_grounded_answer" + ] + }, + "eligibility_time_basis": "none", + "grounded_answer_eligibility_guard": { + "eligible": false, + "temporal_passed": true, + "eligibility_time_basis": "none", + "business_scope_passed": true, + "polarity_passed": true, + "claim_anchors_passed": false, + "claim_anchor_resolution_rate": 0, + "missing_required_anchors": 4, + "admissible_evidence_count": 0, + "critical_contradiction": false, + "outcome": "limited_or_insufficient_evidence", + "grounding_mode": "limited_or_insufficient_evidence", + "reason_codes": [ + "claim_anchor_coverage_insufficient", + "admissible_evidence_count_zero", + "targeted_evidence_hit_rate_zero" + ] + }, + "problem_centric_answer_applied": false, + "problem_units_used_count": 0, + "problem_answer_mode": "stage1_policy_v11", + "answer_structure_v11": { + "schema_version": "answer_structure_v1_1", + "answer_summary": "Нужны уточнения: без сужения фокуса надежный вывод невозможен.", + "direct_answer": "Есть признаки проблемы, но без уточнений по периоду и объекту вывод ненадежен.", + "mechanism_block": { + "status": "unresolved", + "mechanism_notes": [], + "limitation_reason_codes": [] + }, + "evidence_block": { + "evidence_ids": [], + "source_refs": [], + "mechanism_notes": [], + "coverage_note": "coverage_partial_or_limited" + }, + "uncertainty_block": { + "open_uncertainties": [ + "R1", + "missing_anchor:period", + "missing_anchor:account", + "missing_anchor:document_or_object", + "missing_anchor:counterparty" + ], + "limitations": [ + "Ни одно требование не получило подтвержденного покрытия.", + "Нет explainable-сигналов why_included в результатах выборки.", + "Недостаточно покрытия required anchors для claim-bound grounding.", + "Недостаточно допустимого evidence для обоснованного ответа.", + "Targeted evidence acquisition РЅРµ дал допустимых попаданий РїРѕ claim target path." + ] + }, + "next_step_block": { + "recommended_actions": [ + "Дайте недостающие СЏРєРѕСЂСЏ (период/счет/объект), иначе сильный factual вывод невозможен." + ], + "clarification_questions": [ + "Уточните период проверки (например, июль 2020).", + "Уточните счет или РіСЂСѓРїРїСѓ счетов (например, 19, 60, 62).", + "Укажите документ/GUID/конкретный объект для трассировки.", + "Укажите контрагента или РіСЂСѓРїРїСѓ контрагентов.", + "Закройте уточнения для требований: R1." + ] + } + }, + "investigation_state_snapshot": { + "schema_version": "investigation_state_v1", + "session_id": "asst-2026-04-02_Address_GateBlock_Probe_WithMetrics-g001", + "status": "active", + "turn_index": 1, + "updated_at": "2026-04-02T19:11:09.280Z", + "question_id": "msg-wm3KZbU0j2", + "question_scope_id": "s:привет как дела", + "scope_origin": "underspecified", + "focus": { + "domain": null, + "period": null, + "primary_accounts": [], + "active_query_subject": "привет как дела" + }, + "narrowing_status": "unknown", + "evidence_refs": [], + "open_uncertainties": [ + "clarify:R1" + ], + "last_answer_mode": "clarification_required", + "followup_context": { + "previous_question_id": null, + "last_user_message": "привет как дела", + "referenced_requirement_ids": [ + "R1" + ], + "active_domain": null, + "active_requirement_ids": [ + "R1" + ], + "uncovered_requirement_ids": [ + "R1" + ], + "last_problem_unit_id": null, + "settlement_next_actions": [], + "evidence_summary": [], + "question_scope_id": "s:привет как дела", + "scope_origin": "underspecified" + }, + "query_mode_hint": "investigation_candidate" + }, + "normalized": null + }, + "error_code": null, + "error_message": null + }, + { + "index": 2, + "id": "G002", + "question": "выведи список заказчиков за все время", + "session": null, + "session_id": "asst-2026-04-02_Address_GateBlock_Probe_WithMetrics-g002", + "status_code": 200, + "ok": true, + "elapsed_ms": 5144, + "reply_type": "factual", + "trace_id": "address-9ld5_Ya2rI", + "assistant_reply": "Собран профиль активности заказчиков (bank-doc activity aggregate).\nСтрок агрегата: 46.\nАктивные заказчики за все время: 46.\n1. ГКУ | операций: 44 | последняя активность: 2019-12-25T16:09:27Z\n2. ГБУ \\Многофункциональный центр\\ | операций: 38 | последняя активность: 2018-12-04T12:00:01Z\n3. СБЕРБАНК, ПАО | операций: 36 | последняя активность: 2020-03-02T12:00:04Z\n4. Комитет государственных услуг г. Москвы | операций: 27 | последняя активность: 2015-05-19T12:00:00Z\n5. Группа | операций: 26 | последняя активность: 2021-11-10T12:00:07Z\n6. НОРТОН | операций: 14 | последняя активность: 2022-01-20T12:00:05Z\n7. МНН | операций: 14 | последняя активность: 2022-01-20T12:00:04Z\n8. МОСКОВСКИЙ ФИЛИАЛ ООО КБ\\МЕГАПОЛИС\\ | операций: 11 | последняя активность: 2019-07-31T12:00:22Z\n9. Департамент капитального ремонта города Москвы. | операций: 10 | последняя активность: 2019-09-16T11:00:00Z\n10. Департамент финансов города Москвы | операций: 10 | последняя активность: 2015-12-29T12:00:03Z\n11. Лайсвуд, ООО | операций: 7 | последняя активность: 2020-03-02T12:00:02Z\n12. Единая электронная торговая площадка, АО | операций: 7 | последняя активность: 2018-08-10T12:00:00Z\n13. ЭталонМебель | операций: 6 | последняя активность: 2020-04-27T12:00:00Z\n14. ИП Калинин Н.М. | операций: 5 | последняя активность: 2020-03-02T12:00:03Z\n15. Элмаш-К | операций: 5 | последняя активность: 2018-02-06T12:32:17Z\n16. ГТК-Интер, ООО | операций: 5 | последняя активность: 2016-07-07T12:00:00Z\n17. Гамма-мебель, ООО | операций: 4 | последняя активность: 2020-08-11T13:15:30Z\n18. Смарт | операций: 4 | последняя активность: 2020-02-07T12:00:03Z\n19. Сбербанк-АСТ, ЗАО | операций: 4 | последняя активность: 2017-07-26T12:00:00Z\n20. КБ \\НЕФТЯНОЙ АЛЬЯНС\\ (ПАО) (Расчетный) | операций: 4 | последняя активность: 2015-02-05T12:00:06Z\n21. ЗАО Ремонтно-строительная фирма «Ремстройсервис» | операций: 3 | последняя активность: 2020-06-03T00:00:02Z\n22. ПрофТренд,ООО | операций: 3 | последняя активность: 2020-05-15T12:00:02Z\n23. ГБПОУ г. Москвы \\Московская театральная школа Олега Табакова\\ | операций: 3 | последняя активность: 2019-10-25T12:00:00Z\n24. Газпром авиа, ООО | операций: 3 | последняя активность: 2016-11-29T12:00:01Z\n25. ФГКУ \\Центрреставрация\\ | операций: 3 | последняя активность: 2015-12-30T12:00:03Z\n26. РАЙМ, ООО | операций: 3 | последняя активность: 2015-08-13T12:00:00Z\n27. СервисКонсалт, ООО | операций: 2 | последняя активность: 2022-04-13T12:00:00Z\n30. УФК по г. Москве (ГУ - | операций: 2 | последняя активность: 2018-12-12T12:00:01Z\n31. Чепурнов П.Д. | операций: 1 | последняя активность: 2022-01-20T12:00:03Z\n32. «Олимпстрой» | операций: 1 | последняя активность: 2020-07-13T12:00:00Z\n33. КПК \\Столичная Сберегательная компания\\ | операций: 1 | последняя активность: 2019-04-17T12:00:00Z\n34. РТС-тендер | операций: 1 | последняя активность: 2018-12-17T00:00:00Z\n35. ФГБУ «УЗС» | операций: 1 | последняя активность: 2018-12-13T12:00:02Z\n36. АС \\ЕО | операций: 1 | последняя активность: 2018-01-15T13:25:36Z\n37. АкваСервис, ООО | операций: 1 | последняя активность: 2017-09-19T12:00:01Z\n38. ГБУ МФЦ города Москвы | операций: 1 | последняя активность: 2017-04-27T00:00:00Z\n39. \\Жуковка 51\\ | операций: 1 | последняя активность: 2017-04-10T16:50:38Z\n40. 0 | операций: 1 | последняя активность: 2017-03-02T12:00:00Z\n41. ФГБОУ ВО \\Московский государственный университет имени М.В. Ломоносова\\ | операций: 1 | последняя активность: 2016-11-25T00:00:00Z\n42. ДжетАэроКонцепт, ООО | операций: 1 | последняя активность: 2016-08-18T13:13:35Z\n43. УМ и автотранспорта, ЗАО | операций: 1 | последняя активность: 2015-12-24T12:00:00Z\n44. Межрегиональное операционное УФК | операций: 1 | последняя активность: 2015-11-12T12:00:00Z\n45. Банк ГПБ (АО) г. Москва | операций: 1 | последняя активность: 2015-10-30T12:00:03Z\n46. Спецстрой, ООО | операций: 1 | последняя активность: 2015-09-14T12:00:00Z", + "assistant_reply_first_line": "Собран профиль активности заказчиков (bank-doc activity aggregate).", + "expected_intent": null, + "actual_intent": "counterparty_activity_lifecycle", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "semantic", + "strict_pass": true, + "selected_recipe": "address_counterparty_activity_lifecycle_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 46, + "rows_matched": 46, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_attempted": true, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_drop", + "llm_canonical_candidate_detected": true, + "fallback_rule_hit": null, + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "predecompose_contract_intent": "counterparty_activity_lifecycle", + "predecompose_contract_aggregation_profile": "management_profile", + "predecompose_contract_period_scope": "all_time", + "debug_payload": { + "trace_id": "address-9ld5_Ya2rI", + "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", + "counterparty_activity_lifecycle_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": "counterparty_activity_lifecycle", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_to": "2026-04-02" + }, + "missing_required_filters": [], + "selected_recipe": "address_counterparty_activity_lifecycle_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "matched_non_empty", + "rows_fetched": 46, + "raw_rows_received": 46, + "rows_after_account_scope": 46, + "rows_after_recipe_filter": 46, + "rows_materialized": 46, + "rows_matched": 46, + "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": "nZzm4dBeoU37gx", + "llm_decomposition_effective_message": "выведи список заказчиков за все время", + "llm_decomposition_reason": "normalized_fragment_rejected_intent_drop", + "llm_canonical_candidate_detected": true, + "llm_predecompose_contract": { + "schema_version": "address_llm_predecompose_contract_v1", + "source_message": "выведи список заказчиков за все время", + "canonical_message": "выведи список заказчиков за все время", + "mode": "address_query", + "mode_confidence": "high", + "query_shape": "UNKNOWN", + "query_shape_confidence": "low", + "intent": "counterparty_activity_lifecycle", + "intent_confidence": "high", + "entities": { + "account": null, + "counterparty": null, + "contract": null, + "document_type": null, + "document_ref": null, + "organization": null + }, + "period": { + "scope": "all_time", + "period_from": null, + "period_to": "2026-04-02", + "as_of_date": null, + "has_explicit_period": true + }, + "aggregation_profile": "management_profile" + }, + "fallback_rule_hit": null, + "sanitized_user_message": "выведи список заказчиков за все время", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "nZzm4dBeoU37gx", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "выведи список заказчиков за все время" + } + }, + "error_code": null, + "error_message": null + } + ] +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_GateBlock_Probe_WithMetrics/response_audit.md b/docs/ADDRESS/runs/2026-04-02_Address_GateBlock_Probe_WithMetrics/response_audit.md new file mode 100644 index 0000000..7ccdaa4 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_GateBlock_Probe_WithMetrics/response_audit.md @@ -0,0 +1,6 @@ +# Response Audit: 2026-04-02_Address_GateBlock_Probe_WithMetrics + +| id | strict | route_health | reply_type | intent | limited_reason | question | assistant_first_line | +|---|---|---|---|---|---|---|---| +| G001 | False | blocked_clarification | clarification_required | None | None | привет как дела | Коротко: Наиболее вероятный механизм проблемы подтвержден частично и требует первичной проверки. Что сломано: | +| G002 | True | ok_or_factual | factual | counterparty_activity_lifecycle | None | выведи список заказчиков за все время | Собран профиль активности заказчиков (bank-doc activity aggregate). | diff --git a/docs/ADDRESS/runs/2026-04-02_Address_GateBlock_Probe_WithMetrics/run_summary.json b/docs/ADDRESS/runs/2026-04-02_Address_GateBlock_Probe_WithMetrics/run_summary.json new file mode 100644 index 0000000..727fff2 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_GateBlock_Probe_WithMetrics/run_summary.json @@ -0,0 +1,90 @@ +{ + "run_id": "2026-04-02_Address_GateBlock_Probe_WithMetrics", + "generated_at": "2026-04-02T22:11:14", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\temp_gate_block_probe_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", + "strict_policy": "semantic", + "totals": { + "questions_total": 2, + "ok_200_count": 2, + "semantic_pass_count": 1, + "semantic_pass_rate": 0.5, + "route_pass_count": 1, + "route_pass_rate": 0.5, + "strict_pass_count": 1, + "strict_pass_rate": 0.5, + "factual_count": 1, + "partial_coverage_count": 0, + "clarification_required_count": 1, + "http_error_count": 0, + "llm_decomposition_attempted_count": 1, + "llm_decomposition_applied_count": 0, + "llm_fallback_count": 0, + "llm_fallback_rate": 0.0, + "tool_gate_blocked_count": 0, + "tool_gate_blocked_rate": 0.0, + "avg_elapsed_ms": 8938 + }, + "distributions": { + "reply_type": { + "clarification_required": 1, + "factual": 1 + }, + "actual_intent": { + "None": 1, + "counterparty_activity_lifecycle": 1 + }, + "actual_mode": { + "None": 1, + "address_query": 1 + }, + "mcp_call_status": { + "None": 1, + "matched_non_empty": 1 + }, + "limited_reason_category": {}, + "route_health": { + "blocked_clarification": 1, + "ok_or_factual": 1 + }, + "tool_gate_decision": { + "run_address_lane": 1 + }, + "tool_gate_reason": { + "address_mode_classifier_detected": 1 + } + }, + "address_llm_predecompose_metrics": { + "overall": { + "llm_attempted": 1, + "llm_applied": 0, + "fallback_used": 0, + "fallback_rate": 0.0, + "tool_gate_blocked": 0, + "gate_block_rate": 0.0 + }, + "by_intent": { + "unknown": { + "total": 1, + "llm_attempted": 0, + "llm_applied": 0, + "fallback_used": 0, + "tool_gate_blocked": 0, + "fallback_rate": 0.0, + "gate_block_rate": 0.0 + }, + "counterparty_activity_lifecycle": { + "total": 1, + "llm_attempted": 1, + "llm_applied": 0, + "fallback_used": 0, + "tool_gate_blocked": 0, + "fallback_rate": 0.0, + "gate_block_rate": 0.0 + } + } + } +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_GateBlock_Probe_WithMetrics_02/README.md b/docs/ADDRESS/runs/2026-04-02_Address_GateBlock_Probe_WithMetrics_02/README.md new file mode 100644 index 0000000..46294a5 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_GateBlock_Probe_WithMetrics_02/README.md @@ -0,0 +1,33 @@ +# 2026-04-02_Address_GateBlock_Probe_WithMetrics_02 + +Generated at: 2026-04-02T22:12:56 +Questions file: X:\1C\NDC_1C\docs\ADDRESS\question_sets\temp_gate_block_probe_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 +Strict policy: semantic + +## Totals +- questions_total: 2 +- ok_200_count: 2 +- semantic_pass_count: 1 +- semantic_pass_rate: 0.5 +- route_pass_count: 1 +- route_pass_rate: 0.5 +- strict_pass_count: 1 +- strict_pass_rate: 0.5 +- factual_count: 1 +- partial_coverage_count: 0 +- clarification_required_count: 1 +- http_error_count: 0 +- llm_decomposition_attempted_count: 2 +- llm_decomposition_applied_count: 0 +- llm_fallback_count: 0 +- llm_fallback_rate: 0.0 +- tool_gate_blocked_count: 1 +- tool_gate_blocked_rate: 0.5 +- avg_elapsed_ms: 9280 + +## Files +- run_summary.json +- full_live_results.json +- failures_only.json diff --git a/docs/ADDRESS/runs/2026-04-02_Address_GateBlock_Probe_WithMetrics_02/failures_only.json b/docs/ADDRESS/runs/2026-04-02_Address_GateBlock_Probe_WithMetrics_02/failures_only.json new file mode 100644 index 0000000..c04b85a --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_GateBlock_Probe_WithMetrics_02/failures_only.json @@ -0,0 +1,429 @@ +[ + { + "index": 1, + "id": "G001", + "question": "привет как дела", + "session": null, + "session_id": "asst-2026-04-02_Address_GateBlock_Probe_WithMetrics_02-g001", + "status_code": 200, + "ok": true, + "elapsed_ms": 13029, + "reply_type": "clarification_required", + "trace_id": "7eMBTZk2jJHzM1", + "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.", + "assistant_reply_first_line": "Коротко: Наиболее вероятный механизм проблемы подтвержден частично и требует первичной проверки. Что сломано:", + "expected_intent": null, + "actual_intent": null, + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": null, + "mode_match": false, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": false, + "route_pass": false, + "route_health": "blocked_clarification", + "strict_policy": "semantic", + "strict_pass": false, + "selected_recipe": null, + "missing_required_filters": null, + "match_failure_stage": null, + "match_failure_reason": null, + "rows_fetched": null, + "rows_matched": null, + "mcp_call_status": null, + "limited_reason_category": null, + "llm_decomposition_attempted": true, + "llm_decomposition_applied": null, + "llm_decomposition_reason": null, + "llm_canonical_candidate_detected": null, + "fallback_rule_hit": null, + "tool_gate_decision": "skip_address_lane", + "tool_gate_reason": "no_address_signal_after_l0", + "predecompose_contract_intent": null, + "predecompose_contract_aggregation_profile": null, + "predecompose_contract_period_scope": null, + "debug_payload": { + "trace_id": "7eMBTZk2jJHzM1", + "prompt_version": "address_query_runtime_v1", + "schema_version": "v1", + "fallback_type": "clarification", + "route_summary": null, + "fragments": [], + "requirements_extracted": [ + { + "requirement_id": "R1", + "source_fragment_id": null, + "requirement_text": "привет как дела", + "subject_tokens": [], + "status": "clarification_needed", + "route": null + } + ], + "coverage_report": { + "requirements_total": 1, + "requirements_covered": 0, + "requirements_uncovered": [], + "requirements_partially_covered": [], + "clarification_needed_for": [ + "R1" + ], + "out_of_scope_requirements": [] + }, + "routes": [], + "retrieval_status": [], + "retrieval_results": [], + "answer_grounding_check": { + "status": "no_grounded_answer", + "route_subject_match": true, + "missing_requirements": [ + "R1" + ], + "reasons": [ + "Ни одно требование не получило подтвержденного покрытия.", + "Нет explainable-сигналов why_included в результатах выборки.", + "Недостаточно покрытия required anchors для claim-bound grounding.", + "Недостаточно допустимого evidence для обоснованного ответа.", + "Targeted evidence acquisition РЅРµ дал допустимых попаданий РїРѕ claim target path." + ], + "why_included_summary": [], + "selection_reason_summary": [] + }, + "dropped_intent_segments": [], + "question_type_class": "why_breaks", + "company_anchors": { + "contract_numbers": [], + "document_numbers": [], + "dates": [], + "amounts": [], + "accounts": [], + "periods": [], + "document_types": [], + "all": [] + }, + "business_scope_raw": [], + "business_scope_resolved": [ + "company_specific_accounting" + ], + "company_grounding_applied": true, + "scope_resolution_reason": [ + "settlement_claim_company_scope_recovery" + ], + "company_scope_resolution_reason": [ + "settlement_claim_company_scope_recovery" + ], + "raw_time_anchor": null, + "raw_time_scope": null, + "resolved_time_anchor": null, + "resolved_primary_period": null, + "effective_primary_period": null, + "temporal_guard_input": null, + "temporal_alignment_status": "conflicting", + "temporal_resolution_source": "normalized_time_scope:missing", + "temporal_guard_basis": "none", + "temporal_guard_applied": false, + "temporal_guard_outcome": "passed", + "temporal_guard": { + "raw_time_anchor": null, + "raw_time_scope": null, + "resolved_time_anchor": null, + "resolved_primary_period": null, + "effective_primary_period": null, + "temporal_guard_input": null, + "temporal_alignment_status": "conflicting", + "temporal_resolution_source": "normalized_time_scope:missing", + "temporal_guard_basis": "none", + "temporal_guard_applied": false, + "temporal_guard_outcome": "passed", + "primary_period_window": null, + "allowed_context_window": null, + "controlled_temporal_expansion_enabled": false, + "context_expansion_reasons_allowed": [ + "prehistory", + "carryover", + "post_period_closure", + "long_running_contract_context" + ], + "normalized_anchor_drift_detected": false, + "reason_codes": [ + "missing_resolved_primary_period" + ] + }, + "raw_numeric_tokens": [], + "classified_numeric_tokens": [], + "rejected_as_non_accounts": [], + "resolved_account_anchors": [], + "domain_polarity_guard": { + "applied": false, + "polarity": "not_applicable", + "outcome": "not_applicable", + "supplier_score": 0, + "customer_score": 0, + "account_scope": [], + "raw_numeric_tokens": [], + "classified_numeric_tokens": [], + "rejected_as_non_accounts": [], + "resolved_account_anchors": [], + "rejected_problem_units": 0, + "rejected_evidence": 0, + "critical_contradiction": false, + "reason_codes": [] + }, + "claim_anchor_audit": { + "claim_type": "prove_settlement_closure_state", + "settlement_role": "unknown", + "settlement_role_resolution_reason": [ + "settlement_role_resolved_unknown" + ], + "polarity_resolution_status": "unknown", + "required_anchors": [ + "period", + "account_scope", + "counterparty_scope_or_contract", + "closure_signal" + ], + "resolved_anchors": { + "period": [], + "account_scope": [], + "amounts": [], + "contract": [], + "document_numbers": [], + "document_types": [], + "counterparty_scope": [], + "advance_signal": [], + "closure_signal": [], + "vat_signal": [], + "chain_signal": [], + "close_signal": [], + "cost_scope": [], + "rbp_signal": [], + "writeoff_signal": [], + "fixed_asset_signal": [], + "amortization_signal": [], + "expected_fa_set": [], + "actual_fa_set": [] + }, + "missing_anchors": [ + "period", + "account_scope", + "counterparty_scope_or_contract", + "closure_signal" + ], + "claim_anchor_resolution_rate": 0, + "primary_period": null, + "allowed_context_window": null, + "context_expansion_reasons_allowed": [ + "prehistory", + "carryover", + "post_period_closure", + "long_running_contract_context" + ], + "reason_codes": [ + "claim_missing_required_anchors", + "claim_anchor_resolution_low", + "unresolved_supplier_customer_polarity" + ] + }, + "settlement_role": "unknown", + "settlement_role_resolution_reason": [ + "settlement_role_resolved_unknown" + ], + "polarity_resolution_status": "unknown", + "targeted_evidence_acquisition": { + "claim_type": "prove_settlement_closure_state", + "required_checks": [ + "payment_document_found", + "contract_matched", + "settlement_object_matched", + "closing_document_found", + "register_closure_entry_found", + "posting_link_found" + ], + "check_status": { + "payment_document_found": "not_found", + "contract_matched": "not_found", + "settlement_object_matched": "not_found", + "closing_document_found": "not_found", + "register_closure_entry_found": "not_found", + "posting_link_found": "not_found" + }, + "targeted_item_hits": 0, + "targeted_evidence_hits": 0, + "targeted_evidence_hit_rate": 0, + "targeted_evidence_source_refs": [], + "reason_codes": [ + "targeted_evidence_not_found", + "targeted_evidence_hit_rate_low" + ] + }, + "evidence_admissibility_gate": { + "candidate_evidence_total": 0, + "admissible_evidence_count": 0, + "rejected_evidence_count": 0, + "rejected_item_count": 0, + "reject_breakdown": { + "wrong_period": 0, + "wrong_domain": 0, + "wrong_account_scope": 0, + "weak_source_mapping": 0, + "zero_live_match": 0, + "future_dated_or_out_of_window": 0 + }, + "category_breakdown": { + "hard_evidence": 0, + "supporting_signal": 0, + "inadmissible_noise": 0 + }, + "reason_codes": [ + "no_admissible_evidence_for_grounded_answer" + ] + }, + "eligibility_time_basis": "none", + "grounded_answer_eligibility_guard": { + "eligible": false, + "temporal_passed": true, + "eligibility_time_basis": "none", + "business_scope_passed": true, + "polarity_passed": true, + "claim_anchors_passed": false, + "claim_anchor_resolution_rate": 0, + "missing_required_anchors": 4, + "admissible_evidence_count": 0, + "critical_contradiction": false, + "outcome": "limited_or_insufficient_evidence", + "grounding_mode": "limited_or_insufficient_evidence", + "reason_codes": [ + "claim_anchor_coverage_insufficient", + "admissible_evidence_count_zero", + "targeted_evidence_hit_rate_zero" + ] + }, + "problem_centric_answer_applied": false, + "problem_units_used_count": 0, + "problem_answer_mode": "stage1_policy_v11", + "address_llm_predecompose_attempted": true, + "address_llm_predecompose_applied": false, + "address_llm_predecompose_reason": "no_usable_fragment", + "address_llm_predecompose_provider": "local", + "address_fallback_rule_hit": null, + "address_tool_gate_decision": "skip_address_lane", + "address_tool_gate_reason": "no_address_signal_after_l0", + "address_llm_predecompose_contract": { + "schema_version": "address_llm_predecompose_contract_v1", + "source_message": "привет как дела", + "canonical_message": "привет как дела", + "mode": "unsupported", + "mode_confidence": "low", + "query_shape": "UNKNOWN", + "query_shape_confidence": "low", + "intent": "unknown", + "intent_confidence": "low", + "entities": { + "account": null, + "counterparty": null, + "contract": null, + "document_type": null, + "document_ref": null, + "organization": null + }, + "period": { + "scope": "unspecified", + "period_from": null, + "period_to": null, + "as_of_date": null, + "has_explicit_period": false + }, + "aggregation_profile": "unknown" + }, + "answer_structure_v11": { + "schema_version": "answer_structure_v1_1", + "answer_summary": "Нужны уточнения: без сужения фокуса надежный вывод невозможен.", + "direct_answer": "Есть признаки проблемы, но без уточнений по периоду и объекту вывод ненадежен.", + "mechanism_block": { + "status": "unresolved", + "mechanism_notes": [], + "limitation_reason_codes": [] + }, + "evidence_block": { + "evidence_ids": [], + "source_refs": [], + "mechanism_notes": [], + "coverage_note": "coverage_partial_or_limited" + }, + "uncertainty_block": { + "open_uncertainties": [ + "R1", + "missing_anchor:period", + "missing_anchor:account", + "missing_anchor:document_or_object", + "missing_anchor:counterparty" + ], + "limitations": [ + "Ни одно требование не получило подтвержденного покрытия.", + "Нет explainable-сигналов why_included в результатах выборки.", + "Недостаточно покрытия required anchors для claim-bound grounding.", + "Недостаточно допустимого evidence для обоснованного ответа.", + "Targeted evidence acquisition РЅРµ дал допустимых попаданий РїРѕ claim target path." + ] + }, + "next_step_block": { + "recommended_actions": [ + "Дайте недостающие СЏРєРѕСЂСЏ (период/счет/объект), иначе сильный factual вывод невозможен." + ], + "clarification_questions": [ + "Уточните период проверки (например, июль 2020).", + "Уточните счет или РіСЂСѓРїРїСѓ счетов (например, 19, 60, 62).", + "Укажите документ/GUID/конкретный объект для трассировки.", + "Укажите контрагента или РіСЂСѓРїРїСѓ контрагентов.", + "Закройте уточнения для требований: R1." + ] + } + }, + "investigation_state_snapshot": { + "schema_version": "investigation_state_v1", + "session_id": "asst-2026-04-02_Address_GateBlock_Probe_WithMetrics_02-g001", + "status": "active", + "turn_index": 1, + "updated_at": "2026-04-02T19:12:50.522Z", + "question_id": "msg-v7LY-ucCiX", + "question_scope_id": "s:привет как дела", + "scope_origin": "underspecified", + "focus": { + "domain": null, + "period": null, + "primary_accounts": [], + "active_query_subject": "привет как дела" + }, + "narrowing_status": "unknown", + "evidence_refs": [], + "open_uncertainties": [ + "clarify:R1" + ], + "last_answer_mode": "clarification_required", + "followup_context": { + "previous_question_id": null, + "last_user_message": "привет как дела", + "referenced_requirement_ids": [ + "R1" + ], + "active_domain": null, + "active_requirement_ids": [ + "R1" + ], + "uncovered_requirement_ids": [ + "R1" + ], + "last_problem_unit_id": null, + "settlement_next_actions": [], + "evidence_summary": [], + "question_scope_id": "s:привет как дела", + "scope_origin": "underspecified" + }, + "query_mode_hint": "investigation_candidate" + }, + "normalized": null + }, + "error_code": null, + "error_message": null + } +] diff --git a/docs/ADDRESS/runs/2026-04-02_Address_GateBlock_Probe_WithMetrics_02/full_live_results.json b/docs/ADDRESS/runs/2026-04-02_Address_GateBlock_Probe_WithMetrics_02/full_live_results.json new file mode 100644 index 0000000..6af996e --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_GateBlock_Probe_WithMetrics_02/full_live_results.json @@ -0,0 +1,708 @@ +{ + "run_id": "2026-04-02_Address_GateBlock_Probe_WithMetrics_02", + "generated_at": "2026-04-02T22:12:56", + "summary": { + "run_id": "2026-04-02_Address_GateBlock_Probe_WithMetrics_02", + "generated_at": "2026-04-02T22:12:56", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\temp_gate_block_probe_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", + "strict_policy": "semantic", + "totals": { + "questions_total": 2, + "ok_200_count": 2, + "semantic_pass_count": 1, + "semantic_pass_rate": 0.5, + "route_pass_count": 1, + "route_pass_rate": 0.5, + "strict_pass_count": 1, + "strict_pass_rate": 0.5, + "factual_count": 1, + "partial_coverage_count": 0, + "clarification_required_count": 1, + "http_error_count": 0, + "llm_decomposition_attempted_count": 2, + "llm_decomposition_applied_count": 0, + "llm_fallback_count": 0, + "llm_fallback_rate": 0.0, + "tool_gate_blocked_count": 1, + "tool_gate_blocked_rate": 0.5, + "avg_elapsed_ms": 9280 + }, + "distributions": { + "reply_type": { + "clarification_required": 1, + "factual": 1 + }, + "actual_intent": { + "None": 1, + "counterparty_activity_lifecycle": 1 + }, + "actual_mode": { + "None": 1, + "address_query": 1 + }, + "mcp_call_status": { + "None": 1, + "matched_non_empty": 1 + }, + "limited_reason_category": {}, + "route_health": { + "blocked_clarification": 1, + "ok_or_factual": 1 + }, + "tool_gate_decision": { + "skip_address_lane": 1, + "run_address_lane": 1 + }, + "tool_gate_reason": { + "no_address_signal_after_l0": 1, + "address_mode_classifier_detected": 1 + } + }, + "address_llm_predecompose_metrics": { + "overall": { + "llm_attempted": 2, + "llm_applied": 0, + "fallback_used": 0, + "fallback_rate": 0.0, + "tool_gate_blocked": 1, + "gate_block_rate": 0.5 + }, + "by_intent": { + "unknown": { + "total": 1, + "llm_attempted": 1, + "llm_applied": 0, + "fallback_used": 0, + "tool_gate_blocked": 1, + "fallback_rate": 0.0, + "gate_block_rate": 1.0 + }, + "counterparty_activity_lifecycle": { + "total": 1, + "llm_attempted": 1, + "llm_applied": 0, + "fallback_used": 0, + "tool_gate_blocked": 0, + "fallback_rate": 0.0, + "gate_block_rate": 0.0 + } + } + } + }, + "rows": [ + { + "index": 1, + "id": "G001", + "question": "привет как дела", + "session": null, + "session_id": "asst-2026-04-02_Address_GateBlock_Probe_WithMetrics_02-g001", + "status_code": 200, + "ok": true, + "elapsed_ms": 13029, + "reply_type": "clarification_required", + "trace_id": "7eMBTZk2jJHzM1", + "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.", + "assistant_reply_first_line": "Коротко: Наиболее вероятный механизм проблемы подтвержден частично и требует первичной проверки. Что сломано:", + "expected_intent": null, + "actual_intent": null, + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": null, + "mode_match": false, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": false, + "route_pass": false, + "route_health": "blocked_clarification", + "strict_policy": "semantic", + "strict_pass": false, + "selected_recipe": null, + "missing_required_filters": null, + "match_failure_stage": null, + "match_failure_reason": null, + "rows_fetched": null, + "rows_matched": null, + "mcp_call_status": null, + "limited_reason_category": null, + "llm_decomposition_attempted": true, + "llm_decomposition_applied": null, + "llm_decomposition_reason": null, + "llm_canonical_candidate_detected": null, + "fallback_rule_hit": null, + "tool_gate_decision": "skip_address_lane", + "tool_gate_reason": "no_address_signal_after_l0", + "predecompose_contract_intent": null, + "predecompose_contract_aggregation_profile": null, + "predecompose_contract_period_scope": null, + "debug_payload": { + "trace_id": "7eMBTZk2jJHzM1", + "prompt_version": "address_query_runtime_v1", + "schema_version": "v1", + "fallback_type": "clarification", + "route_summary": null, + "fragments": [], + "requirements_extracted": [ + { + "requirement_id": "R1", + "source_fragment_id": null, + "requirement_text": "привет как дела", + "subject_tokens": [], + "status": "clarification_needed", + "route": null + } + ], + "coverage_report": { + "requirements_total": 1, + "requirements_covered": 0, + "requirements_uncovered": [], + "requirements_partially_covered": [], + "clarification_needed_for": [ + "R1" + ], + "out_of_scope_requirements": [] + }, + "routes": [], + "retrieval_status": [], + "retrieval_results": [], + "answer_grounding_check": { + "status": "no_grounded_answer", + "route_subject_match": true, + "missing_requirements": [ + "R1" + ], + "reasons": [ + "Ни одно требование не получило подтвержденного покрытия.", + "Нет explainable-сигналов why_included в результатах выборки.", + "Недостаточно покрытия required anchors для claim-bound grounding.", + "Недостаточно допустимого evidence для обоснованного ответа.", + "Targeted evidence acquisition РЅРµ дал допустимых попаданий РїРѕ claim target path." + ], + "why_included_summary": [], + "selection_reason_summary": [] + }, + "dropped_intent_segments": [], + "question_type_class": "why_breaks", + "company_anchors": { + "contract_numbers": [], + "document_numbers": [], + "dates": [], + "amounts": [], + "accounts": [], + "periods": [], + "document_types": [], + "all": [] + }, + "business_scope_raw": [], + "business_scope_resolved": [ + "company_specific_accounting" + ], + "company_grounding_applied": true, + "scope_resolution_reason": [ + "settlement_claim_company_scope_recovery" + ], + "company_scope_resolution_reason": [ + "settlement_claim_company_scope_recovery" + ], + "raw_time_anchor": null, + "raw_time_scope": null, + "resolved_time_anchor": null, + "resolved_primary_period": null, + "effective_primary_period": null, + "temporal_guard_input": null, + "temporal_alignment_status": "conflicting", + "temporal_resolution_source": "normalized_time_scope:missing", + "temporal_guard_basis": "none", + "temporal_guard_applied": false, + "temporal_guard_outcome": "passed", + "temporal_guard": { + "raw_time_anchor": null, + "raw_time_scope": null, + "resolved_time_anchor": null, + "resolved_primary_period": null, + "effective_primary_period": null, + "temporal_guard_input": null, + "temporal_alignment_status": "conflicting", + "temporal_resolution_source": "normalized_time_scope:missing", + "temporal_guard_basis": "none", + "temporal_guard_applied": false, + "temporal_guard_outcome": "passed", + "primary_period_window": null, + "allowed_context_window": null, + "controlled_temporal_expansion_enabled": false, + "context_expansion_reasons_allowed": [ + "prehistory", + "carryover", + "post_period_closure", + "long_running_contract_context" + ], + "normalized_anchor_drift_detected": false, + "reason_codes": [ + "missing_resolved_primary_period" + ] + }, + "raw_numeric_tokens": [], + "classified_numeric_tokens": [], + "rejected_as_non_accounts": [], + "resolved_account_anchors": [], + "domain_polarity_guard": { + "applied": false, + "polarity": "not_applicable", + "outcome": "not_applicable", + "supplier_score": 0, + "customer_score": 0, + "account_scope": [], + "raw_numeric_tokens": [], + "classified_numeric_tokens": [], + "rejected_as_non_accounts": [], + "resolved_account_anchors": [], + "rejected_problem_units": 0, + "rejected_evidence": 0, + "critical_contradiction": false, + "reason_codes": [] + }, + "claim_anchor_audit": { + "claim_type": "prove_settlement_closure_state", + "settlement_role": "unknown", + "settlement_role_resolution_reason": [ + "settlement_role_resolved_unknown" + ], + "polarity_resolution_status": "unknown", + "required_anchors": [ + "period", + "account_scope", + "counterparty_scope_or_contract", + "closure_signal" + ], + "resolved_anchors": { + "period": [], + "account_scope": [], + "amounts": [], + "contract": [], + "document_numbers": [], + "document_types": [], + "counterparty_scope": [], + "advance_signal": [], + "closure_signal": [], + "vat_signal": [], + "chain_signal": [], + "close_signal": [], + "cost_scope": [], + "rbp_signal": [], + "writeoff_signal": [], + "fixed_asset_signal": [], + "amortization_signal": [], + "expected_fa_set": [], + "actual_fa_set": [] + }, + "missing_anchors": [ + "period", + "account_scope", + "counterparty_scope_or_contract", + "closure_signal" + ], + "claim_anchor_resolution_rate": 0, + "primary_period": null, + "allowed_context_window": null, + "context_expansion_reasons_allowed": [ + "prehistory", + "carryover", + "post_period_closure", + "long_running_contract_context" + ], + "reason_codes": [ + "claim_missing_required_anchors", + "claim_anchor_resolution_low", + "unresolved_supplier_customer_polarity" + ] + }, + "settlement_role": "unknown", + "settlement_role_resolution_reason": [ + "settlement_role_resolved_unknown" + ], + "polarity_resolution_status": "unknown", + "targeted_evidence_acquisition": { + "claim_type": "prove_settlement_closure_state", + "required_checks": [ + "payment_document_found", + "contract_matched", + "settlement_object_matched", + "closing_document_found", + "register_closure_entry_found", + "posting_link_found" + ], + "check_status": { + "payment_document_found": "not_found", + "contract_matched": "not_found", + "settlement_object_matched": "not_found", + "closing_document_found": "not_found", + "register_closure_entry_found": "not_found", + "posting_link_found": "not_found" + }, + "targeted_item_hits": 0, + "targeted_evidence_hits": 0, + "targeted_evidence_hit_rate": 0, + "targeted_evidence_source_refs": [], + "reason_codes": [ + "targeted_evidence_not_found", + "targeted_evidence_hit_rate_low" + ] + }, + "evidence_admissibility_gate": { + "candidate_evidence_total": 0, + "admissible_evidence_count": 0, + "rejected_evidence_count": 0, + "rejected_item_count": 0, + "reject_breakdown": { + "wrong_period": 0, + "wrong_domain": 0, + "wrong_account_scope": 0, + "weak_source_mapping": 0, + "zero_live_match": 0, + "future_dated_or_out_of_window": 0 + }, + "category_breakdown": { + "hard_evidence": 0, + "supporting_signal": 0, + "inadmissible_noise": 0 + }, + "reason_codes": [ + "no_admissible_evidence_for_grounded_answer" + ] + }, + "eligibility_time_basis": "none", + "grounded_answer_eligibility_guard": { + "eligible": false, + "temporal_passed": true, + "eligibility_time_basis": "none", + "business_scope_passed": true, + "polarity_passed": true, + "claim_anchors_passed": false, + "claim_anchor_resolution_rate": 0, + "missing_required_anchors": 4, + "admissible_evidence_count": 0, + "critical_contradiction": false, + "outcome": "limited_or_insufficient_evidence", + "grounding_mode": "limited_or_insufficient_evidence", + "reason_codes": [ + "claim_anchor_coverage_insufficient", + "admissible_evidence_count_zero", + "targeted_evidence_hit_rate_zero" + ] + }, + "problem_centric_answer_applied": false, + "problem_units_used_count": 0, + "problem_answer_mode": "stage1_policy_v11", + "address_llm_predecompose_attempted": true, + "address_llm_predecompose_applied": false, + "address_llm_predecompose_reason": "no_usable_fragment", + "address_llm_predecompose_provider": "local", + "address_fallback_rule_hit": null, + "address_tool_gate_decision": "skip_address_lane", + "address_tool_gate_reason": "no_address_signal_after_l0", + "address_llm_predecompose_contract": { + "schema_version": "address_llm_predecompose_contract_v1", + "source_message": "привет как дела", + "canonical_message": "привет как дела", + "mode": "unsupported", + "mode_confidence": "low", + "query_shape": "UNKNOWN", + "query_shape_confidence": "low", + "intent": "unknown", + "intent_confidence": "low", + "entities": { + "account": null, + "counterparty": null, + "contract": null, + "document_type": null, + "document_ref": null, + "organization": null + }, + "period": { + "scope": "unspecified", + "period_from": null, + "period_to": null, + "as_of_date": null, + "has_explicit_period": false + }, + "aggregation_profile": "unknown" + }, + "answer_structure_v11": { + "schema_version": "answer_structure_v1_1", + "answer_summary": "Нужны уточнения: без сужения фокуса надежный вывод невозможен.", + "direct_answer": "Есть признаки проблемы, но без уточнений по периоду и объекту вывод ненадежен.", + "mechanism_block": { + "status": "unresolved", + "mechanism_notes": [], + "limitation_reason_codes": [] + }, + "evidence_block": { + "evidence_ids": [], + "source_refs": [], + "mechanism_notes": [], + "coverage_note": "coverage_partial_or_limited" + }, + "uncertainty_block": { + "open_uncertainties": [ + "R1", + "missing_anchor:period", + "missing_anchor:account", + "missing_anchor:document_or_object", + "missing_anchor:counterparty" + ], + "limitations": [ + "Ни одно требование не получило подтвержденного покрытия.", + "Нет explainable-сигналов why_included в результатах выборки.", + "Недостаточно покрытия required anchors для claim-bound grounding.", + "Недостаточно допустимого evidence для обоснованного ответа.", + "Targeted evidence acquisition РЅРµ дал допустимых попаданий РїРѕ claim target path." + ] + }, + "next_step_block": { + "recommended_actions": [ + "Дайте недостающие СЏРєРѕСЂСЏ (период/счет/объект), иначе сильный factual вывод невозможен." + ], + "clarification_questions": [ + "Уточните период проверки (например, июль 2020).", + "Уточните счет или РіСЂСѓРїРїСѓ счетов (например, 19, 60, 62).", + "Укажите документ/GUID/конкретный объект для трассировки.", + "Укажите контрагента или РіСЂСѓРїРїСѓ контрагентов.", + "Закройте уточнения для требований: R1." + ] + } + }, + "investigation_state_snapshot": { + "schema_version": "investigation_state_v1", + "session_id": "asst-2026-04-02_Address_GateBlock_Probe_WithMetrics_02-g001", + "status": "active", + "turn_index": 1, + "updated_at": "2026-04-02T19:12:50.522Z", + "question_id": "msg-v7LY-ucCiX", + "question_scope_id": "s:привет как дела", + "scope_origin": "underspecified", + "focus": { + "domain": null, + "period": null, + "primary_accounts": [], + "active_query_subject": "привет как дела" + }, + "narrowing_status": "unknown", + "evidence_refs": [], + "open_uncertainties": [ + "clarify:R1" + ], + "last_answer_mode": "clarification_required", + "followup_context": { + "previous_question_id": null, + "last_user_message": "привет как дела", + "referenced_requirement_ids": [ + "R1" + ], + "active_domain": null, + "active_requirement_ids": [ + "R1" + ], + "uncovered_requirement_ids": [ + "R1" + ], + "last_problem_unit_id": null, + "settlement_next_actions": [], + "evidence_summary": [], + "question_scope_id": "s:привет как дела", + "scope_origin": "underspecified" + }, + "query_mode_hint": "investigation_candidate" + }, + "normalized": null + }, + "error_code": null, + "error_message": null + }, + { + "index": 2, + "id": "G002", + "question": "выведи список заказчиков за все время", + "session": null, + "session_id": "asst-2026-04-02_Address_GateBlock_Probe_WithMetrics_02-g002", + "status_code": 200, + "ok": true, + "elapsed_ms": 5531, + "reply_type": "factual", + "trace_id": "address-wcgmL2bSK5", + "assistant_reply": "Собран профиль активности заказчиков (bank-doc activity aggregate).\nСтрок агрегата: 46.\nАктивные заказчики за все время: 46.\n1. ГКУ | операций: 44 | последняя активность: 2019-12-25T16:09:27Z\n2. ГБУ \\Многофункциональный центр\\ | операций: 38 | последняя активность: 2018-12-04T12:00:01Z\n3. СБЕРБАНК, ПАО | операций: 36 | последняя активность: 2020-03-02T12:00:04Z\n4. Комитет государственных услуг г. Москвы | операций: 27 | последняя активность: 2015-05-19T12:00:00Z\n5. Группа | операций: 26 | последняя активность: 2021-11-10T12:00:07Z\n6. НОРТОН | операций: 14 | последняя активность: 2022-01-20T12:00:05Z\n7. МНН | операций: 14 | последняя активность: 2022-01-20T12:00:04Z\n8. МОСКОВСКИЙ ФИЛИАЛ ООО КБ\\МЕГАПОЛИС\\ | операций: 11 | последняя активность: 2019-07-31T12:00:22Z\n9. Департамент капитального ремонта города Москвы. | операций: 10 | последняя активность: 2019-09-16T11:00:00Z\n10. Департамент финансов города Москвы | операций: 10 | последняя активность: 2015-12-29T12:00:03Z\n11. Лайсвуд, ООО | операций: 7 | последняя активность: 2020-03-02T12:00:02Z\n12. Единая электронная торговая площадка, АО | операций: 7 | последняя активность: 2018-08-10T12:00:00Z\n13. ЭталонМебель | операций: 6 | последняя активность: 2020-04-27T12:00:00Z\n14. ИП Калинин Н.М. | операций: 5 | последняя активность: 2020-03-02T12:00:03Z\n15. Элмаш-К | операций: 5 | последняя активность: 2018-02-06T12:32:17Z\n16. ГТК-Интер, ООО | операций: 5 | последняя активность: 2016-07-07T12:00:00Z\n17. Гамма-мебель, ООО | операций: 4 | последняя активность: 2020-08-11T13:15:30Z\n18. Смарт | операций: 4 | последняя активность: 2020-02-07T12:00:03Z\n19. Сбербанк-АСТ, ЗАО | операций: 4 | последняя активность: 2017-07-26T12:00:00Z\n20. КБ \\НЕФТЯНОЙ АЛЬЯНС\\ (ПАО) (Расчетный) | операций: 4 | последняя активность: 2015-02-05T12:00:06Z\n21. ЗАО Ремонтно-строительная фирма «Ремстройсервис» | операций: 3 | последняя активность: 2020-06-03T00:00:02Z\n22. ПрофТренд,ООО | операций: 3 | последняя активность: 2020-05-15T12:00:02Z\n23. ГБПОУ г. Москвы \\Московская театральная школа Олега Табакова\\ | операций: 3 | последняя активность: 2019-10-25T12:00:00Z\n24. Газпром авиа, ООО | операций: 3 | последняя активность: 2016-11-29T12:00:01Z\n25. ФГКУ \\Центрреставрация\\ | операций: 3 | последняя активность: 2015-12-30T12:00:03Z\n26. РАЙМ, ООО | операций: 3 | последняя активность: 2015-08-13T12:00:00Z\n27. СервисКонсалт, ООО | операций: 2 | последняя активность: 2022-04-13T12:00:00Z\n30. УФК по г. Москве (ГУ - | операций: 2 | последняя активность: 2018-12-12T12:00:01Z\n31. Чепурнов П.Д. | операций: 1 | последняя активность: 2022-01-20T12:00:03Z\n32. «Олимпстрой» | операций: 1 | последняя активность: 2020-07-13T12:00:00Z\n33. КПК \\Столичная Сберегательная компания\\ | операций: 1 | последняя активность: 2019-04-17T12:00:00Z\n34. РТС-тендер | операций: 1 | последняя активность: 2018-12-17T00:00:00Z\n35. ФГБУ «УЗС» | операций: 1 | последняя активность: 2018-12-13T12:00:02Z\n36. АС \\ЕО | операций: 1 | последняя активность: 2018-01-15T13:25:36Z\n37. АкваСервис, ООО | операций: 1 | последняя активность: 2017-09-19T12:00:01Z\n38. ГБУ МФЦ города Москвы | операций: 1 | последняя активность: 2017-04-27T00:00:00Z\n39. \\Жуковка 51\\ | операций: 1 | последняя активность: 2017-04-10T16:50:38Z\n40. 0 | операций: 1 | последняя активность: 2017-03-02T12:00:00Z\n41. ФГБОУ ВО \\Московский государственный университет имени М.В. Ломоносова\\ | операций: 1 | последняя активность: 2016-11-25T00:00:00Z\n42. ДжетАэроКонцепт, ООО | операций: 1 | последняя активность: 2016-08-18T13:13:35Z\n43. УМ и автотранспорта, ЗАО | операций: 1 | последняя активность: 2015-12-24T12:00:00Z\n44. Межрегиональное операционное УФК | операций: 1 | последняя активность: 2015-11-12T12:00:00Z\n45. Банк ГПБ (АО) г. Москва | операций: 1 | последняя активность: 2015-10-30T12:00:03Z\n46. Спецстрой, ООО | операций: 1 | последняя активность: 2015-09-14T12:00:00Z", + "assistant_reply_first_line": "Собран профиль активности заказчиков (bank-doc activity aggregate).", + "expected_intent": null, + "actual_intent": "counterparty_activity_lifecycle", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "semantic", + "strict_pass": true, + "selected_recipe": "address_counterparty_activity_lifecycle_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 46, + "rows_matched": 46, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_attempted": true, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_drop", + "llm_canonical_candidate_detected": true, + "fallback_rule_hit": null, + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "predecompose_contract_intent": "counterparty_activity_lifecycle", + "predecompose_contract_aggregation_profile": "management_profile", + "predecompose_contract_period_scope": "all_time", + "debug_payload": { + "trace_id": "address-wcgmL2bSK5", + "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", + "counterparty_activity_lifecycle_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": "counterparty_activity_lifecycle", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_to": "2026-04-02" + }, + "missing_required_filters": [], + "selected_recipe": "address_counterparty_activity_lifecycle_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "matched_non_empty", + "rows_fetched": 46, + "raw_rows_received": 46, + "rows_after_account_scope": 46, + "rows_after_recipe_filter": 46, + "rows_materialized": 46, + "rows_matched": 46, + "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": "6fHCBOWbTqa1la", + "llm_decomposition_effective_message": "выведи список заказчиков за все время", + "llm_decomposition_reason": "normalized_fragment_rejected_intent_drop", + "llm_canonical_candidate_detected": true, + "llm_predecompose_contract": { + "schema_version": "address_llm_predecompose_contract_v1", + "source_message": "выведи список заказчиков за все время", + "canonical_message": "выведи список заказчиков за все время", + "mode": "address_query", + "mode_confidence": "high", + "query_shape": "UNKNOWN", + "query_shape_confidence": "low", + "intent": "counterparty_activity_lifecycle", + "intent_confidence": "high", + "entities": { + "account": null, + "counterparty": null, + "contract": null, + "document_type": null, + "document_ref": null, + "organization": null + }, + "period": { + "scope": "all_time", + "period_from": null, + "period_to": "2026-04-02", + "as_of_date": null, + "has_explicit_period": true + }, + "aggregation_profile": "management_profile" + }, + "fallback_rule_hit": null, + "sanitized_user_message": "выведи список заказчиков за все время", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "6fHCBOWbTqa1la", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "выведи список заказчиков за все время" + } + }, + "error_code": null, + "error_message": null + } + ] +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_GateBlock_Probe_WithMetrics_02/response_audit.md b/docs/ADDRESS/runs/2026-04-02_Address_GateBlock_Probe_WithMetrics_02/response_audit.md new file mode 100644 index 0000000..bcc07d8 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_GateBlock_Probe_WithMetrics_02/response_audit.md @@ -0,0 +1,6 @@ +# Response Audit: 2026-04-02_Address_GateBlock_Probe_WithMetrics_02 + +| id | strict | route_health | reply_type | intent | limited_reason | question | assistant_first_line | +|---|---|---|---|---|---|---|---| +| G001 | False | blocked_clarification | clarification_required | None | None | привет как дела | Коротко: Наиболее вероятный механизм проблемы подтвержден частично и требует первичной проверки. Что сломано: | +| G002 | True | ok_or_factual | factual | counterparty_activity_lifecycle | None | выведи список заказчиков за все время | Собран профиль активности заказчиков (bank-doc activity aggregate). | diff --git a/docs/ADDRESS/runs/2026-04-02_Address_GateBlock_Probe_WithMetrics_02/run_summary.json b/docs/ADDRESS/runs/2026-04-02_Address_GateBlock_Probe_WithMetrics_02/run_summary.json new file mode 100644 index 0000000..faeb063 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_GateBlock_Probe_WithMetrics_02/run_summary.json @@ -0,0 +1,92 @@ +{ + "run_id": "2026-04-02_Address_GateBlock_Probe_WithMetrics_02", + "generated_at": "2026-04-02T22:12:56", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\temp_gate_block_probe_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", + "strict_policy": "semantic", + "totals": { + "questions_total": 2, + "ok_200_count": 2, + "semantic_pass_count": 1, + "semantic_pass_rate": 0.5, + "route_pass_count": 1, + "route_pass_rate": 0.5, + "strict_pass_count": 1, + "strict_pass_rate": 0.5, + "factual_count": 1, + "partial_coverage_count": 0, + "clarification_required_count": 1, + "http_error_count": 0, + "llm_decomposition_attempted_count": 2, + "llm_decomposition_applied_count": 0, + "llm_fallback_count": 0, + "llm_fallback_rate": 0.0, + "tool_gate_blocked_count": 1, + "tool_gate_blocked_rate": 0.5, + "avg_elapsed_ms": 9280 + }, + "distributions": { + "reply_type": { + "clarification_required": 1, + "factual": 1 + }, + "actual_intent": { + "None": 1, + "counterparty_activity_lifecycle": 1 + }, + "actual_mode": { + "None": 1, + "address_query": 1 + }, + "mcp_call_status": { + "None": 1, + "matched_non_empty": 1 + }, + "limited_reason_category": {}, + "route_health": { + "blocked_clarification": 1, + "ok_or_factual": 1 + }, + "tool_gate_decision": { + "skip_address_lane": 1, + "run_address_lane": 1 + }, + "tool_gate_reason": { + "no_address_signal_after_l0": 1, + "address_mode_classifier_detected": 1 + } + }, + "address_llm_predecompose_metrics": { + "overall": { + "llm_attempted": 2, + "llm_applied": 0, + "fallback_used": 0, + "fallback_rate": 0.0, + "tool_gate_blocked": 1, + "gate_block_rate": 0.5 + }, + "by_intent": { + "unknown": { + "total": 1, + "llm_attempted": 1, + "llm_applied": 0, + "fallback_used": 0, + "tool_gate_blocked": 1, + "fallback_rate": 0.0, + "gate_block_rate": 1.0 + }, + "counterparty_activity_lifecycle": { + "total": 1, + "llm_attempted": 1, + "llm_applied": 0, + "fallback_used": 0, + "tool_gate_blocked": 0, + "fallback_rate": 0.0, + "gate_block_rate": 0.0 + } + } + } +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterFix_01/README.md b/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterFix_01/README.md new file mode 100644 index 0000000..9ac7c0b --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterFix_01/README.md @@ -0,0 +1,28 @@ +# 2026-04-02_Address_General5_Live_Check_AfterFix_01 + +Generated at: 2026-04-02T19:27:58 +Questions file: X:\1C\NDC_1C\docs\ADDRESS\question_sets\temp_general5_live_check_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 +Strict policy: route + +## Totals +- questions_total: 5 +- ok_200_count: 5 +- semantic_pass_count: 5 +- semantic_pass_rate: 1.0 +- route_pass_count: 0 +- route_pass_rate: 0.0 +- strict_pass_count: 0 +- strict_pass_rate: 0.0 +- factual_count: 0 +- partial_coverage_count: 5 +- clarification_required_count: 0 +- http_error_count: 0 +- llm_decomposition_applied_count: 0 +- avg_elapsed_ms: 2632 + +## Files +- run_summary.json +- full_live_results.json +- failures_only.json diff --git a/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterFix_01/failures_only.json b/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterFix_01/failures_only.json new file mode 100644 index 0000000..e5f979a --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterFix_01/failures_only.json @@ -0,0 +1,673 @@ +[ + { + "index": 1, + "id": "Q1", + "question": "За какие годы в базе есть данные?", + "session": null, + "session_id": "asst-2026-04-02_Address_General5_Live_Check_AfterFix_01-q1", + "status_code": 200, + "ok": true, + "elapsed_ms": 962, + "reply_type": "partial_coverage", + "trace_id": "address-eW6Yb7i_tq", + "assistant_reply": "Не удалось выполнить адресный live-запрос в V1.\nПричина: live MCP вызов завершился ошибкой.\nЧто нужно уточнить: {ВнешняяОбработка.MCPToolkit.Форма.Форма.Форма(1989)}: Ошибка при вызове метода контекста (Выполнить): {(10, 24)}: Синтаксическая ошибка\nДвижения.Период <= <>ТЕКУЩАЯДАТА().", + "assistant_reply_first_line": "Не удалось выполнить адресный live-запрос в V1.", + "expected_intent": "period_coverage_profile", + "actual_intent": "period_coverage_profile", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": false, + "route_health": "blocked_execution_error", + "strict_policy": "route", + "strict_pass": false, + "selected_recipe": "address_period_coverage_profile_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 0, + "rows_matched": 0, + "mcp_call_status": "error", + "limited_reason_category": "execution_error", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-eW6Yb7i_tq", + "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": [ + "management_profile_signal_detected", + "shape_not_detected", + "period_coverage_profile_signal_detected", + "{ВнешняяОбработка.MCPToolkit.Форма.Форма.Форма(1989)}: Ошибка при вызове метода контекста (Выполнить): {(10, 24)}: Синтаксическая ошибка\nДвижения.Период <= <>ТЕКУЩАЯДАТА()" + ], + "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": "period_coverage_profile", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc" + }, + "missing_required_filters": [], + "selected_recipe": "address_period_coverage_profile_v1", + "mcp_call_status_legacy": "error", + "account_scope_mode": "preferred", + "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": "error", + "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": "UNKNOWN", + "limited_reason_category": "execution_error", + "response_type": "LIMITED_WITH_REASON", + "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": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + }, + "error_code": null, + "error_message": null + }, + { + "index": 2, + "id": "Q2", + "question": "Какой год самый активный по количеству документов?", + "session": null, + "session_id": "asst-2026-04-02_Address_General5_Live_Check_AfterFix_01-q2", + "status_code": 200, + "ok": true, + "elapsed_ms": 5072, + "reply_type": "partial_coverage", + "trace_id": "address-BKVNDThPUd", + "assistant_reply": "Не удалось выполнить адресный live-запрос в V1.\nПричина: live MCP вызов завершился ошибкой.\nЧто нужно уточнить: {ВнешняяОбработка.MCPToolkit.Форма.Форма.Форма(1989)}: Ошибка при вызове метода контекста (Выполнить): {(10, 24)}: Синтаксическая ошибка\nДвижения.Период <= <>ТЕКУЩАЯДАТА().", + "assistant_reply_first_line": "Не удалось выполнить адресный live-запрос в V1.", + "expected_intent": "period_coverage_profile", + "actual_intent": "period_coverage_profile", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": false, + "route_health": "blocked_execution_error", + "strict_policy": "route", + "strict_pass": false, + "selected_recipe": "address_period_coverage_profile_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 0, + "rows_matched": 0, + "mcp_call_status": "error", + "limited_reason_category": "execution_error", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-BKVNDThPUd", + "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": [ + "management_profile_signal_detected", + "document_list_signal_detected", + "period_coverage_profile_signal_detected", + "{ВнешняяОбработка.MCPToolkit.Форма.Форма.Форма(1989)}: Ошибка при вызове метода контекста (Выполнить): {(10, 24)}: Синтаксическая ошибка\nДвижения.Период <= <>ТЕКУЩАЯДАТА()" + ], + "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": "period_coverage_profile", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc" + }, + "missing_required_filters": [], + "selected_recipe": "address_period_coverage_profile_v1", + "mcp_call_status_legacy": "error", + "account_scope_mode": "preferred", + "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": "error", + "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": "UNKNOWN", + "limited_reason_category": "execution_error", + "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": "bgFD0eUh97bbae", + "llm_decomposition_effective_message": "Какой год самый активный по количеству документов?", + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "sanitized_user_message": "какой год самый активный по количеству документов?", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "bgFD0eUh97bbae", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "Какой год самый активный по количеству документов?" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 3, + "id": "Q3", + "question": "Какой месяц самый активный по количеству операций?", + "session": null, + "session_id": "asst-2026-04-02_Address_General5_Live_Check_AfterFix_01-q3", + "status_code": 200, + "ok": true, + "elapsed_ms": 1066, + "reply_type": "partial_coverage", + "trace_id": "address-lxBpVpL9YV", + "assistant_reply": "Не удалось выполнить адресный live-запрос в V1.\nПричина: live MCP вызов завершился ошибкой.\nЧто нужно уточнить: {ВнешняяОбработка.MCPToolkit.Форма.Форма.Форма(1989)}: Ошибка при вызове метода контекста (Выполнить): {(10, 24)}: Синтаксическая ошибка\nДвижения.Период <= <>ТЕКУЩАЯДАТА().", + "assistant_reply_first_line": "Не удалось выполнить адресный live-запрос в V1.", + "expected_intent": "period_coverage_profile", + "actual_intent": "period_coverage_profile", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": false, + "route_health": "blocked_execution_error", + "strict_policy": "route", + "strict_pass": false, + "selected_recipe": "address_period_coverage_profile_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 0, + "rows_matched": 0, + "mcp_call_status": "error", + "limited_reason_category": "execution_error", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-lxBpVpL9YV", + "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": [ + "management_profile_signal_detected", + "shape_not_detected", + "period_coverage_profile_signal_detected", + "{ВнешняяОбработка.MCPToolkit.Форма.Форма.Форма(1989)}: Ошибка при вызове метода контекста (Выполнить): {(10, 24)}: Синтаксическая ошибка\nДвижения.Период <= <>ТЕКУЩАЯДАТА()" + ], + "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": "period_coverage_profile", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc" + }, + "missing_required_filters": [], + "selected_recipe": "address_period_coverage_profile_v1", + "mcp_call_status_legacy": "error", + "account_scope_mode": "preferred", + "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": "error", + "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": "UNKNOWN", + "limited_reason_category": "execution_error", + "response_type": "LIMITED_WITH_REASON", + "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": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + }, + "error_code": null, + "error_message": null + }, + { + "index": 4, + "id": "Q4", + "question": "Какие типы документов используются чаще всего в базе?", + "session": null, + "session_id": "asst-2026-04-02_Address_General5_Live_Check_AfterFix_01-q4", + "status_code": 200, + "ok": true, + "elapsed_ms": 5058, + "reply_type": "partial_coverage", + "trace_id": "address-0_1nOMvz1f", + "assistant_reply": "Не удалось выполнить адресный live-запрос в V1.\nПричина: live MCP вызов завершился ошибкой.\nЧто нужно уточнить: {ВнешняяОбработка.MCPToolkit.Форма.Форма.Форма(1989)}: Ошибка при вызове метода контекста (Выполнить): {(10, 24)}: Синтаксическая ошибка\nДвижения.Период <= <>ТЕКУЩАЯДАТА().", + "assistant_reply_first_line": "Не удалось выполнить адресный live-запрос в V1.", + "expected_intent": "document_type_and_account_section_profile", + "actual_intent": "document_type_and_account_section_profile", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": false, + "route_health": "blocked_execution_error", + "strict_policy": "route", + "strict_pass": false, + "selected_recipe": "address_document_type_and_account_section_profile_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 0, + "rows_matched": 0, + "mcp_call_status": "error", + "limited_reason_category": "execution_error", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-0_1nOMvz1f", + "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", + "document_type_and_account_section_profile_signal_detected", + "{ВнешняяОбработка.MCPToolkit.Форма.Форма.Форма(1989)}: Ошибка при вызове метода контекста (Выполнить): {(10, 24)}: Синтаксическая ошибка\nДвижения.Период <= <>ТЕКУЩАЯДАТА()" + ], + "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": "document_type_and_account_section_profile", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc" + }, + "missing_required_filters": [], + "selected_recipe": "address_document_type_and_account_section_profile_v1", + "mcp_call_status_legacy": "error", + "account_scope_mode": "preferred", + "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": "error", + "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": "UNKNOWN", + "limited_reason_category": "execution_error", + "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": "KAAw7U8orkHpRG", + "llm_decomposition_effective_message": "Какие типы документов используются чаще всего в базе?", + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "sanitized_user_message": "какие типы документов используются чаще всего в базе?", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "KAAw7U8orkHpRG", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "Какие типы документов используются чаще всего в базе?" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 5, + "id": "Q5", + "question": "Какие разделы учета наиболее заполнены и какие почти не используются?", + "session": null, + "session_id": "asst-2026-04-02_Address_General5_Live_Check_AfterFix_01-q5", + "status_code": 200, + "ok": true, + "elapsed_ms": 1002, + "reply_type": "partial_coverage", + "trace_id": "address-0XdEJQTykP", + "assistant_reply": "Не удалось выполнить адресный live-запрос в V1.\nПричина: live MCP вызов завершился ошибкой.\nЧто нужно уточнить: {ВнешняяОбработка.MCPToolkit.Форма.Форма.Форма(1989)}: Ошибка при вызове метода контекста (Выполнить): {(10, 24)}: Синтаксическая ошибка\nДвижения.Период <= <>ТЕКУЩАЯДАТА().", + "assistant_reply_first_line": "Не удалось выполнить адресный live-запрос в V1.", + "expected_intent": "document_type_and_account_section_profile", + "actual_intent": "document_type_and_account_section_profile", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": false, + "route_health": "blocked_execution_error", + "strict_policy": "route", + "strict_pass": false, + "selected_recipe": "address_document_type_and_account_section_profile_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 0, + "rows_matched": 0, + "mcp_call_status": "error", + "limited_reason_category": "execution_error", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-0XdEJQTykP", + "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": [ + "management_profile_signal_detected", + "shape_not_detected", + "document_type_and_account_section_profile_signal_detected", + "{ВнешняяОбработка.MCPToolkit.Форма.Форма.Форма(1989)}: Ошибка при вызове метода контекста (Выполнить): {(10, 24)}: Синтаксическая ошибка\nДвижения.Период <= <>ТЕКУЩАЯДАТА()" + ], + "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": "document_type_and_account_section_profile", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc" + }, + "missing_required_filters": [], + "selected_recipe": "address_document_type_and_account_section_profile_v1", + "mcp_call_status_legacy": "error", + "account_scope_mode": "preferred", + "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": "error", + "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": "UNKNOWN", + "limited_reason_category": "execution_error", + "response_type": "LIMITED_WITH_REASON", + "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": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + }, + "error_code": null, + "error_message": null + } +] diff --git a/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterFix_01/full_live_results.json b/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterFix_01/full_live_results.json new file mode 100644 index 0000000..05f71a3 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterFix_01/full_live_results.json @@ -0,0 +1,724 @@ +{ + "run_id": "2026-04-02_Address_General5_Live_Check_AfterFix_01", + "generated_at": "2026-04-02T19:27:58", + "summary": { + "run_id": "2026-04-02_Address_General5_Live_Check_AfterFix_01", + "generated_at": "2026-04-02T19:27:58", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\temp_general5_live_check_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", + "strict_policy": "route", + "totals": { + "questions_total": 5, + "ok_200_count": 5, + "semantic_pass_count": 5, + "semantic_pass_rate": 1.0, + "route_pass_count": 0, + "route_pass_rate": 0.0, + "strict_pass_count": 0, + "strict_pass_rate": 0.0, + "factual_count": 0, + "partial_coverage_count": 5, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_applied_count": 0, + "avg_elapsed_ms": 2632 + }, + "distributions": { + "reply_type": { + "partial_coverage": 5 + }, + "actual_intent": { + "period_coverage_profile": 3, + "document_type_and_account_section_profile": 2 + }, + "actual_mode": { + "address_query": 5 + }, + "mcp_call_status": { + "error": 5 + }, + "limited_reason_category": { + "execution_error": 5 + }, + "route_health": { + "blocked_execution_error": 5 + } + } + }, + "rows": [ + { + "index": 1, + "id": "Q1", + "question": "За какие годы в базе есть данные?", + "session": null, + "session_id": "asst-2026-04-02_Address_General5_Live_Check_AfterFix_01-q1", + "status_code": 200, + "ok": true, + "elapsed_ms": 962, + "reply_type": "partial_coverage", + "trace_id": "address-eW6Yb7i_tq", + "assistant_reply": "Не удалось выполнить адресный live-запрос в V1.\nПричина: live MCP вызов завершился ошибкой.\nЧто нужно уточнить: {ВнешняяОбработка.MCPToolkit.Форма.Форма.Форма(1989)}: Ошибка при вызове метода контекста (Выполнить): {(10, 24)}: Синтаксическая ошибка\nДвижения.Период <= <>ТЕКУЩАЯДАТА().", + "assistant_reply_first_line": "Не удалось выполнить адресный live-запрос в V1.", + "expected_intent": "period_coverage_profile", + "actual_intent": "period_coverage_profile", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": false, + "route_health": "blocked_execution_error", + "strict_policy": "route", + "strict_pass": false, + "selected_recipe": "address_period_coverage_profile_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 0, + "rows_matched": 0, + "mcp_call_status": "error", + "limited_reason_category": "execution_error", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-eW6Yb7i_tq", + "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": [ + "management_profile_signal_detected", + "shape_not_detected", + "period_coverage_profile_signal_detected", + "{ВнешняяОбработка.MCPToolkit.Форма.Форма.Форма(1989)}: Ошибка при вызове метода контекста (Выполнить): {(10, 24)}: Синтаксическая ошибка\nДвижения.Период <= <>ТЕКУЩАЯДАТА()" + ], + "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": "period_coverage_profile", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc" + }, + "missing_required_filters": [], + "selected_recipe": "address_period_coverage_profile_v1", + "mcp_call_status_legacy": "error", + "account_scope_mode": "preferred", + "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": "error", + "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": "UNKNOWN", + "limited_reason_category": "execution_error", + "response_type": "LIMITED_WITH_REASON", + "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": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + }, + "error_code": null, + "error_message": null + }, + { + "index": 2, + "id": "Q2", + "question": "Какой год самый активный по количеству документов?", + "session": null, + "session_id": "asst-2026-04-02_Address_General5_Live_Check_AfterFix_01-q2", + "status_code": 200, + "ok": true, + "elapsed_ms": 5072, + "reply_type": "partial_coverage", + "trace_id": "address-BKVNDThPUd", + "assistant_reply": "Не удалось выполнить адресный live-запрос в V1.\nПричина: live MCP вызов завершился ошибкой.\nЧто нужно уточнить: {ВнешняяОбработка.MCPToolkit.Форма.Форма.Форма(1989)}: Ошибка при вызове метода контекста (Выполнить): {(10, 24)}: Синтаксическая ошибка\nДвижения.Период <= <>ТЕКУЩАЯДАТА().", + "assistant_reply_first_line": "Не удалось выполнить адресный live-запрос в V1.", + "expected_intent": "period_coverage_profile", + "actual_intent": "period_coverage_profile", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": false, + "route_health": "blocked_execution_error", + "strict_policy": "route", + "strict_pass": false, + "selected_recipe": "address_period_coverage_profile_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 0, + "rows_matched": 0, + "mcp_call_status": "error", + "limited_reason_category": "execution_error", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-BKVNDThPUd", + "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": [ + "management_profile_signal_detected", + "document_list_signal_detected", + "period_coverage_profile_signal_detected", + "{ВнешняяОбработка.MCPToolkit.Форма.Форма.Форма(1989)}: Ошибка при вызове метода контекста (Выполнить): {(10, 24)}: Синтаксическая ошибка\nДвижения.Период <= <>ТЕКУЩАЯДАТА()" + ], + "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": "period_coverage_profile", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc" + }, + "missing_required_filters": [], + "selected_recipe": "address_period_coverage_profile_v1", + "mcp_call_status_legacy": "error", + "account_scope_mode": "preferred", + "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": "error", + "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": "UNKNOWN", + "limited_reason_category": "execution_error", + "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": "bgFD0eUh97bbae", + "llm_decomposition_effective_message": "Какой год самый активный по количеству документов?", + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "sanitized_user_message": "какой год самый активный по количеству документов?", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "bgFD0eUh97bbae", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "Какой год самый активный по количеству документов?" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 3, + "id": "Q3", + "question": "Какой месяц самый активный по количеству операций?", + "session": null, + "session_id": "asst-2026-04-02_Address_General5_Live_Check_AfterFix_01-q3", + "status_code": 200, + "ok": true, + "elapsed_ms": 1066, + "reply_type": "partial_coverage", + "trace_id": "address-lxBpVpL9YV", + "assistant_reply": "Не удалось выполнить адресный live-запрос в V1.\nПричина: live MCP вызов завершился ошибкой.\nЧто нужно уточнить: {ВнешняяОбработка.MCPToolkit.Форма.Форма.Форма(1989)}: Ошибка при вызове метода контекста (Выполнить): {(10, 24)}: Синтаксическая ошибка\nДвижения.Период <= <>ТЕКУЩАЯДАТА().", + "assistant_reply_first_line": "Не удалось выполнить адресный live-запрос в V1.", + "expected_intent": "period_coverage_profile", + "actual_intent": "period_coverage_profile", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": false, + "route_health": "blocked_execution_error", + "strict_policy": "route", + "strict_pass": false, + "selected_recipe": "address_period_coverage_profile_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 0, + "rows_matched": 0, + "mcp_call_status": "error", + "limited_reason_category": "execution_error", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-lxBpVpL9YV", + "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": [ + "management_profile_signal_detected", + "shape_not_detected", + "period_coverage_profile_signal_detected", + "{ВнешняяОбработка.MCPToolkit.Форма.Форма.Форма(1989)}: Ошибка при вызове метода контекста (Выполнить): {(10, 24)}: Синтаксическая ошибка\nДвижения.Период <= <>ТЕКУЩАЯДАТА()" + ], + "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": "period_coverage_profile", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc" + }, + "missing_required_filters": [], + "selected_recipe": "address_period_coverage_profile_v1", + "mcp_call_status_legacy": "error", + "account_scope_mode": "preferred", + "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": "error", + "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": "UNKNOWN", + "limited_reason_category": "execution_error", + "response_type": "LIMITED_WITH_REASON", + "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": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + }, + "error_code": null, + "error_message": null + }, + { + "index": 4, + "id": "Q4", + "question": "Какие типы документов используются чаще всего в базе?", + "session": null, + "session_id": "asst-2026-04-02_Address_General5_Live_Check_AfterFix_01-q4", + "status_code": 200, + "ok": true, + "elapsed_ms": 5058, + "reply_type": "partial_coverage", + "trace_id": "address-0_1nOMvz1f", + "assistant_reply": "Не удалось выполнить адресный live-запрос в V1.\nПричина: live MCP вызов завершился ошибкой.\nЧто нужно уточнить: {ВнешняяОбработка.MCPToolkit.Форма.Форма.Форма(1989)}: Ошибка при вызове метода контекста (Выполнить): {(10, 24)}: Синтаксическая ошибка\nДвижения.Период <= <>ТЕКУЩАЯДАТА().", + "assistant_reply_first_line": "Не удалось выполнить адресный live-запрос в V1.", + "expected_intent": "document_type_and_account_section_profile", + "actual_intent": "document_type_and_account_section_profile", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": false, + "route_health": "blocked_execution_error", + "strict_policy": "route", + "strict_pass": false, + "selected_recipe": "address_document_type_and_account_section_profile_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 0, + "rows_matched": 0, + "mcp_call_status": "error", + "limited_reason_category": "execution_error", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-0_1nOMvz1f", + "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", + "document_type_and_account_section_profile_signal_detected", + "{ВнешняяОбработка.MCPToolkit.Форма.Форма.Форма(1989)}: Ошибка при вызове метода контекста (Выполнить): {(10, 24)}: Синтаксическая ошибка\nДвижения.Период <= <>ТЕКУЩАЯДАТА()" + ], + "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": "document_type_and_account_section_profile", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc" + }, + "missing_required_filters": [], + "selected_recipe": "address_document_type_and_account_section_profile_v1", + "mcp_call_status_legacy": "error", + "account_scope_mode": "preferred", + "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": "error", + "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": "UNKNOWN", + "limited_reason_category": "execution_error", + "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": "KAAw7U8orkHpRG", + "llm_decomposition_effective_message": "Какие типы документов используются чаще всего в базе?", + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "sanitized_user_message": "какие типы документов используются чаще всего в базе?", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "KAAw7U8orkHpRG", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "Какие типы документов используются чаще всего в базе?" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 5, + "id": "Q5", + "question": "Какие разделы учета наиболее заполнены и какие почти не используются?", + "session": null, + "session_id": "asst-2026-04-02_Address_General5_Live_Check_AfterFix_01-q5", + "status_code": 200, + "ok": true, + "elapsed_ms": 1002, + "reply_type": "partial_coverage", + "trace_id": "address-0XdEJQTykP", + "assistant_reply": "Не удалось выполнить адресный live-запрос в V1.\nПричина: live MCP вызов завершился ошибкой.\nЧто нужно уточнить: {ВнешняяОбработка.MCPToolkit.Форма.Форма.Форма(1989)}: Ошибка при вызове метода контекста (Выполнить): {(10, 24)}: Синтаксическая ошибка\nДвижения.Период <= <>ТЕКУЩАЯДАТА().", + "assistant_reply_first_line": "Не удалось выполнить адресный live-запрос в V1.", + "expected_intent": "document_type_and_account_section_profile", + "actual_intent": "document_type_and_account_section_profile", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": false, + "route_health": "blocked_execution_error", + "strict_policy": "route", + "strict_pass": false, + "selected_recipe": "address_document_type_and_account_section_profile_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 0, + "rows_matched": 0, + "mcp_call_status": "error", + "limited_reason_category": "execution_error", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-0XdEJQTykP", + "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": [ + "management_profile_signal_detected", + "shape_not_detected", + "document_type_and_account_section_profile_signal_detected", + "{ВнешняяОбработка.MCPToolkit.Форма.Форма.Форма(1989)}: Ошибка при вызове метода контекста (Выполнить): {(10, 24)}: Синтаксическая ошибка\nДвижения.Период <= <>ТЕКУЩАЯДАТА()" + ], + "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": "document_type_and_account_section_profile", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc" + }, + "missing_required_filters": [], + "selected_recipe": "address_document_type_and_account_section_profile_v1", + "mcp_call_status_legacy": "error", + "account_scope_mode": "preferred", + "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": "error", + "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": "UNKNOWN", + "limited_reason_category": "execution_error", + "response_type": "LIMITED_WITH_REASON", + "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": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + }, + "error_code": null, + "error_message": null + } + ] +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterFix_01/response_audit.md b/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterFix_01/response_audit.md new file mode 100644 index 0000000..775245e --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterFix_01/response_audit.md @@ -0,0 +1,9 @@ +# Response Audit: 2026-04-02_Address_General5_Live_Check_AfterFix_01 + +| id | strict | route_health | reply_type | intent | limited_reason | question | assistant_first_line | +|---|---|---|---|---|---|---|---| +| Q1 | False | blocked_execution_error | partial_coverage | period_coverage_profile | execution_error | За какие годы в базе есть данные? | Не удалось выполнить адресный live-запрос в V1. | +| Q2 | False | blocked_execution_error | partial_coverage | period_coverage_profile | execution_error | Какой год самый активный по количеству документов? | Не удалось выполнить адресный live-запрос в V1. | +| Q3 | False | blocked_execution_error | partial_coverage | period_coverage_profile | execution_error | Какой месяц самый активный по количеству операций? | Не удалось выполнить адресный live-запрос в V1. | +| Q4 | False | blocked_execution_error | partial_coverage | document_type_and_account_section_profile | execution_error | Какие типы документов используются чаще всего в базе? | Не удалось выполнить адресный live-запрос в V1. | +| Q5 | False | blocked_execution_error | partial_coverage | document_type_and_account_section_profile | execution_error | Какие разделы учета наиболее заполнены и какие почти не используются? | Не удалось выполнить адресный live-запрос в V1. | diff --git a/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterFix_01/run_summary.json b/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterFix_01/run_summary.json new file mode 100644 index 0000000..b89820e --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterFix_01/run_summary.json @@ -0,0 +1,47 @@ +{ + "run_id": "2026-04-02_Address_General5_Live_Check_AfterFix_01", + "generated_at": "2026-04-02T19:27:58", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\temp_general5_live_check_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", + "strict_policy": "route", + "totals": { + "questions_total": 5, + "ok_200_count": 5, + "semantic_pass_count": 5, + "semantic_pass_rate": 1.0, + "route_pass_count": 0, + "route_pass_rate": 0.0, + "strict_pass_count": 0, + "strict_pass_rate": 0.0, + "factual_count": 0, + "partial_coverage_count": 5, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_applied_count": 0, + "avg_elapsed_ms": 2632 + }, + "distributions": { + "reply_type": { + "partial_coverage": 5 + }, + "actual_intent": { + "period_coverage_profile": 3, + "document_type_and_account_section_profile": 2 + }, + "actual_mode": { + "address_query": 5 + }, + "mcp_call_status": { + "error": 5 + }, + "limited_reason_category": { + "execution_error": 5 + }, + "route_health": { + "blocked_execution_error": 5 + } + } +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterFix_02/README.md b/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterFix_02/README.md new file mode 100644 index 0000000..e862772 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterFix_02/README.md @@ -0,0 +1,28 @@ +# 2026-04-02_Address_General5_Live_Check_AfterFix_02 + +Generated at: 2026-04-02T19:29:40 +Questions file: X:\1C\NDC_1C\docs\ADDRESS\question_sets\temp_general5_live_check_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 +Strict policy: route + +## Totals +- questions_total: 5 +- ok_200_count: 5 +- semantic_pass_count: 5 +- semantic_pass_rate: 1.0 +- route_pass_count: 5 +- route_pass_rate: 1.0 +- strict_pass_count: 5 +- strict_pass_rate: 1.0 +- factual_count: 5 +- partial_coverage_count: 0 +- clarification_required_count: 0 +- http_error_count: 0 +- llm_decomposition_applied_count: 0 +- avg_elapsed_ms: 3100.6 + +## Files +- run_summary.json +- full_live_results.json +- failures_only.json diff --git a/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterFix_02/failures_only.json b/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterFix_02/failures_only.json new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterFix_02/failures_only.json @@ -0,0 +1 @@ +[] diff --git a/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterFix_02/full_live_results.json b/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterFix_02/full_live_results.json new file mode 100644 index 0000000..136db08 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterFix_02/full_live_results.json @@ -0,0 +1,769 @@ +{ + "run_id": "2026-04-02_Address_General5_Live_Check_AfterFix_02", + "generated_at": "2026-04-02T19:29:40", + "summary": { + "run_id": "2026-04-02_Address_General5_Live_Check_AfterFix_02", + "generated_at": "2026-04-02T19:29:40", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\temp_general5_live_check_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", + "strict_policy": "route", + "totals": { + "questions_total": 5, + "ok_200_count": 5, + "semantic_pass_count": 5, + "semantic_pass_rate": 1.0, + "route_pass_count": 5, + "route_pass_rate": 1.0, + "strict_pass_count": 5, + "strict_pass_rate": 1.0, + "factual_count": 5, + "partial_coverage_count": 0, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_applied_count": 0, + "avg_elapsed_ms": 3100.6 + }, + "distributions": { + "reply_type": { + "factual": 5 + }, + "actual_intent": { + "period_coverage_profile": 3, + "document_type_and_account_section_profile": 2 + }, + "actual_mode": { + "address_query": 5 + }, + "mcp_call_status": { + "matched_non_empty": 5 + }, + "limited_reason_category": {}, + "route_health": { + "ok_or_factual": 5 + } + } + }, + "rows": [ + { + "index": 1, + "id": "Q1", + "question": "За какие годы в базе есть данные?", + "session": null, + "session_id": "asst-2026-04-02_Address_General5_Live_Check_AfterFix_02-q1", + "status_code": 200, + "ok": true, + "elapsed_ms": 1185, + "reply_type": "factual", + "trace_id": "address-HfTGzxvrUv", + "assistant_reply": "Профиль периодов базы собран (movement-based aggregate).\nСтрок агрегата: 134.\nПокрытие по датам: 2014-05-27T12:00:00Z.. 2026-03-31T00:00:00Z.\nГоды с данными: 2014..2026 (уникальных: 12).\nСамый активный год по документам: 2019 (1004).\nСамый активный месяц по операциям: 2015-02 (1249).\nТоп годов по документам:\n1. 2019: 1004\n2. 2018: 703\n3. 2015: 671\n4. 2016: 577\n5. 2020: 536\nТоп месяцев по операциям:\n1. 2015-02: 1249\n2. 2015-01: 924\n3. 2018-08: 854\n4. 2019-05: 536\n5. 2017-12: 503", + "assistant_reply_first_line": "Профиль периодов базы собран (movement-based aggregate).", + "expected_intent": "period_coverage_profile", + "actual_intent": "period_coverage_profile", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_period_coverage_profile_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 134, + "rows_matched": 134, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-HfTGzxvrUv", + "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": [ + "management_profile_signal_detected", + "shape_not_detected", + "period_coverage_profile_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": "period_coverage_profile", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_to": "2026-04-02" + }, + "missing_required_filters": [], + "selected_recipe": "address_period_coverage_profile_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "matched_non_empty", + "rows_fetched": 134, + "raw_rows_received": 134, + "rows_after_account_scope": 134, + "rows_after_recipe_filter": 134, + "rows_materialized": 134, + "rows_matched": 134, + "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_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": "За какие годы в базе есть данные?", + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "sanitized_user_message": "за какие годы в базе есть данные?", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + }, + "error_code": null, + "error_message": null + }, + { + "index": 2, + "id": "Q2", + "question": "Какой год самый активный по количеству документов?", + "session": null, + "session_id": "asst-2026-04-02_Address_General5_Live_Check_AfterFix_02-q2", + "status_code": 200, + "ok": true, + "elapsed_ms": 6159, + "reply_type": "factual", + "trace_id": "address-AL_CR3C1wQ", + "assistant_reply": "Профиль периодов базы собран (movement-based aggregate).\nСтрок агрегата: 134.\nПокрытие по датам: 2014-05-27T12:00:00Z.. 2026-03-31T00:00:00Z.\nГоды с данными: 2014..2026 (уникальных: 12).\nСамый активный год по документам: 2019 (1004).\nСамый активный месяц по операциям: 2015-02 (1249).\nТоп годов по документам:\n1. 2019: 1004\n2. 2018: 703\n3. 2015: 671\n4. 2016: 577\n5. 2020: 536\nТоп месяцев по операциям:\n1. 2015-02: 1249\n2. 2015-01: 924\n3. 2018-08: 854\n4. 2019-05: 536\n5. 2017-12: 503", + "assistant_reply_first_line": "Профиль периодов базы собран (movement-based aggregate).", + "expected_intent": "period_coverage_profile", + "actual_intent": "period_coverage_profile", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_period_coverage_profile_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 134, + "rows_matched": 134, + "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, + "debug_payload": { + "trace_id": "address-AL_CR3C1wQ", + "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": [ + "management_profile_signal_detected", + "document_list_signal_detected", + "period_coverage_profile_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": "period_coverage_profile", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_to": "2026-04-02" + }, + "missing_required_filters": [], + "selected_recipe": "address_period_coverage_profile_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "matched_non_empty", + "rows_fetched": 134, + "raw_rows_received": 134, + "rows_after_account_scope": 134, + "rows_after_recipe_filter": 134, + "rows_materialized": 134, + "rows_matched": 134, + "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_SUMMARY", + "execution_lane": "address_query", + "llm_decomposition_applied": false, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "rAUqIM9N9BsIJV", + "llm_decomposition_effective_message": "Какой год самый активный по количеству документов?", + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "sanitized_user_message": "какой год самый активный по количеству документов?", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "rAUqIM9N9BsIJV", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "Какой год самый активный по количеству документов?" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 3, + "id": "Q3", + "question": "Какой месяц самый активный по количеству операций?", + "session": null, + "session_id": "asst-2026-04-02_Address_General5_Live_Check_AfterFix_02-q3", + "status_code": 200, + "ok": true, + "elapsed_ms": 980, + "reply_type": "factual", + "trace_id": "address-s1bNIMxNTL", + "assistant_reply": "Профиль периодов базы собран (movement-based aggregate).\nСтрок агрегата: 134.\nПокрытие по датам: 2014-05-27T12:00:00Z.. 2026-03-31T00:00:00Z.\nГоды с данными: 2014..2026 (уникальных: 12).\nСамый активный год по документам: 2019 (1004).\nСамый активный месяц по операциям: 2015-02 (1249).\nТоп годов по документам:\n1. 2019: 1004\n2. 2018: 703\n3. 2015: 671\n4. 2016: 577\n5. 2020: 536\nТоп месяцев по операциям:\n1. 2015-02: 1249\n2. 2015-01: 924\n3. 2018-08: 854\n4. 2019-05: 536\n5. 2017-12: 503", + "assistant_reply_first_line": "Профиль периодов базы собран (movement-based aggregate).", + "expected_intent": "period_coverage_profile", + "actual_intent": "period_coverage_profile", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_period_coverage_profile_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 134, + "rows_matched": 134, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-s1bNIMxNTL", + "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": [ + "management_profile_signal_detected", + "shape_not_detected", + "period_coverage_profile_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": "period_coverage_profile", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_to": "2026-04-02" + }, + "missing_required_filters": [], + "selected_recipe": "address_period_coverage_profile_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "matched_non_empty", + "rows_fetched": 134, + "raw_rows_received": 134, + "rows_after_account_scope": 134, + "rows_after_recipe_filter": 134, + "rows_materialized": 134, + "rows_matched": 134, + "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_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": "Какой месяц самый активный по количеству операций?", + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "sanitized_user_message": "какой месяц самый активный по количеству операций?", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + }, + "error_code": null, + "error_message": null + }, + { + "index": 4, + "id": "Q4", + "question": "Какие типы документов используются чаще всего в базе?", + "session": null, + "session_id": "asst-2026-04-02_Address_General5_Live_Check_AfterFix_02-q4", + "status_code": 200, + "ok": true, + "elapsed_ms": 6282, + "reply_type": "factual", + "trace_id": "address-UVGdY-3_VN", + "assistant_reply": "Профиль типов документов и разделов учета собран (movement-based aggregate).\nСтрок агрегата: 147.\nТоп типов документов (по числу уникальных регистраторов):\n1. Списание с расчетного счета: 2352 (52.6%)\n2. Поступление товаров и услуг: 486 (10.9%)\n3. Регламентная операция: 414 (9.3%)\n4. Поступление на расчетный счет: 323 (7.2%)\n5. Счет-фактура полученный: 261 (5.8%)\n6. Операция (бухгалтерский и налоговый учет): 147 (3.3%)\n7. Реализация товаров и услуг: 123 (2.8%)\n8. Отражение зарплаты в регламентированном учете: 87 (1.9%)\n9. Приходный кассовый ордер: 76 (1.7%)\n10. Расходный кассовый ордер: 73 (1.6%)\nНаиболее заполненные разделы учета (по операциям Дт+Кт):\n1. 90 (Продажи): 2973 (12.1%)\n2. 51 (Расчетные счета): 2967 (12.1%)\n3. 60 (Расчеты с поставщиками и подрядчиками): 2793 (11.4%)\n4. 44 (Расходы на продажу): 2422 (9.9%)\n5. 68 (Расчеты по налогам и сборам): 1553 (6.3%)\n6. 10 (Материалы): 1494 (6.1%)\n7. 19 (НДС по приобретенным ценностям): 1489 (6.1%)\n8. 91 (Прочие доходы и расходы): 1324 (5.4%)\n9. 41 (Товары): 1312 (5.3%)\n10. 76 (Расчеты с разными дебиторами и кредиторами): 1240 (5.0%)\nРазделы с минимальной активностью (среди использованных):\n1. 58 (Финансовые вложения): 2\n2. 81 (Собственные акции (доли)): 2\n3. 80 (Уставный капитал): 5\n4. 03: 6\n5. 04 (Нематериальные активы): 6\n6. 75 (Расчеты с учредителями): 16\n7. 55 (Специальные счета в банках): 18\n8. 84 (Нераспределенная прибыль (непокрытый убыток)): 20\n9. 26 (Общехозяйственные расходы): 51\n10. 71 (Расчеты с подотчетными лицами): 76", + "assistant_reply_first_line": "Профиль типов документов и разделов учета собран (movement-based aggregate).", + "expected_intent": "document_type_and_account_section_profile", + "actual_intent": "document_type_and_account_section_profile", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_document_type_and_account_section_profile_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 147, + "rows_matched": 147, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-UVGdY-3_VN", + "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", + "document_type_and_account_section_profile_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": "document_type_and_account_section_profile", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_to": "2026-04-02" + }, + "missing_required_filters": [], + "selected_recipe": "address_document_type_and_account_section_profile_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "matched_non_empty", + "rows_fetched": 147, + "raw_rows_received": 147, + "rows_after_account_scope": 147, + "rows_after_recipe_filter": 147, + "rows_materialized": 147, + "rows_matched": 147, + "raw_row_keys_sample": [ + "Период", + "Регистратор", + "СчетДт", + "СчетКт", + "Сумма", + "Period", + "Registrator", + "AccountDt", + "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_SUMMARY", + "execution_lane": "address_query", + "llm_decomposition_applied": false, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "jQJYufBVkLJJHx", + "llm_decomposition_effective_message": "Какие типы документов используются чаще всего в базе?", + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "sanitized_user_message": "какие типы документов используются чаще всего в базе?", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "jQJYufBVkLJJHx", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "Какие типы документов используются чаще всего в базе?" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 5, + "id": "Q5", + "question": "Какие разделы учета наиболее заполнены и какие почти не используются?", + "session": null, + "session_id": "asst-2026-04-02_Address_General5_Live_Check_AfterFix_02-q5", + "status_code": 200, + "ok": true, + "elapsed_ms": 897, + "reply_type": "factual", + "trace_id": "address--3Oc-f_Szc", + "assistant_reply": "Профиль типов документов и разделов учета собран (movement-based aggregate).\nСтрок агрегата: 147.\nТоп типов документов (по числу уникальных регистраторов):\n1. Списание с расчетного счета: 2352 (52.6%)\n2. Поступление товаров и услуг: 486 (10.9%)\n3. Регламентная операция: 414 (9.3%)\n4. Поступление на расчетный счет: 323 (7.2%)\n5. Счет-фактура полученный: 261 (5.8%)\n6. Операция (бухгалтерский и налоговый учет): 147 (3.3%)\n7. Реализация товаров и услуг: 123 (2.8%)\n8. Отражение зарплаты в регламентированном учете: 87 (1.9%)\n9. Приходный кассовый ордер: 76 (1.7%)\n10. Расходный кассовый ордер: 73 (1.6%)\nНаиболее заполненные разделы учета (по операциям Дт+Кт):\n1. 90 (Продажи): 2973 (12.1%)\n2. 51 (Расчетные счета): 2967 (12.1%)\n3. 60 (Расчеты с поставщиками и подрядчиками): 2793 (11.4%)\n4. 44 (Расходы на продажу): 2422 (9.9%)\n5. 68 (Расчеты по налогам и сборам): 1553 (6.3%)\n6. 10 (Материалы): 1494 (6.1%)\n7. 19 (НДС по приобретенным ценностям): 1489 (6.1%)\n8. 91 (Прочие доходы и расходы): 1324 (5.4%)\n9. 41 (Товары): 1312 (5.3%)\n10. 76 (Расчеты с разными дебиторами и кредиторами): 1240 (5.0%)\nРазделы с минимальной активностью (среди использованных):\n1. 58 (Финансовые вложения): 2\n2. 81 (Собственные акции (доли)): 2\n3. 80 (Уставный капитал): 5\n4. 03: 6\n5. 04 (Нематериальные активы): 6\n6. 75 (Расчеты с учредителями): 16\n7. 55 (Специальные счета в банках): 18\n8. 84 (Нераспределенная прибыль (непокрытый убыток)): 20\n9. 26 (Общехозяйственные расходы): 51\n10. 71 (Расчеты с подотчетными лицами): 76", + "assistant_reply_first_line": "Профиль типов документов и разделов учета собран (movement-based aggregate).", + "expected_intent": "document_type_and_account_section_profile", + "actual_intent": "document_type_and_account_section_profile", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_document_type_and_account_section_profile_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 147, + "rows_matched": 147, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address--3Oc-f_Szc", + "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": [ + "management_profile_signal_detected", + "shape_not_detected", + "document_type_and_account_section_profile_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": "document_type_and_account_section_profile", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_to": "2026-04-02" + }, + "missing_required_filters": [], + "selected_recipe": "address_document_type_and_account_section_profile_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "matched_non_empty", + "rows_fetched": 147, + "raw_rows_received": 147, + "rows_after_account_scope": 147, + "rows_after_recipe_filter": 147, + "rows_materialized": 147, + "rows_matched": 147, + "raw_row_keys_sample": [ + "Период", + "Регистратор", + "СчетДт", + "СчетКт", + "Сумма", + "Period", + "Registrator", + "AccountDt", + "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_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": "Какие разделы учета наиболее заполнены и какие почти не используются?", + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "sanitized_user_message": "какие разделы учета наиболее заполнены и какие почти не используются?", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + }, + "error_code": null, + "error_message": null + } + ] +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterFix_02/response_audit.md b/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterFix_02/response_audit.md new file mode 100644 index 0000000..df88776 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterFix_02/response_audit.md @@ -0,0 +1,9 @@ +# Response Audit: 2026-04-02_Address_General5_Live_Check_AfterFix_02 + +| id | strict | route_health | reply_type | intent | limited_reason | question | assistant_first_line | +|---|---|---|---|---|---|---|---| +| Q1 | True | ok_or_factual | factual | period_coverage_profile | None | За какие годы в базе есть данные? | Профиль периодов базы собран (movement-based aggregate). | +| Q2 | True | ok_or_factual | factual | period_coverage_profile | None | Какой год самый активный по количеству документов? | Профиль периодов базы собран (movement-based aggregate). | +| Q3 | True | ok_or_factual | factual | period_coverage_profile | None | Какой месяц самый активный по количеству операций? | Профиль периодов базы собран (movement-based aggregate). | +| Q4 | True | ok_or_factual | factual | document_type_and_account_section_profile | None | Какие типы документов используются чаще всего в базе? | Профиль типов документов и разделов учета собран (movement-based aggregate). | +| Q5 | True | ok_or_factual | factual | document_type_and_account_section_profile | None | Какие разделы учета наиболее заполнены и какие почти не используются? | Профиль типов документов и разделов учета собран (movement-based aggregate). | diff --git a/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterFix_02/run_summary.json b/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterFix_02/run_summary.json new file mode 100644 index 0000000..5130d53 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterFix_02/run_summary.json @@ -0,0 +1,45 @@ +{ + "run_id": "2026-04-02_Address_General5_Live_Check_AfterFix_02", + "generated_at": "2026-04-02T19:29:40", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\temp_general5_live_check_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", + "strict_policy": "route", + "totals": { + "questions_total": 5, + "ok_200_count": 5, + "semantic_pass_count": 5, + "semantic_pass_rate": 1.0, + "route_pass_count": 5, + "route_pass_rate": 1.0, + "strict_pass_count": 5, + "strict_pass_rate": 1.0, + "factual_count": 5, + "partial_coverage_count": 0, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_applied_count": 0, + "avg_elapsed_ms": 3100.6 + }, + "distributions": { + "reply_type": { + "factual": 5 + }, + "actual_intent": { + "period_coverage_profile": 3, + "document_type_and_account_section_profile": 2 + }, + "actual_mode": { + "address_query": 5 + }, + "mcp_call_status": { + "matched_non_empty": 5 + }, + "limited_reason_category": {}, + "route_health": { + "ok_or_factual": 5 + } + } +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterFix_03/README.md b/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterFix_03/README.md new file mode 100644 index 0000000..1be9edd --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterFix_03/README.md @@ -0,0 +1,28 @@ +# 2026-04-02_Address_General5_Live_Check_AfterFix_03 + +Generated at: 2026-04-02T19:45:20 +Questions file: X:\1C\NDC_1C\docs\ADDRESS\question_sets\temp_general5_live_check_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 +Strict policy: route + +## Totals +- questions_total: 5 +- ok_200_count: 5 +- semantic_pass_count: 5 +- semantic_pass_rate: 1.0 +- route_pass_count: 5 +- route_pass_rate: 1.0 +- strict_pass_count: 5 +- strict_pass_rate: 1.0 +- factual_count: 5 +- partial_coverage_count: 0 +- clarification_required_count: 0 +- http_error_count: 0 +- llm_decomposition_applied_count: 0 +- avg_elapsed_ms: 2805.8 + +## Files +- run_summary.json +- full_live_results.json +- failures_only.json diff --git a/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterFix_03/failures_only.json b/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterFix_03/failures_only.json new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterFix_03/failures_only.json @@ -0,0 +1 @@ +[] diff --git a/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterFix_03/full_live_results.json b/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterFix_03/full_live_results.json new file mode 100644 index 0000000..6e42dd1 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterFix_03/full_live_results.json @@ -0,0 +1,769 @@ +{ + "run_id": "2026-04-02_Address_General5_Live_Check_AfterFix_03", + "generated_at": "2026-04-02T19:45:20", + "summary": { + "run_id": "2026-04-02_Address_General5_Live_Check_AfterFix_03", + "generated_at": "2026-04-02T19:45:20", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\temp_general5_live_check_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", + "strict_policy": "route", + "totals": { + "questions_total": 5, + "ok_200_count": 5, + "semantic_pass_count": 5, + "semantic_pass_rate": 1.0, + "route_pass_count": 5, + "route_pass_rate": 1.0, + "strict_pass_count": 5, + "strict_pass_rate": 1.0, + "factual_count": 5, + "partial_coverage_count": 0, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_applied_count": 0, + "avg_elapsed_ms": 2805.8 + }, + "distributions": { + "reply_type": { + "factual": 5 + }, + "actual_intent": { + "period_coverage_profile": 3, + "document_type_and_account_section_profile": 2 + }, + "actual_mode": { + "address_query": 5 + }, + "mcp_call_status": { + "matched_non_empty": 5 + }, + "limited_reason_category": {}, + "route_health": { + "ok_or_factual": 5 + } + } + }, + "rows": [ + { + "index": 1, + "id": "Q1", + "question": "За какие годы в базе есть данные?", + "session": null, + "session_id": "asst-2026-04-02_Address_General5_Live_Check_AfterFix_03-q1", + "status_code": 200, + "ok": true, + "elapsed_ms": 780, + "reply_type": "factual", + "trace_id": "address--IzaA87urN", + "assistant_reply": "Профиль периодов базы собран (movement-based aggregate).\nСтрок агрегата: 134.\nПокрытие по датам: 2014-05-27T12:00:00Z.. 2026-03-31T00:00:00Z.\nГоды с данными: 2014..2026 (уникальных: 12).\nСамый активный год по документам: 2019 (1004).\nСамый активный месяц по операциям: 2015-02 (1249).\nТоп годов по документам:\n1. 2019: 1004\n2. 2018: 703\n3. 2015: 671\n4. 2016: 577\n5. 2020: 536\nТоп месяцев по операциям:\n1. 2015-02: 1249\n2. 2015-01: 924\n3. 2018-08: 854\n4. 2019-05: 536\n5. 2017-12: 503", + "assistant_reply_first_line": "Профиль периодов базы собран (movement-based aggregate).", + "expected_intent": "period_coverage_profile", + "actual_intent": "period_coverage_profile", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_period_coverage_profile_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 134, + "rows_matched": 134, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address--IzaA87urN", + "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": [ + "management_profile_signal_detected", + "shape_not_detected", + "period_coverage_profile_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": "period_coverage_profile", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_to": "2026-04-02" + }, + "missing_required_filters": [], + "selected_recipe": "address_period_coverage_profile_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "matched_non_empty", + "rows_fetched": 134, + "raw_rows_received": 134, + "rows_after_account_scope": 134, + "rows_after_recipe_filter": 134, + "rows_materialized": 134, + "rows_matched": 134, + "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_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": "За какие годы в базе есть данные?", + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "sanitized_user_message": "за какие годы в базе есть данные?", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + }, + "error_code": null, + "error_message": null + }, + { + "index": 2, + "id": "Q2", + "question": "Какой год самый активный по количеству документов?", + "session": null, + "session_id": "asst-2026-04-02_Address_General5_Live_Check_AfterFix_03-q2", + "status_code": 200, + "ok": true, + "elapsed_ms": 6137, + "reply_type": "factual", + "trace_id": "address-4r8q6DoYyz", + "assistant_reply": "Профиль периодов базы собран (movement-based aggregate).\nСтрок агрегата: 134.\nПокрытие по датам: 2014-05-27T12:00:00Z.. 2026-03-31T00:00:00Z.\nГоды с данными: 2014..2026 (уникальных: 12).\nСамый активный год по документам: 2019 (1004).\nСамый активный месяц по операциям: 2015-02 (1249).\nТоп годов по документам:\n1. 2019: 1004\n2. 2018: 703\n3. 2015: 671\n4. 2016: 577\n5. 2020: 536\nТоп месяцев по операциям:\n1. 2015-02: 1249\n2. 2015-01: 924\n3. 2018-08: 854\n4. 2019-05: 536\n5. 2017-12: 503", + "assistant_reply_first_line": "Профиль периодов базы собран (movement-based aggregate).", + "expected_intent": "period_coverage_profile", + "actual_intent": "period_coverage_profile", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_period_coverage_profile_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 134, + "rows_matched": 134, + "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, + "debug_payload": { + "trace_id": "address-4r8q6DoYyz", + "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": [ + "management_profile_signal_detected", + "document_list_signal_detected", + "period_coverage_profile_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": "period_coverage_profile", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_to": "2026-04-02" + }, + "missing_required_filters": [], + "selected_recipe": "address_period_coverage_profile_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "matched_non_empty", + "rows_fetched": 134, + "raw_rows_received": 134, + "rows_after_account_scope": 134, + "rows_after_recipe_filter": 134, + "rows_materialized": 134, + "rows_matched": 134, + "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_SUMMARY", + "execution_lane": "address_query", + "llm_decomposition_applied": false, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "JZJaNxdo2sfwwX", + "llm_decomposition_effective_message": "Какой год самый активный по количеству документов?", + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "sanitized_user_message": "какой год самый активный по количеству документов?", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "JZJaNxdo2sfwwX", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "Какой год самый активный по количеству документов?" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 3, + "id": "Q3", + "question": "Какой месяц самый активный по количеству операций?", + "session": null, + "session_id": "asst-2026-04-02_Address_General5_Live_Check_AfterFix_03-q3", + "status_code": 200, + "ok": true, + "elapsed_ms": 951, + "reply_type": "factual", + "trace_id": "address-8M9cIXeAaF", + "assistant_reply": "Профиль периодов базы собран (movement-based aggregate).\nСтрок агрегата: 134.\nПокрытие по датам: 2014-05-27T12:00:00Z.. 2026-03-31T00:00:00Z.\nГоды с данными: 2014..2026 (уникальных: 12).\nСамый активный год по документам: 2019 (1004).\nСамый активный месяц по операциям: 2015-02 (1249).\nТоп годов по документам:\n1. 2019: 1004\n2. 2018: 703\n3. 2015: 671\n4. 2016: 577\n5. 2020: 536\nТоп месяцев по операциям:\n1. 2015-02: 1249\n2. 2015-01: 924\n3. 2018-08: 854\n4. 2019-05: 536\n5. 2017-12: 503", + "assistant_reply_first_line": "Профиль периодов базы собран (movement-based aggregate).", + "expected_intent": "period_coverage_profile", + "actual_intent": "period_coverage_profile", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_period_coverage_profile_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 134, + "rows_matched": 134, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-8M9cIXeAaF", + "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": [ + "management_profile_signal_detected", + "shape_not_detected", + "period_coverage_profile_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": "period_coverage_profile", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_to": "2026-04-02" + }, + "missing_required_filters": [], + "selected_recipe": "address_period_coverage_profile_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "matched_non_empty", + "rows_fetched": 134, + "raw_rows_received": 134, + "rows_after_account_scope": 134, + "rows_after_recipe_filter": 134, + "rows_materialized": 134, + "rows_matched": 134, + "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_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": "Какой месяц самый активный по количеству операций?", + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "sanitized_user_message": "какой месяц самый активный по количеству операций?", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + }, + "error_code": null, + "error_message": null + }, + { + "index": 4, + "id": "Q4", + "question": "Какие типы документов используются чаще всего в базе?", + "session": null, + "session_id": "asst-2026-04-02_Address_General5_Live_Check_AfterFix_03-q4", + "status_code": 200, + "ok": true, + "elapsed_ms": 5156, + "reply_type": "factual", + "trace_id": "address-QVkxNBqT0e", + "assistant_reply": "Профиль типов документов и разделов учета собран (movement-based aggregate).\nСтрок агрегата: 147.\nТоп типов документов (по числу уникальных регистраторов):\n1. Списание с расчетного счета: 2352 (52.6%)\n2. Поступление товаров и услуг: 486 (10.9%)\n3. Регламентная операция: 414 (9.3%)\n4. Поступление на расчетный счет: 323 (7.2%)\n5. Счет-фактура полученный: 261 (5.8%)\n6. Операция (бухгалтерский и налоговый учет): 147 (3.3%)\n7. Реализация товаров и услуг: 123 (2.8%)\n8. Отражение зарплаты в регламентированном учете: 87 (1.9%)\n9. Приходный кассовый ордер: 76 (1.7%)\n10. Расходный кассовый ордер: 73 (1.6%)\nНаиболее заполненные разделы учета (по операциям Дт+Кт):\n1. 90 (Продажи): 2973 (12.1%)\n2. 51 (Расчетные счета): 2967 (12.1%)\n3. 60 (Расчеты с поставщиками и подрядчиками): 2793 (11.4%)\n4. 44 (Расходы на продажу): 2422 (9.9%)\n5. 68 (Расчеты по налогам и сборам): 1553 (6.3%)\n6. 10 (Материалы): 1494 (6.1%)\n7. 19 (НДС по приобретенным ценностям): 1489 (6.1%)\n8. 91 (Прочие доходы и расходы): 1324 (5.4%)\n9. 41 (Товары): 1312 (5.3%)\n10. 76 (Расчеты с разными дебиторами и кредиторами): 1240 (5.0%)\nРазделы с минимальной активностью (среди использованных):\n1. 58 (Финансовые вложения): 2\n2. 81 (Собственные акции (доли)): 2\n3. 80 (Уставный капитал): 5\n4. 03: 6\n5. 04 (Нематериальные активы): 6\n6. 75 (Расчеты с учредителями): 16\n7. 55 (Специальные счета в банках): 18\n8. 84 (Нераспределенная прибыль (непокрытый убыток)): 20\n9. 26 (Общехозяйственные расходы): 51\n10. 71 (Расчеты с подотчетными лицами): 76", + "assistant_reply_first_line": "Профиль типов документов и разделов учета собран (movement-based aggregate).", + "expected_intent": "document_type_and_account_section_profile", + "actual_intent": "document_type_and_account_section_profile", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_document_type_and_account_section_profile_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 147, + "rows_matched": 147, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-QVkxNBqT0e", + "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", + "document_type_and_account_section_profile_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": "document_type_and_account_section_profile", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_to": "2026-04-02" + }, + "missing_required_filters": [], + "selected_recipe": "address_document_type_and_account_section_profile_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "matched_non_empty", + "rows_fetched": 147, + "raw_rows_received": 147, + "rows_after_account_scope": 147, + "rows_after_recipe_filter": 147, + "rows_materialized": 147, + "rows_matched": 147, + "raw_row_keys_sample": [ + "Период", + "Регистратор", + "СчетДт", + "СчетКт", + "Сумма", + "Period", + "Registrator", + "AccountDt", + "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_SUMMARY", + "execution_lane": "address_query", + "llm_decomposition_applied": false, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "3zbySabYai6x29", + "llm_decomposition_effective_message": "Какие типы документов используются чаще всего в базе?", + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "sanitized_user_message": "какие типы документов используются чаще всего в базе?", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "3zbySabYai6x29", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "Какие типы документов используются чаще всего в базе?" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 5, + "id": "Q5", + "question": "Какие разделы учета наиболее заполнены и какие почти не используются?", + "session": null, + "session_id": "asst-2026-04-02_Address_General5_Live_Check_AfterFix_03-q5", + "status_code": 200, + "ok": true, + "elapsed_ms": 1005, + "reply_type": "factual", + "trace_id": "address-wpbdV5Mkcd", + "assistant_reply": "Профиль типов документов и разделов учета собран (movement-based aggregate).\nСтрок агрегата: 147.\nТоп типов документов (по числу уникальных регистраторов):\n1. Списание с расчетного счета: 2352 (52.6%)\n2. Поступление товаров и услуг: 486 (10.9%)\n3. Регламентная операция: 414 (9.3%)\n4. Поступление на расчетный счет: 323 (7.2%)\n5. Счет-фактура полученный: 261 (5.8%)\n6. Операция (бухгалтерский и налоговый учет): 147 (3.3%)\n7. Реализация товаров и услуг: 123 (2.8%)\n8. Отражение зарплаты в регламентированном учете: 87 (1.9%)\n9. Приходный кассовый ордер: 76 (1.7%)\n10. Расходный кассовый ордер: 73 (1.6%)\nНаиболее заполненные разделы учета (по операциям Дт+Кт):\n1. 90 (Продажи): 2973 (12.1%)\n2. 51 (Расчетные счета): 2967 (12.1%)\n3. 60 (Расчеты с поставщиками и подрядчиками): 2793 (11.4%)\n4. 44 (Расходы на продажу): 2422 (9.9%)\n5. 68 (Расчеты по налогам и сборам): 1553 (6.3%)\n6. 10 (Материалы): 1494 (6.1%)\n7. 19 (НДС по приобретенным ценностям): 1489 (6.1%)\n8. 91 (Прочие доходы и расходы): 1324 (5.4%)\n9. 41 (Товары): 1312 (5.3%)\n10. 76 (Расчеты с разными дебиторами и кредиторами): 1240 (5.0%)\nРазделы с минимальной активностью (среди использованных):\n1. 58 (Финансовые вложения): 2\n2. 81 (Собственные акции (доли)): 2\n3. 80 (Уставный капитал): 5\n4. 03: 6\n5. 04 (Нематериальные активы): 6\n6. 75 (Расчеты с учредителями): 16\n7. 55 (Специальные счета в банках): 18\n8. 84 (Нераспределенная прибыль (непокрытый убыток)): 20\n9. 26 (Общехозяйственные расходы): 51\n10. 71 (Расчеты с подотчетными лицами): 76", + "assistant_reply_first_line": "Профиль типов документов и разделов учета собран (movement-based aggregate).", + "expected_intent": "document_type_and_account_section_profile", + "actual_intent": "document_type_and_account_section_profile", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_document_type_and_account_section_profile_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 147, + "rows_matched": 147, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-wpbdV5Mkcd", + "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": [ + "management_profile_signal_detected", + "shape_not_detected", + "document_type_and_account_section_profile_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": "document_type_and_account_section_profile", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_to": "2026-04-02" + }, + "missing_required_filters": [], + "selected_recipe": "address_document_type_and_account_section_profile_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "matched_non_empty", + "rows_fetched": 147, + "raw_rows_received": 147, + "rows_after_account_scope": 147, + "rows_after_recipe_filter": 147, + "rows_materialized": 147, + "rows_matched": 147, + "raw_row_keys_sample": [ + "Период", + "Регистратор", + "СчетДт", + "СчетКт", + "Сумма", + "Period", + "Registrator", + "AccountDt", + "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_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": "Какие разделы учета наиболее заполнены и какие почти не используются?", + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "sanitized_user_message": "какие разделы учета наиболее заполнены и какие почти не используются?", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + }, + "error_code": null, + "error_message": null + } + ] +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterFix_03/response_audit.md b/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterFix_03/response_audit.md new file mode 100644 index 0000000..fa6d925 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterFix_03/response_audit.md @@ -0,0 +1,9 @@ +# Response Audit: 2026-04-02_Address_General5_Live_Check_AfterFix_03 + +| id | strict | route_health | reply_type | intent | limited_reason | question | assistant_first_line | +|---|---|---|---|---|---|---|---| +| Q1 | True | ok_or_factual | factual | period_coverage_profile | None | За какие годы в базе есть данные? | Профиль периодов базы собран (movement-based aggregate). | +| Q2 | True | ok_or_factual | factual | period_coverage_profile | None | Какой год самый активный по количеству документов? | Профиль периодов базы собран (movement-based aggregate). | +| Q3 | True | ok_or_factual | factual | period_coverage_profile | None | Какой месяц самый активный по количеству операций? | Профиль периодов базы собран (movement-based aggregate). | +| Q4 | True | ok_or_factual | factual | document_type_and_account_section_profile | None | Какие типы документов используются чаще всего в базе? | Профиль типов документов и разделов учета собран (movement-based aggregate). | +| Q5 | True | ok_or_factual | factual | document_type_and_account_section_profile | None | Какие разделы учета наиболее заполнены и какие почти не используются? | Профиль типов документов и разделов учета собран (movement-based aggregate). | diff --git a/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterFix_03/run_summary.json b/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterFix_03/run_summary.json new file mode 100644 index 0000000..f6296a8 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterFix_03/run_summary.json @@ -0,0 +1,45 @@ +{ + "run_id": "2026-04-02_Address_General5_Live_Check_AfterFix_03", + "generated_at": "2026-04-02T19:45:20", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\temp_general5_live_check_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", + "strict_policy": "route", + "totals": { + "questions_total": 5, + "ok_200_count": 5, + "semantic_pass_count": 5, + "semantic_pass_rate": 1.0, + "route_pass_count": 5, + "route_pass_rate": 1.0, + "strict_pass_count": 5, + "strict_pass_rate": 1.0, + "factual_count": 5, + "partial_coverage_count": 0, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_applied_count": 0, + "avg_elapsed_ms": 2805.8 + }, + "distributions": { + "reply_type": { + "factual": 5 + }, + "actual_intent": { + "period_coverage_profile": 3, + "document_type_and_account_section_profile": 2 + }, + "actual_mode": { + "address_query": 5 + }, + "mcp_call_status": { + "matched_non_empty": 5 + }, + "limited_reason_category": {}, + "route_health": { + "ok_or_factual": 5 + } + } +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterFocusFix_04/README.md b/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterFocusFix_04/README.md new file mode 100644 index 0000000..a26fa13 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterFocusFix_04/README.md @@ -0,0 +1,28 @@ +# 2026-04-02_Address_General5_Live_Check_AfterFocusFix_04 + +Generated at: 2026-04-02T20:11:30 +Questions file: X:\1C\NDC_1C\docs\ADDRESS\question_sets\temp_general5_live_check_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 +Strict policy: route + +## Totals +- questions_total: 5 +- ok_200_count: 5 +- semantic_pass_count: 5 +- semantic_pass_rate: 1.0 +- route_pass_count: 5 +- route_pass_rate: 1.0 +- strict_pass_count: 5 +- strict_pass_rate: 1.0 +- factual_count: 5 +- partial_coverage_count: 0 +- clarification_required_count: 0 +- http_error_count: 0 +- llm_decomposition_applied_count: 0 +- avg_elapsed_ms: 2712.4 + +## Files +- run_summary.json +- full_live_results.json +- failures_only.json diff --git a/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterFocusFix_04/failures_only.json b/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterFocusFix_04/failures_only.json new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterFocusFix_04/failures_only.json @@ -0,0 +1 @@ +[] diff --git a/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterFocusFix_04/full_live_results.json b/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterFocusFix_04/full_live_results.json new file mode 100644 index 0000000..30c0458 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterFocusFix_04/full_live_results.json @@ -0,0 +1,769 @@ +{ + "run_id": "2026-04-02_Address_General5_Live_Check_AfterFocusFix_04", + "generated_at": "2026-04-02T20:11:30", + "summary": { + "run_id": "2026-04-02_Address_General5_Live_Check_AfterFocusFix_04", + "generated_at": "2026-04-02T20:11:30", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\temp_general5_live_check_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", + "strict_policy": "route", + "totals": { + "questions_total": 5, + "ok_200_count": 5, + "semantic_pass_count": 5, + "semantic_pass_rate": 1.0, + "route_pass_count": 5, + "route_pass_rate": 1.0, + "strict_pass_count": 5, + "strict_pass_rate": 1.0, + "factual_count": 5, + "partial_coverage_count": 0, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_applied_count": 0, + "avg_elapsed_ms": 2712.4 + }, + "distributions": { + "reply_type": { + "factual": 5 + }, + "actual_intent": { + "period_coverage_profile": 3, + "document_type_and_account_section_profile": 2 + }, + "actual_mode": { + "address_query": 5 + }, + "mcp_call_status": { + "matched_non_empty": 5 + }, + "limited_reason_category": {}, + "route_health": { + "ok_or_factual": 5 + } + } + }, + "rows": [ + { + "index": 1, + "id": "Q1", + "question": "За какие годы в базе есть данные?", + "session": null, + "session_id": "asst-2026-04-02_Address_General5_Live_Check_AfterFocusFix_04-q1", + "status_code": 200, + "ok": true, + "elapsed_ms": 347, + "reply_type": "factual", + "trace_id": "address-YQkPAhS48Z", + "assistant_reply": "Профиль периодов базы собран (movement-based aggregate).\nСтрок агрегата: 134.\nОперационный период с выраженной активностью: 2014..2022.\nНизкоактивный хвост (единичные записи): 2023, 2025, 2026.\nПолный технический диапазон дат: 2014-05-27T12:00:00Z.. 2026-03-31T00:00:00Z.", + "assistant_reply_first_line": "Профиль периодов базы собран (movement-based aggregate).", + "expected_intent": "period_coverage_profile", + "actual_intent": "period_coverage_profile", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_period_coverage_profile_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 134, + "rows_matched": 134, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-YQkPAhS48Z", + "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": [ + "management_profile_signal_detected", + "shape_not_detected", + "period_coverage_profile_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": "period_coverage_profile", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_to": "2026-04-02" + }, + "missing_required_filters": [], + "selected_recipe": "address_period_coverage_profile_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "matched_non_empty", + "rows_fetched": 134, + "raw_rows_received": 134, + "rows_after_account_scope": 134, + "rows_after_recipe_filter": 134, + "rows_materialized": 134, + "rows_matched": 134, + "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_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": "За какие годы в базе есть данные?", + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "sanitized_user_message": "за какие годы в базе есть данные?", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + }, + "error_code": null, + "error_message": null + }, + { + "index": 2, + "id": "Q2", + "question": "Какой год самый активный по количеству документов?", + "session": null, + "session_id": "asst-2026-04-02_Address_General5_Live_Check_AfterFocusFix_04-q2", + "status_code": 200, + "ok": true, + "elapsed_ms": 6067, + "reply_type": "factual", + "trace_id": "address-_kFbMGKC0d", + "assistant_reply": "Профиль периодов базы собран (movement-based aggregate).\nСтрок агрегата: 134.\nСамый активный год по документам: 2019 (1004).\n1. 2019: 1004\n2. 2018: 703\n3. 2015: 671\n4. 2016: 577\n5. 2020: 536", + "assistant_reply_first_line": "Профиль периодов базы собран (movement-based aggregate).", + "expected_intent": "period_coverage_profile", + "actual_intent": "period_coverage_profile", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_period_coverage_profile_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 134, + "rows_matched": 134, + "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, + "debug_payload": { + "trace_id": "address-_kFbMGKC0d", + "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": [ + "management_profile_signal_detected", + "document_list_signal_detected", + "period_coverage_profile_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": "period_coverage_profile", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_to": "2026-04-02" + }, + "missing_required_filters": [], + "selected_recipe": "address_period_coverage_profile_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "matched_non_empty", + "rows_fetched": 134, + "raw_rows_received": 134, + "rows_after_account_scope": 134, + "rows_after_recipe_filter": 134, + "rows_materialized": 134, + "rows_matched": 134, + "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_SUMMARY", + "execution_lane": "address_query", + "llm_decomposition_applied": false, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "2M199yWCsRuVEl", + "llm_decomposition_effective_message": "Какой год самый активный по количеству документов?", + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "sanitized_user_message": "какой год самый активный по количеству документов?", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "2M199yWCsRuVEl", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "Какой год самый активный по количеству документов?" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 3, + "id": "Q3", + "question": "Какой месяц самый активный по количеству операций?", + "session": null, + "session_id": "asst-2026-04-02_Address_General5_Live_Check_AfterFocusFix_04-q3", + "status_code": 200, + "ok": true, + "elapsed_ms": 1035, + "reply_type": "factual", + "trace_id": "address-Yko0r2wuQx", + "assistant_reply": "Профиль периодов базы собран (movement-based aggregate).\nСтрок агрегата: 134.\nСамый активный месяц по операциям: 2015-02 (1249).\n1. 2015-02: 1249\n2. 2015-01: 924\n3. 2018-08: 854\n4. 2019-05: 536\n5. 2017-12: 503", + "assistant_reply_first_line": "Профиль периодов базы собран (movement-based aggregate).", + "expected_intent": "period_coverage_profile", + "actual_intent": "period_coverage_profile", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_period_coverage_profile_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 134, + "rows_matched": 134, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-Yko0r2wuQx", + "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": [ + "management_profile_signal_detected", + "shape_not_detected", + "period_coverage_profile_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": "period_coverage_profile", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_to": "2026-04-02" + }, + "missing_required_filters": [], + "selected_recipe": "address_period_coverage_profile_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "matched_non_empty", + "rows_fetched": 134, + "raw_rows_received": 134, + "rows_after_account_scope": 134, + "rows_after_recipe_filter": 134, + "rows_materialized": 134, + "rows_matched": 134, + "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_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": "Какой месяц самый активный по количеству операций?", + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "sanitized_user_message": "какой месяц самый активный по количеству операций?", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + }, + "error_code": null, + "error_message": null + }, + { + "index": 4, + "id": "Q4", + "question": "Какие типы документов используются чаще всего в базе?", + "session": null, + "session_id": "asst-2026-04-02_Address_General5_Live_Check_AfterFocusFix_04-q4", + "status_code": 200, + "ok": true, + "elapsed_ms": 5138, + "reply_type": "factual", + "trace_id": "address-ABN02IDAER", + "assistant_reply": "Профиль типов документов и разделов учета собран (movement-based aggregate).\nСтрок агрегата: 147.\nТоп типов документов (по числу уникальных регистраторов):\n1. Списание с расчетного счета: 2352 (52.6%)\n2. Поступление товаров и услуг: 486 (10.9%)\n3. Регламентная операция: 414 (9.3%)\n4. Поступление на расчетный счет: 323 (7.2%)\n5. Счет-фактура полученный: 261 (5.8%)\n6. Операция (бухгалтерский и налоговый учет): 147 (3.3%)\n7. Реализация товаров и услуг: 123 (2.8%)\n8. Отражение зарплаты в регламентированном учете: 87 (1.9%)\n9. Приходный кассовый ордер: 76 (1.7%)\n10. Расходный кассовый ордер: 73 (1.6%)", + "assistant_reply_first_line": "Профиль типов документов и разделов учета собран (movement-based aggregate).", + "expected_intent": "document_type_and_account_section_profile", + "actual_intent": "document_type_and_account_section_profile", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_document_type_and_account_section_profile_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 147, + "rows_matched": 147, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-ABN02IDAER", + "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", + "document_type_and_account_section_profile_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": "document_type_and_account_section_profile", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_to": "2026-04-02" + }, + "missing_required_filters": [], + "selected_recipe": "address_document_type_and_account_section_profile_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "matched_non_empty", + "rows_fetched": 147, + "raw_rows_received": 147, + "rows_after_account_scope": 147, + "rows_after_recipe_filter": 147, + "rows_materialized": 147, + "rows_matched": 147, + "raw_row_keys_sample": [ + "Период", + "Регистратор", + "СчетДт", + "СчетКт", + "Сумма", + "Period", + "Registrator", + "AccountDt", + "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_SUMMARY", + "execution_lane": "address_query", + "llm_decomposition_applied": false, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "Wr7ac2wuNb5EXA", + "llm_decomposition_effective_message": "Какие типы документов используются чаще всего в базе?", + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "sanitized_user_message": "какие типы документов используются чаще всего в базе?", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "Wr7ac2wuNb5EXA", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "Какие типы документов используются чаще всего в базе?" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 5, + "id": "Q5", + "question": "Какие разделы учета наиболее заполнены и какие почти не используются?", + "session": null, + "session_id": "asst-2026-04-02_Address_General5_Live_Check_AfterFocusFix_04-q5", + "status_code": 200, + "ok": true, + "elapsed_ms": 975, + "reply_type": "factual", + "trace_id": "address-9KxpfWz3qt", + "assistant_reply": "Профиль типов документов и разделов учета собран (movement-based aggregate).\nСтрок агрегата: 147.\nНаиболее заполненные разделы учета (по операциям Дт+Кт):\n1. 90 (Продажи): 2973 (12.1%)\n2. 51 (Расчетные счета): 2967 (12.1%)\n3. 60 (Расчеты с поставщиками и подрядчиками): 2793 (11.4%)\n4. 44 (Расходы на продажу): 2422 (9.9%)\n5. 68 (Расчеты по налогам и сборам): 1553 (6.3%)\n6. 10 (Материалы): 1494 (6.1%)\n7. 19 (НДС по приобретенным ценностям): 1489 (6.1%)\n8. 91 (Прочие доходы и расходы): 1324 (5.4%)\n9. 41 (Товары): 1312 (5.3%)\n10. 76 (Расчеты с разными дебиторами и кредиторами): 1240 (5.0%)\nРазделы с минимальной активностью (среди использованных):\n1. 58 (Финансовые вложения): 2\n2. 81 (Собственные акции (доли)): 2\n3. 80 (Уставный капитал): 5\n4. 03: 6\n5. 04 (Нематериальные активы): 6\n6. 75 (Расчеты с учредителями): 16\n7. 55 (Специальные счета в банках): 18\n8. 84 (Нераспределенная прибыль (непокрытый убыток)): 20\n9. 26 (Общехозяйственные расходы): 51\n10. 71 (Расчеты с подотчетными лицами): 76", + "assistant_reply_first_line": "Профиль типов документов и разделов учета собран (movement-based aggregate).", + "expected_intent": "document_type_and_account_section_profile", + "actual_intent": "document_type_and_account_section_profile", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_document_type_and_account_section_profile_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 147, + "rows_matched": 147, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-9KxpfWz3qt", + "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": [ + "management_profile_signal_detected", + "shape_not_detected", + "document_type_and_account_section_profile_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": "document_type_and_account_section_profile", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_to": "2026-04-02" + }, + "missing_required_filters": [], + "selected_recipe": "address_document_type_and_account_section_profile_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "matched_non_empty", + "rows_fetched": 147, + "raw_rows_received": 147, + "rows_after_account_scope": 147, + "rows_after_recipe_filter": 147, + "rows_materialized": 147, + "rows_matched": 147, + "raw_row_keys_sample": [ + "Период", + "Регистратор", + "СчетДт", + "СчетКт", + "Сумма", + "Period", + "Registrator", + "AccountDt", + "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_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": "Какие разделы учета наиболее заполнены и какие почти не используются?", + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "sanitized_user_message": "какие разделы учета наиболее заполнены и какие почти не используются?", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + }, + "error_code": null, + "error_message": null + } + ] +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterFocusFix_04/response_audit.md b/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterFocusFix_04/response_audit.md new file mode 100644 index 0000000..bdfc295 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterFocusFix_04/response_audit.md @@ -0,0 +1,9 @@ +# Response Audit: 2026-04-02_Address_General5_Live_Check_AfterFocusFix_04 + +| id | strict | route_health | reply_type | intent | limited_reason | question | assistant_first_line | +|---|---|---|---|---|---|---|---| +| Q1 | True | ok_or_factual | factual | period_coverage_profile | None | За какие годы в базе есть данные? | Профиль периодов базы собран (movement-based aggregate). | +| Q2 | True | ok_or_factual | factual | period_coverage_profile | None | Какой год самый активный по количеству документов? | Профиль периодов базы собран (movement-based aggregate). | +| Q3 | True | ok_or_factual | factual | period_coverage_profile | None | Какой месяц самый активный по количеству операций? | Профиль периодов базы собран (movement-based aggregate). | +| Q4 | True | ok_or_factual | factual | document_type_and_account_section_profile | None | Какие типы документов используются чаще всего в базе? | Профиль типов документов и разделов учета собран (movement-based aggregate). | +| Q5 | True | ok_or_factual | factual | document_type_and_account_section_profile | None | Какие разделы учета наиболее заполнены и какие почти не используются? | Профиль типов документов и разделов учета собран (movement-based aggregate). | diff --git a/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterFocusFix_04/run_summary.json b/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterFocusFix_04/run_summary.json new file mode 100644 index 0000000..13e9a2b --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterFocusFix_04/run_summary.json @@ -0,0 +1,45 @@ +{ + "run_id": "2026-04-02_Address_General5_Live_Check_AfterFocusFix_04", + "generated_at": "2026-04-02T20:11:30", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\temp_general5_live_check_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", + "strict_policy": "route", + "totals": { + "questions_total": 5, + "ok_200_count": 5, + "semantic_pass_count": 5, + "semantic_pass_rate": 1.0, + "route_pass_count": 5, + "route_pass_rate": 1.0, + "strict_pass_count": 5, + "strict_pass_rate": 1.0, + "factual_count": 5, + "partial_coverage_count": 0, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_applied_count": 0, + "avg_elapsed_ms": 2712.4 + }, + "distributions": { + "reply_type": { + "factual": 5 + }, + "actual_intent": { + "period_coverage_profile": 3, + "document_type_and_account_section_profile": 2 + }, + "actual_mode": { + "address_query": 5 + }, + "mcp_call_status": { + "matched_non_empty": 5 + }, + "limited_reason_category": {}, + "route_health": { + "ok_or_factual": 5 + } + } +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterNextPack/README.md b/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterNextPack/README.md new file mode 100644 index 0000000..571f01d --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterNextPack/README.md @@ -0,0 +1,28 @@ +# 2026-04-02_Address_General5_Live_Check_AfterNextPack + +Generated at: 2026-04-02T21:06:53 +Questions file: X:\1C\NDC_1C\docs\ADDRESS\question_sets\temp_general5_live_check_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 +Strict policy: factual + +## Totals +- questions_total: 5 +- ok_200_count: 5 +- semantic_pass_count: 5 +- semantic_pass_rate: 1.0 +- route_pass_count: 5 +- route_pass_rate: 1.0 +- strict_pass_count: 5 +- strict_pass_rate: 1.0 +- factual_count: 5 +- partial_coverage_count: 0 +- clarification_required_count: 0 +- http_error_count: 0 +- llm_decomposition_applied_count: 0 +- avg_elapsed_ms: 3653.8 + +## Files +- run_summary.json +- full_live_results.json +- failures_only.json diff --git a/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterNextPack/failures_only.json b/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterNextPack/failures_only.json new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterNextPack/failures_only.json @@ -0,0 +1 @@ +[] diff --git a/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterNextPack/full_live_results.json b/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterNextPack/full_live_results.json new file mode 100644 index 0000000..2af924e --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterNextPack/full_live_results.json @@ -0,0 +1,769 @@ +{ + "run_id": "2026-04-02_Address_General5_Live_Check_AfterNextPack", + "generated_at": "2026-04-02T21:06:53", + "summary": { + "run_id": "2026-04-02_Address_General5_Live_Check_AfterNextPack", + "generated_at": "2026-04-02T21:06:53", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\temp_general5_live_check_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", + "strict_policy": "factual", + "totals": { + "questions_total": 5, + "ok_200_count": 5, + "semantic_pass_count": 5, + "semantic_pass_rate": 1.0, + "route_pass_count": 5, + "route_pass_rate": 1.0, + "strict_pass_count": 5, + "strict_pass_rate": 1.0, + "factual_count": 5, + "partial_coverage_count": 0, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_applied_count": 0, + "avg_elapsed_ms": 3653.8 + }, + "distributions": { + "reply_type": { + "factual": 5 + }, + "actual_intent": { + "period_coverage_profile": 3, + "document_type_and_account_section_profile": 2 + }, + "actual_mode": { + "address_query": 5 + }, + "mcp_call_status": { + "matched_non_empty": 5 + }, + "limited_reason_category": {}, + "route_health": { + "ok_or_factual": 5 + } + } + }, + "rows": [ + { + "index": 1, + "id": "Q1", + "question": "За какие годы в базе есть данные?", + "session": null, + "session_id": "asst-2026-04-02_Address_General5_Live_Check_AfterNextPack-q1", + "status_code": 200, + "ok": true, + "elapsed_ms": 905, + "reply_type": "factual", + "trace_id": "address-8J2hUefXpX", + "assistant_reply": "Профиль периодов базы собран (movement-based aggregate).\nСтрок агрегата: 134.\nОперационный период с выраженной активностью: 2014..2022.\nНизкоактивный хвост (единичные записи): 2023, 2025, 2026.\nПолный технический диапазон дат: 2014-05-27T12:00:00Z.. 2026-03-31T00:00:00Z.", + "assistant_reply_first_line": "Профиль периодов базы собран (movement-based aggregate).", + "expected_intent": "period_coverage_profile", + "actual_intent": "period_coverage_profile", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "factual", + "strict_pass": true, + "selected_recipe": "address_period_coverage_profile_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 134, + "rows_matched": 134, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-8J2hUefXpX", + "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": [ + "management_profile_signal_detected", + "shape_not_detected", + "period_coverage_profile_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": "period_coverage_profile", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_to": "2026-04-02" + }, + "missing_required_filters": [], + "selected_recipe": "address_period_coverage_profile_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "matched_non_empty", + "rows_fetched": 134, + "raw_rows_received": 134, + "rows_after_account_scope": 134, + "rows_after_recipe_filter": 134, + "rows_materialized": 134, + "rows_matched": 134, + "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_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": "За какие годы в базе есть данные?", + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "sanitized_user_message": "за какие годы в базе есть данные?", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + }, + "error_code": null, + "error_message": null + }, + { + "index": 2, + "id": "Q2", + "question": "Какой год самый активный по количеству документов?", + "session": null, + "session_id": "asst-2026-04-02_Address_General5_Live_Check_AfterNextPack-q2", + "status_code": 200, + "ok": true, + "elapsed_ms": 7055, + "reply_type": "factual", + "trace_id": "address-B_bb26I1tB", + "assistant_reply": "Профиль периодов базы собран (movement-based aggregate).\nСтрок агрегата: 134.\nСамый активный год по документам: 2019 (1004).\n1. 2019: 1004\n2. 2018: 703\n3. 2015: 671\n4. 2016: 577\n5. 2020: 536", + "assistant_reply_first_line": "Профиль периодов базы собран (movement-based aggregate).", + "expected_intent": "period_coverage_profile", + "actual_intent": "period_coverage_profile", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "factual", + "strict_pass": true, + "selected_recipe": "address_period_coverage_profile_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 134, + "rows_matched": 134, + "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, + "debug_payload": { + "trace_id": "address-B_bb26I1tB", + "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": [ + "management_profile_signal_detected", + "document_list_signal_detected", + "period_coverage_profile_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": "period_coverage_profile", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_to": "2026-04-02" + }, + "missing_required_filters": [], + "selected_recipe": "address_period_coverage_profile_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "matched_non_empty", + "rows_fetched": 134, + "raw_rows_received": 134, + "rows_after_account_scope": 134, + "rows_after_recipe_filter": 134, + "rows_materialized": 134, + "rows_matched": 134, + "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_SUMMARY", + "execution_lane": "address_query", + "llm_decomposition_applied": false, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "yaGqRP2q_a36DM", + "llm_decomposition_effective_message": "Какой год самый активный по количеству документов?", + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "sanitized_user_message": "какой год самый активный по количеству документов?", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "yaGqRP2q_a36DM", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "Какой год самый активный по количеству документов?" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 3, + "id": "Q3", + "question": "Какой месяц самый активный по количеству операций?", + "session": null, + "session_id": "asst-2026-04-02_Address_General5_Live_Check_AfterNextPack-q3", + "status_code": 200, + "ok": true, + "elapsed_ms": 1998, + "reply_type": "factual", + "trace_id": "address-2qu73I71yI", + "assistant_reply": "Профиль периодов базы собран (movement-based aggregate).\nСтрок агрегата: 134.\nСамый активный месяц по операциям: 2015-02 (1249).\n1. 2015-02: 1249\n2. 2015-01: 924\n3. 2018-08: 854\n4. 2019-05: 536\n5. 2017-12: 503", + "assistant_reply_first_line": "Профиль периодов базы собран (movement-based aggregate).", + "expected_intent": "period_coverage_profile", + "actual_intent": "period_coverage_profile", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "factual", + "strict_pass": true, + "selected_recipe": "address_period_coverage_profile_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 134, + "rows_matched": 134, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-2qu73I71yI", + "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": [ + "management_profile_signal_detected", + "shape_not_detected", + "period_coverage_profile_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": "period_coverage_profile", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_to": "2026-04-02" + }, + "missing_required_filters": [], + "selected_recipe": "address_period_coverage_profile_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "matched_non_empty", + "rows_fetched": 134, + "raw_rows_received": 134, + "rows_after_account_scope": 134, + "rows_after_recipe_filter": 134, + "rows_materialized": 134, + "rows_matched": 134, + "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_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": "Какой месяц самый активный по количеству операций?", + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "sanitized_user_message": "какой месяц самый активный по количеству операций?", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + }, + "error_code": null, + "error_message": null + }, + { + "index": 4, + "id": "Q4", + "question": "Какие типы документов используются чаще всего в базе?", + "session": null, + "session_id": "asst-2026-04-02_Address_General5_Live_Check_AfterNextPack-q4", + "status_code": 200, + "ok": true, + "elapsed_ms": 7349, + "reply_type": "factual", + "trace_id": "address-7Vm8W8ioP-", + "assistant_reply": "Профиль типов документов и разделов учета собран (movement-based aggregate).\nСтрок агрегата: 147.\nТоп типов документов (по числу уникальных регистраторов):\n1. Списание с расчетного счета: 2352 (52.6%)\n2. Поступление товаров и услуг: 486 (10.9%)\n3. Регламентная операция: 414 (9.3%)\n4. Поступление на расчетный счет: 323 (7.2%)\n5. Счет-фактура полученный: 261 (5.8%)\n6. Операция (бухгалтерский и налоговый учет): 147 (3.3%)\n7. Реализация товаров и услуг: 123 (2.8%)\n8. Отражение зарплаты в регламентированном учете: 87 (1.9%)\n9. Приходный кассовый ордер: 76 (1.7%)\n10. Расходный кассовый ордер: 73 (1.6%)", + "assistant_reply_first_line": "Профиль типов документов и разделов учета собран (movement-based aggregate).", + "expected_intent": "document_type_and_account_section_profile", + "actual_intent": "document_type_and_account_section_profile", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "factual", + "strict_pass": true, + "selected_recipe": "address_document_type_and_account_section_profile_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 147, + "rows_matched": 147, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-7Vm8W8ioP-", + "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", + "document_type_and_account_section_profile_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": "document_type_and_account_section_profile", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_to": "2026-04-02" + }, + "missing_required_filters": [], + "selected_recipe": "address_document_type_and_account_section_profile_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "matched_non_empty", + "rows_fetched": 147, + "raw_rows_received": 147, + "rows_after_account_scope": 147, + "rows_after_recipe_filter": 147, + "rows_materialized": 147, + "rows_matched": 147, + "raw_row_keys_sample": [ + "Период", + "Регистратор", + "СчетДт", + "СчетКт", + "Сумма", + "Period", + "Registrator", + "AccountDt", + "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_SUMMARY", + "execution_lane": "address_query", + "llm_decomposition_applied": false, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "HD-Gzx7qj5iYfQ", + "llm_decomposition_effective_message": "Какие типы документов используются чаще всего в базе?", + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "sanitized_user_message": "какие типы документов используются чаще всего в базе?", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "HD-Gzx7qj5iYfQ", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "Какие типы документов используются чаще всего в базе?" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 5, + "id": "Q5", + "question": "Какие разделы учета наиболее заполнены и какие почти не используются?", + "session": null, + "session_id": "asst-2026-04-02_Address_General5_Live_Check_AfterNextPack-q5", + "status_code": 200, + "ok": true, + "elapsed_ms": 962, + "reply_type": "factual", + "trace_id": "address-TbMJKjcLPN", + "assistant_reply": "Профиль типов документов и разделов учета собран (movement-based aggregate).\nСтрок агрегата: 147.\nНаиболее заполненные разделы учета (по операциям Дт+Кт):\n1. 90 (Продажи): 2973 (12.1%)\n2. 51 (Расчетные счета): 2967 (12.1%)\n3. 60 (Расчеты с поставщиками и подрядчиками): 2793 (11.4%)\n4. 44 (Расходы на продажу): 2422 (9.9%)\n5. 68 (Расчеты по налогам и сборам): 1553 (6.3%)\n6. 10 (Материалы): 1494 (6.1%)\n7. 19 (НДС по приобретенным ценностям): 1489 (6.1%)\n8. 91 (Прочие доходы и расходы): 1324 (5.4%)\n9. 41 (Товары): 1312 (5.3%)\n10. 76 (Расчеты с разными дебиторами и кредиторами): 1240 (5.0%)\nРазделы с минимальной активностью (среди использованных):\n1. 58 (Финансовые вложения): 2\n2. 81 (Собственные акции (доли)): 2\n3. 80 (Уставный капитал): 5\n4. 03: 6\n5. 04 (Нематериальные активы): 6\n6. 75 (Расчеты с учредителями): 16\n7. 55 (Специальные счета в банках): 18\n8. 84 (Нераспределенная прибыль (непокрытый убыток)): 20\n9. 26 (Общехозяйственные расходы): 51\n10. 71 (Расчеты с подотчетными лицами): 76", + "assistant_reply_first_line": "Профиль типов документов и разделов учета собран (movement-based aggregate).", + "expected_intent": "document_type_and_account_section_profile", + "actual_intent": "document_type_and_account_section_profile", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "factual", + "strict_pass": true, + "selected_recipe": "address_document_type_and_account_section_profile_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 147, + "rows_matched": 147, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-TbMJKjcLPN", + "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": [ + "management_profile_signal_detected", + "shape_not_detected", + "document_type_and_account_section_profile_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": "document_type_and_account_section_profile", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_to": "2026-04-02" + }, + "missing_required_filters": [], + "selected_recipe": "address_document_type_and_account_section_profile_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "matched_non_empty", + "rows_fetched": 147, + "raw_rows_received": 147, + "rows_after_account_scope": 147, + "rows_after_recipe_filter": 147, + "rows_materialized": 147, + "rows_matched": 147, + "raw_row_keys_sample": [ + "Период", + "Регистратор", + "СчетДт", + "СчетКт", + "Сумма", + "Period", + "Registrator", + "AccountDt", + "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_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": "Какие разделы учета наиболее заполнены и какие почти не используются?", + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "sanitized_user_message": "какие разделы учета наиболее заполнены и какие почти не используются?", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + }, + "error_code": null, + "error_message": null + } + ] +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterNextPack/response_audit.md b/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterNextPack/response_audit.md new file mode 100644 index 0000000..44ddd6c --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterNextPack/response_audit.md @@ -0,0 +1,9 @@ +# Response Audit: 2026-04-02_Address_General5_Live_Check_AfterNextPack + +| id | strict | route_health | reply_type | intent | limited_reason | question | assistant_first_line | +|---|---|---|---|---|---|---|---| +| Q1 | True | ok_or_factual | factual | period_coverage_profile | None | За какие годы в базе есть данные? | Профиль периодов базы собран (movement-based aggregate). | +| Q2 | True | ok_or_factual | factual | period_coverage_profile | None | Какой год самый активный по количеству документов? | Профиль периодов базы собран (movement-based aggregate). | +| Q3 | True | ok_or_factual | factual | period_coverage_profile | None | Какой месяц самый активный по количеству операций? | Профиль периодов базы собран (movement-based aggregate). | +| Q4 | True | ok_or_factual | factual | document_type_and_account_section_profile | None | Какие типы документов используются чаще всего в базе? | Профиль типов документов и разделов учета собран (movement-based aggregate). | +| Q5 | True | ok_or_factual | factual | document_type_and_account_section_profile | None | Какие разделы учета наиболее заполнены и какие почти не используются? | Профиль типов документов и разделов учета собран (movement-based aggregate). | diff --git a/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterNextPack/run_summary.json b/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterNextPack/run_summary.json new file mode 100644 index 0000000..8f44b09 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterNextPack/run_summary.json @@ -0,0 +1,45 @@ +{ + "run_id": "2026-04-02_Address_General5_Live_Check_AfterNextPack", + "generated_at": "2026-04-02T21:06:53", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\temp_general5_live_check_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", + "strict_policy": "factual", + "totals": { + "questions_total": 5, + "ok_200_count": 5, + "semantic_pass_count": 5, + "semantic_pass_rate": 1.0, + "route_pass_count": 5, + "route_pass_rate": 1.0, + "strict_pass_count": 5, + "strict_pass_rate": 1.0, + "factual_count": 5, + "partial_coverage_count": 0, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_applied_count": 0, + "avg_elapsed_ms": 3653.8 + }, + "distributions": { + "reply_type": { + "factual": 5 + }, + "actual_intent": { + "period_coverage_profile": 3, + "document_type_and_account_section_profile": 2 + }, + "actual_mode": { + "address_query": 5 + }, + "mcp_call_status": { + "matched_non_empty": 5 + }, + "limited_reason_category": {}, + "route_health": { + "ok_or_factual": 5 + } + } +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterReverseFix/README.md b/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterReverseFix/README.md new file mode 100644 index 0000000..4dfea3c --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterReverseFix/README.md @@ -0,0 +1,28 @@ +# 2026-04-02_Address_General5_Live_Check_AfterReverseFix + +Generated at: 2026-04-02T20:52:16 +Questions file: X:\1C\NDC_1C\docs\ADDRESS\question_sets\temp_general5_live_check_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 +Strict policy: factual + +## Totals +- questions_total: 5 +- ok_200_count: 5 +- semantic_pass_count: 5 +- semantic_pass_rate: 1.0 +- route_pass_count: 5 +- route_pass_rate: 1.0 +- strict_pass_count: 5 +- strict_pass_rate: 1.0 +- factual_count: 5 +- partial_coverage_count: 0 +- clarification_required_count: 0 +- http_error_count: 0 +- llm_decomposition_applied_count: 0 +- avg_elapsed_ms: 2670.4 + +## Files +- run_summary.json +- full_live_results.json +- failures_only.json diff --git a/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterReverseFix/failures_only.json b/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterReverseFix/failures_only.json new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterReverseFix/failures_only.json @@ -0,0 +1 @@ +[] diff --git a/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterReverseFix/full_live_results.json b/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterReverseFix/full_live_results.json new file mode 100644 index 0000000..6dd5950 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterReverseFix/full_live_results.json @@ -0,0 +1,769 @@ +{ + "run_id": "2026-04-02_Address_General5_Live_Check_AfterReverseFix", + "generated_at": "2026-04-02T20:52:16", + "summary": { + "run_id": "2026-04-02_Address_General5_Live_Check_AfterReverseFix", + "generated_at": "2026-04-02T20:52:16", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\temp_general5_live_check_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", + "strict_policy": "factual", + "totals": { + "questions_total": 5, + "ok_200_count": 5, + "semantic_pass_count": 5, + "semantic_pass_rate": 1.0, + "route_pass_count": 5, + "route_pass_rate": 1.0, + "strict_pass_count": 5, + "strict_pass_rate": 1.0, + "factual_count": 5, + "partial_coverage_count": 0, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_applied_count": 0, + "avg_elapsed_ms": 2670.4 + }, + "distributions": { + "reply_type": { + "factual": 5 + }, + "actual_intent": { + "period_coverage_profile": 3, + "document_type_and_account_section_profile": 2 + }, + "actual_mode": { + "address_query": 5 + }, + "mcp_call_status": { + "matched_non_empty": 5 + }, + "limited_reason_category": {}, + "route_health": { + "ok_or_factual": 5 + } + } + }, + "rows": [ + { + "index": 1, + "id": "Q1", + "question": "За какие годы в базе есть данные?", + "session": null, + "session_id": "asst-2026-04-02_Address_General5_Live_Check_AfterReverseFix-q1", + "status_code": 200, + "ok": true, + "elapsed_ms": 1112, + "reply_type": "factual", + "trace_id": "address-gt4_phWphT", + "assistant_reply": "Профиль периодов базы собран (movement-based aggregate).\nСтрок агрегата: 134.\nОперационный период с выраженной активностью: 2014..2022.\nНизкоактивный хвост (единичные записи): 2023, 2025, 2026.\nПолный технический диапазон дат: 2014-05-27T12:00:00Z.. 2026-03-31T00:00:00Z.", + "assistant_reply_first_line": "Профиль периодов базы собран (movement-based aggregate).", + "expected_intent": "period_coverage_profile", + "actual_intent": "period_coverage_profile", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "factual", + "strict_pass": true, + "selected_recipe": "address_period_coverage_profile_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 134, + "rows_matched": 134, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-gt4_phWphT", + "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": [ + "management_profile_signal_detected", + "shape_not_detected", + "period_coverage_profile_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": "period_coverage_profile", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_to": "2026-04-02" + }, + "missing_required_filters": [], + "selected_recipe": "address_period_coverage_profile_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "matched_non_empty", + "rows_fetched": 134, + "raw_rows_received": 134, + "rows_after_account_scope": 134, + "rows_after_recipe_filter": 134, + "rows_materialized": 134, + "rows_matched": 134, + "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_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": "За какие годы в базе есть данные?", + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "sanitized_user_message": "за какие годы в базе есть данные?", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + }, + "error_code": null, + "error_message": null + }, + { + "index": 2, + "id": "Q2", + "question": "Какой год самый активный по количеству документов?", + "session": null, + "session_id": "asst-2026-04-02_Address_General5_Live_Check_AfterReverseFix-q2", + "status_code": 200, + "ok": true, + "elapsed_ms": 5044, + "reply_type": "factual", + "trace_id": "address-VdsAJmYHgW", + "assistant_reply": "Профиль периодов базы собран (movement-based aggregate).\nСтрок агрегата: 134.\nСамый активный год по документам: 2019 (1004).\n1. 2019: 1004\n2. 2018: 703\n3. 2015: 671\n4. 2016: 577\n5. 2020: 536", + "assistant_reply_first_line": "Профиль периодов базы собран (movement-based aggregate).", + "expected_intent": "period_coverage_profile", + "actual_intent": "period_coverage_profile", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "factual", + "strict_pass": true, + "selected_recipe": "address_period_coverage_profile_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 134, + "rows_matched": 134, + "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, + "debug_payload": { + "trace_id": "address-VdsAJmYHgW", + "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": [ + "management_profile_signal_detected", + "document_list_signal_detected", + "period_coverage_profile_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": "period_coverage_profile", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_to": "2026-04-02" + }, + "missing_required_filters": [], + "selected_recipe": "address_period_coverage_profile_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "matched_non_empty", + "rows_fetched": 134, + "raw_rows_received": 134, + "rows_after_account_scope": 134, + "rows_after_recipe_filter": 134, + "rows_materialized": 134, + "rows_matched": 134, + "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_SUMMARY", + "execution_lane": "address_query", + "llm_decomposition_applied": false, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "XjOmBTjLbXP2n7", + "llm_decomposition_effective_message": "Какой год самый активный по количеству документов?", + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "sanitized_user_message": "какой год самый активный по количеству документов?", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "XjOmBTjLbXP2n7", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "Какой год самый активный по количеству документов?" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 3, + "id": "Q3", + "question": "Какой месяц самый активный по количеству операций?", + "session": null, + "session_id": "asst-2026-04-02_Address_General5_Live_Check_AfterReverseFix-q3", + "status_code": 200, + "ok": true, + "elapsed_ms": 1018, + "reply_type": "factual", + "trace_id": "address-gq-TeIhTfe", + "assistant_reply": "Профиль периодов базы собран (movement-based aggregate).\nСтрок агрегата: 134.\nСамый активный месяц по операциям: 2015-02 (1249).\n1. 2015-02: 1249\n2. 2015-01: 924\n3. 2018-08: 854\n4. 2019-05: 536\n5. 2017-12: 503", + "assistant_reply_first_line": "Профиль периодов базы собран (movement-based aggregate).", + "expected_intent": "period_coverage_profile", + "actual_intent": "period_coverage_profile", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "factual", + "strict_pass": true, + "selected_recipe": "address_period_coverage_profile_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 134, + "rows_matched": 134, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-gq-TeIhTfe", + "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": [ + "management_profile_signal_detected", + "shape_not_detected", + "period_coverage_profile_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": "period_coverage_profile", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_to": "2026-04-02" + }, + "missing_required_filters": [], + "selected_recipe": "address_period_coverage_profile_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "matched_non_empty", + "rows_fetched": 134, + "raw_rows_received": 134, + "rows_after_account_scope": 134, + "rows_after_recipe_filter": 134, + "rows_materialized": 134, + "rows_matched": 134, + "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_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": "Какой месяц самый активный по количеству операций?", + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "sanitized_user_message": "какой месяц самый активный по количеству операций?", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + }, + "error_code": null, + "error_message": null + }, + { + "index": 4, + "id": "Q4", + "question": "Какие типы документов используются чаще всего в базе?", + "session": null, + "session_id": "asst-2026-04-02_Address_General5_Live_Check_AfterReverseFix-q4", + "status_code": 200, + "ok": true, + "elapsed_ms": 5177, + "reply_type": "factual", + "trace_id": "address-JVeZqbkygd", + "assistant_reply": "Профиль типов документов и разделов учета собран (movement-based aggregate).\nСтрок агрегата: 147.\nТоп типов документов (по числу уникальных регистраторов):\n1. Списание с расчетного счета: 2352 (52.6%)\n2. Поступление товаров и услуг: 486 (10.9%)\n3. Регламентная операция: 414 (9.3%)\n4. Поступление на расчетный счет: 323 (7.2%)\n5. Счет-фактура полученный: 261 (5.8%)\n6. Операция (бухгалтерский и налоговый учет): 147 (3.3%)\n7. Реализация товаров и услуг: 123 (2.8%)\n8. Отражение зарплаты в регламентированном учете: 87 (1.9%)\n9. Приходный кассовый ордер: 76 (1.7%)\n10. Расходный кассовый ордер: 73 (1.6%)", + "assistant_reply_first_line": "Профиль типов документов и разделов учета собран (movement-based aggregate).", + "expected_intent": "document_type_and_account_section_profile", + "actual_intent": "document_type_and_account_section_profile", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "factual", + "strict_pass": true, + "selected_recipe": "address_document_type_and_account_section_profile_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 147, + "rows_matched": 147, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-JVeZqbkygd", + "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", + "document_type_and_account_section_profile_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": "document_type_and_account_section_profile", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_to": "2026-04-02" + }, + "missing_required_filters": [], + "selected_recipe": "address_document_type_and_account_section_profile_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "matched_non_empty", + "rows_fetched": 147, + "raw_rows_received": 147, + "rows_after_account_scope": 147, + "rows_after_recipe_filter": 147, + "rows_materialized": 147, + "rows_matched": 147, + "raw_row_keys_sample": [ + "Период", + "Регистратор", + "СчетДт", + "СчетКт", + "Сумма", + "Period", + "Registrator", + "AccountDt", + "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_SUMMARY", + "execution_lane": "address_query", + "llm_decomposition_applied": false, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "9kh3MZnV3-IXQJ", + "llm_decomposition_effective_message": "Какие типы документов используются чаще всего в базе?", + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "sanitized_user_message": "какие типы документов используются чаще всего в базе?", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "9kh3MZnV3-IXQJ", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "Какие типы документов используются чаще всего в базе?" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 5, + "id": "Q5", + "question": "Какие разделы учета наиболее заполнены и какие почти не используются?", + "session": null, + "session_id": "asst-2026-04-02_Address_General5_Live_Check_AfterReverseFix-q5", + "status_code": 200, + "ok": true, + "elapsed_ms": 1001, + "reply_type": "factual", + "trace_id": "address-L4Ak23OiJH", + "assistant_reply": "Профиль типов документов и разделов учета собран (movement-based aggregate).\nСтрок агрегата: 147.\nНаиболее заполненные разделы учета (по операциям Дт+Кт):\n1. 90 (Продажи): 2973 (12.1%)\n2. 51 (Расчетные счета): 2967 (12.1%)\n3. 60 (Расчеты с поставщиками и подрядчиками): 2793 (11.4%)\n4. 44 (Расходы на продажу): 2422 (9.9%)\n5. 68 (Расчеты по налогам и сборам): 1553 (6.3%)\n6. 10 (Материалы): 1494 (6.1%)\n7. 19 (НДС по приобретенным ценностям): 1489 (6.1%)\n8. 91 (Прочие доходы и расходы): 1324 (5.4%)\n9. 41 (Товары): 1312 (5.3%)\n10. 76 (Расчеты с разными дебиторами и кредиторами): 1240 (5.0%)\nРазделы с минимальной активностью (среди использованных):\n1. 58 (Финансовые вложения): 2\n2. 81 (Собственные акции (доли)): 2\n3. 80 (Уставный капитал): 5\n4. 03: 6\n5. 04 (Нематериальные активы): 6\n6. 75 (Расчеты с учредителями): 16\n7. 55 (Специальные счета в банках): 18\n8. 84 (Нераспределенная прибыль (непокрытый убыток)): 20\n9. 26 (Общехозяйственные расходы): 51\n10. 71 (Расчеты с подотчетными лицами): 76", + "assistant_reply_first_line": "Профиль типов документов и разделов учета собран (movement-based aggregate).", + "expected_intent": "document_type_and_account_section_profile", + "actual_intent": "document_type_and_account_section_profile", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "factual", + "strict_pass": true, + "selected_recipe": "address_document_type_and_account_section_profile_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 147, + "rows_matched": 147, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-L4Ak23OiJH", + "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": [ + "management_profile_signal_detected", + "shape_not_detected", + "document_type_and_account_section_profile_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": "document_type_and_account_section_profile", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_to": "2026-04-02" + }, + "missing_required_filters": [], + "selected_recipe": "address_document_type_and_account_section_profile_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "matched_non_empty", + "rows_fetched": 147, + "raw_rows_received": 147, + "rows_after_account_scope": 147, + "rows_after_recipe_filter": 147, + "rows_materialized": 147, + "rows_matched": 147, + "raw_row_keys_sample": [ + "Период", + "Регистратор", + "СчетДт", + "СчетКт", + "Сумма", + "Period", + "Registrator", + "AccountDt", + "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_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": "Какие разделы учета наиболее заполнены и какие почти не используются?", + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "sanitized_user_message": "какие разделы учета наиболее заполнены и какие почти не используются?", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + }, + "error_code": null, + "error_message": null + } + ] +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterReverseFix/response_audit.md b/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterReverseFix/response_audit.md new file mode 100644 index 0000000..1d76074 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterReverseFix/response_audit.md @@ -0,0 +1,9 @@ +# Response Audit: 2026-04-02_Address_General5_Live_Check_AfterReverseFix + +| id | strict | route_health | reply_type | intent | limited_reason | question | assistant_first_line | +|---|---|---|---|---|---|---|---| +| Q1 | True | ok_or_factual | factual | period_coverage_profile | None | За какие годы в базе есть данные? | Профиль периодов базы собран (movement-based aggregate). | +| Q2 | True | ok_or_factual | factual | period_coverage_profile | None | Какой год самый активный по количеству документов? | Профиль периодов базы собран (movement-based aggregate). | +| Q3 | True | ok_or_factual | factual | period_coverage_profile | None | Какой месяц самый активный по количеству операций? | Профиль периодов базы собран (movement-based aggregate). | +| Q4 | True | ok_or_factual | factual | document_type_and_account_section_profile | None | Какие типы документов используются чаще всего в базе? | Профиль типов документов и разделов учета собран (movement-based aggregate). | +| Q5 | True | ok_or_factual | factual | document_type_and_account_section_profile | None | Какие разделы учета наиболее заполнены и какие почти не используются? | Профиль типов документов и разделов учета собран (movement-based aggregate). | diff --git a/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterReverseFix/run_summary.json b/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterReverseFix/run_summary.json new file mode 100644 index 0000000..bcb2d18 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_General5_Live_Check_AfterReverseFix/run_summary.json @@ -0,0 +1,45 @@ +{ + "run_id": "2026-04-02_Address_General5_Live_Check_AfterReverseFix", + "generated_at": "2026-04-02T20:52:16", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\temp_general5_live_check_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", + "strict_policy": "factual", + "totals": { + "questions_total": 5, + "ok_200_count": 5, + "semantic_pass_count": 5, + "semantic_pass_rate": 1.0, + "route_pass_count": 5, + "route_pass_rate": 1.0, + "strict_pass_count": 5, + "strict_pass_rate": 1.0, + "factual_count": 5, + "partial_coverage_count": 0, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_applied_count": 0, + "avg_elapsed_ms": 2670.4 + }, + "distributions": { + "reply_type": { + "factual": 5 + }, + "actual_intent": { + "period_coverage_profile": 3, + "document_type_and_account_section_profile": 2 + }, + "actual_mode": { + "address_query": 5 + }, + "mcp_call_status": { + "matched_non_empty": 5 + }, + "limited_reason_category": {}, + "route_health": { + "ok_or_factual": 5 + } + } +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_LLM_First_Gate_Probe/README.md b/docs/ADDRESS/runs/2026-04-02_Address_LLM_First_Gate_Probe/README.md new file mode 100644 index 0000000..bcef7d1 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_LLM_First_Gate_Probe/README.md @@ -0,0 +1,28 @@ +# 2026-04-02_Address_LLM_First_Gate_Probe + +Generated at: 2026-04-02T21:57:17 +Questions file: X:\1C\NDC_1C\docs\ADDRESS\question_sets\temp_llm_first_gate_probe_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 +Strict policy: factual + +## Totals +- questions_total: 4 +- ok_200_count: 4 +- semantic_pass_count: 4 +- semantic_pass_rate: 1.0 +- route_pass_count: 3 +- route_pass_rate: 0.75 +- strict_pass_count: 3 +- strict_pass_rate: 0.75 +- factual_count: 3 +- partial_coverage_count: 1 +- clarification_required_count: 0 +- http_error_count: 0 +- llm_decomposition_applied_count: 2 +- avg_elapsed_ms: 6017.5 + +## Files +- run_summary.json +- full_live_results.json +- failures_only.json diff --git a/docs/ADDRESS/runs/2026-04-02_Address_LLM_First_Gate_Probe/failures_only.json b/docs/ADDRESS/runs/2026-04-02_Address_LLM_First_Gate_Probe/failures_only.json new file mode 100644 index 0000000..194b65c --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_LLM_First_Gate_Probe/failures_only.json @@ -0,0 +1,141 @@ +[ + { + "index": 4, + "id": "L004", + "question": "кто у нас заказчики вообще", + "session": null, + "session_id": "asst-2026-04-02_Address_LLM_First_Gate_Probe-l004", + "status_code": 200, + "ok": true, + "elapsed_ms": 4493, + "reply_type": "partial_coverage", + "trace_id": "address-414GMyc_O7", + "assistant_reply": "Этот запрос не подходит под address_query V1.\nПричина: intent пока не поддержан в address V1.\nЧто нужно уточнить: переформулируйте вопрос как адресный lookup по счету/контрагенту/договору.", + "assistant_reply_first_line": "Этот запрос не подходит под address_query V1.", + "expected_intent": null, + "actual_intent": "unknown", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": false, + "route_health": "blocked_unsupported", + "strict_policy": "factual", + "strict_pass": false, + "selected_recipe": null, + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 0, + "rows_matched": 0, + "mcp_call_status": "skipped", + "limited_reason_category": "unsupported", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-414GMyc_O7", + "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": false, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "wrWnx-j7j-vZsF", + "llm_decomposition_effective_message": "кто у нас заказчики вообще", + "llm_decomposition_reason": "normalized_fragment_same", + "llm_canonical_candidate_detected": true, + "fallback_rule_hit": null, + "sanitized_user_message": "кто у нас заказчики вообще", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "wrWnx-j7j-vZsF", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "кто у нас заказчики вообще" + } + }, + "error_code": null, + "error_message": null + } +] diff --git a/docs/ADDRESS/runs/2026-04-02_Address_LLM_First_Gate_Probe/full_live_results.json b/docs/ADDRESS/runs/2026-04-02_Address_LLM_First_Gate_Probe/full_live_results.json new file mode 100644 index 0000000..6e57589 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_LLM_First_Gate_Probe/full_live_results.json @@ -0,0 +1,644 @@ +{ + "run_id": "2026-04-02_Address_LLM_First_Gate_Probe", + "generated_at": "2026-04-02T21:57:17", + "summary": { + "run_id": "2026-04-02_Address_LLM_First_Gate_Probe", + "generated_at": "2026-04-02T21:57:17", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\temp_llm_first_gate_probe_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", + "strict_policy": "factual", + "totals": { + "questions_total": 4, + "ok_200_count": 4, + "semantic_pass_count": 4, + "semantic_pass_rate": 1.0, + "route_pass_count": 3, + "route_pass_rate": 0.75, + "strict_pass_count": 3, + "strict_pass_rate": 0.75, + "factual_count": 3, + "partial_coverage_count": 1, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_applied_count": 2, + "avg_elapsed_ms": 6017.5 + }, + "distributions": { + "reply_type": { + "factual": 3, + "partial_coverage": 1 + }, + "actual_intent": { + "counterparty_activity_lifecycle": 3, + "unknown": 1 + }, + "actual_mode": { + "address_query": 4 + }, + "mcp_call_status": { + "matched_non_empty": 3, + "skipped": 1 + }, + "limited_reason_category": { + "unsupported": 1 + }, + "route_health": { + "ok_or_factual": 3, + "blocked_unsupported": 1 + } + } + }, + "rows": [ + { + "index": 1, + "id": "L001", + "question": "выведи список заказчиков за все время", + "session": null, + "session_id": "asst-2026-04-02_Address_LLM_First_Gate_Probe-l001", + "status_code": 200, + "ok": true, + "elapsed_ms": 6424, + "reply_type": "factual", + "trace_id": "address-sxbvqGcLxb", + "assistant_reply": "Собран профиль активности заказчиков (bank-doc activity aggregate).\nСтрок агрегата: 46.\nАктивные заказчики за все время: 46.\n1. ГКУ | операций: 44 | последняя активность: 2019-12-25T16:09:27Z\n2. ГБУ \\Многофункциональный центр\\ | операций: 38 | последняя активность: 2018-12-04T12:00:01Z\n3. СБЕРБАНК, ПАО | операций: 36 | последняя активность: 2020-03-02T12:00:04Z\n4. Комитет государственных услуг г. Москвы | операций: 27 | последняя активность: 2015-05-19T12:00:00Z\n5. Группа | операций: 26 | последняя активность: 2021-11-10T12:00:07Z\n6. НОРТОН | операций: 14 | последняя активность: 2022-01-20T12:00:05Z\n7. МНН | операций: 14 | последняя активность: 2022-01-20T12:00:04Z\n8. МОСКОВСКИЙ ФИЛИАЛ ООО КБ\\МЕГАПОЛИС\\ | операций: 11 | последняя активность: 2019-07-31T12:00:22Z\n9. Департамент капитального ремонта города Москвы. | операций: 10 | последняя активность: 2019-09-16T11:00:00Z\n10. Департамент финансов города Москвы | операций: 10 | последняя активность: 2015-12-29T12:00:03Z\n11. Лайсвуд, ООО | операций: 7 | последняя активность: 2020-03-02T12:00:02Z\n12. Единая электронная торговая площадка, АО | операций: 7 | последняя активность: 2018-08-10T12:00:00Z\n13. ЭталонМебель | операций: 6 | последняя активность: 2020-04-27T12:00:00Z\n14. ИП Калинин Н.М. | операций: 5 | последняя активность: 2020-03-02T12:00:03Z\n15. Элмаш-К | операций: 5 | последняя активность: 2018-02-06T12:32:17Z\n16. ГТК-Интер, ООО | операций: 5 | последняя активность: 2016-07-07T12:00:00Z\n17. Гамма-мебель, ООО | операций: 4 | последняя активность: 2020-08-11T13:15:30Z\n18. Смарт | операций: 4 | последняя активность: 2020-02-07T12:00:03Z\n19. Сбербанк-АСТ, ЗАО | операций: 4 | последняя активность: 2017-07-26T12:00:00Z\n20. КБ \\НЕФТЯНОЙ АЛЬЯНС\\ (ПАО) (Расчетный) | операций: 4 | последняя активность: 2015-02-05T12:00:06Z\n21. ЗАО Ремонтно-строительная фирма «Ремстройсервис» | операций: 3 | последняя активность: 2020-06-03T00:00:02Z\n22. ПрофТренд,ООО | операций: 3 | последняя активность: 2020-05-15T12:00:02Z\n23. ГБПОУ г. Москвы \\Московская театральная школа Олега Табакова\\ | операций: 3 | последняя активность: 2019-10-25T12:00:00Z\n24. Газпром авиа, ООО | операций: 3 | последняя активность: 2016-11-29T12:00:01Z\n25. ФГКУ \\Центрреставрация\\ | операций: 3 | последняя активность: 2015-12-30T12:00:03Z\n26. РАЙМ, ООО | операций: 3 | последняя активность: 2015-08-13T12:00:00Z\n27. СервисКонсалт, ООО | операций: 2 | последняя активность: 2022-04-13T12:00:00Z\n30. УФК по г. Москве (ГУ - | операций: 2 | последняя активность: 2018-12-12T12:00:01Z\n31. Чепурнов П.Д. | операций: 1 | последняя активность: 2022-01-20T12:00:03Z\n32. «Олимпстрой» | операций: 1 | последняя активность: 2020-07-13T12:00:00Z\n33. КПК \\Столичная Сберегательная компания\\ | операций: 1 | последняя активность: 2019-04-17T12:00:00Z\n34. РТС-тендер | операций: 1 | последняя активность: 2018-12-17T00:00:00Z\n35. ФГБУ «УЗС» | операций: 1 | последняя активность: 2018-12-13T12:00:02Z\n36. АС \\ЕО | операций: 1 | последняя активность: 2018-01-15T13:25:36Z\n37. АкваСервис, ООО | операций: 1 | последняя активность: 2017-09-19T12:00:01Z\n38. ГБУ МФЦ города Москвы | операций: 1 | последняя активность: 2017-04-27T00:00:00Z\n39. \\Жуковка 51\\ | операций: 1 | последняя активность: 2017-04-10T16:50:38Z\n40. 0 | операций: 1 | последняя активность: 2017-03-02T12:00:00Z\n41. ФГБОУ ВО \\Московский государственный университет имени М.В. Ломоносова\\ | операций: 1 | последняя активность: 2016-11-25T00:00:00Z\n42. ДжетАэроКонцепт, ООО | операций: 1 | последняя активность: 2016-08-18T13:13:35Z\n43. УМ и автотранспорта, ЗАО | операций: 1 | последняя активность: 2015-12-24T12:00:00Z\n44. Межрегиональное операционное УФК | операций: 1 | последняя активность: 2015-11-12T12:00:00Z\n45. Банк ГПБ (АО) г. Москва | операций: 1 | последняя активность: 2015-10-30T12:00:03Z\n46. Спецстрой, ООО | операций: 1 | последняя активность: 2015-09-14T12:00:00Z", + "assistant_reply_first_line": "Собран профиль активности заказчиков (bank-doc activity aggregate).", + "expected_intent": null, + "actual_intent": "counterparty_activity_lifecycle", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "factual", + "strict_pass": true, + "selected_recipe": "address_counterparty_activity_lifecycle_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 46, + "rows_matched": 46, + "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, + "debug_payload": { + "trace_id": "address-sxbvqGcLxb", + "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", + "counterparty_activity_lifecycle_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": "counterparty_activity_lifecycle", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_to": "2026-04-02" + }, + "missing_required_filters": [], + "selected_recipe": "address_counterparty_activity_lifecycle_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "matched_non_empty", + "rows_fetched": 46, + "raw_rows_received": 46, + "rows_after_account_scope": 46, + "rows_after_recipe_filter": 46, + "rows_materialized": 46, + "rows_matched": 46, + "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": "a-PnLhvp20bMLy", + "llm_decomposition_effective_message": "выведи список заказчиков за все время", + "llm_decomposition_reason": "normalized_fragment_rejected_intent_drop", + "llm_canonical_candidate_detected": true, + "fallback_rule_hit": null, + "sanitized_user_message": "выведи список заказчиков за все время", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "a-PnLhvp20bMLy", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "выведи список заказчиков за все время" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 2, + "id": "L002", + "question": "покажи список заказчиков за 20год", + "session": null, + "session_id": "asst-2026-04-02_Address_LLM_First_Gate_Probe-l002", + "status_code": 200, + "ok": true, + "elapsed_ms": 6036, + "reply_type": "factual", + "trace_id": "address-3soDVivayR", + "assistant_reply": "Собран профиль активности заказчиков (bank-doc activity aggregate).\nСтрок агрегата: 13.\nАктивные заказчики в 2020 году: 13.\n1. Группа | операций: 13 | последняя активность: 2020-12-30T12:00:00Z\n2. СБЕРБАНК, ПАО | операций: 9 | последняя активность: 2020-03-02T12:00:04Z\n3. ЭталонМебель | операций: 4 | последняя активность: 2020-04-27T12:00:00Z\n4. Гамма-мебель, ООО | операций: 3 | последняя активность: 2020-08-11T13:15:30Z\n5. ЗАО Ремонтно-строительная фирма «Ремстройсервис» | операций: 3 | последняя активность: 2020-06-03T00:00:02Z\n6. НОРТОН | операций: 3 | последняя активность: 2020-03-19T12:00:00Z\n8. ИП Калинин Н.М. | операций: 2 | последняя активность: 2020-03-02T12:00:03Z\n9. МНН | операций: 1 | последняя активность: 2020-08-11T13:16:37Z\n10. «Олимпстрой» | операций: 1 | последняя активность: 2020-07-13T12:00:00Z\n11. ПрофТренд,ООО | операций: 1 | последняя активность: 2020-05-15T12:00:02Z\n12. Лайсвуд, ООО | операций: 1 | последняя активность: 2020-03-02T12:00:02Z\n13. Смарт | операций: 1 | последняя активность: 2020-02-07T12:00:03Z", + "assistant_reply_first_line": "Собран профиль активности заказчиков (bank-doc activity aggregate).", + "expected_intent": null, + "actual_intent": "counterparty_activity_lifecycle", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "factual", + "strict_pass": true, + "selected_recipe": "address_counterparty_activity_lifecycle_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 13, + "rows_matched": 13, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-3soDVivayR", + "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", + "object_signal_detected", + "counterparty_activity_lifecycle_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": "counterparty_activity_lifecycle", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_from": "2020-01-01", + "period_to": "2020-12-31" + }, + "missing_required_filters": [], + "selected_recipe": "address_counterparty_activity_lifecycle_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "matched_non_empty", + "rows_fetched": 13, + "raw_rows_received": 13, + "rows_after_account_scope": 13, + "rows_after_recipe_filter": 13, + "rows_materialized": 13, + "rows_matched": 13, + "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": "W0n_6ilRNhQIt8", + "llm_decomposition_effective_message": "показать список контрагентов (заказчиков) за 2020 год", + "llm_decomposition_reason": "normalized_fragment_applied", + "llm_canonical_candidate_detected": true, + "fallback_rule_hit": null, + "sanitized_user_message": "покажи список заказчиков за 2020 год", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "W0n_6ilRNhQIt8", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "показать список контрагентов (заказчиков) за 2020 год" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 3, + "id": "L003", + "question": "zakazchiki za 20 god spisok", + "session": null, + "session_id": "asst-2026-04-02_Address_LLM_First_Gate_Probe-l003", + "status_code": 200, + "ok": true, + "elapsed_ms": 7117, + "reply_type": "factual", + "trace_id": "address-sCaEDTW2S2", + "assistant_reply": "Собран профиль активности заказчиков (bank-doc activity aggregate).\nСтрок агрегата: 13.\nАктивные заказчики в 2020 году: 13.\n1. Группа | операций: 13 | последняя активность: 2020-12-30T12:00:00Z\n2. СБЕРБАНК, ПАО | операций: 9 | последняя активность: 2020-03-02T12:00:04Z\n3. ЭталонМебель | операций: 4 | последняя активность: 2020-04-27T12:00:00Z\n4. Гамма-мебель, ООО | операций: 3 | последняя активность: 2020-08-11T13:15:30Z\n5. ЗАО Ремонтно-строительная фирма «Ремстройсервис» | операций: 3 | последняя активность: 2020-06-03T00:00:02Z\n6. НОРТОН | операций: 3 | последняя активность: 2020-03-19T12:00:00Z\n8. ИП Калинин Н.М. | операций: 2 | последняя активность: 2020-03-02T12:00:03Z\n9. МНН | операций: 1 | последняя активность: 2020-08-11T13:16:37Z\n10. «Олимпстрой» | операций: 1 | последняя активность: 2020-07-13T12:00:00Z\n11. ПрофТренд,ООО | операций: 1 | последняя активность: 2020-05-15T12:00:02Z\n12. Лайсвуд, ООО | операций: 1 | последняя активность: 2020-03-02T12:00:02Z\n13. Смарт | операций: 1 | последняя активность: 2020-02-07T12:00:03Z", + "assistant_reply_first_line": "Собран профиль активности заказчиков (bank-doc activity aggregate).", + "expected_intent": null, + "actual_intent": "counterparty_activity_lifecycle", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "factual", + "strict_pass": true, + "selected_recipe": "address_counterparty_activity_lifecycle_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 13, + "rows_matched": 13, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-sCaEDTW2S2", + "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", + "counterparty_activity_lifecycle_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": "counterparty_activity_lifecycle", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_from": "2020-01-01", + "period_to": "2020-12-31" + }, + "missing_required_filters": [], + "selected_recipe": "address_counterparty_activity_lifecycle_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "matched_non_empty", + "rows_fetched": 13, + "raw_rows_received": 13, + "rows_after_account_scope": 13, + "rows_after_recipe_filter": 13, + "rows_materialized": 13, + "rows_matched": 13, + "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": "36uHWRfdcSp1Jf", + "llm_decomposition_effective_message": "customers for the year 2020 list", + "llm_decomposition_reason": "normalized_fragment_applied", + "llm_canonical_candidate_detected": true, + "fallback_rule_hit": null, + "sanitized_user_message": "zakazchiki za 2020 год spisok", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "36uHWRfdcSp1Jf", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "customers for the year 2020 list" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 4, + "id": "L004", + "question": "кто у нас заказчики вообще", + "session": null, + "session_id": "asst-2026-04-02_Address_LLM_First_Gate_Probe-l004", + "status_code": 200, + "ok": true, + "elapsed_ms": 4493, + "reply_type": "partial_coverage", + "trace_id": "address-414GMyc_O7", + "assistant_reply": "Этот запрос не подходит под address_query V1.\nПричина: intent пока не поддержан в address V1.\nЧто нужно уточнить: переформулируйте вопрос как адресный lookup по счету/контрагенту/договору.", + "assistant_reply_first_line": "Этот запрос не подходит под address_query V1.", + "expected_intent": null, + "actual_intent": "unknown", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": false, + "route_health": "blocked_unsupported", + "strict_policy": "factual", + "strict_pass": false, + "selected_recipe": null, + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 0, + "rows_matched": 0, + "mcp_call_status": "skipped", + "limited_reason_category": "unsupported", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-414GMyc_O7", + "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": false, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "wrWnx-j7j-vZsF", + "llm_decomposition_effective_message": "кто у нас заказчики вообще", + "llm_decomposition_reason": "normalized_fragment_same", + "llm_canonical_candidate_detected": true, + "fallback_rule_hit": null, + "sanitized_user_message": "кто у нас заказчики вообще", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "wrWnx-j7j-vZsF", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "кто у нас заказчики вообще" + } + }, + "error_code": null, + "error_message": null + } + ] +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_LLM_First_Gate_Probe/response_audit.md b/docs/ADDRESS/runs/2026-04-02_Address_LLM_First_Gate_Probe/response_audit.md new file mode 100644 index 0000000..a5d2858 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_LLM_First_Gate_Probe/response_audit.md @@ -0,0 +1,8 @@ +# Response Audit: 2026-04-02_Address_LLM_First_Gate_Probe + +| id | strict | route_health | reply_type | intent | limited_reason | question | assistant_first_line | +|---|---|---|---|---|---|---|---| +| L001 | True | ok_or_factual | factual | counterparty_activity_lifecycle | None | выведи список заказчиков за все время | Собран профиль активности заказчиков (bank-doc activity aggregate). | +| L002 | True | ok_or_factual | factual | counterparty_activity_lifecycle | None | покажи список заказчиков за 20год | Собран профиль активности заказчиков (bank-doc activity aggregate). | +| L003 | True | ok_or_factual | factual | counterparty_activity_lifecycle | None | zakazchiki za 20 god spisok | Собран профиль активности заказчиков (bank-doc activity aggregate). | +| L004 | False | blocked_unsupported | partial_coverage | unknown | unsupported | кто у нас заказчики вообще | Этот запрос не подходит под address_query V1. | diff --git a/docs/ADDRESS/runs/2026-04-02_Address_LLM_First_Gate_Probe/run_summary.json b/docs/ADDRESS/runs/2026-04-02_Address_LLM_First_Gate_Probe/run_summary.json new file mode 100644 index 0000000..067ae71 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_LLM_First_Gate_Probe/run_summary.json @@ -0,0 +1,50 @@ +{ + "run_id": "2026-04-02_Address_LLM_First_Gate_Probe", + "generated_at": "2026-04-02T21:57:17", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\temp_llm_first_gate_probe_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", + "strict_policy": "factual", + "totals": { + "questions_total": 4, + "ok_200_count": 4, + "semantic_pass_count": 4, + "semantic_pass_rate": 1.0, + "route_pass_count": 3, + "route_pass_rate": 0.75, + "strict_pass_count": 3, + "strict_pass_rate": 0.75, + "factual_count": 3, + "partial_coverage_count": 1, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_applied_count": 2, + "avg_elapsed_ms": 6017.5 + }, + "distributions": { + "reply_type": { + "factual": 3, + "partial_coverage": 1 + }, + "actual_intent": { + "counterparty_activity_lifecycle": 3, + "unknown": 1 + }, + "actual_mode": { + "address_query": 4 + }, + "mcp_call_status": { + "matched_non_empty": 3, + "skipped": 1 + }, + "limited_reason_category": { + "unsupported": 1 + }, + "route_health": { + "ok_or_factual": 3, + "blocked_unsupported": 1 + } + } +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_LLM_First_Gate_Probe_AfterRosterFix/README.md b/docs/ADDRESS/runs/2026-04-02_Address_LLM_First_Gate_Probe_AfterRosterFix/README.md new file mode 100644 index 0000000..659c716 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_LLM_First_Gate_Probe_AfterRosterFix/README.md @@ -0,0 +1,28 @@ +# 2026-04-02_Address_LLM_First_Gate_Probe_AfterRosterFix + +Generated at: 2026-04-02T22:00:35 +Questions file: X:\1C\NDC_1C\docs\ADDRESS\question_sets\temp_llm_first_gate_probe_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 +Strict policy: factual + +## Totals +- questions_total: 4 +- ok_200_count: 4 +- semantic_pass_count: 4 +- semantic_pass_rate: 1.0 +- route_pass_count: 4 +- route_pass_rate: 1.0 +- strict_pass_count: 4 +- strict_pass_rate: 1.0 +- factual_count: 4 +- partial_coverage_count: 0 +- clarification_required_count: 0 +- http_error_count: 0 +- llm_decomposition_applied_count: 2 +- avg_elapsed_ms: 6061.8 + +## Files +- run_summary.json +- full_live_results.json +- failures_only.json diff --git a/docs/ADDRESS/runs/2026-04-02_Address_LLM_First_Gate_Probe_AfterRosterFix/failures_only.json b/docs/ADDRESS/runs/2026-04-02_Address_LLM_First_Gate_Probe_AfterRosterFix/failures_only.json new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_LLM_First_Gate_Probe_AfterRosterFix/failures_only.json @@ -0,0 +1 @@ +[] diff --git a/docs/ADDRESS/runs/2026-04-02_Address_LLM_First_Gate_Probe_AfterRosterFix/full_live_results.json b/docs/ADDRESS/runs/2026-04-02_Address_LLM_First_Gate_Probe_AfterRosterFix/full_live_results.json new file mode 100644 index 0000000..8f4093a --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_LLM_First_Gate_Probe_AfterRosterFix/full_live_results.json @@ -0,0 +1,648 @@ +{ + "run_id": "2026-04-02_Address_LLM_First_Gate_Probe_AfterRosterFix", + "generated_at": "2026-04-02T22:00:35", + "summary": { + "run_id": "2026-04-02_Address_LLM_First_Gate_Probe_AfterRosterFix", + "generated_at": "2026-04-02T22:00:35", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\temp_llm_first_gate_probe_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", + "strict_policy": "factual", + "totals": { + "questions_total": 4, + "ok_200_count": 4, + "semantic_pass_count": 4, + "semantic_pass_rate": 1.0, + "route_pass_count": 4, + "route_pass_rate": 1.0, + "strict_pass_count": 4, + "strict_pass_rate": 1.0, + "factual_count": 4, + "partial_coverage_count": 0, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_applied_count": 2, + "avg_elapsed_ms": 6061.8 + }, + "distributions": { + "reply_type": { + "factual": 4 + }, + "actual_intent": { + "counterparty_activity_lifecycle": 4 + }, + "actual_mode": { + "address_query": 4 + }, + "mcp_call_status": { + "matched_non_empty": 4 + }, + "limited_reason_category": {}, + "route_health": { + "ok_or_factual": 4 + } + } + }, + "rows": [ + { + "index": 1, + "id": "L001", + "question": "выведи список заказчиков за все время", + "session": null, + "session_id": "asst-2026-04-02_Address_LLM_First_Gate_Probe_AfterRosterFix-l001", + "status_code": 200, + "ok": true, + "elapsed_ms": 5929, + "reply_type": "factual", + "trace_id": "address-8Y3-cuGwk9", + "assistant_reply": "Собран профиль активности заказчиков (bank-doc activity aggregate).\nСтрок агрегата: 46.\nАктивные заказчики за все время: 46.\n1. ГКУ | операций: 44 | последняя активность: 2019-12-25T16:09:27Z\n2. ГБУ \\Многофункциональный центр\\ | операций: 38 | последняя активность: 2018-12-04T12:00:01Z\n3. СБЕРБАНК, ПАО | операций: 36 | последняя активность: 2020-03-02T12:00:04Z\n4. Комитет государственных услуг г. Москвы | операций: 27 | последняя активность: 2015-05-19T12:00:00Z\n5. Группа | операций: 26 | последняя активность: 2021-11-10T12:00:07Z\n6. НОРТОН | операций: 14 | последняя активность: 2022-01-20T12:00:05Z\n7. МНН | операций: 14 | последняя активность: 2022-01-20T12:00:04Z\n8. МОСКОВСКИЙ ФИЛИАЛ ООО КБ\\МЕГАПОЛИС\\ | операций: 11 | последняя активность: 2019-07-31T12:00:22Z\n9. Департамент капитального ремонта города Москвы. | операций: 10 | последняя активность: 2019-09-16T11:00:00Z\n10. Департамент финансов города Москвы | операций: 10 | последняя активность: 2015-12-29T12:00:03Z\n11. Лайсвуд, ООО | операций: 7 | последняя активность: 2020-03-02T12:00:02Z\n12. Единая электронная торговая площадка, АО | операций: 7 | последняя активность: 2018-08-10T12:00:00Z\n13. ЭталонМебель | операций: 6 | последняя активность: 2020-04-27T12:00:00Z\n14. ИП Калинин Н.М. | операций: 5 | последняя активность: 2020-03-02T12:00:03Z\n15. Элмаш-К | операций: 5 | последняя активность: 2018-02-06T12:32:17Z\n16. ГТК-Интер, ООО | операций: 5 | последняя активность: 2016-07-07T12:00:00Z\n17. Гамма-мебель, ООО | операций: 4 | последняя активность: 2020-08-11T13:15:30Z\n18. Смарт | операций: 4 | последняя активность: 2020-02-07T12:00:03Z\n19. Сбербанк-АСТ, ЗАО | операций: 4 | последняя активность: 2017-07-26T12:00:00Z\n20. КБ \\НЕФТЯНОЙ АЛЬЯНС\\ (ПАО) (Расчетный) | операций: 4 | последняя активность: 2015-02-05T12:00:06Z\n21. ЗАО Ремонтно-строительная фирма «Ремстройсервис» | операций: 3 | последняя активность: 2020-06-03T00:00:02Z\n22. ПрофТренд,ООО | операций: 3 | последняя активность: 2020-05-15T12:00:02Z\n23. ГБПОУ г. Москвы \\Московская театральная школа Олега Табакова\\ | операций: 3 | последняя активность: 2019-10-25T12:00:00Z\n24. Газпром авиа, ООО | операций: 3 | последняя активность: 2016-11-29T12:00:01Z\n25. ФГКУ \\Центрреставрация\\ | операций: 3 | последняя активность: 2015-12-30T12:00:03Z\n26. РАЙМ, ООО | операций: 3 | последняя активность: 2015-08-13T12:00:00Z\n27. СервисКонсалт, ООО | операций: 2 | последняя активность: 2022-04-13T12:00:00Z\n30. УФК по г. Москве (ГУ - | операций: 2 | последняя активность: 2018-12-12T12:00:01Z\n31. Чепурнов П.Д. | операций: 1 | последняя активность: 2022-01-20T12:00:03Z\n32. «Олимпстрой» | операций: 1 | последняя активность: 2020-07-13T12:00:00Z\n33. КПК \\Столичная Сберегательная компания\\ | операций: 1 | последняя активность: 2019-04-17T12:00:00Z\n34. РТС-тендер | операций: 1 | последняя активность: 2018-12-17T00:00:00Z\n35. ФГБУ «УЗС» | операций: 1 | последняя активность: 2018-12-13T12:00:02Z\n36. АС \\ЕО | операций: 1 | последняя активность: 2018-01-15T13:25:36Z\n37. АкваСервис, ООО | операций: 1 | последняя активность: 2017-09-19T12:00:01Z\n38. ГБУ МФЦ города Москвы | операций: 1 | последняя активность: 2017-04-27T00:00:00Z\n39. \\Жуковка 51\\ | операций: 1 | последняя активность: 2017-04-10T16:50:38Z\n40. 0 | операций: 1 | последняя активность: 2017-03-02T12:00:00Z\n41. ФГБОУ ВО \\Московский государственный университет имени М.В. Ломоносова\\ | операций: 1 | последняя активность: 2016-11-25T00:00:00Z\n42. ДжетАэроКонцепт, ООО | операций: 1 | последняя активность: 2016-08-18T13:13:35Z\n43. УМ и автотранспорта, ЗАО | операций: 1 | последняя активность: 2015-12-24T12:00:00Z\n44. Межрегиональное операционное УФК | операций: 1 | последняя активность: 2015-11-12T12:00:00Z\n45. Банк ГПБ (АО) г. Москва | операций: 1 | последняя активность: 2015-10-30T12:00:03Z\n46. Спецстрой, ООО | операций: 1 | последняя активность: 2015-09-14T12:00:00Z", + "assistant_reply_first_line": "Собран профиль активности заказчиков (bank-doc activity aggregate).", + "expected_intent": null, + "actual_intent": "counterparty_activity_lifecycle", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "factual", + "strict_pass": true, + "selected_recipe": "address_counterparty_activity_lifecycle_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 46, + "rows_matched": 46, + "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, + "debug_payload": { + "trace_id": "address-8Y3-cuGwk9", + "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", + "counterparty_activity_lifecycle_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": "counterparty_activity_lifecycle", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_to": "2026-04-02" + }, + "missing_required_filters": [], + "selected_recipe": "address_counterparty_activity_lifecycle_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "matched_non_empty", + "rows_fetched": 46, + "raw_rows_received": 46, + "rows_after_account_scope": 46, + "rows_after_recipe_filter": 46, + "rows_materialized": 46, + "rows_matched": 46, + "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": "OkR-rjXbZmuhae", + "llm_decomposition_effective_message": "выведи список заказчиков за все время", + "llm_decomposition_reason": "normalized_fragment_rejected_intent_drop", + "llm_canonical_candidate_detected": true, + "fallback_rule_hit": null, + "sanitized_user_message": "выведи список заказчиков за все время", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "OkR-rjXbZmuhae", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "выведи список заказчиков за все время" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 2, + "id": "L002", + "question": "покажи список заказчиков за 20год", + "session": null, + "session_id": "asst-2026-04-02_Address_LLM_First_Gate_Probe_AfterRosterFix-l002", + "status_code": 200, + "ok": true, + "elapsed_ms": 6123, + "reply_type": "factual", + "trace_id": "address-xwGMxJxmBQ", + "assistant_reply": "Собран профиль активности заказчиков (bank-doc activity aggregate).\nСтрок агрегата: 13.\nАктивные заказчики в 2020 году: 13.\n1. Группа | операций: 13 | последняя активность: 2020-12-30T12:00:00Z\n2. СБЕРБАНК, ПАО | операций: 9 | последняя активность: 2020-03-02T12:00:04Z\n3. ЭталонМебель | операций: 4 | последняя активность: 2020-04-27T12:00:00Z\n4. Гамма-мебель, ООО | операций: 3 | последняя активность: 2020-08-11T13:15:30Z\n5. ЗАО Ремонтно-строительная фирма «Ремстройсервис» | операций: 3 | последняя активность: 2020-06-03T00:00:02Z\n6. НОРТОН | операций: 3 | последняя активность: 2020-03-19T12:00:00Z\n8. ИП Калинин Н.М. | операций: 2 | последняя активность: 2020-03-02T12:00:03Z\n9. МНН | операций: 1 | последняя активность: 2020-08-11T13:16:37Z\n10. «Олимпстрой» | операций: 1 | последняя активность: 2020-07-13T12:00:00Z\n11. ПрофТренд,ООО | операций: 1 | последняя активность: 2020-05-15T12:00:02Z\n12. Лайсвуд, ООО | операций: 1 | последняя активность: 2020-03-02T12:00:02Z\n13. Смарт | операций: 1 | последняя активность: 2020-02-07T12:00:03Z", + "assistant_reply_first_line": "Собран профиль активности заказчиков (bank-doc activity aggregate).", + "expected_intent": null, + "actual_intent": "counterparty_activity_lifecycle", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "factual", + "strict_pass": true, + "selected_recipe": "address_counterparty_activity_lifecycle_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 13, + "rows_matched": 13, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-xwGMxJxmBQ", + "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", + "object_signal_detected", + "counterparty_activity_lifecycle_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": "counterparty_activity_lifecycle", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_from": "2020-01-01", + "period_to": "2020-12-31" + }, + "missing_required_filters": [], + "selected_recipe": "address_counterparty_activity_lifecycle_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "matched_non_empty", + "rows_fetched": 13, + "raw_rows_received": 13, + "rows_after_account_scope": 13, + "rows_after_recipe_filter": 13, + "rows_materialized": 13, + "rows_matched": 13, + "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": "d7SDYaav9u7cLU", + "llm_decomposition_effective_message": "показать список контрагентов (заказчиков) за 2020 год", + "llm_decomposition_reason": "normalized_fragment_applied", + "llm_canonical_candidate_detected": true, + "fallback_rule_hit": null, + "sanitized_user_message": "покажи список заказчиков за 2020 год", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "d7SDYaav9u7cLU", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "показать список контрагентов (заказчиков) за 2020 год" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 3, + "id": "L003", + "question": "zakazchiki za 20 god spisok", + "session": null, + "session_id": "asst-2026-04-02_Address_LLM_First_Gate_Probe_AfterRosterFix-l003", + "status_code": 200, + "ok": true, + "elapsed_ms": 7055, + "reply_type": "factual", + "trace_id": "address-ODMhRQSFez", + "assistant_reply": "Собран профиль активности заказчиков (bank-doc activity aggregate).\nСтрок агрегата: 13.\nАктивные заказчики в 2020 году: 13.\n1. Группа | операций: 13 | последняя активность: 2020-12-30T12:00:00Z\n2. СБЕРБАНК, ПАО | операций: 9 | последняя активность: 2020-03-02T12:00:04Z\n3. ЭталонМебель | операций: 4 | последняя активность: 2020-04-27T12:00:00Z\n4. Гамма-мебель, ООО | операций: 3 | последняя активность: 2020-08-11T13:15:30Z\n5. ЗАО Ремонтно-строительная фирма «Ремстройсервис» | операций: 3 | последняя активность: 2020-06-03T00:00:02Z\n6. НОРТОН | операций: 3 | последняя активность: 2020-03-19T12:00:00Z\n8. ИП Калинин Н.М. | операций: 2 | последняя активность: 2020-03-02T12:00:03Z\n9. МНН | операций: 1 | последняя активность: 2020-08-11T13:16:37Z\n10. «Олимпстрой» | операций: 1 | последняя активность: 2020-07-13T12:00:00Z\n11. ПрофТренд,ООО | операций: 1 | последняя активность: 2020-05-15T12:00:02Z\n12. Лайсвуд, ООО | операций: 1 | последняя активность: 2020-03-02T12:00:02Z\n13. Смарт | операций: 1 | последняя активность: 2020-02-07T12:00:03Z", + "assistant_reply_first_line": "Собран профиль активности заказчиков (bank-doc activity aggregate).", + "expected_intent": null, + "actual_intent": "counterparty_activity_lifecycle", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "factual", + "strict_pass": true, + "selected_recipe": "address_counterparty_activity_lifecycle_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 13, + "rows_matched": 13, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-ODMhRQSFez", + "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", + "counterparty_activity_lifecycle_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": "counterparty_activity_lifecycle", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_from": "2020-01-01", + "period_to": "2020-12-31" + }, + "missing_required_filters": [], + "selected_recipe": "address_counterparty_activity_lifecycle_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "matched_non_empty", + "rows_fetched": 13, + "raw_rows_received": 13, + "rows_after_account_scope": 13, + "rows_after_recipe_filter": 13, + "rows_materialized": 13, + "rows_matched": 13, + "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": "G_C5j5Inb8zhUN", + "llm_decomposition_effective_message": "customers for the year 2020 list", + "llm_decomposition_reason": "normalized_fragment_applied", + "llm_canonical_candidate_detected": true, + "fallback_rule_hit": null, + "sanitized_user_message": "zakazchiki za 2020 год spisok", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "G_C5j5Inb8zhUN", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "customers for the year 2020 list" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 4, + "id": "L004", + "question": "кто у нас заказчики вообще", + "session": null, + "session_id": "asst-2026-04-02_Address_LLM_First_Gate_Probe_AfterRosterFix-l004", + "status_code": 200, + "ok": true, + "elapsed_ms": 5140, + "reply_type": "factual", + "trace_id": "address-hlLgtdicWE", + "assistant_reply": "Собран профиль активности заказчиков (bank-doc activity aggregate).\nСтрок агрегата: 46.\nАктивные заказчики в выбранном периоде: 46.\n1. ГКУ | операций: 44 | последняя активность: 2019-12-25T16:09:27Z\n2. ГБУ \\Многофункциональный центр\\ | операций: 38 | последняя активность: 2018-12-04T12:00:01Z\n3. СБЕРБАНК, ПАО | операций: 36 | последняя активность: 2020-03-02T12:00:04Z\n4. Комитет государственных услуг г. Москвы | операций: 27 | последняя активность: 2015-05-19T12:00:00Z\n5. Группа | операций: 26 | последняя активность: 2021-11-10T12:00:07Z\n6. НОРТОН | операций: 14 | последняя активность: 2022-01-20T12:00:05Z\n7. МНН | операций: 14 | последняя активность: 2022-01-20T12:00:04Z\n8. МОСКОВСКИЙ ФИЛИАЛ ООО КБ\\МЕГАПОЛИС\\ | операций: 11 | последняя активность: 2019-07-31T12:00:22Z\n9. Департамент капитального ремонта города Москвы. | операций: 10 | последняя активность: 2019-09-16T11:00:00Z\n10. Департамент финансов города Москвы | операций: 10 | последняя активность: 2015-12-29T12:00:03Z\n11. Лайсвуд, ООО | операций: 7 | последняя активность: 2020-03-02T12:00:02Z\n12. Единая электронная торговая площадка, АО | операций: 7 | последняя активность: 2018-08-10T12:00:00Z\n13. ЭталонМебель | операций: 6 | последняя активность: 2020-04-27T12:00:00Z\n14. ИП Калинин Н.М. | операций: 5 | последняя активность: 2020-03-02T12:00:03Z\n15. Элмаш-К | операций: 5 | последняя активность: 2018-02-06T12:32:17Z\n16. ГТК-Интер, ООО | операций: 5 | последняя активность: 2016-07-07T12:00:00Z\n17. Гамма-мебель, ООО | операций: 4 | последняя активность: 2020-08-11T13:15:30Z\n18. Смарт | операций: 4 | последняя активность: 2020-02-07T12:00:03Z\n19. Сбербанк-АСТ, ЗАО | операций: 4 | последняя активность: 2017-07-26T12:00:00Z\n20. КБ \\НЕФТЯНОЙ АЛЬЯНС\\ (ПАО) (Расчетный) | операций: 4 | последняя активность: 2015-02-05T12:00:06Z\n21. ЗАО Ремонтно-строительная фирма «Ремстройсервис» | операций: 3 | последняя активность: 2020-06-03T00:00:02Z\n22. ПрофТренд,ООО | операций: 3 | последняя активность: 2020-05-15T12:00:02Z\n23. ГБПОУ г. Москвы \\Московская театральная школа Олега Табакова\\ | операций: 3 | последняя активность: 2019-10-25T12:00:00Z\n24. Газпром авиа, ООО | операций: 3 | последняя активность: 2016-11-29T12:00:01Z\n25. ФГКУ \\Центрреставрация\\ | операций: 3 | последняя активность: 2015-12-30T12:00:03Z\n26. РАЙМ, ООО | операций: 3 | последняя активность: 2015-08-13T12:00:00Z\n27. СервисКонсалт, ООО | операций: 2 | последняя активность: 2022-04-13T12:00:00Z\n30. УФК по г. Москве (ГУ - | операций: 2 | последняя активность: 2018-12-12T12:00:01Z\n31. Чепурнов П.Д. | операций: 1 | последняя активность: 2022-01-20T12:00:03Z\n32. «Олимпстрой» | операций: 1 | последняя активность: 2020-07-13T12:00:00Z\n33. КПК \\Столичная Сберегательная компания\\ | операций: 1 | последняя активность: 2019-04-17T12:00:00Z\n34. РТС-тендер | операций: 1 | последняя активность: 2018-12-17T00:00:00Z\n35. ФГБУ «УЗС» | операций: 1 | последняя активность: 2018-12-13T12:00:02Z\n36. АС \\ЕО | операций: 1 | последняя активность: 2018-01-15T13:25:36Z\n37. АкваСервис, ООО | операций: 1 | последняя активность: 2017-09-19T12:00:01Z\n38. ГБУ МФЦ города Москвы | операций: 1 | последняя активность: 2017-04-27T00:00:00Z\n39. \\Жуковка 51\\ | операций: 1 | последняя активность: 2017-04-10T16:50:38Z\n40. 0 | операций: 1 | последняя активность: 2017-03-02T12:00:00Z\n41. ФГБОУ ВО \\Московский государственный университет имени М.В. Ломоносова\\ | операций: 1 | последняя активность: 2016-11-25T00:00:00Z\n42. ДжетАэроКонцепт, ООО | операций: 1 | последняя активность: 2016-08-18T13:13:35Z\n43. УМ и автотранспорта, ЗАО | операций: 1 | последняя активность: 2015-12-24T12:00:00Z\n44. Межрегиональное операционное УФК | операций: 1 | последняя активность: 2015-11-12T12:00:00Z\n45. Банк ГПБ (АО) г. Москва | операций: 1 | последняя активность: 2015-10-30T12:00:03Z\n46. Спецстрой, ООО | операций: 1 | последняя активность: 2015-09-14T12:00:00Z", + "assistant_reply_first_line": "Собран профиль активности заказчиков (bank-doc activity aggregate).", + "expected_intent": null, + "actual_intent": "counterparty_activity_lifecycle", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "factual", + "strict_pass": true, + "selected_recipe": "address_counterparty_activity_lifecycle_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 46, + "rows_matched": 46, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-hlLgtdicWE", + "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", + "counterparty_activity_lifecycle_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": "counterparty_activity_lifecycle", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_to": "2026-04-02" + }, + "missing_required_filters": [], + "selected_recipe": "address_counterparty_activity_lifecycle_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "matched_non_empty", + "rows_fetched": 46, + "raw_rows_received": 46, + "rows_after_account_scope": 46, + "rows_after_recipe_filter": 46, + "rows_materialized": 46, + "rows_matched": 46, + "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": "KntkVP2X8Rl_Vb", + "llm_decomposition_effective_message": "кто у нас заказчики вообще", + "llm_decomposition_reason": "normalized_fragment_same", + "llm_canonical_candidate_detected": true, + "fallback_rule_hit": null, + "sanitized_user_message": "кто у нас заказчики вообще", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "KntkVP2X8Rl_Vb", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "кто у нас заказчики вообще" + } + }, + "error_code": null, + "error_message": null + } + ] +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_LLM_First_Gate_Probe_AfterRosterFix/response_audit.md b/docs/ADDRESS/runs/2026-04-02_Address_LLM_First_Gate_Probe_AfterRosterFix/response_audit.md new file mode 100644 index 0000000..f0f16a2 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_LLM_First_Gate_Probe_AfterRosterFix/response_audit.md @@ -0,0 +1,8 @@ +# Response Audit: 2026-04-02_Address_LLM_First_Gate_Probe_AfterRosterFix + +| id | strict | route_health | reply_type | intent | limited_reason | question | assistant_first_line | +|---|---|---|---|---|---|---|---| +| L001 | True | ok_or_factual | factual | counterparty_activity_lifecycle | None | выведи список заказчиков за все время | Собран профиль активности заказчиков (bank-doc activity aggregate). | +| L002 | True | ok_or_factual | factual | counterparty_activity_lifecycle | None | покажи список заказчиков за 20год | Собран профиль активности заказчиков (bank-doc activity aggregate). | +| L003 | True | ok_or_factual | factual | counterparty_activity_lifecycle | None | zakazchiki za 20 god spisok | Собран профиль активности заказчиков (bank-doc activity aggregate). | +| L004 | True | ok_or_factual | factual | counterparty_activity_lifecycle | None | кто у нас заказчики вообще | Собран профиль активности заказчиков (bank-doc activity aggregate). | diff --git a/docs/ADDRESS/runs/2026-04-02_Address_LLM_First_Gate_Probe_AfterRosterFix/run_summary.json b/docs/ADDRESS/runs/2026-04-02_Address_LLM_First_Gate_Probe_AfterRosterFix/run_summary.json new file mode 100644 index 0000000..349b62f --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_LLM_First_Gate_Probe_AfterRosterFix/run_summary.json @@ -0,0 +1,44 @@ +{ + "run_id": "2026-04-02_Address_LLM_First_Gate_Probe_AfterRosterFix", + "generated_at": "2026-04-02T22:00:35", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\temp_llm_first_gate_probe_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", + "strict_policy": "factual", + "totals": { + "questions_total": 4, + "ok_200_count": 4, + "semantic_pass_count": 4, + "semantic_pass_rate": 1.0, + "route_pass_count": 4, + "route_pass_rate": 1.0, + "strict_pass_count": 4, + "strict_pass_rate": 1.0, + "factual_count": 4, + "partial_coverage_count": 0, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_applied_count": 2, + "avg_elapsed_ms": 6061.8 + }, + "distributions": { + "reply_type": { + "factual": 4 + }, + "actual_intent": { + "counterparty_activity_lifecycle": 4 + }, + "actual_mode": { + "address_query": 4 + }, + "mcp_call_status": { + "matched_non_empty": 4 + }, + "limited_reason_category": {}, + "route_health": { + "ok_or_factual": 4 + } + } +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_LLM_First_Gate_Probe_WithMetrics/README.md b/docs/ADDRESS/runs/2026-04-02_Address_LLM_First_Gate_Probe_WithMetrics/README.md new file mode 100644 index 0000000..ce68982 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_LLM_First_Gate_Probe_WithMetrics/README.md @@ -0,0 +1,33 @@ +# 2026-04-02_Address_LLM_First_Gate_Probe_WithMetrics + +Generated at: 2026-04-02T22:10:35 +Questions file: X:\1C\NDC_1C\docs\ADDRESS\question_sets\temp_llm_first_gate_probe_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 +Strict policy: factual + +## Totals +- questions_total: 4 +- ok_200_count: 4 +- semantic_pass_count: 4 +- semantic_pass_rate: 1.0 +- route_pass_count: 4 +- route_pass_rate: 1.0 +- strict_pass_count: 4 +- strict_pass_rate: 1.0 +- factual_count: 4 +- partial_coverage_count: 0 +- clarification_required_count: 0 +- http_error_count: 0 +- llm_decomposition_attempted_count: 4 +- llm_decomposition_applied_count: 2 +- llm_fallback_count: 0 +- llm_fallback_rate: 0.0 +- tool_gate_blocked_count: 0 +- tool_gate_blocked_rate: 0.0 +- avg_elapsed_ms: 6098.5 + +## Files +- run_summary.json +- full_live_results.json +- failures_only.json diff --git a/docs/ADDRESS/runs/2026-04-02_Address_LLM_First_Gate_Probe_WithMetrics/failures_only.json b/docs/ADDRESS/runs/2026-04-02_Address_LLM_First_Gate_Probe_WithMetrics/failures_only.json new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_LLM_First_Gate_Probe_WithMetrics/failures_only.json @@ -0,0 +1 @@ +[] diff --git a/docs/ADDRESS/runs/2026-04-02_Address_LLM_First_Gate_Probe_WithMetrics/full_live_results.json b/docs/ADDRESS/runs/2026-04-02_Address_LLM_First_Gate_Probe_WithMetrics/full_live_results.json new file mode 100644 index 0000000..c01e4a8 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_LLM_First_Gate_Probe_WithMetrics/full_live_results.json @@ -0,0 +1,816 @@ +{ + "run_id": "2026-04-02_Address_LLM_First_Gate_Probe_WithMetrics", + "generated_at": "2026-04-02T22:10:35", + "summary": { + "run_id": "2026-04-02_Address_LLM_First_Gate_Probe_WithMetrics", + "generated_at": "2026-04-02T22:10:35", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\temp_llm_first_gate_probe_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", + "strict_policy": "factual", + "totals": { + "questions_total": 4, + "ok_200_count": 4, + "semantic_pass_count": 4, + "semantic_pass_rate": 1.0, + "route_pass_count": 4, + "route_pass_rate": 1.0, + "strict_pass_count": 4, + "strict_pass_rate": 1.0, + "factual_count": 4, + "partial_coverage_count": 0, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_attempted_count": 4, + "llm_decomposition_applied_count": 2, + "llm_fallback_count": 0, + "llm_fallback_rate": 0.0, + "tool_gate_blocked_count": 0, + "tool_gate_blocked_rate": 0.0, + "avg_elapsed_ms": 6098.5 + }, + "distributions": { + "reply_type": { + "factual": 4 + }, + "actual_intent": { + "counterparty_activity_lifecycle": 4 + }, + "actual_mode": { + "address_query": 4 + }, + "mcp_call_status": { + "matched_non_empty": 4 + }, + "limited_reason_category": {}, + "route_health": { + "ok_or_factual": 4 + }, + "tool_gate_decision": { + "run_address_lane": 4 + }, + "tool_gate_reason": { + "address_mode_classifier_detected": 4 + } + }, + "address_llm_predecompose_metrics": { + "overall": { + "llm_attempted": 4, + "llm_applied": 2, + "fallback_used": 0, + "fallback_rate": 0.0, + "tool_gate_blocked": 0, + "gate_block_rate": 0.0 + }, + "by_intent": { + "counterparty_activity_lifecycle": { + "total": 4, + "llm_attempted": 4, + "llm_applied": 2, + "fallback_used": 0, + "tool_gate_blocked": 0, + "fallback_rate": 0.0, + "gate_block_rate": 0.0 + } + } + } + }, + "rows": [ + { + "index": 1, + "id": "L001", + "question": "выведи список заказчиков за все время", + "session": null, + "session_id": "asst-2026-04-02_Address_LLM_First_Gate_Probe_WithMetrics-l001", + "status_code": 200, + "ok": true, + "elapsed_ms": 6133, + "reply_type": "factual", + "trace_id": "address-cXhwTMg07q", + "assistant_reply": "Собран профиль активности заказчиков (bank-doc activity aggregate).\nСтрок агрегата: 46.\nАктивные заказчики за все время: 46.\n1. ГКУ | операций: 44 | последняя активность: 2019-12-25T16:09:27Z\n2. ГБУ \\Многофункциональный центр\\ | операций: 38 | последняя активность: 2018-12-04T12:00:01Z\n3. СБЕРБАНК, ПАО | операций: 36 | последняя активность: 2020-03-02T12:00:04Z\n4. Комитет государственных услуг г. Москвы | операций: 27 | последняя активность: 2015-05-19T12:00:00Z\n5. Группа | операций: 26 | последняя активность: 2021-11-10T12:00:07Z\n6. НОРТОН | операций: 14 | последняя активность: 2022-01-20T12:00:05Z\n7. МНН | операций: 14 | последняя активность: 2022-01-20T12:00:04Z\n8. МОСКОВСКИЙ ФИЛИАЛ ООО КБ\\МЕГАПОЛИС\\ | операций: 11 | последняя активность: 2019-07-31T12:00:22Z\n9. Департамент капитального ремонта города Москвы. | операций: 10 | последняя активность: 2019-09-16T11:00:00Z\n10. Департамент финансов города Москвы | операций: 10 | последняя активность: 2015-12-29T12:00:03Z\n11. Лайсвуд, ООО | операций: 7 | последняя активность: 2020-03-02T12:00:02Z\n12. Единая электронная торговая площадка, АО | операций: 7 | последняя активность: 2018-08-10T12:00:00Z\n13. ЭталонМебель | операций: 6 | последняя активность: 2020-04-27T12:00:00Z\n14. ИП Калинин Н.М. | операций: 5 | последняя активность: 2020-03-02T12:00:03Z\n15. Элмаш-К | операций: 5 | последняя активность: 2018-02-06T12:32:17Z\n16. ГТК-Интер, ООО | операций: 5 | последняя активность: 2016-07-07T12:00:00Z\n17. Гамма-мебель, ООО | операций: 4 | последняя активность: 2020-08-11T13:15:30Z\n18. Смарт | операций: 4 | последняя активность: 2020-02-07T12:00:03Z\n19. Сбербанк-АСТ, ЗАО | операций: 4 | последняя активность: 2017-07-26T12:00:00Z\n20. КБ \\НЕФТЯНОЙ АЛЬЯНС\\ (ПАО) (Расчетный) | операций: 4 | последняя активность: 2015-02-05T12:00:06Z\n21. ЗАО Ремонтно-строительная фирма «Ремстройсервис» | операций: 3 | последняя активность: 2020-06-03T00:00:02Z\n22. ПрофТренд,ООО | операций: 3 | последняя активность: 2020-05-15T12:00:02Z\n23. ГБПОУ г. Москвы \\Московская театральная школа Олега Табакова\\ | операций: 3 | последняя активность: 2019-10-25T12:00:00Z\n24. Газпром авиа, ООО | операций: 3 | последняя активность: 2016-11-29T12:00:01Z\n25. ФГКУ \\Центрреставрация\\ | операций: 3 | последняя активность: 2015-12-30T12:00:03Z\n26. РАЙМ, ООО | операций: 3 | последняя активность: 2015-08-13T12:00:00Z\n27. СервисКонсалт, ООО | операций: 2 | последняя активность: 2022-04-13T12:00:00Z\n30. УФК по г. Москве (ГУ - | операций: 2 | последняя активность: 2018-12-12T12:00:01Z\n31. Чепурнов П.Д. | операций: 1 | последняя активность: 2022-01-20T12:00:03Z\n32. «Олимпстрой» | операций: 1 | последняя активность: 2020-07-13T12:00:00Z\n33. КПК \\Столичная Сберегательная компания\\ | операций: 1 | последняя активность: 2019-04-17T12:00:00Z\n34. РТС-тендер | операций: 1 | последняя активность: 2018-12-17T00:00:00Z\n35. ФГБУ «УЗС» | операций: 1 | последняя активность: 2018-12-13T12:00:02Z\n36. АС \\ЕО | операций: 1 | последняя активность: 2018-01-15T13:25:36Z\n37. АкваСервис, ООО | операций: 1 | последняя активность: 2017-09-19T12:00:01Z\n38. ГБУ МФЦ города Москвы | операций: 1 | последняя активность: 2017-04-27T00:00:00Z\n39. \\Жуковка 51\\ | операций: 1 | последняя активность: 2017-04-10T16:50:38Z\n40. 0 | операций: 1 | последняя активность: 2017-03-02T12:00:00Z\n41. ФГБОУ ВО \\Московский государственный университет имени М.В. Ломоносова\\ | операций: 1 | последняя активность: 2016-11-25T00:00:00Z\n42. ДжетАэроКонцепт, ООО | операций: 1 | последняя активность: 2016-08-18T13:13:35Z\n43. УМ и автотранспорта, ЗАО | операций: 1 | последняя активность: 2015-12-24T12:00:00Z\n44. Межрегиональное операционное УФК | операций: 1 | последняя активность: 2015-11-12T12:00:00Z\n45. Банк ГПБ (АО) г. Москва | операций: 1 | последняя активность: 2015-10-30T12:00:03Z\n46. Спецстрой, ООО | операций: 1 | последняя активность: 2015-09-14T12:00:00Z", + "assistant_reply_first_line": "Собран профиль активности заказчиков (bank-doc activity aggregate).", + "expected_intent": null, + "actual_intent": "counterparty_activity_lifecycle", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "factual", + "strict_pass": true, + "selected_recipe": "address_counterparty_activity_lifecycle_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 46, + "rows_matched": 46, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_attempted": true, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_drop", + "llm_canonical_candidate_detected": true, + "fallback_rule_hit": null, + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "predecompose_contract_intent": "counterparty_activity_lifecycle", + "predecompose_contract_aggregation_profile": "management_profile", + "predecompose_contract_period_scope": "all_time", + "debug_payload": { + "trace_id": "address-cXhwTMg07q", + "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", + "counterparty_activity_lifecycle_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": "counterparty_activity_lifecycle", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_to": "2026-04-02" + }, + "missing_required_filters": [], + "selected_recipe": "address_counterparty_activity_lifecycle_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "matched_non_empty", + "rows_fetched": 46, + "raw_rows_received": 46, + "rows_after_account_scope": 46, + "rows_after_recipe_filter": 46, + "rows_materialized": 46, + "rows_matched": 46, + "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": "3B0FPgIIAP_v54", + "llm_decomposition_effective_message": "выведи список заказчиков за все время", + "llm_decomposition_reason": "normalized_fragment_rejected_intent_drop", + "llm_canonical_candidate_detected": true, + "llm_predecompose_contract": { + "schema_version": "address_llm_predecompose_contract_v1", + "source_message": "выведи список заказчиков за все время", + "canonical_message": "выведи список заказчиков за все время", + "mode": "address_query", + "mode_confidence": "high", + "query_shape": "UNKNOWN", + "query_shape_confidence": "low", + "intent": "counterparty_activity_lifecycle", + "intent_confidence": "high", + "entities": { + "account": null, + "counterparty": null, + "contract": null, + "document_type": null, + "document_ref": null, + "organization": null + }, + "period": { + "scope": "all_time", + "period_from": null, + "period_to": "2026-04-02", + "as_of_date": null, + "has_explicit_period": true + }, + "aggregation_profile": "management_profile" + }, + "fallback_rule_hit": null, + "sanitized_user_message": "выведи список заказчиков за все время", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "3B0FPgIIAP_v54", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "выведи список заказчиков за все время" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 2, + "id": "L002", + "question": "покажи список заказчиков за 20год", + "session": null, + "session_id": "asst-2026-04-02_Address_LLM_First_Gate_Probe_WithMetrics-l002", + "status_code": 200, + "ok": true, + "elapsed_ms": 6058, + "reply_type": "factual", + "trace_id": "address-aXF9OfJOog", + "assistant_reply": "Собран профиль активности заказчиков (bank-doc activity aggregate).\nСтрок агрегата: 13.\nАктивные заказчики в 2020 году: 13.\n1. Группа | операций: 13 | последняя активность: 2020-12-30T12:00:00Z\n2. СБЕРБАНК, ПАО | операций: 9 | последняя активность: 2020-03-02T12:00:04Z\n3. ЭталонМебель | операций: 4 | последняя активность: 2020-04-27T12:00:00Z\n4. Гамма-мебель, ООО | операций: 3 | последняя активность: 2020-08-11T13:15:30Z\n5. ЗАО Ремонтно-строительная фирма «Ремстройсервис» | операций: 3 | последняя активность: 2020-06-03T00:00:02Z\n6. НОРТОН | операций: 3 | последняя активность: 2020-03-19T12:00:00Z\n8. ИП Калинин Н.М. | операций: 2 | последняя активность: 2020-03-02T12:00:03Z\n9. МНН | операций: 1 | последняя активность: 2020-08-11T13:16:37Z\n10. «Олимпстрой» | операций: 1 | последняя активность: 2020-07-13T12:00:00Z\n11. ПрофТренд,ООО | операций: 1 | последняя активность: 2020-05-15T12:00:02Z\n12. Лайсвуд, ООО | операций: 1 | последняя активность: 2020-03-02T12:00:02Z\n13. Смарт | операций: 1 | последняя активность: 2020-02-07T12:00:03Z", + "assistant_reply_first_line": "Собран профиль активности заказчиков (bank-doc activity aggregate).", + "expected_intent": null, + "actual_intent": "counterparty_activity_lifecycle", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "factual", + "strict_pass": true, + "selected_recipe": "address_counterparty_activity_lifecycle_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 13, + "rows_matched": 13, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_attempted": true, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "llm_canonical_candidate_detected": true, + "fallback_rule_hit": null, + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "predecompose_contract_intent": "counterparty_activity_lifecycle", + "predecompose_contract_aggregation_profile": "management_profile", + "predecompose_contract_period_scope": "year", + "debug_payload": { + "trace_id": "address-aXF9OfJOog", + "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", + "object_signal_detected", + "counterparty_activity_lifecycle_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": "counterparty_activity_lifecycle", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_from": "2020-01-01", + "period_to": "2020-12-31" + }, + "missing_required_filters": [], + "selected_recipe": "address_counterparty_activity_lifecycle_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "matched_non_empty", + "rows_fetched": 13, + "raw_rows_received": 13, + "rows_after_account_scope": 13, + "rows_after_recipe_filter": 13, + "rows_materialized": 13, + "rows_matched": 13, + "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": "VyRT8snr550uVi", + "llm_decomposition_effective_message": "показать список контрагентов (заказчиков) за 2020 год", + "llm_decomposition_reason": "normalized_fragment_applied", + "llm_canonical_candidate_detected": true, + "llm_predecompose_contract": { + "schema_version": "address_llm_predecompose_contract_v1", + "source_message": "покажи список заказчиков за 20год", + "canonical_message": "показать список контрагентов (заказчиков) за 2020 год", + "mode": "address_query", + "mode_confidence": "high", + "query_shape": "OBJECT_LOOKUP", + "query_shape_confidence": "medium", + "intent": "counterparty_activity_lifecycle", + "intent_confidence": "high", + "entities": { + "account": null, + "counterparty": null, + "contract": null, + "document_type": null, + "document_ref": null, + "organization": null + }, + "period": { + "scope": "year", + "period_from": "2020-01-01", + "period_to": "2020-12-31", + "as_of_date": null, + "has_explicit_period": true + }, + "aggregation_profile": "management_profile" + }, + "fallback_rule_hit": null, + "sanitized_user_message": "покажи список заказчиков за 2020 год", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "VyRT8snr550uVi", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "показать список контрагентов (заказчиков) за 2020 год" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 3, + "id": "L003", + "question": "zakazchiki za 20 god spisok", + "session": null, + "session_id": "asst-2026-04-02_Address_LLM_First_Gate_Probe_WithMetrics-l003", + "status_code": 200, + "ok": true, + "elapsed_ms": 7110, + "reply_type": "factual", + "trace_id": "address-G_O0GzFVau", + "assistant_reply": "Собран профиль активности заказчиков (bank-doc activity aggregate).\nСтрок агрегата: 13.\nАктивные заказчики в 2020 году: 13.\n1. Группа | операций: 13 | последняя активность: 2020-12-30T12:00:00Z\n2. СБЕРБАНК, ПАО | операций: 9 | последняя активность: 2020-03-02T12:00:04Z\n3. ЭталонМебель | операций: 4 | последняя активность: 2020-04-27T12:00:00Z\n4. Гамма-мебель, ООО | операций: 3 | последняя активность: 2020-08-11T13:15:30Z\n5. ЗАО Ремонтно-строительная фирма «Ремстройсервис» | операций: 3 | последняя активность: 2020-06-03T00:00:02Z\n6. НОРТОН | операций: 3 | последняя активность: 2020-03-19T12:00:00Z\n8. ИП Калинин Н.М. | операций: 2 | последняя активность: 2020-03-02T12:00:03Z\n9. МНН | операций: 1 | последняя активность: 2020-08-11T13:16:37Z\n10. «Олимпстрой» | операций: 1 | последняя активность: 2020-07-13T12:00:00Z\n11. ПрофТренд,ООО | операций: 1 | последняя активность: 2020-05-15T12:00:02Z\n12. Лайсвуд, ООО | операций: 1 | последняя активность: 2020-03-02T12:00:02Z\n13. Смарт | операций: 1 | последняя активность: 2020-02-07T12:00:03Z", + "assistant_reply_first_line": "Собран профиль активности заказчиков (bank-doc activity aggregate).", + "expected_intent": null, + "actual_intent": "counterparty_activity_lifecycle", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "factual", + "strict_pass": true, + "selected_recipe": "address_counterparty_activity_lifecycle_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 13, + "rows_matched": 13, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_attempted": true, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "llm_canonical_candidate_detected": true, + "fallback_rule_hit": null, + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "predecompose_contract_intent": "counterparty_activity_lifecycle", + "predecompose_contract_aggregation_profile": "management_profile", + "predecompose_contract_period_scope": "year", + "debug_payload": { + "trace_id": "address-G_O0GzFVau", + "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", + "counterparty_activity_lifecycle_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": "counterparty_activity_lifecycle", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_from": "2020-01-01", + "period_to": "2020-12-31" + }, + "missing_required_filters": [], + "selected_recipe": "address_counterparty_activity_lifecycle_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "matched_non_empty", + "rows_fetched": 13, + "raw_rows_received": 13, + "rows_after_account_scope": 13, + "rows_after_recipe_filter": 13, + "rows_materialized": 13, + "rows_matched": 13, + "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": "4OoynYpGz4v3so", + "llm_decomposition_effective_message": "customers for the year 2020 list", + "llm_decomposition_reason": "normalized_fragment_applied", + "llm_canonical_candidate_detected": true, + "llm_predecompose_contract": { + "schema_version": "address_llm_predecompose_contract_v1", + "source_message": "zakazchiki za 20 god spisok", + "canonical_message": "customers for the year 2020 list", + "mode": "address_query", + "mode_confidence": "high", + "query_shape": "UNKNOWN", + "query_shape_confidence": "low", + "intent": "counterparty_activity_lifecycle", + "intent_confidence": "high", + "entities": { + "account": null, + "counterparty": null, + "contract": null, + "document_type": null, + "document_ref": null, + "organization": null + }, + "period": { + "scope": "year", + "period_from": "2020-01-01", + "period_to": "2020-12-31", + "as_of_date": null, + "has_explicit_period": true + }, + "aggregation_profile": "management_profile" + }, + "fallback_rule_hit": null, + "sanitized_user_message": "zakazchiki za 2020 год spisok", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "4OoynYpGz4v3so", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "customers for the year 2020 list" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 4, + "id": "L004", + "question": "кто у нас заказчики вообще", + "session": null, + "session_id": "asst-2026-04-02_Address_LLM_First_Gate_Probe_WithMetrics-l004", + "status_code": 200, + "ok": true, + "elapsed_ms": 5093, + "reply_type": "factual", + "trace_id": "address-SVpKm6UrdG", + "assistant_reply": "Собран профиль активности заказчиков (bank-doc activity aggregate).\nСтрок агрегата: 46.\nАктивные заказчики в выбранном периоде: 46.\n1. ГКУ | операций: 44 | последняя активность: 2019-12-25T16:09:27Z\n2. ГБУ \\Многофункциональный центр\\ | операций: 38 | последняя активность: 2018-12-04T12:00:01Z\n3. СБЕРБАНК, ПАО | операций: 36 | последняя активность: 2020-03-02T12:00:04Z\n4. Комитет государственных услуг г. Москвы | операций: 27 | последняя активность: 2015-05-19T12:00:00Z\n5. Группа | операций: 26 | последняя активность: 2021-11-10T12:00:07Z\n6. НОРТОН | операций: 14 | последняя активность: 2022-01-20T12:00:05Z\n7. МНН | операций: 14 | последняя активность: 2022-01-20T12:00:04Z\n8. МОСКОВСКИЙ ФИЛИАЛ ООО КБ\\МЕГАПОЛИС\\ | операций: 11 | последняя активность: 2019-07-31T12:00:22Z\n9. Департамент капитального ремонта города Москвы. | операций: 10 | последняя активность: 2019-09-16T11:00:00Z\n10. Департамент финансов города Москвы | операций: 10 | последняя активность: 2015-12-29T12:00:03Z\n11. Лайсвуд, ООО | операций: 7 | последняя активность: 2020-03-02T12:00:02Z\n12. Единая электронная торговая площадка, АО | операций: 7 | последняя активность: 2018-08-10T12:00:00Z\n13. ЭталонМебель | операций: 6 | последняя активность: 2020-04-27T12:00:00Z\n14. ИП Калинин Н.М. | операций: 5 | последняя активность: 2020-03-02T12:00:03Z\n15. Элмаш-К | операций: 5 | последняя активность: 2018-02-06T12:32:17Z\n16. ГТК-Интер, ООО | операций: 5 | последняя активность: 2016-07-07T12:00:00Z\n17. Гамма-мебель, ООО | операций: 4 | последняя активность: 2020-08-11T13:15:30Z\n18. Смарт | операций: 4 | последняя активность: 2020-02-07T12:00:03Z\n19. Сбербанк-АСТ, ЗАО | операций: 4 | последняя активность: 2017-07-26T12:00:00Z\n20. КБ \\НЕФТЯНОЙ АЛЬЯНС\\ (ПАО) (Расчетный) | операций: 4 | последняя активность: 2015-02-05T12:00:06Z\n21. ЗАО Ремонтно-строительная фирма «Ремстройсервис» | операций: 3 | последняя активность: 2020-06-03T00:00:02Z\n22. ПрофТренд,ООО | операций: 3 | последняя активность: 2020-05-15T12:00:02Z\n23. ГБПОУ г. Москвы \\Московская театральная школа Олега Табакова\\ | операций: 3 | последняя активность: 2019-10-25T12:00:00Z\n24. Газпром авиа, ООО | операций: 3 | последняя активность: 2016-11-29T12:00:01Z\n25. ФГКУ \\Центрреставрация\\ | операций: 3 | последняя активность: 2015-12-30T12:00:03Z\n26. РАЙМ, ООО | операций: 3 | последняя активность: 2015-08-13T12:00:00Z\n27. СервисКонсалт, ООО | операций: 2 | последняя активность: 2022-04-13T12:00:00Z\n30. УФК по г. Москве (ГУ - | операций: 2 | последняя активность: 2018-12-12T12:00:01Z\n31. Чепурнов П.Д. | операций: 1 | последняя активность: 2022-01-20T12:00:03Z\n32. «Олимпстрой» | операций: 1 | последняя активность: 2020-07-13T12:00:00Z\n33. КПК \\Столичная Сберегательная компания\\ | операций: 1 | последняя активность: 2019-04-17T12:00:00Z\n34. РТС-тендер | операций: 1 | последняя активность: 2018-12-17T00:00:00Z\n35. ФГБУ «УЗС» | операций: 1 | последняя активность: 2018-12-13T12:00:02Z\n36. АС \\ЕО | операций: 1 | последняя активность: 2018-01-15T13:25:36Z\n37. АкваСервис, ООО | операций: 1 | последняя активность: 2017-09-19T12:00:01Z\n38. ГБУ МФЦ города Москвы | операций: 1 | последняя активность: 2017-04-27T00:00:00Z\n39. \\Жуковка 51\\ | операций: 1 | последняя активность: 2017-04-10T16:50:38Z\n40. 0 | операций: 1 | последняя активность: 2017-03-02T12:00:00Z\n41. ФГБОУ ВО \\Московский государственный университет имени М.В. Ломоносова\\ | операций: 1 | последняя активность: 2016-11-25T00:00:00Z\n42. ДжетАэроКонцепт, ООО | операций: 1 | последняя активность: 2016-08-18T13:13:35Z\n43. УМ и автотранспорта, ЗАО | операций: 1 | последняя активность: 2015-12-24T12:00:00Z\n44. Межрегиональное операционное УФК | операций: 1 | последняя активность: 2015-11-12T12:00:00Z\n45. Банк ГПБ (АО) г. Москва | операций: 1 | последняя активность: 2015-10-30T12:00:03Z\n46. Спецстрой, ООО | операций: 1 | последняя активность: 2015-09-14T12:00:00Z", + "assistant_reply_first_line": "Собран профиль активности заказчиков (bank-doc activity aggregate).", + "expected_intent": null, + "actual_intent": "counterparty_activity_lifecycle", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "factual", + "strict_pass": true, + "selected_recipe": "address_counterparty_activity_lifecycle_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 46, + "rows_matched": 46, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_attempted": true, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_same", + "llm_canonical_candidate_detected": true, + "fallback_rule_hit": null, + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "predecompose_contract_intent": "counterparty_activity_lifecycle", + "predecompose_contract_aggregation_profile": "management_profile", + "predecompose_contract_period_scope": "unspecified", + "debug_payload": { + "trace_id": "address-SVpKm6UrdG", + "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", + "counterparty_activity_lifecycle_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": "counterparty_activity_lifecycle", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_to": "2026-04-02" + }, + "missing_required_filters": [], + "selected_recipe": "address_counterparty_activity_lifecycle_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "matched_non_empty", + "rows_fetched": 46, + "raw_rows_received": 46, + "rows_after_account_scope": 46, + "rows_after_recipe_filter": 46, + "rows_materialized": 46, + "rows_matched": 46, + "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": "LhLfOM6kZE8co7", + "llm_decomposition_effective_message": "кто у нас заказчики вообще", + "llm_decomposition_reason": "normalized_fragment_same", + "llm_canonical_candidate_detected": true, + "llm_predecompose_contract": { + "schema_version": "address_llm_predecompose_contract_v1", + "source_message": "кто у нас заказчики вообще", + "canonical_message": "кто у нас заказчики вообще", + "mode": "address_query", + "mode_confidence": "high", + "query_shape": "UNKNOWN", + "query_shape_confidence": "low", + "intent": "counterparty_activity_lifecycle", + "intent_confidence": "high", + "entities": { + "account": null, + "counterparty": null, + "contract": null, + "document_type": null, + "document_ref": null, + "organization": null + }, + "period": { + "scope": "unspecified", + "period_from": null, + "period_to": "2026-04-02", + "as_of_date": null, + "has_explicit_period": true + }, + "aggregation_profile": "management_profile" + }, + "fallback_rule_hit": null, + "sanitized_user_message": "кто у нас заказчики вообще", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "LhLfOM6kZE8co7", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "кто у нас заказчики вообще" + } + }, + "error_code": null, + "error_message": null + } + ] +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_LLM_First_Gate_Probe_WithMetrics/response_audit.md b/docs/ADDRESS/runs/2026-04-02_Address_LLM_First_Gate_Probe_WithMetrics/response_audit.md new file mode 100644 index 0000000..6f7c211 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_LLM_First_Gate_Probe_WithMetrics/response_audit.md @@ -0,0 +1,8 @@ +# Response Audit: 2026-04-02_Address_LLM_First_Gate_Probe_WithMetrics + +| id | strict | route_health | reply_type | intent | limited_reason | question | assistant_first_line | +|---|---|---|---|---|---|---|---| +| L001 | True | ok_or_factual | factual | counterparty_activity_lifecycle | None | выведи список заказчиков за все время | Собран профиль активности заказчиков (bank-doc activity aggregate). | +| L002 | True | ok_or_factual | factual | counterparty_activity_lifecycle | None | покажи список заказчиков за 20год | Собран профиль активности заказчиков (bank-doc activity aggregate). | +| L003 | True | ok_or_factual | factual | counterparty_activity_lifecycle | None | zakazchiki za 20 god spisok | Собран профиль активности заказчиков (bank-doc activity aggregate). | +| L004 | True | ok_or_factual | factual | counterparty_activity_lifecycle | None | кто у нас заказчики вообще | Собран профиль активности заказчиков (bank-doc activity aggregate). | diff --git a/docs/ADDRESS/runs/2026-04-02_Address_LLM_First_Gate_Probe_WithMetrics/run_summary.json b/docs/ADDRESS/runs/2026-04-02_Address_LLM_First_Gate_Probe_WithMetrics/run_summary.json new file mode 100644 index 0000000..54ebfe4 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_LLM_First_Gate_Probe_WithMetrics/run_summary.json @@ -0,0 +1,76 @@ +{ + "run_id": "2026-04-02_Address_LLM_First_Gate_Probe_WithMetrics", + "generated_at": "2026-04-02T22:10:35", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\temp_llm_first_gate_probe_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", + "strict_policy": "factual", + "totals": { + "questions_total": 4, + "ok_200_count": 4, + "semantic_pass_count": 4, + "semantic_pass_rate": 1.0, + "route_pass_count": 4, + "route_pass_rate": 1.0, + "strict_pass_count": 4, + "strict_pass_rate": 1.0, + "factual_count": 4, + "partial_coverage_count": 0, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_attempted_count": 4, + "llm_decomposition_applied_count": 2, + "llm_fallback_count": 0, + "llm_fallback_rate": 0.0, + "tool_gate_blocked_count": 0, + "tool_gate_blocked_rate": 0.0, + "avg_elapsed_ms": 6098.5 + }, + "distributions": { + "reply_type": { + "factual": 4 + }, + "actual_intent": { + "counterparty_activity_lifecycle": 4 + }, + "actual_mode": { + "address_query": 4 + }, + "mcp_call_status": { + "matched_non_empty": 4 + }, + "limited_reason_category": {}, + "route_health": { + "ok_or_factual": 4 + }, + "tool_gate_decision": { + "run_address_lane": 4 + }, + "tool_gate_reason": { + "address_mode_classifier_detected": 4 + } + }, + "address_llm_predecompose_metrics": { + "overall": { + "llm_attempted": 4, + "llm_applied": 2, + "fallback_used": 0, + "fallback_rate": 0.0, + "tool_gate_blocked": 0, + "gate_block_rate": 0.0 + }, + "by_intent": { + "counterparty_activity_lifecycle": { + "total": 4, + "llm_attempted": 4, + "llm_applied": 2, + "fallback_used": 0, + "tool_gate_blocked": 0, + "fallback_rate": 0.0, + "gate_block_rate": 0.0 + } + } + } +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_followup_25_20-23-18/README.md b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_followup_25_20-23-18/README.md new file mode 100644 index 0000000..25c3fcd --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_followup_25_20-23-18/README.md @@ -0,0 +1,28 @@ +# 2026-04-02_Address_Nightly_followup_25_20-23-18 + +Generated at: 2026-04-02T20:25:42 +Questions file: X:\1C\NDC_1C\docs\ADDRESS\question_sets\address_followup_context_chains_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 +Strict policy: route + +## Totals +- questions_total: 25 +- ok_200_count: 25 +- semantic_pass_count: 25 +- semantic_pass_rate: 1.0 +- route_pass_count: 25 +- route_pass_rate: 1.0 +- strict_pass_count: 25 +- strict_pass_rate: 1.0 +- factual_count: 23 +- partial_coverage_count: 2 +- clarification_required_count: 0 +- http_error_count: 0 +- llm_decomposition_applied_count: 14 +- avg_elapsed_ms: 5770.4 + +## Files +- run_summary.json +- full_live_results.json +- failures_only.json diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_followup_25_20-23-18/failures_only.json b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_followup_25_20-23-18/failures_only.json new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_followup_25_20-23-18/failures_only.json @@ -0,0 +1 @@ +[] diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_followup_25_20-23-18/full_live_results.json b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_followup_25_20-23-18/full_live_results.json new file mode 100644 index 0000000..c2ff251 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_followup_25_20-23-18/full_live_results.json @@ -0,0 +1,3832 @@ +{ + "run_id": "2026-04-02_Address_Nightly_followup_25_20-23-18", + "generated_at": "2026-04-02T20:25:42", + "summary": { + "run_id": "2026-04-02_Address_Nightly_followup_25_20-23-18", + "generated_at": "2026-04-02T20:25:42", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\address_followup_context_chains_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", + "strict_policy": "route", + "totals": { + "questions_total": 25, + "ok_200_count": 25, + "semantic_pass_count": 25, + "semantic_pass_rate": 1.0, + "route_pass_count": 25, + "route_pass_rate": 1.0, + "strict_pass_count": 25, + "strict_pass_rate": 1.0, + "factual_count": 23, + "partial_coverage_count": 2, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_applied_count": 14, + "avg_elapsed_ms": 5770.4 + }, + "distributions": { + "reply_type": { + "factual": 23, + "partial_coverage": 2 + }, + "actual_intent": { + "list_documents_by_counterparty": 3, + "account_balance_snapshot": 9, + "documents_forming_balance": 2, + "bank_operations_by_counterparty": 2, + "list_documents_by_contract": 3, + "bank_operations_by_contract": 3, + "open_items_by_counterparty_or_contract": 3 + }, + "actual_mode": { + "address_query": 25 + }, + "mcp_call_status": { + "matched_non_empty": 23, + "no_raw_rows": 2 + }, + "limited_reason_category": { + "empty_match": 2 + }, + "route_health": { + "ok_or_factual": 23, + "partial_non_blocking": 2 + } + } + }, + "rows": [ + { + "index": 1, + "id": "F001", + "question": "Покажи документы по СВК за 2020", + "session": "chain_docs_svk_a", + "session_id": "asst-2026-04-02_Address_Nightly_followup_25_20-23-18-chain_docs_svk_a", + "status_code": 200, + "ok": true, + "elapsed_ms": 7841, + "reply_type": "factual", + "trace_id": "address-Q94jRi4x6r", + "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 | аналитика: Группа", + "assistant_reply_first_line": "Собран список документов по контрагенту (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 20, + "rows_matched": 3, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-Q94jRi4x6r", + "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": "QcQcGo_bEPjGub", + "llm_decomposition_effective_message": "Показать документы по СВК за период 2020 год.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "покажи документы по свк за 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "QcQcGo_bEPjGub", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Показать документы по СВК за период 2020 год." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 2, + "id": "F002", + "question": "а теперь только за май 2020", + "session": "chain_docs_svk_a", + "session_id": "asst-2026-04-02_Address_Nightly_followup_25_20-23-18-chain_docs_svk_a", + "status_code": 200, + "ok": true, + "elapsed_ms": 3301, + "reply_type": "factual", + "trace_id": "address-g6UA9ODFKo", + "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 | аналитика: Группа", + "assistant_reply_first_line": "По окну 2020-05-01..2020-05-31 строк не найдено; показаны ближайшие доступные данные 2020-07-27..2021-11-10.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 26, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-g6UA9ODFKo", + "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 + }, + "error_code": null, + "error_message": null + }, + { + "index": 3, + "id": "F003", + "question": "а по счету 60.01 на ту же дату", + "session": "chain_docs_svk_a", + "session_id": "asst-2026-04-02_Address_Nightly_followup_25_20-23-18-chain_docs_svk_a", + "status_code": 200, + "ok": true, + "elapsed_ms": 6844, + "reply_type": "factual", + "trace_id": "address-sHmm6SdUZc", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-sHmm6SdUZc", + "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": "60.01", + "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": "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": "Ky35f0trpn8h6F", + "llm_decomposition_effective_message": "по счету 60.01 на ту же дату", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "а по счету 60.01 на ту же дату", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "Ky35f0trpn8h6F", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "по счету 60.01 на ту же дату" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 4, + "id": "F004", + "question": "а на ту же дату по 62.01", + "session": "chain_docs_svk_a", + "session_id": "asst-2026-04-02_Address_Nightly_followup_25_20-23-18-chain_docs_svk_a", + "status_code": 200, + "ok": true, + "elapsed_ms": 1039, + "reply_type": "factual", + "trace_id": "address-ynZdpaFDQo", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 2, + "rows_matched": 2, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-ynZdpaFDQo", + "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", + "intent_not_supported_in_v1", + "intent_adjusted_to_balance_followup_context", + "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": "low", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "account": "62.01", + "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": "62.01", + "anchor_value_resolved": "62.01", + "resolver_confidence": "high", + "ambiguity_count": 0, + "match_failure_stage": "none", + "match_failure_reason": null, + "mcp_call_status": "matched_non_empty", + "rows_fetched": 2, + "raw_rows_received": 2, + "rows_after_account_scope": 2, + "rows_after_recipe_filter": 2, + "rows_materialized": 2, + "rows_matched": 2, + "raw_row_keys_sample": [ + "Период", + "Регистратор", + "СчетДт", + "СчетКт", + "Сумма", + "Period", + "Registrator", + "AccountDt", + "AccountKt", + "Amount" + ], + "materialization_drop_reason": "none", + "account_token_raw": "62.01", + "account_token_normalized": "62.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": false, + "llm_provider_used": "local", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "а на ту же дату по 62.01", + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "sanitized_user_message": "а на ту же дату по 62.01", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + }, + "error_code": null, + "error_message": null + }, + { + "index": 5, + "id": "F005", + "question": "раскрой остаток по 62.01 документами на ту же дату", + "session": "chain_docs_svk_a", + "session_id": "asst-2026-04-02_Address_Nightly_followup_25_20-23-18-chain_docs_svk_a", + "status_code": 200, + "ok": true, + "elapsed_ms": 7088, + "reply_type": "factual", + "trace_id": "address-fzX_1M3_RZ", + "assistant_reply": "Собран drilldown документов, формирующих остаток по счету на указанную дату.\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\nМожно уточнить выборку по контрагенту, договору или периоду.", + "assistant_reply_first_line": "Собран drilldown документов, формирующих остаток по счету на указанную дату.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_forming_balance_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 2, + "rows_matched": 2, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-fzX_1M3_RZ", + "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_account_drilldown_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": "high", + "query_shape": "DOCUMENT_LIST", + "query_shape_confidence": "medium", + "detected_intent": "documents_forming_balance", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "account": "62.01", + "as_of_date": "2020-05-31", + "period_from": "2020-05-01", + "period_to": "2020-05-31" + }, + "missing_required_filters": [], + "selected_recipe": "address_documents_forming_balance_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "strict", + "account_scope_fallback_applied": false, + "anchor_type": "account", + "anchor_value_raw": "62.01", + "anchor_value_resolved": "62.01", + "resolver_confidence": "high", + "ambiguity_count": 0, + "match_failure_stage": "none", + "match_failure_reason": null, + "mcp_call_status": "matched_non_empty", + "rows_fetched": 2, + "raw_rows_received": 2, + "rows_after_account_scope": 2, + "rows_after_recipe_filter": 2, + "rows_materialized": 2, + "rows_matched": 2, + "raw_row_keys_sample": [ + "Период", + "Регистратор", + "СчетДт", + "СчетКт", + "Сумма", + "Period", + "Registrator", + "AccountDt", + "AccountKt", + "Amount" + ], + "materialization_drop_reason": "none", + "account_token_raw": "62.01", + "account_token_normalized": "62.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_LIST", + "execution_lane": "address_query", + "llm_decomposition_applied": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "LX_63AMdfqxySj", + "llm_decomposition_effective_message": "раскрыть остаток по счету 62.01 с соответствующими документами на ту же дату", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "раскрой остаток по 62.01 документами на ту же дату", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "LX_63AMdfqxySj", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "раскрыть остаток по счету 62.01 с соответствующими документами на ту же дату" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 6, + "id": "F006", + "question": "Покажи банковские операции по СВК за 2020", + "session": "chain_bank_svk_b", + "session_id": "asst-2026-04-02_Address_Nightly_followup_25_20-23-18-chain_bank_svk_b", + "status_code": 200, + "ok": true, + "elapsed_ms": 11457, + "reply_type": "factual", + "trace_id": "address-RjGqai80KY", + "assistant_reply": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.\nСобран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 5.\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-16T16:20:52Z | Списание с расчетного счета 00000000294 от 16.12.2020 16:20:52 | 0 / 0 | 3849.26 | аналитика: УФК по г. Москве (для ГУ - Отделения ПФР по г. Москве и МО)\n4. 2020-12-16T16:20:51Z | Списание с расчетного счета 00000000293 от 16.12.2020 16:20:51 | 0 / 0 | 60 | аналитика: СБЕРБАНК, ПАО\n5. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "assistant_reply_first_line": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "rows_fetched": 20, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-RjGqai80KY", + "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", + "anchor_not_matched_fallback_rows" + ], + "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": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "mcp_call_status": "matched_non_empty", + "rows_fetched": 20, + "raw_rows_received": 20, + "rows_after_account_scope": 5, + "rows_after_recipe_filter": 0, + "rows_materialized": 5, + "rows_matched": 5, + "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": "yYcUYAxWMQLtnZ", + "llm_decomposition_effective_message": "Показать банковские операции по счету 51 (СВК) за период 2020 год.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "покажи банковские операции по свк за 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "yYcUYAxWMQLtnZ", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Показать банковские операции по счету 51 (СВК) за период 2020 год." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 7, + "id": "F007", + "question": "а теперь только ноябрь 2020", + "session": "chain_bank_svk_b", + "session_id": "asst-2026-04-02_Address_Nightly_followup_25_20-23-18-chain_bank_svk_b", + "status_code": 200, + "ok": true, + "elapsed_ms": 5047, + "reply_type": "factual", + "trace_id": "address-WWKaIL57Zp", + "assistant_reply": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.\nСобран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 5.\n1. 2020-11-30T12:00:07Z | Поступление на расчетный счет 00000000041 от 30.11.2020 12:00:07 | 0 / 0 | 38900 | аналитика: Группа\n3. 2020-11-19T12:00:04Z | Поступление на расчетный счет 00000000039 от 19.11.2020 12:00:04 | 0 / 0 | 3320600 | аналитика: Группа\n4. 2020-11-18T12:00:05Z | Поступление на расчетный счет 00000000038 от 18.11.2020 12:00:05 | 0 / 0 | 745300 | аналитика: Группа\n5. 2020-11-18T12:00:04Z | Поступление на расчетный счет 00000000037 от 18.11.2020 12:00:04 | 0 / 0 | 320000 | аналитика: Группа", + "assistant_reply_first_line": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "rows_fetched": 20, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-WWKaIL57Zp", + "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", + "anchor_not_matched_fallback_rows" + ], + "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_counterparty", + "detected_intent_confidence": "low", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "period_from": "2020-11-01", + "period_to": "2020-11-30", + "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": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "mcp_call_status": "matched_non_empty", + "rows_fetched": 20, + "raw_rows_received": 20, + "rows_after_account_scope": 5, + "rows_after_recipe_filter": 0, + "rows_materialized": 5, + "rows_matched": 5, + "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 + }, + "error_code": null, + "error_message": null + }, + { + "index": 8, + "id": "F008", + "question": "а теперь документы по нему", + "session": "chain_bank_svk_b", + "session_id": "asst-2026-04-02_Address_Nightly_followup_25_20-23-18-chain_bank_svk_b", + "status_code": 200, + "ok": true, + "elapsed_ms": 9164, + "reply_type": "factual", + "trace_id": "address-MztPSryk6R", + "assistant_reply": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.\nСобран список документов по контрагенту (live address lane).\nСтрок отобрано: 5.\n1. 2020-11-30T12:00:07Z | Поступление на расчетный счет 00000000041 от 30.11.2020 12:00:07 | 0 / 0 | 38900 | аналитика: Группа\n3. 2020-11-19T12:00:04Z | Поступление на расчетный счет 00000000039 от 19.11.2020 12:00:04 | 0 / 0 | 3320600 | аналитика: Группа\n4. 2020-11-18T12:00:05Z | Поступление на расчетный счет 00000000038 от 18.11.2020 12:00:05 | 0 / 0 | 745300 | аналитика: Группа\n5. 2020-11-18T12:00:04Z | Поступление на расчетный счет 00000000037 от 18.11.2020 12:00:04 | 0 / 0 | 320000 | аналитика: Группа", + "assistant_reply_first_line": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "rows_fetched": 20, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-MztPSryk6R", + "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", + "period_from_followup_context", + "address_followup_context_applied", + "anchor_not_matched_fallback_rows" + ], + "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-11-01", + "period_to": "2020-11-30" + }, + "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": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "mcp_call_status": "matched_non_empty", + "rows_fetched": 20, + "raw_rows_received": 20, + "rows_after_account_scope": 5, + "rows_after_recipe_filter": 0, + "rows_materialized": 5, + "rows_matched": 5, + "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": "w4hu_WLd-3OlMB", + "llm_decomposition_effective_message": "документы по неуказанному объекту", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "а теперь документы по нему", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "w4hu_WLd-3OlMB", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "документы по неуказанному объекту" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 9, + "id": "F009", + "question": "и остаток по 51 на ту же дату", + "session": "chain_bank_svk_b", + "session_id": "asst-2026-04-02_Address_Nightly_followup_25_20-23-18-chain_bank_svk_b", + "status_code": 200, + "ok": true, + "elapsed_ms": 6929, + "reply_type": "factual", + "trace_id": "address-rvjA9NKKnB", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 200, + "rows_matched": 200, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-rvjA9NKKnB", + "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": "51", + "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": "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": 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": "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": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "fV9ec78RRB19QZ", + "llm_decomposition_effective_message": "остаток по счету 51 на текущую дату", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "и остаток по 51 на ту же дату", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "fV9ec78RRB19QZ", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "остаток по счету 51 на текущую дату" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 10, + "id": "F010", + "question": "а теперь только май 2020", + "session": "chain_bank_svk_b", + "session_id": "asst-2026-04-02_Address_Nightly_followup_25_20-23-18-chain_bank_svk_b", + "status_code": 200, + "ok": true, + "elapsed_ms": 949, + "reply_type": "factual", + "trace_id": "address-jbDtn2yxFJ", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 24, + "rows_matched": 24, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-jbDtn2yxFJ", + "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", + "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, + "period_from": "2020-05-01", + "period_to": "2020-05-31", + "as_of_date": "2020-05-31", + "account": "51" + }, + "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": 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 + }, + "error_code": null, + "error_message": null + }, + { + "index": 11, + "id": "F011", + "question": "Покажи сальдо по счету 60 на 2020-12-31", + "session": "chain_balance_c", + "session_id": "asst-2026-04-02_Address_Nightly_followup_25_20-23-18-chain_balance_c", + "status_code": 200, + "ok": true, + "elapsed_ms": 8142, + "reply_type": "partial_coverage", + "trace_id": "address-X260TBkmoH", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.", + "assistant_reply_first_line": "В live-данных по текущему фильтру записи не найдены.", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "partial_non_blocking", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 0, + "rows_matched": 0, + "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, + "debug_payload": { + "trace_id": "address-X260TBkmoH", + "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", + "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-12-01", + "period_to": "2020-12-31", + "as_of_date": "2020-12-31" + }, + "missing_required_filters": [], + "selected_recipe": "address_movements_account_snapshot_v1", + "mcp_call_status_legacy": "no_raw_rows", + "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": "no_raw_rows", + "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": "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": "empty_match", + "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": "EYXi1UDNiV4vlp", + "llm_decomposition_effective_message": "Показать сальдо по счету 60 на конец декабря 2020 года (2020-12-31)", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "покажи сальдо по счету 60 на 2020-12-31", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "EYXi1UDNiV4vlp", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Показать сальдо по счету 60 на конец декабря 2020 года (2020-12-31)" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 12, + "id": "F012", + "question": "а теперь только май 2020", + "session": "chain_balance_c", + "session_id": "asst-2026-04-02_Address_Nightly_followup_25_20-23-18-chain_balance_c", + "status_code": 200, + "ok": true, + "elapsed_ms": 1000, + "reply_type": "factual", + "trace_id": "address-QB-wv-MKsd", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 6, + "rows_matched": 6, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-QB-wv-MKsd", + "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", + "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, + "period_from": "2020-05-01", + "period_to": "2020-05-31", + "as_of_date": "2020-05-31", + "account": "60" + }, + "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": "а теперь только май 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 + }, + "error_code": null, + "error_message": null + }, + { + "index": 13, + "id": "F013", + "question": "а на ту же дату по 62", + "session": "chain_balance_c", + "session_id": "asst-2026-04-02_Address_Nightly_followup_25_20-23-18-chain_balance_c", + "status_code": 200, + "ok": true, + "elapsed_ms": 1012, + "reply_type": "factual", + "trace_id": "address-slrQvNoNF9", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 4.\nСумма по отобранным движениям: 2545546.24.\n1. 2020-05-21T12:00:00Z | Поступление на расчетный счет 00000000023 от 21.05.2020 12:00:00 | 51 / 62.02 | 250546.24\n2. 2020-05-18T12:00:01Z | Реализация товаров и услуг 00000000002 от 18.05.2020 12:00:01 | 62.01 / 90.01.1 | 765000\n3. 2020-05-18T12:00:01Z | Реализация товаров и услуг 00000000002 от 18.05.2020 12:00:01 | 62.02 / 62.01 | 765000\n4. 2020-05-15T12:00:02Z | Поступление на расчетный счет 00000000022 от 15.05.2020 12:00:02 | 51 / 62.02 | 765000", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 4, + "rows_matched": 4, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-slrQvNoNF9", + "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_adjusted_to_balance_followup_context", + "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": "low", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "account": "62", + "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": "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": 4, + "raw_rows_received": 4, + "rows_after_account_scope": 4, + "rows_after_recipe_filter": 4, + "rows_materialized": 4, + "rows_matched": 4, + "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": 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 + }, + "error_code": null, + "error_message": null + }, + { + "index": 14, + "id": "F014", + "question": "раскрой 62 документами на ту же дату", + "session": "chain_balance_c", + "session_id": "asst-2026-04-02_Address_Nightly_followup_25_20-23-18-chain_balance_c", + "status_code": 200, + "ok": true, + "elapsed_ms": 7160, + "reply_type": "factual", + "trace_id": "address-ibbTd1HTNR", + "assistant_reply": "Собран drilldown документов, формирующих остаток по счету на указанную дату.\nДокументных строк отобрано: 196.\nСумма по отобранным движениям: 51567351.32000001.\n1. 2021-11-10T12:00:07Z | Поступление на расчетный счет 00000000013 от 10.11.2021 12:00:07 | 51 / 62.02 | 20000\n2. 2021-09-29T12:00:03Z | Поступление на расчетный счет 00000000012 от 29.09.2021 12:00:03 | 51 / 62.02 | 50000\n3. 2021-08-31T12:00:04Z | Поступление на расчетный счет 00000000011 от 31.08.2021 12:00:04 | 51 / 62.02 | 120500\n4. 2021-06-22T12:00:00Z | Поступление на расчетный счет 00000000010 от 22.06.2021 12:00:00 | 51 / 62.02 | 498630\n5. 2021-06-09T12:00:05Z | Поступление на расчетный счет 00000000009 от 09.06.2021 12:00:05 | 51 / 62.02 | 418960\n6. 2021-04-28T12:00:08Z | Поступление на расчетный счет 00000000008 от 28.04.2021 12:00:08 | 51 / 62.02 | 564300\n7. 2021-04-22T12:00:00Z | Поступление на расчетный счет 00000000007 от 22.04.2021 12:00:00 | 51 / 62.02 | 982420\n8. 2021-04-13T12:00:11Z | Поступление на расчетный счет 00000000006 от 13.04.2021 12:00:11 | 51 / 62.02 | 1882400\nМожно уточнить выборку по контрагенту, договору или периоду.", + "assistant_reply_first_line": "Собран drilldown документов, формирующих остаток по счету на указанную дату.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_forming_balance_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 200, + "rows_matched": 196, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-ibbTd1HTNR", + "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_account_drilldown_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": "documents_forming_balance", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "account": "62", + "as_of_date": "2026-04-02" + }, + "missing_required_filters": [], + "selected_recipe": "address_documents_forming_balance_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": 196, + "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_LIST", + "execution_lane": "address_query", + "llm_decomposition_applied": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "mmgzbBDwmKk6bs", + "llm_decomposition_effective_message": "раскрыть счет 62 по связанным документам с той же датой", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "раскрой 62 документами на ту же дату", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "mmgzbBDwmKk6bs", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "раскрыть счет 62 по связанным документам с той же датой" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 15, + "id": "F015", + "question": "вернись на 2020-12-31 по 60", + "session": "chain_balance_c", + "session_id": "asst-2026-04-02_Address_Nightly_followup_25_20-23-18-chain_balance_c", + "status_code": 200, + "ok": true, + "elapsed_ms": 1009, + "reply_type": "partial_coverage", + "trace_id": "address-K-wsDZFQAr", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.", + "assistant_reply_first_line": "В live-данных по текущему фильтру записи не найдены.", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "partial_non_blocking", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 0, + "rows_matched": 0, + "mcp_call_status": "no_raw_rows", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-K-wsDZFQAr", + "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": [ + "no_address_or_deep_signal", + "address_mode_from_followup_context", + "shape_not_detected", + "account_balance_signal_detected", + "intent_adjusted_to_balance_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, + "account": "60", + "period_from": "2020-12-01", + "period_to": "2020-12-31", + "as_of_date": "2020-12-31" + }, + "missing_required_filters": [], + "selected_recipe": "address_movements_account_snapshot_v1", + "mcp_call_status_legacy": "no_raw_rows", + "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": "no_raw_rows", + "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": "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": "empty_match", + "response_type": "LIMITED_WITH_REASON", + "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-12-31 по 60", + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "sanitized_user_message": "вернись на 2020-12-31 по 60", + "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 + }, + "error_code": null, + "error_message": null + }, + { + "index": 16, + "id": "F016", + "question": "Покажи документы по договору 19/15 за 2020", + "session": "chain_contract_d", + "session_id": "asst-2026-04-02_Address_Nightly_followup_25_20-23-18-chain_contract_d", + "status_code": 200, + "ok": true, + "elapsed_ms": 8310, + "reply_type": "factual", + "trace_id": "address-abWeThopz7", + "assistant_reply": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 8.\n1. 2020-08-31T15:00:06Z | Поступление товаров и услуг 00000000024 от 31.08.2020 15:00:06 | 19.04 / 76.05 | 233.33\n2. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 43804.8\n3. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 9776\n4. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 73968\n5. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 94924.8\n6. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 54400\n7. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.02 / 62.01 | 276873.6\n8. 2020-06-30T12:00:00Z | Поступление товаров и услуг 00000000015 от 30.06.2020 12:00:00 | 19.04 / 76.05 | 233.33", + "assistant_reply_first_line": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 8, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-abWeThopz7", + "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_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": "high", + "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": "19/15", + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": 11, + "rows_materialized": 438, + "rows_matched": 8, + "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": "HrppW8ht4QjlGH", + "llm_decomposition_effective_message": "Показать документы по договору 19/15 за период 2020 года.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "покажи документы по договору 19/15 за 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "HrppW8ht4QjlGH", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Показать документы по договору 19/15 за период 2020 года." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 17, + "id": "F017", + "question": "а теперь банковские операции", + "session": "chain_contract_d", + "session_id": "asst-2026-04-02_Address_Nightly_followup_25_20-23-18-chain_contract_d", + "status_code": 200, + "ok": true, + "elapsed_ms": 9137, + "reply_type": "factual", + "trace_id": "address-pxg0-EU2T4", + "assistant_reply": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.\nСобран список банковских операций по договору (live address lane).\nСтрок отобрано: 3.\n1. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53\n2. 2020-07-15T13:11:23Z | Списание с расчетного счета 00000000191 от 15.07.2020 13:11:23 | 66.02 / 51 | 54125.93\n3. 2020-07-15T13:11:22Z | Списание с расчетного счета 00000000190 от 15.07.2020 13:11:22 | 66.01 / 51 | 122035.07", + "assistant_reply_first_line": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 3, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-pxg0-EU2T4", + "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", + "bank_ops_by_counterparty_signal_detected", + "intent_adjusted_to_contract_followup_context", + "contract_from_followup_context", + "period_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, + "contract": "19/15", + "period_from": "2020-01-01", + "period_to": "2020-12-31" + }, + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "WfaGMk1Jk4_XpW", + "llm_decomposition_effective_message": "а теперь банковские операции", + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "sanitized_user_message": "а теперь банковские операции", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "WfaGMk1Jk4_XpW", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "а теперь банковские операции" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 18, + "id": "F018", + "question": "а теперь только за 2020", + "session": "chain_contract_d", + "session_id": "asst-2026-04-02_Address_Nightly_followup_25_20-23-18-chain_contract_d", + "status_code": 200, + "ok": true, + "elapsed_ms": 3019, + "reply_type": "factual", + "trace_id": "address-uXWpoDX2yK", + "assistant_reply": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.\nСобран список банковских операций по договору (live address lane).\nСтрок отобрано: 3.\n1. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53\n2. 2020-07-15T13:11:23Z | Списание с расчетного счета 00000000191 от 15.07.2020 13:11:23 | 66.02 / 51 | 54125.93\n3. 2020-07-15T13:11:22Z | Списание с расчетного счета 00000000190 от 15.07.2020 13:11:22 | 66.01 / 51 | 122035.07", + "assistant_reply_first_line": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 3, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-uXWpoDX2yK", + "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": "19/15" + }, + "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": "19/15", + "anchor_value_resolved": "19/15", + "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 + }, + "error_code": null, + "error_message": null + }, + { + "index": 19, + "id": "F019", + "question": "есть ли открытые позиции по договору 19/15 на 2020-12-31", + "session": "chain_contract_d", + "session_id": "asst-2026-04-02_Address_Nightly_followup_25_20-23-18-chain_contract_d", + "status_code": 200, + "ok": true, + "elapsed_ms": 9158, + "reply_type": "factual", + "trace_id": "address-S6LQAYRfBx", + "assistant_reply": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.\nСобраны открытые позиции по указанному фильтру (контрагент/договор).\nСтрок отобрано: 8.\n1. 2020-08-31T15:00:06Z | Поступление товаров и услуг 00000000024 от 31.08.2020 15:00:06 | 19.04 / 76.05 | 233.33\n2. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 43804.8\n3. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 9776\n4. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 73968\n5. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 94924.8\n6. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 54400", + "assistant_reply_first_line": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.", + "expected_intent": "open_items_by_counterparty_or_contract", + "actual_intent": "open_items_by_counterparty_or_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_open_items_by_party_or_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 8, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-S6LQAYRfBx", + "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", + "open_items_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": "VERIFY_FACTUAL", + "query_shape_confidence": "medium", + "detected_intent": "open_items_by_counterparty_or_contract", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "contract": "19/15", + "as_of_date": "2020-12-31" + }, + "missing_required_filters": [], + "selected_recipe": "address_open_items_by_party_or_contract_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "account_scope_fallback_applied": false, + "anchor_type": "contract", + "anchor_value_raw": "19/15", + "anchor_value_resolved": "19/15", + "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": 285, + "rows_after_recipe_filter": 8, + "rows_materialized": 285, + "rows_matched": 8, + "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": "COwp5CB_vBR3YX", + "llm_decomposition_effective_message": "Проверить наличие открытых позиций по договору 19/15 на конец периода 2020-12-31.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "есть ли открытые позиции по договору 19/15 на 2020-12-31", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "COwp5CB_vBR3YX", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Проверить наличие открытых позиций по договору 19/15 на конец периода 2020-12-31." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 20, + "id": "F020", + "question": "покажи документы по этому же договору", + "session": "chain_contract_d", + "session_id": "asst-2026-04-02_Address_Nightly_followup_25_20-23-18-chain_contract_d", + "status_code": 200, + "ok": true, + "elapsed_ms": 8197, + "reply_type": "factual", + "trace_id": "address-_AyEb6SBWc", + "assistant_reply": "Собран список документов по договору (live address lane).\nСтрок отобрано: 1.\n1. 2021-12-31T12:00:00Z | Поступление товаров и услуг 00000000015 от 31.12.2021 12:00:00 | 19.04 / 76.05 | 233.33", + "assistant_reply_first_line": "Собран список документов по договору (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 1, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-_AyEb6SBWc", + "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_contract_signal_detected", + "contract_from_followup_context", + "address_followup_context_applied" + ], + "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_contract", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "contract": "19/15" + }, + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": 416, + "rows_after_recipe_filter": 2, + "rows_materialized": 416, + "rows_matched": 1, + "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": "E-jVlyV1aPO83x", + "llm_decomposition_effective_message": "Показать документы по указанному договору.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "покажи документы по этому же договору", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "E-jVlyV1aPO83x", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Показать документы по указанному договору." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 21, + "id": "F021", + "question": "Покажи банковские операции по договору 19/15", + "session": "chain_contract_e", + "session_id": "asst-2026-04-02_Address_Nightly_followup_25_20-23-18-chain_contract_e", + "status_code": 200, + "ok": true, + "elapsed_ms": 8131, + "reply_type": "factual", + "trace_id": "address-09XN7IdRO0", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 29.\n1. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53\n2. 2020-07-15T13:11:23Z | Списание с расчетного счета 00000000191 от 15.07.2020 13:11:23 | 66.02 / 51 | 54125.93\n3. 2020-07-15T13:11:22Z | Списание с расчетного счета 00000000190 от 15.07.2020 13:11:22 | 66.01 / 51 | 122035.07\n4. 2019-11-29T12:00:02Z | Списание с расчетного счета 00000000515 от 29.11.2019 12:00:02 | 68.01.1 / 51 | 19058\n5. 2019-11-15T17:00:00Z | Списание с расчетного счета 00000000507 от 15.11.2019 17:00:00 | 66.02 / 51 | 68582.19\n6. 2019-11-15T12:00:07Z | Списание с расчетного счета 00000000506 от 15.11.2019 12:00:07 | 66.01 / 51 | 107578.81\n7. 2019-11-15T12:00:06Z | Списание с расчетного счета 00000000505 от 15.11.2019 12:00:06 | 70 / 51 | 29200\n8. 2019-11-15T12:00:05Z | Списание с расчетного счета 00000000504 от 15.11.2019 12:00:05 | 70 / 51 | 16000\n9. 2019-11-15T12:00:04Z | Списание с расчетного счета 00000000503 от 15.11.2019 12:00:04 | 69.02.7 / 51 | 32560\n10. 2019-11-15T12:00:03Z | Списание с расчетного счета 00000000502 от 15.11.2019 12:00:03 | 70 / 51 | 10296.85\n11. 2019-11-15T12:00:02Z | Списание с расчетного счета 00000000501 от 15.11.2019 12:00:02 | 69.03.1 / 51 | 7548\n12. 2019-11-15T12:00:01Z | Списание с расчетного счета 00000000500 от 15.11.2019 12:00:01 | 76.05 / 51 | 6900\n13. 2019-11-15T12:00:00Z | Списание с расчетного счета 00000000499 от 15.11.2019 12:00:00 | 69.11 / 51 | 296\n14. 2019-10-15T12:00:07Z | Поступление на расчетный счет 00000000052 от 15.10.2019 12:00:07 | 51 / 66.01 | 5000000\n15. 2019-10-15T12:00:06Z | Списание с расчетного счета 00000000454 от 15.10.2019 12:00:06 | 60.02 / 51 | 890000\n16. 2019-10-15T12:00:05Z | Списание с расчетного счета 00000000453 от 15.10.2019 12:00:05 | 76.05 / 51 | 491450\n17. 2019-10-15T12:00:04Z | Списание с расчетного счета 00000000452 от 15.10.2019 12:00:04 | 70 / 51 | 29200\n18. 2019-10-15T12:00:03Z | Списание с расчетного счета 00000000451 от 15.10.2019 12:00:03 | 70 / 51 | 16000\n19. 2019-10-15T12:00:02Z | Списание с расчетного счета 00000000450 от 15.10.2019 12:00:02 | 70 / 51 | 14000\n20. 2019-10-15T12:00:01Z | Списание с расчетного счета 00000000449 от 15.10.2019 12:00:01 | 76.05 / 51 | 3300\n21. 2019-10-15T12:00:00Z | Списание с расчетного счета 00000000448 от 15.10.2019 12:00:00 | 91.02 / 51 | 296\n22. 2019-09-17T12:00:00Z | Списание с расчетного счета 00000000415 от 17.09.2019 12:00:00 | 60.01 / 51 | 150000\n23. 2019-09-17T12:00:00Z | Списание с расчетного счета 00000000415 от 17.09.2019 12:00:00 | 60.01 / 51 | 170740\n24. 2019-08-01T14:37:15Z | Списание с расчетного счета 00000000345 от 01.08.2019 14:37:15 | 60.02 / 51 | 256500\n25. 2019-07-29T12:00:01Z | Списание с расчетного счета 00000000315 от 29.07.2019 12:00:01 | 68.04.1 / 51 | 42562\n26. 2019-07-15T12:00:03Z | Списание с расчетного счета 00000000294 от 15.07.2019 12:00:03 | 70 / 51 | 10800\n27. 2019-07-15T12:00:02Z | Списание с расчетного счета 00000000293 от 15.07.2019 12:00:02 | 70 / 51 | 14000\n28. 2019-07-15T12:00:01Z | Списание с расчетного счета 00000000292 от 15.07.2019 12:00:01 | 70 / 51 | 6800\n29. 2019-07-15T12:00:00Z | Списание с расчетного счета 00000000291 от 15.07.2019 12:00:00 | 91.02 / 51 | 158", + "assistant_reply_first_line": "Собран список банковских операций по договору (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 29, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-09XN7IdRO0", + "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", + "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": "high", + "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, + "account": "51", + "contract": "19/15" + }, + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": 1000, + "rows_after_recipe_filter": 29, + "rows_materialized": 1000, + "rows_matched": 29, + "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": "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": "VShGD__aWysyME", + "llm_decomposition_effective_message": "Показать банковские операции (счета 51, 62) связанные с договором 19/15.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "покажи банковские операции по договору 19/15", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "VShGD__aWysyME", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Показать банковские операции (счета 51, 62) связанные с договором 19/15." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 22, + "id": "F022", + "question": "а теперь открытые позиции по нему", + "session": "chain_contract_e", + "session_id": "asst-2026-04-02_Address_Nightly_followup_25_20-23-18-chain_contract_e", + "status_code": 200, + "ok": true, + "elapsed_ms": 2193, + "reply_type": "factual", + "trace_id": "address-eKUFfEftEQ", + "assistant_reply": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.\nСобраны открытые позиции по указанному фильтру (контрагент/договор).\nСтрок отобрано: 1.\n1. 2021-12-31T12:00:00Z | Поступление товаров и услуг 00000000015 от 31.12.2021 12:00:00 | 19.04 / 76.05 | 233.33", + "assistant_reply_first_line": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.", + "expected_intent": "open_items_by_counterparty_or_contract", + "actual_intent": "open_items_by_counterparty_or_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_open_items_by_party_or_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 1, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-eKUFfEftEQ", + "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", + "open_items_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": "open_items_by_counterparty_or_contract", + "detected_intent_confidence": "low", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "contract": "19/15" + }, + "missing_required_filters": [], + "selected_recipe": "address_open_items_by_party_or_contract_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "account_scope_fallback_applied": false, + "anchor_type": "contract", + "anchor_value_raw": "19/15", + "anchor_value_resolved": "19/15", + "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": 190, + "rows_after_recipe_filter": 1, + "rows_materialized": 190, + "rows_matched": 1, + "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": "а теперь открытые позиции по нему", + "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 + }, + "error_code": null, + "error_message": null + }, + { + "index": 23, + "id": "F023", + "question": "а теперь на 2020-12-31", + "session": "chain_contract_e", + "session_id": "asst-2026-04-02_Address_Nightly_followup_25_20-23-18-chain_contract_e", + "status_code": 200, + "ok": true, + "elapsed_ms": 2883, + "reply_type": "factual", + "trace_id": "address-B8KX8vXbnV", + "assistant_reply": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.\nСобраны открытые позиции по указанному фильтру (контрагент/договор).\nСтрок отобрано: 8.\n1. 2020-08-31T15:00:06Z | Поступление товаров и услуг 00000000024 от 31.08.2020 15:00:06 | 19.04 / 76.05 | 233.33\n2. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 43804.8\n3. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 9776\n4. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 73968\n5. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 94924.8\n6. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 54400", + "assistant_reply_first_line": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.", + "expected_intent": "open_items_by_counterparty_or_contract", + "actual_intent": "open_items_by_counterparty_or_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_open_items_by_party_or_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 8, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-B8KX8vXbnV", + "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": "open_items_by_counterparty_or_contract", + "detected_intent_confidence": "low", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "as_of_date": "2020-12-31", + "contract": "19/15" + }, + "missing_required_filters": [], + "selected_recipe": "address_open_items_by_party_or_contract_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "account_scope_fallback_applied": false, + "anchor_type": "contract", + "anchor_value_raw": "19/15", + "anchor_value_resolved": "19/15", + "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": 285, + "rows_after_recipe_filter": 8, + "rows_materialized": 285, + "rows_matched": 8, + "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-12-31", + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "sanitized_user_message": "а теперь на 2020-12-31", + "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 + }, + "error_code": null, + "error_message": null + }, + { + "index": 24, + "id": "F024", + "question": "а по счету 51 на ту же дату", + "session": "chain_contract_e", + "session_id": "asst-2026-04-02_Address_Nightly_followup_25_20-23-18-chain_contract_e", + "status_code": 200, + "ok": true, + "elapsed_ms": 5911, + "reply_type": "factual", + "trace_id": "address-fDw8odfzW9", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 200.\nСумма по отобранным движениям: 31252061.949999988.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 51 / 62.02 | 3248300\n2. 2020-12-25T12:00:04Z | Списание с расчетного счета 00000000299 от 25.12.2020 12:00:04 | 91.02 / 51 | 179.78\n3. 2020-12-25T12:00:03Z | Списание с расчетного счета 00000000298 от 25.12.2020 12:00:03 | 68.01.1 / 51 | 9945\n4. 2020-12-25T12:00:02Z | Списание с расчетного счета 00000000297 от 25.12.2020 12:00:02 | 70 / 51 | 18800", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 200, + "rows_matched": 200, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-fDw8odfzW9", + "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", + "account_balance_signal_detected", + "as_of_date_from_followup_context", + "address_followup_context_applied" + ], + "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": "account_balance_snapshot", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "account": "51", + "as_of_date": "2020-12-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": 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": "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": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "7yiT3kvr9mpqRd", + "llm_decomposition_effective_message": "показать записи по счету 51 на ту же дату", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "а по счету 51 на ту же дату", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "7yiT3kvr9mpqRd", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "показать записи по счету 51 на ту же дату" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 25, + "id": "F025", + "question": "а документы по этому же договору за тот же период", + "session": "chain_contract_e", + "session_id": "asst-2026-04-02_Address_Nightly_followup_25_20-23-18-chain_contract_e", + "status_code": 200, + "ok": true, + "elapsed_ms": 9338, + "reply_type": "factual", + "trace_id": "address-G4oMY4tgV1", + "assistant_reply": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 120.\n1. 2022-09-30T12:00:00Z | Поступление товаров и услуг 00000000010 от 30.09.2022 12:00:00 | 19.04 / 76.05 | 191.67\n2. 2022-09-30T12:00:00Z | Поступление товаров и услуг 00000000010 от 30.09.2022 12:00:00 | 44.01 / 76.05 | 958.33\n3. 2022-08-31T12:00:00Z | Поступление товаров и услуг 00000000009 от 31.08.2022 12:00:00 | 19.04 / 76.05 | 233.33\n4. 2022-08-31T12:00:00Z | Поступление товаров и услуг 00000000009 от 31.08.2022 12:00:00 | 44.01 / 76.05 | 1166.67\n5. 2022-07-31T12:00:00Z | Поступление товаров и услуг 00000000008 от 31.07.2022 12:00:00 | 19.04 / 76.05 | 150.54\n6. 2022-07-31T12:00:00Z | Поступление товаров и услуг 00000000008 от 31.07.2022 12:00:00 | 44.01 / 76.05 | 752.69\n7. 2022-07-31T12:00:00Z | Поступление товаров и услуг 00000000008 от 31.07.2022 12:00:00 | 76.05 / 76.05 | 280\n8. 2022-06-30T00:00:01Z | Поступление товаров и услуг 00000000006 от 30.06.2022 0:00:01 | 19.04 / 76.05 | 186.67\n9. 2022-06-30T00:00:01Z | Поступление товаров и услуг 00000000006 от 30.06.2022 0:00:01 | 44.01 / 76.05 | 933.33\n10. 2022-05-31T00:00:01Z | Поступление товаров и услуг 00000000005 от 31.05.2022 0:00:01 | 19.04 / 76.05 | 233.33\n11. 2022-05-31T00:00:01Z | Поступление товаров и услуг 00000000005 от 31.05.2022 0:00:01 | 44.01 / 76.05 | 1166.67\n12. 2022-04-30T00:00:01Z | Поступление товаров и услуг 00000000004 от 30.04.2022 0:00:01 | 19.04 / 76.05 | 233.33\n13. 2022-04-30T00:00:01Z | Поступление товаров и услуг 00000000004 от 30.04.2022 0:00:01 | 44.01 / 76.05 | 1166.67\n14. 2022-04-18T12:00:00Z | Поступление товаров и услуг 00000000007 от 18.04.2022 12:00:00 | 97.21 / 60.01 | 14790\n15. 2022-04-18T12:00:00Z | Поступление товаров и услуг 00000000007 от 18.04.2022 12:00:00 | 60.01 / 60.02 | 14790\n16. 2022-04-13T12:00:00Z | Поступление на расчетный счет 00000000004 от 13.04.2022 12:00:00 | 51 / 76.05 | 1200000\n17. 2022-03-31T12:00:00Z | Поступление товаров и услуг 00000000001 от 31.03.2022 12:00:00 | 19.04 / 76.05 | 233.33\n18. 2022-03-31T12:00:00Z | Поступление товаров и услуг 00000000001 от 31.03.2022 12:00:00 | 44.01 / 76.05 | 1166.67\n19. 2022-02-28T12:00:00Z | Поступление товаров и услуг 00000000002 от 28.02.2022 12:00:00 | 19.04 / 76.05 | 233.33\n20. 2022-02-28T12:00:00Z | Поступление товаров и услуг 00000000002 от 28.02.2022 12:00:00 | 44.01 / 76.05 | 1166.67\n21. 2022-01-31T12:00:00Z | Поступление товаров и услуг 00000000003 от 31.01.2022 12:00:00 | 19.04 / 76.05 | 233.33\n22. 2022-01-31T12:00:00Z | Поступление товаров и услуг 00000000003 от 31.01.2022 12:00:00 | 44.01 / 76.05 | 1166.67\n23. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 217415\n24. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 114640\n25. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 659320\n26. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 109610\n27. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 162300\n28. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 990830\n29. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 302560\n30. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 105310\n31. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 615320\n32. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 144220\n33. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 56930\n34. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 50000\n35. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 425600\n36. 2022-01-20T12:00:03Z | Поступление на расчетный счет 00000000001 от 20.01.2022 12:00:03 | 51 / 60.02 | 119210\n37. 2022-01-20T12:00:03Z | Поступление на расчетный счет 00000000001 от 20.01.2022 12:00:03 | 51 / 60.02 | 180230\n38. 2022-01-20T12:00:03Z | Поступление на расчетный счет 00000000001 от 20.01.2022 12:00:03 | 51 / 60.02 | 144320\n39. 2022-01-20T12:00:03Z | Поступление на расчетный счет 00000000001 от 20.01.2022 12:00:03 | 51 / 60.02 | 320600\n40. 2022-01-20T12:00:03Z | Поступление на расчетный счет 00000000001 от 20.01.2022 12:00:03 | 51 / 60.02 | 126300\n41. 2021-12-31T12:00:00Z | Поступление товаров и услуг 00000000015 от 31.12.2021 12:00:00 | 19.04 / 76.05 | 233.33\n42. 2021-12-31T12:00:00Z | Поступление товаров и услуг 00000000015 от 31.12.2021 12:00:00 | 44.01 / 76.05 | 1166.67\n43. 2021-11-30T12:00:00Z | Поступление товаров и услуг 00000000014 от 30.11.2021 12:00:00 | 19.04 / 76.05 | 233.33\n44. 2021-11-30T12:00:00Z | Поступление товаров и услуг 00000000014 от 30.11.2021 12:00:00 | 44.01 / 76.05 | 1166.67\n45. 2021-11-10T12:00:07Z | Поступление на расчетный счет 00000000013 от 10.11.2021 12:00:07 | 51 / 62.02 | 20000\n46. 2021-10-31T12:00:00Z | Поступление товаров и услуг 00000000013 от 31.10.2021 12:00:00 | 19.04 / 76.05 | 233.33\n47. 2021-10-31T12:00:00Z | Поступление товаров и услуг 00000000013 от 31.10.2021 12:00:00 | 44.01 / 76.05 | 1166.67\n48. 2021-09-30T12:00:00Z | Поступление товаров и услуг 00000000012 от 30.09.2021 12:00:00 | 19.04 / 76.05 | 233.33\n49. 2021-09-30T12:00:00Z | Поступление товаров и услуг 00000000012 от 30.09.2021 12:00:00 | 44.01 / 76.05 | 1166.67\n50. 2021-09-29T12:00:03Z | Поступление на расчетный счет 00000000012 от 29.09.2021 12:00:03 | 51 / 62.02 | 50000\n51. 2021-08-31T12:00:05Z | Поступление товаров и услуг 00000000011 от 31.08.2021 12:00:05 | 19.04 / 76.05 | 233.33\n52. 2021-08-31T12:00:05Z | Поступление товаров и услуг 00000000011 от 31.08.2021 12:00:05 | 44.01 / 76.05 | 1166.67\n53. 2021-08-31T12:00:04Z | Поступление на расчетный счет 00000000011 от 31.08.2021 12:00:04 | 51 / 62.02 | 120500\n54. 2021-07-31T12:00:00Z | Поступление товаров и услуг 00000000010 от 31.07.2021 12:00:00 | 19.04 / 76.05 | 233.33\n55. 2021-07-31T12:00:00Z | Поступление товаров и услуг 00000000010 от 31.07.2021 12:00:00 | 44.01 / 76.05 | 1166.67\n56. 2021-06-30T00:00:00Z | Поступление товаров и услуг 00000000008 от 30.06.2021 0:00:00 | 19.04 / 76.05 | 233.33\n57. 2021-06-30T00:00:00Z | Поступление товаров и услуг 00000000008 от 30.06.2021 0:00:00 | 44.01 / 76.05 | 1166.67\n58. 2021-06-22T12:00:00Z | Поступление на расчетный счет 00000000010 от 22.06.2021 12:00:00 | 51 / 62.02 | 498630\n59. 2021-06-09T12:00:05Z | Поступление на расчетный счет 00000000009 от 09.06.2021 12:00:05 | 51 / 62.02 | 418960\n60. 2021-05-31T12:00:04Z | Поступление товаров и услуг 00000000006 от 31.05.2021 12:00:04 | 19.04 / 76.05 | 233.33\n61. 2021-05-31T12:00:04Z | Поступление товаров и услуг 00000000006 от 31.05.2021 12:00:04 | 44.01 / 76.05 | 1166.67\n62. 2021-05-17T12:00:00Z | Поступление товаров и услуг 00000000009 от 17.05.2021 12:00:00 | 19.04 / 60.01 | 12000\n63. 2021-05-17T12:00:00Z | Поступление товаров и услуг 00000000009 от 17.05.2021 12:00:00 | 97.21 / 60.01 | 60000\n64. 2021-05-17T12:00:00Z | Поступление товаров и услуг 00000000009 от 17.05.2021 12:00:00 | 60.01 / 60.02 | 72000\n65. 2021-04-30T12:00:00Z | Поступление товаров и услуг 00000000005 от 30.04.2021 12:00:00 | 19.04 / 76.05 | 233.33\n66. 2021-04-30T12:00:00Z | Поступление товаров и услуг 00000000005 от 30.04.2021 12:00:00 | 44.01 / 76.05 | 1166.67\n67. 2021-04-28T12:00:08Z | Поступление на расчетный счет 00000000008 от 28.04.2021 12:00:08 | 51 / 62.02 | 564300\n68. 2021-04-22T12:00:00Z | Поступление на расчетный счет 00000000007 от 22.04.2021 12:00:00 | 51 / 62.02 | 982420\n69. 2021-04-13T12:00:11Z | Поступление на расчетный счет 00000000006 от 13.04.2021 12:00:11 | 51 / 62.02 | 1882400\n70. 2021-04-07T12:00:00Z | Поступление товаров и услуг 00000000016 от 07.04.2021 12:00:00 | 97.21 / 60.01 | 11900\n71. 2021-04-07T12:00:00Z | Поступление товаров и услуг 00000000016 от 07.04.2021 12:00:00 | 60.01 / 60.02 | 11900\n72. 2021-03-31T23:59:59Z | Поступление товаров и услуг 00000000003 от 31.03.2021 23:59:59 | 19.04 / 76.05 | 233.33\n73. 2021-03-31T23:59:59Z | Поступление товаров и услуг 00000000003 от 31.03.2021 23:59:59 | 44.01 / 76.05 | 1166.67\n74. 2021-03-25T12:00:02Z | Поступление на расчетный счет 00000000005 от 25.03.2021 12:00:02 | 51 / 62.02 | 644315\n75. 2021-03-24T12:00:03Z | Поступление на расчетный счет 00000000004 от 24.03.2021 12:00:03 | 51 / 62.02 | 1219990\n76. 2021-03-22T12:00:02Z | Реализация товаров и услуг 00000000001 от 22.03.2021 12:00:02 | 62.01 / 90.01.1 | 598950\n77. 2021-03-22T12:00:02Z | Реализация товаров и услуг 00000000001 от 22.03.2021 12:00:02 | 62.02 / 62.01 | 95274\n78. 2021-03-22T12:00:02Z | Реализация товаров и услуг 00000000001 от 22.03.2021 12:00:02 | 62.02 / 62.01 | 38900\n79. 2021-03-22T12:00:02Z | Реализация товаров и услуг 00000000001 от 22.03.2021 12:00:02 | 62.02 / 62.01 | 464776\n80. 2021-03-18T12:00:00Z | Поступление на расчетный счет 00000000003 от 18.03.2021 12:00:00 | 51 / 62.02 | 1425310\n81. 2021-03-12T12:00:03Z | Поступление на расчетный счет 00000000002 от 12.03.2021 12:00:03 | 51 / 62.02 | 214600\n82. 2021-03-09T00:00:00Z | Поступление товаров и услуг 00000000001 от 09.03.2021 0:00:00 | 19.03 / 60.01 | 88415\n83. 2021-03-09T00:00:00Z | Поступление товаров и услуг 00000000001 от 09.03.2021 0:00:00 | 41.01 / 60.01 | 442075\n84. 2021-02-28T23:59:59Z | Поступление товаров и услуг 00000000004 от 28.02.2021 23:59:59 | 19.04 / 76.05 | 233.33\n85. 2021-02-28T23:59:59Z | Поступление товаров и услуг 00000000004 от 28.02.2021 23:59:59 | 44.01 / 76.05 | 1166.67\n86. 2021-02-19T12:00:01Z | Поступление на расчетный счет 00000000001 от 19.02.2021 12:00:01 | 51 / 62.02 | 518600\n87. 2021-01-31T23:59:59Z | Поступление товаров и услуг 00000000002 от 31.01.2021 23:59:59 | 19.04 / 76.05 | 233.33\n88. 2021-01-31T23:59:59Z | Поступление товаров и услуг 00000000002 от 31.01.2021 23:59:59 | 44.01 / 76.05 | 1166.67\n89. 2020-12-31T23:59:59Z | Поступление товаров и услуг 00000000034 от 31.12.2020 23:59:59 | 19.04 / 76.05 | 233.33\n90. 2020-12-31T23:59:59Z | Поступление товаров и услуг 00000000034 от 31.12.2020 23:59:59 | 44.01 / 76.05 | 1166.67\n91. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 51 / 62.02 | 3248300\n92. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 51 / 62.02 | 216600\n93. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 51 / 62.02 | 200000\n94. 2020-11-30T23:59:59Z | Поступление товаров и услуг 00000000033 от 30.11.2020 23:59:59 | 19.04 / 76.05 | 233.33\n95. 2020-11-30T23:59:59Z | Поступление товаров и услуг 00000000033 от 30.11.2020 23:59:59 | 44.01 / 76.05 | 1166.67\n96. 2020-11-30T12:00:08Z | Реализация товаров и услуг 00000000010 от 30.11.2020 12:00:08 | 62.01 / 90.01.1 | 118552\n97. 2020-11-30T12:00:08Z | Реализация товаров и услуг 00000000010 от 30.11.2020 12:00:08 | 62.01 / 90.01.1 | 458472\n98. 2020-11-30T12:00:08Z | Реализация товаров и услуг 00000000010 от 30.11.2020 12:00:08 | 62.02 / 62.01 | 577024\n99. 2020-11-30T12:00:07Z | Поступление на расчетный счет 00000000041 от 30.11.2020 12:00:07 | 51 / 62.02 | 38900\n100. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 900000\n101. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 144749\n102. 2020-11-20T12:00:00Z | Поступление товаров и услуг 00000000030 от 20.11.2020 12:00:00 | 19.03 / 60.01 | 1450\n103. 2020-11-20T12:00:00Z | Поступление товаров и услуг 00000000030 от 20.11.2020 12:00:00 | 41.01 / 60.01 | 7250\n104. 2020-11-20T12:00:00Z | Поступление товаров и услуг 00000000030 от 20.11.2020 12:00:00 | 60.01 / 60.02 | 8700\n105. 2020-11-19T12:00:04Z | Поступление на расчетный счет 00000000039 от 19.11.2020 12:00:04 | 51 / 62.02 | 1041800\n106. 2020-11-19T12:00:04Z | Поступление на расчетный счет 00000000039 от 19.11.2020 12:00:04 | 51 / 62.01 | 2278800\n107. 2020-11-18T12:00:05Z | Поступление на расчетный счет 00000000038 от 18.11.2020 12:00:05 | 51 / 62.01 | 745300\n108. 2020-11-18T12:00:04Z | Поступление на расчетный счет 00000000037 от 18.11.2020 12:00:04 | 51 / 62.01 | 320000\n109. 2020-11-13T12:00:03Z | Поступление на расчетный счет 00000000036 от 13.11.2020 12:00:03 | 51 / 62.01 | 313600\n110. 2020-11-10T15:39:14Z | Реализация товаров и услуг 00000000009 от 10.11.2020 15:39:14 | 62.01 / 90.01.1 | 4161000\n111. 2020-11-10T15:39:14Z | Реализация товаров и услуг 00000000009 от 10.11.2020 15:39:14 | 62.02 / 62.01 | 328300\n112. 2020-11-10T15:39:14Z | Реализация товаров и услуг 00000000009 от 10.11.2020 15:39:14 | 62.02 / 62.01 | 175000\n113. 2020-11-10T15:39:13Z | Поступление на расчетный счет 00000000035 от 10.11.2020 15:39:13 | 51 / 62.02 | 328300\n114. 2020-11-09T12:00:01Z | Поступление товаров и услуг 00000000031 от 09.11.2020 12:00:01 | 41.01 / 60.01 | 2229840\n115. 2020-10-31T23:59:59Z | Поступление товаров и услуг 00000000032 от 31.10.2020 23:59:59 | 19.04 / 76.05 | 233.33\n116. 2020-10-31T23:59:59Z | Поступление товаров и услуг 00000000032 от 31.10.2020 23:59:59 | 44.01 / 76.05 | 1166.67\n117. 2020-10-26T12:00:00Z | Поступление на расчетный счет 00000000034 от 26.10.2020 12:00:00 | 51 / 62.02 | 175000\n118. 2020-10-14T12:00:00Z | Поступление на расчетный счет 00000000033 от 14.10.2020 12:00:00 | 51 / 60.01 | 160000\n119. 2020-09-30T12:00:04Z | Поступление товаров и услуг 00000000025 от 30.09.2020 12:00:04 | 19.04 / 76.05 | 233.33\n120. 2020-09-30T12:00:04Z | Поступление товаров и услуг 00000000025 от 30.09.2020 12:00:04 | 44.01 / 76.05 | 1166.67", + "assistant_reply_first_line": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "materialized_but_not_anchor_matched", + "match_failure_reason": "contract_anchor_not_matched_in_materialized_rows", + "rows_fetched": 1000, + "rows_matched": 120, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-G4oMY4tgV1", + "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", + "anchor_not_matched_fallback_rows" + ], + "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": "за указанный период" + }, + "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": "за указанный период", + "anchor_value_resolved": "за указанный период", + "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": "matched_non_empty", + "rows_fetched": 1000, + "raw_rows_received": 1000, + "rows_after_account_scope": 416, + "rows_after_recipe_filter": 0, + "rows_materialized": 416, + "rows_matched": 120, + "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": "xp_48VLU4gtbW8", + "llm_decomposition_effective_message": "документы по договору за указанный период", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "а документы по этому же договору за тот же период", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "xp_48VLU4gtbW8", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "документы по договору за указанный период" + } + }, + "error_code": null, + "error_message": null + } + ] +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_followup_25_20-23-18/response_audit.md b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_followup_25_20-23-18/response_audit.md new file mode 100644 index 0000000..eba86e5 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_followup_25_20-23-18/response_audit.md @@ -0,0 +1,29 @@ +# Response Audit: 2026-04-02_Address_Nightly_followup_25_20-23-18 + +| id | strict | route_health | reply_type | intent | limited_reason | question | assistant_first_line | +|---|---|---|---|---|---|---|---| +| F001 | True | ok_or_factual | factual | list_documents_by_counterparty | None | Покажи документы по СВК за 2020 | Собран список документов по контрагенту (live address lane). | +| F002 | True | ok_or_factual | factual | list_documents_by_counterparty | None | а теперь только за май 2020 | По окну 2020-05-01..2020-05-31 строк не найдено; показаны ближайшие доступные данные 2020-07-27..2021-11-10. | +| F003 | True | ok_or_factual | factual | account_balance_snapshot | None | а по счету 60.01 на ту же дату | Адресный срез по счету собран (по движениям live MCP). | +| F004 | True | ok_or_factual | factual | account_balance_snapshot | None | а на ту же дату по 62.01 | Адресный срез по счету собран (по движениям live MCP). | +| F005 | True | ok_or_factual | factual | documents_forming_balance | None | раскрой остаток по 62.01 документами на ту же дату | Собран drilldown документов, формирующих остаток по счету на указанную дату. | +| F006 | True | ok_or_factual | factual | bank_operations_by_counterparty | None | Покажи банковские операции по СВК за 2020 | Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу. | +| F007 | True | ok_or_factual | factual | bank_operations_by_counterparty | None | а теперь только ноябрь 2020 | Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу. | +| F008 | True | ok_or_factual | factual | list_documents_by_counterparty | None | а теперь документы по нему | Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу. | +| F009 | True | ok_or_factual | factual | account_balance_snapshot | None | и остаток по 51 на ту же дату | Адресный срез по счету собран (по движениям live MCP). | +| F010 | True | ok_or_factual | factual | account_balance_snapshot | None | а теперь только май 2020 | Адресный срез по счету собран (по движениям live MCP). | +| F011 | True | partial_non_blocking | partial_coverage | account_balance_snapshot | empty_match | Покажи сальдо по счету 60 на 2020-12-31 | В live-данных по текущему фильтру записи не найдены. | +| F012 | True | ok_or_factual | factual | account_balance_snapshot | None | а теперь только май 2020 | Адресный срез по счету собран (по движениям live MCP). | +| F013 | True | ok_or_factual | factual | account_balance_snapshot | None | а на ту же дату по 62 | Адресный срез по счету собран (по движениям live MCP). | +| F014 | True | ok_or_factual | factual | documents_forming_balance | None | раскрой 62 документами на ту же дату | Собран drilldown документов, формирующих остаток по счету на указанную дату. | +| F015 | True | partial_non_blocking | partial_coverage | account_balance_snapshot | empty_match | вернись на 2020-12-31 по 60 | В live-данных по текущему фильтру записи не найдены. | +| F016 | True | ok_or_factual | factual | list_documents_by_contract | None | Покажи документы по договору 19/15 за 2020 | Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк. | +| F017 | True | ok_or_factual | factual | bank_operations_by_contract | None | а теперь банковские операции | Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк. | +| F018 | True | ok_or_factual | factual | bank_operations_by_contract | None | а теперь только за 2020 | Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк. | +| F019 | True | ok_or_factual | factual | open_items_by_counterparty_or_contract | None | есть ли открытые позиции по договору 19/15 на 2020-12-31 | Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк. | +| F020 | True | ok_or_factual | factual | list_documents_by_contract | None | покажи документы по этому же договору | Собран список документов по договору (live address lane). | +| F021 | True | ok_or_factual | factual | bank_operations_by_contract | None | Покажи банковские операции по договору 19/15 | Собран список банковских операций по договору (live address lane). | +| F022 | True | ok_or_factual | factual | open_items_by_counterparty_or_contract | None | а теперь открытые позиции по нему | Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк. | +| F023 | True | ok_or_factual | factual | open_items_by_counterparty_or_contract | None | а теперь на 2020-12-31 | Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк. | +| F024 | True | ok_or_factual | factual | account_balance_snapshot | None | а по счету 51 на ту же дату | Адресный срез по счету собран (по движениям live MCP). | +| F025 | True | ok_or_factual | factual | list_documents_by_contract | None | а документы по этому же договору за тот же период | Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу. | diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_followup_25_20-23-18/run_summary.json b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_followup_25_20-23-18/run_summary.json new file mode 100644 index 0000000..8c6ea10 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_followup_25_20-23-18/run_summary.json @@ -0,0 +1,55 @@ +{ + "run_id": "2026-04-02_Address_Nightly_followup_25_20-23-18", + "generated_at": "2026-04-02T20:25:42", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\address_followup_context_chains_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", + "strict_policy": "route", + "totals": { + "questions_total": 25, + "ok_200_count": 25, + "semantic_pass_count": 25, + "semantic_pass_rate": 1.0, + "route_pass_count": 25, + "route_pass_rate": 1.0, + "strict_pass_count": 25, + "strict_pass_rate": 1.0, + "factual_count": 23, + "partial_coverage_count": 2, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_applied_count": 14, + "avg_elapsed_ms": 5770.4 + }, + "distributions": { + "reply_type": { + "factual": 23, + "partial_coverage": 2 + }, + "actual_intent": { + "list_documents_by_counterparty": 3, + "account_balance_snapshot": 9, + "documents_forming_balance": 2, + "bank_operations_by_counterparty": 2, + "list_documents_by_contract": 3, + "bank_operations_by_contract": 3, + "open_items_by_counterparty_or_contract": 3 + }, + "actual_mode": { + "address_query": 25 + }, + "mcp_call_status": { + "matched_non_empty": 23, + "no_raw_rows": 2 + }, + "limited_reason_category": { + "empty_match": 2 + }, + "route_health": { + "ok_or_factual": 23, + "partial_non_blocking": 2 + } + } +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_followup_25_20-23-18_validator_report.json b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_followup_25_20-23-18_validator_report.json new file mode 100644 index 0000000..bc03819 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_followup_25_20-23-18_validator_report.json @@ -0,0 +1,23 @@ +{ + "generated_at": "2026-04-02T20:25:42", + "total": 1, + "passed": 1, + "failed": 0, + "results": [ + { + "run_dir": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\runs\\2026-04-02_Address_Nightly_Regression_AfterFocusFix\\2026-04-02_Address_Nightly_followup_25_20-23-18", + "valid": true, + "errors": [], + "warnings": [], + "metrics": { + "run_id": "2026-04-02_Address_Nightly_followup_25_20-23-18", + "questions_total": 25, + "route_pass_rate": 1.0, + "strict_pass_rate": 1.0, + "http_error_count": 0, + "rows_count": 25, + "failures_count": 0 + } + } + ] +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_followup_25_20-27-52/README.md b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_followup_25_20-27-52/README.md new file mode 100644 index 0000000..a5fdc50 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_followup_25_20-27-52/README.md @@ -0,0 +1,28 @@ +# 2026-04-02_Address_Nightly_followup_25_20-27-52 + +Generated at: 2026-04-02T20:29:57 +Questions file: X:\1C\NDC_1C\docs\ADDRESS\question_sets\address_followup_context_chains_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 +Strict policy: route + +## Totals +- questions_total: 25 +- ok_200_count: 25 +- semantic_pass_count: 25 +- semantic_pass_rate: 1.0 +- route_pass_count: 25 +- route_pass_rate: 1.0 +- strict_pass_count: 25 +- strict_pass_rate: 1.0 +- factual_count: 23 +- partial_coverage_count: 2 +- clarification_required_count: 0 +- http_error_count: 0 +- llm_decomposition_applied_count: 14 +- avg_elapsed_ms: 4961.4 + +## Files +- run_summary.json +- full_live_results.json +- failures_only.json diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_followup_25_20-27-52/failures_only.json b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_followup_25_20-27-52/failures_only.json new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_followup_25_20-27-52/failures_only.json @@ -0,0 +1 @@ +[] diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_followup_25_20-27-52/full_live_results.json b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_followup_25_20-27-52/full_live_results.json new file mode 100644 index 0000000..ab517aa --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_followup_25_20-27-52/full_live_results.json @@ -0,0 +1,3837 @@ +{ + "run_id": "2026-04-02_Address_Nightly_followup_25_20-27-52", + "generated_at": "2026-04-02T20:29:57", + "summary": { + "run_id": "2026-04-02_Address_Nightly_followup_25_20-27-52", + "generated_at": "2026-04-02T20:29:57", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\address_followup_context_chains_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", + "strict_policy": "route", + "totals": { + "questions_total": 25, + "ok_200_count": 25, + "semantic_pass_count": 25, + "semantic_pass_rate": 1.0, + "route_pass_count": 25, + "route_pass_rate": 1.0, + "strict_pass_count": 25, + "strict_pass_rate": 1.0, + "factual_count": 23, + "partial_coverage_count": 2, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_applied_count": 14, + "avg_elapsed_ms": 4961.4 + }, + "distributions": { + "reply_type": { + "factual": 23, + "partial_coverage": 2 + }, + "actual_intent": { + "list_documents_by_counterparty": 3, + "account_balance_snapshot": 9, + "documents_forming_balance": 2, + "bank_operations_by_counterparty": 2, + "list_documents_by_contract": 3, + "bank_operations_by_contract": 3, + "open_items_by_counterparty_or_contract": 3 + }, + "actual_mode": { + "address_query": 25 + }, + "mcp_call_status": { + "matched_non_empty": 23, + "no_raw_rows": 2 + }, + "limited_reason_category": { + "empty_match": 2 + }, + "route_health": { + "ok_or_factual": 23, + "partial_non_blocking": 2 + } + } + }, + "rows": [ + { + "index": 1, + "id": "F001", + "question": "Покажи документы по СВК за 2020", + "session": "chain_docs_svk_a", + "session_id": "asst-2026-04-02_Address_Nightly_followup_25_20-27-52-chain_docs_svk_a", + "status_code": 200, + "ok": true, + "elapsed_ms": 5782, + "reply_type": "factual", + "trace_id": "address-ptxKLOaUhy", + "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 | аналитика: Группа", + "assistant_reply_first_line": "Собран список документов по контрагенту (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 20, + "rows_matched": 3, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-ptxKLOaUhy", + "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": "m_I0RCgzQSh0dx", + "llm_decomposition_effective_message": "Показать документы по СВК за период 2020 год.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "покажи документы по свк за 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "m_I0RCgzQSh0dx", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Показать документы по СВК за период 2020 год." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 2, + "id": "F002", + "question": "а теперь только за май 2020", + "session": "chain_docs_svk_a", + "session_id": "asst-2026-04-02_Address_Nightly_followup_25_20-27-52-chain_docs_svk_a", + "status_code": 200, + "ok": true, + "elapsed_ms": 3370, + "reply_type": "factual", + "trace_id": "address-vABw7T30HI", + "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 | аналитика: Группа", + "assistant_reply_first_line": "По окну 2020-05-01..2020-05-31 строк не найдено; показаны ближайшие доступные данные 2020-07-27..2021-11-10.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 26, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-vABw7T30HI", + "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 + }, + "error_code": null, + "error_message": null + }, + { + "index": 3, + "id": "F003", + "question": "а по счету 60.01 на ту же дату", + "session": "chain_docs_svk_a", + "session_id": "asst-2026-04-02_Address_Nightly_followup_25_20-27-52-chain_docs_svk_a", + "status_code": 200, + "ok": true, + "elapsed_ms": 6818, + "reply_type": "factual", + "trace_id": "address-ezML4t7Ncm", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-ezML4t7Ncm", + "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": "60.01", + "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": "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": "_WuHw5rne3TWvE", + "llm_decomposition_effective_message": "по счету 60.01 на ту же дату", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "а по счету 60.01 на ту же дату", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "_WuHw5rne3TWvE", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "по счету 60.01 на ту же дату" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 4, + "id": "F004", + "question": "а на ту же дату по 62.01", + "session": "chain_docs_svk_a", + "session_id": "asst-2026-04-02_Address_Nightly_followup_25_20-27-52-chain_docs_svk_a", + "status_code": 200, + "ok": true, + "elapsed_ms": 1003, + "reply_type": "factual", + "trace_id": "address-w0Zvuttqi-", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 2, + "rows_matched": 2, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-w0Zvuttqi-", + "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", + "intent_not_supported_in_v1", + "intent_adjusted_to_balance_followup_context", + "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": "low", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "account": "62.01", + "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": "62.01", + "anchor_value_resolved": "62.01", + "resolver_confidence": "high", + "ambiguity_count": 0, + "match_failure_stage": "none", + "match_failure_reason": null, + "mcp_call_status": "matched_non_empty", + "rows_fetched": 2, + "raw_rows_received": 2, + "rows_after_account_scope": 2, + "rows_after_recipe_filter": 2, + "rows_materialized": 2, + "rows_matched": 2, + "raw_row_keys_sample": [ + "Период", + "Регистратор", + "СчетДт", + "СчетКт", + "Сумма", + "Period", + "Registrator", + "AccountDt", + "AccountKt", + "Amount" + ], + "materialization_drop_reason": "none", + "account_token_raw": "62.01", + "account_token_normalized": "62.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": false, + "llm_provider_used": "local", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "а на ту же дату по 62.01", + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "sanitized_user_message": "а на ту же дату по 62.01", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + }, + "error_code": null, + "error_message": null + }, + { + "index": 5, + "id": "F005", + "question": "раскрой остаток по 62.01 документами на ту же дату", + "session": "chain_docs_svk_a", + "session_id": "asst-2026-04-02_Address_Nightly_followup_25_20-27-52-chain_docs_svk_a", + "status_code": 200, + "ok": true, + "elapsed_ms": 7101, + "reply_type": "factual", + "trace_id": "address-E25SIyrO1n", + "assistant_reply": "Собран drilldown документов, формирующих остаток по счету на указанную дату.\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\nМожно уточнить выборку по контрагенту, договору или периоду.", + "assistant_reply_first_line": "Собран drilldown документов, формирующих остаток по счету на указанную дату.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_forming_balance_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 2, + "rows_matched": 2, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-E25SIyrO1n", + "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_account_drilldown_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": "high", + "query_shape": "DOCUMENT_LIST", + "query_shape_confidence": "medium", + "detected_intent": "documents_forming_balance", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "account": "62.01", + "as_of_date": "2020-05-31", + "period_from": "2020-05-01", + "period_to": "2020-05-31" + }, + "missing_required_filters": [], + "selected_recipe": "address_documents_forming_balance_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "strict", + "account_scope_fallback_applied": false, + "anchor_type": "account", + "anchor_value_raw": "62.01", + "anchor_value_resolved": "62.01", + "resolver_confidence": "high", + "ambiguity_count": 0, + "match_failure_stage": "none", + "match_failure_reason": null, + "mcp_call_status": "matched_non_empty", + "rows_fetched": 2, + "raw_rows_received": 2, + "rows_after_account_scope": 2, + "rows_after_recipe_filter": 2, + "rows_materialized": 2, + "rows_matched": 2, + "raw_row_keys_sample": [ + "Период", + "Регистратор", + "СчетДт", + "СчетКт", + "Сумма", + "Period", + "Registrator", + "AccountDt", + "AccountKt", + "Amount" + ], + "materialization_drop_reason": "none", + "account_token_raw": "62.01", + "account_token_normalized": "62.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_LIST", + "execution_lane": "address_query", + "llm_decomposition_applied": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "RW4o1QtxMAkLRd", + "llm_decomposition_effective_message": "раскрыть остаток по счету 62.01 с соответствующими документами на ту же дату", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "раскрой остаток по 62.01 документами на ту же дату", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "RW4o1QtxMAkLRd", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "раскрыть остаток по счету 62.01 с соответствующими документами на ту же дату" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 6, + "id": "F006", + "question": "Покажи банковские операции по СВК за 2020", + "session": "chain_bank_svk_b", + "session_id": "asst-2026-04-02_Address_Nightly_followup_25_20-27-52-chain_bank_svk_b", + "status_code": 200, + "ok": true, + "elapsed_ms": 9361, + "reply_type": "factual", + "trace_id": "address-SioKrHjNEc", + "assistant_reply": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.\nСобран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 5.\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-16T16:20:52Z | Списание с расчетного счета 00000000294 от 16.12.2020 16:20:52 | 0 / 0 | 3849.26 | аналитика: УФК по г. Москве (для ГУ - Отделения ПФР по г. Москве и МО)\n4. 2020-12-16T16:20:51Z | Списание с расчетного счета 00000000293 от 16.12.2020 16:20:51 | 0 / 0 | 60 | аналитика: СБЕРБАНК, ПАО\n5. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "assistant_reply_first_line": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "rows_fetched": 20, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-SioKrHjNEc", + "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", + "anchor_not_matched_fallback_rows" + ], + "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": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "mcp_call_status": "matched_non_empty", + "rows_fetched": 20, + "raw_rows_received": 20, + "rows_after_account_scope": 5, + "rows_after_recipe_filter": 0, + "rows_materialized": 5, + "rows_matched": 5, + "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": "k_Vg7xiWFw9XCV", + "llm_decomposition_effective_message": "Показать банковские операции по счету 51 (СВК) за период 2020 год.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "покажи банковские операции по свк за 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "k_Vg7xiWFw9XCV", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Показать банковские операции по счету 51 (СВК) за период 2020 год." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 7, + "id": "F007", + "question": "а теперь только ноябрь 2020", + "session": "chain_bank_svk_b", + "session_id": "asst-2026-04-02_Address_Nightly_followup_25_20-27-52-chain_bank_svk_b", + "status_code": 200, + "ok": true, + "elapsed_ms": 3121, + "reply_type": "factual", + "trace_id": "address--BC63zn_8E", + "assistant_reply": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.\nСобран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 5.\n1. 2020-11-30T12:00:07Z | Поступление на расчетный счет 00000000041 от 30.11.2020 12:00:07 | 0 / 0 | 38900 | аналитика: Группа\n3. 2020-11-19T12:00:04Z | Поступление на расчетный счет 00000000039 от 19.11.2020 12:00:04 | 0 / 0 | 3320600 | аналитика: Группа\n4. 2020-11-18T12:00:05Z | Поступление на расчетный счет 00000000038 от 18.11.2020 12:00:05 | 0 / 0 | 745300 | аналитика: Группа\n5. 2020-11-18T12:00:04Z | Поступление на расчетный счет 00000000037 от 18.11.2020 12:00:04 | 0 / 0 | 320000 | аналитика: Группа", + "assistant_reply_first_line": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "rows_fetched": 20, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address--BC63zn_8E", + "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", + "anchor_not_matched_fallback_rows" + ], + "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_counterparty", + "detected_intent_confidence": "low", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "period_from": "2020-11-01", + "period_to": "2020-11-30", + "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": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "mcp_call_status": "matched_non_empty", + "rows_fetched": 20, + "raw_rows_received": 20, + "rows_after_account_scope": 5, + "rows_after_recipe_filter": 0, + "rows_materialized": 5, + "rows_matched": 5, + "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 + }, + "error_code": null, + "error_message": null + }, + { + "index": 8, + "id": "F008", + "question": "а теперь документы по нему", + "session": "chain_bank_svk_b", + "session_id": "asst-2026-04-02_Address_Nightly_followup_25_20-27-52-chain_bank_svk_b", + "status_code": 200, + "ok": true, + "elapsed_ms": 8120, + "reply_type": "factual", + "trace_id": "address-D1JQS_tY0c", + "assistant_reply": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.\nСобран список документов по контрагенту (live address lane).\nСтрок отобрано: 5.\n1. 2020-11-30T12:00:07Z | Поступление на расчетный счет 00000000041 от 30.11.2020 12:00:07 | 0 / 0 | 38900 | аналитика: Группа\n3. 2020-11-19T12:00:04Z | Поступление на расчетный счет 00000000039 от 19.11.2020 12:00:04 | 0 / 0 | 3320600 | аналитика: Группа\n4. 2020-11-18T12:00:05Z | Поступление на расчетный счет 00000000038 от 18.11.2020 12:00:05 | 0 / 0 | 745300 | аналитика: Группа\n5. 2020-11-18T12:00:04Z | Поступление на расчетный счет 00000000037 от 18.11.2020 12:00:04 | 0 / 0 | 320000 | аналитика: Группа", + "assistant_reply_first_line": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "rows_fetched": 20, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-D1JQS_tY0c", + "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", + "period_from_followup_context", + "address_followup_context_applied", + "anchor_not_matched_fallback_rows" + ], + "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-11-01", + "period_to": "2020-11-30" + }, + "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": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "mcp_call_status": "matched_non_empty", + "rows_fetched": 20, + "raw_rows_received": 20, + "rows_after_account_scope": 5, + "rows_after_recipe_filter": 0, + "rows_materialized": 5, + "rows_matched": 5, + "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": "KcQwkLBNvFjqNP", + "llm_decomposition_effective_message": "документы по неуказанному объекту", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "а теперь документы по нему", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "KcQwkLBNvFjqNP", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "документы по неуказанному объекту" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 9, + "id": "F009", + "question": "и остаток по 51 на ту же дату", + "session": "chain_bank_svk_b", + "session_id": "asst-2026-04-02_Address_Nightly_followup_25_20-27-52-chain_bank_svk_b", + "status_code": 200, + "ok": true, + "elapsed_ms": 5858, + "reply_type": "factual", + "trace_id": "address-6RySqJ89Ga", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 200, + "rows_matched": 200, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-6RySqJ89Ga", + "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": "51", + "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": "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": 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": "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": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "GReVStCHM3ZPbu", + "llm_decomposition_effective_message": "остаток по счету 51 на текущую дату", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "и остаток по 51 на ту же дату", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "GReVStCHM3ZPbu", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "остаток по счету 51 на текущую дату" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 10, + "id": "F010", + "question": "а теперь только май 2020", + "session": "chain_bank_svk_b", + "session_id": "asst-2026-04-02_Address_Nightly_followup_25_20-27-52-chain_bank_svk_b", + "status_code": 200, + "ok": true, + "elapsed_ms": 963, + "reply_type": "factual", + "trace_id": "address-QhcdfgBw5m", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 24, + "rows_matched": 24, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-QhcdfgBw5m", + "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", + "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, + "period_from": "2020-05-01", + "period_to": "2020-05-31", + "as_of_date": "2020-05-31", + "account": "51" + }, + "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": 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 + }, + "error_code": null, + "error_message": null + }, + { + "index": 11, + "id": "F011", + "question": "Покажи сальдо по счету 60 на 2020-12-31", + "session": "chain_balance_c", + "session_id": "asst-2026-04-02_Address_Nightly_followup_25_20-27-52-chain_balance_c", + "status_code": 200, + "ok": true, + "elapsed_ms": 6118, + "reply_type": "partial_coverage", + "trace_id": "address-O3ZDFY7Hq5", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.", + "assistant_reply_first_line": "В live-данных по текущему фильтру записи не найдены.", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "partial_non_blocking", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 0, + "rows_matched": 0, + "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, + "debug_payload": { + "trace_id": "address-O3ZDFY7Hq5", + "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", + "account_balance_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": "account_balance_snapshot", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "account": "60", + "period_from": "2020-12-01", + "period_to": "2020-12-31", + "as_of_date": "2020-12-31" + }, + "missing_required_filters": [], + "selected_recipe": "address_movements_account_snapshot_v1", + "mcp_call_status_legacy": "no_raw_rows", + "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": "no_raw_rows", + "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": "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": "empty_match", + "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": "WsNLIZMMc3Qb5E", + "llm_decomposition_effective_message": "Показать баланс по счету 60 на конец декабря 2020 года", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "покажи сальдо по счету 60 на 2020-12-31", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "WsNLIZMMc3Qb5E", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Показать баланс по счету 60 на конец декабря 2020 года" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 12, + "id": "F012", + "question": "а теперь только май 2020", + "session": "chain_balance_c", + "session_id": "asst-2026-04-02_Address_Nightly_followup_25_20-27-52-chain_balance_c", + "status_code": 200, + "ok": true, + "elapsed_ms": 987, + "reply_type": "factual", + "trace_id": "address-5xy3rTecem", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 6, + "rows_matched": 6, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-5xy3rTecem", + "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", + "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, + "period_from": "2020-05-01", + "period_to": "2020-05-31", + "as_of_date": "2020-05-31", + "account": "60" + }, + "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": "а теперь только май 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 + }, + "error_code": null, + "error_message": null + }, + { + "index": 13, + "id": "F013", + "question": "а на ту же дату по 62", + "session": "chain_balance_c", + "session_id": "asst-2026-04-02_Address_Nightly_followup_25_20-27-52-chain_balance_c", + "status_code": 200, + "ok": true, + "elapsed_ms": 1021, + "reply_type": "factual", + "trace_id": "address-sUyxFKw0zV", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 4.\nСумма по отобранным движениям: 2545546.24.\n1. 2020-05-21T12:00:00Z | Поступление на расчетный счет 00000000023 от 21.05.2020 12:00:00 | 51 / 62.02 | 250546.24\n2. 2020-05-18T12:00:01Z | Реализация товаров и услуг 00000000002 от 18.05.2020 12:00:01 | 62.01 / 90.01.1 | 765000\n3. 2020-05-18T12:00:01Z | Реализация товаров и услуг 00000000002 от 18.05.2020 12:00:01 | 62.02 / 62.01 | 765000\n4. 2020-05-15T12:00:02Z | Поступление на расчетный счет 00000000022 от 15.05.2020 12:00:02 | 51 / 62.02 | 765000", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 4, + "rows_matched": 4, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-sUyxFKw0zV", + "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_adjusted_to_balance_followup_context", + "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": "low", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "account": "62", + "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": "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": 4, + "raw_rows_received": 4, + "rows_after_account_scope": 4, + "rows_after_recipe_filter": 4, + "rows_materialized": 4, + "rows_matched": 4, + "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": 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 + }, + "error_code": null, + "error_message": null + }, + { + "index": 14, + "id": "F014", + "question": "раскрой 62 документами на ту же дату", + "session": "chain_balance_c", + "session_id": "asst-2026-04-02_Address_Nightly_followup_25_20-27-52-chain_balance_c", + "status_code": 200, + "ok": true, + "elapsed_ms": 6106, + "reply_type": "factual", + "trace_id": "address-rXLG8zHItM", + "assistant_reply": "Собран drilldown документов, формирующих остаток по счету на указанную дату.\nДокументных строк отобрано: 4.\nСумма по отобранным движениям: 2545546.24.\n1. 2020-05-21T12:00:00Z | Поступление на расчетный счет 00000000023 от 21.05.2020 12:00:00 | 51 / 62.02 | 250546.24\n2. 2020-05-18T12:00:01Z | Реализация товаров и услуг 00000000002 от 18.05.2020 12:00:01 | 62.01 / 90.01.1 | 765000\n3. 2020-05-18T12:00:01Z | Реализация товаров и услуг 00000000002 от 18.05.2020 12:00:01 | 62.02 / 62.01 | 765000\n4. 2020-05-15T12:00:02Z | Поступление на расчетный счет 00000000022 от 15.05.2020 12:00:02 | 51 / 62.02 | 765000\nМожно уточнить выборку по контрагенту, договору или периоду.", + "assistant_reply_first_line": "Собран drilldown документов, формирующих остаток по счету на указанную дату.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_forming_balance_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 4, + "rows_matched": 4, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-rXLG8zHItM", + "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_account_drilldown_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": "DOCUMENT_LIST", + "query_shape_confidence": "medium", + "detected_intent": "documents_forming_balance", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "account": "62", + "as_of_date": "2020-05-31", + "period_from": "2020-05-01", + "period_to": "2020-05-31" + }, + "missing_required_filters": [], + "selected_recipe": "address_documents_forming_balance_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": 4, + "raw_rows_received": 4, + "rows_after_account_scope": 4, + "rows_after_recipe_filter": 4, + "rows_materialized": 4, + "rows_matched": 4, + "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_LIST", + "execution_lane": "address_query", + "llm_decomposition_applied": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "DCDmTxHleJ3okD", + "llm_decomposition_effective_message": "Раскрыть счет 62 документами, указанными на ту же дату.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "раскрой 62 документами на ту же дату", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "DCDmTxHleJ3okD", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Раскрыть счет 62 документами, указанными на ту же дату." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 15, + "id": "F015", + "question": "вернись на 2020-12-31 по 60", + "session": "chain_balance_c", + "session_id": "asst-2026-04-02_Address_Nightly_followup_25_20-27-52-chain_balance_c", + "status_code": 200, + "ok": true, + "elapsed_ms": 1011, + "reply_type": "partial_coverage", + "trace_id": "address-R19ucDA6C9", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.", + "assistant_reply_first_line": "В live-данных по текущему фильтру записи не найдены.", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "partial_non_blocking", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 0, + "rows_matched": 0, + "mcp_call_status": "no_raw_rows", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-R19ucDA6C9", + "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": [ + "no_address_or_deep_signal", + "address_mode_from_followup_context", + "shape_not_detected", + "account_balance_signal_detected", + "intent_adjusted_to_balance_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, + "account": "60", + "period_from": "2020-12-01", + "period_to": "2020-12-31", + "as_of_date": "2020-12-31" + }, + "missing_required_filters": [], + "selected_recipe": "address_movements_account_snapshot_v1", + "mcp_call_status_legacy": "no_raw_rows", + "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": "no_raw_rows", + "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": "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": "empty_match", + "response_type": "LIMITED_WITH_REASON", + "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-12-31 по 60", + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "sanitized_user_message": "вернись на 2020-12-31 по 60", + "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 + }, + "error_code": null, + "error_message": null + }, + { + "index": 16, + "id": "F016", + "question": "Покажи документы по договору 19/15 за 2020", + "session": "chain_contract_d", + "session_id": "asst-2026-04-02_Address_Nightly_followup_25_20-27-52-chain_contract_d", + "status_code": 200, + "ok": true, + "elapsed_ms": 7395, + "reply_type": "factual", + "trace_id": "address-FIWko--kcI", + "assistant_reply": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 8.\n1. 2020-08-31T15:00:06Z | Поступление товаров и услуг 00000000024 от 31.08.2020 15:00:06 | 19.04 / 76.05 | 233.33\n2. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 43804.8\n3. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 9776\n4. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 73968\n5. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 94924.8\n6. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 54400\n7. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.02 / 62.01 | 276873.6\n8. 2020-06-30T12:00:00Z | Поступление товаров и услуг 00000000015 от 30.06.2020 12:00:00 | 19.04 / 76.05 | 233.33", + "assistant_reply_first_line": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 8, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-FIWko--kcI", + "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_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": "high", + "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": "19/15", + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": 11, + "rows_materialized": 438, + "rows_matched": 8, + "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": "vvibakjC2LtQiv", + "llm_decomposition_effective_message": "показать документы по договору 19/15 за период 2020", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "покажи документы по договору 19/15 за 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "vvibakjC2LtQiv", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "показать документы по договору 19/15 за период 2020" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 17, + "id": "F017", + "question": "а теперь банковские операции", + "session": "chain_contract_d", + "session_id": "asst-2026-04-02_Address_Nightly_followup_25_20-27-52-chain_contract_d", + "status_code": 200, + "ok": true, + "elapsed_ms": 8200, + "reply_type": "factual", + "trace_id": "address-o_5EBIxkfn", + "assistant_reply": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.\nСобран список банковских операций по договору (live address lane).\nСтрок отобрано: 3.\n1. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53\n2. 2020-07-15T13:11:23Z | Списание с расчетного счета 00000000191 от 15.07.2020 13:11:23 | 66.02 / 51 | 54125.93\n3. 2020-07-15T13:11:22Z | Списание с расчетного счета 00000000190 от 15.07.2020 13:11:22 | 66.01 / 51 | 122035.07", + "assistant_reply_first_line": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 3, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-o_5EBIxkfn", + "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", + "bank_ops_by_counterparty_signal_detected", + "intent_adjusted_to_contract_followup_context", + "contract_from_followup_context", + "period_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, + "contract": "19/15", + "period_from": "2020-01-01", + "period_to": "2020-12-31" + }, + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "Z54J8G8SKNEFHA", + "llm_decomposition_effective_message": "а теперь банковские операции", + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "sanitized_user_message": "а теперь банковские операции", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "Z54J8G8SKNEFHA", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "а теперь банковские операции" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 18, + "id": "F018", + "question": "а теперь только за 2020", + "session": "chain_contract_d", + "session_id": "asst-2026-04-02_Address_Nightly_followup_25_20-27-52-chain_contract_d", + "status_code": 200, + "ok": true, + "elapsed_ms": 1888, + "reply_type": "factual", + "trace_id": "address-OJRWl2H2Pq", + "assistant_reply": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.\nСобран список банковских операций по договору (live address lane).\nСтрок отобрано: 3.\n1. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53\n2. 2020-07-15T13:11:23Z | Списание с расчетного счета 00000000191 от 15.07.2020 13:11:23 | 66.02 / 51 | 54125.93\n3. 2020-07-15T13:11:22Z | Списание с расчетного счета 00000000190 от 15.07.2020 13:11:22 | 66.01 / 51 | 122035.07", + "assistant_reply_first_line": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 3, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-OJRWl2H2Pq", + "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": "19/15" + }, + "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": "19/15", + "anchor_value_resolved": "19/15", + "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 + }, + "error_code": null, + "error_message": null + }, + { + "index": 19, + "id": "F019", + "question": "есть ли открытые позиции по договору 19/15 на 2020-12-31", + "session": "chain_contract_d", + "session_id": "asst-2026-04-02_Address_Nightly_followup_25_20-27-52-chain_contract_d", + "status_code": 200, + "ok": true, + "elapsed_ms": 8121, + "reply_type": "factual", + "trace_id": "address-n4VZbxH9kY", + "assistant_reply": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.\nСобраны открытые позиции по указанному фильтру (контрагент/договор).\nСтрок отобрано: 8.\n1. 2020-08-31T15:00:06Z | Поступление товаров и услуг 00000000024 от 31.08.2020 15:00:06 | 19.04 / 76.05 | 233.33\n2. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 43804.8\n3. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 9776\n4. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 73968\n5. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 94924.8\n6. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 54400", + "assistant_reply_first_line": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.", + "expected_intent": "open_items_by_counterparty_or_contract", + "actual_intent": "open_items_by_counterparty_or_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_open_items_by_party_or_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 8, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-n4VZbxH9kY", + "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", + "open_items_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": "VERIFY_FACTUAL", + "query_shape_confidence": "medium", + "detected_intent": "open_items_by_counterparty_or_contract", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "contract": "19/15", + "as_of_date": "2020-12-31" + }, + "missing_required_filters": [], + "selected_recipe": "address_open_items_by_party_or_contract_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "account_scope_fallback_applied": false, + "anchor_type": "contract", + "anchor_value_raw": "19/15", + "anchor_value_resolved": "19/15", + "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": 285, + "rows_after_recipe_filter": 8, + "rows_materialized": 285, + "rows_matched": 8, + "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": "KOUDaGmBIeuHQj", + "llm_decomposition_effective_message": "Проверить наличие открытых позиций по договору 19/15 на конец периода 2020-12-31.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "есть ли открытые позиции по договору 19/15 на 2020-12-31", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "KOUDaGmBIeuHQj", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Проверить наличие открытых позиций по договору 19/15 на конец периода 2020-12-31." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 20, + "id": "F020", + "question": "покажи документы по этому же договору", + "session": "chain_contract_d", + "session_id": "asst-2026-04-02_Address_Nightly_followup_25_20-27-52-chain_contract_d", + "status_code": 200, + "ok": true, + "elapsed_ms": 7296, + "reply_type": "factual", + "trace_id": "address-GfkU-0S_g9", + "assistant_reply": "Собран список документов по договору (live address lane).\nСтрок отобрано: 1.\n1. 2021-12-31T12:00:00Z | Поступление товаров и услуг 00000000015 от 31.12.2021 12:00:00 | 19.04 / 76.05 | 233.33", + "assistant_reply_first_line": "Собран список документов по договору (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 1, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-GfkU-0S_g9", + "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_contract_signal_detected", + "contract_from_followup_context", + "address_followup_context_applied" + ], + "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_contract", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "contract": "19/15" + }, + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": 416, + "rows_after_recipe_filter": 2, + "rows_materialized": 416, + "rows_matched": 1, + "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": "_nHVuSQSaa5Sdt", + "llm_decomposition_effective_message": "Показать документы по указанному договору.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "покажи документы по этому же договору", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "_nHVuSQSaa5Sdt", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Показать документы по указанному договору." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 21, + "id": "F021", + "question": "Покажи банковские операции по договору 19/15", + "session": "chain_contract_e", + "session_id": "asst-2026-04-02_Address_Nightly_followup_25_20-27-52-chain_contract_e", + "status_code": 200, + "ok": true, + "elapsed_ms": 7071, + "reply_type": "factual", + "trace_id": "address-kKBagG1_SZ", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 29.\n1. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53\n2. 2020-07-15T13:11:23Z | Списание с расчетного счета 00000000191 от 15.07.2020 13:11:23 | 66.02 / 51 | 54125.93\n3. 2020-07-15T13:11:22Z | Списание с расчетного счета 00000000190 от 15.07.2020 13:11:22 | 66.01 / 51 | 122035.07\n4. 2019-11-29T12:00:02Z | Списание с расчетного счета 00000000515 от 29.11.2019 12:00:02 | 68.01.1 / 51 | 19058\n5. 2019-11-15T17:00:00Z | Списание с расчетного счета 00000000507 от 15.11.2019 17:00:00 | 66.02 / 51 | 68582.19\n6. 2019-11-15T12:00:07Z | Списание с расчетного счета 00000000506 от 15.11.2019 12:00:07 | 66.01 / 51 | 107578.81\n7. 2019-11-15T12:00:06Z | Списание с расчетного счета 00000000505 от 15.11.2019 12:00:06 | 70 / 51 | 29200\n8. 2019-11-15T12:00:05Z | Списание с расчетного счета 00000000504 от 15.11.2019 12:00:05 | 70 / 51 | 16000\n9. 2019-11-15T12:00:04Z | Списание с расчетного счета 00000000503 от 15.11.2019 12:00:04 | 69.02.7 / 51 | 32560\n10. 2019-11-15T12:00:03Z | Списание с расчетного счета 00000000502 от 15.11.2019 12:00:03 | 70 / 51 | 10296.85\n11. 2019-11-15T12:00:02Z | Списание с расчетного счета 00000000501 от 15.11.2019 12:00:02 | 69.03.1 / 51 | 7548\n12. 2019-11-15T12:00:01Z | Списание с расчетного счета 00000000500 от 15.11.2019 12:00:01 | 76.05 / 51 | 6900\n13. 2019-11-15T12:00:00Z | Списание с расчетного счета 00000000499 от 15.11.2019 12:00:00 | 69.11 / 51 | 296\n14. 2019-10-15T12:00:07Z | Поступление на расчетный счет 00000000052 от 15.10.2019 12:00:07 | 51 / 66.01 | 5000000\n15. 2019-10-15T12:00:06Z | Списание с расчетного счета 00000000454 от 15.10.2019 12:00:06 | 60.02 / 51 | 890000\n16. 2019-10-15T12:00:05Z | Списание с расчетного счета 00000000453 от 15.10.2019 12:00:05 | 76.05 / 51 | 491450\n17. 2019-10-15T12:00:04Z | Списание с расчетного счета 00000000452 от 15.10.2019 12:00:04 | 70 / 51 | 29200\n18. 2019-10-15T12:00:03Z | Списание с расчетного счета 00000000451 от 15.10.2019 12:00:03 | 70 / 51 | 16000\n19. 2019-10-15T12:00:02Z | Списание с расчетного счета 00000000450 от 15.10.2019 12:00:02 | 70 / 51 | 14000\n20. 2019-10-15T12:00:01Z | Списание с расчетного счета 00000000449 от 15.10.2019 12:00:01 | 76.05 / 51 | 3300\n21. 2019-10-15T12:00:00Z | Списание с расчетного счета 00000000448 от 15.10.2019 12:00:00 | 91.02 / 51 | 296\n22. 2019-09-17T12:00:00Z | Списание с расчетного счета 00000000415 от 17.09.2019 12:00:00 | 60.01 / 51 | 150000\n23. 2019-09-17T12:00:00Z | Списание с расчетного счета 00000000415 от 17.09.2019 12:00:00 | 60.01 / 51 | 170740\n24. 2019-08-01T14:37:15Z | Списание с расчетного счета 00000000345 от 01.08.2019 14:37:15 | 60.02 / 51 | 256500\n25. 2019-07-29T12:00:01Z | Списание с расчетного счета 00000000315 от 29.07.2019 12:00:01 | 68.04.1 / 51 | 42562\n26. 2019-07-15T12:00:03Z | Списание с расчетного счета 00000000294 от 15.07.2019 12:00:03 | 70 / 51 | 10800\n27. 2019-07-15T12:00:02Z | Списание с расчетного счета 00000000293 от 15.07.2019 12:00:02 | 70 / 51 | 14000\n28. 2019-07-15T12:00:01Z | Списание с расчетного счета 00000000292 от 15.07.2019 12:00:01 | 70 / 51 | 6800\n29. 2019-07-15T12:00:00Z | Списание с расчетного счета 00000000291 от 15.07.2019 12:00:00 | 91.02 / 51 | 158", + "assistant_reply_first_line": "Собран список банковских операций по договору (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 29, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-kKBagG1_SZ", + "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", + "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": "high", + "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, + "account": "51", + "contract": "19/15" + }, + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": 1000, + "rows_after_recipe_filter": 29, + "rows_materialized": 1000, + "rows_matched": 29, + "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": "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": "v59uRAew5n0mi-", + "llm_decomposition_effective_message": "Показать банковские операции (счета 51, 62) связанные с договором 19/15.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "покажи банковские операции по договору 19/15", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "v59uRAew5n0mi-", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Показать банковские операции (счета 51, 62) связанные с договором 19/15." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 22, + "id": "F022", + "question": "а теперь открытые позиции по нему", + "session": "chain_contract_e", + "session_id": "asst-2026-04-02_Address_Nightly_followup_25_20-27-52-chain_contract_e", + "status_code": 200, + "ok": true, + "elapsed_ms": 2101, + "reply_type": "factual", + "trace_id": "address-QrNbraelc8", + "assistant_reply": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.\nСобраны открытые позиции по указанному фильтру (контрагент/договор).\nСтрок отобрано: 1.\n1. 2021-12-31T12:00:00Z | Поступление товаров и услуг 00000000015 от 31.12.2021 12:00:00 | 19.04 / 76.05 | 233.33", + "assistant_reply_first_line": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.", + "expected_intent": "open_items_by_counterparty_or_contract", + "actual_intent": "open_items_by_counterparty_or_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_open_items_by_party_or_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 1, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-QrNbraelc8", + "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", + "open_items_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": "open_items_by_counterparty_or_contract", + "detected_intent_confidence": "low", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "contract": "19/15" + }, + "missing_required_filters": [], + "selected_recipe": "address_open_items_by_party_or_contract_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "account_scope_fallback_applied": false, + "anchor_type": "contract", + "anchor_value_raw": "19/15", + "anchor_value_resolved": "19/15", + "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": 190, + "rows_after_recipe_filter": 1, + "rows_materialized": 190, + "rows_matched": 1, + "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": "а теперь открытые позиции по нему", + "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 + }, + "error_code": null, + "error_message": null + }, + { + "index": 23, + "id": "F023", + "question": "а теперь на 2020-12-31", + "session": "chain_contract_e", + "session_id": "asst-2026-04-02_Address_Nightly_followup_25_20-27-52-chain_contract_e", + "status_code": 200, + "ok": true, + "elapsed_ms": 1970, + "reply_type": "factual", + "trace_id": "address-7TpGwenPZ_", + "assistant_reply": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.\nСобраны открытые позиции по указанному фильтру (контрагент/договор).\nСтрок отобрано: 8.\n1. 2020-08-31T15:00:06Z | Поступление товаров и услуг 00000000024 от 31.08.2020 15:00:06 | 19.04 / 76.05 | 233.33\n2. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 43804.8\n3. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 9776\n4. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 73968\n5. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 94924.8\n6. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 54400", + "assistant_reply_first_line": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.", + "expected_intent": "open_items_by_counterparty_or_contract", + "actual_intent": "open_items_by_counterparty_or_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_open_items_by_party_or_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 8, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-7TpGwenPZ_", + "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": "open_items_by_counterparty_or_contract", + "detected_intent_confidence": "low", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "as_of_date": "2020-12-31", + "contract": "19/15" + }, + "missing_required_filters": [], + "selected_recipe": "address_open_items_by_party_or_contract_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "account_scope_fallback_applied": false, + "anchor_type": "contract", + "anchor_value_raw": "19/15", + "anchor_value_resolved": "19/15", + "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": 285, + "rows_after_recipe_filter": 8, + "rows_materialized": 285, + "rows_matched": 8, + "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-12-31", + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "sanitized_user_message": "а теперь на 2020-12-31", + "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 + }, + "error_code": null, + "error_message": null + }, + { + "index": 24, + "id": "F024", + "question": "а по счету 51 на ту же дату", + "session": "chain_contract_e", + "session_id": "asst-2026-04-02_Address_Nightly_followup_25_20-27-52-chain_contract_e", + "status_code": 200, + "ok": true, + "elapsed_ms": 5904, + "reply_type": "factual", + "trace_id": "address-6AGppCyGgN", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 200.\nСумма по отобранным движениям: 31252061.949999988.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 51 / 62.02 | 3248300\n2. 2020-12-25T12:00:04Z | Списание с расчетного счета 00000000299 от 25.12.2020 12:00:04 | 91.02 / 51 | 179.78\n3. 2020-12-25T12:00:03Z | Списание с расчетного счета 00000000298 от 25.12.2020 12:00:03 | 68.01.1 / 51 | 9945\n4. 2020-12-25T12:00:02Z | Списание с расчетного счета 00000000297 от 25.12.2020 12:00:02 | 70 / 51 | 18800", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 200, + "rows_matched": 200, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-6AGppCyGgN", + "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", + "account_balance_signal_detected", + "as_of_date_from_followup_context", + "address_followup_context_applied" + ], + "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": "account_balance_snapshot", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "account": "51", + "as_of_date": "2020-12-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": 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": "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": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "tjDcoXHD5pD2JE", + "llm_decomposition_effective_message": "показать записи по счету 51 на ту же дату", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "а по счету 51 на ту же дату", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "tjDcoXHD5pD2JE", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "показать записи по счету 51 на ту же дату" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 25, + "id": "F025", + "question": "а документы по этому же договору за тот же период", + "session": "chain_contract_e", + "session_id": "asst-2026-04-02_Address_Nightly_followup_25_20-27-52-chain_contract_e", + "status_code": 200, + "ok": true, + "elapsed_ms": 7348, + "reply_type": "factual", + "trace_id": "address-tTQZJ0FEry", + "assistant_reply": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 120.\n1. 2022-09-30T12:00:00Z | Поступление товаров и услуг 00000000010 от 30.09.2022 12:00:00 | 19.04 / 76.05 | 191.67\n2. 2022-09-30T12:00:00Z | Поступление товаров и услуг 00000000010 от 30.09.2022 12:00:00 | 44.01 / 76.05 | 958.33\n3. 2022-08-31T12:00:00Z | Поступление товаров и услуг 00000000009 от 31.08.2022 12:00:00 | 19.04 / 76.05 | 233.33\n4. 2022-08-31T12:00:00Z | Поступление товаров и услуг 00000000009 от 31.08.2022 12:00:00 | 44.01 / 76.05 | 1166.67\n5. 2022-07-31T12:00:00Z | Поступление товаров и услуг 00000000008 от 31.07.2022 12:00:00 | 19.04 / 76.05 | 150.54\n6. 2022-07-31T12:00:00Z | Поступление товаров и услуг 00000000008 от 31.07.2022 12:00:00 | 44.01 / 76.05 | 752.69\n7. 2022-07-31T12:00:00Z | Поступление товаров и услуг 00000000008 от 31.07.2022 12:00:00 | 76.05 / 76.05 | 280\n8. 2022-06-30T00:00:01Z | Поступление товаров и услуг 00000000006 от 30.06.2022 0:00:01 | 19.04 / 76.05 | 186.67\n9. 2022-06-30T00:00:01Z | Поступление товаров и услуг 00000000006 от 30.06.2022 0:00:01 | 44.01 / 76.05 | 933.33\n10. 2022-05-31T00:00:01Z | Поступление товаров и услуг 00000000005 от 31.05.2022 0:00:01 | 19.04 / 76.05 | 233.33\n11. 2022-05-31T00:00:01Z | Поступление товаров и услуг 00000000005 от 31.05.2022 0:00:01 | 44.01 / 76.05 | 1166.67\n12. 2022-04-30T00:00:01Z | Поступление товаров и услуг 00000000004 от 30.04.2022 0:00:01 | 19.04 / 76.05 | 233.33\n13. 2022-04-30T00:00:01Z | Поступление товаров и услуг 00000000004 от 30.04.2022 0:00:01 | 44.01 / 76.05 | 1166.67\n14. 2022-04-18T12:00:00Z | Поступление товаров и услуг 00000000007 от 18.04.2022 12:00:00 | 97.21 / 60.01 | 14790\n15. 2022-04-18T12:00:00Z | Поступление товаров и услуг 00000000007 от 18.04.2022 12:00:00 | 60.01 / 60.02 | 14790\n16. 2022-04-13T12:00:00Z | Поступление на расчетный счет 00000000004 от 13.04.2022 12:00:00 | 51 / 76.05 | 1200000\n17. 2022-03-31T12:00:00Z | Поступление товаров и услуг 00000000001 от 31.03.2022 12:00:00 | 19.04 / 76.05 | 233.33\n18. 2022-03-31T12:00:00Z | Поступление товаров и услуг 00000000001 от 31.03.2022 12:00:00 | 44.01 / 76.05 | 1166.67\n19. 2022-02-28T12:00:00Z | Поступление товаров и услуг 00000000002 от 28.02.2022 12:00:00 | 19.04 / 76.05 | 233.33\n20. 2022-02-28T12:00:00Z | Поступление товаров и услуг 00000000002 от 28.02.2022 12:00:00 | 44.01 / 76.05 | 1166.67\n21. 2022-01-31T12:00:00Z | Поступление товаров и услуг 00000000003 от 31.01.2022 12:00:00 | 19.04 / 76.05 | 233.33\n22. 2022-01-31T12:00:00Z | Поступление товаров и услуг 00000000003 от 31.01.2022 12:00:00 | 44.01 / 76.05 | 1166.67\n23. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 217415\n24. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 114640\n25. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 659320\n26. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 109610\n27. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 162300\n28. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 990830\n29. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 302560\n30. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 105310\n31. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 615320\n32. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 144220\n33. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 56930\n34. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 50000\n35. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 425600\n36. 2022-01-20T12:00:03Z | Поступление на расчетный счет 00000000001 от 20.01.2022 12:00:03 | 51 / 60.02 | 119210\n37. 2022-01-20T12:00:03Z | Поступление на расчетный счет 00000000001 от 20.01.2022 12:00:03 | 51 / 60.02 | 180230\n38. 2022-01-20T12:00:03Z | Поступление на расчетный счет 00000000001 от 20.01.2022 12:00:03 | 51 / 60.02 | 144320\n39. 2022-01-20T12:00:03Z | Поступление на расчетный счет 00000000001 от 20.01.2022 12:00:03 | 51 / 60.02 | 320600\n40. 2022-01-20T12:00:03Z | Поступление на расчетный счет 00000000001 от 20.01.2022 12:00:03 | 51 / 60.02 | 126300\n41. 2021-12-31T12:00:00Z | Поступление товаров и услуг 00000000015 от 31.12.2021 12:00:00 | 19.04 / 76.05 | 233.33\n42. 2021-12-31T12:00:00Z | Поступление товаров и услуг 00000000015 от 31.12.2021 12:00:00 | 44.01 / 76.05 | 1166.67\n43. 2021-11-30T12:00:00Z | Поступление товаров и услуг 00000000014 от 30.11.2021 12:00:00 | 19.04 / 76.05 | 233.33\n44. 2021-11-30T12:00:00Z | Поступление товаров и услуг 00000000014 от 30.11.2021 12:00:00 | 44.01 / 76.05 | 1166.67\n45. 2021-11-10T12:00:07Z | Поступление на расчетный счет 00000000013 от 10.11.2021 12:00:07 | 51 / 62.02 | 20000\n46. 2021-10-31T12:00:00Z | Поступление товаров и услуг 00000000013 от 31.10.2021 12:00:00 | 19.04 / 76.05 | 233.33\n47. 2021-10-31T12:00:00Z | Поступление товаров и услуг 00000000013 от 31.10.2021 12:00:00 | 44.01 / 76.05 | 1166.67\n48. 2021-09-30T12:00:00Z | Поступление товаров и услуг 00000000012 от 30.09.2021 12:00:00 | 19.04 / 76.05 | 233.33\n49. 2021-09-30T12:00:00Z | Поступление товаров и услуг 00000000012 от 30.09.2021 12:00:00 | 44.01 / 76.05 | 1166.67\n50. 2021-09-29T12:00:03Z | Поступление на расчетный счет 00000000012 от 29.09.2021 12:00:03 | 51 / 62.02 | 50000\n51. 2021-08-31T12:00:05Z | Поступление товаров и услуг 00000000011 от 31.08.2021 12:00:05 | 19.04 / 76.05 | 233.33\n52. 2021-08-31T12:00:05Z | Поступление товаров и услуг 00000000011 от 31.08.2021 12:00:05 | 44.01 / 76.05 | 1166.67\n53. 2021-08-31T12:00:04Z | Поступление на расчетный счет 00000000011 от 31.08.2021 12:00:04 | 51 / 62.02 | 120500\n54. 2021-07-31T12:00:00Z | Поступление товаров и услуг 00000000010 от 31.07.2021 12:00:00 | 19.04 / 76.05 | 233.33\n55. 2021-07-31T12:00:00Z | Поступление товаров и услуг 00000000010 от 31.07.2021 12:00:00 | 44.01 / 76.05 | 1166.67\n56. 2021-06-30T00:00:00Z | Поступление товаров и услуг 00000000008 от 30.06.2021 0:00:00 | 19.04 / 76.05 | 233.33\n57. 2021-06-30T00:00:00Z | Поступление товаров и услуг 00000000008 от 30.06.2021 0:00:00 | 44.01 / 76.05 | 1166.67\n58. 2021-06-22T12:00:00Z | Поступление на расчетный счет 00000000010 от 22.06.2021 12:00:00 | 51 / 62.02 | 498630\n59. 2021-06-09T12:00:05Z | Поступление на расчетный счет 00000000009 от 09.06.2021 12:00:05 | 51 / 62.02 | 418960\n60. 2021-05-31T12:00:04Z | Поступление товаров и услуг 00000000006 от 31.05.2021 12:00:04 | 19.04 / 76.05 | 233.33\n61. 2021-05-31T12:00:04Z | Поступление товаров и услуг 00000000006 от 31.05.2021 12:00:04 | 44.01 / 76.05 | 1166.67\n62. 2021-05-17T12:00:00Z | Поступление товаров и услуг 00000000009 от 17.05.2021 12:00:00 | 19.04 / 60.01 | 12000\n63. 2021-05-17T12:00:00Z | Поступление товаров и услуг 00000000009 от 17.05.2021 12:00:00 | 97.21 / 60.01 | 60000\n64. 2021-05-17T12:00:00Z | Поступление товаров и услуг 00000000009 от 17.05.2021 12:00:00 | 60.01 / 60.02 | 72000\n65. 2021-04-30T12:00:00Z | Поступление товаров и услуг 00000000005 от 30.04.2021 12:00:00 | 19.04 / 76.05 | 233.33\n66. 2021-04-30T12:00:00Z | Поступление товаров и услуг 00000000005 от 30.04.2021 12:00:00 | 44.01 / 76.05 | 1166.67\n67. 2021-04-28T12:00:08Z | Поступление на расчетный счет 00000000008 от 28.04.2021 12:00:08 | 51 / 62.02 | 564300\n68. 2021-04-22T12:00:00Z | Поступление на расчетный счет 00000000007 от 22.04.2021 12:00:00 | 51 / 62.02 | 982420\n69. 2021-04-13T12:00:11Z | Поступление на расчетный счет 00000000006 от 13.04.2021 12:00:11 | 51 / 62.02 | 1882400\n70. 2021-04-07T12:00:00Z | Поступление товаров и услуг 00000000016 от 07.04.2021 12:00:00 | 97.21 / 60.01 | 11900\n71. 2021-04-07T12:00:00Z | Поступление товаров и услуг 00000000016 от 07.04.2021 12:00:00 | 60.01 / 60.02 | 11900\n72. 2021-03-31T23:59:59Z | Поступление товаров и услуг 00000000003 от 31.03.2021 23:59:59 | 19.04 / 76.05 | 233.33\n73. 2021-03-31T23:59:59Z | Поступление товаров и услуг 00000000003 от 31.03.2021 23:59:59 | 44.01 / 76.05 | 1166.67\n74. 2021-03-25T12:00:02Z | Поступление на расчетный счет 00000000005 от 25.03.2021 12:00:02 | 51 / 62.02 | 644315\n75. 2021-03-24T12:00:03Z | Поступление на расчетный счет 00000000004 от 24.03.2021 12:00:03 | 51 / 62.02 | 1219990\n76. 2021-03-22T12:00:02Z | Реализация товаров и услуг 00000000001 от 22.03.2021 12:00:02 | 62.01 / 90.01.1 | 598950\n77. 2021-03-22T12:00:02Z | Реализация товаров и услуг 00000000001 от 22.03.2021 12:00:02 | 62.02 / 62.01 | 95274\n78. 2021-03-22T12:00:02Z | Реализация товаров и услуг 00000000001 от 22.03.2021 12:00:02 | 62.02 / 62.01 | 38900\n79. 2021-03-22T12:00:02Z | Реализация товаров и услуг 00000000001 от 22.03.2021 12:00:02 | 62.02 / 62.01 | 464776\n80. 2021-03-18T12:00:00Z | Поступление на расчетный счет 00000000003 от 18.03.2021 12:00:00 | 51 / 62.02 | 1425310\n81. 2021-03-12T12:00:03Z | Поступление на расчетный счет 00000000002 от 12.03.2021 12:00:03 | 51 / 62.02 | 214600\n82. 2021-03-09T00:00:00Z | Поступление товаров и услуг 00000000001 от 09.03.2021 0:00:00 | 19.03 / 60.01 | 88415\n83. 2021-03-09T00:00:00Z | Поступление товаров и услуг 00000000001 от 09.03.2021 0:00:00 | 41.01 / 60.01 | 442075\n84. 2021-02-28T23:59:59Z | Поступление товаров и услуг 00000000004 от 28.02.2021 23:59:59 | 19.04 / 76.05 | 233.33\n85. 2021-02-28T23:59:59Z | Поступление товаров и услуг 00000000004 от 28.02.2021 23:59:59 | 44.01 / 76.05 | 1166.67\n86. 2021-02-19T12:00:01Z | Поступление на расчетный счет 00000000001 от 19.02.2021 12:00:01 | 51 / 62.02 | 518600\n87. 2021-01-31T23:59:59Z | Поступление товаров и услуг 00000000002 от 31.01.2021 23:59:59 | 19.04 / 76.05 | 233.33\n88. 2021-01-31T23:59:59Z | Поступление товаров и услуг 00000000002 от 31.01.2021 23:59:59 | 44.01 / 76.05 | 1166.67\n89. 2020-12-31T23:59:59Z | Поступление товаров и услуг 00000000034 от 31.12.2020 23:59:59 | 19.04 / 76.05 | 233.33\n90. 2020-12-31T23:59:59Z | Поступление товаров и услуг 00000000034 от 31.12.2020 23:59:59 | 44.01 / 76.05 | 1166.67\n91. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 51 / 62.02 | 3248300\n92. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 51 / 62.02 | 216600\n93. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 51 / 62.02 | 200000\n94. 2020-11-30T23:59:59Z | Поступление товаров и услуг 00000000033 от 30.11.2020 23:59:59 | 19.04 / 76.05 | 233.33\n95. 2020-11-30T23:59:59Z | Поступление товаров и услуг 00000000033 от 30.11.2020 23:59:59 | 44.01 / 76.05 | 1166.67\n96. 2020-11-30T12:00:08Z | Реализация товаров и услуг 00000000010 от 30.11.2020 12:00:08 | 62.01 / 90.01.1 | 118552\n97. 2020-11-30T12:00:08Z | Реализация товаров и услуг 00000000010 от 30.11.2020 12:00:08 | 62.01 / 90.01.1 | 458472\n98. 2020-11-30T12:00:08Z | Реализация товаров и услуг 00000000010 от 30.11.2020 12:00:08 | 62.02 / 62.01 | 577024\n99. 2020-11-30T12:00:07Z | Поступление на расчетный счет 00000000041 от 30.11.2020 12:00:07 | 51 / 62.02 | 38900\n100. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 900000\n101. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 144749\n102. 2020-11-20T12:00:00Z | Поступление товаров и услуг 00000000030 от 20.11.2020 12:00:00 | 19.03 / 60.01 | 1450\n103. 2020-11-20T12:00:00Z | Поступление товаров и услуг 00000000030 от 20.11.2020 12:00:00 | 41.01 / 60.01 | 7250\n104. 2020-11-20T12:00:00Z | Поступление товаров и услуг 00000000030 от 20.11.2020 12:00:00 | 60.01 / 60.02 | 8700\n105. 2020-11-19T12:00:04Z | Поступление на расчетный счет 00000000039 от 19.11.2020 12:00:04 | 51 / 62.02 | 1041800\n106. 2020-11-19T12:00:04Z | Поступление на расчетный счет 00000000039 от 19.11.2020 12:00:04 | 51 / 62.01 | 2278800\n107. 2020-11-18T12:00:05Z | Поступление на расчетный счет 00000000038 от 18.11.2020 12:00:05 | 51 / 62.01 | 745300\n108. 2020-11-18T12:00:04Z | Поступление на расчетный счет 00000000037 от 18.11.2020 12:00:04 | 51 / 62.01 | 320000\n109. 2020-11-13T12:00:03Z | Поступление на расчетный счет 00000000036 от 13.11.2020 12:00:03 | 51 / 62.01 | 313600\n110. 2020-11-10T15:39:14Z | Реализация товаров и услуг 00000000009 от 10.11.2020 15:39:14 | 62.01 / 90.01.1 | 4161000\n111. 2020-11-10T15:39:14Z | Реализация товаров и услуг 00000000009 от 10.11.2020 15:39:14 | 62.02 / 62.01 | 328300\n112. 2020-11-10T15:39:14Z | Реализация товаров и услуг 00000000009 от 10.11.2020 15:39:14 | 62.02 / 62.01 | 175000\n113. 2020-11-10T15:39:13Z | Поступление на расчетный счет 00000000035 от 10.11.2020 15:39:13 | 51 / 62.02 | 328300\n114. 2020-11-09T12:00:01Z | Поступление товаров и услуг 00000000031 от 09.11.2020 12:00:01 | 41.01 / 60.01 | 2229840\n115. 2020-10-31T23:59:59Z | Поступление товаров и услуг 00000000032 от 31.10.2020 23:59:59 | 19.04 / 76.05 | 233.33\n116. 2020-10-31T23:59:59Z | Поступление товаров и услуг 00000000032 от 31.10.2020 23:59:59 | 44.01 / 76.05 | 1166.67\n117. 2020-10-26T12:00:00Z | Поступление на расчетный счет 00000000034 от 26.10.2020 12:00:00 | 51 / 62.02 | 175000\n118. 2020-10-14T12:00:00Z | Поступление на расчетный счет 00000000033 от 14.10.2020 12:00:00 | 51 / 60.01 | 160000\n119. 2020-09-30T12:00:04Z | Поступление товаров и услуг 00000000025 от 30.09.2020 12:00:04 | 19.04 / 76.05 | 233.33\n120. 2020-09-30T12:00:04Z | Поступление товаров и услуг 00000000025 от 30.09.2020 12:00:04 | 44.01 / 76.05 | 1166.67", + "assistant_reply_first_line": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "materialized_but_not_anchor_matched", + "match_failure_reason": "contract_anchor_not_matched_in_materialized_rows", + "rows_fetched": 1000, + "rows_matched": 120, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-tTQZJ0FEry", + "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", + "anchor_not_matched_fallback_rows" + ], + "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": "за указанный период" + }, + "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": "за указанный период", + "anchor_value_resolved": "за указанный период", + "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": "matched_non_empty", + "rows_fetched": 1000, + "raw_rows_received": 1000, + "rows_after_account_scope": 416, + "rows_after_recipe_filter": 0, + "rows_materialized": 416, + "rows_matched": 120, + "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": "tarS1SdTAd1b72", + "llm_decomposition_effective_message": "документы по договору за указанный период", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "а документы по этому же договору за тот же период", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "tarS1SdTAd1b72", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "документы по договору за указанный период" + } + }, + "error_code": null, + "error_message": null + } + ] +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_followup_25_20-27-52/response_audit.md b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_followup_25_20-27-52/response_audit.md new file mode 100644 index 0000000..b70b419 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_followup_25_20-27-52/response_audit.md @@ -0,0 +1,29 @@ +# Response Audit: 2026-04-02_Address_Nightly_followup_25_20-27-52 + +| id | strict | route_health | reply_type | intent | limited_reason | question | assistant_first_line | +|---|---|---|---|---|---|---|---| +| F001 | True | ok_or_factual | factual | list_documents_by_counterparty | None | Покажи документы по СВК за 2020 | Собран список документов по контрагенту (live address lane). | +| F002 | True | ok_or_factual | factual | list_documents_by_counterparty | None | а теперь только за май 2020 | По окну 2020-05-01..2020-05-31 строк не найдено; показаны ближайшие доступные данные 2020-07-27..2021-11-10. | +| F003 | True | ok_or_factual | factual | account_balance_snapshot | None | а по счету 60.01 на ту же дату | Адресный срез по счету собран (по движениям live MCP). | +| F004 | True | ok_or_factual | factual | account_balance_snapshot | None | а на ту же дату по 62.01 | Адресный срез по счету собран (по движениям live MCP). | +| F005 | True | ok_or_factual | factual | documents_forming_balance | None | раскрой остаток по 62.01 документами на ту же дату | Собран drilldown документов, формирующих остаток по счету на указанную дату. | +| F006 | True | ok_or_factual | factual | bank_operations_by_counterparty | None | Покажи банковские операции по СВК за 2020 | Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу. | +| F007 | True | ok_or_factual | factual | bank_operations_by_counterparty | None | а теперь только ноябрь 2020 | Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу. | +| F008 | True | ok_or_factual | factual | list_documents_by_counterparty | None | а теперь документы по нему | Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу. | +| F009 | True | ok_or_factual | factual | account_balance_snapshot | None | и остаток по 51 на ту же дату | Адресный срез по счету собран (по движениям live MCP). | +| F010 | True | ok_or_factual | factual | account_balance_snapshot | None | а теперь только май 2020 | Адресный срез по счету собран (по движениям live MCP). | +| F011 | True | partial_non_blocking | partial_coverage | account_balance_snapshot | empty_match | Покажи сальдо по счету 60 на 2020-12-31 | В live-данных по текущему фильтру записи не найдены. | +| F012 | True | ok_or_factual | factual | account_balance_snapshot | None | а теперь только май 2020 | Адресный срез по счету собран (по движениям live MCP). | +| F013 | True | ok_or_factual | factual | account_balance_snapshot | None | а на ту же дату по 62 | Адресный срез по счету собран (по движениям live MCP). | +| F014 | True | ok_or_factual | factual | documents_forming_balance | None | раскрой 62 документами на ту же дату | Собран drilldown документов, формирующих остаток по счету на указанную дату. | +| F015 | True | partial_non_blocking | partial_coverage | account_balance_snapshot | empty_match | вернись на 2020-12-31 по 60 | В live-данных по текущему фильтру записи не найдены. | +| F016 | True | ok_or_factual | factual | list_documents_by_contract | None | Покажи документы по договору 19/15 за 2020 | Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк. | +| F017 | True | ok_or_factual | factual | bank_operations_by_contract | None | а теперь банковские операции | Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк. | +| F018 | True | ok_or_factual | factual | bank_operations_by_contract | None | а теперь только за 2020 | Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк. | +| F019 | True | ok_or_factual | factual | open_items_by_counterparty_or_contract | None | есть ли открытые позиции по договору 19/15 на 2020-12-31 | Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк. | +| F020 | True | ok_or_factual | factual | list_documents_by_contract | None | покажи документы по этому же договору | Собран список документов по договору (live address lane). | +| F021 | True | ok_or_factual | factual | bank_operations_by_contract | None | Покажи банковские операции по договору 19/15 | Собран список банковских операций по договору (live address lane). | +| F022 | True | ok_or_factual | factual | open_items_by_counterparty_or_contract | None | а теперь открытые позиции по нему | Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк. | +| F023 | True | ok_or_factual | factual | open_items_by_counterparty_or_contract | None | а теперь на 2020-12-31 | Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк. | +| F024 | True | ok_or_factual | factual | account_balance_snapshot | None | а по счету 51 на ту же дату | Адресный срез по счету собран (по движениям live MCP). | +| F025 | True | ok_or_factual | factual | list_documents_by_contract | None | а документы по этому же договору за тот же период | Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу. | diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_followup_25_20-27-52/run_summary.json b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_followup_25_20-27-52/run_summary.json new file mode 100644 index 0000000..0b5cbda --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_followup_25_20-27-52/run_summary.json @@ -0,0 +1,55 @@ +{ + "run_id": "2026-04-02_Address_Nightly_followup_25_20-27-52", + "generated_at": "2026-04-02T20:29:57", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\address_followup_context_chains_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", + "strict_policy": "route", + "totals": { + "questions_total": 25, + "ok_200_count": 25, + "semantic_pass_count": 25, + "semantic_pass_rate": 1.0, + "route_pass_count": 25, + "route_pass_rate": 1.0, + "strict_pass_count": 25, + "strict_pass_rate": 1.0, + "factual_count": 23, + "partial_coverage_count": 2, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_applied_count": 14, + "avg_elapsed_ms": 4961.4 + }, + "distributions": { + "reply_type": { + "factual": 23, + "partial_coverage": 2 + }, + "actual_intent": { + "list_documents_by_counterparty": 3, + "account_balance_snapshot": 9, + "documents_forming_balance": 2, + "bank_operations_by_counterparty": 2, + "list_documents_by_contract": 3, + "bank_operations_by_contract": 3, + "open_items_by_counterparty_or_contract": 3 + }, + "actual_mode": { + "address_query": 25 + }, + "mcp_call_status": { + "matched_non_empty": 23, + "no_raw_rows": 2 + }, + "limited_reason_category": { + "empty_match": 2 + }, + "route_health": { + "ok_or_factual": 23, + "partial_non_blocking": 2 + } + } +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_followup_25_20-27-52_comparator_report.json b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_followup_25_20-27-52_comparator_report.json new file mode 100644 index 0000000..1c35260 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_followup_25_20-27-52_comparator_report.json @@ -0,0 +1,67 @@ +{ + "generated_at": "2026-04-02T20:29:57", + "overall_pass": true, + "baseline": { + "summary_path": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\runs\\2026-04-02_Address_Followup_Context_Chains_2026-04-02_19-15-Run5\\run_summary.json", + "run_id": "2026-04-02_Address_Followup_Context_Chains_2026-04-02_19-15-Run5", + "questions_total": 25, + "strict_pass_rate": 1.0, + "route_pass_rate": 1.0, + "execution_error_count": 0, + "false_factual_rate": 0.0, + "notes": [ + "execution_error_count derived as http_error_count + limited_reason_category.execution_error", + "false_factual_rate derived from false_factual_count/questions_total" + ] + }, + "candidate": { + "summary_path": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\runs\\2026-04-02_Address_Nightly_Regression_AfterFocusFix\\2026-04-02_Address_Nightly_followup_25_20-27-52\\run_summary.json", + "run_id": "2026-04-02_Address_Nightly_followup_25_20-27-52", + "questions_total": 25, + "strict_pass_rate": 1.0, + "route_pass_rate": 1.0, + "execution_error_count": 0, + "false_factual_rate": 0.0, + "notes": [ + "execution_error_count derived as http_error_count + limited_reason_category.execution_error", + "false_factual_rate derived from false_factual_count/questions_total" + ] + }, + "checks": [ + { + "metric": "strict_pass_rate", + "passed": true, + "baseline": 1.0, + "candidate": 1.0, + "rule": "candidate >= baseline" + }, + { + "metric": "route_pass_rate", + "passed": true, + "baseline": 1.0, + "candidate": 1.0, + "rule": "candidate >= baseline" + }, + { + "metric": "execution_error_count", + "passed": true, + "baseline": 0, + "candidate": 0, + "rule": "candidate <= baseline" + }, + { + "metric": "false_factual_rate", + "passed": true, + "baseline": 0.0, + "candidate": 0.0, + "rule": "candidate <= baseline" + }, + { + "metric": "questions_total_match", + "passed": true, + "baseline": 25, + "candidate": 25, + "rule": "candidate == baseline" + } + ] +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_followup_25_20-27-52_validator_report.json b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_followup_25_20-27-52_validator_report.json new file mode 100644 index 0000000..df83b8b --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_followup_25_20-27-52_validator_report.json @@ -0,0 +1,23 @@ +{ + "generated_at": "2026-04-02T20:29:57", + "total": 1, + "passed": 1, + "failed": 0, + "results": [ + { + "run_dir": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\runs\\2026-04-02_Address_Nightly_Regression_AfterFocusFix\\2026-04-02_Address_Nightly_followup_25_20-27-52", + "valid": true, + "errors": [], + "warnings": [], + "metrics": { + "run_id": "2026-04-02_Address_Nightly_followup_25_20-27-52", + "questions_total": 25, + "route_pass_rate": 1.0, + "strict_pass_rate": 1.0, + "http_error_count": 0, + "rows_count": 25, + "failures_count": 0 + } + } + ] +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_stress_102_20-11-51/README.md b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_stress_102_20-11-51/README.md new file mode 100644 index 0000000..4154768 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_stress_102_20-11-51/README.md @@ -0,0 +1,28 @@ +# 2026-04-02_Address_Nightly_stress_102_20-11-51 + +Generated at: 2026-04-02T20:23:18 +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 +Strict policy: route + +## Totals +- questions_total: 102 +- ok_200_count: 102 +- semantic_pass_count: 102 +- semantic_pass_rate: 1.0 +- route_pass_count: 102 +- route_pass_rate: 1.0 +- strict_pass_count: 102 +- strict_pass_rate: 1.0 +- factual_count: 96 +- partial_coverage_count: 6 +- clarification_required_count: 0 +- http_error_count: 0 +- llm_decomposition_applied_count: 81 +- avg_elapsed_ms: 6736.3 + +## Files +- run_summary.json +- full_live_results.json +- failures_only.json diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_stress_102_20-11-51/failures_only.json b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_stress_102_20-11-51/failures_only.json new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_stress_102_20-11-51/failures_only.json @@ -0,0 +1 @@ +[] diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_stress_102_20-11-51/full_live_results.json b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_stress_102_20-11-51/full_live_results.json new file mode 100644 index 0000000..ca44e8c --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_stress_102_20-11-51/full_live_results.json @@ -0,0 +1,15391 @@ +{ + "run_id": "2026-04-02_Address_Nightly_stress_102_20-11-51", + "generated_at": "2026-04-02T20:23:18", + "summary": { + "run_id": "2026-04-02_Address_Nightly_stress_102_20-11-51", + "generated_at": "2026-04-02T20:23:18", + "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", + "strict_policy": "route", + "totals": { + "questions_total": 102, + "ok_200_count": 102, + "semantic_pass_count": 102, + "semantic_pass_rate": 1.0, + "route_pass_count": 102, + "route_pass_rate": 1.0, + "strict_pass_count": 102, + "strict_pass_rate": 1.0, + "factual_count": 96, + "partial_coverage_count": 6, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_applied_count": 81, + "avg_elapsed_ms": 6736.3 + }, + "distributions": { + "reply_type": { + "factual": 96, + "partial_coverage": 6 + }, + "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": { + "matched_non_empty": 96, + "no_raw_rows": 6 + }, + "limited_reason_category": { + "empty_match": 6 + }, + "route_health": { + "ok_or_factual": 96, + "partial_non_blocking": 6 + } + } + }, + "rows": [ + { + "index": 1, + "id": "S001", + "question": "свк доки за 2020 покаж пж", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-11-51-s001", + "status_code": 200, + "ok": true, + "elapsed_ms": 8695, + "reply_type": "factual", + "trace_id": "address-GWMo_XYNzo", + "assistant_reply": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.\nСобран список документов по контрагенту (live address lane).\nСтрок отобрано: 5.\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-16T16:20:52Z | Списание с расчетного счета 00000000294 от 16.12.2020 16:20:52 | 0 / 0 | 3849.26 | аналитика: УФК по г. Москве (для ГУ - Отделения ПФР по г. Москве и МО)\n4. 2020-12-16T16:20:51Z | Списание с расчетного счета 00000000293 от 16.12.2020 16:20:51 | 0 / 0 | 60 | аналитика: СБЕРБАНК, ПАО\n5. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "assistant_reply_first_line": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "rows_fetched": 20, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-GWMo_XYNzo", + "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", + "anchor_not_matched_fallback_rows" + ], + "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": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "mcp_call_status": "matched_non_empty", + "rows_fetched": 20, + "raw_rows_received": 20, + "rows_after_account_scope": 5, + "rows_after_recipe_filter": 0, + "rows_materialized": 5, + "rows_matched": 5, + "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": "HAeHO52Nqkggy0", + "llm_decomposition_effective_message": "Показать сводку документов за 2020 год.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "свк доки за 2020 покаж", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "HAeHO52Nqkggy0", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Показать сводку документов за 2020 год." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 2, + "id": "S002", + "question": "покеж все доки по свк за 20 год", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-11-51-s002", + "status_code": 200, + "ok": true, + "elapsed_ms": 6843, + "reply_type": "factual", + "trace_id": "address-FP0n893-zw", + "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 | аналитика: Группа", + "assistant_reply_first_line": "Собран список документов по контрагенту (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 20, + "rows_matched": 3, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-FP0n893-zw", + "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": "7XM-ZCBKb1GQk-", + "llm_decomposition_effective_message": "показать все документы по СВК за 2020 год", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "покеж все доки по свк за 2020 год", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "7XM-ZCBKb1GQk-", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "показать все документы по СВК за 2020 год" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 3, + "id": "S003", + "question": "дай список документов по свк за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-11-51-s003", + "status_code": 200, + "ok": true, + "elapsed_ms": 6041, + "reply_type": "factual", + "trace_id": "address-o1ruXFu_D3", + "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 | аналитика: Группа", + "assistant_reply_first_line": "Собран список документов по контрагенту (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 20, + "rows_matched": 3, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-o1ruXFu_D3", + "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": "Rtq1UMUWz-Dd5s", + "llm_decomposition_effective_message": "получить список документов по СВК за 2020 год", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "дай список документов по свк за 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "Rtq1UMUWz-Dd5s", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "получить список документов по СВК за 2020 год" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 4, + "id": "S004", + "question": "какие у свк есть доки за 2020?", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-11-51-s004", + "status_code": 200, + "ok": true, + "elapsed_ms": 8442, + "reply_type": "factual", + "trace_id": "address-V0cmWwuzNq", + "assistant_reply": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.\nСобран список документов по контрагенту (live address lane).\nСтрок отобрано: 5.\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-16T16:20:52Z | Списание с расчетного счета 00000000294 от 16.12.2020 16:20:52 | 0 / 0 | 3849.26 | аналитика: УФК по г. Москве (для ГУ - Отделения ПФР по г. Москве и МО)\n4. 2020-12-16T16:20:51Z | Списание с расчетного счета 00000000293 от 16.12.2020 16:20:51 | 0 / 0 | 60 | аналитика: СБЕРБАНК, ПАО\n5. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "assistant_reply_first_line": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "rows_fetched": 20, + "rows_matched": 5, + "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, + "debug_payload": { + "trace_id": "address-V0cmWwuzNq", + "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", + "documents_by_counterparty_signal_detected", + "anchor_not_matched_fallback_rows" + ], + "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": "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": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "mcp_call_status": "matched_non_empty", + "rows_fetched": 20, + "raw_rows_received": 20, + "rows_after_account_scope": 5, + "rows_after_recipe_filter": 0, + "rows_materialized": 5, + "rows_matched": 5, + "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": "PF3iJxKeIa_pXY", + "llm_decomposition_effective_message": "какие у свк есть доки за 2020?", + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "sanitized_user_message": "какие у свк есть доки за 2020?", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "PF3iJxKeIa_pXY", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "какие у свк есть доки за 2020?" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 5, + "id": "S005", + "question": "че по свк по докам за 2020 год", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-11-51-s005", + "status_code": 200, + "ok": true, + "elapsed_ms": 713, + "reply_type": "factual", + "trace_id": "address-R3NFbYKtWf", + "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 | аналитика: Группа", + "assistant_reply_first_line": "Собран список документов по контрагенту (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 20, + "rows_matched": 3, + "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", + "debug_payload": { + "trace_id": "address-R3NFbYKtWf", + "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": false, + "llm_provider_used": "local", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "документы по контрагенту свк за 2020 год", + "llm_decomposition_reason": "fallback_rule_applied_without_llm", + "fallback_rule_hit": "documents_counterparty_year_rewrite", + "sanitized_user_message": "че по свк по докам за 2020 год", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + }, + "error_code": null, + "error_message": null + }, + { + "index": 6, + "id": "S006", + "question": "ёпт покажи доки по свк за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-11-51-s006", + "status_code": 200, + "ok": true, + "elapsed_ms": 7164, + "reply_type": "factual", + "trace_id": "address-QTw5p799H1", + "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 | аналитика: Группа", + "assistant_reply_first_line": "Собран список документов по контрагенту (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 20, + "rows_matched": 3, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-QTw5p799H1", + "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": "yxqccbBwelYOUM", + "llm_decomposition_effective_message": "покажи документы по СВК за 2020 год", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "покажи доки по свк за 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "yxqccbBwelYOUM", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "покажи документы по СВК за 2020 год" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 7, + "id": "S007", + "question": "бля, доки свк 2020 вывали", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-11-51-s007", + "status_code": 200, + "ok": true, + "elapsed_ms": 7094, + "reply_type": "factual", + "trace_id": "address-dNpSNTBsgG", + "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 | аналитика: Группа", + "assistant_reply_first_line": "Собран список документов по контрагенту (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 20, + "rows_matched": 3, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-dNpSNTBsgG", + "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": "Vtc2imtMPLCSvf", + "llm_decomposition_effective_message": "документы СВК 2020 вывалились", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "доки свк 2020 вывали", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "Vtc2imtMPLCSvf", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "документы СВК 2020 вывалились" + } + }, + "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_Nightly_stress_102_20-11-51-s008", + "status_code": 200, + "ok": true, + "elapsed_ms": 6130, + "reply_type": "factual", + "trace_id": "address-8_APZSX5eW", + "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 | аналитика: Группа", + "assistant_reply_first_line": "Собран список документов по контрагенту (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 20, + "rows_matched": 3, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-8_APZSX5eW", + "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": "AmTMB9_N_VVmOw", + "llm_decomposition_effective_message": "СВК документы за 2020 год, пожалуйста.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "svk документы for 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "AmTMB9_N_VVmOw", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "СВК документы за 2020 год, пожалуйста." + } + }, + "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_Nightly_stress_102_20-11-51-s009", + "status_code": 200, + "ok": true, + "elapsed_ms": 8333, + "reply_type": "factual", + "trace_id": "address-HNCWAUNCWJ", + "assistant_reply": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.\nСобран список документов по контрагенту (live address lane).\nСтрок отобрано: 5.\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-16T16:20:52Z | Списание с расчетного счета 00000000294 от 16.12.2020 16:20:52 | 0 / 0 | 3849.26 | аналитика: УФК по г. Москве (для ГУ - Отделения ПФР по г. Москве и МО)\n4. 2020-12-16T16:20:51Z | Списание с расчетного счета 00000000293 от 16.12.2020 16:20:51 | 0 / 0 | 60 | аналитика: СБЕРБАНК, ПАО\n5. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "assistant_reply_first_line": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "rows_fetched": 20, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-HNCWAUNCWJ", + "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", + "anchor_not_matched_fallback_rows" + ], + "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": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "mcp_call_status": "matched_non_empty", + "rows_fetched": 20, + "raw_rows_received": 20, + "rows_after_account_scope": 5, + "rows_after_recipe_filter": 0, + "rows_materialized": 5, + "rows_matched": 5, + "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": "e3fTdet7zQ0KF5", + "llm_decomposition_effective_message": "документы по контрагентам за год 2020", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "документы by counterparty svk year 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "e3fTdet7zQ0KF5", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "документы по контрагентам за год 2020" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 10, + "id": "S010", + "question": "по контрагенту свк покаж документы за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-11-51-s010", + "status_code": 200, + "ok": true, + "elapsed_ms": 6869, + "reply_type": "factual", + "trace_id": "address-2lmcK_4VwC", + "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 | аналитика: Группа", + "assistant_reply_first_line": "Собран список документов по контрагенту (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 20, + "rows_matched": 3, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-2lmcK_4VwC", + "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": "IpKvxP_a4KCDho", + "llm_decomposition_effective_message": "Показать документы по контрагенту СВК за 2020 год.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "по контрагенту свк покаж документы за 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "IpKvxP_a4KCDho", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Показать документы по контрагенту СВК за 2020 год." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 11, + "id": "S011", + "question": "плс доки по свк 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-11-51-s011", + "status_code": 200, + "ok": true, + "elapsed_ms": 9402, + "reply_type": "factual", + "trace_id": "address-LNu_0A7AQz", + "assistant_reply": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.\nСобран список документов по контрагенту (live address lane).\nСтрок отобрано: 5.\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-16T16:20:52Z | Списание с расчетного счета 00000000294 от 16.12.2020 16:20:52 | 0 / 0 | 3849.26 | аналитика: УФК по г. Москве (для ГУ - Отделения ПФР по г. Москве и МО)\n4. 2020-12-16T16:20:51Z | Списание с расчетного счета 00000000293 от 16.12.2020 16:20:51 | 0 / 0 | 60 | аналитика: СБЕРБАНК, ПАО\n5. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "assistant_reply_first_line": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "rows_fetched": 20, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-LNu_0A7AQz", + "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", + "anchor_not_matched_fallback_rows" + ], + "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": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "mcp_call_status": "matched_non_empty", + "rows_fetched": 20, + "raw_rows_received": 20, + "rows_after_account_scope": 5, + "rows_after_recipe_filter": 0, + "rows_materialized": 5, + "rows_matched": 5, + "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": "aWpQ2msvllqnIT", + "llm_decomposition_effective_message": "Пожалуйста, предоставьте документы по сводной выручке (СВК) за 2020 год.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "доки по свк 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "aWpQ2msvllqnIT", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Пожалуйста, предоставьте документы по сводной выручке (СВК) за 2020 год." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 12, + "id": "S012", + "question": "свк док за 2020 гони", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-11-51-s012", + "status_code": 200, + "ok": true, + "elapsed_ms": 726, + "reply_type": "factual", + "trace_id": "address-Igfj_KeXgI", + "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 | аналитика: Группа", + "assistant_reply_first_line": "Собран список документов по контрагенту (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 20, + "rows_matched": 3, + "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", + "debug_payload": { + "trace_id": "address-Igfj_KeXgI", + "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": false, + "llm_provider_used": "local", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "документы по контрагенту свк за 2020 год", + "llm_decomposition_reason": "fallback_rule_applied_without_llm", + "fallback_rule_hit": "documents_counterparty_year_rewrite", + "sanitized_user_message": "свк док за 2020 гони", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + }, + "error_code": null, + "error_message": null + }, + { + "index": 13, + "id": "S013", + "question": "по свк банковские операции за 2020 покаж", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-11-51-s013", + "status_code": 200, + "ok": true, + "elapsed_ms": 7123, + "reply_type": "factual", + "trace_id": "address-TlpD7AMJAy", + "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 | аналитика: Группа", + "assistant_reply_first_line": "Собран список банковских операций по контрагенту (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 20, + "rows_matched": 3, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-TlpD7AMJAy", + "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": "gwAISL9NYj95pd", + "llm_decomposition_effective_message": "показать банковские операции по СВК за 2020 год", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "по свк банковские операции за 2020 покаж", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "gwAISL9NYj95pd", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "показать банковские операции по СВК за 2020 год" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 14, + "id": "S014", + "question": "свк выписка банка 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-11-51-s014", + "status_code": 200, + "ok": true, + "elapsed_ms": 7123, + "reply_type": "factual", + "trace_id": "address-jzoqjSXhLZ", + "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 | аналитика: Группа", + "assistant_reply_first_line": "Собран список банковских операций по контрагенту (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 20, + "rows_matched": 3, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-jzoqjSXhLZ", + "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", + "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": "DOCUMENT_LIST", + "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": "vyUHpfjVTC-Lql", + "llm_decomposition_effective_message": "СВК выписка банка за 2020 год.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "свк выписка банка 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "vyUHpfjVTC-Lql", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "СВК выписка банка за 2020 год." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 15, + "id": "S015", + "question": "платежи по свк за 2020 выведи", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-11-51-s015", + "status_code": 200, + "ok": true, + "elapsed_ms": 7083, + "reply_type": "factual", + "trace_id": "address-Jr743zEmDq", + "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 | аналитика: Группа", + "assistant_reply_first_line": "Собран список банковских операций по контрагенту (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 20, + "rows_matched": 3, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-Jr743zEmDq", + "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", + "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": "DOCUMENT_LIST", + "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": "F4XRJYv-8Wgf8P", + "llm_decomposition_effective_message": "Платежи по СВК за 2020 год выведите.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "платежи по свк за 2020 выведи", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "F4XRJYv-8Wgf8P", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Платежи по СВК за 2020 год выведите." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 16, + "id": "S016", + "question": "оплаты по свк за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-11-51-s016", + "status_code": 200, + "ok": true, + "elapsed_ms": 7211, + "reply_type": "factual", + "trace_id": "address-xwZA1jDZFb", + "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 | аналитика: Группа", + "assistant_reply_first_line": "Собран список банковских операций по контрагенту (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 20, + "rows_matched": 3, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-xwZA1jDZFb", + "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", + "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": "medium", + "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": "keWR5kduwiAAXL", + "llm_decomposition_effective_message": "оплаты по СВК за 2020 год", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "оплаты по свк за 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "keWR5kduwiAAXL", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "оплаты по СВК за 2020 год" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 17, + "id": "S017", + "question": "свк банк опер за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-11-51-s017", + "status_code": 200, + "ok": true, + "elapsed_ms": 9301, + "reply_type": "factual", + "trace_id": "address-Ou94EGnWQq", + "assistant_reply": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.\nСобран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 5.\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-16T16:20:52Z | Списание с расчетного счета 00000000294 от 16.12.2020 16:20:52 | 0 / 0 | 3849.26 | аналитика: УФК по г. Москве (для ГУ - Отделения ПФР по г. Москве и МО)\n4. 2020-12-16T16:20:51Z | Списание с расчетного счета 00000000293 от 16.12.2020 16:20:51 | 0 / 0 | 60 | аналитика: СБЕРБАНК, ПАО\n5. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "assistant_reply_first_line": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "rows_fetched": 20, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-Ou94EGnWQq", + "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", + "bank_ops_by_counterparty_signal_detected", + "anchor_not_matched_fallback_rows" + ], + "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_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": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "mcp_call_status": "matched_non_empty", + "rows_fetched": 20, + "raw_rows_received": 20, + "rows_after_account_scope": 5, + "rows_after_recipe_filter": 0, + "rows_materialized": 5, + "rows_matched": 5, + "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": "a6BAwPGi9vMeP7", + "llm_decomposition_effective_message": "Сверка с банком операций за 2020 год", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "свк банк операции за 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "a6BAwPGi9vMeP7", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Сверка с банком операций за 2020 год" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 18, + "id": "S018", + "question": "че у свк по банку за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-11-51-s018", + "status_code": 200, + "ok": true, + "elapsed_ms": 8088, + "reply_type": "factual", + "trace_id": "address-zbz7M5Zfxo", + "assistant_reply": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.\nСобран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 5.\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-16T16:20:52Z | Списание с расчетного счета 00000000294 от 16.12.2020 16:20:52 | 0 / 0 | 3849.26 | аналитика: УФК по г. Москве (для ГУ - Отделения ПФР по г. Москве и МО)\n4. 2020-12-16T16:20:51Z | Списание с расчетного счета 00000000293 от 16.12.2020 16:20:51 | 0 / 0 | 60 | аналитика: СБЕРБАНК, ПАО\n5. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "assistant_reply_first_line": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "rows_fetched": 20, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-zbz7M5Zfxo", + "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", + "shape_not_detected", + "bank_ops_by_counterparty_signal_detected", + "anchor_not_matched_fallback_rows" + ], + "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_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": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "mcp_call_status": "matched_non_empty", + "rows_fetched": 20, + "raw_rows_received": 20, + "rows_after_account_scope": 5, + "rows_after_recipe_filter": 0, + "rows_materialized": 5, + "rows_matched": 5, + "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": "OMUcNksHhqnSoF", + "llm_decomposition_effective_message": "Что у СВК по банку за 2020 год?", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "че у свк по банку за 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "OMUcNksHhqnSoF", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Что у СВК по банку за 2020 год?" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 19, + "id": "S019", + "question": "свк списания/поступления за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-11-51-s019", + "status_code": 200, + "ok": true, + "elapsed_ms": 10325, + "reply_type": "factual", + "trace_id": "address-rQl_WN7521", + "assistant_reply": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.\nСобран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 5.\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-16T16:20:52Z | Списание с расчетного счета 00000000294 от 16.12.2020 16:20:52 | 0 / 0 | 3849.26 | аналитика: УФК по г. Москве (для ГУ - Отделения ПФР по г. Москве и МО)\n4. 2020-12-16T16:20:51Z | Списание с расчетного счета 00000000293 от 16.12.2020 16:20:51 | 0 / 0 | 60 | аналитика: СБЕРБАНК, ПАО\n5. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "assistant_reply_first_line": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "rows_fetched": 20, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-rQl_WN7521", + "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", + "bank_ops_by_counterparty_signal_detected", + "anchor_not_matched_fallback_rows" + ], + "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": "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": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "mcp_call_status": "matched_non_empty", + "rows_fetched": 20, + "raw_rows_received": 20, + "rows_after_account_scope": 5, + "rows_after_recipe_filter": 0, + "rows_materialized": 5, + "rows_matched": 5, + "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": "-dgSg37MOMCl1F", + "llm_decomposition_effective_message": "сканирование сводных кассовых операций по списаниям и поступлениям за 2020 год", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "свк списания/поступления за 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "-dgSg37MOMCl1F", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "сканирование сводных кассовых операций по списаниям и поступлениям за 2020 год" + } + }, + "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_Nightly_stress_102_20-11-51-s020", + "status_code": 200, + "ok": true, + "elapsed_ms": 645, + "reply_type": "factual", + "trace_id": "address-6Z8pJphLJT", + "assistant_reply": "Собран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 1.\n1. 2020-12-16T16:20:51Z | Списание с расчетного счета 00000000293 от 16.12.2020 16:20:51 | 0 / 0 | 60 | аналитика: СБЕРБАНК, ПАО", + "assistant_reply_first_line": "Собран список банковских операций по контрагенту (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 20, + "rows_matched": 1, + "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", + "debug_payload": { + "trace_id": "address-6Z8pJphLJT", + "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": "bank", + "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": "bank", + "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": 1, + "rows_materialized": 5, + "rows_matched": 1, + "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": false, + "llm_provider_used": "local", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "банковские операции по контрагенту bank за 2020 год", + "llm_decomposition_reason": "fallback_rule_applied_without_llm", + "fallback_rule_hit": "bank_operations_counterparty_year_rewrite", + "sanitized_user_message": "bank ops by svk for 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": 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_Nightly_stress_102_20-11-51-s021", + "status_code": 200, + "ok": true, + "elapsed_ms": 6099, + "reply_type": "factual", + "trace_id": "address-S6Df-t7HCg", + "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 | аналитика: Группа", + "assistant_reply_first_line": "Собран список банковских операций по контрагенту (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 20, + "rows_matched": 3, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-S6Df-t7HCg", + "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": "SVK", + "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": "SVK", + "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": "k2rCB2NMRichAc", + "llm_decomposition_effective_message": "транзакции по контрагенту SVK за 2020 год", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "transactions by counterparty svk 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "k2rCB2NMRichAc", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "транзакции по контрагенту SVK за 2020 год" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 22, + "id": "S022", + "question": "бля, по свк банковские платежки 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-11-51-s022", + "status_code": 200, + "ok": true, + "elapsed_ms": 7096, + "reply_type": "factual", + "trace_id": "address-oI-MK3CqwH", + "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 | аналитика: Группа", + "assistant_reply_first_line": "Собран список банковских операций по контрагенту (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 20, + "rows_matched": 3, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-oI-MK3CqwH", + "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", + "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": "DOCUMENT_LIST", + "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": "h7FE3cTTMM9SIW", + "llm_decomposition_effective_message": "по СВК банковские платежки 2020", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "по свк банковские платежки 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "h7FE3cTTMM9SIW", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "по СВК банковские платежки 2020" + } + }, + "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_Nightly_stress_102_20-11-51-s023", + "status_code": 200, + "ok": true, + "elapsed_ms": 6065, + "reply_type": "factual", + "trace_id": "address-F8lbQQtLjN", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-F8lbQQtLjN", + "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": "kvpMw_xKy7GlhB", + "llm_decomposition_effective_message": "balance of account 60.01 as of 2020-07-31", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "сальдо по счету 60.01 на дату 2020-07-31", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "kvpMw_xKy7GlhB", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "balance of account 60.01 as of 2020-07-31" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 24, + "id": "S024", + "question": "остаток по счету 60.01 на 2020.05", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-11-51-s024", + "status_code": 200, + "ok": true, + "elapsed_ms": 6102, + "reply_type": "factual", + "trace_id": "address-k176dKcXqv", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-k176dKcXqv", + "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-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.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": "YMrgL7FzOlx4Ht", + "llm_decomposition_effective_message": "balance for account 60.01 as of May 2020", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "остаток по счету 60.01 на 2020.05", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "YMrgL7FzOlx4Ht", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "balance for account 60.01 as of May 2020" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 25, + "id": "S025", + "question": "покажи остаток по 60.01 за май 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-11-51-s025", + "status_code": 200, + "ok": true, + "elapsed_ms": 6083, + "reply_type": "factual", + "trace_id": "address-n2rKL6-tsP", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-n2rKL6-tsP", + "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-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.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": "MqZ5OkSYhXqPwg", + "llm_decomposition_effective_message": "Показать остаток на счете 60.01 за период май 2020.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "покажи остаток по 60.01 за май 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "MqZ5OkSYhXqPwg", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Показать остаток на счете 60.01 за период май 2020." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 26, + "id": "S026", + "question": "счет 60 остаток на май 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-11-51-s026", + "status_code": 200, + "ok": true, + "elapsed_ms": 6158, + "reply_type": "factual", + "trace_id": "address-i664HwCqoM", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 6, + "rows_matched": 6, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-i664HwCqoM", + "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", + "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": "yW5XAmIW52v9Ub", + "llm_decomposition_effective_message": "балансовое состояние счета 60 на конец мая 2020 года", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "счет 60 остаток на май 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "yW5XAmIW52v9Ub", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "балансовое состояние счета 60 на конец мая 2020 года" + } + }, + "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_Nightly_stress_102_20-11-51-s027", + "status_code": 200, + "ok": true, + "elapsed_ms": 6062, + "reply_type": "factual", + "trace_id": "address-ssgB7u4yL_", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-ssgB7u4yL_", + "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", + "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": "Xg37lNvNXJ8I3i", + "llm_decomposition_effective_message": "баланс счета 60.01 на дату 2020-07-31", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "баланс account 60.01 as of 2020-07-31", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "Xg37lNvNXJ8I3i", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "баланс счета 60.01 на дату 2020-07-31" + } + }, + "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_Nightly_stress_102_20-11-51-s028", + "status_code": 200, + "ok": true, + "elapsed_ms": 6115, + "reply_type": "factual", + "trace_id": "address-8nZieUsBcA", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-8nZieUsBcA", + "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", + "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": "x3V0qe6moxfNNM", + "llm_decomposition_effective_message": "saldo счета 60.01 на дату 31.07.2020", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "60.01 сальдо на 31.07.2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "x3V0qe6moxfNNM", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "saldo счета 60.01 на дату 31.07.2020" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 29, + "id": "S029", + "question": "сколько на счете 60 на конец 2020-05", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-11-51-s029", + "status_code": 200, + "ok": true, + "elapsed_ms": 6084, + "reply_type": "factual", + "trace_id": "address-kbuuwxZE12", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 6, + "rows_matched": 6, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-kbuuwxZE12", + "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": "r_YkTlRA5nMIN3", + "llm_decomposition_effective_message": "balance inquiry for account 60 as of end of May 2020", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "сколько на счете 60 на конец 2020-05", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "r_YkTlRA5nMIN3", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "balance inquiry for account 60 as of end of May 2020" + } + }, + "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_Nightly_stress_102_20-11-51-s030", + "status_code": 200, + "ok": true, + "elapsed_ms": 6129, + "reply_type": "partial_coverage", + "trace_id": "address-IxYqEDlRfE", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.", + "assistant_reply_first_line": "В live-данных по текущему фильтру записи не найдены.", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "partial_non_blocking", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 0, + "rows_matched": 0, + "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, + "debug_payload": { + "trace_id": "address-IxYqEDlRfE", + "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", + "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.02", + "period_from": "2020-12-01", + "period_to": "2020-12-31", + "as_of_date": "2020-12-31" + }, + "missing_required_filters": [], + "selected_recipe": "address_movements_account_snapshot_v1", + "mcp_call_status_legacy": "no_raw_rows", + "account_scope_mode": "strict", + "account_scope_fallback_applied": false, + "anchor_type": "account", + "anchor_value_raw": "60.02", + "anchor_value_resolved": "60.02", + "resolver_confidence": "high", + "ambiguity_count": 0, + "match_failure_stage": "none", + "match_failure_reason": null, + "mcp_call_status": "no_raw_rows", + "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": "60.02", + "account_token_normalized": "60.2", + "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": "empty_match", + "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": "AKMLG-vkQnnhGX", + "llm_decomposition_effective_message": "получить остаток по счету 60.02 на конец периода 2020-12-31", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "дай остаток 60.02 на 2020-12-31", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "AKMLG-vkQnnhGX", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "получить остаток по счету 60.02 на конец периода 2020-12-31" + } + }, + "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_Nightly_stress_102_20-11-51-s031", + "status_code": 200, + "ok": true, + "elapsed_ms": 6083, + "reply_type": "partial_coverage", + "trace_id": "address-h7W9AazGVB", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.", + "assistant_reply_first_line": "В live-данных по текущему фильтру записи не найдены.", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "partial_non_blocking", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 0, + "rows_matched": 0, + "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, + "debug_payload": { + "trace_id": "address-h7W9AazGVB", + "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", + "verify_signal_detected", + "account_balance_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": "account_balance_snapshot", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "account": "62.01", + "period_from": "2020-12-01", + "period_to": "2020-12-31", + "as_of_date": "2020-12-31" + }, + "missing_required_filters": [], + "selected_recipe": "address_movements_account_snapshot_v1", + "mcp_call_status_legacy": "no_raw_rows", + "account_scope_mode": "strict", + "account_scope_fallback_applied": false, + "anchor_type": "account", + "anchor_value_raw": "62.01", + "anchor_value_resolved": "62.01", + "resolver_confidence": "high", + "ambiguity_count": 0, + "match_failure_stage": "none", + "match_failure_reason": null, + "mcp_call_status": "no_raw_rows", + "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": "62.01", + "account_token_normalized": "62.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": "empty_match", + "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": "atIPZjJA0tGM2j", + "llm_decomposition_effective_message": "проверка сальдо по счету 62.01 на конец декабря 2020 года", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "сальдо по счету 62.01 на 2020-12-31", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "atIPZjJA0tGM2j", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "проверка сальдо по счету 62.01 на конец декабря 2020 года" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 32, + "id": "S032", + "question": "плс остаток по счету 51 на 2020-06-30", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-11-51-s032", + "status_code": 200, + "ok": true, + "elapsed_ms": 6160, + "reply_type": "factual", + "trace_id": "address-_9487XhiVf", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 30, + "rows_matched": 30, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-_9487XhiVf", + "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": "51", + "period_from": "2020-06-01", + "period_to": "2020-06-30", + "as_of_date": "2020-06-30" + }, + "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": 30, + "raw_rows_received": 30, + "rows_after_account_scope": 30, + "rows_after_recipe_filter": 30, + "rows_materialized": 30, + "rows_matched": 30, + "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": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "nWxz6dLudbR-bg", + "llm_decomposition_effective_message": "пожалуйста, предоставьте остаток по счету 51 на дату 2020-06-30", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "остаток по счету 51 на 2020-06-30", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "nWxz6dLudbR-bg", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "пожалуйста, предоставьте остаток по счету 51 на дату 2020-06-30" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 33, + "id": "S033", + "question": "как там по счету 60.01 на 2020.07?", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-11-51-s033", + "status_code": 200, + "ok": true, + "elapsed_ms": 6043, + "reply_type": "factual", + "trace_id": "address-x5711AEtCn", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "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, + "debug_payload": { + "trace_id": "address-x5711AEtCn", + "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", + "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": false, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "SDKhSrx066lF8R", + "llm_decomposition_effective_message": "как там по счету 60.01 на 2020.07?", + "llm_decomposition_reason": "normalized_fragment_rejected_intent_drop", + "fallback_rule_hit": null, + "sanitized_user_message": "как там по счету 60.01 на 2020.07?", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "SDKhSrx066lF8R", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "как там по счету 60.01 на 2020.07?" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 34, + "id": "S034", + "question": "сальдо 60 на 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-11-51-s034", + "status_code": 200, + "ok": true, + "elapsed_ms": 6172, + "reply_type": "factual", + "trace_id": "address-YQSz9xhLSq", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 138, + "rows_matched": 138, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-YQSz9xhLSq", + "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", + "aggregate_signal_detected", + "account_balance_signal_detected" + ], + "why_included_summary": [], + "selection_reason_summary": [] + }, + "dropped_intent_segments": [], + "detected_mode": "address_query", + "detected_mode_confidence": "medium", + "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-01-01", + "period_to": "2020-12-31", + "as_of_date": "2020-12-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": 138, + "raw_rows_received": 138, + "rows_after_account_scope": 138, + "rows_after_recipe_filter": 138, + "rows_materialized": 138, + "rows_matched": 138, + "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": "S6YuImprWlHgIa", + "llm_decomposition_effective_message": "балансовое сальдо счета 60 на период 2020 год", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "сальдо 60 на 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "S6YuImprWlHgIa", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "балансовое сальдо счета 60 на период 2020 год" + } + }, + "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_Nightly_stress_102_20-11-51-s035", + "status_code": 200, + "ok": true, + "elapsed_ms": 7039, + "reply_type": "factual", + "trace_id": "address-CxLRbtANp0", + "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Можно уточнить выборку по контрагенту, договору или периоду.", + "assistant_reply_first_line": "Собран drilldown документов, формирующих остаток по счету на указанную дату.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_forming_balance_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-CxLRbtANp0", + "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", + "drilldown_signal_detected", + "documents_forming_balance_signal_detected" + ], + "why_included_summary": [], + "selection_reason_summary": [] + }, + "dropped_intent_segments": [], + "detected_mode": "address_query", + "detected_mode_confidence": "high", + "query_shape": "DRILLDOWN_REQUEST", + "query_shape_confidence": "high", + "detected_intent": "documents_forming_balance", + "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_documents_forming_balance_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_LIST", + "execution_lane": "address_query", + "llm_decomposition_applied": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "F_hcY1oTetkPSs", + "llm_decomposition_effective_message": "Какие документы формируют остаток по счету 60.01 на 2020-07-31?", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "какие документы формируют остаток по счету 60.01 на 2020-07-31", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "F_hcY1oTetkPSs", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Какие документы формируют остаток по счету 60.01 на 2020-07-31?" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 36, + "id": "S036", + "question": "из чего состоит остаток по счету 60 на 2020.05", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-11-51-s036", + "status_code": 200, + "ok": true, + "elapsed_ms": 6107, + "reply_type": "factual", + "trace_id": "address-9MzzI4eIwv", + "assistant_reply": "Собран drilldown документов, формирующих остаток по счету на указанную дату.\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\n5. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 162033\n6. 2020-05-12T12:00:00Z | Списание с расчетного счета 00000000137 от 12.05.2020 12:00:00 | 60.01 / 51 | 70000\nМожно уточнить выборку по контрагенту, договору или периоду.", + "assistant_reply_first_line": "Собран drilldown документов, формирующих остаток по счету на указанную дату.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_forming_balance_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 6, + "rows_matched": 6, + "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, + "debug_payload": { + "trace_id": "address-9MzzI4eIwv", + "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", + "drilldown_signal_detected", + "documents_forming_balance_signal_detected" + ], + "why_included_summary": [], + "selection_reason_summary": [] + }, + "dropped_intent_segments": [], + "detected_mode": "address_query", + "detected_mode_confidence": "high", + "query_shape": "DRILLDOWN_REQUEST", + "query_shape_confidence": "high", + "detected_intent": "documents_forming_balance", + "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_documents_forming_balance_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_LIST", + "execution_lane": "address_query", + "llm_decomposition_applied": false, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "gRdminDfyk2Spi", + "llm_decomposition_effective_message": "из чего состоит остаток по счету 60 на 2020.05", + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "sanitized_user_message": "из чего состоит остаток по счету 60 на 2020.05", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "gRdminDfyk2Spi", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "из чего состоит остаток по счету 60 на 2020.05" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 37, + "id": "S037", + "question": "раскрой остаток 60.01 по документам на конец июля 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-11-51-s037", + "status_code": 200, + "ok": true, + "elapsed_ms": 6087, + "reply_type": "factual", + "trace_id": "address-SuKik5Kydq", + "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Можно уточнить выборку по контрагенту, договору или периоду.", + "assistant_reply_first_line": "Собран drilldown документов, формирующих остаток по счету на указанную дату.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_forming_balance_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-SuKik5Kydq", + "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_account_drilldown_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": "documents_forming_balance", + "detected_intent_confidence": "medium", + "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_documents_forming_balance_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_LIST", + "execution_lane": "address_query", + "llm_decomposition_applied": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "HNFXNpG7GOwMMn", + "llm_decomposition_effective_message": "Раскрыть остаток счета 60.01 по документам на конец июля 2020 года.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "раскрой остаток 60.01 по документам на конец июля 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "HNFXNpG7GOwMMn", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Раскрыть остаток счета 60.01 по документам на конец июля 2020 года." + } + }, + "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_Nightly_stress_102_20-11-51-s038", + "status_code": 200, + "ok": true, + "elapsed_ms": 7138, + "reply_type": "factual", + "trace_id": "address-8Pfm5-NXPJ", + "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Можно уточнить выборку по контрагенту, договору или периоду.", + "assistant_reply_first_line": "Собран drilldown документов, формирующих остаток по счету на указанную дату.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_forming_balance_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "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, + "debug_payload": { + "trace_id": "address-8Pfm5-NXPJ", + "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_forming_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": "documents_forming_balance", + "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_documents_forming_balance_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_LIST", + "execution_lane": "address_query", + "llm_decomposition_applied": false, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "VTpB9mwNZnUGmT", + "llm_decomposition_effective_message": "доки под остатком 60.01 на 2020-07-31", + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "sanitized_user_message": "доки под остатком 60.01 на 2020-07-31", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "VTpB9mwNZnUGmT", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "доки под остатком 60.01 на 2020-07-31" + } + }, + "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_Nightly_stress_102_20-11-51-s039", + "status_code": 200, + "ok": true, + "elapsed_ms": 7083, + "reply_type": "factual", + "trace_id": "address-OKx28bVb6M", + "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Можно уточнить выборку по контрагенту, договору или периоду.", + "assistant_reply_first_line": "Собран drilldown документов, формирующих остаток по счету на указанную дату.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_forming_balance_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-OKx28bVb6M", + "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_forming_balance_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": "documents_forming_balance", + "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_documents_forming_balance_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_LIST", + "execution_lane": "address_query", + "llm_decomposition_applied": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "QgCesseLnMVv-c", + "llm_decomposition_effective_message": "документы, формирующие остаток по счету 60.01 на 2020-07-31", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "документы forming balance for account 60.01 as of 2020-07-31", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "QgCesseLnMVv-c", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "документы, формирующие остаток по счету 60.01 на 2020-07-31" + } + }, + "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_Nightly_stress_102_20-11-51-s040", + "status_code": 200, + "ok": true, + "elapsed_ms": 7089, + "reply_type": "factual", + "trace_id": "address-pqWtIpvRwV", + "assistant_reply": "Собран drilldown документов, формирующих остаток по счету на указанную дату.\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\n5. 2020-05-12T12:00:00Z | Списание с расчетного счета 00000000137 от 12.05.2020 12:00:00 | 60.01 / 51 | 70000\nМожно уточнить выборку по контрагенту, договору или периоду.", + "assistant_reply_first_line": "Собран drilldown документов, формирующих остаток по счету на указанную дату.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_forming_balance_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-pqWtIpvRwV", + "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", + "drilldown_signal_detected", + "documents_forming_balance_signal_detected" + ], + "why_included_summary": [], + "selection_reason_summary": [] + }, + "dropped_intent_segments": [], + "detected_mode": "address_query", + "detected_mode_confidence": "high", + "query_shape": "DRILLDOWN_REQUEST", + "query_shape_confidence": "high", + "detected_intent": "documents_forming_balance", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "account": "60.01", + "period_from": "2020-05-01", + "period_to": "2020-05-31", + "as_of_date": "2020-05-31" + }, + "missing_required_filters": [], + "selected_recipe": "address_documents_forming_balance_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_LIST", + "execution_lane": "address_query", + "llm_decomposition_applied": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "5PR2AhGbua0HE8", + "llm_decomposition_effective_message": "какие документы формируют остаток по счету 60.01 на 2020-05-31", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "какие доки формируют остаток 60.01 на 2020-05-31", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "5PR2AhGbua0HE8", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "какие документы формируют остаток по счету 60.01 на 2020-05-31" + } + }, + "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_Nightly_stress_102_20-11-51-s041", + "status_code": 200, + "ok": true, + "elapsed_ms": 8105, + "reply_type": "partial_coverage", + "trace_id": "address-xTXMOJy7cS", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.", + "assistant_reply_first_line": "В live-данных по текущему фильтру записи не найдены.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "partial_non_blocking", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_forming_balance_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 0, + "rows_matched": 0, + "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, + "debug_payload": { + "trace_id": "address-xTXMOJy7cS", + "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_account_drilldown_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": "documents_forming_balance", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "account": "62.01", + "period_from": "2020-12-01", + "period_to": "2020-12-31", + "as_of_date": "2020-12-31" + }, + "missing_required_filters": [], + "selected_recipe": "address_documents_forming_balance_v1", + "mcp_call_status_legacy": "no_raw_rows", + "account_scope_mode": "strict", + "account_scope_fallback_applied": false, + "anchor_type": "account", + "anchor_value_raw": "62.01", + "anchor_value_resolved": "62.01", + "resolver_confidence": "high", + "ambiguity_count": 0, + "match_failure_stage": "none", + "match_failure_reason": null, + "mcp_call_status": "no_raw_rows", + "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": "62.01", + "account_token_normalized": "62.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": "empty_match", + "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": "o6P3O80GxOGT7a", + "llm_decomposition_effective_message": "раскрыть остаток по счету 62.01 с разложением по документам на конец периода 2020-12-31", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "по счету 62.01 раскрой остаток документами на 2020-12-31", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "o6P3O80GxOGT7a", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "раскрыть остаток по счету 62.01 с разложением по документам на конец периода 2020-12-31" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 42, + "id": "S042", + "question": "из чего остаток по счету 51 на 2020-06-30", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-11-51-s042", + "status_code": 200, + "ok": true, + "elapsed_ms": 7129, + "reply_type": "factual", + "trace_id": "address-umEh2BOGIw", + "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Можно уточнить выборку по контрагенту, договору или периоду.", + "assistant_reply_first_line": "Собран drilldown документов, формирующих остаток по счету на указанную дату.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_forming_balance_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 30, + "rows_matched": 3, + "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, + "debug_payload": { + "trace_id": "address-umEh2BOGIw", + "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", + "drilldown_signal_detected", + "documents_forming_balance_signal_detected" + ], + "why_included_summary": [], + "selection_reason_summary": [] + }, + "dropped_intent_segments": [], + "detected_mode": "address_query", + "detected_mode_confidence": "high", + "query_shape": "DRILLDOWN_REQUEST", + "query_shape_confidence": "high", + "detected_intent": "documents_forming_balance", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "account": "51", + "period_from": "2020-06-01", + "period_to": "2020-06-30", + "as_of_date": "2020-06-30" + }, + "missing_required_filters": [], + "selected_recipe": "address_documents_forming_balance_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": 30, + "raw_rows_received": 30, + "rows_after_account_scope": 30, + "rows_after_recipe_filter": 30, + "rows_materialized": 30, + "rows_matched": 3, + "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_LIST", + "execution_lane": "address_query", + "llm_decomposition_applied": false, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "QOD6auzE6iNRNq", + "llm_decomposition_effective_message": "из чего остаток по счету 51 на 2020-06-30", + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "sanitized_user_message": "из чего остаток по счету 51 на 2020-06-30", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "QOD6auzE6iNRNq", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "из чего остаток по счету 51 на 2020-06-30" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 43, + "id": "S043", + "question": "покажи документы по договору 19/15 за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-11-51-s043", + "status_code": 200, + "ok": true, + "elapsed_ms": 8320, + "reply_type": "factual", + "trace_id": "address-MZJgCgP-UG", + "assistant_reply": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 8.\n1. 2020-08-31T15:00:06Z | Поступление товаров и услуг 00000000024 от 31.08.2020 15:00:06 | 19.04 / 76.05 | 233.33\n2. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 43804.8\n3. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 9776\n4. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 73968\n5. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 94924.8\n6. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 54400\n7. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.02 / 62.01 | 276873.6\n8. 2020-06-30T12:00:00Z | Поступление товаров и услуг 00000000015 от 30.06.2020 12:00:00 | 19.04 / 76.05 | 233.33", + "assistant_reply_first_line": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 8, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-MZJgCgP-UG", + "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_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": "high", + "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": "19/15", + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": 11, + "rows_materialized": 438, + "rows_matched": 8, + "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": "miqW5ovpRX1iob", + "llm_decomposition_effective_message": "Показать документы по договору 19/15 за период 2020 года.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "покажи документы по договору 19/15 за 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "miqW5ovpRX1iob", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Показать документы по договору 19/15 за период 2020 года." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 44, + "id": "S044", + "question": "доки по дог. 19/15 за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-11-51-s044", + "status_code": 200, + "ok": true, + "elapsed_ms": 8149, + "reply_type": "factual", + "trace_id": "address-bGtSjPE-nM", + "assistant_reply": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 8.\n1. 2020-08-31T15:00:06Z | Поступление товаров и услуг 00000000024 от 31.08.2020 15:00:06 | 19.04 / 76.05 | 233.33\n2. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 43804.8\n3. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 9776\n4. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 73968\n5. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 94924.8\n6. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 54400\n7. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.02 / 62.01 | 276873.6\n8. 2020-06-30T12:00:00Z | Поступление товаров и услуг 00000000015 от 30.06.2020 12:00:00 | 19.04 / 76.05 | 233.33", + "assistant_reply_first_line": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 8, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-bGtSjPE-nM", + "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": "19/15", + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": 11, + "rows_materialized": 438, + "rows_matched": 8, + "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": "gbRcQCLMWbEynK", + "llm_decomposition_effective_message": "Документы по договору 19/15 за период 2020 года.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "доки по договор 19/15 за 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "gbRcQCLMWbEynK", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Документы по договору 19/15 за период 2020 года." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 45, + "id": "S045", + "question": "какие документы по контракту 19/15", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-11-51-s045", + "status_code": 200, + "ok": true, + "elapsed_ms": 8094, + "reply_type": "factual", + "trace_id": "address-eYSI745Cm_", + "assistant_reply": "Собран список документов по договору (live address lane).\nСтрок отобрано: 1.\n1. 2021-12-31T12:00:00Z | Поступление товаров и услуг 00000000015 от 31.12.2021 12:00:00 | 19.04 / 76.05 | 233.33", + "assistant_reply_first_line": "Собран список документов по договору (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 1, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-eYSI745Cm_", + "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_contract_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_contract", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "contract": "19/15" + }, + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": 416, + "rows_after_recipe_filter": 2, + "rows_materialized": 416, + "rows_matched": 1, + "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": "Kx21weuoZfdZAI", + "llm_decomposition_effective_message": "Какие документы по контракту 19/15?", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "какие документы по контракту 19/15", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "Kx21weuoZfdZAI", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Какие документы по контракту 19/15?" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 46, + "id": "S046", + "question": "docs by contract 19/15 year 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-11-51-s046", + "status_code": 200, + "ok": true, + "elapsed_ms": 9154, + "reply_type": "factual", + "trace_id": "address-AfDv6wr_Zz", + "assistant_reply": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 8.\n1. 2020-08-31T15:00:06Z | Поступление товаров и услуг 00000000024 от 31.08.2020 15:00:06 | 19.04 / 76.05 | 233.33\n2. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 43804.8\n3. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 9776\n4. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 73968\n5. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 94924.8\n6. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 54400\n7. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.02 / 62.01 | 276873.6\n8. 2020-06-30T12:00:00Z | Поступление товаров и услуг 00000000015 от 30.06.2020 12:00:00 | 19.04 / 76.05 | 233.33", + "assistant_reply_first_line": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 8, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-AfDv6wr_Zz", + "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", + "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": "OBJECT_LOOKUP", + "query_shape_confidence": "medium", + "detected_intent": "list_documents_by_contract", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "contract": "19/15", + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": 11, + "rows_materialized": 438, + "rows_matched": 8, + "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": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "QszI548Sr0LDWL", + "llm_decomposition_effective_message": "docs by contract 19/15 year 2020", + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "sanitized_user_message": "документы by contract 19/2015 год 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "QszI548Sr0LDWL", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "docs by contract 19/15 year 2020" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 47, + "id": "S047", + "question": "бля, покажи по договору 19/15 доки", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-11-51-s047", + "status_code": 200, + "ok": true, + "elapsed_ms": 7098, + "reply_type": "factual", + "trace_id": "address-T8XDe6Z_PZ", + "assistant_reply": "Собран список документов по договору (live address lane).\nСтрок отобрано: 1.\n1. 2021-12-31T12:00:00Z | Поступление товаров и услуг 00000000015 от 31.12.2021 12:00:00 | 19.04 / 76.05 | 233.33", + "assistant_reply_first_line": "Собран список документов по договору (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 1, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-T8XDe6Z_PZ", + "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_contract_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_contract", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "contract": "19/15" + }, + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": 416, + "rows_after_recipe_filter": 2, + "rows_materialized": 416, + "rows_matched": 1, + "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": "uO1Bqiz2YVgclz", + "llm_decomposition_effective_message": "покажи документы по договору 19/15", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "покажи по договору 19/15 доки", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "uO1Bqiz2YVgclz", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "покажи документы по договору 19/15" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 48, + "id": "S048", + "question": "договор 19/15 документы", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-11-51-s048", + "status_code": 200, + "ok": true, + "elapsed_ms": 7162, + "reply_type": "factual", + "trace_id": "address-H-_O4EJmqx", + "assistant_reply": "Собран список документов по договору (live address lane).\nСтрок отобрано: 1.\n1. 2021-12-31T12:00:00Z | Поступление товаров и услуг 00000000015 от 31.12.2021 12:00:00 | 19.04 / 76.05 | 233.33", + "assistant_reply_first_line": "Собран список документов по договору (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 1, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-H-_O4EJmqx", + "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" + ], + "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": "19/15" + }, + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": 416, + "rows_after_recipe_filter": 2, + "rows_materialized": 416, + "rows_matched": 1, + "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": "uETf86-NniwVHj", + "llm_decomposition_effective_message": "документы по договору 19/15", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "договор 19/15 документы", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "uETf86-NniwVHj", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "документы по договору 19/15" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 49, + "id": "S049", + "question": "плс документы договор №19/15", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-11-51-s049", + "status_code": 200, + "ok": true, + "elapsed_ms": 7109, + "reply_type": "factual", + "trace_id": "address-AeuOng0QNZ", + "assistant_reply": "Собран список документов по договору (live address lane).\nСтрок отобрано: 1.\n1. 2021-12-31T12:00:00Z | Поступление товаров и услуг 00000000015 от 31.12.2021 12:00:00 | 19.04 / 76.05 | 233.33", + "assistant_reply_first_line": "Собран список документов по договору (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 1, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-AeuOng0QNZ", + "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" + ], + "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": "№19/15" + }, + "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": "№19/15", + "anchor_value_resolved": "№19/15", + "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": 416, + "rows_after_recipe_filter": 2, + "rows_materialized": 416, + "rows_matched": 1, + "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": "kMsvnlpxcD6FUn", + "llm_decomposition_effective_message": "пожалуйста, предоставьте документы по договору №19/15", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "документы договор №19/15", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "kMsvnlpxcD6FUn", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "пожалуйста, предоставьте документы по договору №19/15" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 50, + "id": "S050", + "question": "покеж документы по 19/15", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-11-51-s050", + "status_code": 200, + "ok": true, + "elapsed_ms": 8277, + "reply_type": "factual", + "trace_id": "address-Vi1Mui9IOy", + "assistant_reply": "Собран список документов по договору (live address lane).\nСтрок отобрано: 1.\n1. 2021-12-31T12:00:00Z | Поступление товаров и услуг 00000000015 от 31.12.2021 12:00:00 | 19.04 / 76.05 | 233.33", + "assistant_reply_first_line": "Собран список документов по договору (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 1, + "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, + "debug_payload": { + "trace_id": "address-Vi1Mui9IOy", + "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" + ], + "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": "19/15" + }, + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": 416, + "rows_after_recipe_filter": 2, + "rows_materialized": 416, + "rows_matched": 1, + "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": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "hePbEU6u2-_WjJ", + "llm_decomposition_effective_message": "покеж документы по 19/15", + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "sanitized_user_message": "покеж документы по 19/15", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "hePbEU6u2-_WjJ", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "покеж документы по 19/15" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 51, + "id": "S051", + "question": "банковские операции по договору 19/15", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-11-51-s051", + "status_code": 200, + "ok": true, + "elapsed_ms": 7961, + "reply_type": "factual", + "trace_id": "address-xhbw8tz7zt", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 1.\n1. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "assistant_reply_first_line": "Собран список банковских операций по договору (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 1, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-xhbw8tz7zt", + "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": "19/15" + }, + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": 1, + "rows_materialized": 341, + "rows_matched": 1, + "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": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "DXgooNdaMahP68", + "llm_decomposition_effective_message": "банковские операции по договору 19/15", + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "sanitized_user_message": "банковские операции по договору 19/15", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "DXgooNdaMahP68", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "банковские операции по договору 19/15" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 52, + "id": "S052", + "question": "платежи по договору 19/15", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-11-51-s052", + "status_code": 200, + "ok": true, + "elapsed_ms": 7101, + "reply_type": "factual", + "trace_id": "address-vy_aYOjHI2", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 1.\n1. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "assistant_reply_first_line": "Собран список банковских операций по договору (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 1, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-vy_aYOjHI2", + "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", + "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": "DOCUMENT_LIST", + "query_shape_confidence": "medium", + "detected_intent": "bank_operations_by_contract", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "contract": "19/15" + }, + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": 1, + "rows_materialized": 341, + "rows_matched": 1, + "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": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "zQPoNP2XQtZ9nO", + "llm_decomposition_effective_message": "платежи по договору 19/15", + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "sanitized_user_message": "платежи по договору 19/15", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "zQPoNP2XQtZ9nO", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "платежи по договору 19/15" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 53, + "id": "S053", + "question": "выписка по договору 19/15", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-11-51-s053", + "status_code": 200, + "ok": true, + "elapsed_ms": 7150, + "reply_type": "factual", + "trace_id": "address-Rwr0t4lIKG", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 1.\n1. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "assistant_reply_first_line": "Собран список банковских операций по договору (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 1, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-Rwr0t4lIKG", + "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", + "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": "DOCUMENT_LIST", + "query_shape_confidence": "medium", + "detected_intent": "bank_operations_by_contract", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "contract": "19/15" + }, + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": 1, + "rows_materialized": 341, + "rows_matched": 1, + "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": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "g2-i4PSbe1zgie", + "llm_decomposition_effective_message": "выписка по договору 19/15", + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "sanitized_user_message": "выписка по договору 19/15", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "g2-i4PSbe1zgie", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "выписка по договору 19/15" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 54, + "id": "S054", + "question": "bank ops by contract 19/15", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-11-51-s054", + "status_code": 200, + "ok": true, + "elapsed_ms": 8142, + "reply_type": "factual", + "trace_id": "address-85tSqsdQD6", + "assistant_reply": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.\nСобран список банковских операций по договору (live address lane).\nСтрок отобрано: 341.\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\n5. 2022-07-11T12:00:00Z | Списание с расчетного счета 00000000014 от 11.07.2022 12:00:00 | 76.05 / 51 | 1120\n6. 2022-07-11T12:00:00Z | Списание с расчетного счета 00000000014 от 11.07.2022 12:00:00 | 76.05 / 51 | 1400\n7. 2022-07-11T12:00:00Z | Списание с расчетного счета 00000000014 от 11.07.2022 12:00:00 | 76.05 / 51 | 1400\n8. 2022-06-10T12:00:00Z | Списание с расчетного счета 00000000015 от 10.06.2022 12:00:00 | 91.02 / 51 | 990\n9. 2022-05-11T12:00:00Z | Списание с расчетного счета 00000000013 от 11.05.2022 12:00:00 | 66.04 / 51 | 180000\n10. 2022-05-10T12:00:00Z | Списание с расчетного счета 00000000012 от 10.05.2022 12:00:00 | 91.02 / 51 | 990\n11. 2022-04-15T12:00:02Z | Списание с расчетного счета 00000000011 от 15.04.2022 12:00:02 | 66.03 / 51 | 1000000\n12. 2022-04-15T12:00:01Z | Списание с расчетного счета 00000000010 от 15.04.2022 12:00:01 | 60.02 / 51 | 14790\n13. 2022-04-15T12:00:00Z | Списание с расчетного счета 00000000009 от 15.04.2022 12:00:00 | 76.05 / 51 | 1400\n14. 2022-04-15T12:00:00Z | Списание с расчетного счета 00000000009 от 15.04.2022 12:00:00 | 76.05 / 51 | 1400\n15. 2022-04-13T12:00:00Z | Поступление на расчетный счет 00000000004 от 13.04.2022 12:00:00 | 51 / 76.05 | 1200000\n16. 2022-03-10T12:00:00Z | Списание с расчетного счета 00000000008 от 10.03.2022 12:00:00 | 91.02 / 51 | 990\n17. 2022-02-14T12:00:01Z | Списание с расчетного счета 00000000007 от 14.02.2022 12:00:01 | 76.05 / 51 | 1400\n18. 2022-02-14T12:00:00Z | Списание с расчетного счета 00000000006 от 14.02.2022 12:00:00 | 91.02 / 51 | 990\n19. 2022-01-25T12:00:00Z | Списание с расчетного счета 00000000005 от 25.01.2022 12:00:00 | 68.1 / 51 | 3000\n20. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 217415\n21. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 114640\n22. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 659320\n23. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 109610\n24. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 162300\n25. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 990830\n26. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 302560\n27. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 105310\n28. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 615320\n29. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 144220\n30. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 56930\n31. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 50000\n32. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 425600\n33. 2022-01-20T12:00:03Z | Поступление на расчетный счет 00000000001 от 20.01.2022 12:00:03 | 51 / 60.02 | 119210\n34. 2022-01-20T12:00:03Z | Поступление на расчетный счет 00000000001 от 20.01.2022 12:00:03 | 51 / 60.02 | 180230\n35. 2022-01-20T12:00:03Z | Поступление на расчетный счет 00000000001 от 20.01.2022 12:00:03 | 51 / 60.02 | 144320\n36. 2022-01-20T12:00:03Z | Поступление на расчетный счет 00000000001 от 20.01.2022 12:00:03 | 51 / 60.02 | 320600\n37. 2022-01-20T12:00:03Z | Поступление на расчетный счет 00000000001 от 20.01.2022 12:00:03 | 51 / 60.02 | 126300\n38. 2022-01-20T12:00:02Z | Списание с расчетного счета 00000000004 от 20.01.2022 12:00:02 | 62.02 / 51 | 1808325\n39. 2022-01-20T12:00:02Z | Списание с расчетного счета 00000000004 от 20.01.2022 12:00:02 | 62.02 / 51 | 216600\n40. 2022-01-20T12:00:02Z | Списание с расчетного счета 00000000004 от 20.01.2022 12:00:02 | 62.02 / 51 | 104726\n41. 2022-01-20T12:00:01Z | Списание с расчетного счета 00000000003 от 20.01.2022 12:00:01 | 60.01 / 51 | 1705109.5\n42. 2022-01-20T12:00:00Z | Списание с расчетного счета 00000000002 от 20.01.2022 12:00:00 | 66.03 / 51 | 1000000\n43. 2022-01-19T12:00:00Z | Списание с расчетного счета 00000000001 от 19.01.2022 12:00:00 | 76.05 / 51 | 1400\n44. 2022-01-19T12:00:00Z | Списание с расчетного счета 00000000001 от 19.01.2022 12:00:00 | 76.05 / 51 | 1400\n45. 2021-12-01T12:00:00Z | Списание с расчетного счета 00000000196 от 01.12.2021 12:00:00 | 91.02 / 51 | 66.67\n46. 2021-11-10T12:00:07Z | Поступление на расчетный счет 00000000013 от 10.11.2021 12:00:07 | 51 / 62.02 | 20000\n47. 2021-11-10T12:00:06Z | Списание с расчетного счета 00000000195 от 10.11.2021 12:00:06 | 69.02.7 / 51 | 8632.1\n48. 2021-11-10T12:00:05Z | Списание с расчетного счета 00000000194 от 10.11.2021 12:00:05 | 69.03.1 / 51 | 3561.32\n49. 2021-11-10T12:00:04Z | Списание с расчетного счета 00000000193 от 10.11.2021 12:00:04 | 76.05 / 51 | 1400\n50. 2021-11-10T12:00:03Z | Списание с расчетного счета 00000000192 от 10.11.2021 12:00:03 | 91.02 / 51 | 990\n51. 2021-11-10T12:00:02Z | Списание с расчетного счета 00000000191 от 10.11.2021 12:00:02 | 69.01 / 51 | 370.97\n52. 2021-11-10T12:00:01Z | Списание с расчетного счета 00000000190 от 10.11.2021 12:00:01 | 69.11 / 51 | 141.94\n53. 2021-11-10T12:00:00Z | Списание с расчетного счета 00000000189 от 10.11.2021 12:00:00 | 91.02 / 51 | 8\n54. 2021-10-18T12:00:00Z | Списание с расчетного счета 00000000188 от 18.10.2021 12:00:00 | 76.05 / 51 | 1400\n55. 2021-10-12T12:00:04Z | Списание с расчетного счета 00000000187 от 12.10.2021 12:00:04 | 69.02.7 / 51 | 13326.28\n56. 2021-10-12T12:00:03Z | Списание с расчетного счета 00000000186 от 12.10.2021 12:00:03 | 68.01.1 / 51 | 9226\n57. 2021-10-12T12:00:02Z | Списание с расчетного счета 00000000185 от 12.10.2021 12:00:02 | 69.03.1 / 51 | 5153.69\n58. 2021-10-12T12:00:01Z | Списание с расчетного счета 00000000184 от 12.10.2021 12:00:01 | 69.01 / 51 | 741.94\n59. 2021-10-12T12:00:00Z | Списание с расчетного счета 00000000183 от 12.10.2021 12:00:00 | 69.11 / 51 | 205.12\n60. 2021-10-09T12:00:00Z | Списание с расчетного счета 00000000182 от 09.10.2021 12:00:00 | 91.02 / 51 | 990\n61. 2021-09-29T12:00:03Z | Поступление на расчетный счет 00000000012 от 29.09.2021 12:00:03 | 51 / 62.02 | 50000\n62. 2021-09-29T12:00:02Z | Списание с расчетного счета 00000000181 от 29.09.2021 12:00:02 | 70 / 51 | 34310\n63. 2021-09-29T12:00:01Z | Списание с расчетного счета 00000000180 от 29.09.2021 12:00:01 | 68.01.1 / 51 | 9503\n64. 2021-09-29T12:00:00Z | Списание с расчетного счета 00000000179 от 29.09.2021 12:00:00 | 91.02 / 51 | 171.55\n65. 2021-09-14T12:00:01Z | Списание с расчетного счета 00000000178 от 14.09.2021 12:00:01 | 70 / 51 | 29200\n66. 2021-09-14T12:00:00Z | Списание с расчетного счета 00000000177 от 14.09.2021 12:00:00 | 91.02 / 51 | 146\n67. 2021-09-09T12:00:00Z | Списание с расчетного счета 00000000176 от 09.09.2021 12:00:00 | 91.02 / 51 | 990\n68. 2021-09-07T12:00:05Z | Списание с расчетного счета 00000000175 от 07.09.2021 12:00:05 | 69.02.7 / 51 | 13830.84\n69. 2021-09-07T12:00:04Z | Списание с расчетного счета 00000000174 от 07.09.2021 12:00:04 | 69.03.1 / 51 | 5405.97\n70. 2021-09-07T12:00:03Z | Списание с расчетного счета 00000000173 от 07.09.2021 12:00:03 | 68.01.1 / 51 | 3830\n71. 2021-09-07T12:00:02Z | Списание с расчетного счета 00000000172 от 07.09.2021 12:00:02 | 76.05 / 51 | 1400\n72. 2021-09-07T12:00:01Z | Списание с расчетного счета 00000000171 от 07.09.2021 12:00:01 | 69.01 / 51 | 741.92\n73. 2021-09-07T12:00:00Z | Списание с расчетного счета 00000000170 от 07.09.2021 12:00:00 | 69.11 / 51 | 215.22\n74. 2021-08-31T12:00:04Z | Поступление на расчетный счет 00000000011 от 31.08.2021 12:00:04 | 51 / 62.02 | 120500\n75. 2021-08-31T12:00:03Z | Списание с расчетного счета 00000000169 от 31.08.2021 12:00:03 | 70 / 51 | 34642.18\n76. 2021-08-31T12:00:02Z | Списание с расчетного счета 00000000168 от 31.08.2021 12:00:02 | 70 / 51 | 33613.36\n77. 2021-08-31T12:00:01Z | Списание с расчетного счета 00000000167 от 31.08.2021 12:00:01 | 68.01.1 / 51 | 10199\n78. 2021-08-31T12:00:00Z | Списание с расчетного счета 00000000166 от 31.08.2021 12:00:00 | 91.02 / 51 | 341.28\n79. 2021-08-13T12:00:00Z | Списание с расчетного счета 00000000165 от 13.08.2021 12:00:00 | 76.05 / 51 | 1400\n80. 2021-08-12T12:00:02Z | Списание с расчетного счета 00000000164 от 12.08.2021 12:00:02 | 70 / 51 | 25363.04\n81. 2021-08-12T12:00:01Z | Списание с расчетного счета 00000000163 от 12.08.2021 12:00:01 | 68.01.1 / 51 | 3790\n82. 2021-08-12T12:00:00Z | Списание с расчетного счета 00000000162 от 12.08.2021 12:00:00 | 91.02 / 51 | 126.82\n83. 2021-08-11T12:00:00Z | Списание с расчетного счета 00000000160 от 11.08.2021 12:00:00 | 66.04 / 51 | 6410.96\n84. 2021-08-09T12:00:00Z | Списание с расчетного счета 00000000161 от 09.08.2021 12:00:00 | 91.02 / 51 | 990\n85. 2021-08-06T12:00:03Z | Списание с расчетного счета 00000000159 от 06.08.2021 12:00:03 | 69.02.7 / 51 | 16268.03\n86. 2021-08-06T12:00:02Z | Списание с расчетного счета 00000000158 от 06.08.2021 12:00:02 | 69.03.1 / 51 | 6624.56\n87. 2021-08-06T12:00:01Z | Списание с расчетного счета 00000000157 от 06.08.2021 12:00:01 | 69.01 / 51 | 741.96\n88. 2021-08-06T12:00:00Z | Списание с расчетного счета 00000000156 от 06.08.2021 12:00:00 | 69.11 / 51 | 263.96\n89. 2021-08-05T12:00:05Z | Списание с расчетного счета 00000000155 от 05.08.2021 12:00:05 | 68.04.1 / 51 | 125\n90. 2021-08-05T12:00:04Z | Списание с расчетного счета 00000000154 от 05.08.2021 12:00:04 | 68.04.1 / 51 | 3449\n91. 2021-08-05T12:00:03Z | Списание с расчетного счета 00000000153 от 05.08.2021 12:00:03 | 68.04.1 / 51 | 607\n92. 2021-08-05T12:00:02Z | Списание с расчетного счета 00000000152 от 05.08.2021 12:00:02 | 69.02.7 / 51 | 55.77\n93. 2021-08-05T12:00:01Z | Списание с расчетного счета 00000000151 от 05.08.2021 12:00:01 | 69.03.1 / 51 | 1\n94. 2021-08-05T12:00:00Z | Списание с расчетного счета 00000000150 от 05.08.2021 12:00:00 | 69.01 / 51 | 0.15\n95. 2021-07-29T12:00:02Z | Списание с расчетного счета 00000000149 от 29.07.2021 12:00:02 | 70 / 51 | 34310\n96. 2021-07-29T12:00:01Z | Списание с расчетного счета 00000000148 от 29.07.2021 12:00:01 | 68.01.1 / 51 | 9490\n97. 2021-07-29T12:00:00Z | Списание с расчетного счета 00000000147 от 29.07.2021 12:00:00 | 91.02 / 51 | 171.55\n98. 2021-07-16T12:00:00Z | Списание с расчетного счета 00000000146 от 16.07.2021 12:00:00 | 76.05 / 51 | 1400\n99. 2021-07-14T12:00:01Z | Списание с расчетного счета 00000000145 от 14.07.2021 12:00:01 | 70 / 51 | 29200\n100. 2021-07-14T12:00:00Z | Списание с расчетного счета 00000000144 от 14.07.2021 12:00:00 | 91.02 / 51 | 146\n101. 2021-07-12T12:00:03Z | Списание с расчетного счета 00000000143 от 12.07.2021 12:00:03 | 69.02.7 / 51 | 15370.08\n102. 2021-07-12T12:00:02Z | Списание с расчетного счета 00000000142 от 12.07.2021 12:00:02 | 69.03.1 / 51 | 6177.6\n103. 2021-07-12T12:00:01Z | Списание с расчетного счета 00000000141 от 12.07.2021 12:00:01 | 69.01 / 51 | 741.96\n104. 2021-07-12T12:00:00Z | Списание с расчетного счета 00000000140 от 12.07.2021 12:00:00 | 69.11 / 51 | 246\n105. 2021-07-09T12:00:03Z | Списание с расчетного счета 00000000139 от 09.07.2021 12:00:03 | 70 / 51 | 51312.53\n106. 2021-07-09T12:00:02Z | Списание с расчетного счета 00000000138 от 09.07.2021 12:00:02 | 68.01.1 / 51 | 7667\n107. 2021-07-09T12:00:01Z | Списание с расчетного счета 00000000137 от 09.07.2021 12:00:01 | 91.02 / 51 | 990\n108. 2021-07-09T12:00:00Z | Списание с расчетного счета 00000000136 от 09.07.2021 12:00:00 | 91.02 / 51 | 256.56\n109. 2021-07-05T12:00:01Z | Списание с расчетного счета 00000000135 от 05.07.2021 12:00:01 | 60.02 / 51 | 302560\n110. 2021-07-05T12:00:00Z | Списание с расчетного счета 00000000134 от 05.07.2021 12:00:00 | 91.02 / 51 | 1401.37\n111. 2021-06-29T12:00:03Z | Списание с расчетного счета 00000000133 от 29.06.2021 12:00:03 | 70 / 51 | 34310\n112. 2021-06-29T12:00:02Z | Списание с расчетного счета 00000000132 от 29.06.2021 12:00:02 | 70 / 51 | 23500\n113. 2021-06-29T12:00:01Z | Списание с расчетного счета 00000000131 от 29.06.2021 12:00:01 | 68.01.1 / 51 | 15990\n114. 2021-06-29T12:00:00Z | Списание с расчетного счета 00000000130 от 29.06.2021 12:00:00 | 91.02 / 51 | 289.05\n115. 2021-06-22T12:00:00Z | Поступление на расчетный счет 00000000010 от 22.06.2021 12:00:00 | 51 / 62.02 | 498630\n116. 2021-06-16T12:00:00Z | Списание с расчетного счета 00000000129 от 16.06.2021 12:00:00 | 60.02 / 51 | 105310\n117. 2021-06-15T12:00:03Z | Списание с расчетного счета 00000000128 от 15.06.2021 12:00:03 | 70 / 51 | 29200\n118. 2021-06-15T12:00:02Z | Списание с расчетного счета 00000000127 от 15.06.2021 12:00:02 | 70 / 51 | 20000\n119. 2021-06-15T12:00:01Z | Списание с расчетного счета 00000000126 от 15.06.2021 12:00:01 | 76.05 / 51 | 1400\n120. 2021-06-15T12:00:00Z | Списание с расчетного счета 00000000125 от 15.06.2021 12:00:00 | 91.02 / 51 | 246\n121. 2021-06-11T12:00:01Z | Списание с расчетного счета 00000000124 от 11.06.2021 12:00:01 | 60.02 / 51 | 119210\n122. 2021-06-11T12:00:00Z | Списание с расчетного счета 00000000123 от 11.06.2021 12:00:00 | 91.02 / 51 | 1000\n123. 2021-06-09T12:00:05Z | Поступление на расчетный счет 00000000009 от 09.06.2021 12:00:05 | 51 / 62.02 | 418960\n124. 2021-06-09T12:00:04Z | Списание с расчетного счета 00000000122 от 09.06.2021 12:00:04 | 69.02.7 / 51 | 15370.08\n125. 2021-06-09T12:00:03Z | Списание с расчетного счета 00000000121 от 09.06.2021 12:00:03 | 69.03.1 / 51 | 6175.08\n126. 2021-06-09T12:00:02Z | Списание с расчетного счета 00000000120 от 09.06.2021 12:00:02 | 91.02 / 51 | 990\n127. 2021-06-09T12:00:01Z | Списание с расчетного счета 00000000119 от 09.06.2021 12:00:01 | 69.01 / 51 | 741.92\n128. 2021-06-09T12:00:00Z | Списание с расчетного счета 00000000118 от 09.06.2021 12:00:00 | 69.11 / 51 | 246\n129. 2021-05-31T12:00:03Z | Списание с расчетного счета 00000000117 от 31.05.2021 12:00:03 | 70 / 51 | 34310\n130. 2021-05-31T12:00:02Z | Списание с расчетного счета 00000000116 от 31.05.2021 12:00:02 | 70 / 51 | 23500\n131. 2021-05-31T12:00:01Z | Списание с расчетного счета 00000000115 от 31.05.2021 12:00:01 | 68.01.1 / 51 | 15990\n132. 2021-05-31T12:00:00Z | Списание с расчетного счета 00000000114 от 31.05.2021 12:00:00 | 91.02 / 51 | 289.05\n133. 2021-05-19T12:00:00Z | Списание с расчетного счета 00000000113 от 19.05.2021 12:00:00 | 76.05 / 51 | 1400\n134. 2021-05-18T12:00:00Z | Списание с расчетного счета 00000000112 от 18.05.2021 12:00:00 | 60.02 / 51 | 180230\n135. 2021-05-13T00:00:06Z | Списание с расчетного счета 00000000110 от 13.05.2021 0:00:06 | 70 / 51 | 29200\n136. 2021-05-13T00:00:05Z | Списание с расчетного счета 00000000109 от 13.05.2021 0:00:05 | 70 / 51 | 20000\n137. 2021-05-13T00:00:04Z | Списание с расчетного счета 00000000108 от 13.05.2021 0:00:04 | 69.02.7 / 51 | 15370.08\n138. 2021-05-13T00:00:03Z | Списание с расчетного счета 00000000107 от 13.05.2021 0:00:03 | 69.03.1 / 51 | 6175.08\n139. 2021-05-13T00:00:02Z | Списание с расчетного счета 00000000106 от 13.05.2021 0:00:02 | 69.01 / 51 | 741.92\n140. 2021-05-13T00:00:01Z | Списание с расчетного счета 00000000105 от 13.05.2021 0:00:01 | 69.11 / 51 | 246\n141. 2021-05-13T00:00:00Z | Списание с расчетного счета 00000000104 от 13.05.2021 0:00:00 | 91.02 / 51 | 246\n142. 2021-05-09T12:00:00Z | Списание с расчетного счета 00000000111 от 09.05.2021 12:00:00 | 91.02 / 51 | 990\n143. 2021-04-29T12:00:01Z | Списание с расчетного счета 00000000103 от 29.04.2021 12:00:01 | 91.02 / 51 | 8\n144. 2021-04-29T12:00:00Z | Списание с расчетного счета 00000000102 от 29.04.2021 12:00:00 | 60.02 / 51 | 217415\n145. 2021-04-28T12:00:08Z | Поступление на расчетный счет 00000000008 от 28.04.2021 12:00:08 | 51 / 62.02 | 564300\n146. 2021-04-28T12:00:07Z | Списание с расчетного счета 00000000101 от 28.04.2021 12:00:07 | 60.02 / 51 | 114640\n147. 2021-04-28T12:00:06Z | Списание с расчетного счета 00000000100 от 28.04.2021 12:00:06 | 60.02 / 51 | 72000\n148. 2021-04-28T12:00:05Z | Списание с расчетного счета 00000000099 от 28.04.2021 12:00:05 | 70 / 51 | 34310\n149. 2021-04-28T12:00:04Z | Списание с расчетного счета 00000000098 от 28.04.2021 12:00:04 | 70 / 51 | 23500\n150. 2021-04-28T12:00:03Z | Списание с расчетного счета 00000000097 от 28.04.2021 12:00:03 | 68.01.1 / 51 | 15990\n151. 2021-04-28T12:00:02Z | Списание с расчетного счета 00000000096 от 28.04.2021 12:00:02 | 91.02 / 51 | 289.05\n152. 2021-04-28T12:00:01Z | Списание с расчетного счета 00000000095 от 28.04.2021 12:00:01 | 91.02 / 51 | 37\n153. 2021-04-28T12:00:00Z | Списание с расчетного счета 00000000094 от 28.04.2021 12:00:00 | 91.02 / 51 | 8\n154. 2021-04-27T12:00:01Z | Списание с расчетного счета 00000000093 от 27.04.2021 12:00:01 | 60.02 / 51 | 659320\n155. 2021-04-27T12:00:00Z | Списание с расчетного счета 00000000092 от 27.04.2021 12:00:00 | 91.02 / 51 | 8\n156. 2021-04-26T12:00:02Z | Списание с расчетного счета 00000000091 от 26.04.2021 12:00:02 | 60.02 / 51 | 109610\n157. 2021-04-26T12:00:01Z | Списание с расчетного счета 00000000090 от 26.04.2021 12:00:01 | 68.02 / 51 | 10010\n158. 2021-04-26T12:00:00Z | Списание с расчетного счета 00000000089 от 26.04.2021 12:00:00 | 91.02 / 51 | 8\n159. 2021-04-22T12:00:00Z | Поступление на расчетный счет 00000000007 от 22.04.2021 12:00:00 | 51 / 62.02 | 982420\n160. 2021-04-19T12:00:01Z | Списание с расчетного счета 00000000088 от 19.04.2021 12:00:01 | 60.02 / 51 | 162300\n161. 2021-04-19T12:00:00Z | Списание с расчетного счета 00000000087 от 19.04.2021 12:00:00 | 91.02 / 51 | 8\n162. 2021-04-16T12:00:00Z | Списание с расчетного счета 00000000086 от 16.04.2021 12:00:00 | 76.05 / 51 | 1400\n163. 2021-04-13T12:00:11Z | Поступление на расчетный счет 00000000006 от 13.04.2021 12:00:11 | 51 / 62.02 | 1882400\n164. 2021-04-13T12:00:10Z | Списание с расчетного счета 00000000085 от 13.04.2021 12:00:10 | 66.03 / 51 | 1000000\n165. 2021-04-13T12:00:09Z | Списание с расчетного счета 00000000084 от 13.04.2021 12:00:09 | 60.02 / 51 | 615320\n166. 2021-04-13T12:00:08Z | Списание с расчетного счета 00000000083 от 13.04.2021 12:00:08 | 60.02 / 51 | 144320\n167. 2021-04-13T12:00:07Z | Списание с расчетного счета 00000000082 от 13.04.2021 12:00:07 | 70 / 51 | 29200\n168. 2021-04-13T12:00:06Z | Списание с расчетного счета 00000000081 от 13.04.2021 12:00:06 | 70 / 51 | 20000\n169. 2021-04-13T12:00:05Z | Списание с расчетного счета 00000000080 от 13.04.2021 12:00:05 | 66.04 / 51 | 19139.34\n170. 2021-04-13T12:00:04Z | Списание с расчетного счета 00000000079 от 13.04.2021 12:00:04 | 69.02.7 / 51 | 15370.08\n171. 2021-04-13T12:00:03Z | Списание с расчетного счета 00000000078 от 13.04.2021 12:00:03 | 69.03.1 / 51 | 6175.08\n172. 2021-04-13T12:00:02Z | Списание с расчетного счета 00000000077 от 13.04.2021 12:00:02 | 91.02 / 51 | 246\n173. 2021-04-13T12:00:01Z | Списание с расчетного счета 00000000076 от 13.04.2021 12:00:01 | 69.01 / 51 | 741.94\n174. 2021-04-13T12:00:00Z | Списание с расчетного счета 00000000075 от 13.04.2021 12:00:00 | 69.11 / 51 | 246\n175. 2021-04-09T12:00:00Z | Списание с расчетного счета 00000000074 от 09.04.2021 12:00:00 | 91.02 / 51 | 2100\n176. 2021-04-06T12:00:01Z | Списание с расчетного счета 00000000073 от 06.04.2021 12:00:01 | 60.02 / 51 | 11900\n177. 2021-04-06T12:00:00Z | Списание с расчетного счета 00000000072 от 06.04.2021 12:00:00 | 91.02 / 51 | 37\n178. 2021-03-31T12:00:05Z | Списание с расчетного счета 00000000071 от 31.03.2021 12:00:05 | 70 / 51 | 34310\n179. 2021-03-31T12:00:04Z | Списание с расчетного счета 00000000070 от 31.03.2021 12:00:04 | 70 / 51 | 23500\n180. 2021-03-31T12:00:03Z | Списание с расчетного счета 00000000069 от 31.03.2021 12:00:03 | 68.01.1 / 51 | 15990\n181. 2021-03-31T12:00:02Z | Списание с расчетного счета 00000000068 от 31.03.2021 12:00:02 | 91.02 / 51 | 289.05\n182. 2021-03-31T12:00:01Z | Списание с расчетного счета 00000000067 от 31.03.2021 12:00:01 | 70 / 51 | 50\n183. 2021-03-31T12:00:00Z | Списание с расчетного счета 00000000066 от 31.03.2021 12:00:00 | 91.02 / 51 | 37\n184. 2021-03-25T12:00:02Z | Поступление на расчетный счет 00000000005 от 25.03.2021 12:00:02 | 51 / 62.02 | 644315\n185. 2021-03-25T12:00:01Z | Списание с расчетного счета 00000000065 от 25.03.2021 12:00:01 | 60.02 / 51 | 990830\n186. 2021-03-25T12:00:00Z | Списание с расчетного счета 00000000064 от 25.03.2021 12:00:00 | 91.02 / 51 | 8\n187. 2021-03-24T12:00:03Z | Поступление на расчетный счет 00000000004 от 24.03.2021 12:00:03 | 51 / 62.02 | 1219990\n188. 2021-03-24T12:00:02Z | Списание с расчетного счета 00000000062 от 24.03.2021 12:00:02 | 60.01 / 51 | 530490\n189. 2021-03-24T12:00:01Z | Списание с расчетного счета 00000000061 от 24.03.2021 12:00:01 | 60.02 / 51 | 144220\n190. 2021-03-24T12:00:00Z | Списание с расчетного счета 00000000060 от 24.03.2021 12:00:00 | 91.02 / 51 | 37\n191. 2021-03-23T12:00:01Z | Списание с расчетного счета 00000000058 от 23.03.2021 12:00:01 | 66.04 / 51 | 37377.05\n192. 2021-03-23T12:00:00Z | Списание с расчетного счета 00000000057 от 23.03.2021 12:00:00 | 66.03 / 51 | 600000\n193. 2021-03-22T12:00:03Z | Списание с расчетного счета 00000000197 от 22.03.2021 12:00:03 | 66.02 / 51 | 31857.79\n194. 2021-03-22T12:00:01Z | Списание с расчетного счета 00000000063 от 22.03.2021 12:00:01 | 66.02 / 51 | 1902.12\n195. 2021-03-22T12:00:00Z | Списание с расчетного счета 00000000059 от 22.03.2021 12:00:00 | 66.01 / 51 | 945302.69\n196. 2021-03-19T12:00:00Z | Списание с расчетного счета 00000000055 от 19.03.2021 12:00:00 | 76.05 / 51 | 1400\n197. 2021-03-18T12:00:00Z | Поступление на расчетный счет 00000000003 от 18.03.2021 12:00:00 | 51 / 62.02 | 1425310\n198. 2021-03-16T12:00:00Z | Списание с расчетного счета 00000000056 от 16.03.2021 12:00:00 | 91.02 / 51 | 60\n199. 2021-03-15T12:00:01Z | Списание с расчетного счета 00000000054 от 15.03.2021 12:00:01 | 66.02 / 51 | 7981.6\n200. 2021-03-15T12:00:00Z | Списание с расчетного счета 00000000053 от 15.03.2021 12:00:00 | 66.01 / 51 | 47921.4\n201. 2021-03-12T12:00:03Z | Поступление на расчетный счет 00000000002 от 12.03.2021 12:00:03 | 51 / 62.02 | 214600\n202. 2021-03-12T12:00:02Z | Списание с расчетного счета 00000000052 от 12.03.2021 12:00:02 | 70 / 51 | 29200\n203. 2021-03-12T12:00:01Z | Списание с расчетного счета 00000000051 от 12.03.2021 12:00:01 | 70 / 51 | 20000\n204. 2021-03-12T12:00:00Z | Списание с расчетного счета 00000000050 от 12.03.2021 12:00:00 | 91.02 / 51 | 246\n205. 2021-03-10T12:00:04Z | Списание с расчетного счета 00000000049 от 10.03.2021 12:00:04 | 60.02 / 51 | 56930\n206. 2021-03-10T12:00:03Z | Списание с расчетного счета 00000000047 от 10.03.2021 12:00:03 | 69.03.1 / 51 | 6175.08\n207. 2021-03-10T12:00:02Z | Списание с расчетного счета 00000000046 от 10.03.2021 12:00:02 | 69.11 / 51 | 246\n208. 2021-03-10T12:00:01Z | Списание с расчетного счета 00000000045 от 10.03.2021 12:00:01 | 69.01 / 51 | 741.94\n209. 2021-03-10T12:00:00Z | Списание с расчетного счета 00000000044 от 10.03.2021 12:00:00 | 91.02 / 51 | 2100\n210. 2021-03-10T00:00:00Z | Списание с расчетного счета 00000000048 от 10.03.2021 0:00:00 | 69.02.7 / 51 | 15370.08\n211. 2021-02-26T12:00:05Z | Списание с расчетного счета 00000000043 от 26.02.2021 12:00:05 | 60.02 / 51 | 50000\n212. 2021-02-26T12:00:04Z | Списание с расчетного счета 00000000042 от 26.02.2021 12:00:04 | 70 / 51 | 34310\n213. 2021-02-26T12:00:03Z | Списание с расчетного счета 00000000041 от 26.02.2021 12:00:03 | 70 / 51 | 23500\n214. 2021-02-26T12:00:02Z | Списание с расчетного счета 00000000040 от 26.02.2021 12:00:02 | 68.01.1 / 51 | 15990\n215. 2021-02-26T12:00:01Z | Списание с расчетного счета 00000000039 от 26.02.2021 12:00:01 | 91.02 / 51 | 289.05\n216. 2021-02-26T12:00:00Z | Списание с расчетного счета 00000000038 от 26.02.2021 12:00:00 | 70 / 51 | 50\n217. 2021-02-20T12:00:00Z | Списание с расчетного счета 00000000037 от 20.02.2021 12:00:00 | 60.02 / 51 | 320600\n218. 2021-02-19T12:00:01Z | Поступление на расчетный счет 00000000001 от 19.02.2021 12:00:01 | 51 / 62.02 | 518600\n219. 2021-02-19T12:00:00Z | Списание с расчетного счета 00000000036 от 19.02.2021 12:00:00 | 76.05 / 51 | 1400\n220. 2021-02-16T12:00:00Z | Списание с расчетного счета 00000000035 от 16.02.2021 12:00:00 | 91.02 / 51 | 60\n221. 2021-02-15T12:00:01Z | Списание с расчетного счета 00000000034 от 15.02.2021 12:00:01 | 66.02 / 51 | 27265.44\n222. 2021-02-15T12:00:00Z | Списание с расчетного счета 00000000033 от 15.02.2021 12:00:00 | 66.01 / 51 | 2137760.56\n223. 2021-02-12T12:00:02Z | Списание с расчетного счета 00000000031 от 12.02.2021 12:00:02 | 70 / 51 | 29200\n224. 2021-02-12T12:00:01Z | Списание с расчетного счета 00000000030 от 12.02.2021 12:00:01 | 70 / 51 | 20000\n225. 2021-02-12T12:00:00Z | Списание с расчетного счета 00000000029 от 12.02.2021 12:00:00 | 91.02 / 51 | 246\n226. 2021-02-09T12:00:00Z | Списание с расчетного счета 00000000032 от 09.02.2021 12:00:00 | 91.02 / 51 | 2100\n227. 2021-02-02T12:00:03Z | Списание с расчетного счета 00000000028 от 02.02.2021 12:00:03 | 60.02 / 51 | 425600\n228. 2021-02-02T12:00:02Z | Списание с расчетного счета 00000000027 от 02.02.2021 12:00:02 | 66.04 / 51 | 77854.1\n229. 2021-02-02T12:00:01Z | Списание с расчетного счета 00000000026 от 02.02.2021 12:00:01 | 66.04 / 51 | 28196.72\n230. 2021-02-02T12:00:00Z | Списание с расчетного счета 00000000025 от 02.02.2021 12:00:00 | 91.02 / 51 | 37\n231. 2021-01-29T12:00:03Z | Списание с расчетного счета 00000000024 от 29.01.2021 12:00:03 | 69.02.7 / 51 | 10720.08\n232. 2021-01-29T12:00:02Z | Списание с расчетного счета 00000000023 от 29.01.2021 12:00:02 | 69.03.1 / 51 | 3850.58\n233. 2021-01-29T12:00:01Z | Списание с расчетного счета 00000000022 от 29.01.2021 12:00:01 | 69.01 / 51 | 741.94\n234. 2021-01-29T12:00:00Z | Списание с расчетного счета 00000000021 от 29.01.2021 12:00:00 | 69.11 / 51 | 153\n235. 2021-01-28T12:00:02Z | Списание с расчетного счета 00000000020 от 28.01.2021 12:00:02 | 60.02 / 51 | 126300\n236. 2021-01-28T12:00:01Z | Списание с расчетного счета 00000000019 от 28.01.2021 12:00:01 | 91.02 / 51 | 179.78\n237. 2021-01-28T12:00:00Z | Списание с расчетного счета 00000000016 от 28.01.2021 12:00:00 | 70 / 51 | 17155\n238. 2021-01-28T00:00:00Z | Списание с расчетного счета 00000000018 от 28.01.2021 0:00:00 | 68.01.1 / 51 | 9945\n239. 2021-01-28T00:00:00Z | Списание с расчетного счета 00000000017 от 28.01.2021 0:00:00 | 70 / 51 | 18800\n240. 2021-01-28T00:00:00Z | Списание с расчетного счета 00000000015 от 28.01.2021 0:00:00 | 70 / 51 | 50\n241. 2021-01-25T12:00:00Z | Списание с расчетного счета 00000000014 от 25.01.2021 12:00:00 | 68.02 / 51 | 88003\n242. 2021-01-18T12:00:04Z | Списание с расчетного счета 00000000013 от 18.01.2021 12:00:04 | 70 / 51 | 16000\n243. 2021-01-18T12:00:03Z | Списание с расчетного счета 00000000012 от 18.01.2021 12:00:03 | 70 / 51 | 14600\n244. 2021-01-18T12:00:02Z | Списание с расчетного счета 00000000011 от 18.01.2021 12:00:02 | 91.02 / 51 | 2500\n245. 2021-01-18T12:00:01Z | Списание с расчетного счета 00000000010 от 18.01.2021 12:00:01 | 76.05 / 51 | 1400\n246. 2021-01-18T12:00:00Z | Списание с расчетного счета 00000000009 от 18.01.2021 12:00:00 | 91.02 / 51 | 153\n247. 2021-01-16T12:00:00Z | Списание с расчетного счета 00000000008 от 16.01.2021 12:00:00 | 91.02 / 51 | 60\n248. 2021-01-15T12:00:05Z | Списание с расчетного счета 00000000007 от 15.01.2021 12:00:05 | 66.02 / 51 | 28403.09\n249. 2021-01-15T12:00:04Z | Списание с расчетного счета 00000000006 от 15.01.2021 12:00:04 | 66.01 / 51 | 136622.91\n250. 2021-01-15T12:00:03Z | Списание с расчетного счета 00000000005 от 15.01.2021 12:00:03 | 69.02.7 / 51 | 10561.2\n251. 2021-01-15T12:00:02Z | Списание с расчетного счета 00000000004 от 15.01.2021 12:00:02 | 69.03.1 / 51 | 3849.26\n252. 2021-01-15T12:00:01Z | Списание с расчетного счета 00000000003 от 15.01.2021 12:00:01 | 69.01 / 51 | 703.54\n253. 2021-01-15T12:00:00Z | Списание с расчетного счета 00000000002 от 15.01.2021 12:00:00 | 69.11 / 51 | 153\n254. 2021-01-09T12:00:00Z | Списание с расчетного счета 00000000001 от 09.01.2021 12:00:00 | 91.02 / 51 | 2100\n255. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 51 / 62.02 | 3248300\n256. 2020-12-25T12:00:04Z | Списание с расчетного счета 00000000299 от 25.12.2020 12:00:04 | 91.02 / 51 | 179.78\n257. 2020-12-25T12:00:03Z | Списание с расчетного счета 00000000298 от 25.12.2020 12:00:03 | 68.01.1 / 51 | 9945\n258. 2020-12-25T12:00:02Z | Списание с расчетного счета 00000000297 от 25.12.2020 12:00:02 | 70 / 51 | 18800\n259. 2020-12-25T12:00:01Z | Списание с расчетного счета 00000000296 от 25.12.2020 12:00:01 | 70 / 51 | 17155\n260. 2020-12-25T12:00:00Z | Списание с расчетного счета 00000000295 от 25.12.2020 12:00:00 | 70 / 51 | 50\n261. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 51 / 62.02 | 216600\n262. 2020-12-16T16:20:52Z | Списание с расчетного счета 00000000294 от 16.12.2020 16:20:52 | 69.03.1 / 51 | 3849.26\n263. 2020-12-16T16:20:51Z | Списание с расчетного счета 00000000293 от 16.12.2020 16:20:51 | 91.02 / 51 | 60\n264. 2020-12-16T16:20:50Z | Списание с расчетного счета 00000000292 от 16.12.2020 16:20:50 | 69.02.7 / 51 | 10561.2\n265. 2020-12-16T16:20:27Z | Списание с расчетного счета 00000000291 от 16.12.2020 16:20:27 | 69.01 / 51 | 703.54\n266. 2020-12-16T16:20:06Z | Списание с расчетного счета 00000000290 от 16.12.2020 16:20:06 | 69.11 / 51 | 153\n267. 2020-12-15T11:13:41Z | Списание с расчетного счета 00000000289 от 15.12.2020 11:13:41 | 91.02 / 51 | 153\n268. 2020-12-15T11:13:40Z | Списание с расчетного счета 00000000288 от 15.12.2020 11:13:40 | 70 / 51 | 16000\n269. 2020-12-15T11:13:39Z | Списание с расчетного счета 00000000287 от 15.12.2020 11:13:39 | 70 / 51 | 14600\n270. 2020-12-15T11:13:38Z | Списание с расчетного счета 00000000286 от 15.12.2020 11:13:38 | 76.05 / 51 | 1400\n271. 2020-12-15T11:13:37Z | Списание с расчетного счета 00000000285 от 15.12.2020 11:13:37 | 66.02 / 51 | 28622.55\n272. 2020-12-15T11:13:21Z | Списание с расчетного счета 00000000284 от 15.12.2020 11:13:21 | 66.01 / 51 | 136403.45\n273. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 51 / 62.02 | 200000\n274. 2020-12-09T12:00:00Z | Списание с расчетного счета 00000000283 от 09.12.2020 12:00:00 | 91.02 / 51 | 2100\n275. 2020-11-30T12:00:07Z | Поступление на расчетный счет 00000000041 от 30.11.2020 12:00:07 | 51 / 62.02 | 38900\n276. 2020-11-30T12:00:06Z | Списание с расчетного счета 00000000282 от 30.11.2020 12:00:06 | 70 / 51 | 18800\n277. 2020-11-30T12:00:05Z | Списание с расчетного счета 00000000281 от 30.11.2020 12:00:05 | 70 / 51 | 17155\n278. 2020-11-30T12:00:04Z | Списание с расчетного счета 00000000280 от 30.11.2020 12:00:04 | 68.01.1 / 51 | 9945\n279. 2020-11-30T12:00:03Z | Списание с расчетного счета 00000000278 от 30.11.2020 12:00:03 | 70 / 51 | 50\n280. 2020-11-30T12:00:02Z | Списание с расчетного счета 00000000277 от 30.11.2020 12:00:02 | 91.02 / 51 | 37\n281. 2020-11-30T00:00:00Z | Списание с расчетного счета 00000000279 от 30.11.2020 0:00:00 | 91.02 / 51 | 179.78\n282. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 900000\n283. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 144749\n284. 2020-11-26T12:00:02Z | Списание с расчетного счета 00000000276 от 26.11.2020 12:00:02 | 60.01 / 51 | 524730.5\n285. 2020-11-26T12:00:02Z | Списание с расчетного счета 00000000276 от 26.11.2020 12:00:02 | 60.01 / 51 | 210770.5\n286. 2020-11-26T12:00:01Z | Списание с расчетного счета 00000000275 от 26.11.2020 12:00:01 | 66.03 / 51 | 400000\n287. 2020-11-26T12:00:00Z | Списание с расчетного счета 00000000274 от 26.11.2020 12:00:00 | 91.02 / 51 | 74\n288. 2020-11-23T12:00:01Z | Списание с расчетного счета 00000000273 от 23.11.2020 12:00:01 | 60.01 / 51 | 5429.5\n289. 2020-11-23T12:00:01Z | Списание с расчетного счета 00000000273 от 23.11.2020 12:00:01 | 60.01 / 51 | 63870.5\n290. 2020-11-23T12:00:00Z | Списание с расчетного счета 00000000272 от 23.11.2020 12:00:00 | 91.02 / 51 | 37\n291. 2020-11-19T12:00:04Z | Поступление на расчетный счет 00000000039 от 19.11.2020 12:00:04 | 51 / 62.02 | 1041800\n292. 2020-11-19T12:00:04Z | Поступление на расчетный счет 00000000039 от 19.11.2020 12:00:04 | 51 / 62.01 | 2278800\n293. 2020-11-19T12:00:03Z | Списание с расчетного счета 00000000271 от 19.11.2020 12:00:03 | 66.03 / 51 | 2335000\n294. 2020-11-19T12:00:02Z | Списание с расчетного счета 00000000270 от 19.11.2020 12:00:02 | 60.02 / 51 | 900000\n295. 2020-11-19T12:00:01Z | Списание с расчетного счета 00000000269 от 19.11.2020 12:00:01 | 91.02 / 51 | 37\n296. 2020-11-19T12:00:00Z | Списание с расчетного счета 00000000268 от 19.11.2020 12:00:00 | 91.02 / 51 | 8\n297. 2020-11-18T12:00:05Z | Поступление на расчетный счет 00000000038 от 18.11.2020 12:00:05 | 51 / 62.01 | 745300\n298. 2020-11-18T12:00:04Z | Поступление на расчетный счет 00000000037 от 18.11.2020 12:00:04 | 51 / 62.01 | 320000\n299. 2020-11-18T12:00:03Z | Списание с расчетного счета 00000000267 от 18.11.2020 12:00:03 | 60.02 / 51 | 144749\n300. 2020-11-18T12:00:03Z | Списание с расчетного счета 00000000267 от 18.11.2020 12:00:03 | 60.01 / 51 | 160000\n301. 2020-11-18T12:00:03Z | Списание с расчетного счета 00000000267 от 18.11.2020 12:00:03 | 60.01 / 51 | 389551\n302. 2020-11-18T12:00:02Z | Списание с расчетного счета 00000000266 от 18.11.2020 12:00:02 | 60.01 / 51 | 318600\n303. 2020-11-18T12:00:01Z | Списание с расчетного счета 00000000265 от 18.11.2020 12:00:01 | 76.05 / 51 | 1400\n304. 2020-11-18T12:00:00Z | Списание с расчетного счета 00000000264 от 18.11.2020 12:00:00 | 91.02 / 51 | 16\n305. 2020-11-16T16:08:52Z | Списание с расчетного счета 00000000263 от 16.11.2020 16:08:52 | 60.01 / 51 | 49298\n306. 2020-11-16T16:08:52Z | Списание с расчетного счета 00000000263 от 16.11.2020 16:08:52 | 60.01 / 51 | 3152\n307. 2020-11-16T16:08:51Z | Списание с расчетного счета 00000000262 от 16.11.2020 16:08:51 | 60.02 / 51 | 8700\n308. 2020-11-16T16:08:50Z | Списание с расчетного счета 00000000261 от 16.11.2020 16:08:50 | 91.02 / 51 | 60\n309. 2020-11-16T16:08:49Z | Списание с расчетного счета 00000000260 от 16.11.2020 16:08:49 | 66.01 / 51 | 165026\n310. 2020-11-13T12:00:03Z | Поступление на расчетный счет 00000000036 от 13.11.2020 12:00:03 | 51 / 62.01 | 313600\n311. 2020-11-13T12:00:02Z | Списание с расчетного счета 00000000258 от 13.11.2020 12:00:02 | 70 / 51 | 16000\n312. 2020-11-13T12:00:01Z | Списание с расчетного счета 00000000257 от 13.11.2020 12:00:01 | 70 / 51 | 14600\n313. 2020-11-13T12:00:00Z | Списание с расчетного счета 00000000256 от 13.11.2020 12:00:00 | 91.02 / 51 | 153\n314. 2020-11-13T00:00:00Z | Списание с расчетного счета 00000000259 от 13.11.2020 0:00:00 | 60.01 / 51 | 218400\n315. 2020-11-11T12:00:00Z | Списание с расчетного счета 00000000255 от 11.11.2020 12:00:00 | 66.04 / 51 | 19425.82\n316. 2020-11-10T15:39:13Z | Поступление на расчетный счет 00000000035 от 10.11.2020 15:39:13 | 51 / 62.02 | 328300\n317. 2020-11-09T12:00:00Z | Списание с расчетного счета 00000000253 от 09.11.2020 12:00:00 | 91.02 / 51 | 2100\n318. 2020-11-09T00:00:00Z | Списание с расчетного счета 00000000254 от 09.11.2020 0:00:00 | 60.01 / 51 | 151080\n319. 2020-10-27T12:00:01Z | Списание с расчетного счета 00000000252 от 27.10.2020 12:00:01 | 60.01 / 51 | 120000\n320. 2020-10-27T12:00:00Z | Списание с расчетного счета 00000000251 от 27.10.2020 12:00:00 | 70 / 51 | 50\n321. 2020-10-26T12:00:01Z | Списание с расчетного счета 00000000250 от 26.10.2020 12:00:01 | 68.02 / 51 | 4964\n322. 2020-10-26T12:00:00Z | Поступление на расчетный счет 00000000034 от 26.10.2020 12:00:00 | 51 / 62.02 | 175000\n323. 2020-10-20T12:00:00Z | Списание с расчетного счета 00000000248 от 20.10.2020 12:00:00 | 76.05 / 51 | 1400\n324. 2020-10-16T12:00:00Z | Списание с расчетного счета 00000000249 от 16.10.2020 12:00:00 | 91.02 / 51 | 60\n325. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n326. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53\n327. 2020-10-14T12:00:00Z | Поступление на расчетный счет 00000000033 от 14.10.2020 12:00:00 | 51 / 60.01 | 160000\n328. 2020-10-09T12:00:00Z | Списание с расчетного счета 00000000247 от 09.10.2020 12:00:00 | 91.02 / 51 | 2100\n329. 2020-10-01T12:00:00Z | Списание с расчетного счета 00000000244 от 01.10.2020 12:00:00 | 60.01 / 51 | 49460\n330. 2020-09-30T12:00:03Z | Списание с расчетного счета 00000000243 от 30.09.2020 12:00:03 | 60.01 / 51 | 30000\n331. 2020-09-30T12:00:02Z | Списание с расчетного счета 00000000242 от 30.09.2020 12:00:02 | 70 / 51 | 50\n332. 2020-09-29T12:00:00Z | Списание с расчетного счета 00000000240 от 29.09.2020 12:00:00 | 60.01 / 51 | 159400\n333. 2020-09-23T12:00:03Z | Списание с расчетного счета 00000000241 от 23.09.2020 12:00:03 | 91.02 / 51 | 60\n334. 2020-09-23T12:00:02Z | Списание с расчетного счета 00000000239 от 23.09.2020 12:00:02 | 69.03.1 / 51 | 12.58\n335. 2020-09-23T12:00:01Z | Списание с расчетного счета 00000000238 от 23.09.2020 12:00:01 | 68.02 / 51 | 54.27\n336. 2020-09-23T12:00:00Z | Списание с расчетного счета 00000000237 от 23.09.2020 12:00:00 | 68.02 / 51 | 41441\n337. 2020-09-15T12:00:01Z | Списание с расчетного счета 00000000236 от 15.09.2020 12:00:01 | 66.02 / 51 | 33053.64\n338. 2020-09-15T12:00:00Z | Списание с расчетного счета 00000000235 от 15.09.2020 12:00:00 | 66.01 / 51 | 131972.36\n339. 2020-09-14T12:00:04Z | Списание с расчетного счета 00000000234 от 14.09.2020 12:00:04 | 69.02.7 / 51 | 14973.39\n340. 2020-09-14T12:00:03Z | Списание с расчетного счета 00000000233 от 14.09.2020 12:00:03 | 69.03.1 / 51 | 6055.36\n341. 2020-09-14T12:00:02Z | Списание с расчетного счета 00000000232 от 14.09.2020 12:00:02 | 76.05 / 51 | 1400", + "assistant_reply_first_line": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "materialized_but_not_anchor_matched", + "match_failure_reason": "contract_anchor_not_matched_in_materialized_rows", + "rows_fetched": 1000, + "rows_matched": 341, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-85tSqsdQD6", + "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", + "anchor_not_matched_fallback_rows" + ], + "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": "19/15 в банковском учете" + }, + "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": "19/15 в банковском учете", + "anchor_value_resolved": "19/15 в банковском учете", + "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": "matched_non_empty", + "rows_fetched": 1000, + "raw_rows_received": 1000, + "rows_after_account_scope": 341, + "rows_after_recipe_filter": 0, + "rows_materialized": 341, + "rows_matched": 341, + "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": "d3PFEJo8K2wWNt", + "llm_decomposition_effective_message": "операции по договору 19/15 в банковском учете", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "bank ops by contract 19/15", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "d3PFEJo8K2wWNt", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "операции по договору 19/15 в банковском учете" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 55, + "id": "S055", + "question": "ёпт, покажи банк операции по дог 19/15", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-11-51-s055", + "status_code": 200, + "ok": true, + "elapsed_ms": 8130, + "reply_type": "factual", + "trace_id": "address-SJog3uFT64", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 1.\n1. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "assistant_reply_first_line": "Собран список банковских операций по договору (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 1, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-SJog3uFT64", + "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", + "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": "high", + "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": "19/15" + }, + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": 1, + "rows_materialized": 341, + "rows_matched": 1, + "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": "HTOpIpOL5b4_wh", + "llm_decomposition_effective_message": "покажи банковские операции по договору 19/15", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "покажи банк операции по договор 19/15", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "HTOpIpOL5b4_wh", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "покажи банковские операции по договору 19/15" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 56, + "id": "S056", + "question": "по контракту 19/15 платежки", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-11-51-s056", + "status_code": 200, + "ok": true, + "elapsed_ms": 7081, + "reply_type": "factual", + "trace_id": "address-s9XqH0NPkg", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 1.\n1. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "assistant_reply_first_line": "Собран список банковских операций по договору (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 1, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-s9XqH0NPkg", + "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", + "bank_ops_by_contract_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_contract", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "contract": "19/15" + }, + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": 1, + "rows_materialized": 341, + "rows_matched": 1, + "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": "n88v04LknTdsc6", + "llm_decomposition_effective_message": "показать платежи по контракту 19/15", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "по контракту 19/15 платежки", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "n88v04LknTdsc6", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "показать платежи по контракту 19/15" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 57, + "id": "S057", + "question": "покажи сальдо по счету 60 за 2020", + "session": "chain_balance_60", + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-11-51-chain_balance_60", + "status_code": 200, + "ok": true, + "elapsed_ms": 6944, + "reply_type": "factual", + "trace_id": "address-xzsycMY1r-", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 138, + "rows_matched": 138, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-xzsycMY1r-", + "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-01-01", + "period_to": "2020-12-31", + "as_of_date": "2020-12-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": 138, + "raw_rows_received": 138, + "rows_after_account_scope": 138, + "rows_after_recipe_filter": 138, + "rows_materialized": 138, + "rows_matched": 138, + "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": "PgpuajA3_s9Pe8", + "llm_decomposition_effective_message": "Показать сальдо по счету 60 за период 2020.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "покажи сальдо по счету 60 за 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "PgpuajA3_s9Pe8", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Показать сальдо по счету 60 за период 2020." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 58, + "id": "S058", + "question": "а теперь только май 2020", + "session": "chain_balance_60", + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-11-51-chain_balance_60", + "status_code": 200, + "ok": true, + "elapsed_ms": 983, + "reply_type": "factual", + "trace_id": "address-Q_Y_SqYg9h", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 6, + "rows_matched": 6, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-Q_Y_SqYg9h", + "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", + "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, + "period_from": "2020-05-01", + "period_to": "2020-05-31", + "as_of_date": "2020-05-31", + "account": "60" + }, + "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": "а теперь только май 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 + }, + "error_code": null, + "error_message": null + }, + { + "index": 59, + "id": "S059", + "question": "ок, теперь 2020.05", + "session": "chain_balance_60", + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-11-51-chain_balance_60", + "status_code": 200, + "ok": true, + "elapsed_ms": 1018, + "reply_type": "factual", + "trace_id": "address-RepC280uN_", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 6, + "rows_matched": 6, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-RepC280uN_", + "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", + "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, + "period_from": "2020-05-01", + "period_to": "2020-05-31", + "as_of_date": "2020-05-31", + "account": "60" + }, + "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": "ок, теперь 2020.05", + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "sanitized_user_message": "ок, теперь 2020.05", + "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 + }, + "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_Nightly_stress_102_20-11-51-chain_balance_60", + "status_code": 200, + "ok": true, + "elapsed_ms": 1030, + "reply_type": "factual", + "trace_id": "address-nF_ZtTddSi", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 6, + "rows_matched": 6, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-nF_ZtTddSi", + "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", + "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, + "period_from": "2020-07-01", + "period_to": "2020-07-31", + "as_of_date": "2020-07-31", + "account": "60" + }, + "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": "теперь на 2020-07-31", + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "sanitized_user_message": "теперь на 2020-07-31", + "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 + }, + "error_code": null, + "error_message": null + }, + { + "index": 61, + "id": "X001", + "question": "свк доки кинь за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-11-51-x001", + "status_code": 200, + "ok": true, + "elapsed_ms": 10366, + "reply_type": "factual", + "trace_id": "address-PCAlZVVD0X", + "assistant_reply": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.\nСобран список документов по контрагенту (live address lane).\nСтрок отобрано: 5.\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-16T16:20:52Z | Списание с расчетного счета 00000000294 от 16.12.2020 16:20:52 | 0 / 0 | 3849.26 | аналитика: УФК по г. Москве (для ГУ - Отделения ПФР по г. Москве и МО)\n4. 2020-12-16T16:20:51Z | Списание с расчетного счета 00000000293 от 16.12.2020 16:20:51 | 0 / 0 | 60 | аналитика: СБЕРБАНК, ПАО\n5. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "assistant_reply_first_line": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "rows_fetched": 20, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-PCAlZVVD0X", + "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", + "anchor_not_matched_fallback_rows" + ], + "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": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "mcp_call_status": "matched_non_empty", + "rows_fetched": 20, + "raw_rows_received": 20, + "rows_after_account_scope": 5, + "rows_after_recipe_filter": 0, + "rows_materialized": 5, + "rows_matched": 5, + "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": "gLWH0gN99sz3LH", + "llm_decomposition_effective_message": "Показать сводные документы за 2020 год.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "свк доки кинь за 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "gLWH0gN99sz3LH", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Показать сводные документы за 2020 год." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 62, + "id": "X002", + "question": "по свк все документы за 20й год", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-11-51-x002", + "status_code": 200, + "ok": true, + "elapsed_ms": 6885, + "reply_type": "factual", + "trace_id": "address-ai4Tu3tIdt", + "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 | аналитика: Группа", + "assistant_reply_first_line": "Собран список документов по контрагенту (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 20, + "rows_matched": 3, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-ai4Tu3tIdt", + "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": "HpsGR5UvJpP4aW", + "llm_decomposition_effective_message": "Получить все документы по СВК за 2020 год.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "по свк все документы за 20й год", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "HpsGR5UvJpP4aW", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Получить все документы по СВК за 2020 год." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 63, + "id": "X003", + "question": "пж вывали доки контрагент свк 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-11-51-x003", + "status_code": 200, + "ok": true, + "elapsed_ms": 7124, + "reply_type": "factual", + "trace_id": "address-S_r8tnfwph", + "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 | аналитика: Группа", + "assistant_reply_first_line": "Собран список документов по контрагенту (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 20, + "rows_matched": 3, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-S_r8tnfwph", + "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": "hNsZTrA7yjY2UN", + "llm_decomposition_effective_message": "Пожалуйста, предоставьте документы по контрагенту СВК за 2020 год.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "вывали доки контрагент свк 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "hNsZTrA7yjY2UN", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Пожалуйста, предоставьте документы по контрагенту СВК за 2020 год." + } + }, + "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_Nightly_stress_102_20-11-51-x004", + "status_code": 200, + "ok": true, + "elapsed_ms": 1045, + "reply_type": "factual", + "trace_id": "address-OfEayStxP0", + "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 | аналитика: Группа", + "assistant_reply_first_line": "Собран список документов по контрагенту (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 20, + "rows_matched": 3, + "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", + "debug_payload": { + "trace_id": "address-OfEayStxP0", + "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": "svk", + "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": "svk", + "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": false, + "llm_provider_used": "local", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "документы по контрагенту svk за 2020 год", + "llm_decomposition_reason": "fallback_rule_applied_without_llm", + "fallback_rule_hit": "documents_counterparty_year_rewrite", + "sanitized_user_message": "svk poka docy za 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + }, + "error_code": null, + "error_message": null + }, + { + "index": 65, + "id": "X005", + "question": "какие доки по компании свк за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-11-51-x005", + "status_code": 200, + "ok": true, + "elapsed_ms": 7104, + "reply_type": "factual", + "trace_id": "address-3u6RuV-xiH", + "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 | аналитика: Группа", + "assistant_reply_first_line": "Собран список документов по контрагенту (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 20, + "rows_matched": 3, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-3u6RuV-xiH", + "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": "otdVIsPmxUYAGg", + "llm_decomposition_effective_message": "Какие документы по компании СВК за 2020 год?", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "какие доки по компании свк за 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "otdVIsPmxUYAGg", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Какие документы по компании СВК за 2020 год?" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 66, + "id": "X006", + "question": "бля покаж свк документы 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-11-51-x006", + "status_code": 200, + "ok": true, + "elapsed_ms": 9357, + "reply_type": "factual", + "trace_id": "address-Ch5PqiZ4-a", + "assistant_reply": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.\nСобран список документов по контрагенту (live address lane).\nСтрок отобрано: 5.\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-16T16:20:52Z | Списание с расчетного счета 00000000294 от 16.12.2020 16:20:52 | 0 / 0 | 3849.26 | аналитика: УФК по г. Москве (для ГУ - Отделения ПФР по г. Москве и МО)\n4. 2020-12-16T16:20:51Z | Списание с расчетного счета 00000000293 от 16.12.2020 16:20:51 | 0 / 0 | 60 | аналитика: СБЕРБАНК, ПАО\n5. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "assistant_reply_first_line": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "rows_fetched": 20, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-Ch5PqiZ4-a", + "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", + "anchor_not_matched_fallback_rows" + ], + "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": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "mcp_call_status": "matched_non_empty", + "rows_fetched": 20, + "raw_rows_received": 20, + "rows_after_account_scope": 5, + "rows_after_recipe_filter": 0, + "rows_materialized": 5, + "rows_matched": 5, + "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": "0VYlM8b8W9XaES", + "llm_decomposition_effective_message": "покажи все документы за 2020 год", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "покаж свк документы 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "0VYlM8b8W9XaES", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "покажи все документы за 2020 год" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 67, + "id": "X007", + "question": "свк банк операции за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-11-51-x007", + "status_code": 200, + "ok": true, + "elapsed_ms": 11170, + "reply_type": "factual", + "trace_id": "address-CTbv8uZ1tt", + "assistant_reply": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.\nСобран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 5.\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-16T16:20:52Z | Списание с расчетного счета 00000000294 от 16.12.2020 16:20:52 | 0 / 0 | 3849.26 | аналитика: УФК по г. Москве (для ГУ - Отделения ПФР по г. Москве и МО)\n4. 2020-12-16T16:20:51Z | Списание с расчетного счета 00000000293 от 16.12.2020 16:20:51 | 0 / 0 | 60 | аналитика: СБЕРБАНК, ПАО\n5. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "assistant_reply_first_line": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "rows_fetched": 20, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-CTbv8uZ1tt", + "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", + "bank_ops_by_counterparty_signal_detected", + "anchor_not_matched_fallback_rows" + ], + "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_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": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "mcp_call_status": "matched_non_empty", + "rows_fetched": 20, + "raw_rows_received": 20, + "rows_after_account_scope": 5, + "rows_after_recipe_filter": 0, + "rows_materialized": 5, + "rows_matched": 5, + "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": "K9LOiUR9Sh4i-F", + "llm_decomposition_effective_message": "Сверка с банком операций за 2020 год.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "свк банк операции за 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "K9LOiUR9Sh4i-F", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Сверка с банком операций за 2020 год." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 68, + "id": "X008", + "question": "по свк выписку банка за 2020 выведи", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-11-51-x008", + "status_code": 200, + "ok": true, + "elapsed_ms": 6932, + "reply_type": "factual", + "trace_id": "address-uvJ038ZhB3", + "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 | аналитика: Группа", + "assistant_reply_first_line": "Собран список банковских операций по контрагенту (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 20, + "rows_matched": 3, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-uvJ038ZhB3", + "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", + "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": "DOCUMENT_LIST", + "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": "0lsVNUvGYYytG4", + "llm_decomposition_effective_message": "Получить выписку из банка по СВК за 2020 год.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "по свк выписку банка за 2020 выведи", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "0lsVNUvGYYytG4", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Получить выписку из банка по СВК за 2020 год." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 69, + "id": "X009", + "question": "свк платежки за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-11-51-x009", + "status_code": 200, + "ok": true, + "elapsed_ms": 10389, + "reply_type": "factual", + "trace_id": "address-QL6hsHVIG7", + "assistant_reply": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.\nСобран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 5.\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-16T16:20:52Z | Списание с расчетного счета 00000000294 от 16.12.2020 16:20:52 | 0 / 0 | 3849.26 | аналитика: УФК по г. Москве (для ГУ - Отделения ПФР по г. Москве и МО)\n4. 2020-12-16T16:20:51Z | Списание с расчетного счета 00000000293 от 16.12.2020 16:20:51 | 0 / 0 | 60 | аналитика: СБЕРБАНК, ПАО\n5. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "assistant_reply_first_line": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "rows_fetched": 20, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-QL6hsHVIG7", + "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": [ + "docs_or_bank_signal_detected", + "anchor_like_token_detected", + "document_list_signal_detected", + "bank_ops_by_counterparty_signal_detected", + "anchor_not_matched_fallback_rows" + ], + "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": "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": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "mcp_call_status": "matched_non_empty", + "rows_fetched": 20, + "raw_rows_received": 20, + "rows_after_account_scope": 5, + "rows_after_recipe_filter": 0, + "rows_materialized": 5, + "rows_matched": 5, + "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": "zArS4CCuhU3d9P", + "llm_decomposition_effective_message": "сканирование платежек за 2020 год", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "свк платежки за 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "zArS4CCuhU3d9P", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "сканирование платежек за 2020 год" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 70, + "id": "X010", + "question": "bank ops svk 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-11-51-x010", + "status_code": 200, + "ok": true, + "elapsed_ms": 783, + "reply_type": "factual", + "trace_id": "address-ty8H562wvN", + "assistant_reply": "Собран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 1.\n1. 2020-12-16T16:20:51Z | Списание с расчетного счета 00000000293 от 16.12.2020 16:20:51 | 0 / 0 | 60 | аналитика: СБЕРБАНК, ПАО", + "assistant_reply_first_line": "Собран список банковских операций по контрагенту (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 20, + "rows_matched": 1, + "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", + "debug_payload": { + "trace_id": "address-ty8H562wvN", + "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": "bank", + "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": "bank", + "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": 1, + "rows_materialized": 5, + "rows_matched": 1, + "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": false, + "llm_provider_used": "local", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "банковские операции по контрагенту bank за 2020 год", + "llm_decomposition_reason": "fallback_rule_applied_without_llm", + "fallback_rule_hit": "bank_operations_counterparty_year_rewrite", + "sanitized_user_message": "bank ops svk 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + }, + "error_code": null, + "error_message": null + }, + { + "index": 71, + "id": "X011", + "question": "транзакции по свк за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-11-51-x011", + "status_code": 200, + "ok": true, + "elapsed_ms": 1041, + "reply_type": "factual", + "trace_id": "address-xgozQwcq-h", + "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 | аналитика: Группа", + "assistant_reply_first_line": "Собран список банковских операций по контрагенту (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 20, + "rows_matched": 3, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-xgozQwcq-h", + "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", + "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": "medium", + "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": 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": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + }, + "error_code": null, + "error_message": null + }, + { + "index": 72, + "id": "X012", + "question": "ёпт по свк че по банку 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-11-51-x012", + "status_code": 200, + "ok": true, + "elapsed_ms": 10405, + "reply_type": "factual", + "trace_id": "address-FlcIOlThpn", + "assistant_reply": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.\nСобран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 5.\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-16T16:20:52Z | Списание с расчетного счета 00000000294 от 16.12.2020 16:20:52 | 0 / 0 | 3849.26 | аналитика: УФК по г. Москве (для ГУ - Отделения ПФР по г. Москве и МО)\n4. 2020-12-16T16:20:51Z | Списание с расчетного счета 00000000293 от 16.12.2020 16:20:51 | 0 / 0 | 60 | аналитика: СБЕРБАНК, ПАО\n5. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "assistant_reply_first_line": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "rows_fetched": 20, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-FlcIOlThpn", + "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", + "bank_ops_by_counterparty_signal_detected", + "anchor_not_matched_fallback_rows" + ], + "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_counterparty", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "account": "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": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "mcp_call_status": "matched_non_empty", + "rows_fetched": 20, + "raw_rows_received": 20, + "rows_after_account_scope": 5, + "rows_after_recipe_filter": 0, + "rows_materialized": 5, + "rows_matched": 5, + "raw_row_keys_sample": [ + "Период", + "Регистратор", + "СчетДт", + "СчетКт", + "Сумма", + "Контрагент", + "Period", + "Registrator", + "Amount" + ], + "materialization_drop_reason": "none", + "account_token_raw": "20", + "account_token_normalized": "20", + "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": "wA4_1SVEHEUkv1", + "llm_decomposition_effective_message": "Что не в порядке с банковскими счетами в 2020 году?", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "по свк че по банку 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "wA4_1SVEHEUkv1", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Что не в порядке с банковскими счетами в 2020 году?" + } + }, + "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_Nightly_stress_102_20-11-51-x013", + "status_code": 200, + "ok": true, + "elapsed_ms": 6868, + "reply_type": "factual", + "trace_id": "address-VJV1PInGrS", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-VJV1PInGrS", + "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": "uf8BEFWIADnu-g", + "llm_decomposition_effective_message": "balance for account 60.01 as of 2020-07-31", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "остаток по 60.01 на 2020-07-31", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "uf8BEFWIADnu-g", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "balance for account 60.01 as of 2020-07-31" + } + }, + "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_Nightly_stress_102_20-11-51-x014", + "status_code": 200, + "ok": true, + "elapsed_ms": 7061, + "reply_type": "factual", + "trace_id": "address-P-daBgvlXY", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-P-daBgvlXY", + "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": "SWyRKxwPKzF4wH", + "llm_decomposition_effective_message": "балансовый остаток счета 60.01 на дату 31.07.2020", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "сальдо 60.01 на 31.07.2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "SWyRKxwPKzF4wH", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "балансовый остаток счета 60.01 на дату 31.07.2020" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 75, + "id": "X015", + "question": "что на счете 60 на 2020.05", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-11-51-x015", + "status_code": 200, + "ok": true, + "elapsed_ms": 7216, + "reply_type": "factual", + "trace_id": "address-bmdakZ2Rs_", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 138, + "rows_matched": 138, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-bmdakZ2Rs_", + "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", + "period_from": "2020-01-01", + "period_to": "2020-12-31", + "as_of_date": "2020-12-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": 138, + "raw_rows_received": 138, + "rows_after_account_scope": 138, + "rows_after_recipe_filter": 138, + "rows_materialized": 138, + "rows_matched": 138, + "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": "jJg9Up4n9Q3BKQ", + "llm_decomposition_effective_message": "Что на счете 60 в мае 2020 года?", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "что на счете 60 на 2020.05", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "jJg9Up4n9Q3BKQ", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Что на счете 60 в мае 2020 года?" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 76, + "id": "X016", + "question": "дай остаток 62.01 на 2020 май", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-11-51-x016", + "status_code": 200, + "ok": true, + "elapsed_ms": 7074, + "reply_type": "factual", + "trace_id": "address-WTaSVtoxoJ", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 2, + "rows_matched": 2, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-WTaSVtoxoJ", + "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.01", + "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": "62.01", + "anchor_value_resolved": "62.01", + "resolver_confidence": "high", + "ambiguity_count": 0, + "match_failure_stage": "none", + "match_failure_reason": null, + "mcp_call_status": "matched_non_empty", + "rows_fetched": 2, + "raw_rows_received": 2, + "rows_after_account_scope": 2, + "rows_after_recipe_filter": 2, + "rows_materialized": 2, + "rows_matched": 2, + "raw_row_keys_sample": [ + "Период", + "Регистратор", + "СчетДт", + "СчетКт", + "Сумма", + "Period", + "Registrator", + "AccountDt", + "AccountKt", + "Amount" + ], + "materialization_drop_reason": "none", + "account_token_raw": "62.01", + "account_token_normalized": "62.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": "O-C6eWkLfUdbzq", + "llm_decomposition_effective_message": "Provide the balance for account 62.01 as of May 2020.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "дай остаток 62.01 на 2020 май", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "O-C6eWkLfUdbzq", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Provide the balance for account 62.01 as of May 2020." + } + }, + "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_Nightly_stress_102_20-11-51-x017", + "status_code": 200, + "ok": true, + "elapsed_ms": 7109, + "reply_type": "partial_coverage", + "trace_id": "address-uduBoG-Upa", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.", + "assistant_reply_first_line": "В live-данных по текущему фильтру записи не найдены.", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "partial_non_blocking", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 0, + "rows_matched": 0, + "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, + "debug_payload": { + "trace_id": "address-uduBoG-Upa", + "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", + "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", + "period_from": "2020-12-01", + "period_to": "2020-12-31", + "as_of_date": "2020-12-31" + }, + "missing_required_filters": [], + "selected_recipe": "address_movements_account_snapshot_v1", + "mcp_call_status_legacy": "no_raw_rows", + "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": "no_raw_rows", + "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": "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": "empty_match", + "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": "TmlNOJ6dCJNf4a", + "llm_decomposition_effective_message": "баланс счета 60 на дату 2020-12-31", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "сальдо account 60 as of 2020-12-31", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "TmlNOJ6dCJNf4a", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "баланс счета 60 на дату 2020-12-31" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 78, + "id": "X018", + "question": "плиз остаток по счету 51 на 2020-06-30", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-11-51-x018", + "status_code": 200, + "ok": true, + "elapsed_ms": 7115, + "reply_type": "factual", + "trace_id": "address-OMpNaZYX9o", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 30, + "rows_matched": 30, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-OMpNaZYX9o", + "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": "51", + "period_from": "2020-06-01", + "period_to": "2020-06-30", + "as_of_date": "2020-06-30" + }, + "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": 30, + "raw_rows_received": 30, + "rows_after_account_scope": 30, + "rows_after_recipe_filter": 30, + "rows_materialized": 30, + "rows_matched": 30, + "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": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "Ch5X2PUrXXCmzi", + "llm_decomposition_effective_message": "остаток по счету 51 на 2020-06-30", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "плиз остаток по счету 51 на 2020-06-30", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "Ch5X2PUrXXCmzi", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "остаток по счету 51 на 2020-06-30" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 79, + "id": "X019", + "question": "скока по 60.02 на конец 2020-12", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-11-51-x019", + "status_code": 200, + "ok": true, + "elapsed_ms": 1001, + "reply_type": "partial_coverage", + "trace_id": "address-cKc6GUPEcp", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.", + "assistant_reply_first_line": "В live-данных по текущему фильтру записи не найдены.", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "partial_non_blocking", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 0, + "rows_matched": 0, + "mcp_call_status": "no_raw_rows", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-cKc6GUPEcp", + "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", + "account_balance_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": "account_balance_snapshot", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "account": "60.02", + "period_from": "2020-12-01", + "period_to": "2020-12-31", + "as_of_date": "2020-12-31" + }, + "missing_required_filters": [], + "selected_recipe": "address_movements_account_snapshot_v1", + "mcp_call_status_legacy": "no_raw_rows", + "account_scope_mode": "strict", + "account_scope_fallback_applied": false, + "anchor_type": "account", + "anchor_value_raw": "60.02", + "anchor_value_resolved": "60.02", + "resolver_confidence": "high", + "ambiguity_count": 0, + "match_failure_stage": "none", + "match_failure_reason": null, + "mcp_call_status": "no_raw_rows", + "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": "60.02", + "account_token_normalized": "60.2", + "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": "empty_match", + "response_type": "LIMITED_WITH_REASON", + "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.02 на конец 2020-12", + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "sanitized_user_message": "скока по 60.02 на конец 2020-12", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": 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_Nightly_stress_102_20-11-51-x020", + "status_code": 200, + "ok": true, + "elapsed_ms": 7074, + "reply_type": "factual", + "trace_id": "address-m7Ig1wYBRD", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-m7Ig1wYBRD", + "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", + "account_balance_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": "account_balance_snapshot", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "account": "60.01", + "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.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": "Cb2fxyopuzSZDm", + "llm_decomposition_effective_message": "проверить сальдо счета 60.01 на конец периода 2020-05-31", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "сальдо 60.01 на 2020-05-31", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "Cb2fxyopuzSZDm", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "проверить сальдо счета 60.01 на конец периода 2020-05-31" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 81, + "id": "X021", + "question": "раскрой остаток 60.01 по документам на конец июля 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-11-51-x021", + "status_code": 200, + "ok": true, + "elapsed_ms": 7126, + "reply_type": "factual", + "trace_id": "address-LwI39iW64n", + "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Можно уточнить выборку по контрагенту, договору или периоду.", + "assistant_reply_first_line": "Собран drilldown документов, формирующих остаток по счету на указанную дату.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_forming_balance_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-LwI39iW64n", + "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_account_drilldown_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": "documents_forming_balance", + "detected_intent_confidence": "medium", + "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_documents_forming_balance_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_LIST", + "execution_lane": "address_query", + "llm_decomposition_applied": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "QYQ-Y4pURCAP0n", + "llm_decomposition_effective_message": "Раскрыть остаток счета 60.01 по документам на конец июля 2020 года.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "раскрой остаток 60.01 по документам на конец июля 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "QYQ-Y4pURCAP0n", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Раскрыть остаток счета 60.01 по документам на конец июля 2020 года." + } + }, + "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_Nightly_stress_102_20-11-51-x022", + "status_code": 200, + "ok": true, + "elapsed_ms": 7120, + "reply_type": "factual", + "trace_id": "address-6W9xgw8O1L", + "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Можно уточнить выборку по контрагенту, договору или периоду.", + "assistant_reply_first_line": "Собран drilldown документов, формирующих остаток по счету на указанную дату.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_forming_balance_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "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, + "debug_payload": { + "trace_id": "address-6W9xgw8O1L", + "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_forming_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": "documents_forming_balance", + "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_documents_forming_balance_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_LIST", + "execution_lane": "address_query", + "llm_decomposition_applied": false, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "nOgmz3PqpPBS2p", + "llm_decomposition_effective_message": "доки под остатком 60.01 на 2020-07-31", + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "sanitized_user_message": "доки под остатком 60.01 на 2020-07-31", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "nOgmz3PqpPBS2p", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "доки под остатком 60.01 на 2020-07-31" + } + }, + "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_Nightly_stress_102_20-11-51-x023", + "status_code": 200, + "ok": true, + "elapsed_ms": 8135, + "reply_type": "factual", + "trace_id": "address-rFzxsBY95f", + "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Можно уточнить выборку по контрагенту, договору или периоду.", + "assistant_reply_first_line": "Собран drilldown документов, формирующих остаток по счету на указанную дату.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_forming_balance_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-rFzxsBY95f", + "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", + "documents_forming_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": "documents_forming_balance", + "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_documents_forming_balance_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_LIST", + "execution_lane": "address_query", + "llm_decomposition_applied": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "iuLNJ9_frp5B55", + "llm_decomposition_effective_message": "Определить состав проводок, формирующих остаток по счету 60.01 на дату 2020-07-31.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "из чего остаток 60.01 на 2020-07-31", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "iuLNJ9_frp5B55", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Определить состав проводок, формирующих остаток по счету 60.01 на дату 2020-07-31." + } + }, + "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_Nightly_stress_102_20-11-51-x024", + "status_code": 200, + "ok": true, + "elapsed_ms": 7124, + "reply_type": "factual", + "trace_id": "address-dTxCcrid_1", + "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Можно уточнить выборку по контрагенту, договору или периоду.", + "assistant_reply_first_line": "Собран drilldown документов, формирующих остаток по счету на указанную дату.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_forming_balance_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-dTxCcrid_1", + "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", + "drilldown_signal_detected", + "documents_forming_balance_signal_detected" + ], + "why_included_summary": [], + "selection_reason_summary": [] + }, + "dropped_intent_segments": [], + "detected_mode": "address_query", + "detected_mode_confidence": "high", + "query_shape": "DRILLDOWN_REQUEST", + "query_shape_confidence": "high", + "detected_intent": "documents_forming_balance", + "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_documents_forming_balance_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_LIST", + "execution_lane": "address_query", + "llm_decomposition_applied": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "5XR9IU_fpc04f9", + "llm_decomposition_effective_message": "Какие документы формируют остаток по счету 60.01 на конец периода 2020-07-31?", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "какие документы формируют остаток по 60.01 на 2020-07-31", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "5XR9IU_fpc04f9", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Какие документы формируют остаток по счету 60.01 на конец периода 2020-07-31?" + } + }, + "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_Nightly_stress_102_20-11-51-x025", + "status_code": 200, + "ok": true, + "elapsed_ms": 7100, + "reply_type": "factual", + "trace_id": "address-9h8D9aHtQz", + "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Можно уточнить выборку по контрагенту, договору или периоду.", + "assistant_reply_first_line": "Собран drilldown документов, формирующих остаток по счету на указанную дату.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_forming_balance_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-9h8D9aHtQz", + "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_forming_balance_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": "documents_forming_balance", + "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_documents_forming_balance_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_LIST", + "execution_lane": "address_query", + "llm_decomposition_applied": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "FWMGC7ivEU_8Yt", + "llm_decomposition_effective_message": "документы, формирующие остаток по счету 60.01 на дату 2020-07-31", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "документы forming balance 60.01 as of 2020-07-31", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "FWMGC7ivEU_8Yt", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "документы, формирующие остаток по счету 60.01 на дату 2020-07-31" + } + }, + "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_Nightly_stress_102_20-11-51-x026", + "status_code": 200, + "ok": true, + "elapsed_ms": 8115, + "reply_type": "partial_coverage", + "trace_id": "address-aQytXQiyco", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.", + "assistant_reply_first_line": "В live-данных по текущему фильтру записи не найдены.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "partial_non_blocking", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_forming_balance_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 0, + "rows_matched": 0, + "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, + "debug_payload": { + "trace_id": "address-aQytXQiyco", + "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_account_drilldown_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": "documents_forming_balance", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "account": "62.01", + "period_from": "2020-12-01", + "period_to": "2020-12-31", + "as_of_date": "2020-12-31" + }, + "missing_required_filters": [], + "selected_recipe": "address_documents_forming_balance_v1", + "mcp_call_status_legacy": "no_raw_rows", + "account_scope_mode": "strict", + "account_scope_fallback_applied": false, + "anchor_type": "account", + "anchor_value_raw": "62.01", + "anchor_value_resolved": "62.01", + "resolver_confidence": "high", + "ambiguity_count": 0, + "match_failure_stage": "none", + "match_failure_reason": null, + "mcp_call_status": "no_raw_rows", + "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": "62.01", + "account_token_normalized": "62.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": "empty_match", + "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": "809sJqnTvNbQp1", + "llm_decomposition_effective_message": "Распределить остаток счета 62.01 по документам на конец периода 2020-12-31.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "раскидай остаток 62.01 по докам на 2020-12-31", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "809sJqnTvNbQp1", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Распределить остаток счета 62.01 по документам на конец периода 2020-12-31." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 87, + "id": "X027", + "question": "по счету 51 раскрой остаток документами на 2020-06-30", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-11-51-x027", + "status_code": 200, + "ok": true, + "elapsed_ms": 7105, + "reply_type": "factual", + "trace_id": "address-eworw1vvsw", + "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Можно уточнить выборку по контрагенту, договору или периоду.", + "assistant_reply_first_line": "Собран drilldown документов, формирующих остаток по счету на указанную дату.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_forming_balance_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 30, + "rows_matched": 3, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-eworw1vvsw", + "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_account_drilldown_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": "documents_forming_balance", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "account": "51", + "period_from": "2020-06-01", + "period_to": "2020-06-30", + "as_of_date": "2020-06-30" + }, + "missing_required_filters": [], + "selected_recipe": "address_documents_forming_balance_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": 30, + "raw_rows_received": 30, + "rows_after_account_scope": 30, + "rows_after_recipe_filter": 30, + "rows_materialized": 30, + "rows_matched": 3, + "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_LIST", + "execution_lane": "address_query", + "llm_decomposition_applied": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "INuOXj3FgoxyL2", + "llm_decomposition_effective_message": "раскрыть остаток по счету 51 с разбивкой по документам на конец периода 2020-06-30", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "по счету 51 раскрой остаток документами на 2020-06-30", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "INuOXj3FgoxyL2", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "раскрыть остаток по счету 51 с разбивкой по документам на конец периода 2020-06-30" + } + }, + "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_Nightly_stress_102_20-11-51-x028", + "status_code": 200, + "ok": true, + "elapsed_ms": 8147, + "reply_type": "factual", + "trace_id": "address-15VTJl6cz6", + "assistant_reply": "Собран drilldown документов, формирующих остаток по счету на указанную дату.\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\n5. 2020-05-12T12:00:00Z | Списание с расчетного счета 00000000137 от 12.05.2020 12:00:00 | 60.01 / 51 | 70000\nМожно уточнить выборку по контрагенту, договору или периоду.", + "assistant_reply_first_line": "Собран drilldown документов, формирующих остаток по счету на указанную дату.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_forming_balance_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "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, + "debug_payload": { + "trace_id": "address-15VTJl6cz6", + "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", + "drilldown_signal_detected", + "documents_forming_balance_signal_detected" + ], + "why_included_summary": [], + "selection_reason_summary": [] + }, + "dropped_intent_segments": [], + "detected_mode": "address_query", + "detected_mode_confidence": "high", + "query_shape": "DRILLDOWN_REQUEST", + "query_shape_confidence": "high", + "detected_intent": "documents_forming_balance", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "account": "60.01", + "period_from": "2020-05-01", + "period_to": "2020-05-31", + "as_of_date": "2020-05-31" + }, + "missing_required_filters": [], + "selected_recipe": "address_documents_forming_balance_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_LIST", + "execution_lane": "address_query", + "llm_decomposition_applied": false, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "hiCl2VSzNcz6rc", + "llm_decomposition_effective_message": "бля из чего состоит остаток по 60.01 на 2020-05-31", + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "sanitized_user_message": "из чего состоит остаток по 60.01 на 2020-05-31", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "hiCl2VSzNcz6rc", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "бля из чего состоит остаток по 60.01 на 2020-05-31" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 89, + "id": "X029", + "question": "доки по договору 19/15 за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-11-51-x029", + "status_code": 200, + "ok": true, + "elapsed_ms": 8287, + "reply_type": "factual", + "trace_id": "address-_K0Ko_8-J4", + "assistant_reply": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 8.\n1. 2020-08-31T15:00:06Z | Поступление товаров и услуг 00000000024 от 31.08.2020 15:00:06 | 19.04 / 76.05 | 233.33\n2. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 43804.8\n3. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 9776\n4. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 73968\n5. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 94924.8\n6. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 54400\n7. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.02 / 62.01 | 276873.6\n8. 2020-06-30T12:00:00Z | Поступление товаров и услуг 00000000015 от 30.06.2020 12:00:00 | 19.04 / 76.05 | 233.33", + "assistant_reply_first_line": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 8, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-_K0Ko_8-J4", + "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": "19/15", + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": 11, + "rows_materialized": 438, + "rows_matched": 8, + "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": "V8tybPsXV7BTPf", + "llm_decomposition_effective_message": "Документы по договору 19/15 за период 2020 года.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "доки по договору 19/15 за 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "V8tybPsXV7BTPf", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Документы по договору 19/15 за период 2020 года." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 90, + "id": "X030", + "question": "покажи документы контракт 19/15", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-11-51-x030", + "status_code": 200, + "ok": true, + "elapsed_ms": 7124, + "reply_type": "factual", + "trace_id": "address-gE2s3TVYM0", + "assistant_reply": "Собран список документов по договору (live address lane).\nСтрок отобрано: 1.\n1. 2021-12-31T12:00:00Z | Поступление товаров и услуг 00000000015 от 31.12.2021 12:00:00 | 19.04 / 76.05 | 233.33", + "assistant_reply_first_line": "Собран список документов по договору (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 1, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-gE2s3TVYM0", + "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_contract_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_contract", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "contract": "19/15" + }, + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": 416, + "rows_after_recipe_filter": 2, + "rows_materialized": 416, + "rows_matched": 1, + "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": "9p0KSGEUy6X7eZ", + "llm_decomposition_effective_message": "Показать документы по контракту 19/15.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "покажи документы контракт 19/15", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "9p0KSGEUy6X7eZ", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Показать документы по контракту 19/15." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 91, + "id": "X031", + "question": "docs by contract 19/15 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-11-51-x031", + "status_code": 200, + "ok": true, + "elapsed_ms": 9187, + "reply_type": "factual", + "trace_id": "address-icBxn0J5wI", + "assistant_reply": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 8.\n1. 2020-08-31T15:00:06Z | Поступление товаров и услуг 00000000024 от 31.08.2020 15:00:06 | 19.04 / 76.05 | 233.33\n2. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 43804.8\n3. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 9776\n4. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 73968\n5. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 94924.8\n6. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 54400\n7. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.02 / 62.01 | 276873.6\n8. 2020-06-30T12:00:00Z | Поступление товаров и услуг 00000000015 от 30.06.2020 12:00:00 | 19.04 / 76.05 | 233.33", + "assistant_reply_first_line": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 8, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-icBxn0J5wI", + "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", + "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": "OBJECT_LOOKUP", + "query_shape_confidence": "medium", + "detected_intent": "list_documents_by_contract", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "contract": "19/15", + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": 11, + "rows_materialized": 438, + "rows_matched": 8, + "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": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "8_AQo96AQ8RVOz", + "llm_decomposition_effective_message": "docs by contract 19/15 2020", + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "sanitized_user_message": "документы by contract 19/15 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "8_AQo96AQ8RVOz", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "docs by contract 19/15 2020" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 92, + "id": "X032", + "question": "по дог 19/15 какие документы", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-11-51-x032", + "status_code": 200, + "ok": true, + "elapsed_ms": 7064, + "reply_type": "factual", + "trace_id": "address-3mKWxCQp1e", + "assistant_reply": "Собран список документов по договору (live address lane).\nСтрок отобрано: 1.\n1. 2021-12-31T12:00:00Z | Поступление товаров и услуг 00000000015 от 31.12.2021 12:00:00 | 19.04 / 76.05 | 233.33", + "assistant_reply_first_line": "Собран список документов по договору (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 1, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-3mKWxCQp1e", + "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" + ], + "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": "19/15" + }, + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": 416, + "rows_after_recipe_filter": 2, + "rows_materialized": 416, + "rows_matched": 1, + "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": "BVsRpVHJiZp6zj", + "llm_decomposition_effective_message": "Документы по договору 19/15", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "по договор 19/15 какие документы", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "BVsRpVHJiZp6zj", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Документы по договору 19/15" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 93, + "id": "X033", + "question": "договор 19/15 выведи доки", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-11-51-x033", + "status_code": 200, + "ok": true, + "elapsed_ms": 8096, + "reply_type": "factual", + "trace_id": "address-Flf-j8r9mB", + "assistant_reply": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 120.\n1. 2022-09-30T12:00:00Z | Поступление товаров и услуг 00000000010 от 30.09.2022 12:00:00 | 19.04 / 76.05 | 191.67\n2. 2022-09-30T12:00:00Z | Поступление товаров и услуг 00000000010 от 30.09.2022 12:00:00 | 44.01 / 76.05 | 958.33\n3. 2022-08-31T12:00:00Z | Поступление товаров и услуг 00000000009 от 31.08.2022 12:00:00 | 19.04 / 76.05 | 233.33\n4. 2022-08-31T12:00:00Z | Поступление товаров и услуг 00000000009 от 31.08.2022 12:00:00 | 44.01 / 76.05 | 1166.67\n5. 2022-07-31T12:00:00Z | Поступление товаров и услуг 00000000008 от 31.07.2022 12:00:00 | 19.04 / 76.05 | 150.54\n6. 2022-07-31T12:00:00Z | Поступление товаров и услуг 00000000008 от 31.07.2022 12:00:00 | 44.01 / 76.05 | 752.69\n7. 2022-07-31T12:00:00Z | Поступление товаров и услуг 00000000008 от 31.07.2022 12:00:00 | 76.05 / 76.05 | 280\n8. 2022-06-30T00:00:01Z | Поступление товаров и услуг 00000000006 от 30.06.2022 0:00:01 | 19.04 / 76.05 | 186.67\n9. 2022-06-30T00:00:01Z | Поступление товаров и услуг 00000000006 от 30.06.2022 0:00:01 | 44.01 / 76.05 | 933.33\n10. 2022-05-31T00:00:01Z | Поступление товаров и услуг 00000000005 от 31.05.2022 0:00:01 | 19.04 / 76.05 | 233.33\n11. 2022-05-31T00:00:01Z | Поступление товаров и услуг 00000000005 от 31.05.2022 0:00:01 | 44.01 / 76.05 | 1166.67\n12. 2022-04-30T00:00:01Z | Поступление товаров и услуг 00000000004 от 30.04.2022 0:00:01 | 19.04 / 76.05 | 233.33\n13. 2022-04-30T00:00:01Z | Поступление товаров и услуг 00000000004 от 30.04.2022 0:00:01 | 44.01 / 76.05 | 1166.67\n14. 2022-04-18T12:00:00Z | Поступление товаров и услуг 00000000007 от 18.04.2022 12:00:00 | 97.21 / 60.01 | 14790\n15. 2022-04-18T12:00:00Z | Поступление товаров и услуг 00000000007 от 18.04.2022 12:00:00 | 60.01 / 60.02 | 14790\n16. 2022-04-13T12:00:00Z | Поступление на расчетный счет 00000000004 от 13.04.2022 12:00:00 | 51 / 76.05 | 1200000\n17. 2022-03-31T12:00:00Z | Поступление товаров и услуг 00000000001 от 31.03.2022 12:00:00 | 19.04 / 76.05 | 233.33\n18. 2022-03-31T12:00:00Z | Поступление товаров и услуг 00000000001 от 31.03.2022 12:00:00 | 44.01 / 76.05 | 1166.67\n19. 2022-02-28T12:00:00Z | Поступление товаров и услуг 00000000002 от 28.02.2022 12:00:00 | 19.04 / 76.05 | 233.33\n20. 2022-02-28T12:00:00Z | Поступление товаров и услуг 00000000002 от 28.02.2022 12:00:00 | 44.01 / 76.05 | 1166.67\n21. 2022-01-31T12:00:00Z | Поступление товаров и услуг 00000000003 от 31.01.2022 12:00:00 | 19.04 / 76.05 | 233.33\n22. 2022-01-31T12:00:00Z | Поступление товаров и услуг 00000000003 от 31.01.2022 12:00:00 | 44.01 / 76.05 | 1166.67\n23. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 217415\n24. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 114640\n25. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 659320\n26. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 109610\n27. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 162300\n28. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 990830\n29. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 302560\n30. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 105310\n31. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 615320\n32. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 144220\n33. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 56930\n34. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 50000\n35. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 425600\n36. 2022-01-20T12:00:03Z | Поступление на расчетный счет 00000000001 от 20.01.2022 12:00:03 | 51 / 60.02 | 119210\n37. 2022-01-20T12:00:03Z | Поступление на расчетный счет 00000000001 от 20.01.2022 12:00:03 | 51 / 60.02 | 180230\n38. 2022-01-20T12:00:03Z | Поступление на расчетный счет 00000000001 от 20.01.2022 12:00:03 | 51 / 60.02 | 144320\n39. 2022-01-20T12:00:03Z | Поступление на расчетный счет 00000000001 от 20.01.2022 12:00:03 | 51 / 60.02 | 320600\n40. 2022-01-20T12:00:03Z | Поступление на расчетный счет 00000000001 от 20.01.2022 12:00:03 | 51 / 60.02 | 126300\n41. 2021-12-31T12:00:00Z | Поступление товаров и услуг 00000000015 от 31.12.2021 12:00:00 | 19.04 / 76.05 | 233.33\n42. 2021-12-31T12:00:00Z | Поступление товаров и услуг 00000000015 от 31.12.2021 12:00:00 | 44.01 / 76.05 | 1166.67\n43. 2021-11-30T12:00:00Z | Поступление товаров и услуг 00000000014 от 30.11.2021 12:00:00 | 19.04 / 76.05 | 233.33\n44. 2021-11-30T12:00:00Z | Поступление товаров и услуг 00000000014 от 30.11.2021 12:00:00 | 44.01 / 76.05 | 1166.67\n45. 2021-11-10T12:00:07Z | Поступление на расчетный счет 00000000013 от 10.11.2021 12:00:07 | 51 / 62.02 | 20000\n46. 2021-10-31T12:00:00Z | Поступление товаров и услуг 00000000013 от 31.10.2021 12:00:00 | 19.04 / 76.05 | 233.33\n47. 2021-10-31T12:00:00Z | Поступление товаров и услуг 00000000013 от 31.10.2021 12:00:00 | 44.01 / 76.05 | 1166.67\n48. 2021-09-30T12:00:00Z | Поступление товаров и услуг 00000000012 от 30.09.2021 12:00:00 | 19.04 / 76.05 | 233.33\n49. 2021-09-30T12:00:00Z | Поступление товаров и услуг 00000000012 от 30.09.2021 12:00:00 | 44.01 / 76.05 | 1166.67\n50. 2021-09-29T12:00:03Z | Поступление на расчетный счет 00000000012 от 29.09.2021 12:00:03 | 51 / 62.02 | 50000\n51. 2021-08-31T12:00:05Z | Поступление товаров и услуг 00000000011 от 31.08.2021 12:00:05 | 19.04 / 76.05 | 233.33\n52. 2021-08-31T12:00:05Z | Поступление товаров и услуг 00000000011 от 31.08.2021 12:00:05 | 44.01 / 76.05 | 1166.67\n53. 2021-08-31T12:00:04Z | Поступление на расчетный счет 00000000011 от 31.08.2021 12:00:04 | 51 / 62.02 | 120500\n54. 2021-07-31T12:00:00Z | Поступление товаров и услуг 00000000010 от 31.07.2021 12:00:00 | 19.04 / 76.05 | 233.33\n55. 2021-07-31T12:00:00Z | Поступление товаров и услуг 00000000010 от 31.07.2021 12:00:00 | 44.01 / 76.05 | 1166.67\n56. 2021-06-30T00:00:00Z | Поступление товаров и услуг 00000000008 от 30.06.2021 0:00:00 | 19.04 / 76.05 | 233.33\n57. 2021-06-30T00:00:00Z | Поступление товаров и услуг 00000000008 от 30.06.2021 0:00:00 | 44.01 / 76.05 | 1166.67\n58. 2021-06-22T12:00:00Z | Поступление на расчетный счет 00000000010 от 22.06.2021 12:00:00 | 51 / 62.02 | 498630\n59. 2021-06-09T12:00:05Z | Поступление на расчетный счет 00000000009 от 09.06.2021 12:00:05 | 51 / 62.02 | 418960\n60. 2021-05-31T12:00:04Z | Поступление товаров и услуг 00000000006 от 31.05.2021 12:00:04 | 19.04 / 76.05 | 233.33\n61. 2021-05-31T12:00:04Z | Поступление товаров и услуг 00000000006 от 31.05.2021 12:00:04 | 44.01 / 76.05 | 1166.67\n62. 2021-05-17T12:00:00Z | Поступление товаров и услуг 00000000009 от 17.05.2021 12:00:00 | 19.04 / 60.01 | 12000\n63. 2021-05-17T12:00:00Z | Поступление товаров и услуг 00000000009 от 17.05.2021 12:00:00 | 97.21 / 60.01 | 60000\n64. 2021-05-17T12:00:00Z | Поступление товаров и услуг 00000000009 от 17.05.2021 12:00:00 | 60.01 / 60.02 | 72000\n65. 2021-04-30T12:00:00Z | Поступление товаров и услуг 00000000005 от 30.04.2021 12:00:00 | 19.04 / 76.05 | 233.33\n66. 2021-04-30T12:00:00Z | Поступление товаров и услуг 00000000005 от 30.04.2021 12:00:00 | 44.01 / 76.05 | 1166.67\n67. 2021-04-28T12:00:08Z | Поступление на расчетный счет 00000000008 от 28.04.2021 12:00:08 | 51 / 62.02 | 564300\n68. 2021-04-22T12:00:00Z | Поступление на расчетный счет 00000000007 от 22.04.2021 12:00:00 | 51 / 62.02 | 982420\n69. 2021-04-13T12:00:11Z | Поступление на расчетный счет 00000000006 от 13.04.2021 12:00:11 | 51 / 62.02 | 1882400\n70. 2021-04-07T12:00:00Z | Поступление товаров и услуг 00000000016 от 07.04.2021 12:00:00 | 97.21 / 60.01 | 11900\n71. 2021-04-07T12:00:00Z | Поступление товаров и услуг 00000000016 от 07.04.2021 12:00:00 | 60.01 / 60.02 | 11900\n72. 2021-03-31T23:59:59Z | Поступление товаров и услуг 00000000003 от 31.03.2021 23:59:59 | 19.04 / 76.05 | 233.33\n73. 2021-03-31T23:59:59Z | Поступление товаров и услуг 00000000003 от 31.03.2021 23:59:59 | 44.01 / 76.05 | 1166.67\n74. 2021-03-25T12:00:02Z | Поступление на расчетный счет 00000000005 от 25.03.2021 12:00:02 | 51 / 62.02 | 644315\n75. 2021-03-24T12:00:03Z | Поступление на расчетный счет 00000000004 от 24.03.2021 12:00:03 | 51 / 62.02 | 1219990\n76. 2021-03-22T12:00:02Z | Реализация товаров и услуг 00000000001 от 22.03.2021 12:00:02 | 62.01 / 90.01.1 | 598950\n77. 2021-03-22T12:00:02Z | Реализация товаров и услуг 00000000001 от 22.03.2021 12:00:02 | 62.02 / 62.01 | 95274\n78. 2021-03-22T12:00:02Z | Реализация товаров и услуг 00000000001 от 22.03.2021 12:00:02 | 62.02 / 62.01 | 38900\n79. 2021-03-22T12:00:02Z | Реализация товаров и услуг 00000000001 от 22.03.2021 12:00:02 | 62.02 / 62.01 | 464776\n80. 2021-03-18T12:00:00Z | Поступление на расчетный счет 00000000003 от 18.03.2021 12:00:00 | 51 / 62.02 | 1425310\n81. 2021-03-12T12:00:03Z | Поступление на расчетный счет 00000000002 от 12.03.2021 12:00:03 | 51 / 62.02 | 214600\n82. 2021-03-09T00:00:00Z | Поступление товаров и услуг 00000000001 от 09.03.2021 0:00:00 | 19.03 / 60.01 | 88415\n83. 2021-03-09T00:00:00Z | Поступление товаров и услуг 00000000001 от 09.03.2021 0:00:00 | 41.01 / 60.01 | 442075\n84. 2021-02-28T23:59:59Z | Поступление товаров и услуг 00000000004 от 28.02.2021 23:59:59 | 19.04 / 76.05 | 233.33\n85. 2021-02-28T23:59:59Z | Поступление товаров и услуг 00000000004 от 28.02.2021 23:59:59 | 44.01 / 76.05 | 1166.67\n86. 2021-02-19T12:00:01Z | Поступление на расчетный счет 00000000001 от 19.02.2021 12:00:01 | 51 / 62.02 | 518600\n87. 2021-01-31T23:59:59Z | Поступление товаров и услуг 00000000002 от 31.01.2021 23:59:59 | 19.04 / 76.05 | 233.33\n88. 2021-01-31T23:59:59Z | Поступление товаров и услуг 00000000002 от 31.01.2021 23:59:59 | 44.01 / 76.05 | 1166.67\n89. 2020-12-31T23:59:59Z | Поступление товаров и услуг 00000000034 от 31.12.2020 23:59:59 | 19.04 / 76.05 | 233.33\n90. 2020-12-31T23:59:59Z | Поступление товаров и услуг 00000000034 от 31.12.2020 23:59:59 | 44.01 / 76.05 | 1166.67\n91. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 51 / 62.02 | 3248300\n92. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 51 / 62.02 | 216600\n93. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 51 / 62.02 | 200000\n94. 2020-11-30T23:59:59Z | Поступление товаров и услуг 00000000033 от 30.11.2020 23:59:59 | 19.04 / 76.05 | 233.33\n95. 2020-11-30T23:59:59Z | Поступление товаров и услуг 00000000033 от 30.11.2020 23:59:59 | 44.01 / 76.05 | 1166.67\n96. 2020-11-30T12:00:08Z | Реализация товаров и услуг 00000000010 от 30.11.2020 12:00:08 | 62.01 / 90.01.1 | 118552\n97. 2020-11-30T12:00:08Z | Реализация товаров и услуг 00000000010 от 30.11.2020 12:00:08 | 62.01 / 90.01.1 | 458472\n98. 2020-11-30T12:00:08Z | Реализация товаров и услуг 00000000010 от 30.11.2020 12:00:08 | 62.02 / 62.01 | 577024\n99. 2020-11-30T12:00:07Z | Поступление на расчетный счет 00000000041 от 30.11.2020 12:00:07 | 51 / 62.02 | 38900\n100. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 900000\n101. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 144749\n102. 2020-11-20T12:00:00Z | Поступление товаров и услуг 00000000030 от 20.11.2020 12:00:00 | 19.03 / 60.01 | 1450\n103. 2020-11-20T12:00:00Z | Поступление товаров и услуг 00000000030 от 20.11.2020 12:00:00 | 41.01 / 60.01 | 7250\n104. 2020-11-20T12:00:00Z | Поступление товаров и услуг 00000000030 от 20.11.2020 12:00:00 | 60.01 / 60.02 | 8700\n105. 2020-11-19T12:00:04Z | Поступление на расчетный счет 00000000039 от 19.11.2020 12:00:04 | 51 / 62.02 | 1041800\n106. 2020-11-19T12:00:04Z | Поступление на расчетный счет 00000000039 от 19.11.2020 12:00:04 | 51 / 62.01 | 2278800\n107. 2020-11-18T12:00:05Z | Поступление на расчетный счет 00000000038 от 18.11.2020 12:00:05 | 51 / 62.01 | 745300\n108. 2020-11-18T12:00:04Z | Поступление на расчетный счет 00000000037 от 18.11.2020 12:00:04 | 51 / 62.01 | 320000\n109. 2020-11-13T12:00:03Z | Поступление на расчетный счет 00000000036 от 13.11.2020 12:00:03 | 51 / 62.01 | 313600\n110. 2020-11-10T15:39:14Z | Реализация товаров и услуг 00000000009 от 10.11.2020 15:39:14 | 62.01 / 90.01.1 | 4161000\n111. 2020-11-10T15:39:14Z | Реализация товаров и услуг 00000000009 от 10.11.2020 15:39:14 | 62.02 / 62.01 | 328300\n112. 2020-11-10T15:39:14Z | Реализация товаров и услуг 00000000009 от 10.11.2020 15:39:14 | 62.02 / 62.01 | 175000\n113. 2020-11-10T15:39:13Z | Поступление на расчетный счет 00000000035 от 10.11.2020 15:39:13 | 51 / 62.02 | 328300\n114. 2020-11-09T12:00:01Z | Поступление товаров и услуг 00000000031 от 09.11.2020 12:00:01 | 41.01 / 60.01 | 2229840\n115. 2020-10-31T23:59:59Z | Поступление товаров и услуг 00000000032 от 31.10.2020 23:59:59 | 19.04 / 76.05 | 233.33\n116. 2020-10-31T23:59:59Z | Поступление товаров и услуг 00000000032 от 31.10.2020 23:59:59 | 44.01 / 76.05 | 1166.67\n117. 2020-10-26T12:00:00Z | Поступление на расчетный счет 00000000034 от 26.10.2020 12:00:00 | 51 / 62.02 | 175000\n118. 2020-10-14T12:00:00Z | Поступление на расчетный счет 00000000033 от 14.10.2020 12:00:00 | 51 / 60.01 | 160000\n119. 2020-09-30T12:00:04Z | Поступление товаров и услуг 00000000025 от 30.09.2020 12:00:04 | 19.04 / 76.05 | 233.33\n120. 2020-09-30T12:00:04Z | Поступление товаров и услуг 00000000025 от 30.09.2020 12:00:04 | 44.01 / 76.05 | 1166.67", + "assistant_reply_first_line": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "materialized_but_not_anchor_matched", + "match_failure_reason": "contract_anchor_not_matched_in_materialized_rows", + "rows_fetched": 1000, + "rows_matched": 120, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-Flf-j8r9mB", + "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_contract_signal_detected", + "anchor_not_matched_fallback_rows" + ], + "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_contract", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "contract": "19/15 выведите связанные документы" + }, + "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": "19/15 выведите связанные документы", + "anchor_value_resolved": "19/15 выведите связанные документы", + "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": "matched_non_empty", + "rows_fetched": 1000, + "raw_rows_received": 1000, + "rows_after_account_scope": 416, + "rows_after_recipe_filter": 0, + "rows_materialized": 416, + "rows_matched": 120, + "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": "qZg_1iKsngXvsw", + "llm_decomposition_effective_message": "Для договора 19/15 выведите связанные документы.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "договор 19/15 выведи доки", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "qZg_1iKsngXvsw", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Для договора 19/15 выведите связанные документы." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 94, + "id": "X034", + "question": "нах покажи документы по 19/15", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-11-51-x034", + "status_code": 200, + "ok": true, + "elapsed_ms": 7147, + "reply_type": "factual", + "trace_id": "address-sLFnINbNUL", + "assistant_reply": "Собран список документов по договору (live address lane).\nСтрок отобрано: 1.\n1. 2021-12-31T12:00:00Z | Поступление товаров и услуг 00000000015 от 31.12.2021 12:00:00 | 19.04 / 76.05 | 233.33", + "assistant_reply_first_line": "Собран список документов по договору (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 1, + "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, + "debug_payload": { + "trace_id": "address-sLFnINbNUL", + "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_contract_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_contract", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "contract": "19/15" + }, + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": 416, + "rows_after_recipe_filter": 2, + "rows_materialized": 416, + "rows_matched": 1, + "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": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "lPg-nqbBkBEOAN", + "llm_decomposition_effective_message": "нах покажи документы по 19/15", + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "sanitized_user_message": "покажи документы по 19/15", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "lPg-nqbBkBEOAN", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "нах покажи документы по 19/15" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 95, + "id": "X035", + "question": "банк операции по договору 19/15", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-11-51-x035", + "status_code": 200, + "ok": true, + "elapsed_ms": 7111, + "reply_type": "factual", + "trace_id": "address-T66bIasKjg", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 1.\n1. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "assistant_reply_first_line": "Собран список банковских операций по договору (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 1, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-T66bIasKjg", + "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": "19/15" + }, + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": 1, + "rows_materialized": 341, + "rows_matched": 1, + "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": "9mOB2VSdtVeC4o", + "llm_decomposition_effective_message": "операции банка по договору 19/15", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "банк операции по договору 19/15", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "9mOB2VSdtVeC4o", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "операции банка по договору 19/15" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 96, + "id": "X036", + "question": "платежки по дог 19/15", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-11-51-x036", + "status_code": 200, + "ok": true, + "elapsed_ms": 7068, + "reply_type": "factual", + "trace_id": "address-FklNV-WyUP", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 1.\n1. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "assistant_reply_first_line": "Собран список банковских операций по договору (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 1, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-FklNV-WyUP", + "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", + "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": "DOCUMENT_LIST", + "query_shape_confidence": "medium", + "detected_intent": "bank_operations_by_contract", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "contract": "19/15" + }, + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": 1, + "rows_materialized": 341, + "rows_matched": 1, + "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": "Kf4sitozhCZJUQ", + "llm_decomposition_effective_message": "платежи по договору 19/15", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "платежки по договор 19/15", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "Kf4sitozhCZJUQ", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "платежи по договору 19/15" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 97, + "id": "X037", + "question": "выписка по контракту 19/15", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-11-51-x037", + "status_code": 200, + "ok": true, + "elapsed_ms": 7092, + "reply_type": "factual", + "trace_id": "address-7zxMTnyr-9", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 1.\n1. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "assistant_reply_first_line": "Собран список банковских операций по договору (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 1, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-7zxMTnyr-9", + "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", + "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": "DOCUMENT_LIST", + "query_shape_confidence": "medium", + "detected_intent": "bank_operations_by_contract", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "contract": "19/15" + }, + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": 1, + "rows_materialized": 341, + "rows_matched": 1, + "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": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "U47RRx641R3PcR", + "llm_decomposition_effective_message": "выписка по контракту 19/15", + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "sanitized_user_message": "выписка по контракту 19/15", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "U47RRx641R3PcR", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "выписка по контракту 19/15" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 98, + "id": "X038", + "question": "bank ops by contract 19/15", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-11-51-x038", + "status_code": 200, + "ok": true, + "elapsed_ms": 8175, + "reply_type": "factual", + "trace_id": "address-Tg2WSAIJjJ", + "assistant_reply": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.\nСобран список банковских операций по договору (live address lane).\nСтрок отобрано: 341.\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\n5. 2022-07-11T12:00:00Z | Списание с расчетного счета 00000000014 от 11.07.2022 12:00:00 | 76.05 / 51 | 1120\n6. 2022-07-11T12:00:00Z | Списание с расчетного счета 00000000014 от 11.07.2022 12:00:00 | 76.05 / 51 | 1400\n7. 2022-07-11T12:00:00Z | Списание с расчетного счета 00000000014 от 11.07.2022 12:00:00 | 76.05 / 51 | 1400\n8. 2022-06-10T12:00:00Z | Списание с расчетного счета 00000000015 от 10.06.2022 12:00:00 | 91.02 / 51 | 990\n9. 2022-05-11T12:00:00Z | Списание с расчетного счета 00000000013 от 11.05.2022 12:00:00 | 66.04 / 51 | 180000\n10. 2022-05-10T12:00:00Z | Списание с расчетного счета 00000000012 от 10.05.2022 12:00:00 | 91.02 / 51 | 990\n11. 2022-04-15T12:00:02Z | Списание с расчетного счета 00000000011 от 15.04.2022 12:00:02 | 66.03 / 51 | 1000000\n12. 2022-04-15T12:00:01Z | Списание с расчетного счета 00000000010 от 15.04.2022 12:00:01 | 60.02 / 51 | 14790\n13. 2022-04-15T12:00:00Z | Списание с расчетного счета 00000000009 от 15.04.2022 12:00:00 | 76.05 / 51 | 1400\n14. 2022-04-15T12:00:00Z | Списание с расчетного счета 00000000009 от 15.04.2022 12:00:00 | 76.05 / 51 | 1400\n15. 2022-04-13T12:00:00Z | Поступление на расчетный счет 00000000004 от 13.04.2022 12:00:00 | 51 / 76.05 | 1200000\n16. 2022-03-10T12:00:00Z | Списание с расчетного счета 00000000008 от 10.03.2022 12:00:00 | 91.02 / 51 | 990\n17. 2022-02-14T12:00:01Z | Списание с расчетного счета 00000000007 от 14.02.2022 12:00:01 | 76.05 / 51 | 1400\n18. 2022-02-14T12:00:00Z | Списание с расчетного счета 00000000006 от 14.02.2022 12:00:00 | 91.02 / 51 | 990\n19. 2022-01-25T12:00:00Z | Списание с расчетного счета 00000000005 от 25.01.2022 12:00:00 | 68.1 / 51 | 3000\n20. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 217415\n21. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 114640\n22. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 659320\n23. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 109610\n24. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 162300\n25. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 990830\n26. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 302560\n27. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 105310\n28. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 615320\n29. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 144220\n30. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 56930\n31. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 50000\n32. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 425600\n33. 2022-01-20T12:00:03Z | Поступление на расчетный счет 00000000001 от 20.01.2022 12:00:03 | 51 / 60.02 | 119210\n34. 2022-01-20T12:00:03Z | Поступление на расчетный счет 00000000001 от 20.01.2022 12:00:03 | 51 / 60.02 | 180230\n35. 2022-01-20T12:00:03Z | Поступление на расчетный счет 00000000001 от 20.01.2022 12:00:03 | 51 / 60.02 | 144320\n36. 2022-01-20T12:00:03Z | Поступление на расчетный счет 00000000001 от 20.01.2022 12:00:03 | 51 / 60.02 | 320600\n37. 2022-01-20T12:00:03Z | Поступление на расчетный счет 00000000001 от 20.01.2022 12:00:03 | 51 / 60.02 | 126300\n38. 2022-01-20T12:00:02Z | Списание с расчетного счета 00000000004 от 20.01.2022 12:00:02 | 62.02 / 51 | 1808325\n39. 2022-01-20T12:00:02Z | Списание с расчетного счета 00000000004 от 20.01.2022 12:00:02 | 62.02 / 51 | 216600\n40. 2022-01-20T12:00:02Z | Списание с расчетного счета 00000000004 от 20.01.2022 12:00:02 | 62.02 / 51 | 104726\n41. 2022-01-20T12:00:01Z | Списание с расчетного счета 00000000003 от 20.01.2022 12:00:01 | 60.01 / 51 | 1705109.5\n42. 2022-01-20T12:00:00Z | Списание с расчетного счета 00000000002 от 20.01.2022 12:00:00 | 66.03 / 51 | 1000000\n43. 2022-01-19T12:00:00Z | Списание с расчетного счета 00000000001 от 19.01.2022 12:00:00 | 76.05 / 51 | 1400\n44. 2022-01-19T12:00:00Z | Списание с расчетного счета 00000000001 от 19.01.2022 12:00:00 | 76.05 / 51 | 1400\n45. 2021-12-01T12:00:00Z | Списание с расчетного счета 00000000196 от 01.12.2021 12:00:00 | 91.02 / 51 | 66.67\n46. 2021-11-10T12:00:07Z | Поступление на расчетный счет 00000000013 от 10.11.2021 12:00:07 | 51 / 62.02 | 20000\n47. 2021-11-10T12:00:06Z | Списание с расчетного счета 00000000195 от 10.11.2021 12:00:06 | 69.02.7 / 51 | 8632.1\n48. 2021-11-10T12:00:05Z | Списание с расчетного счета 00000000194 от 10.11.2021 12:00:05 | 69.03.1 / 51 | 3561.32\n49. 2021-11-10T12:00:04Z | Списание с расчетного счета 00000000193 от 10.11.2021 12:00:04 | 76.05 / 51 | 1400\n50. 2021-11-10T12:00:03Z | Списание с расчетного счета 00000000192 от 10.11.2021 12:00:03 | 91.02 / 51 | 990\n51. 2021-11-10T12:00:02Z | Списание с расчетного счета 00000000191 от 10.11.2021 12:00:02 | 69.01 / 51 | 370.97\n52. 2021-11-10T12:00:01Z | Списание с расчетного счета 00000000190 от 10.11.2021 12:00:01 | 69.11 / 51 | 141.94\n53. 2021-11-10T12:00:00Z | Списание с расчетного счета 00000000189 от 10.11.2021 12:00:00 | 91.02 / 51 | 8\n54. 2021-10-18T12:00:00Z | Списание с расчетного счета 00000000188 от 18.10.2021 12:00:00 | 76.05 / 51 | 1400\n55. 2021-10-12T12:00:04Z | Списание с расчетного счета 00000000187 от 12.10.2021 12:00:04 | 69.02.7 / 51 | 13326.28\n56. 2021-10-12T12:00:03Z | Списание с расчетного счета 00000000186 от 12.10.2021 12:00:03 | 68.01.1 / 51 | 9226\n57. 2021-10-12T12:00:02Z | Списание с расчетного счета 00000000185 от 12.10.2021 12:00:02 | 69.03.1 / 51 | 5153.69\n58. 2021-10-12T12:00:01Z | Списание с расчетного счета 00000000184 от 12.10.2021 12:00:01 | 69.01 / 51 | 741.94\n59. 2021-10-12T12:00:00Z | Списание с расчетного счета 00000000183 от 12.10.2021 12:00:00 | 69.11 / 51 | 205.12\n60. 2021-10-09T12:00:00Z | Списание с расчетного счета 00000000182 от 09.10.2021 12:00:00 | 91.02 / 51 | 990\n61. 2021-09-29T12:00:03Z | Поступление на расчетный счет 00000000012 от 29.09.2021 12:00:03 | 51 / 62.02 | 50000\n62. 2021-09-29T12:00:02Z | Списание с расчетного счета 00000000181 от 29.09.2021 12:00:02 | 70 / 51 | 34310\n63. 2021-09-29T12:00:01Z | Списание с расчетного счета 00000000180 от 29.09.2021 12:00:01 | 68.01.1 / 51 | 9503\n64. 2021-09-29T12:00:00Z | Списание с расчетного счета 00000000179 от 29.09.2021 12:00:00 | 91.02 / 51 | 171.55\n65. 2021-09-14T12:00:01Z | Списание с расчетного счета 00000000178 от 14.09.2021 12:00:01 | 70 / 51 | 29200\n66. 2021-09-14T12:00:00Z | Списание с расчетного счета 00000000177 от 14.09.2021 12:00:00 | 91.02 / 51 | 146\n67. 2021-09-09T12:00:00Z | Списание с расчетного счета 00000000176 от 09.09.2021 12:00:00 | 91.02 / 51 | 990\n68. 2021-09-07T12:00:05Z | Списание с расчетного счета 00000000175 от 07.09.2021 12:00:05 | 69.02.7 / 51 | 13830.84\n69. 2021-09-07T12:00:04Z | Списание с расчетного счета 00000000174 от 07.09.2021 12:00:04 | 69.03.1 / 51 | 5405.97\n70. 2021-09-07T12:00:03Z | Списание с расчетного счета 00000000173 от 07.09.2021 12:00:03 | 68.01.1 / 51 | 3830\n71. 2021-09-07T12:00:02Z | Списание с расчетного счета 00000000172 от 07.09.2021 12:00:02 | 76.05 / 51 | 1400\n72. 2021-09-07T12:00:01Z | Списание с расчетного счета 00000000171 от 07.09.2021 12:00:01 | 69.01 / 51 | 741.92\n73. 2021-09-07T12:00:00Z | Списание с расчетного счета 00000000170 от 07.09.2021 12:00:00 | 69.11 / 51 | 215.22\n74. 2021-08-31T12:00:04Z | Поступление на расчетный счет 00000000011 от 31.08.2021 12:00:04 | 51 / 62.02 | 120500\n75. 2021-08-31T12:00:03Z | Списание с расчетного счета 00000000169 от 31.08.2021 12:00:03 | 70 / 51 | 34642.18\n76. 2021-08-31T12:00:02Z | Списание с расчетного счета 00000000168 от 31.08.2021 12:00:02 | 70 / 51 | 33613.36\n77. 2021-08-31T12:00:01Z | Списание с расчетного счета 00000000167 от 31.08.2021 12:00:01 | 68.01.1 / 51 | 10199\n78. 2021-08-31T12:00:00Z | Списание с расчетного счета 00000000166 от 31.08.2021 12:00:00 | 91.02 / 51 | 341.28\n79. 2021-08-13T12:00:00Z | Списание с расчетного счета 00000000165 от 13.08.2021 12:00:00 | 76.05 / 51 | 1400\n80. 2021-08-12T12:00:02Z | Списание с расчетного счета 00000000164 от 12.08.2021 12:00:02 | 70 / 51 | 25363.04\n81. 2021-08-12T12:00:01Z | Списание с расчетного счета 00000000163 от 12.08.2021 12:00:01 | 68.01.1 / 51 | 3790\n82. 2021-08-12T12:00:00Z | Списание с расчетного счета 00000000162 от 12.08.2021 12:00:00 | 91.02 / 51 | 126.82\n83. 2021-08-11T12:00:00Z | Списание с расчетного счета 00000000160 от 11.08.2021 12:00:00 | 66.04 / 51 | 6410.96\n84. 2021-08-09T12:00:00Z | Списание с расчетного счета 00000000161 от 09.08.2021 12:00:00 | 91.02 / 51 | 990\n85. 2021-08-06T12:00:03Z | Списание с расчетного счета 00000000159 от 06.08.2021 12:00:03 | 69.02.7 / 51 | 16268.03\n86. 2021-08-06T12:00:02Z | Списание с расчетного счета 00000000158 от 06.08.2021 12:00:02 | 69.03.1 / 51 | 6624.56\n87. 2021-08-06T12:00:01Z | Списание с расчетного счета 00000000157 от 06.08.2021 12:00:01 | 69.01 / 51 | 741.96\n88. 2021-08-06T12:00:00Z | Списание с расчетного счета 00000000156 от 06.08.2021 12:00:00 | 69.11 / 51 | 263.96\n89. 2021-08-05T12:00:05Z | Списание с расчетного счета 00000000155 от 05.08.2021 12:00:05 | 68.04.1 / 51 | 125\n90. 2021-08-05T12:00:04Z | Списание с расчетного счета 00000000154 от 05.08.2021 12:00:04 | 68.04.1 / 51 | 3449\n91. 2021-08-05T12:00:03Z | Списание с расчетного счета 00000000153 от 05.08.2021 12:00:03 | 68.04.1 / 51 | 607\n92. 2021-08-05T12:00:02Z | Списание с расчетного счета 00000000152 от 05.08.2021 12:00:02 | 69.02.7 / 51 | 55.77\n93. 2021-08-05T12:00:01Z | Списание с расчетного счета 00000000151 от 05.08.2021 12:00:01 | 69.03.1 / 51 | 1\n94. 2021-08-05T12:00:00Z | Списание с расчетного счета 00000000150 от 05.08.2021 12:00:00 | 69.01 / 51 | 0.15\n95. 2021-07-29T12:00:02Z | Списание с расчетного счета 00000000149 от 29.07.2021 12:00:02 | 70 / 51 | 34310\n96. 2021-07-29T12:00:01Z | Списание с расчетного счета 00000000148 от 29.07.2021 12:00:01 | 68.01.1 / 51 | 9490\n97. 2021-07-29T12:00:00Z | Списание с расчетного счета 00000000147 от 29.07.2021 12:00:00 | 91.02 / 51 | 171.55\n98. 2021-07-16T12:00:00Z | Списание с расчетного счета 00000000146 от 16.07.2021 12:00:00 | 76.05 / 51 | 1400\n99. 2021-07-14T12:00:01Z | Списание с расчетного счета 00000000145 от 14.07.2021 12:00:01 | 70 / 51 | 29200\n100. 2021-07-14T12:00:00Z | Списание с расчетного счета 00000000144 от 14.07.2021 12:00:00 | 91.02 / 51 | 146\n101. 2021-07-12T12:00:03Z | Списание с расчетного счета 00000000143 от 12.07.2021 12:00:03 | 69.02.7 / 51 | 15370.08\n102. 2021-07-12T12:00:02Z | Списание с расчетного счета 00000000142 от 12.07.2021 12:00:02 | 69.03.1 / 51 | 6177.6\n103. 2021-07-12T12:00:01Z | Списание с расчетного счета 00000000141 от 12.07.2021 12:00:01 | 69.01 / 51 | 741.96\n104. 2021-07-12T12:00:00Z | Списание с расчетного счета 00000000140 от 12.07.2021 12:00:00 | 69.11 / 51 | 246\n105. 2021-07-09T12:00:03Z | Списание с расчетного счета 00000000139 от 09.07.2021 12:00:03 | 70 / 51 | 51312.53\n106. 2021-07-09T12:00:02Z | Списание с расчетного счета 00000000138 от 09.07.2021 12:00:02 | 68.01.1 / 51 | 7667\n107. 2021-07-09T12:00:01Z | Списание с расчетного счета 00000000137 от 09.07.2021 12:00:01 | 91.02 / 51 | 990\n108. 2021-07-09T12:00:00Z | Списание с расчетного счета 00000000136 от 09.07.2021 12:00:00 | 91.02 / 51 | 256.56\n109. 2021-07-05T12:00:01Z | Списание с расчетного счета 00000000135 от 05.07.2021 12:00:01 | 60.02 / 51 | 302560\n110. 2021-07-05T12:00:00Z | Списание с расчетного счета 00000000134 от 05.07.2021 12:00:00 | 91.02 / 51 | 1401.37\n111. 2021-06-29T12:00:03Z | Списание с расчетного счета 00000000133 от 29.06.2021 12:00:03 | 70 / 51 | 34310\n112. 2021-06-29T12:00:02Z | Списание с расчетного счета 00000000132 от 29.06.2021 12:00:02 | 70 / 51 | 23500\n113. 2021-06-29T12:00:01Z | Списание с расчетного счета 00000000131 от 29.06.2021 12:00:01 | 68.01.1 / 51 | 15990\n114. 2021-06-29T12:00:00Z | Списание с расчетного счета 00000000130 от 29.06.2021 12:00:00 | 91.02 / 51 | 289.05\n115. 2021-06-22T12:00:00Z | Поступление на расчетный счет 00000000010 от 22.06.2021 12:00:00 | 51 / 62.02 | 498630\n116. 2021-06-16T12:00:00Z | Списание с расчетного счета 00000000129 от 16.06.2021 12:00:00 | 60.02 / 51 | 105310\n117. 2021-06-15T12:00:03Z | Списание с расчетного счета 00000000128 от 15.06.2021 12:00:03 | 70 / 51 | 29200\n118. 2021-06-15T12:00:02Z | Списание с расчетного счета 00000000127 от 15.06.2021 12:00:02 | 70 / 51 | 20000\n119. 2021-06-15T12:00:01Z | Списание с расчетного счета 00000000126 от 15.06.2021 12:00:01 | 76.05 / 51 | 1400\n120. 2021-06-15T12:00:00Z | Списание с расчетного счета 00000000125 от 15.06.2021 12:00:00 | 91.02 / 51 | 246\n121. 2021-06-11T12:00:01Z | Списание с расчетного счета 00000000124 от 11.06.2021 12:00:01 | 60.02 / 51 | 119210\n122. 2021-06-11T12:00:00Z | Списание с расчетного счета 00000000123 от 11.06.2021 12:00:00 | 91.02 / 51 | 1000\n123. 2021-06-09T12:00:05Z | Поступление на расчетный счет 00000000009 от 09.06.2021 12:00:05 | 51 / 62.02 | 418960\n124. 2021-06-09T12:00:04Z | Списание с расчетного счета 00000000122 от 09.06.2021 12:00:04 | 69.02.7 / 51 | 15370.08\n125. 2021-06-09T12:00:03Z | Списание с расчетного счета 00000000121 от 09.06.2021 12:00:03 | 69.03.1 / 51 | 6175.08\n126. 2021-06-09T12:00:02Z | Списание с расчетного счета 00000000120 от 09.06.2021 12:00:02 | 91.02 / 51 | 990\n127. 2021-06-09T12:00:01Z | Списание с расчетного счета 00000000119 от 09.06.2021 12:00:01 | 69.01 / 51 | 741.92\n128. 2021-06-09T12:00:00Z | Списание с расчетного счета 00000000118 от 09.06.2021 12:00:00 | 69.11 / 51 | 246\n129. 2021-05-31T12:00:03Z | Списание с расчетного счета 00000000117 от 31.05.2021 12:00:03 | 70 / 51 | 34310\n130. 2021-05-31T12:00:02Z | Списание с расчетного счета 00000000116 от 31.05.2021 12:00:02 | 70 / 51 | 23500\n131. 2021-05-31T12:00:01Z | Списание с расчетного счета 00000000115 от 31.05.2021 12:00:01 | 68.01.1 / 51 | 15990\n132. 2021-05-31T12:00:00Z | Списание с расчетного счета 00000000114 от 31.05.2021 12:00:00 | 91.02 / 51 | 289.05\n133. 2021-05-19T12:00:00Z | Списание с расчетного счета 00000000113 от 19.05.2021 12:00:00 | 76.05 / 51 | 1400\n134. 2021-05-18T12:00:00Z | Списание с расчетного счета 00000000112 от 18.05.2021 12:00:00 | 60.02 / 51 | 180230\n135. 2021-05-13T00:00:06Z | Списание с расчетного счета 00000000110 от 13.05.2021 0:00:06 | 70 / 51 | 29200\n136. 2021-05-13T00:00:05Z | Списание с расчетного счета 00000000109 от 13.05.2021 0:00:05 | 70 / 51 | 20000\n137. 2021-05-13T00:00:04Z | Списание с расчетного счета 00000000108 от 13.05.2021 0:00:04 | 69.02.7 / 51 | 15370.08\n138. 2021-05-13T00:00:03Z | Списание с расчетного счета 00000000107 от 13.05.2021 0:00:03 | 69.03.1 / 51 | 6175.08\n139. 2021-05-13T00:00:02Z | Списание с расчетного счета 00000000106 от 13.05.2021 0:00:02 | 69.01 / 51 | 741.92\n140. 2021-05-13T00:00:01Z | Списание с расчетного счета 00000000105 от 13.05.2021 0:00:01 | 69.11 / 51 | 246\n141. 2021-05-13T00:00:00Z | Списание с расчетного счета 00000000104 от 13.05.2021 0:00:00 | 91.02 / 51 | 246\n142. 2021-05-09T12:00:00Z | Списание с расчетного счета 00000000111 от 09.05.2021 12:00:00 | 91.02 / 51 | 990\n143. 2021-04-29T12:00:01Z | Списание с расчетного счета 00000000103 от 29.04.2021 12:00:01 | 91.02 / 51 | 8\n144. 2021-04-29T12:00:00Z | Списание с расчетного счета 00000000102 от 29.04.2021 12:00:00 | 60.02 / 51 | 217415\n145. 2021-04-28T12:00:08Z | Поступление на расчетный счет 00000000008 от 28.04.2021 12:00:08 | 51 / 62.02 | 564300\n146. 2021-04-28T12:00:07Z | Списание с расчетного счета 00000000101 от 28.04.2021 12:00:07 | 60.02 / 51 | 114640\n147. 2021-04-28T12:00:06Z | Списание с расчетного счета 00000000100 от 28.04.2021 12:00:06 | 60.02 / 51 | 72000\n148. 2021-04-28T12:00:05Z | Списание с расчетного счета 00000000099 от 28.04.2021 12:00:05 | 70 / 51 | 34310\n149. 2021-04-28T12:00:04Z | Списание с расчетного счета 00000000098 от 28.04.2021 12:00:04 | 70 / 51 | 23500\n150. 2021-04-28T12:00:03Z | Списание с расчетного счета 00000000097 от 28.04.2021 12:00:03 | 68.01.1 / 51 | 15990\n151. 2021-04-28T12:00:02Z | Списание с расчетного счета 00000000096 от 28.04.2021 12:00:02 | 91.02 / 51 | 289.05\n152. 2021-04-28T12:00:01Z | Списание с расчетного счета 00000000095 от 28.04.2021 12:00:01 | 91.02 / 51 | 37\n153. 2021-04-28T12:00:00Z | Списание с расчетного счета 00000000094 от 28.04.2021 12:00:00 | 91.02 / 51 | 8\n154. 2021-04-27T12:00:01Z | Списание с расчетного счета 00000000093 от 27.04.2021 12:00:01 | 60.02 / 51 | 659320\n155. 2021-04-27T12:00:00Z | Списание с расчетного счета 00000000092 от 27.04.2021 12:00:00 | 91.02 / 51 | 8\n156. 2021-04-26T12:00:02Z | Списание с расчетного счета 00000000091 от 26.04.2021 12:00:02 | 60.02 / 51 | 109610\n157. 2021-04-26T12:00:01Z | Списание с расчетного счета 00000000090 от 26.04.2021 12:00:01 | 68.02 / 51 | 10010\n158. 2021-04-26T12:00:00Z | Списание с расчетного счета 00000000089 от 26.04.2021 12:00:00 | 91.02 / 51 | 8\n159. 2021-04-22T12:00:00Z | Поступление на расчетный счет 00000000007 от 22.04.2021 12:00:00 | 51 / 62.02 | 982420\n160. 2021-04-19T12:00:01Z | Списание с расчетного счета 00000000088 от 19.04.2021 12:00:01 | 60.02 / 51 | 162300\n161. 2021-04-19T12:00:00Z | Списание с расчетного счета 00000000087 от 19.04.2021 12:00:00 | 91.02 / 51 | 8\n162. 2021-04-16T12:00:00Z | Списание с расчетного счета 00000000086 от 16.04.2021 12:00:00 | 76.05 / 51 | 1400\n163. 2021-04-13T12:00:11Z | Поступление на расчетный счет 00000000006 от 13.04.2021 12:00:11 | 51 / 62.02 | 1882400\n164. 2021-04-13T12:00:10Z | Списание с расчетного счета 00000000085 от 13.04.2021 12:00:10 | 66.03 / 51 | 1000000\n165. 2021-04-13T12:00:09Z | Списание с расчетного счета 00000000084 от 13.04.2021 12:00:09 | 60.02 / 51 | 615320\n166. 2021-04-13T12:00:08Z | Списание с расчетного счета 00000000083 от 13.04.2021 12:00:08 | 60.02 / 51 | 144320\n167. 2021-04-13T12:00:07Z | Списание с расчетного счета 00000000082 от 13.04.2021 12:00:07 | 70 / 51 | 29200\n168. 2021-04-13T12:00:06Z | Списание с расчетного счета 00000000081 от 13.04.2021 12:00:06 | 70 / 51 | 20000\n169. 2021-04-13T12:00:05Z | Списание с расчетного счета 00000000080 от 13.04.2021 12:00:05 | 66.04 / 51 | 19139.34\n170. 2021-04-13T12:00:04Z | Списание с расчетного счета 00000000079 от 13.04.2021 12:00:04 | 69.02.7 / 51 | 15370.08\n171. 2021-04-13T12:00:03Z | Списание с расчетного счета 00000000078 от 13.04.2021 12:00:03 | 69.03.1 / 51 | 6175.08\n172. 2021-04-13T12:00:02Z | Списание с расчетного счета 00000000077 от 13.04.2021 12:00:02 | 91.02 / 51 | 246\n173. 2021-04-13T12:00:01Z | Списание с расчетного счета 00000000076 от 13.04.2021 12:00:01 | 69.01 / 51 | 741.94\n174. 2021-04-13T12:00:00Z | Списание с расчетного счета 00000000075 от 13.04.2021 12:00:00 | 69.11 / 51 | 246\n175. 2021-04-09T12:00:00Z | Списание с расчетного счета 00000000074 от 09.04.2021 12:00:00 | 91.02 / 51 | 2100\n176. 2021-04-06T12:00:01Z | Списание с расчетного счета 00000000073 от 06.04.2021 12:00:01 | 60.02 / 51 | 11900\n177. 2021-04-06T12:00:00Z | Списание с расчетного счета 00000000072 от 06.04.2021 12:00:00 | 91.02 / 51 | 37\n178. 2021-03-31T12:00:05Z | Списание с расчетного счета 00000000071 от 31.03.2021 12:00:05 | 70 / 51 | 34310\n179. 2021-03-31T12:00:04Z | Списание с расчетного счета 00000000070 от 31.03.2021 12:00:04 | 70 / 51 | 23500\n180. 2021-03-31T12:00:03Z | Списание с расчетного счета 00000000069 от 31.03.2021 12:00:03 | 68.01.1 / 51 | 15990\n181. 2021-03-31T12:00:02Z | Списание с расчетного счета 00000000068 от 31.03.2021 12:00:02 | 91.02 / 51 | 289.05\n182. 2021-03-31T12:00:01Z | Списание с расчетного счета 00000000067 от 31.03.2021 12:00:01 | 70 / 51 | 50\n183. 2021-03-31T12:00:00Z | Списание с расчетного счета 00000000066 от 31.03.2021 12:00:00 | 91.02 / 51 | 37\n184. 2021-03-25T12:00:02Z | Поступление на расчетный счет 00000000005 от 25.03.2021 12:00:02 | 51 / 62.02 | 644315\n185. 2021-03-25T12:00:01Z | Списание с расчетного счета 00000000065 от 25.03.2021 12:00:01 | 60.02 / 51 | 990830\n186. 2021-03-25T12:00:00Z | Списание с расчетного счета 00000000064 от 25.03.2021 12:00:00 | 91.02 / 51 | 8\n187. 2021-03-24T12:00:03Z | Поступление на расчетный счет 00000000004 от 24.03.2021 12:00:03 | 51 / 62.02 | 1219990\n188. 2021-03-24T12:00:02Z | Списание с расчетного счета 00000000062 от 24.03.2021 12:00:02 | 60.01 / 51 | 530490\n189. 2021-03-24T12:00:01Z | Списание с расчетного счета 00000000061 от 24.03.2021 12:00:01 | 60.02 / 51 | 144220\n190. 2021-03-24T12:00:00Z | Списание с расчетного счета 00000000060 от 24.03.2021 12:00:00 | 91.02 / 51 | 37\n191. 2021-03-23T12:00:01Z | Списание с расчетного счета 00000000058 от 23.03.2021 12:00:01 | 66.04 / 51 | 37377.05\n192. 2021-03-23T12:00:00Z | Списание с расчетного счета 00000000057 от 23.03.2021 12:00:00 | 66.03 / 51 | 600000\n193. 2021-03-22T12:00:03Z | Списание с расчетного счета 00000000197 от 22.03.2021 12:00:03 | 66.02 / 51 | 31857.79\n194. 2021-03-22T12:00:01Z | Списание с расчетного счета 00000000063 от 22.03.2021 12:00:01 | 66.02 / 51 | 1902.12\n195. 2021-03-22T12:00:00Z | Списание с расчетного счета 00000000059 от 22.03.2021 12:00:00 | 66.01 / 51 | 945302.69\n196. 2021-03-19T12:00:00Z | Списание с расчетного счета 00000000055 от 19.03.2021 12:00:00 | 76.05 / 51 | 1400\n197. 2021-03-18T12:00:00Z | Поступление на расчетный счет 00000000003 от 18.03.2021 12:00:00 | 51 / 62.02 | 1425310\n198. 2021-03-16T12:00:00Z | Списание с расчетного счета 00000000056 от 16.03.2021 12:00:00 | 91.02 / 51 | 60\n199. 2021-03-15T12:00:01Z | Списание с расчетного счета 00000000054 от 15.03.2021 12:00:01 | 66.02 / 51 | 7981.6\n200. 2021-03-15T12:00:00Z | Списание с расчетного счета 00000000053 от 15.03.2021 12:00:00 | 66.01 / 51 | 47921.4\n201. 2021-03-12T12:00:03Z | Поступление на расчетный счет 00000000002 от 12.03.2021 12:00:03 | 51 / 62.02 | 214600\n202. 2021-03-12T12:00:02Z | Списание с расчетного счета 00000000052 от 12.03.2021 12:00:02 | 70 / 51 | 29200\n203. 2021-03-12T12:00:01Z | Списание с расчетного счета 00000000051 от 12.03.2021 12:00:01 | 70 / 51 | 20000\n204. 2021-03-12T12:00:00Z | Списание с расчетного счета 00000000050 от 12.03.2021 12:00:00 | 91.02 / 51 | 246\n205. 2021-03-10T12:00:04Z | Списание с расчетного счета 00000000049 от 10.03.2021 12:00:04 | 60.02 / 51 | 56930\n206. 2021-03-10T12:00:03Z | Списание с расчетного счета 00000000047 от 10.03.2021 12:00:03 | 69.03.1 / 51 | 6175.08\n207. 2021-03-10T12:00:02Z | Списание с расчетного счета 00000000046 от 10.03.2021 12:00:02 | 69.11 / 51 | 246\n208. 2021-03-10T12:00:01Z | Списание с расчетного счета 00000000045 от 10.03.2021 12:00:01 | 69.01 / 51 | 741.94\n209. 2021-03-10T12:00:00Z | Списание с расчетного счета 00000000044 от 10.03.2021 12:00:00 | 91.02 / 51 | 2100\n210. 2021-03-10T00:00:00Z | Списание с расчетного счета 00000000048 от 10.03.2021 0:00:00 | 69.02.7 / 51 | 15370.08\n211. 2021-02-26T12:00:05Z | Списание с расчетного счета 00000000043 от 26.02.2021 12:00:05 | 60.02 / 51 | 50000\n212. 2021-02-26T12:00:04Z | Списание с расчетного счета 00000000042 от 26.02.2021 12:00:04 | 70 / 51 | 34310\n213. 2021-02-26T12:00:03Z | Списание с расчетного счета 00000000041 от 26.02.2021 12:00:03 | 70 / 51 | 23500\n214. 2021-02-26T12:00:02Z | Списание с расчетного счета 00000000040 от 26.02.2021 12:00:02 | 68.01.1 / 51 | 15990\n215. 2021-02-26T12:00:01Z | Списание с расчетного счета 00000000039 от 26.02.2021 12:00:01 | 91.02 / 51 | 289.05\n216. 2021-02-26T12:00:00Z | Списание с расчетного счета 00000000038 от 26.02.2021 12:00:00 | 70 / 51 | 50\n217. 2021-02-20T12:00:00Z | Списание с расчетного счета 00000000037 от 20.02.2021 12:00:00 | 60.02 / 51 | 320600\n218. 2021-02-19T12:00:01Z | Поступление на расчетный счет 00000000001 от 19.02.2021 12:00:01 | 51 / 62.02 | 518600\n219. 2021-02-19T12:00:00Z | Списание с расчетного счета 00000000036 от 19.02.2021 12:00:00 | 76.05 / 51 | 1400\n220. 2021-02-16T12:00:00Z | Списание с расчетного счета 00000000035 от 16.02.2021 12:00:00 | 91.02 / 51 | 60\n221. 2021-02-15T12:00:01Z | Списание с расчетного счета 00000000034 от 15.02.2021 12:00:01 | 66.02 / 51 | 27265.44\n222. 2021-02-15T12:00:00Z | Списание с расчетного счета 00000000033 от 15.02.2021 12:00:00 | 66.01 / 51 | 2137760.56\n223. 2021-02-12T12:00:02Z | Списание с расчетного счета 00000000031 от 12.02.2021 12:00:02 | 70 / 51 | 29200\n224. 2021-02-12T12:00:01Z | Списание с расчетного счета 00000000030 от 12.02.2021 12:00:01 | 70 / 51 | 20000\n225. 2021-02-12T12:00:00Z | Списание с расчетного счета 00000000029 от 12.02.2021 12:00:00 | 91.02 / 51 | 246\n226. 2021-02-09T12:00:00Z | Списание с расчетного счета 00000000032 от 09.02.2021 12:00:00 | 91.02 / 51 | 2100\n227. 2021-02-02T12:00:03Z | Списание с расчетного счета 00000000028 от 02.02.2021 12:00:03 | 60.02 / 51 | 425600\n228. 2021-02-02T12:00:02Z | Списание с расчетного счета 00000000027 от 02.02.2021 12:00:02 | 66.04 / 51 | 77854.1\n229. 2021-02-02T12:00:01Z | Списание с расчетного счета 00000000026 от 02.02.2021 12:00:01 | 66.04 / 51 | 28196.72\n230. 2021-02-02T12:00:00Z | Списание с расчетного счета 00000000025 от 02.02.2021 12:00:00 | 91.02 / 51 | 37\n231. 2021-01-29T12:00:03Z | Списание с расчетного счета 00000000024 от 29.01.2021 12:00:03 | 69.02.7 / 51 | 10720.08\n232. 2021-01-29T12:00:02Z | Списание с расчетного счета 00000000023 от 29.01.2021 12:00:02 | 69.03.1 / 51 | 3850.58\n233. 2021-01-29T12:00:01Z | Списание с расчетного счета 00000000022 от 29.01.2021 12:00:01 | 69.01 / 51 | 741.94\n234. 2021-01-29T12:00:00Z | Списание с расчетного счета 00000000021 от 29.01.2021 12:00:00 | 69.11 / 51 | 153\n235. 2021-01-28T12:00:02Z | Списание с расчетного счета 00000000020 от 28.01.2021 12:00:02 | 60.02 / 51 | 126300\n236. 2021-01-28T12:00:01Z | Списание с расчетного счета 00000000019 от 28.01.2021 12:00:01 | 91.02 / 51 | 179.78\n237. 2021-01-28T12:00:00Z | Списание с расчетного счета 00000000016 от 28.01.2021 12:00:00 | 70 / 51 | 17155\n238. 2021-01-28T00:00:00Z | Списание с расчетного счета 00000000018 от 28.01.2021 0:00:00 | 68.01.1 / 51 | 9945\n239. 2021-01-28T00:00:00Z | Списание с расчетного счета 00000000017 от 28.01.2021 0:00:00 | 70 / 51 | 18800\n240. 2021-01-28T00:00:00Z | Списание с расчетного счета 00000000015 от 28.01.2021 0:00:00 | 70 / 51 | 50\n241. 2021-01-25T12:00:00Z | Списание с расчетного счета 00000000014 от 25.01.2021 12:00:00 | 68.02 / 51 | 88003\n242. 2021-01-18T12:00:04Z | Списание с расчетного счета 00000000013 от 18.01.2021 12:00:04 | 70 / 51 | 16000\n243. 2021-01-18T12:00:03Z | Списание с расчетного счета 00000000012 от 18.01.2021 12:00:03 | 70 / 51 | 14600\n244. 2021-01-18T12:00:02Z | Списание с расчетного счета 00000000011 от 18.01.2021 12:00:02 | 91.02 / 51 | 2500\n245. 2021-01-18T12:00:01Z | Списание с расчетного счета 00000000010 от 18.01.2021 12:00:01 | 76.05 / 51 | 1400\n246. 2021-01-18T12:00:00Z | Списание с расчетного счета 00000000009 от 18.01.2021 12:00:00 | 91.02 / 51 | 153\n247. 2021-01-16T12:00:00Z | Списание с расчетного счета 00000000008 от 16.01.2021 12:00:00 | 91.02 / 51 | 60\n248. 2021-01-15T12:00:05Z | Списание с расчетного счета 00000000007 от 15.01.2021 12:00:05 | 66.02 / 51 | 28403.09\n249. 2021-01-15T12:00:04Z | Списание с расчетного счета 00000000006 от 15.01.2021 12:00:04 | 66.01 / 51 | 136622.91\n250. 2021-01-15T12:00:03Z | Списание с расчетного счета 00000000005 от 15.01.2021 12:00:03 | 69.02.7 / 51 | 10561.2\n251. 2021-01-15T12:00:02Z | Списание с расчетного счета 00000000004 от 15.01.2021 12:00:02 | 69.03.1 / 51 | 3849.26\n252. 2021-01-15T12:00:01Z | Списание с расчетного счета 00000000003 от 15.01.2021 12:00:01 | 69.01 / 51 | 703.54\n253. 2021-01-15T12:00:00Z | Списание с расчетного счета 00000000002 от 15.01.2021 12:00:00 | 69.11 / 51 | 153\n254. 2021-01-09T12:00:00Z | Списание с расчетного счета 00000000001 от 09.01.2021 12:00:00 | 91.02 / 51 | 2100\n255. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 51 / 62.02 | 3248300\n256. 2020-12-25T12:00:04Z | Списание с расчетного счета 00000000299 от 25.12.2020 12:00:04 | 91.02 / 51 | 179.78\n257. 2020-12-25T12:00:03Z | Списание с расчетного счета 00000000298 от 25.12.2020 12:00:03 | 68.01.1 / 51 | 9945\n258. 2020-12-25T12:00:02Z | Списание с расчетного счета 00000000297 от 25.12.2020 12:00:02 | 70 / 51 | 18800\n259. 2020-12-25T12:00:01Z | Списание с расчетного счета 00000000296 от 25.12.2020 12:00:01 | 70 / 51 | 17155\n260. 2020-12-25T12:00:00Z | Списание с расчетного счета 00000000295 от 25.12.2020 12:00:00 | 70 / 51 | 50\n261. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 51 / 62.02 | 216600\n262. 2020-12-16T16:20:52Z | Списание с расчетного счета 00000000294 от 16.12.2020 16:20:52 | 69.03.1 / 51 | 3849.26\n263. 2020-12-16T16:20:51Z | Списание с расчетного счета 00000000293 от 16.12.2020 16:20:51 | 91.02 / 51 | 60\n264. 2020-12-16T16:20:50Z | Списание с расчетного счета 00000000292 от 16.12.2020 16:20:50 | 69.02.7 / 51 | 10561.2\n265. 2020-12-16T16:20:27Z | Списание с расчетного счета 00000000291 от 16.12.2020 16:20:27 | 69.01 / 51 | 703.54\n266. 2020-12-16T16:20:06Z | Списание с расчетного счета 00000000290 от 16.12.2020 16:20:06 | 69.11 / 51 | 153\n267. 2020-12-15T11:13:41Z | Списание с расчетного счета 00000000289 от 15.12.2020 11:13:41 | 91.02 / 51 | 153\n268. 2020-12-15T11:13:40Z | Списание с расчетного счета 00000000288 от 15.12.2020 11:13:40 | 70 / 51 | 16000\n269. 2020-12-15T11:13:39Z | Списание с расчетного счета 00000000287 от 15.12.2020 11:13:39 | 70 / 51 | 14600\n270. 2020-12-15T11:13:38Z | Списание с расчетного счета 00000000286 от 15.12.2020 11:13:38 | 76.05 / 51 | 1400\n271. 2020-12-15T11:13:37Z | Списание с расчетного счета 00000000285 от 15.12.2020 11:13:37 | 66.02 / 51 | 28622.55\n272. 2020-12-15T11:13:21Z | Списание с расчетного счета 00000000284 от 15.12.2020 11:13:21 | 66.01 / 51 | 136403.45\n273. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 51 / 62.02 | 200000\n274. 2020-12-09T12:00:00Z | Списание с расчетного счета 00000000283 от 09.12.2020 12:00:00 | 91.02 / 51 | 2100\n275. 2020-11-30T12:00:07Z | Поступление на расчетный счет 00000000041 от 30.11.2020 12:00:07 | 51 / 62.02 | 38900\n276. 2020-11-30T12:00:06Z | Списание с расчетного счета 00000000282 от 30.11.2020 12:00:06 | 70 / 51 | 18800\n277. 2020-11-30T12:00:05Z | Списание с расчетного счета 00000000281 от 30.11.2020 12:00:05 | 70 / 51 | 17155\n278. 2020-11-30T12:00:04Z | Списание с расчетного счета 00000000280 от 30.11.2020 12:00:04 | 68.01.1 / 51 | 9945\n279. 2020-11-30T12:00:03Z | Списание с расчетного счета 00000000278 от 30.11.2020 12:00:03 | 70 / 51 | 50\n280. 2020-11-30T12:00:02Z | Списание с расчетного счета 00000000277 от 30.11.2020 12:00:02 | 91.02 / 51 | 37\n281. 2020-11-30T00:00:00Z | Списание с расчетного счета 00000000279 от 30.11.2020 0:00:00 | 91.02 / 51 | 179.78\n282. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 900000\n283. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 144749\n284. 2020-11-26T12:00:02Z | Списание с расчетного счета 00000000276 от 26.11.2020 12:00:02 | 60.01 / 51 | 524730.5\n285. 2020-11-26T12:00:02Z | Списание с расчетного счета 00000000276 от 26.11.2020 12:00:02 | 60.01 / 51 | 210770.5\n286. 2020-11-26T12:00:01Z | Списание с расчетного счета 00000000275 от 26.11.2020 12:00:01 | 66.03 / 51 | 400000\n287. 2020-11-26T12:00:00Z | Списание с расчетного счета 00000000274 от 26.11.2020 12:00:00 | 91.02 / 51 | 74\n288. 2020-11-23T12:00:01Z | Списание с расчетного счета 00000000273 от 23.11.2020 12:00:01 | 60.01 / 51 | 5429.5\n289. 2020-11-23T12:00:01Z | Списание с расчетного счета 00000000273 от 23.11.2020 12:00:01 | 60.01 / 51 | 63870.5\n290. 2020-11-23T12:00:00Z | Списание с расчетного счета 00000000272 от 23.11.2020 12:00:00 | 91.02 / 51 | 37\n291. 2020-11-19T12:00:04Z | Поступление на расчетный счет 00000000039 от 19.11.2020 12:00:04 | 51 / 62.02 | 1041800\n292. 2020-11-19T12:00:04Z | Поступление на расчетный счет 00000000039 от 19.11.2020 12:00:04 | 51 / 62.01 | 2278800\n293. 2020-11-19T12:00:03Z | Списание с расчетного счета 00000000271 от 19.11.2020 12:00:03 | 66.03 / 51 | 2335000\n294. 2020-11-19T12:00:02Z | Списание с расчетного счета 00000000270 от 19.11.2020 12:00:02 | 60.02 / 51 | 900000\n295. 2020-11-19T12:00:01Z | Списание с расчетного счета 00000000269 от 19.11.2020 12:00:01 | 91.02 / 51 | 37\n296. 2020-11-19T12:00:00Z | Списание с расчетного счета 00000000268 от 19.11.2020 12:00:00 | 91.02 / 51 | 8\n297. 2020-11-18T12:00:05Z | Поступление на расчетный счет 00000000038 от 18.11.2020 12:00:05 | 51 / 62.01 | 745300\n298. 2020-11-18T12:00:04Z | Поступление на расчетный счет 00000000037 от 18.11.2020 12:00:04 | 51 / 62.01 | 320000\n299. 2020-11-18T12:00:03Z | Списание с расчетного счета 00000000267 от 18.11.2020 12:00:03 | 60.02 / 51 | 144749\n300. 2020-11-18T12:00:03Z | Списание с расчетного счета 00000000267 от 18.11.2020 12:00:03 | 60.01 / 51 | 160000\n301. 2020-11-18T12:00:03Z | Списание с расчетного счета 00000000267 от 18.11.2020 12:00:03 | 60.01 / 51 | 389551\n302. 2020-11-18T12:00:02Z | Списание с расчетного счета 00000000266 от 18.11.2020 12:00:02 | 60.01 / 51 | 318600\n303. 2020-11-18T12:00:01Z | Списание с расчетного счета 00000000265 от 18.11.2020 12:00:01 | 76.05 / 51 | 1400\n304. 2020-11-18T12:00:00Z | Списание с расчетного счета 00000000264 от 18.11.2020 12:00:00 | 91.02 / 51 | 16\n305. 2020-11-16T16:08:52Z | Списание с расчетного счета 00000000263 от 16.11.2020 16:08:52 | 60.01 / 51 | 49298\n306. 2020-11-16T16:08:52Z | Списание с расчетного счета 00000000263 от 16.11.2020 16:08:52 | 60.01 / 51 | 3152\n307. 2020-11-16T16:08:51Z | Списание с расчетного счета 00000000262 от 16.11.2020 16:08:51 | 60.02 / 51 | 8700\n308. 2020-11-16T16:08:50Z | Списание с расчетного счета 00000000261 от 16.11.2020 16:08:50 | 91.02 / 51 | 60\n309. 2020-11-16T16:08:49Z | Списание с расчетного счета 00000000260 от 16.11.2020 16:08:49 | 66.01 / 51 | 165026\n310. 2020-11-13T12:00:03Z | Поступление на расчетный счет 00000000036 от 13.11.2020 12:00:03 | 51 / 62.01 | 313600\n311. 2020-11-13T12:00:02Z | Списание с расчетного счета 00000000258 от 13.11.2020 12:00:02 | 70 / 51 | 16000\n312. 2020-11-13T12:00:01Z | Списание с расчетного счета 00000000257 от 13.11.2020 12:00:01 | 70 / 51 | 14600\n313. 2020-11-13T12:00:00Z | Списание с расчетного счета 00000000256 от 13.11.2020 12:00:00 | 91.02 / 51 | 153\n314. 2020-11-13T00:00:00Z | Списание с расчетного счета 00000000259 от 13.11.2020 0:00:00 | 60.01 / 51 | 218400\n315. 2020-11-11T12:00:00Z | Списание с расчетного счета 00000000255 от 11.11.2020 12:00:00 | 66.04 / 51 | 19425.82\n316. 2020-11-10T15:39:13Z | Поступление на расчетный счет 00000000035 от 10.11.2020 15:39:13 | 51 / 62.02 | 328300\n317. 2020-11-09T12:00:00Z | Списание с расчетного счета 00000000253 от 09.11.2020 12:00:00 | 91.02 / 51 | 2100\n318. 2020-11-09T00:00:00Z | Списание с расчетного счета 00000000254 от 09.11.2020 0:00:00 | 60.01 / 51 | 151080\n319. 2020-10-27T12:00:01Z | Списание с расчетного счета 00000000252 от 27.10.2020 12:00:01 | 60.01 / 51 | 120000\n320. 2020-10-27T12:00:00Z | Списание с расчетного счета 00000000251 от 27.10.2020 12:00:00 | 70 / 51 | 50\n321. 2020-10-26T12:00:01Z | Списание с расчетного счета 00000000250 от 26.10.2020 12:00:01 | 68.02 / 51 | 4964\n322. 2020-10-26T12:00:00Z | Поступление на расчетный счет 00000000034 от 26.10.2020 12:00:00 | 51 / 62.02 | 175000\n323. 2020-10-20T12:00:00Z | Списание с расчетного счета 00000000248 от 20.10.2020 12:00:00 | 76.05 / 51 | 1400\n324. 2020-10-16T12:00:00Z | Списание с расчетного счета 00000000249 от 16.10.2020 12:00:00 | 91.02 / 51 | 60\n325. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n326. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53\n327. 2020-10-14T12:00:00Z | Поступление на расчетный счет 00000000033 от 14.10.2020 12:00:00 | 51 / 60.01 | 160000\n328. 2020-10-09T12:00:00Z | Списание с расчетного счета 00000000247 от 09.10.2020 12:00:00 | 91.02 / 51 | 2100\n329. 2020-10-01T12:00:00Z | Списание с расчетного счета 00000000244 от 01.10.2020 12:00:00 | 60.01 / 51 | 49460\n330. 2020-09-30T12:00:03Z | Списание с расчетного счета 00000000243 от 30.09.2020 12:00:03 | 60.01 / 51 | 30000\n331. 2020-09-30T12:00:02Z | Списание с расчетного счета 00000000242 от 30.09.2020 12:00:02 | 70 / 51 | 50\n332. 2020-09-29T12:00:00Z | Списание с расчетного счета 00000000240 от 29.09.2020 12:00:00 | 60.01 / 51 | 159400\n333. 2020-09-23T12:00:03Z | Списание с расчетного счета 00000000241 от 23.09.2020 12:00:03 | 91.02 / 51 | 60\n334. 2020-09-23T12:00:02Z | Списание с расчетного счета 00000000239 от 23.09.2020 12:00:02 | 69.03.1 / 51 | 12.58\n335. 2020-09-23T12:00:01Z | Списание с расчетного счета 00000000238 от 23.09.2020 12:00:01 | 68.02 / 51 | 54.27\n336. 2020-09-23T12:00:00Z | Списание с расчетного счета 00000000237 от 23.09.2020 12:00:00 | 68.02 / 51 | 41441\n337. 2020-09-15T12:00:01Z | Списание с расчетного счета 00000000236 от 15.09.2020 12:00:01 | 66.02 / 51 | 33053.64\n338. 2020-09-15T12:00:00Z | Списание с расчетного счета 00000000235 от 15.09.2020 12:00:00 | 66.01 / 51 | 131972.36\n339. 2020-09-14T12:00:04Z | Списание с расчетного счета 00000000234 от 14.09.2020 12:00:04 | 69.02.7 / 51 | 14973.39\n340. 2020-09-14T12:00:03Z | Списание с расчетного счета 00000000233 от 14.09.2020 12:00:03 | 69.03.1 / 51 | 6055.36\n341. 2020-09-14T12:00:02Z | Списание с расчетного счета 00000000232 от 14.09.2020 12:00:02 | 76.05 / 51 | 1400", + "assistant_reply_first_line": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "materialized_but_not_anchor_matched", + "match_failure_reason": "contract_anchor_not_matched_in_materialized_rows", + "rows_fetched": 1000, + "rows_matched": 341, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-Tg2WSAIJjJ", + "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", + "anchor_not_matched_fallback_rows" + ], + "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": "19/15 в банковском учете" + }, + "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": "19/15 в банковском учете", + "anchor_value_resolved": "19/15 в банковском учете", + "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": "matched_non_empty", + "rows_fetched": 1000, + "raw_rows_received": 1000, + "rows_after_account_scope": 341, + "rows_after_recipe_filter": 0, + "rows_materialized": 341, + "rows_matched": 341, + "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": "gOfN98nilyEmGf", + "llm_decomposition_effective_message": "операции по договору 19/15 в банковском учете", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "bank ops by contract 19/15", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "gOfN98nilyEmGf", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "операции по договору 19/15 в банковском учете" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 99, + "id": "X039", + "question": "покажи банк опер по дог 19/15 пж", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-11-51-x039", + "status_code": 200, + "ok": true, + "elapsed_ms": 8095, + "reply_type": "factual", + "trace_id": "address-DjMkpUvjM8", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 1.\n1. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "assistant_reply_first_line": "Собран список банковских операций по договору (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 1, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-DjMkpUvjM8", + "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", + "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": "high", + "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": "19/15" + }, + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": 1, + "rows_materialized": 341, + "rows_matched": 1, + "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": "8bpY45_0OffjGT", + "llm_decomposition_effective_message": "Показать банковские операции по договору 19/15, пожалуйста.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "покажи банк операции по договор 19/15", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "8bpY45_0OffjGT", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Показать банковские операции по договору 19/15, пожалуйста." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 100, + "id": "X040", + "question": "епт транзакции договор 19/15", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-11-51-x040", + "status_code": 200, + "ok": true, + "elapsed_ms": 8171, + "reply_type": "factual", + "trace_id": "address-h9SzJPFNso", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 1.\n1. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "assistant_reply_first_line": "Собран список банковских операций по договору (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 1, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-h9SzJPFNso", + "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": "19/15" + }, + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": 1, + "rows_materialized": 341, + "rows_matched": 1, + "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": "N-6L9qRYX-wAYc", + "llm_decomposition_effective_message": "Неясные транзакции по договору 19/15.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "транзакции договор 19/15", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "N-6L9qRYX-wAYc", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Неясные транзакции по договору 19/15." + } + }, + "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_Nightly_stress_102_20-11-51-chain_balance_60_extra", + "status_code": 200, + "ok": true, + "elapsed_ms": 5950, + "reply_type": "factual", + "trace_id": "address-xLUqegVFXi", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 138, + "rows_matched": 138, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-xLUqegVFXi", + "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-01-01", + "period_to": "2020-12-31", + "as_of_date": "2020-12-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": 138, + "raw_rows_received": 138, + "rows_after_account_scope": 138, + "rows_after_recipe_filter": 138, + "rows_materialized": 138, + "rows_matched": 138, + "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": "t_zWd8gY6W8y3d", + "llm_decomposition_effective_message": "Показать сальдо по счету 60 за период 2020 год.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "покажи сальдо по счету 60 за 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "t_zWd8gY6W8y3d", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Показать сальдо по счету 60 за период 2020 год." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 102, + "id": "X042", + "question": "а теперь только май 2020", + "session": "chain_balance_60_extra", + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-11-51-chain_balance_60_extra", + "status_code": 200, + "ok": true, + "elapsed_ms": 967, + "reply_type": "factual", + "trace_id": "address-kyOggfSe4m", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 6, + "rows_matched": 6, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-kyOggfSe4m", + "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", + "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, + "period_from": "2020-05-01", + "period_to": "2020-05-31", + "as_of_date": "2020-05-31", + "account": "60" + }, + "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": "а теперь только май 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 + }, + "error_code": null, + "error_message": null + } + ] +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_stress_102_20-11-51/response_audit.md b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_stress_102_20-11-51/response_audit.md new file mode 100644 index 0000000..e480800 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_stress_102_20-11-51/response_audit.md @@ -0,0 +1,106 @@ +# Response Audit: 2026-04-02_Address_Nightly_stress_102_20-11-51 + +| id | strict | route_health | reply_type | intent | limited_reason | question | assistant_first_line | +|---|---|---|---|---|---|---|---| +| S001 | True | ok_or_factual | factual | list_documents_by_counterparty | None | свк доки за 2020 покаж пж | Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу. | +| S002 | True | ok_or_factual | factual | list_documents_by_counterparty | None | покеж все доки по свк за 20 год | Собран список документов по контрагенту (live address lane). | +| S003 | True | ok_or_factual | factual | list_documents_by_counterparty | None | дай список документов по свк за 2020 | Собран список документов по контрагенту (live address lane). | +| S004 | True | ok_or_factual | factual | list_documents_by_counterparty | None | какие у свк есть доки за 2020? | Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу. | +| S005 | True | ok_or_factual | factual | list_documents_by_counterparty | None | че по свк по докам за 2020 год | Собран список документов по контрагенту (live address lane). | +| S006 | True | ok_or_factual | factual | list_documents_by_counterparty | None | ёпт покажи доки по свк за 2020 | Собран список документов по контрагенту (live address lane). | +| S007 | True | ok_or_factual | factual | list_documents_by_counterparty | None | бля, доки свк 2020 вывали | Собран список документов по контрагенту (live address lane). | +| S008 | True | ok_or_factual | factual | list_documents_by_counterparty | None | svk docs for 2020 please | Собран список документов по контрагенту (live address lane). | +| S009 | True | ok_or_factual | factual | list_documents_by_counterparty | None | docs by counterparty svk year 2020 | Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу. | +| S010 | True | ok_or_factual | factual | list_documents_by_counterparty | None | по контрагенту свк покаж документы за 2020 | Собран список документов по контрагенту (live address lane). | +| S011 | True | ok_or_factual | factual | list_documents_by_counterparty | None | плс доки по свк 2020 | Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу. | +| S012 | True | ok_or_factual | factual | list_documents_by_counterparty | None | свк док за 2020 гони | Собран список документов по контрагенту (live address lane). | +| S013 | True | ok_or_factual | factual | bank_operations_by_counterparty | None | по свк банковские операции за 2020 покаж | Собран список банковских операций по контрагенту (live address lane). | +| S014 | True | ok_or_factual | factual | bank_operations_by_counterparty | None | свк выписка банка 2020 | Собран список банковских операций по контрагенту (live address lane). | +| S015 | True | ok_or_factual | factual | bank_operations_by_counterparty | None | платежи по свк за 2020 выведи | Собран список банковских операций по контрагенту (live address lane). | +| S016 | True | ok_or_factual | factual | bank_operations_by_counterparty | None | оплаты по свк за 2020 | Собран список банковских операций по контрагенту (live address lane). | +| S017 | True | ok_or_factual | factual | bank_operations_by_counterparty | None | свк банк опер за 2020 | Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу. | +| S018 | True | ok_or_factual | factual | bank_operations_by_counterparty | None | че у свк по банку за 2020 | Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу. | +| S019 | True | ok_or_factual | factual | bank_operations_by_counterparty | None | свк списания/поступления за 2020 | Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу. | +| S020 | True | ok_or_factual | factual | bank_operations_by_counterparty | None | bank ops by svk for 2020 | Собран список банковских операций по контрагенту (live address lane). | +| S021 | True | ok_or_factual | factual | bank_operations_by_counterparty | None | transactions by counterparty svk 2020 | Собран список банковских операций по контрагенту (live address lane). | +| S022 | True | ok_or_factual | factual | bank_operations_by_counterparty | None | бля, по свк банковские платежки 2020 | Собран список банковских операций по контрагенту (live address lane). | +| S023 | True | ok_or_factual | factual | account_balance_snapshot | None | сальдо по счету 60.01 на дату 2020-07-31 | Адресный срез по счету собран (по движениям live MCP). | +| S024 | True | ok_or_factual | factual | account_balance_snapshot | None | остаток по счету 60.01 на 2020.05 | Адресный срез по счету собран (по движениям live MCP). | +| S025 | True | ok_or_factual | factual | account_balance_snapshot | None | покажи остаток по 60.01 за май 2020 | Адресный срез по счету собран (по движениям live MCP). | +| S026 | True | ok_or_factual | factual | account_balance_snapshot | None | счет 60 остаток на май 2020 | Адресный срез по счету собран (по движениям live MCP). | +| S027 | True | ok_or_factual | factual | account_balance_snapshot | None | баланс account 60.01 as of 2020-07-31 | Адресный срез по счету собран (по движениям live MCP). | +| S028 | True | ok_or_factual | factual | account_balance_snapshot | None | 60.01 saldo на 31.07.2020 | Адресный срез по счету собран (по движениям live MCP). | +| S029 | True | ok_or_factual | factual | account_balance_snapshot | None | сколько на счете 60 на конец 2020-05 | Адресный срез по счету собран (по движениям live MCP). | +| S030 | True | partial_non_blocking | partial_coverage | account_balance_snapshot | empty_match | дай остаток 60.02 на 2020-12-31 | В live-данных по текущему фильтру записи не найдены. | +| S031 | True | partial_non_blocking | partial_coverage | account_balance_snapshot | empty_match | епт, сальдо по счету 62.01 на 2020-12-31 | В live-данных по текущему фильтру записи не найдены. | +| S032 | True | ok_or_factual | factual | account_balance_snapshot | None | плс остаток по счету 51 на 2020-06-30 | Адресный срез по счету собран (по движениям live MCP). | +| S033 | True | ok_or_factual | factual | account_balance_snapshot | None | как там по счету 60.01 на 2020.07? | Адресный срез по счету собран (по движениям live MCP). | +| S034 | True | ok_or_factual | factual | account_balance_snapshot | None | сальдо 60 на 2020 | Адресный срез по счету собран (по движениям live MCP). | +| S035 | True | ok_or_factual | factual | documents_forming_balance | None | какие документы формируют остаток по счету 60.01 на 2020-07-31 | Собран drilldown документов, формирующих остаток по счету на указанную дату. | +| S036 | True | ok_or_factual | factual | documents_forming_balance | None | из чего состоит остаток по счету 60 на 2020.05 | Собран drilldown документов, формирующих остаток по счету на указанную дату. | +| S037 | True | ok_or_factual | factual | documents_forming_balance | None | раскрой остаток 60.01 по документам на конец июля 2020 | Собран drilldown документов, формирующих остаток по счету на указанную дату. | +| S038 | True | ok_or_factual | factual | documents_forming_balance | None | доки под остатком 60.01 на 2020-07-31 | Собран drilldown документов, формирующих остаток по счету на указанную дату. | +| S039 | True | ok_or_factual | factual | documents_forming_balance | None | documents forming balance for account 60.01 as of 2020-07-31 | Собран drilldown документов, формирующих остаток по счету на указанную дату. | +| S040 | True | ok_or_factual | factual | documents_forming_balance | None | бля, какие доки формируют остаток 60.01 на 2020-05-31 | Собран drilldown документов, формирующих остаток по счету на указанную дату. | +| S041 | True | partial_non_blocking | partial_coverage | documents_forming_balance | empty_match | по счету 62.01 раскрой остаток документами на 2020-12-31 | В live-данных по текущему фильтру записи не найдены. | +| S042 | True | ok_or_factual | factual | documents_forming_balance | None | из чего остаток по счету 51 на 2020-06-30 | Собран drilldown документов, формирующих остаток по счету на указанную дату. | +| S043 | True | ok_or_factual | factual | list_documents_by_contract | None | покажи документы по договору 19/15 за 2020 | Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк. | +| S044 | True | ok_or_factual | factual | list_documents_by_contract | None | доки по дог. 19/15 за 2020 | Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк. | +| S045 | True | ok_or_factual | factual | list_documents_by_contract | None | какие документы по контракту 19/15 | Собран список документов по договору (live address lane). | +| S046 | True | ok_or_factual | factual | list_documents_by_contract | None | docs by contract 19/15 year 2020 | Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк. | +| S047 | True | ok_or_factual | factual | list_documents_by_contract | None | бля, покажи по договору 19/15 доки | Собран список документов по договору (live address lane). | +| S048 | True | ok_or_factual | factual | list_documents_by_contract | None | договор 19/15 документы | Собран список документов по договору (live address lane). | +| S049 | True | ok_or_factual | factual | list_documents_by_contract | None | плс документы договор №19/15 | Собран список документов по договору (live address lane). | +| S050 | True | ok_or_factual | factual | list_documents_by_contract | None | покеж документы по 19/15 | Собран список документов по договору (live address lane). | +| S051 | True | ok_or_factual | factual | bank_operations_by_contract | None | банковские операции по договору 19/15 | Собран список банковских операций по договору (live address lane). | +| S052 | True | ok_or_factual | factual | bank_operations_by_contract | None | платежи по договору 19/15 | Собран список банковских операций по договору (live address lane). | +| S053 | True | ok_or_factual | factual | bank_operations_by_contract | None | выписка по договору 19/15 | Собран список банковских операций по договору (live address lane). | +| S054 | True | ok_or_factual | factual | bank_operations_by_contract | None | bank ops by contract 19/15 | Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу. | +| S055 | True | ok_or_factual | factual | bank_operations_by_contract | None | ёпт, покажи банк операции по дог 19/15 | Собран список банковских операций по договору (live address lane). | +| S056 | True | ok_or_factual | factual | bank_operations_by_contract | None | по контракту 19/15 платежки | Собран список банковских операций по договору (live address lane). | +| S057 | True | ok_or_factual | factual | account_balance_snapshot | None | покажи сальдо по счету 60 за 2020 | Адресный срез по счету собран (по движениям live MCP). | +| S058 | True | ok_or_factual | factual | account_balance_snapshot | None | а теперь только май 2020 | Адресный срез по счету собран (по движениям live MCP). | +| S059 | True | ok_or_factual | factual | account_balance_snapshot | None | ок, теперь 2020.05 | Адресный срез по счету собран (по движениям live MCP). | +| S060 | True | ok_or_factual | factual | account_balance_snapshot | None | теперь на 2020-07-31 | Адресный срез по счету собран (по движениям live MCP). | +| X001 | True | ok_or_factual | factual | list_documents_by_counterparty | None | свк доки кинь за 2020 | Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу. | +| X002 | True | ok_or_factual | factual | list_documents_by_counterparty | None | по свк все документы за 20й год | Собран список документов по контрагенту (live address lane). | +| X003 | True | ok_or_factual | factual | list_documents_by_counterparty | None | пж вывали доки контрагент свк 2020 | Собран список документов по контрагенту (live address lane). | +| X004 | True | ok_or_factual | factual | list_documents_by_counterparty | None | svk poka docy za 2020 | Собран список документов по контрагенту (live address lane). | +| X005 | True | ok_or_factual | factual | list_documents_by_counterparty | None | какие доки по компании свк за 2020 | Собран список документов по контрагенту (live address lane). | +| X006 | True | ok_or_factual | factual | list_documents_by_counterparty | None | бля покаж свк документы 2020 | Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу. | +| X007 | True | ok_or_factual | factual | bank_operations_by_counterparty | None | свк банк операции за 2020 | Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу. | +| X008 | True | ok_or_factual | factual | bank_operations_by_counterparty | None | по свк выписку банка за 2020 выведи | Собран список банковских операций по контрагенту (live address lane). | +| X009 | True | ok_or_factual | factual | bank_operations_by_counterparty | None | свк платежки за 2020 | Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу. | +| X010 | True | ok_or_factual | factual | bank_operations_by_counterparty | None | bank ops svk 2020 | Собран список банковских операций по контрагенту (live address lane). | +| X011 | True | ok_or_factual | factual | bank_operations_by_counterparty | None | транзакции по свк за 2020 | Собран список банковских операций по контрагенту (live address lane). | +| X012 | True | ok_or_factual | factual | bank_operations_by_counterparty | None | ёпт по свк че по банку 2020 | Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу. | +| X013 | True | ok_or_factual | factual | account_balance_snapshot | None | остаток по 60.01 на 2020-07-31 | Адресный срез по счету собран (по движениям live MCP). | +| X014 | True | ok_or_factual | factual | account_balance_snapshot | None | сальдо 60.01 на 31.07.2020 | Адресный срез по счету собран (по движениям live MCP). | +| X015 | True | ok_or_factual | factual | account_balance_snapshot | None | что на счете 60 на 2020.05 | Адресный срез по счету собран (по движениям live MCP). | +| X016 | True | ok_or_factual | factual | account_balance_snapshot | None | дай остаток 62.01 на 2020 май | Адресный срез по счету собран (по движениям live MCP). | +| X017 | True | partial_non_blocking | partial_coverage | account_balance_snapshot | empty_match | saldo account 60 as of 2020-12-31 | В live-данных по текущему фильтру записи не найдены. | +| X018 | True | ok_or_factual | factual | account_balance_snapshot | None | плиз остаток по счету 51 на 2020-06-30 | Адресный срез по счету собран (по движениям live MCP). | +| X019 | True | partial_non_blocking | partial_coverage | account_balance_snapshot | empty_match | скока по 60.02 на конец 2020-12 | В live-данных по текущему фильтру записи не найдены. | +| X020 | True | ok_or_factual | factual | account_balance_snapshot | None | бля сальдо 60.01 на 2020-05-31 | Адресный срез по счету собран (по движениям live MCP). | +| X021 | True | ok_or_factual | factual | documents_forming_balance | None | раскрой остаток 60.01 по документам на конец июля 2020 | Собран drilldown документов, формирующих остаток по счету на указанную дату. | +| X022 | True | ok_or_factual | factual | documents_forming_balance | None | доки под остатком 60.01 на 2020-07-31 | Собран drilldown документов, формирующих остаток по счету на указанную дату. | +| X023 | True | ok_or_factual | factual | documents_forming_balance | None | из чего остаток 60.01 на 2020-07-31 | Собран drilldown документов, формирующих остаток по счету на указанную дату. | +| X024 | True | ok_or_factual | factual | documents_forming_balance | None | какие документы формируют остаток по 60.01 на 2020-07-31 | Собран drilldown документов, формирующих остаток по счету на указанную дату. | +| X025 | True | ok_or_factual | factual | documents_forming_balance | None | docs forming balance 60.01 as of 2020-07-31 | Собран drilldown документов, формирующих остаток по счету на указанную дату. | +| X026 | True | partial_non_blocking | partial_coverage | documents_forming_balance | empty_match | раскидай остаток 62.01 по докам на 2020-12-31 | В live-данных по текущему фильтру записи не найдены. | +| X027 | True | ok_or_factual | factual | documents_forming_balance | None | по счету 51 раскрой остаток документами на 2020-06-30 | Собран drilldown документов, формирующих остаток по счету на указанную дату. | +| X028 | True | ok_or_factual | factual | documents_forming_balance | None | бля из чего состоит остаток по 60.01 на 2020-05-31 | Собран drilldown документов, формирующих остаток по счету на указанную дату. | +| X029 | True | ok_or_factual | factual | list_documents_by_contract | None | доки по договору 19/15 за 2020 | Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк. | +| X030 | True | ok_or_factual | factual | list_documents_by_contract | None | покажи документы контракт 19/15 | Собран список документов по договору (live address lane). | +| X031 | True | ok_or_factual | factual | list_documents_by_contract | None | docs by contract 19/15 2020 | Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк. | +| X032 | True | ok_or_factual | factual | list_documents_by_contract | None | по дог 19/15 какие документы | Собран список документов по договору (live address lane). | +| X033 | True | ok_or_factual | factual | list_documents_by_contract | None | договор 19/15 выведи доки | Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу. | +| X034 | True | ok_or_factual | factual | list_documents_by_contract | None | нах покажи документы по 19/15 | Собран список документов по договору (live address lane). | +| X035 | True | ok_or_factual | factual | bank_operations_by_contract | None | банк операции по договору 19/15 | Собран список банковских операций по договору (live address lane). | +| X036 | True | ok_or_factual | factual | bank_operations_by_contract | None | платежки по дог 19/15 | Собран список банковских операций по договору (live address lane). | +| X037 | True | ok_or_factual | factual | bank_operations_by_contract | None | выписка по контракту 19/15 | Собран список банковских операций по договору (live address lane). | +| X038 | True | ok_or_factual | factual | bank_operations_by_contract | None | bank ops by contract 19/15 | Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу. | +| X039 | True | ok_or_factual | factual | bank_operations_by_contract | None | покажи банк опер по дог 19/15 пж | Собран список банковских операций по договору (live address lane). | +| X040 | True | ok_or_factual | factual | bank_operations_by_contract | None | епт транзакции договор 19/15 | Собран список банковских операций по договору (live address lane). | +| X041 | True | ok_or_factual | factual | account_balance_snapshot | None | покажи сальдо по счету 60 за 2020 | Адресный срез по счету собран (по движениям live MCP). | +| X042 | True | ok_or_factual | factual | account_balance_snapshot | None | а теперь только май 2020 | Адресный срез по счету собран (по движениям live MCP). | diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_stress_102_20-11-51/run_summary.json b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_stress_102_20-11-51/run_summary.json new file mode 100644 index 0000000..4a888d9 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_stress_102_20-11-51/run_summary.json @@ -0,0 +1,54 @@ +{ + "run_id": "2026-04-02_Address_Nightly_stress_102_20-11-51", + "generated_at": "2026-04-02T20:23:18", + "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", + "strict_policy": "route", + "totals": { + "questions_total": 102, + "ok_200_count": 102, + "semantic_pass_count": 102, + "semantic_pass_rate": 1.0, + "route_pass_count": 102, + "route_pass_rate": 1.0, + "strict_pass_count": 102, + "strict_pass_rate": 1.0, + "factual_count": 96, + "partial_coverage_count": 6, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_applied_count": 81, + "avg_elapsed_ms": 6736.3 + }, + "distributions": { + "reply_type": { + "factual": 96, + "partial_coverage": 6 + }, + "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": { + "matched_non_empty": 96, + "no_raw_rows": 6 + }, + "limited_reason_category": { + "empty_match": 6 + }, + "route_health": { + "ok_or_factual": 96, + "partial_non_blocking": 6 + } + } +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_stress_102_20-11-51_comparator_report.json b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_stress_102_20-11-51_comparator_report.json new file mode 100644 index 0000000..615cfcd --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_stress_102_20-11-51_comparator_report.json @@ -0,0 +1,67 @@ +{ + "generated_at": "2026-04-02T20:23:18", + "overall_pass": true, + "baseline": { + "summary_path": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\runs\\2026-04-02_Address_Slang_Live_Stress_2026-04-02_12-57-27\\run_summary.json", + "run_id": "2026-04-02_Address_Slang_Live_Stress_2026-04-02_12-57-27", + "questions_total": 102, + "strict_pass_rate": 1.0, + "route_pass_rate": 1.0, + "execution_error_count": 0, + "false_factual_rate": 0.0, + "notes": [ + "execution_error_count derived as http_error_count + limited_reason_category.execution_error", + "false_factual_rate derived from false_factual_count/questions_total" + ] + }, + "candidate": { + "summary_path": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\runs\\2026-04-02_Address_Nightly_Regression_AfterFocusFix\\2026-04-02_Address_Nightly_stress_102_20-11-51\\run_summary.json", + "run_id": "2026-04-02_Address_Nightly_stress_102_20-11-51", + "questions_total": 102, + "strict_pass_rate": 1.0, + "route_pass_rate": 1.0, + "execution_error_count": 0, + "false_factual_rate": 0.0, + "notes": [ + "execution_error_count derived as http_error_count + limited_reason_category.execution_error", + "false_factual_rate derived from false_factual_count/questions_total" + ] + }, + "checks": [ + { + "metric": "strict_pass_rate", + "passed": true, + "baseline": 1.0, + "candidate": 1.0, + "rule": "candidate >= baseline" + }, + { + "metric": "route_pass_rate", + "passed": true, + "baseline": 1.0, + "candidate": 1.0, + "rule": "candidate >= baseline" + }, + { + "metric": "execution_error_count", + "passed": true, + "baseline": 0, + "candidate": 0, + "rule": "candidate <= baseline" + }, + { + "metric": "false_factual_rate", + "passed": true, + "baseline": 0.0, + "candidate": 0.0, + "rule": "candidate <= baseline" + }, + { + "metric": "questions_total_match", + "passed": true, + "baseline": 102, + "candidate": 102, + "rule": "candidate == baseline" + } + ] +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_stress_102_20-11-51_validator_report.json b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_stress_102_20-11-51_validator_report.json new file mode 100644 index 0000000..55d46d4 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_stress_102_20-11-51_validator_report.json @@ -0,0 +1,23 @@ +{ + "generated_at": "2026-04-02T20:23:18", + "total": 1, + "passed": 1, + "failed": 0, + "results": [ + { + "run_dir": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\runs\\2026-04-02_Address_Nightly_Regression_AfterFocusFix\\2026-04-02_Address_Nightly_stress_102_20-11-51", + "valid": true, + "errors": [], + "warnings": [], + "metrics": { + "run_id": "2026-04-02_Address_Nightly_stress_102_20-11-51", + "questions_total": 102, + "route_pass_rate": 1.0, + "strict_pass_rate": 1.0, + "http_error_count": 0, + "rows_count": 102, + "failures_count": 0 + } + } + ] +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_stress_102_20-16-06/README.md b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_stress_102_20-16-06/README.md new file mode 100644 index 0000000..f6ada34 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_stress_102_20-16-06/README.md @@ -0,0 +1,28 @@ +# 2026-04-02_Address_Nightly_stress_102_20-16-06 + +Generated at: 2026-04-02T20:27:52 +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 +Strict policy: route + +## Totals +- questions_total: 102 +- ok_200_count: 102 +- semantic_pass_count: 102 +- semantic_pass_rate: 1.0 +- route_pass_count: 102 +- route_pass_rate: 1.0 +- strict_pass_count: 102 +- strict_pass_rate: 1.0 +- factual_count: 96 +- partial_coverage_count: 6 +- clarification_required_count: 0 +- http_error_count: 0 +- llm_decomposition_applied_count: 81 +- avg_elapsed_ms: 6920.5 + +## Files +- run_summary.json +- full_live_results.json +- failures_only.json diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_stress_102_20-16-06/failures_only.json b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_stress_102_20-16-06/failures_only.json new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_stress_102_20-16-06/failures_only.json @@ -0,0 +1 @@ +[] diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_stress_102_20-16-06/full_live_results.json b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_stress_102_20-16-06/full_live_results.json new file mode 100644 index 0000000..8e13983 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_stress_102_20-16-06/full_live_results.json @@ -0,0 +1,15394 @@ +{ + "run_id": "2026-04-02_Address_Nightly_stress_102_20-16-06", + "generated_at": "2026-04-02T20:27:52", + "summary": { + "run_id": "2026-04-02_Address_Nightly_stress_102_20-16-06", + "generated_at": "2026-04-02T20:27:52", + "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", + "strict_policy": "route", + "totals": { + "questions_total": 102, + "ok_200_count": 102, + "semantic_pass_count": 102, + "semantic_pass_rate": 1.0, + "route_pass_count": 102, + "route_pass_rate": 1.0, + "strict_pass_count": 102, + "strict_pass_rate": 1.0, + "factual_count": 96, + "partial_coverage_count": 6, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_applied_count": 81, + "avg_elapsed_ms": 6920.5 + }, + "distributions": { + "reply_type": { + "factual": 96, + "partial_coverage": 6 + }, + "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": { + "matched_non_empty": 96, + "no_raw_rows": 6 + }, + "limited_reason_category": { + "empty_match": 6 + }, + "route_health": { + "ok_or_factual": 96, + "partial_non_blocking": 6 + } + } + }, + "rows": [ + { + "index": 1, + "id": "S001", + "question": "свк доки за 2020 покаж пж", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-16-06-s001", + "status_code": 200, + "ok": true, + "elapsed_ms": 9016, + "reply_type": "factual", + "trace_id": "address-dTp4zAcIAM", + "assistant_reply": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.\nСобран список документов по контрагенту (live address lane).\nСтрок отобрано: 5.\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-16T16:20:52Z | Списание с расчетного счета 00000000294 от 16.12.2020 16:20:52 | 0 / 0 | 3849.26 | аналитика: УФК по г. Москве (для ГУ - Отделения ПФР по г. Москве и МО)\n4. 2020-12-16T16:20:51Z | Списание с расчетного счета 00000000293 от 16.12.2020 16:20:51 | 0 / 0 | 60 | аналитика: СБЕРБАНК, ПАО\n5. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "assistant_reply_first_line": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "rows_fetched": 20, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-dTp4zAcIAM", + "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", + "anchor_not_matched_fallback_rows" + ], + "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": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "mcp_call_status": "matched_non_empty", + "rows_fetched": 20, + "raw_rows_received": 20, + "rows_after_account_scope": 5, + "rows_after_recipe_filter": 0, + "rows_materialized": 5, + "rows_matched": 5, + "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": "FR2-9FS_5uRAJR", + "llm_decomposition_effective_message": "Показать сводку документов за 2020 год.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "свк доки за 2020 покаж", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "FR2-9FS_5uRAJR", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Показать сводку документов за 2020 год." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 2, + "id": "S002", + "question": "покеж все доки по свк за 20 год", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-16-06-s002", + "status_code": 200, + "ok": true, + "elapsed_ms": 7895, + "reply_type": "factual", + "trace_id": "address-ma5VMPygWE", + "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 | аналитика: Группа", + "assistant_reply_first_line": "Собран список документов по контрагенту (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 20, + "rows_matched": 3, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-ma5VMPygWE", + "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": "zQf2rJtk3OVlwg", + "llm_decomposition_effective_message": "показать все документы по СВК за 2020 год", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "покеж все доки по свк за 2020 год", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "zQf2rJtk3OVlwg", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "показать все документы по СВК за 2020 год" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 3, + "id": "S003", + "question": "дай список документов по свк за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-16-06-s003", + "status_code": 200, + "ok": true, + "elapsed_ms": 7111, + "reply_type": "factual", + "trace_id": "address--GzM4l90d6", + "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 | аналитика: Группа", + "assistant_reply_first_line": "Собран список документов по контрагенту (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 20, + "rows_matched": 3, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address--GzM4l90d6", + "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": "MA7762aMLg4vEx", + "llm_decomposition_effective_message": "получить список документов по СВК за 2020 год", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "дай список документов по свк за 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "MA7762aMLg4vEx", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "получить список документов по СВК за 2020 год" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 4, + "id": "S004", + "question": "какие у свк есть доки за 2020?", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-16-06-s004", + "status_code": 200, + "ok": true, + "elapsed_ms": 9296, + "reply_type": "factual", + "trace_id": "address-ID0-Zolw5r", + "assistant_reply": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.\nСобран список документов по контрагенту (live address lane).\nСтрок отобрано: 5.\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-16T16:20:52Z | Списание с расчетного счета 00000000294 от 16.12.2020 16:20:52 | 0 / 0 | 3849.26 | аналитика: УФК по г. Москве (для ГУ - Отделения ПФР по г. Москве и МО)\n4. 2020-12-16T16:20:51Z | Списание с расчетного счета 00000000293 от 16.12.2020 16:20:51 | 0 / 0 | 60 | аналитика: СБЕРБАНК, ПАО\n5. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "assistant_reply_first_line": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "rows_fetched": 20, + "rows_matched": 5, + "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, + "debug_payload": { + "trace_id": "address-ID0-Zolw5r", + "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", + "documents_by_counterparty_signal_detected", + "anchor_not_matched_fallback_rows" + ], + "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": "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": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "mcp_call_status": "matched_non_empty", + "rows_fetched": 20, + "raw_rows_received": 20, + "rows_after_account_scope": 5, + "rows_after_recipe_filter": 0, + "rows_materialized": 5, + "rows_matched": 5, + "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": "k9WrjaJPKlfJCG", + "llm_decomposition_effective_message": "какие у свк есть доки за 2020?", + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "sanitized_user_message": "какие у свк есть доки за 2020?", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "k9WrjaJPKlfJCG", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "какие у свк есть доки за 2020?" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 5, + "id": "S005", + "question": "че по свк по докам за 2020 год", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-16-06-s005", + "status_code": 200, + "ok": true, + "elapsed_ms": 797, + "reply_type": "factual", + "trace_id": "address-FgVrYkogTV", + "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 | аналитика: Группа", + "assistant_reply_first_line": "Собран список документов по контрагенту (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 20, + "rows_matched": 3, + "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", + "debug_payload": { + "trace_id": "address-FgVrYkogTV", + "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": false, + "llm_provider_used": "local", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "документы по контрагенту свк за 2020 год", + "llm_decomposition_reason": "fallback_rule_applied_without_llm", + "fallback_rule_hit": "documents_counterparty_year_rewrite", + "sanitized_user_message": "че по свк по докам за 2020 год", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + }, + "error_code": null, + "error_message": null + }, + { + "index": 6, + "id": "S006", + "question": "ёпт покажи доки по свк за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-16-06-s006", + "status_code": 200, + "ok": true, + "elapsed_ms": 7186, + "reply_type": "factual", + "trace_id": "address-r4EIEXLWj2", + "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 | аналитика: Группа", + "assistant_reply_first_line": "Собран список документов по контрагенту (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 20, + "rows_matched": 3, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-r4EIEXLWj2", + "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": "msUpSBVc1Z91F8", + "llm_decomposition_effective_message": "покажи документы по СВК за 2020 год", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "покажи доки по свк за 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "msUpSBVc1Z91F8", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "покажи документы по СВК за 2020 год" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 7, + "id": "S007", + "question": "бля, доки свк 2020 вывали", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-16-06-s007", + "status_code": 200, + "ok": true, + "elapsed_ms": 8114, + "reply_type": "factual", + "trace_id": "address-VO3yAlEWBo", + "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 | аналитика: Группа", + "assistant_reply_first_line": "Собран список документов по контрагенту (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 20, + "rows_matched": 3, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-VO3yAlEWBo", + "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": "HmkHh9D7gs5B4g", + "llm_decomposition_effective_message": "документы СВК 2020 вывалились", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "доки свк 2020 вывали", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "HmkHh9D7gs5B4g", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "документы СВК 2020 вывалились" + } + }, + "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_Nightly_stress_102_20-16-06-s008", + "status_code": 200, + "ok": true, + "elapsed_ms": 7084, + "reply_type": "factual", + "trace_id": "address-Y7Qf6ovhAW", + "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 | аналитика: Группа", + "assistant_reply_first_line": "Собран список документов по контрагенту (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 20, + "rows_matched": 3, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-Y7Qf6ovhAW", + "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": "CMfA59bCzLrpzH", + "llm_decomposition_effective_message": "СВК документы за 2020 год, пожалуйста.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "svk документы for 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "CMfA59bCzLrpzH", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "СВК документы за 2020 год, пожалуйста." + } + }, + "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_Nightly_stress_102_20-16-06-s009", + "status_code": 200, + "ok": true, + "elapsed_ms": 9412, + "reply_type": "factual", + "trace_id": "address-KNFG5-yYq4", + "assistant_reply": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.\nСобран список документов по контрагенту (live address lane).\nСтрок отобрано: 5.\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-16T16:20:52Z | Списание с расчетного счета 00000000294 от 16.12.2020 16:20:52 | 0 / 0 | 3849.26 | аналитика: УФК по г. Москве (для ГУ - Отделения ПФР по г. Москве и МО)\n4. 2020-12-16T16:20:51Z | Списание с расчетного счета 00000000293 от 16.12.2020 16:20:51 | 0 / 0 | 60 | аналитика: СБЕРБАНК, ПАО\n5. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "assistant_reply_first_line": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "rows_fetched": 20, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-KNFG5-yYq4", + "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", + "anchor_not_matched_fallback_rows" + ], + "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": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "mcp_call_status": "matched_non_empty", + "rows_fetched": 20, + "raw_rows_received": 20, + "rows_after_account_scope": 5, + "rows_after_recipe_filter": 0, + "rows_materialized": 5, + "rows_matched": 5, + "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": "YMq8eQGbfW0c07", + "llm_decomposition_effective_message": "документы по контрагентам за год 2020", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "документы by counterparty svk year 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "YMq8eQGbfW0c07", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "документы по контрагентам за год 2020" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 10, + "id": "S010", + "question": "по контрагенту свк покаж документы за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-16-06-s010", + "status_code": 200, + "ok": true, + "elapsed_ms": 6873, + "reply_type": "factual", + "trace_id": "address-di8RS-_OUj", + "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 | аналитика: Группа", + "assistant_reply_first_line": "Собран список документов по контрагенту (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 20, + "rows_matched": 3, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-di8RS-_OUj", + "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": "KHHnXrxixnY2M1", + "llm_decomposition_effective_message": "Показать документы по контрагенту СВК за 2020 год.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "по контрагенту свк покаж документы за 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "KHHnXrxixnY2M1", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Показать документы по контрагенту СВК за 2020 год." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 11, + "id": "S011", + "question": "плс доки по свк 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-16-06-s011", + "status_code": 200, + "ok": true, + "elapsed_ms": 11380, + "reply_type": "factual", + "trace_id": "address-sQkP7hofzt", + "assistant_reply": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.\nСобран список документов по контрагенту (live address lane).\nСтрок отобрано: 5.\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-16T16:20:52Z | Списание с расчетного счета 00000000294 от 16.12.2020 16:20:52 | 0 / 0 | 3849.26 | аналитика: УФК по г. Москве (для ГУ - Отделения ПФР по г. Москве и МО)\n4. 2020-12-16T16:20:51Z | Списание с расчетного счета 00000000293 от 16.12.2020 16:20:51 | 0 / 0 | 60 | аналитика: СБЕРБАНК, ПАО\n5. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "assistant_reply_first_line": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "rows_fetched": 20, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-sQkP7hofzt", + "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", + "anchor_not_matched_fallback_rows" + ], + "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": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "mcp_call_status": "matched_non_empty", + "rows_fetched": 20, + "raw_rows_received": 20, + "rows_after_account_scope": 5, + "rows_after_recipe_filter": 0, + "rows_materialized": 5, + "rows_matched": 5, + "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": "TD0vlRkq57Fi77", + "llm_decomposition_effective_message": "Пожалуйста, предоставьте документы по сводной выручке за 2020 год.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "доки по свк 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "TD0vlRkq57Fi77", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Пожалуйста, предоставьте документы по сводной выручке за 2020 год." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 12, + "id": "S012", + "question": "свк док за 2020 гони", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-16-06-s012", + "status_code": 200, + "ok": true, + "elapsed_ms": 817, + "reply_type": "factual", + "trace_id": "address-f-4gO6Dqps", + "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 | аналитика: Группа", + "assistant_reply_first_line": "Собран список документов по контрагенту (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 20, + "rows_matched": 3, + "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", + "debug_payload": { + "trace_id": "address-f-4gO6Dqps", + "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": false, + "llm_provider_used": "local", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "документы по контрагенту свк за 2020 год", + "llm_decomposition_reason": "fallback_rule_applied_without_llm", + "fallback_rule_hit": "documents_counterparty_year_rewrite", + "sanitized_user_message": "свк док за 2020 гони", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + }, + "error_code": null, + "error_message": null + }, + { + "index": 13, + "id": "S013", + "question": "по свк банковские операции за 2020 покаж", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-16-06-s013", + "status_code": 200, + "ok": true, + "elapsed_ms": 7095, + "reply_type": "factual", + "trace_id": "address-Bf-iIMrAar", + "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 | аналитика: Группа", + "assistant_reply_first_line": "Собран список банковских операций по контрагенту (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 20, + "rows_matched": 3, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-Bf-iIMrAar", + "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": "b1g3IrQCUGbDmQ", + "llm_decomposition_effective_message": "Показать банковские операции по СВК за 2020 год.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "по свк банковские операции за 2020 покаж", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "b1g3IrQCUGbDmQ", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Показать банковские операции по СВК за 2020 год." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 14, + "id": "S014", + "question": "свк выписка банка 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-16-06-s014", + "status_code": 200, + "ok": true, + "elapsed_ms": 8186, + "reply_type": "factual", + "trace_id": "address-e0tLToa_G8", + "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 | аналитика: Группа", + "assistant_reply_first_line": "Собран список банковских операций по контрагенту (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 20, + "rows_matched": 3, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-e0tLToa_G8", + "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", + "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": "DOCUMENT_LIST", + "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": "9NxjFhsQrqfH-R", + "llm_decomposition_effective_message": "СВК выписка банка за 2020 год.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "свк выписка банка 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "9NxjFhsQrqfH-R", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "СВК выписка банка за 2020 год." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 15, + "id": "S015", + "question": "платежи по свк за 2020 выведи", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-16-06-s015", + "status_code": 200, + "ok": true, + "elapsed_ms": 8082, + "reply_type": "factual", + "trace_id": "address-_rDaXGR0SW", + "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 | аналитика: Группа", + "assistant_reply_first_line": "Собран список банковских операций по контрагенту (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 20, + "rows_matched": 3, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-_rDaXGR0SW", + "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": [ + "docs_or_bank_signal_detected", + "anchor_like_token_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": "medium", + "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": "СВК", + "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": "9_J24fbBIIL5yu", + "llm_decomposition_effective_message": "Платежи по СВК за 2020 год, вывести.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "платежи по свк за 2020 выведи", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "9_J24fbBIIL5yu", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Платежи по СВК за 2020 год, вывести." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 16, + "id": "S016", + "question": "оплаты по свк за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-16-06-s016", + "status_code": 200, + "ok": true, + "elapsed_ms": 7140, + "reply_type": "factual", + "trace_id": "address-iAScbRnHiA", + "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 | аналитика: Группа", + "assistant_reply_first_line": "Собран список банковских операций по контрагенту (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 20, + "rows_matched": 3, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-iAScbRnHiA", + "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", + "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": "medium", + "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": "WPRDGVuhis537H", + "llm_decomposition_effective_message": "оплаты по СВК за 2020 год", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "оплаты по свк за 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "WPRDGVuhis537H", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "оплаты по СВК за 2020 год" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 17, + "id": "S017", + "question": "свк банк опер за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-16-06-s017", + "status_code": 200, + "ok": true, + "elapsed_ms": 9309, + "reply_type": "factual", + "trace_id": "address-Am0-V79wsZ", + "assistant_reply": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.\nСобран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 5.\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-16T16:20:52Z | Списание с расчетного счета 00000000294 от 16.12.2020 16:20:52 | 0 / 0 | 3849.26 | аналитика: УФК по г. Москве (для ГУ - Отделения ПФР по г. Москве и МО)\n4. 2020-12-16T16:20:51Z | Списание с расчетного счета 00000000293 от 16.12.2020 16:20:51 | 0 / 0 | 60 | аналитика: СБЕРБАНК, ПАО\n5. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "assistant_reply_first_line": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "rows_fetched": 20, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-Am0-V79wsZ", + "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", + "bank_ops_by_counterparty_signal_detected", + "anchor_not_matched_fallback_rows" + ], + "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_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": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "mcp_call_status": "matched_non_empty", + "rows_fetched": 20, + "raw_rows_received": 20, + "rows_after_account_scope": 5, + "rows_after_recipe_filter": 0, + "rows_materialized": 5, + "rows_matched": 5, + "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": "psyygmtjuMlmJp", + "llm_decomposition_effective_message": "Сверка с банком операций за 2020 год", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "свк банк операции за 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "psyygmtjuMlmJp", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Сверка с банком операций за 2020 год" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 18, + "id": "S018", + "question": "че у свк по банку за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-16-06-s018", + "status_code": 200, + "ok": true, + "elapsed_ms": 10299, + "reply_type": "factual", + "trace_id": "address-TvZgMD-z4Q", + "assistant_reply": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.\nСобран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 5.\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-16T16:20:52Z | Списание с расчетного счета 00000000294 от 16.12.2020 16:20:52 | 0 / 0 | 3849.26 | аналитика: УФК по г. Москве (для ГУ - Отделения ПФР по г. Москве и МО)\n4. 2020-12-16T16:20:51Z | Списание с расчетного счета 00000000293 от 16.12.2020 16:20:51 | 0 / 0 | 60 | аналитика: СБЕРБАНК, ПАО\n5. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "assistant_reply_first_line": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "rows_fetched": 20, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-TvZgMD-z4Q", + "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", + "shape_not_detected", + "bank_ops_by_counterparty_signal_detected", + "anchor_not_matched_fallback_rows" + ], + "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_counterparty", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "account": "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": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "mcp_call_status": "matched_non_empty", + "rows_fetched": 20, + "raw_rows_received": 20, + "rows_after_account_scope": 5, + "rows_after_recipe_filter": 0, + "rows_materialized": 5, + "rows_matched": 5, + "raw_row_keys_sample": [ + "Период", + "Регистратор", + "СчетДт", + "СчетКт", + "Сумма", + "Контрагент", + "Period", + "Registrator", + "Amount" + ], + "materialization_drop_reason": "none", + "account_token_raw": "20", + "account_token_normalized": "20", + "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": "YhLm2fJKiiXgvb", + "llm_decomposition_effective_message": "Что не сходится или повисло для СВК по банковским счетам в 2020 году?", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "че у свк по банку за 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "YhLm2fJKiiXgvb", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Что не сходится или повисло для СВК по банковским счетам в 2020 году?" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 19, + "id": "S019", + "question": "свк списания/поступления за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-16-06-s019", + "status_code": 200, + "ok": true, + "elapsed_ms": 10079, + "reply_type": "factual", + "trace_id": "address-J-cdSQ6wdb", + "assistant_reply": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.\nСобран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 5.\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-16T16:20:52Z | Списание с расчетного счета 00000000294 от 16.12.2020 16:20:52 | 0 / 0 | 3849.26 | аналитика: УФК по г. Москве (для ГУ - Отделения ПФР по г. Москве и МО)\n4. 2020-12-16T16:20:51Z | Списание с расчетного счета 00000000293 от 16.12.2020 16:20:51 | 0 / 0 | 60 | аналитика: СБЕРБАНК, ПАО\n5. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "assistant_reply_first_line": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "rows_fetched": 20, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-J-cdSQ6wdb", + "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", + "bank_ops_by_counterparty_signal_detected", + "anchor_not_matched_fallback_rows" + ], + "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": "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": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "mcp_call_status": "matched_non_empty", + "rows_fetched": 20, + "raw_rows_received": 20, + "rows_after_account_scope": 5, + "rows_after_recipe_filter": 0, + "rows_materialized": 5, + "rows_matched": 5, + "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": "UybK-65bYnT4oY", + "llm_decomposition_effective_message": "Сверка списаний и поступлений за 2020 год.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "свк списания/поступления за 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "UybK-65bYnT4oY", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Сверка списаний и поступлений за 2020 год." + } + }, + "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_Nightly_stress_102_20-16-06-s020", + "status_code": 200, + "ok": true, + "elapsed_ms": 1823, + "reply_type": "factual", + "trace_id": "address-GDUeoQp_f-", + "assistant_reply": "Собран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 1.\n1. 2020-12-16T16:20:51Z | Списание с расчетного счета 00000000293 от 16.12.2020 16:20:51 | 0 / 0 | 60 | аналитика: СБЕРБАНК, ПАО", + "assistant_reply_first_line": "Собран список банковских операций по контрагенту (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 20, + "rows_matched": 1, + "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", + "debug_payload": { + "trace_id": "address-GDUeoQp_f-", + "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": "bank", + "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": "bank", + "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": 1, + "rows_materialized": 5, + "rows_matched": 1, + "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": false, + "llm_provider_used": "local", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "банковские операции по контрагенту bank за 2020 год", + "llm_decomposition_reason": "fallback_rule_applied_without_llm", + "fallback_rule_hit": "bank_operations_counterparty_year_rewrite", + "sanitized_user_message": "bank ops by svk for 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": 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_Nightly_stress_102_20-16-06-s021", + "status_code": 200, + "ok": true, + "elapsed_ms": 7089, + "reply_type": "factual", + "trace_id": "address-Wawk23feVM", + "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 | аналитика: Группа", + "assistant_reply_first_line": "Собран список банковских операций по контрагенту (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 20, + "rows_matched": 3, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-Wawk23feVM", + "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": "SVK", + "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": "SVK", + "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": "PXIoHT7HJrHUEq", + "llm_decomposition_effective_message": "транзакции по контрагенту SVK за 2020 год", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "transactions by counterparty svk 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "PXIoHT7HJrHUEq", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "транзакции по контрагенту SVK за 2020 год" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 22, + "id": "S022", + "question": "бля, по свк банковские платежки 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-16-06-s022", + "status_code": 200, + "ok": true, + "elapsed_ms": 8136, + "reply_type": "factual", + "trace_id": "address-QKSSZvmc3o", + "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 | аналитика: Группа", + "assistant_reply_first_line": "Собран список банковских операций по контрагенту (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 20, + "rows_matched": 3, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-QKSSZvmc3o", + "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", + "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": "DOCUMENT_LIST", + "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": "pbYlMR8J3tNrWW", + "llm_decomposition_effective_message": "по СВК банковские платежки 2020", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "по свк банковские платежки 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "pbYlMR8J3tNrWW", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "по СВК банковские платежки 2020" + } + }, + "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_Nightly_stress_102_20-16-06-s023", + "status_code": 200, + "ok": true, + "elapsed_ms": 7096, + "reply_type": "factual", + "trace_id": "address-Nms_oy25pd", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-Nms_oy25pd", + "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": "uwS_uc_G9M31Tr", + "llm_decomposition_effective_message": "balance of account 60.01 as of 2020-07-31", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "сальдо по счету 60.01 на дату 2020-07-31", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "uwS_uc_G9M31Tr", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "balance of account 60.01 as of 2020-07-31" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 24, + "id": "S024", + "question": "остаток по счету 60.01 на 2020.05", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-16-06-s024", + "status_code": 200, + "ok": true, + "elapsed_ms": 7125, + "reply_type": "factual", + "trace_id": "address-uxQJ0laX8h", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-uxQJ0laX8h", + "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-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.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": "76FWFozwFqBNA5", + "llm_decomposition_effective_message": "balance for account 60.01 as of May 2020", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "остаток по счету 60.01 на 2020.05", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "76FWFozwFqBNA5", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "balance for account 60.01 as of May 2020" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 25, + "id": "S025", + "question": "покажи остаток по 60.01 за май 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-16-06-s025", + "status_code": 200, + "ok": true, + "elapsed_ms": 6094, + "reply_type": "factual", + "trace_id": "address-e7XLON8sXe", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-e7XLON8sXe", + "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-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.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": "4uPz7KtksrBZj_", + "llm_decomposition_effective_message": "Показать остаток на счете 60.01 за период май 2020.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "покажи остаток по 60.01 за май 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "4uPz7KtksrBZj_", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Показать остаток на счете 60.01 за период май 2020." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 26, + "id": "S026", + "question": "счет 60 остаток на май 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-16-06-s026", + "status_code": 200, + "ok": true, + "elapsed_ms": 8177, + "reply_type": "factual", + "trace_id": "address-7sXvFByB35", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 6, + "rows_matched": 6, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-7sXvFByB35", + "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", + "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": "bPmM1C_m96RAdF", + "llm_decomposition_effective_message": "балансовое состояние счета 60 на конец мая 2020 года", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "счет 60 остаток на май 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "bPmM1C_m96RAdF", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "балансовое состояние счета 60 на конец мая 2020 года" + } + }, + "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_Nightly_stress_102_20-16-06-s027", + "status_code": 200, + "ok": true, + "elapsed_ms": 7131, + "reply_type": "factual", + "trace_id": "address-2gmcWuO0Se", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-2gmcWuO0Se", + "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", + "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": "LjycAh36RFJBkw", + "llm_decomposition_effective_message": "баланс счета 60.01 на дату 2020-07-31", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "баланс account 60.01 as of 2020-07-31", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "LjycAh36RFJBkw", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "баланс счета 60.01 на дату 2020-07-31" + } + }, + "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_Nightly_stress_102_20-16-06-s028", + "status_code": 200, + "ok": true, + "elapsed_ms": 7057, + "reply_type": "factual", + "trace_id": "address-HYWGK6tuCr", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-HYWGK6tuCr", + "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", + "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": "kkOgtohdhNn4KW", + "llm_decomposition_effective_message": "saldo счета 60.01 на дату 31.07.2020", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "60.01 сальдо на 31.07.2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "kkOgtohdhNn4KW", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "saldo счета 60.01 на дату 31.07.2020" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 29, + "id": "S029", + "question": "сколько на счете 60 на конец 2020-05", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-16-06-s029", + "status_code": 200, + "ok": true, + "elapsed_ms": 7127, + "reply_type": "factual", + "trace_id": "address-6tBkdAQ80M", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 6, + "rows_matched": 6, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-6tBkdAQ80M", + "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": "r5nx1vR1SqJhJJ", + "llm_decomposition_effective_message": "balance inquiry for account 60 as of end of May 2020", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "сколько на счете 60 на конец 2020-05", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "r5nx1vR1SqJhJJ", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "balance inquiry for account 60 as of end of May 2020" + } + }, + "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_Nightly_stress_102_20-16-06-s030", + "status_code": 200, + "ok": true, + "elapsed_ms": 8156, + "reply_type": "partial_coverage", + "trace_id": "address-744kAKqSdK", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.", + "assistant_reply_first_line": "В live-данных по текущему фильтру записи не найдены.", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "partial_non_blocking", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 0, + "rows_matched": 0, + "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, + "debug_payload": { + "trace_id": "address-744kAKqSdK", + "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", + "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.02", + "period_from": "2020-12-01", + "period_to": "2020-12-31", + "as_of_date": "2020-12-31" + }, + "missing_required_filters": [], + "selected_recipe": "address_movements_account_snapshot_v1", + "mcp_call_status_legacy": "no_raw_rows", + "account_scope_mode": "strict", + "account_scope_fallback_applied": false, + "anchor_type": "account", + "anchor_value_raw": "60.02", + "anchor_value_resolved": "60.02", + "resolver_confidence": "high", + "ambiguity_count": 0, + "match_failure_stage": "none", + "match_failure_reason": null, + "mcp_call_status": "no_raw_rows", + "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": "60.02", + "account_token_normalized": "60.2", + "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": "empty_match", + "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": "yNdXmoQmEJ2Toa", + "llm_decomposition_effective_message": "получить остаток по счету 60.02 на конец периода 2020-12-31", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "дай остаток 60.02 на 2020-12-31", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "yNdXmoQmEJ2Toa", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "получить остаток по счету 60.02 на конец периода 2020-12-31" + } + }, + "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_Nightly_stress_102_20-16-06-s031", + "status_code": 200, + "ok": true, + "elapsed_ms": 7097, + "reply_type": "partial_coverage", + "trace_id": "address-ZAwcYOy-rW", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.", + "assistant_reply_first_line": "В live-данных по текущему фильтру записи не найдены.", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "partial_non_blocking", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 0, + "rows_matched": 0, + "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, + "debug_payload": { + "trace_id": "address-ZAwcYOy-rW", + "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", + "verify_signal_detected", + "account_balance_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": "account_balance_snapshot", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "account": "62.01", + "period_from": "2020-12-01", + "period_to": "2020-12-31", + "as_of_date": "2020-12-31" + }, + "missing_required_filters": [], + "selected_recipe": "address_movements_account_snapshot_v1", + "mcp_call_status_legacy": "no_raw_rows", + "account_scope_mode": "strict", + "account_scope_fallback_applied": false, + "anchor_type": "account", + "anchor_value_raw": "62.01", + "anchor_value_resolved": "62.01", + "resolver_confidence": "high", + "ambiguity_count": 0, + "match_failure_stage": "none", + "match_failure_reason": null, + "mcp_call_status": "no_raw_rows", + "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": "62.01", + "account_token_normalized": "62.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": "empty_match", + "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": "naTyrjYC5Yqz90", + "llm_decomposition_effective_message": "проверка сальдо по счету 62.01 на конец декабря 2020 года", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "сальдо по счету 62.01 на 2020-12-31", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "naTyrjYC5Yqz90", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "проверка сальдо по счету 62.01 на конец декабря 2020 года" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 32, + "id": "S032", + "question": "плс остаток по счету 51 на 2020-06-30", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-16-06-s032", + "status_code": 200, + "ok": true, + "elapsed_ms": 7115, + "reply_type": "factual", + "trace_id": "address-uIgtlA1s5Y", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 30, + "rows_matched": 30, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-uIgtlA1s5Y", + "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": "51", + "period_from": "2020-06-01", + "period_to": "2020-06-30", + "as_of_date": "2020-06-30" + }, + "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": 30, + "raw_rows_received": 30, + "rows_after_account_scope": 30, + "rows_after_recipe_filter": 30, + "rows_materialized": 30, + "rows_matched": 30, + "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": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "bhNd8HuYDJru52", + "llm_decomposition_effective_message": "остаток по счету 51 на 2020-06-30", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "остаток по счету 51 на 2020-06-30", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "bhNd8HuYDJru52", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "остаток по счету 51 на 2020-06-30" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 33, + "id": "S033", + "question": "как там по счету 60.01 на 2020.07?", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-16-06-s033", + "status_code": 200, + "ok": true, + "elapsed_ms": 7113, + "reply_type": "factual", + "trace_id": "address-EvgBg-iF7Y", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "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, + "debug_payload": { + "trace_id": "address-EvgBg-iF7Y", + "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", + "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": false, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "h6H5CAuDveB4Pb", + "llm_decomposition_effective_message": "как там по счету 60.01 на 2020.07?", + "llm_decomposition_reason": "normalized_fragment_rejected_intent_drop", + "fallback_rule_hit": null, + "sanitized_user_message": "как там по счету 60.01 на 2020.07?", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "h6H5CAuDveB4Pb", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "как там по счету 60.01 на 2020.07?" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 34, + "id": "S034", + "question": "сальдо 60 на 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-16-06-s034", + "status_code": 200, + "ok": true, + "elapsed_ms": 7206, + "reply_type": "factual", + "trace_id": "address-F9mS9yhWZv", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 138, + "rows_matched": 138, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-F9mS9yhWZv", + "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", + "aggregate_signal_detected", + "account_balance_signal_detected" + ], + "why_included_summary": [], + "selection_reason_summary": [] + }, + "dropped_intent_segments": [], + "detected_mode": "address_query", + "detected_mode_confidence": "medium", + "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-01-01", + "period_to": "2020-12-31", + "as_of_date": "2020-12-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": 138, + "raw_rows_received": 138, + "rows_after_account_scope": 138, + "rows_after_recipe_filter": 138, + "rows_materialized": 138, + "rows_matched": 138, + "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": "f895fgXSdsAzyJ", + "llm_decomposition_effective_message": "балансовое сальдо счета 60 на период 2020 год", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "сальдо 60 на 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "f895fgXSdsAzyJ", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "балансовое сальдо счета 60 на период 2020 год" + } + }, + "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_Nightly_stress_102_20-16-06-s035", + "status_code": 200, + "ok": true, + "elapsed_ms": 9048, + "reply_type": "factual", + "trace_id": "address-rvhzYy95w8", + "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Можно уточнить выборку по контрагенту, договору или периоду.", + "assistant_reply_first_line": "Собран drilldown документов, формирующих остаток по счету на указанную дату.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_forming_balance_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-rvhzYy95w8", + "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", + "drilldown_signal_detected", + "documents_forming_balance_signal_detected" + ], + "why_included_summary": [], + "selection_reason_summary": [] + }, + "dropped_intent_segments": [], + "detected_mode": "address_query", + "detected_mode_confidence": "high", + "query_shape": "DRILLDOWN_REQUEST", + "query_shape_confidence": "high", + "detected_intent": "documents_forming_balance", + "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_documents_forming_balance_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_LIST", + "execution_lane": "address_query", + "llm_decomposition_applied": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "5YIwiTYaLWxueM", + "llm_decomposition_effective_message": "Какие документы формируют остаток по счету 60.01 на 2020-07-31?", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "какие документы формируют остаток по счету 60.01 на 2020-07-31", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "5YIwiTYaLWxueM", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Какие документы формируют остаток по счету 60.01 на 2020-07-31?" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 36, + "id": "S036", + "question": "из чего состоит остаток по счету 60 на 2020.05", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-16-06-s036", + "status_code": 200, + "ok": true, + "elapsed_ms": 8092, + "reply_type": "factual", + "trace_id": "address-yMzFdDOiy6", + "assistant_reply": "Собран drilldown документов, формирующих остаток по счету на указанную дату.\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\n5. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 162033\n6. 2020-05-12T12:00:00Z | Списание с расчетного счета 00000000137 от 12.05.2020 12:00:00 | 60.01 / 51 | 70000\nМожно уточнить выборку по контрагенту, договору или периоду.", + "assistant_reply_first_line": "Собран drilldown документов, формирующих остаток по счету на указанную дату.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_forming_balance_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 6, + "rows_matched": 6, + "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, + "debug_payload": { + "trace_id": "address-yMzFdDOiy6", + "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", + "drilldown_signal_detected", + "documents_forming_balance_signal_detected" + ], + "why_included_summary": [], + "selection_reason_summary": [] + }, + "dropped_intent_segments": [], + "detected_mode": "address_query", + "detected_mode_confidence": "high", + "query_shape": "DRILLDOWN_REQUEST", + "query_shape_confidence": "high", + "detected_intent": "documents_forming_balance", + "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_documents_forming_balance_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_LIST", + "execution_lane": "address_query", + "llm_decomposition_applied": false, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "nO65nfR-VC5boh", + "llm_decomposition_effective_message": "из чего состоит остаток по счету 60 на 2020.05", + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "sanitized_user_message": "из чего состоит остаток по счету 60 на 2020.05", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "nO65nfR-VC5boh", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "из чего состоит остаток по счету 60 на 2020.05" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 37, + "id": "S037", + "question": "раскрой остаток 60.01 по документам на конец июля 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-16-06-s037", + "status_code": 200, + "ok": true, + "elapsed_ms": 7121, + "reply_type": "factual", + "trace_id": "address-qlMFDSmfHb", + "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Можно уточнить выборку по контрагенту, договору или периоду.", + "assistant_reply_first_line": "Собран drilldown документов, формирующих остаток по счету на указанную дату.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_forming_balance_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-qlMFDSmfHb", + "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_account_drilldown_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": "documents_forming_balance", + "detected_intent_confidence": "medium", + "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_documents_forming_balance_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_LIST", + "execution_lane": "address_query", + "llm_decomposition_applied": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "dP8nvGNkEfFeuW", + "llm_decomposition_effective_message": "Раскрыть остаток счета 60.01 по документам на конец июля 2020 года.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "раскрой остаток 60.01 по документам на конец июля 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "dP8nvGNkEfFeuW", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Раскрыть остаток счета 60.01 по документам на конец июля 2020 года." + } + }, + "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_Nightly_stress_102_20-16-06-s038", + "status_code": 200, + "ok": true, + "elapsed_ms": 8113, + "reply_type": "factual", + "trace_id": "address-HV9NG9slfH", + "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Можно уточнить выборку по контрагенту, договору или периоду.", + "assistant_reply_first_line": "Собран drilldown документов, формирующих остаток по счету на указанную дату.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_forming_balance_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "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, + "debug_payload": { + "trace_id": "address-HV9NG9slfH", + "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_forming_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": "documents_forming_balance", + "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_documents_forming_balance_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_LIST", + "execution_lane": "address_query", + "llm_decomposition_applied": false, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "CtAQsSpyzTA_7Y", + "llm_decomposition_effective_message": "доки под остатком 60.01 на 2020-07-31", + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "sanitized_user_message": "доки под остатком 60.01 на 2020-07-31", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "CtAQsSpyzTA_7Y", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "доки под остатком 60.01 на 2020-07-31" + } + }, + "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_Nightly_stress_102_20-16-06-s039", + "status_code": 200, + "ok": true, + "elapsed_ms": 8144, + "reply_type": "factual", + "trace_id": "address-MBGR0QRxVq", + "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Можно уточнить выборку по контрагенту, договору или периоду.", + "assistant_reply_first_line": "Собран drilldown документов, формирующих остаток по счету на указанную дату.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_forming_balance_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-MBGR0QRxVq", + "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_forming_balance_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": "documents_forming_balance", + "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_documents_forming_balance_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_LIST", + "execution_lane": "address_query", + "llm_decomposition_applied": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "QUg7MZi_lplvVk", + "llm_decomposition_effective_message": "документы, формирующие остаток по счету 60.01 на 2020-07-31", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "документы forming balance for account 60.01 as of 2020-07-31", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "QUg7MZi_lplvVk", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "документы, формирующие остаток по счету 60.01 на 2020-07-31" + } + }, + "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_Nightly_stress_102_20-16-06-s040", + "status_code": 200, + "ok": true, + "elapsed_ms": 8172, + "reply_type": "factual", + "trace_id": "address-zbUu89ETz9", + "assistant_reply": "Собран drilldown документов, формирующих остаток по счету на указанную дату.\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\n5. 2020-05-12T12:00:00Z | Списание с расчетного счета 00000000137 от 12.05.2020 12:00:00 | 60.01 / 51 | 70000\nМожно уточнить выборку по контрагенту, договору или периоду.", + "assistant_reply_first_line": "Собран drilldown документов, формирующих остаток по счету на указанную дату.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_forming_balance_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-zbUu89ETz9", + "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", + "drilldown_signal_detected", + "documents_forming_balance_signal_detected" + ], + "why_included_summary": [], + "selection_reason_summary": [] + }, + "dropped_intent_segments": [], + "detected_mode": "address_query", + "detected_mode_confidence": "high", + "query_shape": "DRILLDOWN_REQUEST", + "query_shape_confidence": "high", + "detected_intent": "documents_forming_balance", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "account": "60.01", + "period_from": "2020-05-01", + "period_to": "2020-05-31", + "as_of_date": "2020-05-31" + }, + "missing_required_filters": [], + "selected_recipe": "address_documents_forming_balance_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_LIST", + "execution_lane": "address_query", + "llm_decomposition_applied": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "aVuUPl4uQhQbHZ", + "llm_decomposition_effective_message": "какие документы формируют остаток по счету 60.01 на 2020-05-31", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "какие доки формируют остаток 60.01 на 2020-05-31", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "aVuUPl4uQhQbHZ", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "какие документы формируют остаток по счету 60.01 на 2020-05-31" + } + }, + "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_Nightly_stress_102_20-16-06-s041", + "status_code": 200, + "ok": true, + "elapsed_ms": 9118, + "reply_type": "partial_coverage", + "trace_id": "address-Yx32t9u0qU", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.", + "assistant_reply_first_line": "В live-данных по текущему фильтру записи не найдены.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "partial_non_blocking", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_forming_balance_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 0, + "rows_matched": 0, + "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, + "debug_payload": { + "trace_id": "address-Yx32t9u0qU", + "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_account_drilldown_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": "documents_forming_balance", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "account": "62.01", + "period_from": "2020-12-01", + "period_to": "2020-12-31", + "as_of_date": "2020-12-31" + }, + "missing_required_filters": [], + "selected_recipe": "address_documents_forming_balance_v1", + "mcp_call_status_legacy": "no_raw_rows", + "account_scope_mode": "strict", + "account_scope_fallback_applied": false, + "anchor_type": "account", + "anchor_value_raw": "62.01", + "anchor_value_resolved": "62.01", + "resolver_confidence": "high", + "ambiguity_count": 0, + "match_failure_stage": "none", + "match_failure_reason": null, + "mcp_call_status": "no_raw_rows", + "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": "62.01", + "account_token_normalized": "62.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": "empty_match", + "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": "CNORp7lKhV5tIJ", + "llm_decomposition_effective_message": "раскрыть остаток по счету 62.01 с разложением на документы на конец периода 2020-12-31", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "по счету 62.01 раскрой остаток документами на 2020-12-31", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "CNORp7lKhV5tIJ", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "раскрыть остаток по счету 62.01 с разложением на документы на конец периода 2020-12-31" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 42, + "id": "S042", + "question": "из чего остаток по счету 51 на 2020-06-30", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-16-06-s042", + "status_code": 200, + "ok": true, + "elapsed_ms": 7136, + "reply_type": "factual", + "trace_id": "address-4Xslx-Abyn", + "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Можно уточнить выборку по контрагенту, договору или периоду.", + "assistant_reply_first_line": "Собран drilldown документов, формирующих остаток по счету на указанную дату.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_forming_balance_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 30, + "rows_matched": 3, + "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, + "debug_payload": { + "trace_id": "address-4Xslx-Abyn", + "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", + "drilldown_signal_detected", + "documents_forming_balance_signal_detected" + ], + "why_included_summary": [], + "selection_reason_summary": [] + }, + "dropped_intent_segments": [], + "detected_mode": "address_query", + "detected_mode_confidence": "high", + "query_shape": "DRILLDOWN_REQUEST", + "query_shape_confidence": "high", + "detected_intent": "documents_forming_balance", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "account": "51", + "period_from": "2020-06-01", + "period_to": "2020-06-30", + "as_of_date": "2020-06-30" + }, + "missing_required_filters": [], + "selected_recipe": "address_documents_forming_balance_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": 30, + "raw_rows_received": 30, + "rows_after_account_scope": 30, + "rows_after_recipe_filter": 30, + "rows_materialized": 30, + "rows_matched": 3, + "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_LIST", + "execution_lane": "address_query", + "llm_decomposition_applied": false, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "H-rrrxLBWqwSJf", + "llm_decomposition_effective_message": "из чего остаток по счету 51 на 2020-06-30", + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "sanitized_user_message": "из чего остаток по счету 51 на 2020-06-30", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "H-rrrxLBWqwSJf", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "из чего остаток по счету 51 на 2020-06-30" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 43, + "id": "S043", + "question": "покажи документы по договору 19/15 за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-16-06-s043", + "status_code": 200, + "ok": true, + "elapsed_ms": 8291, + "reply_type": "factual", + "trace_id": "address-GhtqotvvSb", + "assistant_reply": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 8.\n1. 2020-08-31T15:00:06Z | Поступление товаров и услуг 00000000024 от 31.08.2020 15:00:06 | 19.04 / 76.05 | 233.33\n2. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 43804.8\n3. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 9776\n4. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 73968\n5. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 94924.8\n6. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 54400\n7. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.02 / 62.01 | 276873.6\n8. 2020-06-30T12:00:00Z | Поступление товаров и услуг 00000000015 от 30.06.2020 12:00:00 | 19.04 / 76.05 | 233.33", + "assistant_reply_first_line": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 8, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-GhtqotvvSb", + "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_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": "high", + "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": "19/15", + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": 11, + "rows_materialized": 438, + "rows_matched": 8, + "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": "FG6ojbGTdOaDjP", + "llm_decomposition_effective_message": "Показать документы по договору 19/15 за период 2020 года.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "покажи документы по договору 19/15 за 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "FG6ojbGTdOaDjP", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Показать документы по договору 19/15 за период 2020 года." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 44, + "id": "S044", + "question": "доки по дог. 19/15 за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-16-06-s044", + "status_code": 200, + "ok": true, + "elapsed_ms": 8145, + "reply_type": "factual", + "trace_id": "address-Am0CvRqGzA", + "assistant_reply": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 8.\n1. 2020-08-31T15:00:06Z | Поступление товаров и услуг 00000000024 от 31.08.2020 15:00:06 | 19.04 / 76.05 | 233.33\n2. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 43804.8\n3. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 9776\n4. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 73968\n5. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 94924.8\n6. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 54400\n7. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.02 / 62.01 | 276873.6\n8. 2020-06-30T12:00:00Z | Поступление товаров и услуг 00000000015 от 30.06.2020 12:00:00 | 19.04 / 76.05 | 233.33", + "assistant_reply_first_line": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 8, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-Am0CvRqGzA", + "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": "19/15", + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": 11, + "rows_materialized": 438, + "rows_matched": 8, + "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": "a6MtvpCWPgOmd-", + "llm_decomposition_effective_message": "Документы по договору 19/15 за период 2020 года.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "доки по договор 19/15 за 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "a6MtvpCWPgOmd-", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Документы по договору 19/15 за период 2020 года." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 45, + "id": "S045", + "question": "какие документы по контракту 19/15", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-16-06-s045", + "status_code": 200, + "ok": true, + "elapsed_ms": 7072, + "reply_type": "factual", + "trace_id": "address-2yK3jxsrW7", + "assistant_reply": "Собран список документов по договору (live address lane).\nСтрок отобрано: 1.\n1. 2021-12-31T12:00:00Z | Поступление товаров и услуг 00000000015 от 31.12.2021 12:00:00 | 19.04 / 76.05 | 233.33", + "assistant_reply_first_line": "Собран список документов по договору (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 1, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-2yK3jxsrW7", + "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_contract_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_contract", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "contract": "19/15" + }, + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": 416, + "rows_after_recipe_filter": 2, + "rows_materialized": 416, + "rows_matched": 1, + "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": "Iwjus67dCQ0nPK", + "llm_decomposition_effective_message": "Какие документы по контракту 19/15?", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "какие документы по контракту 19/15", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "Iwjus67dCQ0nPK", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Какие документы по контракту 19/15?" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 46, + "id": "S046", + "question": "docs by contract 19/15 year 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-16-06-s046", + "status_code": 200, + "ok": true, + "elapsed_ms": 9179, + "reply_type": "factual", + "trace_id": "address-lskcW__kos", + "assistant_reply": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 8.\n1. 2020-08-31T15:00:06Z | Поступление товаров и услуг 00000000024 от 31.08.2020 15:00:06 | 19.04 / 76.05 | 233.33\n2. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 43804.8\n3. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 9776\n4. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 73968\n5. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 94924.8\n6. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 54400\n7. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.02 / 62.01 | 276873.6\n8. 2020-06-30T12:00:00Z | Поступление товаров и услуг 00000000015 от 30.06.2020 12:00:00 | 19.04 / 76.05 | 233.33", + "assistant_reply_first_line": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 8, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-lskcW__kos", + "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", + "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": "OBJECT_LOOKUP", + "query_shape_confidence": "medium", + "detected_intent": "list_documents_by_contract", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "contract": "19/15", + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": 11, + "rows_materialized": 438, + "rows_matched": 8, + "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": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "IzfHAtGBKeWlIN", + "llm_decomposition_effective_message": "docs by contract 19/15 year 2020", + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "sanitized_user_message": "документы by contract 19/2015 год 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "IzfHAtGBKeWlIN", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "docs by contract 19/15 year 2020" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 47, + "id": "S047", + "question": "бля, покажи по договору 19/15 доки", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-16-06-s047", + "status_code": 200, + "ok": true, + "elapsed_ms": 7127, + "reply_type": "factual", + "trace_id": "address-10bWE472Jk", + "assistant_reply": "Собран список документов по договору (live address lane).\nСтрок отобрано: 1.\n1. 2021-12-31T12:00:00Z | Поступление товаров и услуг 00000000015 от 31.12.2021 12:00:00 | 19.04 / 76.05 | 233.33", + "assistant_reply_first_line": "Собран список документов по договору (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 1, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-10bWE472Jk", + "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_contract_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_contract", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "contract": "19/15" + }, + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": 416, + "rows_after_recipe_filter": 2, + "rows_materialized": 416, + "rows_matched": 1, + "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": "fnAz7-U_pOqW3w", + "llm_decomposition_effective_message": "покажи документы по договору 19/15", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "покажи по договору 19/15 доки", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "fnAz7-U_pOqW3w", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "покажи документы по договору 19/15" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 48, + "id": "S048", + "question": "договор 19/15 документы", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-16-06-s048", + "status_code": 200, + "ok": true, + "elapsed_ms": 7106, + "reply_type": "factual", + "trace_id": "address-wpqXqViZhg", + "assistant_reply": "Собран список документов по договору (live address lane).\nСтрок отобрано: 1.\n1. 2021-12-31T12:00:00Z | Поступление товаров и услуг 00000000015 от 31.12.2021 12:00:00 | 19.04 / 76.05 | 233.33", + "assistant_reply_first_line": "Собран список документов по договору (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 1, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-wpqXqViZhg", + "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" + ], + "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": "19/15" + }, + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": 416, + "rows_after_recipe_filter": 2, + "rows_materialized": 416, + "rows_matched": 1, + "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": "o9WLLfRIYcaDob", + "llm_decomposition_effective_message": "Документы по договору 19/15", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "договор 19/15 документы", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "o9WLLfRIYcaDob", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Документы по договору 19/15" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 49, + "id": "S049", + "question": "плс документы договор №19/15", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-16-06-s049", + "status_code": 200, + "ok": true, + "elapsed_ms": 8089, + "reply_type": "factual", + "trace_id": "address-AgP-HYxsjK", + "assistant_reply": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 120.\n1. 2022-09-30T12:00:00Z | Поступление товаров и услуг 00000000010 от 30.09.2022 12:00:00 | 19.04 / 76.05 | 191.67\n2. 2022-09-30T12:00:00Z | Поступление товаров и услуг 00000000010 от 30.09.2022 12:00:00 | 44.01 / 76.05 | 958.33\n3. 2022-08-31T12:00:00Z | Поступление товаров и услуг 00000000009 от 31.08.2022 12:00:00 | 19.04 / 76.05 | 233.33\n4. 2022-08-31T12:00:00Z | Поступление товаров и услуг 00000000009 от 31.08.2022 12:00:00 | 44.01 / 76.05 | 1166.67\n5. 2022-07-31T12:00:00Z | Поступление товаров и услуг 00000000008 от 31.07.2022 12:00:00 | 19.04 / 76.05 | 150.54\n6. 2022-07-31T12:00:00Z | Поступление товаров и услуг 00000000008 от 31.07.2022 12:00:00 | 44.01 / 76.05 | 752.69\n7. 2022-07-31T12:00:00Z | Поступление товаров и услуг 00000000008 от 31.07.2022 12:00:00 | 76.05 / 76.05 | 280\n8. 2022-06-30T00:00:01Z | Поступление товаров и услуг 00000000006 от 30.06.2022 0:00:01 | 19.04 / 76.05 | 186.67\n9. 2022-06-30T00:00:01Z | Поступление товаров и услуг 00000000006 от 30.06.2022 0:00:01 | 44.01 / 76.05 | 933.33\n10. 2022-05-31T00:00:01Z | Поступление товаров и услуг 00000000005 от 31.05.2022 0:00:01 | 19.04 / 76.05 | 233.33\n11. 2022-05-31T00:00:01Z | Поступление товаров и услуг 00000000005 от 31.05.2022 0:00:01 | 44.01 / 76.05 | 1166.67\n12. 2022-04-30T00:00:01Z | Поступление товаров и услуг 00000000004 от 30.04.2022 0:00:01 | 19.04 / 76.05 | 233.33\n13. 2022-04-30T00:00:01Z | Поступление товаров и услуг 00000000004 от 30.04.2022 0:00:01 | 44.01 / 76.05 | 1166.67\n14. 2022-04-18T12:00:00Z | Поступление товаров и услуг 00000000007 от 18.04.2022 12:00:00 | 97.21 / 60.01 | 14790\n15. 2022-04-18T12:00:00Z | Поступление товаров и услуг 00000000007 от 18.04.2022 12:00:00 | 60.01 / 60.02 | 14790\n16. 2022-04-13T12:00:00Z | Поступление на расчетный счет 00000000004 от 13.04.2022 12:00:00 | 51 / 76.05 | 1200000\n17. 2022-03-31T12:00:00Z | Поступление товаров и услуг 00000000001 от 31.03.2022 12:00:00 | 19.04 / 76.05 | 233.33\n18. 2022-03-31T12:00:00Z | Поступление товаров и услуг 00000000001 от 31.03.2022 12:00:00 | 44.01 / 76.05 | 1166.67\n19. 2022-02-28T12:00:00Z | Поступление товаров и услуг 00000000002 от 28.02.2022 12:00:00 | 19.04 / 76.05 | 233.33\n20. 2022-02-28T12:00:00Z | Поступление товаров и услуг 00000000002 от 28.02.2022 12:00:00 | 44.01 / 76.05 | 1166.67\n21. 2022-01-31T12:00:00Z | Поступление товаров и услуг 00000000003 от 31.01.2022 12:00:00 | 19.04 / 76.05 | 233.33\n22. 2022-01-31T12:00:00Z | Поступление товаров и услуг 00000000003 от 31.01.2022 12:00:00 | 44.01 / 76.05 | 1166.67\n23. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 217415\n24. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 114640\n25. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 659320\n26. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 109610\n27. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 162300\n28. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 990830\n29. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 302560\n30. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 105310\n31. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 615320\n32. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 144220\n33. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 56930\n34. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 50000\n35. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 425600\n36. 2022-01-20T12:00:03Z | Поступление на расчетный счет 00000000001 от 20.01.2022 12:00:03 | 51 / 60.02 | 119210\n37. 2022-01-20T12:00:03Z | Поступление на расчетный счет 00000000001 от 20.01.2022 12:00:03 | 51 / 60.02 | 180230\n38. 2022-01-20T12:00:03Z | Поступление на расчетный счет 00000000001 от 20.01.2022 12:00:03 | 51 / 60.02 | 144320\n39. 2022-01-20T12:00:03Z | Поступление на расчетный счет 00000000001 от 20.01.2022 12:00:03 | 51 / 60.02 | 320600\n40. 2022-01-20T12:00:03Z | Поступление на расчетный счет 00000000001 от 20.01.2022 12:00:03 | 51 / 60.02 | 126300\n41. 2021-12-31T12:00:00Z | Поступление товаров и услуг 00000000015 от 31.12.2021 12:00:00 | 19.04 / 76.05 | 233.33\n42. 2021-12-31T12:00:00Z | Поступление товаров и услуг 00000000015 от 31.12.2021 12:00:00 | 44.01 / 76.05 | 1166.67\n43. 2021-11-30T12:00:00Z | Поступление товаров и услуг 00000000014 от 30.11.2021 12:00:00 | 19.04 / 76.05 | 233.33\n44. 2021-11-30T12:00:00Z | Поступление товаров и услуг 00000000014 от 30.11.2021 12:00:00 | 44.01 / 76.05 | 1166.67\n45. 2021-11-10T12:00:07Z | Поступление на расчетный счет 00000000013 от 10.11.2021 12:00:07 | 51 / 62.02 | 20000\n46. 2021-10-31T12:00:00Z | Поступление товаров и услуг 00000000013 от 31.10.2021 12:00:00 | 19.04 / 76.05 | 233.33\n47. 2021-10-31T12:00:00Z | Поступление товаров и услуг 00000000013 от 31.10.2021 12:00:00 | 44.01 / 76.05 | 1166.67\n48. 2021-09-30T12:00:00Z | Поступление товаров и услуг 00000000012 от 30.09.2021 12:00:00 | 19.04 / 76.05 | 233.33\n49. 2021-09-30T12:00:00Z | Поступление товаров и услуг 00000000012 от 30.09.2021 12:00:00 | 44.01 / 76.05 | 1166.67\n50. 2021-09-29T12:00:03Z | Поступление на расчетный счет 00000000012 от 29.09.2021 12:00:03 | 51 / 62.02 | 50000\n51. 2021-08-31T12:00:05Z | Поступление товаров и услуг 00000000011 от 31.08.2021 12:00:05 | 19.04 / 76.05 | 233.33\n52. 2021-08-31T12:00:05Z | Поступление товаров и услуг 00000000011 от 31.08.2021 12:00:05 | 44.01 / 76.05 | 1166.67\n53. 2021-08-31T12:00:04Z | Поступление на расчетный счет 00000000011 от 31.08.2021 12:00:04 | 51 / 62.02 | 120500\n54. 2021-07-31T12:00:00Z | Поступление товаров и услуг 00000000010 от 31.07.2021 12:00:00 | 19.04 / 76.05 | 233.33\n55. 2021-07-31T12:00:00Z | Поступление товаров и услуг 00000000010 от 31.07.2021 12:00:00 | 44.01 / 76.05 | 1166.67\n56. 2021-06-30T00:00:00Z | Поступление товаров и услуг 00000000008 от 30.06.2021 0:00:00 | 19.04 / 76.05 | 233.33\n57. 2021-06-30T00:00:00Z | Поступление товаров и услуг 00000000008 от 30.06.2021 0:00:00 | 44.01 / 76.05 | 1166.67\n58. 2021-06-22T12:00:00Z | Поступление на расчетный счет 00000000010 от 22.06.2021 12:00:00 | 51 / 62.02 | 498630\n59. 2021-06-09T12:00:05Z | Поступление на расчетный счет 00000000009 от 09.06.2021 12:00:05 | 51 / 62.02 | 418960\n60. 2021-05-31T12:00:04Z | Поступление товаров и услуг 00000000006 от 31.05.2021 12:00:04 | 19.04 / 76.05 | 233.33\n61. 2021-05-31T12:00:04Z | Поступление товаров и услуг 00000000006 от 31.05.2021 12:00:04 | 44.01 / 76.05 | 1166.67\n62. 2021-05-17T12:00:00Z | Поступление товаров и услуг 00000000009 от 17.05.2021 12:00:00 | 19.04 / 60.01 | 12000\n63. 2021-05-17T12:00:00Z | Поступление товаров и услуг 00000000009 от 17.05.2021 12:00:00 | 97.21 / 60.01 | 60000\n64. 2021-05-17T12:00:00Z | Поступление товаров и услуг 00000000009 от 17.05.2021 12:00:00 | 60.01 / 60.02 | 72000\n65. 2021-04-30T12:00:00Z | Поступление товаров и услуг 00000000005 от 30.04.2021 12:00:00 | 19.04 / 76.05 | 233.33\n66. 2021-04-30T12:00:00Z | Поступление товаров и услуг 00000000005 от 30.04.2021 12:00:00 | 44.01 / 76.05 | 1166.67\n67. 2021-04-28T12:00:08Z | Поступление на расчетный счет 00000000008 от 28.04.2021 12:00:08 | 51 / 62.02 | 564300\n68. 2021-04-22T12:00:00Z | Поступление на расчетный счет 00000000007 от 22.04.2021 12:00:00 | 51 / 62.02 | 982420\n69. 2021-04-13T12:00:11Z | Поступление на расчетный счет 00000000006 от 13.04.2021 12:00:11 | 51 / 62.02 | 1882400\n70. 2021-04-07T12:00:00Z | Поступление товаров и услуг 00000000016 от 07.04.2021 12:00:00 | 97.21 / 60.01 | 11900\n71. 2021-04-07T12:00:00Z | Поступление товаров и услуг 00000000016 от 07.04.2021 12:00:00 | 60.01 / 60.02 | 11900\n72. 2021-03-31T23:59:59Z | Поступление товаров и услуг 00000000003 от 31.03.2021 23:59:59 | 19.04 / 76.05 | 233.33\n73. 2021-03-31T23:59:59Z | Поступление товаров и услуг 00000000003 от 31.03.2021 23:59:59 | 44.01 / 76.05 | 1166.67\n74. 2021-03-25T12:00:02Z | Поступление на расчетный счет 00000000005 от 25.03.2021 12:00:02 | 51 / 62.02 | 644315\n75. 2021-03-24T12:00:03Z | Поступление на расчетный счет 00000000004 от 24.03.2021 12:00:03 | 51 / 62.02 | 1219990\n76. 2021-03-22T12:00:02Z | Реализация товаров и услуг 00000000001 от 22.03.2021 12:00:02 | 62.01 / 90.01.1 | 598950\n77. 2021-03-22T12:00:02Z | Реализация товаров и услуг 00000000001 от 22.03.2021 12:00:02 | 62.02 / 62.01 | 95274\n78. 2021-03-22T12:00:02Z | Реализация товаров и услуг 00000000001 от 22.03.2021 12:00:02 | 62.02 / 62.01 | 38900\n79. 2021-03-22T12:00:02Z | Реализация товаров и услуг 00000000001 от 22.03.2021 12:00:02 | 62.02 / 62.01 | 464776\n80. 2021-03-18T12:00:00Z | Поступление на расчетный счет 00000000003 от 18.03.2021 12:00:00 | 51 / 62.02 | 1425310\n81. 2021-03-12T12:00:03Z | Поступление на расчетный счет 00000000002 от 12.03.2021 12:00:03 | 51 / 62.02 | 214600\n82. 2021-03-09T00:00:00Z | Поступление товаров и услуг 00000000001 от 09.03.2021 0:00:00 | 19.03 / 60.01 | 88415\n83. 2021-03-09T00:00:00Z | Поступление товаров и услуг 00000000001 от 09.03.2021 0:00:00 | 41.01 / 60.01 | 442075\n84. 2021-02-28T23:59:59Z | Поступление товаров и услуг 00000000004 от 28.02.2021 23:59:59 | 19.04 / 76.05 | 233.33\n85. 2021-02-28T23:59:59Z | Поступление товаров и услуг 00000000004 от 28.02.2021 23:59:59 | 44.01 / 76.05 | 1166.67\n86. 2021-02-19T12:00:01Z | Поступление на расчетный счет 00000000001 от 19.02.2021 12:00:01 | 51 / 62.02 | 518600\n87. 2021-01-31T23:59:59Z | Поступление товаров и услуг 00000000002 от 31.01.2021 23:59:59 | 19.04 / 76.05 | 233.33\n88. 2021-01-31T23:59:59Z | Поступление товаров и услуг 00000000002 от 31.01.2021 23:59:59 | 44.01 / 76.05 | 1166.67\n89. 2020-12-31T23:59:59Z | Поступление товаров и услуг 00000000034 от 31.12.2020 23:59:59 | 19.04 / 76.05 | 233.33\n90. 2020-12-31T23:59:59Z | Поступление товаров и услуг 00000000034 от 31.12.2020 23:59:59 | 44.01 / 76.05 | 1166.67\n91. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 51 / 62.02 | 3248300\n92. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 51 / 62.02 | 216600\n93. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 51 / 62.02 | 200000\n94. 2020-11-30T23:59:59Z | Поступление товаров и услуг 00000000033 от 30.11.2020 23:59:59 | 19.04 / 76.05 | 233.33\n95. 2020-11-30T23:59:59Z | Поступление товаров и услуг 00000000033 от 30.11.2020 23:59:59 | 44.01 / 76.05 | 1166.67\n96. 2020-11-30T12:00:08Z | Реализация товаров и услуг 00000000010 от 30.11.2020 12:00:08 | 62.01 / 90.01.1 | 118552\n97. 2020-11-30T12:00:08Z | Реализация товаров и услуг 00000000010 от 30.11.2020 12:00:08 | 62.01 / 90.01.1 | 458472\n98. 2020-11-30T12:00:08Z | Реализация товаров и услуг 00000000010 от 30.11.2020 12:00:08 | 62.02 / 62.01 | 577024\n99. 2020-11-30T12:00:07Z | Поступление на расчетный счет 00000000041 от 30.11.2020 12:00:07 | 51 / 62.02 | 38900\n100. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 900000\n101. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 144749\n102. 2020-11-20T12:00:00Z | Поступление товаров и услуг 00000000030 от 20.11.2020 12:00:00 | 19.03 / 60.01 | 1450\n103. 2020-11-20T12:00:00Z | Поступление товаров и услуг 00000000030 от 20.11.2020 12:00:00 | 41.01 / 60.01 | 7250\n104. 2020-11-20T12:00:00Z | Поступление товаров и услуг 00000000030 от 20.11.2020 12:00:00 | 60.01 / 60.02 | 8700\n105. 2020-11-19T12:00:04Z | Поступление на расчетный счет 00000000039 от 19.11.2020 12:00:04 | 51 / 62.02 | 1041800\n106. 2020-11-19T12:00:04Z | Поступление на расчетный счет 00000000039 от 19.11.2020 12:00:04 | 51 / 62.01 | 2278800\n107. 2020-11-18T12:00:05Z | Поступление на расчетный счет 00000000038 от 18.11.2020 12:00:05 | 51 / 62.01 | 745300\n108. 2020-11-18T12:00:04Z | Поступление на расчетный счет 00000000037 от 18.11.2020 12:00:04 | 51 / 62.01 | 320000\n109. 2020-11-13T12:00:03Z | Поступление на расчетный счет 00000000036 от 13.11.2020 12:00:03 | 51 / 62.01 | 313600\n110. 2020-11-10T15:39:14Z | Реализация товаров и услуг 00000000009 от 10.11.2020 15:39:14 | 62.01 / 90.01.1 | 4161000\n111. 2020-11-10T15:39:14Z | Реализация товаров и услуг 00000000009 от 10.11.2020 15:39:14 | 62.02 / 62.01 | 328300\n112. 2020-11-10T15:39:14Z | Реализация товаров и услуг 00000000009 от 10.11.2020 15:39:14 | 62.02 / 62.01 | 175000\n113. 2020-11-10T15:39:13Z | Поступление на расчетный счет 00000000035 от 10.11.2020 15:39:13 | 51 / 62.02 | 328300\n114. 2020-11-09T12:00:01Z | Поступление товаров и услуг 00000000031 от 09.11.2020 12:00:01 | 41.01 / 60.01 | 2229840\n115. 2020-10-31T23:59:59Z | Поступление товаров и услуг 00000000032 от 31.10.2020 23:59:59 | 19.04 / 76.05 | 233.33\n116. 2020-10-31T23:59:59Z | Поступление товаров и услуг 00000000032 от 31.10.2020 23:59:59 | 44.01 / 76.05 | 1166.67\n117. 2020-10-26T12:00:00Z | Поступление на расчетный счет 00000000034 от 26.10.2020 12:00:00 | 51 / 62.02 | 175000\n118. 2020-10-14T12:00:00Z | Поступление на расчетный счет 00000000033 от 14.10.2020 12:00:00 | 51 / 60.01 | 160000\n119. 2020-09-30T12:00:04Z | Поступление товаров и услуг 00000000025 от 30.09.2020 12:00:04 | 19.04 / 76.05 | 233.33\n120. 2020-09-30T12:00:04Z | Поступление товаров и услуг 00000000025 от 30.09.2020 12:00:04 | 44.01 / 76.05 | 1166.67", + "assistant_reply_first_line": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "materialized_but_not_anchor_matched", + "match_failure_reason": "contract_anchor_not_matched_in_materialized_rows", + "rows_fetched": 1000, + "rows_matched": 120, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-AgP-HYxsjK", + "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", + "anchor_not_matched_fallback_rows" + ], + "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": "номер 19/15" + }, + "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": "номер 19/15", + "anchor_value_resolved": "номер 19/15", + "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": "matched_non_empty", + "rows_fetched": 1000, + "raw_rows_received": 1000, + "rows_after_account_scope": 416, + "rows_after_recipe_filter": 0, + "rows_materialized": 416, + "rows_matched": 120, + "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": "IqRnX19eSLUWGq", + "llm_decomposition_effective_message": "пожалуйста, предоставьте документы по договору номер 19/15", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "документы договор №19/15", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "IqRnX19eSLUWGq", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "пожалуйста, предоставьте документы по договору номер 19/15" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 50, + "id": "S050", + "question": "покеж документы по 19/15", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-16-06-s050", + "status_code": 200, + "ok": true, + "elapsed_ms": 7100, + "reply_type": "factual", + "trace_id": "address-ttkqNFl_zf", + "assistant_reply": "Собран список документов по договору (live address lane).\nСтрок отобрано: 1.\n1. 2021-12-31T12:00:00Z | Поступление товаров и услуг 00000000015 от 31.12.2021 12:00:00 | 19.04 / 76.05 | 233.33", + "assistant_reply_first_line": "Собран список документов по договору (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 1, + "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, + "debug_payload": { + "trace_id": "address-ttkqNFl_zf", + "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" + ], + "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": "19/15" + }, + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": 416, + "rows_after_recipe_filter": 2, + "rows_materialized": 416, + "rows_matched": 1, + "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": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "QK7XyGwh8YAlo0", + "llm_decomposition_effective_message": "покеж документы по 19/15", + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "sanitized_user_message": "покеж документы по 19/15", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "QK7XyGwh8YAlo0", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "покеж документы по 19/15" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 51, + "id": "S051", + "question": "банковские операции по договору 19/15", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-16-06-s051", + "status_code": 200, + "ok": true, + "elapsed_ms": 8157, + "reply_type": "factual", + "trace_id": "address-iKYDssiKZw", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 1.\n1. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "assistant_reply_first_line": "Собран список банковских операций по договору (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 1, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-iKYDssiKZw", + "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": "19/15" + }, + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": 1, + "rows_materialized": 341, + "rows_matched": 1, + "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": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "Hd9magM6qN2IKX", + "llm_decomposition_effective_message": "банковские операции по договору 19/15", + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "sanitized_user_message": "банковские операции по договору 19/15", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "Hd9magM6qN2IKX", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "банковские операции по договору 19/15" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 52, + "id": "S052", + "question": "платежи по договору 19/15", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-16-06-s052", + "status_code": 200, + "ok": true, + "elapsed_ms": 7052, + "reply_type": "factual", + "trace_id": "address-teSw-D7XaA", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 1.\n1. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "assistant_reply_first_line": "Собран список банковских операций по договору (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 1, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-teSw-D7XaA", + "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", + "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": "DOCUMENT_LIST", + "query_shape_confidence": "medium", + "detected_intent": "bank_operations_by_contract", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "contract": "19/15" + }, + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": 1, + "rows_materialized": 341, + "rows_matched": 1, + "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": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "pd2k735g8q1nF7", + "llm_decomposition_effective_message": "платежи по договору 19/15", + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "sanitized_user_message": "платежи по договору 19/15", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "pd2k735g8q1nF7", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "платежи по договору 19/15" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 53, + "id": "S053", + "question": "выписка по договору 19/15", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-16-06-s053", + "status_code": 200, + "ok": true, + "elapsed_ms": 7109, + "reply_type": "factual", + "trace_id": "address-K0phGOG_Dm", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 1.\n1. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "assistant_reply_first_line": "Собран список банковских операций по договору (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 1, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-K0phGOG_Dm", + "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", + "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": "DOCUMENT_LIST", + "query_shape_confidence": "medium", + "detected_intent": "bank_operations_by_contract", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "contract": "19/15" + }, + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": 1, + "rows_materialized": 341, + "rows_matched": 1, + "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": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "UqDtgIs1zzR3SR", + "llm_decomposition_effective_message": "выписка по договору 19/15", + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "sanitized_user_message": "выписка по договору 19/15", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "UqDtgIs1zzR3SR", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "выписка по договору 19/15" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 54, + "id": "S054", + "question": "bank ops by contract 19/15", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-16-06-s054", + "status_code": 200, + "ok": true, + "elapsed_ms": 8221, + "reply_type": "factual", + "trace_id": "address-ay5NPEDHPL", + "assistant_reply": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.\nСобран список банковских операций по договору (live address lane).\nСтрок отобрано: 341.\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\n5. 2022-07-11T12:00:00Z | Списание с расчетного счета 00000000014 от 11.07.2022 12:00:00 | 76.05 / 51 | 1120\n6. 2022-07-11T12:00:00Z | Списание с расчетного счета 00000000014 от 11.07.2022 12:00:00 | 76.05 / 51 | 1400\n7. 2022-07-11T12:00:00Z | Списание с расчетного счета 00000000014 от 11.07.2022 12:00:00 | 76.05 / 51 | 1400\n8. 2022-06-10T12:00:00Z | Списание с расчетного счета 00000000015 от 10.06.2022 12:00:00 | 91.02 / 51 | 990\n9. 2022-05-11T12:00:00Z | Списание с расчетного счета 00000000013 от 11.05.2022 12:00:00 | 66.04 / 51 | 180000\n10. 2022-05-10T12:00:00Z | Списание с расчетного счета 00000000012 от 10.05.2022 12:00:00 | 91.02 / 51 | 990\n11. 2022-04-15T12:00:02Z | Списание с расчетного счета 00000000011 от 15.04.2022 12:00:02 | 66.03 / 51 | 1000000\n12. 2022-04-15T12:00:01Z | Списание с расчетного счета 00000000010 от 15.04.2022 12:00:01 | 60.02 / 51 | 14790\n13. 2022-04-15T12:00:00Z | Списание с расчетного счета 00000000009 от 15.04.2022 12:00:00 | 76.05 / 51 | 1400\n14. 2022-04-15T12:00:00Z | Списание с расчетного счета 00000000009 от 15.04.2022 12:00:00 | 76.05 / 51 | 1400\n15. 2022-04-13T12:00:00Z | Поступление на расчетный счет 00000000004 от 13.04.2022 12:00:00 | 51 / 76.05 | 1200000\n16. 2022-03-10T12:00:00Z | Списание с расчетного счета 00000000008 от 10.03.2022 12:00:00 | 91.02 / 51 | 990\n17. 2022-02-14T12:00:01Z | Списание с расчетного счета 00000000007 от 14.02.2022 12:00:01 | 76.05 / 51 | 1400\n18. 2022-02-14T12:00:00Z | Списание с расчетного счета 00000000006 от 14.02.2022 12:00:00 | 91.02 / 51 | 990\n19. 2022-01-25T12:00:00Z | Списание с расчетного счета 00000000005 от 25.01.2022 12:00:00 | 68.1 / 51 | 3000\n20. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 217415\n21. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 114640\n22. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 659320\n23. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 109610\n24. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 162300\n25. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 990830\n26. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 302560\n27. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 105310\n28. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 615320\n29. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 144220\n30. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 56930\n31. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 50000\n32. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 425600\n33. 2022-01-20T12:00:03Z | Поступление на расчетный счет 00000000001 от 20.01.2022 12:00:03 | 51 / 60.02 | 119210\n34. 2022-01-20T12:00:03Z | Поступление на расчетный счет 00000000001 от 20.01.2022 12:00:03 | 51 / 60.02 | 180230\n35. 2022-01-20T12:00:03Z | Поступление на расчетный счет 00000000001 от 20.01.2022 12:00:03 | 51 / 60.02 | 144320\n36. 2022-01-20T12:00:03Z | Поступление на расчетный счет 00000000001 от 20.01.2022 12:00:03 | 51 / 60.02 | 320600\n37. 2022-01-20T12:00:03Z | Поступление на расчетный счет 00000000001 от 20.01.2022 12:00:03 | 51 / 60.02 | 126300\n38. 2022-01-20T12:00:02Z | Списание с расчетного счета 00000000004 от 20.01.2022 12:00:02 | 62.02 / 51 | 1808325\n39. 2022-01-20T12:00:02Z | Списание с расчетного счета 00000000004 от 20.01.2022 12:00:02 | 62.02 / 51 | 216600\n40. 2022-01-20T12:00:02Z | Списание с расчетного счета 00000000004 от 20.01.2022 12:00:02 | 62.02 / 51 | 104726\n41. 2022-01-20T12:00:01Z | Списание с расчетного счета 00000000003 от 20.01.2022 12:00:01 | 60.01 / 51 | 1705109.5\n42. 2022-01-20T12:00:00Z | Списание с расчетного счета 00000000002 от 20.01.2022 12:00:00 | 66.03 / 51 | 1000000\n43. 2022-01-19T12:00:00Z | Списание с расчетного счета 00000000001 от 19.01.2022 12:00:00 | 76.05 / 51 | 1400\n44. 2022-01-19T12:00:00Z | Списание с расчетного счета 00000000001 от 19.01.2022 12:00:00 | 76.05 / 51 | 1400\n45. 2021-12-01T12:00:00Z | Списание с расчетного счета 00000000196 от 01.12.2021 12:00:00 | 91.02 / 51 | 66.67\n46. 2021-11-10T12:00:07Z | Поступление на расчетный счет 00000000013 от 10.11.2021 12:00:07 | 51 / 62.02 | 20000\n47. 2021-11-10T12:00:06Z | Списание с расчетного счета 00000000195 от 10.11.2021 12:00:06 | 69.02.7 / 51 | 8632.1\n48. 2021-11-10T12:00:05Z | Списание с расчетного счета 00000000194 от 10.11.2021 12:00:05 | 69.03.1 / 51 | 3561.32\n49. 2021-11-10T12:00:04Z | Списание с расчетного счета 00000000193 от 10.11.2021 12:00:04 | 76.05 / 51 | 1400\n50. 2021-11-10T12:00:03Z | Списание с расчетного счета 00000000192 от 10.11.2021 12:00:03 | 91.02 / 51 | 990\n51. 2021-11-10T12:00:02Z | Списание с расчетного счета 00000000191 от 10.11.2021 12:00:02 | 69.01 / 51 | 370.97\n52. 2021-11-10T12:00:01Z | Списание с расчетного счета 00000000190 от 10.11.2021 12:00:01 | 69.11 / 51 | 141.94\n53. 2021-11-10T12:00:00Z | Списание с расчетного счета 00000000189 от 10.11.2021 12:00:00 | 91.02 / 51 | 8\n54. 2021-10-18T12:00:00Z | Списание с расчетного счета 00000000188 от 18.10.2021 12:00:00 | 76.05 / 51 | 1400\n55. 2021-10-12T12:00:04Z | Списание с расчетного счета 00000000187 от 12.10.2021 12:00:04 | 69.02.7 / 51 | 13326.28\n56. 2021-10-12T12:00:03Z | Списание с расчетного счета 00000000186 от 12.10.2021 12:00:03 | 68.01.1 / 51 | 9226\n57. 2021-10-12T12:00:02Z | Списание с расчетного счета 00000000185 от 12.10.2021 12:00:02 | 69.03.1 / 51 | 5153.69\n58. 2021-10-12T12:00:01Z | Списание с расчетного счета 00000000184 от 12.10.2021 12:00:01 | 69.01 / 51 | 741.94\n59. 2021-10-12T12:00:00Z | Списание с расчетного счета 00000000183 от 12.10.2021 12:00:00 | 69.11 / 51 | 205.12\n60. 2021-10-09T12:00:00Z | Списание с расчетного счета 00000000182 от 09.10.2021 12:00:00 | 91.02 / 51 | 990\n61. 2021-09-29T12:00:03Z | Поступление на расчетный счет 00000000012 от 29.09.2021 12:00:03 | 51 / 62.02 | 50000\n62. 2021-09-29T12:00:02Z | Списание с расчетного счета 00000000181 от 29.09.2021 12:00:02 | 70 / 51 | 34310\n63. 2021-09-29T12:00:01Z | Списание с расчетного счета 00000000180 от 29.09.2021 12:00:01 | 68.01.1 / 51 | 9503\n64. 2021-09-29T12:00:00Z | Списание с расчетного счета 00000000179 от 29.09.2021 12:00:00 | 91.02 / 51 | 171.55\n65. 2021-09-14T12:00:01Z | Списание с расчетного счета 00000000178 от 14.09.2021 12:00:01 | 70 / 51 | 29200\n66. 2021-09-14T12:00:00Z | Списание с расчетного счета 00000000177 от 14.09.2021 12:00:00 | 91.02 / 51 | 146\n67. 2021-09-09T12:00:00Z | Списание с расчетного счета 00000000176 от 09.09.2021 12:00:00 | 91.02 / 51 | 990\n68. 2021-09-07T12:00:05Z | Списание с расчетного счета 00000000175 от 07.09.2021 12:00:05 | 69.02.7 / 51 | 13830.84\n69. 2021-09-07T12:00:04Z | Списание с расчетного счета 00000000174 от 07.09.2021 12:00:04 | 69.03.1 / 51 | 5405.97\n70. 2021-09-07T12:00:03Z | Списание с расчетного счета 00000000173 от 07.09.2021 12:00:03 | 68.01.1 / 51 | 3830\n71. 2021-09-07T12:00:02Z | Списание с расчетного счета 00000000172 от 07.09.2021 12:00:02 | 76.05 / 51 | 1400\n72. 2021-09-07T12:00:01Z | Списание с расчетного счета 00000000171 от 07.09.2021 12:00:01 | 69.01 / 51 | 741.92\n73. 2021-09-07T12:00:00Z | Списание с расчетного счета 00000000170 от 07.09.2021 12:00:00 | 69.11 / 51 | 215.22\n74. 2021-08-31T12:00:04Z | Поступление на расчетный счет 00000000011 от 31.08.2021 12:00:04 | 51 / 62.02 | 120500\n75. 2021-08-31T12:00:03Z | Списание с расчетного счета 00000000169 от 31.08.2021 12:00:03 | 70 / 51 | 34642.18\n76. 2021-08-31T12:00:02Z | Списание с расчетного счета 00000000168 от 31.08.2021 12:00:02 | 70 / 51 | 33613.36\n77. 2021-08-31T12:00:01Z | Списание с расчетного счета 00000000167 от 31.08.2021 12:00:01 | 68.01.1 / 51 | 10199\n78. 2021-08-31T12:00:00Z | Списание с расчетного счета 00000000166 от 31.08.2021 12:00:00 | 91.02 / 51 | 341.28\n79. 2021-08-13T12:00:00Z | Списание с расчетного счета 00000000165 от 13.08.2021 12:00:00 | 76.05 / 51 | 1400\n80. 2021-08-12T12:00:02Z | Списание с расчетного счета 00000000164 от 12.08.2021 12:00:02 | 70 / 51 | 25363.04\n81. 2021-08-12T12:00:01Z | Списание с расчетного счета 00000000163 от 12.08.2021 12:00:01 | 68.01.1 / 51 | 3790\n82. 2021-08-12T12:00:00Z | Списание с расчетного счета 00000000162 от 12.08.2021 12:00:00 | 91.02 / 51 | 126.82\n83. 2021-08-11T12:00:00Z | Списание с расчетного счета 00000000160 от 11.08.2021 12:00:00 | 66.04 / 51 | 6410.96\n84. 2021-08-09T12:00:00Z | Списание с расчетного счета 00000000161 от 09.08.2021 12:00:00 | 91.02 / 51 | 990\n85. 2021-08-06T12:00:03Z | Списание с расчетного счета 00000000159 от 06.08.2021 12:00:03 | 69.02.7 / 51 | 16268.03\n86. 2021-08-06T12:00:02Z | Списание с расчетного счета 00000000158 от 06.08.2021 12:00:02 | 69.03.1 / 51 | 6624.56\n87. 2021-08-06T12:00:01Z | Списание с расчетного счета 00000000157 от 06.08.2021 12:00:01 | 69.01 / 51 | 741.96\n88. 2021-08-06T12:00:00Z | Списание с расчетного счета 00000000156 от 06.08.2021 12:00:00 | 69.11 / 51 | 263.96\n89. 2021-08-05T12:00:05Z | Списание с расчетного счета 00000000155 от 05.08.2021 12:00:05 | 68.04.1 / 51 | 125\n90. 2021-08-05T12:00:04Z | Списание с расчетного счета 00000000154 от 05.08.2021 12:00:04 | 68.04.1 / 51 | 3449\n91. 2021-08-05T12:00:03Z | Списание с расчетного счета 00000000153 от 05.08.2021 12:00:03 | 68.04.1 / 51 | 607\n92. 2021-08-05T12:00:02Z | Списание с расчетного счета 00000000152 от 05.08.2021 12:00:02 | 69.02.7 / 51 | 55.77\n93. 2021-08-05T12:00:01Z | Списание с расчетного счета 00000000151 от 05.08.2021 12:00:01 | 69.03.1 / 51 | 1\n94. 2021-08-05T12:00:00Z | Списание с расчетного счета 00000000150 от 05.08.2021 12:00:00 | 69.01 / 51 | 0.15\n95. 2021-07-29T12:00:02Z | Списание с расчетного счета 00000000149 от 29.07.2021 12:00:02 | 70 / 51 | 34310\n96. 2021-07-29T12:00:01Z | Списание с расчетного счета 00000000148 от 29.07.2021 12:00:01 | 68.01.1 / 51 | 9490\n97. 2021-07-29T12:00:00Z | Списание с расчетного счета 00000000147 от 29.07.2021 12:00:00 | 91.02 / 51 | 171.55\n98. 2021-07-16T12:00:00Z | Списание с расчетного счета 00000000146 от 16.07.2021 12:00:00 | 76.05 / 51 | 1400\n99. 2021-07-14T12:00:01Z | Списание с расчетного счета 00000000145 от 14.07.2021 12:00:01 | 70 / 51 | 29200\n100. 2021-07-14T12:00:00Z | Списание с расчетного счета 00000000144 от 14.07.2021 12:00:00 | 91.02 / 51 | 146\n101. 2021-07-12T12:00:03Z | Списание с расчетного счета 00000000143 от 12.07.2021 12:00:03 | 69.02.7 / 51 | 15370.08\n102. 2021-07-12T12:00:02Z | Списание с расчетного счета 00000000142 от 12.07.2021 12:00:02 | 69.03.1 / 51 | 6177.6\n103. 2021-07-12T12:00:01Z | Списание с расчетного счета 00000000141 от 12.07.2021 12:00:01 | 69.01 / 51 | 741.96\n104. 2021-07-12T12:00:00Z | Списание с расчетного счета 00000000140 от 12.07.2021 12:00:00 | 69.11 / 51 | 246\n105. 2021-07-09T12:00:03Z | Списание с расчетного счета 00000000139 от 09.07.2021 12:00:03 | 70 / 51 | 51312.53\n106. 2021-07-09T12:00:02Z | Списание с расчетного счета 00000000138 от 09.07.2021 12:00:02 | 68.01.1 / 51 | 7667\n107. 2021-07-09T12:00:01Z | Списание с расчетного счета 00000000137 от 09.07.2021 12:00:01 | 91.02 / 51 | 990\n108. 2021-07-09T12:00:00Z | Списание с расчетного счета 00000000136 от 09.07.2021 12:00:00 | 91.02 / 51 | 256.56\n109. 2021-07-05T12:00:01Z | Списание с расчетного счета 00000000135 от 05.07.2021 12:00:01 | 60.02 / 51 | 302560\n110. 2021-07-05T12:00:00Z | Списание с расчетного счета 00000000134 от 05.07.2021 12:00:00 | 91.02 / 51 | 1401.37\n111. 2021-06-29T12:00:03Z | Списание с расчетного счета 00000000133 от 29.06.2021 12:00:03 | 70 / 51 | 34310\n112. 2021-06-29T12:00:02Z | Списание с расчетного счета 00000000132 от 29.06.2021 12:00:02 | 70 / 51 | 23500\n113. 2021-06-29T12:00:01Z | Списание с расчетного счета 00000000131 от 29.06.2021 12:00:01 | 68.01.1 / 51 | 15990\n114. 2021-06-29T12:00:00Z | Списание с расчетного счета 00000000130 от 29.06.2021 12:00:00 | 91.02 / 51 | 289.05\n115. 2021-06-22T12:00:00Z | Поступление на расчетный счет 00000000010 от 22.06.2021 12:00:00 | 51 / 62.02 | 498630\n116. 2021-06-16T12:00:00Z | Списание с расчетного счета 00000000129 от 16.06.2021 12:00:00 | 60.02 / 51 | 105310\n117. 2021-06-15T12:00:03Z | Списание с расчетного счета 00000000128 от 15.06.2021 12:00:03 | 70 / 51 | 29200\n118. 2021-06-15T12:00:02Z | Списание с расчетного счета 00000000127 от 15.06.2021 12:00:02 | 70 / 51 | 20000\n119. 2021-06-15T12:00:01Z | Списание с расчетного счета 00000000126 от 15.06.2021 12:00:01 | 76.05 / 51 | 1400\n120. 2021-06-15T12:00:00Z | Списание с расчетного счета 00000000125 от 15.06.2021 12:00:00 | 91.02 / 51 | 246\n121. 2021-06-11T12:00:01Z | Списание с расчетного счета 00000000124 от 11.06.2021 12:00:01 | 60.02 / 51 | 119210\n122. 2021-06-11T12:00:00Z | Списание с расчетного счета 00000000123 от 11.06.2021 12:00:00 | 91.02 / 51 | 1000\n123. 2021-06-09T12:00:05Z | Поступление на расчетный счет 00000000009 от 09.06.2021 12:00:05 | 51 / 62.02 | 418960\n124. 2021-06-09T12:00:04Z | Списание с расчетного счета 00000000122 от 09.06.2021 12:00:04 | 69.02.7 / 51 | 15370.08\n125. 2021-06-09T12:00:03Z | Списание с расчетного счета 00000000121 от 09.06.2021 12:00:03 | 69.03.1 / 51 | 6175.08\n126. 2021-06-09T12:00:02Z | Списание с расчетного счета 00000000120 от 09.06.2021 12:00:02 | 91.02 / 51 | 990\n127. 2021-06-09T12:00:01Z | Списание с расчетного счета 00000000119 от 09.06.2021 12:00:01 | 69.01 / 51 | 741.92\n128. 2021-06-09T12:00:00Z | Списание с расчетного счета 00000000118 от 09.06.2021 12:00:00 | 69.11 / 51 | 246\n129. 2021-05-31T12:00:03Z | Списание с расчетного счета 00000000117 от 31.05.2021 12:00:03 | 70 / 51 | 34310\n130. 2021-05-31T12:00:02Z | Списание с расчетного счета 00000000116 от 31.05.2021 12:00:02 | 70 / 51 | 23500\n131. 2021-05-31T12:00:01Z | Списание с расчетного счета 00000000115 от 31.05.2021 12:00:01 | 68.01.1 / 51 | 15990\n132. 2021-05-31T12:00:00Z | Списание с расчетного счета 00000000114 от 31.05.2021 12:00:00 | 91.02 / 51 | 289.05\n133. 2021-05-19T12:00:00Z | Списание с расчетного счета 00000000113 от 19.05.2021 12:00:00 | 76.05 / 51 | 1400\n134. 2021-05-18T12:00:00Z | Списание с расчетного счета 00000000112 от 18.05.2021 12:00:00 | 60.02 / 51 | 180230\n135. 2021-05-13T00:00:06Z | Списание с расчетного счета 00000000110 от 13.05.2021 0:00:06 | 70 / 51 | 29200\n136. 2021-05-13T00:00:05Z | Списание с расчетного счета 00000000109 от 13.05.2021 0:00:05 | 70 / 51 | 20000\n137. 2021-05-13T00:00:04Z | Списание с расчетного счета 00000000108 от 13.05.2021 0:00:04 | 69.02.7 / 51 | 15370.08\n138. 2021-05-13T00:00:03Z | Списание с расчетного счета 00000000107 от 13.05.2021 0:00:03 | 69.03.1 / 51 | 6175.08\n139. 2021-05-13T00:00:02Z | Списание с расчетного счета 00000000106 от 13.05.2021 0:00:02 | 69.01 / 51 | 741.92\n140. 2021-05-13T00:00:01Z | Списание с расчетного счета 00000000105 от 13.05.2021 0:00:01 | 69.11 / 51 | 246\n141. 2021-05-13T00:00:00Z | Списание с расчетного счета 00000000104 от 13.05.2021 0:00:00 | 91.02 / 51 | 246\n142. 2021-05-09T12:00:00Z | Списание с расчетного счета 00000000111 от 09.05.2021 12:00:00 | 91.02 / 51 | 990\n143. 2021-04-29T12:00:01Z | Списание с расчетного счета 00000000103 от 29.04.2021 12:00:01 | 91.02 / 51 | 8\n144. 2021-04-29T12:00:00Z | Списание с расчетного счета 00000000102 от 29.04.2021 12:00:00 | 60.02 / 51 | 217415\n145. 2021-04-28T12:00:08Z | Поступление на расчетный счет 00000000008 от 28.04.2021 12:00:08 | 51 / 62.02 | 564300\n146. 2021-04-28T12:00:07Z | Списание с расчетного счета 00000000101 от 28.04.2021 12:00:07 | 60.02 / 51 | 114640\n147. 2021-04-28T12:00:06Z | Списание с расчетного счета 00000000100 от 28.04.2021 12:00:06 | 60.02 / 51 | 72000\n148. 2021-04-28T12:00:05Z | Списание с расчетного счета 00000000099 от 28.04.2021 12:00:05 | 70 / 51 | 34310\n149. 2021-04-28T12:00:04Z | Списание с расчетного счета 00000000098 от 28.04.2021 12:00:04 | 70 / 51 | 23500\n150. 2021-04-28T12:00:03Z | Списание с расчетного счета 00000000097 от 28.04.2021 12:00:03 | 68.01.1 / 51 | 15990\n151. 2021-04-28T12:00:02Z | Списание с расчетного счета 00000000096 от 28.04.2021 12:00:02 | 91.02 / 51 | 289.05\n152. 2021-04-28T12:00:01Z | Списание с расчетного счета 00000000095 от 28.04.2021 12:00:01 | 91.02 / 51 | 37\n153. 2021-04-28T12:00:00Z | Списание с расчетного счета 00000000094 от 28.04.2021 12:00:00 | 91.02 / 51 | 8\n154. 2021-04-27T12:00:01Z | Списание с расчетного счета 00000000093 от 27.04.2021 12:00:01 | 60.02 / 51 | 659320\n155. 2021-04-27T12:00:00Z | Списание с расчетного счета 00000000092 от 27.04.2021 12:00:00 | 91.02 / 51 | 8\n156. 2021-04-26T12:00:02Z | Списание с расчетного счета 00000000091 от 26.04.2021 12:00:02 | 60.02 / 51 | 109610\n157. 2021-04-26T12:00:01Z | Списание с расчетного счета 00000000090 от 26.04.2021 12:00:01 | 68.02 / 51 | 10010\n158. 2021-04-26T12:00:00Z | Списание с расчетного счета 00000000089 от 26.04.2021 12:00:00 | 91.02 / 51 | 8\n159. 2021-04-22T12:00:00Z | Поступление на расчетный счет 00000000007 от 22.04.2021 12:00:00 | 51 / 62.02 | 982420\n160. 2021-04-19T12:00:01Z | Списание с расчетного счета 00000000088 от 19.04.2021 12:00:01 | 60.02 / 51 | 162300\n161. 2021-04-19T12:00:00Z | Списание с расчетного счета 00000000087 от 19.04.2021 12:00:00 | 91.02 / 51 | 8\n162. 2021-04-16T12:00:00Z | Списание с расчетного счета 00000000086 от 16.04.2021 12:00:00 | 76.05 / 51 | 1400\n163. 2021-04-13T12:00:11Z | Поступление на расчетный счет 00000000006 от 13.04.2021 12:00:11 | 51 / 62.02 | 1882400\n164. 2021-04-13T12:00:10Z | Списание с расчетного счета 00000000085 от 13.04.2021 12:00:10 | 66.03 / 51 | 1000000\n165. 2021-04-13T12:00:09Z | Списание с расчетного счета 00000000084 от 13.04.2021 12:00:09 | 60.02 / 51 | 615320\n166. 2021-04-13T12:00:08Z | Списание с расчетного счета 00000000083 от 13.04.2021 12:00:08 | 60.02 / 51 | 144320\n167. 2021-04-13T12:00:07Z | Списание с расчетного счета 00000000082 от 13.04.2021 12:00:07 | 70 / 51 | 29200\n168. 2021-04-13T12:00:06Z | Списание с расчетного счета 00000000081 от 13.04.2021 12:00:06 | 70 / 51 | 20000\n169. 2021-04-13T12:00:05Z | Списание с расчетного счета 00000000080 от 13.04.2021 12:00:05 | 66.04 / 51 | 19139.34\n170. 2021-04-13T12:00:04Z | Списание с расчетного счета 00000000079 от 13.04.2021 12:00:04 | 69.02.7 / 51 | 15370.08\n171. 2021-04-13T12:00:03Z | Списание с расчетного счета 00000000078 от 13.04.2021 12:00:03 | 69.03.1 / 51 | 6175.08\n172. 2021-04-13T12:00:02Z | Списание с расчетного счета 00000000077 от 13.04.2021 12:00:02 | 91.02 / 51 | 246\n173. 2021-04-13T12:00:01Z | Списание с расчетного счета 00000000076 от 13.04.2021 12:00:01 | 69.01 / 51 | 741.94\n174. 2021-04-13T12:00:00Z | Списание с расчетного счета 00000000075 от 13.04.2021 12:00:00 | 69.11 / 51 | 246\n175. 2021-04-09T12:00:00Z | Списание с расчетного счета 00000000074 от 09.04.2021 12:00:00 | 91.02 / 51 | 2100\n176. 2021-04-06T12:00:01Z | Списание с расчетного счета 00000000073 от 06.04.2021 12:00:01 | 60.02 / 51 | 11900\n177. 2021-04-06T12:00:00Z | Списание с расчетного счета 00000000072 от 06.04.2021 12:00:00 | 91.02 / 51 | 37\n178. 2021-03-31T12:00:05Z | Списание с расчетного счета 00000000071 от 31.03.2021 12:00:05 | 70 / 51 | 34310\n179. 2021-03-31T12:00:04Z | Списание с расчетного счета 00000000070 от 31.03.2021 12:00:04 | 70 / 51 | 23500\n180. 2021-03-31T12:00:03Z | Списание с расчетного счета 00000000069 от 31.03.2021 12:00:03 | 68.01.1 / 51 | 15990\n181. 2021-03-31T12:00:02Z | Списание с расчетного счета 00000000068 от 31.03.2021 12:00:02 | 91.02 / 51 | 289.05\n182. 2021-03-31T12:00:01Z | Списание с расчетного счета 00000000067 от 31.03.2021 12:00:01 | 70 / 51 | 50\n183. 2021-03-31T12:00:00Z | Списание с расчетного счета 00000000066 от 31.03.2021 12:00:00 | 91.02 / 51 | 37\n184. 2021-03-25T12:00:02Z | Поступление на расчетный счет 00000000005 от 25.03.2021 12:00:02 | 51 / 62.02 | 644315\n185. 2021-03-25T12:00:01Z | Списание с расчетного счета 00000000065 от 25.03.2021 12:00:01 | 60.02 / 51 | 990830\n186. 2021-03-25T12:00:00Z | Списание с расчетного счета 00000000064 от 25.03.2021 12:00:00 | 91.02 / 51 | 8\n187. 2021-03-24T12:00:03Z | Поступление на расчетный счет 00000000004 от 24.03.2021 12:00:03 | 51 / 62.02 | 1219990\n188. 2021-03-24T12:00:02Z | Списание с расчетного счета 00000000062 от 24.03.2021 12:00:02 | 60.01 / 51 | 530490\n189. 2021-03-24T12:00:01Z | Списание с расчетного счета 00000000061 от 24.03.2021 12:00:01 | 60.02 / 51 | 144220\n190. 2021-03-24T12:00:00Z | Списание с расчетного счета 00000000060 от 24.03.2021 12:00:00 | 91.02 / 51 | 37\n191. 2021-03-23T12:00:01Z | Списание с расчетного счета 00000000058 от 23.03.2021 12:00:01 | 66.04 / 51 | 37377.05\n192. 2021-03-23T12:00:00Z | Списание с расчетного счета 00000000057 от 23.03.2021 12:00:00 | 66.03 / 51 | 600000\n193. 2021-03-22T12:00:03Z | Списание с расчетного счета 00000000197 от 22.03.2021 12:00:03 | 66.02 / 51 | 31857.79\n194. 2021-03-22T12:00:01Z | Списание с расчетного счета 00000000063 от 22.03.2021 12:00:01 | 66.02 / 51 | 1902.12\n195. 2021-03-22T12:00:00Z | Списание с расчетного счета 00000000059 от 22.03.2021 12:00:00 | 66.01 / 51 | 945302.69\n196. 2021-03-19T12:00:00Z | Списание с расчетного счета 00000000055 от 19.03.2021 12:00:00 | 76.05 / 51 | 1400\n197. 2021-03-18T12:00:00Z | Поступление на расчетный счет 00000000003 от 18.03.2021 12:00:00 | 51 / 62.02 | 1425310\n198. 2021-03-16T12:00:00Z | Списание с расчетного счета 00000000056 от 16.03.2021 12:00:00 | 91.02 / 51 | 60\n199. 2021-03-15T12:00:01Z | Списание с расчетного счета 00000000054 от 15.03.2021 12:00:01 | 66.02 / 51 | 7981.6\n200. 2021-03-15T12:00:00Z | Списание с расчетного счета 00000000053 от 15.03.2021 12:00:00 | 66.01 / 51 | 47921.4\n201. 2021-03-12T12:00:03Z | Поступление на расчетный счет 00000000002 от 12.03.2021 12:00:03 | 51 / 62.02 | 214600\n202. 2021-03-12T12:00:02Z | Списание с расчетного счета 00000000052 от 12.03.2021 12:00:02 | 70 / 51 | 29200\n203. 2021-03-12T12:00:01Z | Списание с расчетного счета 00000000051 от 12.03.2021 12:00:01 | 70 / 51 | 20000\n204. 2021-03-12T12:00:00Z | Списание с расчетного счета 00000000050 от 12.03.2021 12:00:00 | 91.02 / 51 | 246\n205. 2021-03-10T12:00:04Z | Списание с расчетного счета 00000000049 от 10.03.2021 12:00:04 | 60.02 / 51 | 56930\n206. 2021-03-10T12:00:03Z | Списание с расчетного счета 00000000047 от 10.03.2021 12:00:03 | 69.03.1 / 51 | 6175.08\n207. 2021-03-10T12:00:02Z | Списание с расчетного счета 00000000046 от 10.03.2021 12:00:02 | 69.11 / 51 | 246\n208. 2021-03-10T12:00:01Z | Списание с расчетного счета 00000000045 от 10.03.2021 12:00:01 | 69.01 / 51 | 741.94\n209. 2021-03-10T12:00:00Z | Списание с расчетного счета 00000000044 от 10.03.2021 12:00:00 | 91.02 / 51 | 2100\n210. 2021-03-10T00:00:00Z | Списание с расчетного счета 00000000048 от 10.03.2021 0:00:00 | 69.02.7 / 51 | 15370.08\n211. 2021-02-26T12:00:05Z | Списание с расчетного счета 00000000043 от 26.02.2021 12:00:05 | 60.02 / 51 | 50000\n212. 2021-02-26T12:00:04Z | Списание с расчетного счета 00000000042 от 26.02.2021 12:00:04 | 70 / 51 | 34310\n213. 2021-02-26T12:00:03Z | Списание с расчетного счета 00000000041 от 26.02.2021 12:00:03 | 70 / 51 | 23500\n214. 2021-02-26T12:00:02Z | Списание с расчетного счета 00000000040 от 26.02.2021 12:00:02 | 68.01.1 / 51 | 15990\n215. 2021-02-26T12:00:01Z | Списание с расчетного счета 00000000039 от 26.02.2021 12:00:01 | 91.02 / 51 | 289.05\n216. 2021-02-26T12:00:00Z | Списание с расчетного счета 00000000038 от 26.02.2021 12:00:00 | 70 / 51 | 50\n217. 2021-02-20T12:00:00Z | Списание с расчетного счета 00000000037 от 20.02.2021 12:00:00 | 60.02 / 51 | 320600\n218. 2021-02-19T12:00:01Z | Поступление на расчетный счет 00000000001 от 19.02.2021 12:00:01 | 51 / 62.02 | 518600\n219. 2021-02-19T12:00:00Z | Списание с расчетного счета 00000000036 от 19.02.2021 12:00:00 | 76.05 / 51 | 1400\n220. 2021-02-16T12:00:00Z | Списание с расчетного счета 00000000035 от 16.02.2021 12:00:00 | 91.02 / 51 | 60\n221. 2021-02-15T12:00:01Z | Списание с расчетного счета 00000000034 от 15.02.2021 12:00:01 | 66.02 / 51 | 27265.44\n222. 2021-02-15T12:00:00Z | Списание с расчетного счета 00000000033 от 15.02.2021 12:00:00 | 66.01 / 51 | 2137760.56\n223. 2021-02-12T12:00:02Z | Списание с расчетного счета 00000000031 от 12.02.2021 12:00:02 | 70 / 51 | 29200\n224. 2021-02-12T12:00:01Z | Списание с расчетного счета 00000000030 от 12.02.2021 12:00:01 | 70 / 51 | 20000\n225. 2021-02-12T12:00:00Z | Списание с расчетного счета 00000000029 от 12.02.2021 12:00:00 | 91.02 / 51 | 246\n226. 2021-02-09T12:00:00Z | Списание с расчетного счета 00000000032 от 09.02.2021 12:00:00 | 91.02 / 51 | 2100\n227. 2021-02-02T12:00:03Z | Списание с расчетного счета 00000000028 от 02.02.2021 12:00:03 | 60.02 / 51 | 425600\n228. 2021-02-02T12:00:02Z | Списание с расчетного счета 00000000027 от 02.02.2021 12:00:02 | 66.04 / 51 | 77854.1\n229. 2021-02-02T12:00:01Z | Списание с расчетного счета 00000000026 от 02.02.2021 12:00:01 | 66.04 / 51 | 28196.72\n230. 2021-02-02T12:00:00Z | Списание с расчетного счета 00000000025 от 02.02.2021 12:00:00 | 91.02 / 51 | 37\n231. 2021-01-29T12:00:03Z | Списание с расчетного счета 00000000024 от 29.01.2021 12:00:03 | 69.02.7 / 51 | 10720.08\n232. 2021-01-29T12:00:02Z | Списание с расчетного счета 00000000023 от 29.01.2021 12:00:02 | 69.03.1 / 51 | 3850.58\n233. 2021-01-29T12:00:01Z | Списание с расчетного счета 00000000022 от 29.01.2021 12:00:01 | 69.01 / 51 | 741.94\n234. 2021-01-29T12:00:00Z | Списание с расчетного счета 00000000021 от 29.01.2021 12:00:00 | 69.11 / 51 | 153\n235. 2021-01-28T12:00:02Z | Списание с расчетного счета 00000000020 от 28.01.2021 12:00:02 | 60.02 / 51 | 126300\n236. 2021-01-28T12:00:01Z | Списание с расчетного счета 00000000019 от 28.01.2021 12:00:01 | 91.02 / 51 | 179.78\n237. 2021-01-28T12:00:00Z | Списание с расчетного счета 00000000016 от 28.01.2021 12:00:00 | 70 / 51 | 17155\n238. 2021-01-28T00:00:00Z | Списание с расчетного счета 00000000018 от 28.01.2021 0:00:00 | 68.01.1 / 51 | 9945\n239. 2021-01-28T00:00:00Z | Списание с расчетного счета 00000000017 от 28.01.2021 0:00:00 | 70 / 51 | 18800\n240. 2021-01-28T00:00:00Z | Списание с расчетного счета 00000000015 от 28.01.2021 0:00:00 | 70 / 51 | 50\n241. 2021-01-25T12:00:00Z | Списание с расчетного счета 00000000014 от 25.01.2021 12:00:00 | 68.02 / 51 | 88003\n242. 2021-01-18T12:00:04Z | Списание с расчетного счета 00000000013 от 18.01.2021 12:00:04 | 70 / 51 | 16000\n243. 2021-01-18T12:00:03Z | Списание с расчетного счета 00000000012 от 18.01.2021 12:00:03 | 70 / 51 | 14600\n244. 2021-01-18T12:00:02Z | Списание с расчетного счета 00000000011 от 18.01.2021 12:00:02 | 91.02 / 51 | 2500\n245. 2021-01-18T12:00:01Z | Списание с расчетного счета 00000000010 от 18.01.2021 12:00:01 | 76.05 / 51 | 1400\n246. 2021-01-18T12:00:00Z | Списание с расчетного счета 00000000009 от 18.01.2021 12:00:00 | 91.02 / 51 | 153\n247. 2021-01-16T12:00:00Z | Списание с расчетного счета 00000000008 от 16.01.2021 12:00:00 | 91.02 / 51 | 60\n248. 2021-01-15T12:00:05Z | Списание с расчетного счета 00000000007 от 15.01.2021 12:00:05 | 66.02 / 51 | 28403.09\n249. 2021-01-15T12:00:04Z | Списание с расчетного счета 00000000006 от 15.01.2021 12:00:04 | 66.01 / 51 | 136622.91\n250. 2021-01-15T12:00:03Z | Списание с расчетного счета 00000000005 от 15.01.2021 12:00:03 | 69.02.7 / 51 | 10561.2\n251. 2021-01-15T12:00:02Z | Списание с расчетного счета 00000000004 от 15.01.2021 12:00:02 | 69.03.1 / 51 | 3849.26\n252. 2021-01-15T12:00:01Z | Списание с расчетного счета 00000000003 от 15.01.2021 12:00:01 | 69.01 / 51 | 703.54\n253. 2021-01-15T12:00:00Z | Списание с расчетного счета 00000000002 от 15.01.2021 12:00:00 | 69.11 / 51 | 153\n254. 2021-01-09T12:00:00Z | Списание с расчетного счета 00000000001 от 09.01.2021 12:00:00 | 91.02 / 51 | 2100\n255. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 51 / 62.02 | 3248300\n256. 2020-12-25T12:00:04Z | Списание с расчетного счета 00000000299 от 25.12.2020 12:00:04 | 91.02 / 51 | 179.78\n257. 2020-12-25T12:00:03Z | Списание с расчетного счета 00000000298 от 25.12.2020 12:00:03 | 68.01.1 / 51 | 9945\n258. 2020-12-25T12:00:02Z | Списание с расчетного счета 00000000297 от 25.12.2020 12:00:02 | 70 / 51 | 18800\n259. 2020-12-25T12:00:01Z | Списание с расчетного счета 00000000296 от 25.12.2020 12:00:01 | 70 / 51 | 17155\n260. 2020-12-25T12:00:00Z | Списание с расчетного счета 00000000295 от 25.12.2020 12:00:00 | 70 / 51 | 50\n261. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 51 / 62.02 | 216600\n262. 2020-12-16T16:20:52Z | Списание с расчетного счета 00000000294 от 16.12.2020 16:20:52 | 69.03.1 / 51 | 3849.26\n263. 2020-12-16T16:20:51Z | Списание с расчетного счета 00000000293 от 16.12.2020 16:20:51 | 91.02 / 51 | 60\n264. 2020-12-16T16:20:50Z | Списание с расчетного счета 00000000292 от 16.12.2020 16:20:50 | 69.02.7 / 51 | 10561.2\n265. 2020-12-16T16:20:27Z | Списание с расчетного счета 00000000291 от 16.12.2020 16:20:27 | 69.01 / 51 | 703.54\n266. 2020-12-16T16:20:06Z | Списание с расчетного счета 00000000290 от 16.12.2020 16:20:06 | 69.11 / 51 | 153\n267. 2020-12-15T11:13:41Z | Списание с расчетного счета 00000000289 от 15.12.2020 11:13:41 | 91.02 / 51 | 153\n268. 2020-12-15T11:13:40Z | Списание с расчетного счета 00000000288 от 15.12.2020 11:13:40 | 70 / 51 | 16000\n269. 2020-12-15T11:13:39Z | Списание с расчетного счета 00000000287 от 15.12.2020 11:13:39 | 70 / 51 | 14600\n270. 2020-12-15T11:13:38Z | Списание с расчетного счета 00000000286 от 15.12.2020 11:13:38 | 76.05 / 51 | 1400\n271. 2020-12-15T11:13:37Z | Списание с расчетного счета 00000000285 от 15.12.2020 11:13:37 | 66.02 / 51 | 28622.55\n272. 2020-12-15T11:13:21Z | Списание с расчетного счета 00000000284 от 15.12.2020 11:13:21 | 66.01 / 51 | 136403.45\n273. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 51 / 62.02 | 200000\n274. 2020-12-09T12:00:00Z | Списание с расчетного счета 00000000283 от 09.12.2020 12:00:00 | 91.02 / 51 | 2100\n275. 2020-11-30T12:00:07Z | Поступление на расчетный счет 00000000041 от 30.11.2020 12:00:07 | 51 / 62.02 | 38900\n276. 2020-11-30T12:00:06Z | Списание с расчетного счета 00000000282 от 30.11.2020 12:00:06 | 70 / 51 | 18800\n277. 2020-11-30T12:00:05Z | Списание с расчетного счета 00000000281 от 30.11.2020 12:00:05 | 70 / 51 | 17155\n278. 2020-11-30T12:00:04Z | Списание с расчетного счета 00000000280 от 30.11.2020 12:00:04 | 68.01.1 / 51 | 9945\n279. 2020-11-30T12:00:03Z | Списание с расчетного счета 00000000278 от 30.11.2020 12:00:03 | 70 / 51 | 50\n280. 2020-11-30T12:00:02Z | Списание с расчетного счета 00000000277 от 30.11.2020 12:00:02 | 91.02 / 51 | 37\n281. 2020-11-30T00:00:00Z | Списание с расчетного счета 00000000279 от 30.11.2020 0:00:00 | 91.02 / 51 | 179.78\n282. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 900000\n283. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 144749\n284. 2020-11-26T12:00:02Z | Списание с расчетного счета 00000000276 от 26.11.2020 12:00:02 | 60.01 / 51 | 524730.5\n285. 2020-11-26T12:00:02Z | Списание с расчетного счета 00000000276 от 26.11.2020 12:00:02 | 60.01 / 51 | 210770.5\n286. 2020-11-26T12:00:01Z | Списание с расчетного счета 00000000275 от 26.11.2020 12:00:01 | 66.03 / 51 | 400000\n287. 2020-11-26T12:00:00Z | Списание с расчетного счета 00000000274 от 26.11.2020 12:00:00 | 91.02 / 51 | 74\n288. 2020-11-23T12:00:01Z | Списание с расчетного счета 00000000273 от 23.11.2020 12:00:01 | 60.01 / 51 | 5429.5\n289. 2020-11-23T12:00:01Z | Списание с расчетного счета 00000000273 от 23.11.2020 12:00:01 | 60.01 / 51 | 63870.5\n290. 2020-11-23T12:00:00Z | Списание с расчетного счета 00000000272 от 23.11.2020 12:00:00 | 91.02 / 51 | 37\n291. 2020-11-19T12:00:04Z | Поступление на расчетный счет 00000000039 от 19.11.2020 12:00:04 | 51 / 62.02 | 1041800\n292. 2020-11-19T12:00:04Z | Поступление на расчетный счет 00000000039 от 19.11.2020 12:00:04 | 51 / 62.01 | 2278800\n293. 2020-11-19T12:00:03Z | Списание с расчетного счета 00000000271 от 19.11.2020 12:00:03 | 66.03 / 51 | 2335000\n294. 2020-11-19T12:00:02Z | Списание с расчетного счета 00000000270 от 19.11.2020 12:00:02 | 60.02 / 51 | 900000\n295. 2020-11-19T12:00:01Z | Списание с расчетного счета 00000000269 от 19.11.2020 12:00:01 | 91.02 / 51 | 37\n296. 2020-11-19T12:00:00Z | Списание с расчетного счета 00000000268 от 19.11.2020 12:00:00 | 91.02 / 51 | 8\n297. 2020-11-18T12:00:05Z | Поступление на расчетный счет 00000000038 от 18.11.2020 12:00:05 | 51 / 62.01 | 745300\n298. 2020-11-18T12:00:04Z | Поступление на расчетный счет 00000000037 от 18.11.2020 12:00:04 | 51 / 62.01 | 320000\n299. 2020-11-18T12:00:03Z | Списание с расчетного счета 00000000267 от 18.11.2020 12:00:03 | 60.02 / 51 | 144749\n300. 2020-11-18T12:00:03Z | Списание с расчетного счета 00000000267 от 18.11.2020 12:00:03 | 60.01 / 51 | 160000\n301. 2020-11-18T12:00:03Z | Списание с расчетного счета 00000000267 от 18.11.2020 12:00:03 | 60.01 / 51 | 389551\n302. 2020-11-18T12:00:02Z | Списание с расчетного счета 00000000266 от 18.11.2020 12:00:02 | 60.01 / 51 | 318600\n303. 2020-11-18T12:00:01Z | Списание с расчетного счета 00000000265 от 18.11.2020 12:00:01 | 76.05 / 51 | 1400\n304. 2020-11-18T12:00:00Z | Списание с расчетного счета 00000000264 от 18.11.2020 12:00:00 | 91.02 / 51 | 16\n305. 2020-11-16T16:08:52Z | Списание с расчетного счета 00000000263 от 16.11.2020 16:08:52 | 60.01 / 51 | 49298\n306. 2020-11-16T16:08:52Z | Списание с расчетного счета 00000000263 от 16.11.2020 16:08:52 | 60.01 / 51 | 3152\n307. 2020-11-16T16:08:51Z | Списание с расчетного счета 00000000262 от 16.11.2020 16:08:51 | 60.02 / 51 | 8700\n308. 2020-11-16T16:08:50Z | Списание с расчетного счета 00000000261 от 16.11.2020 16:08:50 | 91.02 / 51 | 60\n309. 2020-11-16T16:08:49Z | Списание с расчетного счета 00000000260 от 16.11.2020 16:08:49 | 66.01 / 51 | 165026\n310. 2020-11-13T12:00:03Z | Поступление на расчетный счет 00000000036 от 13.11.2020 12:00:03 | 51 / 62.01 | 313600\n311. 2020-11-13T12:00:02Z | Списание с расчетного счета 00000000258 от 13.11.2020 12:00:02 | 70 / 51 | 16000\n312. 2020-11-13T12:00:01Z | Списание с расчетного счета 00000000257 от 13.11.2020 12:00:01 | 70 / 51 | 14600\n313. 2020-11-13T12:00:00Z | Списание с расчетного счета 00000000256 от 13.11.2020 12:00:00 | 91.02 / 51 | 153\n314. 2020-11-13T00:00:00Z | Списание с расчетного счета 00000000259 от 13.11.2020 0:00:00 | 60.01 / 51 | 218400\n315. 2020-11-11T12:00:00Z | Списание с расчетного счета 00000000255 от 11.11.2020 12:00:00 | 66.04 / 51 | 19425.82\n316. 2020-11-10T15:39:13Z | Поступление на расчетный счет 00000000035 от 10.11.2020 15:39:13 | 51 / 62.02 | 328300\n317. 2020-11-09T12:00:00Z | Списание с расчетного счета 00000000253 от 09.11.2020 12:00:00 | 91.02 / 51 | 2100\n318. 2020-11-09T00:00:00Z | Списание с расчетного счета 00000000254 от 09.11.2020 0:00:00 | 60.01 / 51 | 151080\n319. 2020-10-27T12:00:01Z | Списание с расчетного счета 00000000252 от 27.10.2020 12:00:01 | 60.01 / 51 | 120000\n320. 2020-10-27T12:00:00Z | Списание с расчетного счета 00000000251 от 27.10.2020 12:00:00 | 70 / 51 | 50\n321. 2020-10-26T12:00:01Z | Списание с расчетного счета 00000000250 от 26.10.2020 12:00:01 | 68.02 / 51 | 4964\n322. 2020-10-26T12:00:00Z | Поступление на расчетный счет 00000000034 от 26.10.2020 12:00:00 | 51 / 62.02 | 175000\n323. 2020-10-20T12:00:00Z | Списание с расчетного счета 00000000248 от 20.10.2020 12:00:00 | 76.05 / 51 | 1400\n324. 2020-10-16T12:00:00Z | Списание с расчетного счета 00000000249 от 16.10.2020 12:00:00 | 91.02 / 51 | 60\n325. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n326. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53\n327. 2020-10-14T12:00:00Z | Поступление на расчетный счет 00000000033 от 14.10.2020 12:00:00 | 51 / 60.01 | 160000\n328. 2020-10-09T12:00:00Z | Списание с расчетного счета 00000000247 от 09.10.2020 12:00:00 | 91.02 / 51 | 2100\n329. 2020-10-01T12:00:00Z | Списание с расчетного счета 00000000244 от 01.10.2020 12:00:00 | 60.01 / 51 | 49460\n330. 2020-09-30T12:00:03Z | Списание с расчетного счета 00000000243 от 30.09.2020 12:00:03 | 60.01 / 51 | 30000\n331. 2020-09-30T12:00:02Z | Списание с расчетного счета 00000000242 от 30.09.2020 12:00:02 | 70 / 51 | 50\n332. 2020-09-29T12:00:00Z | Списание с расчетного счета 00000000240 от 29.09.2020 12:00:00 | 60.01 / 51 | 159400\n333. 2020-09-23T12:00:03Z | Списание с расчетного счета 00000000241 от 23.09.2020 12:00:03 | 91.02 / 51 | 60\n334. 2020-09-23T12:00:02Z | Списание с расчетного счета 00000000239 от 23.09.2020 12:00:02 | 69.03.1 / 51 | 12.58\n335. 2020-09-23T12:00:01Z | Списание с расчетного счета 00000000238 от 23.09.2020 12:00:01 | 68.02 / 51 | 54.27\n336. 2020-09-23T12:00:00Z | Списание с расчетного счета 00000000237 от 23.09.2020 12:00:00 | 68.02 / 51 | 41441\n337. 2020-09-15T12:00:01Z | Списание с расчетного счета 00000000236 от 15.09.2020 12:00:01 | 66.02 / 51 | 33053.64\n338. 2020-09-15T12:00:00Z | Списание с расчетного счета 00000000235 от 15.09.2020 12:00:00 | 66.01 / 51 | 131972.36\n339. 2020-09-14T12:00:04Z | Списание с расчетного счета 00000000234 от 14.09.2020 12:00:04 | 69.02.7 / 51 | 14973.39\n340. 2020-09-14T12:00:03Z | Списание с расчетного счета 00000000233 от 14.09.2020 12:00:03 | 69.03.1 / 51 | 6055.36\n341. 2020-09-14T12:00:02Z | Списание с расчетного счета 00000000232 от 14.09.2020 12:00:02 | 76.05 / 51 | 1400", + "assistant_reply_first_line": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "materialized_but_not_anchor_matched", + "match_failure_reason": "contract_anchor_not_matched_in_materialized_rows", + "rows_fetched": 1000, + "rows_matched": 341, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-ay5NPEDHPL", + "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", + "anchor_not_matched_fallback_rows" + ], + "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": "19/15 в банковском учете" + }, + "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": "19/15 в банковском учете", + "anchor_value_resolved": "19/15 в банковском учете", + "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": "matched_non_empty", + "rows_fetched": 1000, + "raw_rows_received": 1000, + "rows_after_account_scope": 341, + "rows_after_recipe_filter": 0, + "rows_materialized": 341, + "rows_matched": 341, + "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": "uSqa9zFhUa79cc", + "llm_decomposition_effective_message": "операции по договору 19/15 в банковском учете", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "bank ops by contract 19/15", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "uSqa9zFhUa79cc", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "операции по договору 19/15 в банковском учете" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 55, + "id": "S055", + "question": "ёпт, покажи банк операции по дог 19/15", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-16-06-s055", + "status_code": 200, + "ok": true, + "elapsed_ms": 7059, + "reply_type": "factual", + "trace_id": "address-Uh075rzvr9", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 1.\n1. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "assistant_reply_first_line": "Собран список банковских операций по договору (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 1, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-Uh075rzvr9", + "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", + "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": "high", + "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": "19/15" + }, + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": 1, + "rows_materialized": 341, + "rows_matched": 1, + "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": "Uep5oReKq4fHSX", + "llm_decomposition_effective_message": "покажи банковские операции по договору 19/15", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "покажи банк операции по договор 19/15", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "Uep5oReKq4fHSX", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "покажи банковские операции по договору 19/15" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 56, + "id": "S056", + "question": "по контракту 19/15 платежки", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-16-06-s056", + "status_code": 200, + "ok": true, + "elapsed_ms": 7121, + "reply_type": "factual", + "trace_id": "address-sEp4sg-pJX", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 1.\n1. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "assistant_reply_first_line": "Собран список банковских операций по договору (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 1, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-sEp4sg-pJX", + "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", + "bank_ops_by_contract_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_contract", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "contract": "19/15" + }, + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": 1, + "rows_materialized": 341, + "rows_matched": 1, + "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": "CkBYJ5o8lXDvEN", + "llm_decomposition_effective_message": "показать платежи по контракту 19/15", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "по контракту 19/15 платежки", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "CkBYJ5o8lXDvEN", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "показать платежи по контракту 19/15" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 57, + "id": "S057", + "question": "покажи сальдо по счету 60 за 2020", + "session": "chain_balance_60", + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-16-06-chain_balance_60", + "status_code": 200, + "ok": true, + "elapsed_ms": 5947, + "reply_type": "factual", + "trace_id": "address-NhbUO-ZuCa", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 138, + "rows_matched": 138, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-NhbUO-ZuCa", + "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-01-01", + "period_to": "2020-12-31", + "as_of_date": "2020-12-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": 138, + "raw_rows_received": 138, + "rows_after_account_scope": 138, + "rows_after_recipe_filter": 138, + "rows_materialized": 138, + "rows_matched": 138, + "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": "3A7-mbrROCFUqB", + "llm_decomposition_effective_message": "Показать сальдо по счету 60 за период 2020 год.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "покажи сальдо по счету 60 за 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "3A7-mbrROCFUqB", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Показать сальдо по счету 60 за период 2020 год." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 58, + "id": "S058", + "question": "а теперь только май 2020", + "session": "chain_balance_60", + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-16-06-chain_balance_60", + "status_code": 200, + "ok": true, + "elapsed_ms": 978, + "reply_type": "factual", + "trace_id": "address-O1ixKS36XK", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 6, + "rows_matched": 6, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-O1ixKS36XK", + "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", + "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, + "period_from": "2020-05-01", + "period_to": "2020-05-31", + "as_of_date": "2020-05-31", + "account": "60" + }, + "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": "а теперь только май 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 + }, + "error_code": null, + "error_message": null + }, + { + "index": 59, + "id": "S059", + "question": "ок, теперь 2020.05", + "session": "chain_balance_60", + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-16-06-chain_balance_60", + "status_code": 200, + "ok": true, + "elapsed_ms": 983, + "reply_type": "factual", + "trace_id": "address-uEKhbWGpg3", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 6, + "rows_matched": 6, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-uEKhbWGpg3", + "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", + "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, + "period_from": "2020-05-01", + "period_to": "2020-05-31", + "as_of_date": "2020-05-31", + "account": "60" + }, + "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": "ок, теперь 2020.05", + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "sanitized_user_message": "ок, теперь 2020.05", + "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 + }, + "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_Nightly_stress_102_20-16-06-chain_balance_60", + "status_code": 200, + "ok": true, + "elapsed_ms": 1034, + "reply_type": "factual", + "trace_id": "address-H4bHDPxiHH", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 6, + "rows_matched": 6, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-H4bHDPxiHH", + "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", + "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, + "period_from": "2020-07-01", + "period_to": "2020-07-31", + "as_of_date": "2020-07-31", + "account": "60" + }, + "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": "теперь на 2020-07-31", + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "sanitized_user_message": "теперь на 2020-07-31", + "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 + }, + "error_code": null, + "error_message": null + }, + { + "index": 61, + "id": "X001", + "question": "свк доки кинь за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-16-06-x001", + "status_code": 200, + "ok": true, + "elapsed_ms": 9459, + "reply_type": "factual", + "trace_id": "address-bPxRiJvKCZ", + "assistant_reply": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.\nСобран список документов по контрагенту (live address lane).\nСтрок отобрано: 5.\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-16T16:20:52Z | Списание с расчетного счета 00000000294 от 16.12.2020 16:20:52 | 0 / 0 | 3849.26 | аналитика: УФК по г. Москве (для ГУ - Отделения ПФР по г. Москве и МО)\n4. 2020-12-16T16:20:51Z | Списание с расчетного счета 00000000293 от 16.12.2020 16:20:51 | 0 / 0 | 60 | аналитика: СБЕРБАНК, ПАО\n5. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "assistant_reply_first_line": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "rows_fetched": 20, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-bPxRiJvKCZ", + "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", + "anchor_not_matched_fallback_rows" + ], + "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": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "mcp_call_status": "matched_non_empty", + "rows_fetched": 20, + "raw_rows_received": 20, + "rows_after_account_scope": 5, + "rows_after_recipe_filter": 0, + "rows_materialized": 5, + "rows_matched": 5, + "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": "Tpog9Id3cCKGwe", + "llm_decomposition_effective_message": "Показать сводные документы за 2020 год.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "свк доки кинь за 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "Tpog9Id3cCKGwe", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Показать сводные документы за 2020 год." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 62, + "id": "X002", + "question": "по свк все документы за 20й год", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-16-06-x002", + "status_code": 200, + "ok": true, + "elapsed_ms": 6816, + "reply_type": "factual", + "trace_id": "address-lk0oXNIqXk", + "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 | аналитика: Группа", + "assistant_reply_first_line": "Собран список документов по контрагенту (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 20, + "rows_matched": 3, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-lk0oXNIqXk", + "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": "K8n9i6Z-DcjP6k", + "llm_decomposition_effective_message": "Получить все документы по СВК за 2020 год.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "по свк все документы за 20й год", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "K8n9i6Z-DcjP6k", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Получить все документы по СВК за 2020 год." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 63, + "id": "X003", + "question": "пж вывали доки контрагент свк 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-16-06-x003", + "status_code": 200, + "ok": true, + "elapsed_ms": 7109, + "reply_type": "factual", + "trace_id": "address-Yo2QcaYysI", + "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 | аналитика: Группа", + "assistant_reply_first_line": "Собран список документов по контрагенту (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 20, + "rows_matched": 3, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-Yo2QcaYysI", + "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": "S09woDTdSNtgyG", + "llm_decomposition_effective_message": "Пожалуйста, предоставьте документы по контрагенту СВК за 2020 год.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "вывали доки контрагент свк 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "S09woDTdSNtgyG", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Пожалуйста, предоставьте документы по контрагенту СВК за 2020 год." + } + }, + "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_Nightly_stress_102_20-16-06-x004", + "status_code": 200, + "ok": true, + "elapsed_ms": 998, + "reply_type": "factual", + "trace_id": "address-ILXMjeuqCk", + "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 | аналитика: Группа", + "assistant_reply_first_line": "Собран список документов по контрагенту (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 20, + "rows_matched": 3, + "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", + "debug_payload": { + "trace_id": "address-ILXMjeuqCk", + "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": "svk", + "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": "svk", + "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": false, + "llm_provider_used": "local", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "документы по контрагенту svk за 2020 год", + "llm_decomposition_reason": "fallback_rule_applied_without_llm", + "fallback_rule_hit": "documents_counterparty_year_rewrite", + "sanitized_user_message": "svk poka docy za 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + }, + "error_code": null, + "error_message": null + }, + { + "index": 65, + "id": "X005", + "question": "какие доки по компании свк за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-16-06-x005", + "status_code": 200, + "ok": true, + "elapsed_ms": 7166, + "reply_type": "factual", + "trace_id": "address-nEsolyULIU", + "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 | аналитика: Группа", + "assistant_reply_first_line": "Собран список документов по контрагенту (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 20, + "rows_matched": 3, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-nEsolyULIU", + "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": "micNJKietVvCfB", + "llm_decomposition_effective_message": "Какие документы по компании СВК за 2020 год?", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "какие доки по компании свк за 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "micNJKietVvCfB", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Какие документы по компании СВК за 2020 год?" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 66, + "id": "X006", + "question": "бля покаж свк документы 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-16-06-x006", + "status_code": 200, + "ok": true, + "elapsed_ms": 11462, + "reply_type": "factual", + "trace_id": "address-TcxVJ3Wczh", + "assistant_reply": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.\nСобран список документов по контрагенту (live address lane).\nСтрок отобрано: 5.\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-16T16:20:52Z | Списание с расчетного счета 00000000294 от 16.12.2020 16:20:52 | 0 / 0 | 3849.26 | аналитика: УФК по г. Москве (для ГУ - Отделения ПФР по г. Москве и МО)\n4. 2020-12-16T16:20:51Z | Списание с расчетного счета 00000000293 от 16.12.2020 16:20:51 | 0 / 0 | 60 | аналитика: СБЕРБАНК, ПАО\n5. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "assistant_reply_first_line": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "rows_fetched": 20, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-TcxVJ3Wczh", + "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", + "anchor_not_matched_fallback_rows" + ], + "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": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "mcp_call_status": "matched_non_empty", + "rows_fetched": 20, + "raw_rows_received": 20, + "rows_after_account_scope": 5, + "rows_after_recipe_filter": 0, + "rows_materialized": 5, + "rows_matched": 5, + "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": "gjJDnx9Zqme4IF", + "llm_decomposition_effective_message": "покажи все документы за 2020 год", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "покаж свк документы 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "gjJDnx9Zqme4IF", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "покажи все документы за 2020 год" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 67, + "id": "X007", + "question": "свк банк операции за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-16-06-x007", + "status_code": 200, + "ok": true, + "elapsed_ms": 7837, + "reply_type": "factual", + "trace_id": "address-_5FWq0AEfK", + "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 | аналитика: Группа", + "assistant_reply_first_line": "Собран список банковских операций по контрагенту (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 20, + "rows_matched": 3, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-_5FWq0AEfK", + "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", + "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": "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": "bodVWvOGUXmKEE", + "llm_decomposition_effective_message": "СВК банк операции за 2020 год.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "свк банк операции за 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "bodVWvOGUXmKEE", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "СВК банк операции за 2020 год." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 68, + "id": "X008", + "question": "по свк выписку банка за 2020 выведи", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-16-06-x008", + "status_code": 200, + "ok": true, + "elapsed_ms": 7099, + "reply_type": "factual", + "trace_id": "address-7d-pc0P5nQ", + "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 | аналитика: Группа", + "assistant_reply_first_line": "Собран список банковских операций по контрагенту (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 20, + "rows_matched": 3, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-7d-pc0P5nQ", + "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", + "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": "DOCUMENT_LIST", + "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": "9CpltoNpy2Bg8U", + "llm_decomposition_effective_message": "Получить выписку из банка по СВК за 2020 год.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "по свк выписку банка за 2020 выведи", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "9CpltoNpy2Bg8U", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Получить выписку из банка по СВК за 2020 год." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 69, + "id": "X009", + "question": "свк платежки за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-16-06-x009", + "status_code": 200, + "ok": true, + "elapsed_ms": 9315, + "reply_type": "factual", + "trace_id": "address-RQ_2mXM6hG", + "assistant_reply": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.\nСобран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 5.\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-16T16:20:52Z | Списание с расчетного счета 00000000294 от 16.12.2020 16:20:52 | 0 / 0 | 3849.26 | аналитика: УФК по г. Москве (для ГУ - Отделения ПФР по г. Москве и МО)\n4. 2020-12-16T16:20:51Z | Списание с расчетного счета 00000000293 от 16.12.2020 16:20:51 | 0 / 0 | 60 | аналитика: СБЕРБАНК, ПАО\n5. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "assistant_reply_first_line": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "rows_fetched": 20, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-RQ_2mXM6hG", + "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": [ + "docs_or_bank_signal_detected", + "anchor_like_token_detected", + "document_list_signal_detected", + "bank_ops_by_counterparty_signal_detected", + "anchor_not_matched_fallback_rows" + ], + "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": "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": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "mcp_call_status": "matched_non_empty", + "rows_fetched": 20, + "raw_rows_received": 20, + "rows_after_account_scope": 5, + "rows_after_recipe_filter": 0, + "rows_materialized": 5, + "rows_matched": 5, + "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": "61WAVAvbkm2NTX", + "llm_decomposition_effective_message": "Сверка платежек за 2020 год.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "свк платежки за 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "61WAVAvbkm2NTX", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Сверка платежек за 2020 год." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 70, + "id": "X010", + "question": "bank ops svk 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-16-06-x010", + "status_code": 200, + "ok": true, + "elapsed_ms": 843, + "reply_type": "factual", + "trace_id": "address-81C5GTQjgG", + "assistant_reply": "Собран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 1.\n1. 2020-12-16T16:20:51Z | Списание с расчетного счета 00000000293 от 16.12.2020 16:20:51 | 0 / 0 | 60 | аналитика: СБЕРБАНК, ПАО", + "assistant_reply_first_line": "Собран список банковских операций по контрагенту (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 20, + "rows_matched": 1, + "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", + "debug_payload": { + "trace_id": "address-81C5GTQjgG", + "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": "bank", + "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": "bank", + "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": 1, + "rows_materialized": 5, + "rows_matched": 1, + "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": false, + "llm_provider_used": "local", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "банковские операции по контрагенту bank за 2020 год", + "llm_decomposition_reason": "fallback_rule_applied_without_llm", + "fallback_rule_hit": "bank_operations_counterparty_year_rewrite", + "sanitized_user_message": "bank ops svk 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + }, + "error_code": null, + "error_message": null + }, + { + "index": 71, + "id": "X011", + "question": "транзакции по свк за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-16-06-x011", + "status_code": 200, + "ok": true, + "elapsed_ms": 1019, + "reply_type": "factual", + "trace_id": "address-D8IWizBGVo", + "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 | аналитика: Группа", + "assistant_reply_first_line": "Собран список банковских операций по контрагенту (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 20, + "rows_matched": 3, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-D8IWizBGVo", + "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", + "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": "medium", + "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": 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": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + }, + "error_code": null, + "error_message": null + }, + { + "index": 72, + "id": "X012", + "question": "ёпт по свк че по банку 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-16-06-x012", + "status_code": 200, + "ok": true, + "elapsed_ms": 9435, + "reply_type": "factual", + "trace_id": "address-o3fjgwb7oQ", + "assistant_reply": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.\nСобран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 5.\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-16T16:20:52Z | Списание с расчетного счета 00000000294 от 16.12.2020 16:20:52 | 0 / 0 | 3849.26 | аналитика: УФК по г. Москве (для ГУ - Отделения ПФР по г. Москве и МО)\n4. 2020-12-16T16:20:51Z | Списание с расчетного счета 00000000293 от 16.12.2020 16:20:51 | 0 / 0 | 60 | аналитика: СБЕРБАНК, ПАО\n5. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "assistant_reply_first_line": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "rows_fetched": 20, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-o3fjgwb7oQ", + "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", + "bank_ops_by_counterparty_signal_detected", + "anchor_not_matched_fallback_rows" + ], + "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_counterparty", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "account": "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": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "mcp_call_status": "matched_non_empty", + "rows_fetched": 20, + "raw_rows_received": 20, + "rows_after_account_scope": 5, + "rows_after_recipe_filter": 0, + "rows_materialized": 5, + "rows_matched": 5, + "raw_row_keys_sample": [ + "Период", + "Регистратор", + "СчетДт", + "СчетКт", + "Сумма", + "Контрагент", + "Period", + "Registrator", + "Amount" + ], + "materialization_drop_reason": "none", + "account_token_raw": "20", + "account_token_normalized": "20", + "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": "eZubLcnQw2IpM1", + "llm_decomposition_effective_message": "Что не в порядке с банковскими счетами в 2020 году?", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "по свк че по банку 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "eZubLcnQw2IpM1", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Что не в порядке с банковскими счетами в 2020 году?" + } + }, + "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_Nightly_stress_102_20-16-06-x013", + "status_code": 200, + "ok": true, + "elapsed_ms": 6823, + "reply_type": "factual", + "trace_id": "address-lZbWIxJnJl", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-lZbWIxJnJl", + "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": "Dq63nT1Oc0HRCX", + "llm_decomposition_effective_message": "balance for account 60.01 as of 2020-07-31", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "остаток по 60.01 на 2020-07-31", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "Dq63nT1Oc0HRCX", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "balance for account 60.01 as of 2020-07-31" + } + }, + "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_Nightly_stress_102_20-16-06-x014", + "status_code": 200, + "ok": true, + "elapsed_ms": 7116, + "reply_type": "factual", + "trace_id": "address-3UFrt0o-JF", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-3UFrt0o-JF", + "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": "OMhfEB1mFUqi-W", + "llm_decomposition_effective_message": "балансовый остаток счета 60.01 на дату 31.07.2020", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "сальдо 60.01 на 31.07.2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "OMhfEB1mFUqi-W", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "балансовый остаток счета 60.01 на дату 31.07.2020" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 75, + "id": "X015", + "question": "что на счете 60 на 2020.05", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-16-06-x015", + "status_code": 200, + "ok": true, + "elapsed_ms": 7182, + "reply_type": "factual", + "trace_id": "address-JP-Zg_Sm52", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 138, + "rows_matched": 138, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-JP-Zg_Sm52", + "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", + "period_from": "2020-01-01", + "period_to": "2020-12-31", + "as_of_date": "2020-12-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": 138, + "raw_rows_received": 138, + "rows_after_account_scope": 138, + "rows_after_recipe_filter": 138, + "rows_materialized": 138, + "rows_matched": 138, + "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": "j_uzvd7FjrbQd5", + "llm_decomposition_effective_message": "Что на счете 60 в мае 2020 года?", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "что на счете 60 на 2020.05", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "j_uzvd7FjrbQd5", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Что на счете 60 в мае 2020 года?" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 76, + "id": "X016", + "question": "дай остаток 62.01 на 2020 май", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-16-06-x016", + "status_code": 200, + "ok": true, + "elapsed_ms": 5993, + "reply_type": "factual", + "trace_id": "address-Gi9a5cokly", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 2, + "rows_matched": 2, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-Gi9a5cokly", + "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.01", + "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": "62.01", + "anchor_value_resolved": "62.01", + "resolver_confidence": "high", + "ambiguity_count": 0, + "match_failure_stage": "none", + "match_failure_reason": null, + "mcp_call_status": "matched_non_empty", + "rows_fetched": 2, + "raw_rows_received": 2, + "rows_after_account_scope": 2, + "rows_after_recipe_filter": 2, + "rows_materialized": 2, + "rows_matched": 2, + "raw_row_keys_sample": [ + "Период", + "Регистратор", + "СчетДт", + "СчетКт", + "Сумма", + "Period", + "Registrator", + "AccountDt", + "AccountKt", + "Amount" + ], + "materialization_drop_reason": "none", + "account_token_raw": "62.01", + "account_token_normalized": "62.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": "1xqXdYdul5jgma", + "llm_decomposition_effective_message": "Provide the balance for account 62.01 as of May 2020.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "дай остаток 62.01 на 2020 май", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "1xqXdYdul5jgma", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Provide the balance for account 62.01 as of May 2020." + } + }, + "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_Nightly_stress_102_20-16-06-x017", + "status_code": 200, + "ok": true, + "elapsed_ms": 7159, + "reply_type": "partial_coverage", + "trace_id": "address-Vt9n6mIOJu", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.", + "assistant_reply_first_line": "В live-данных по текущему фильтру записи не найдены.", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "partial_non_blocking", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 0, + "rows_matched": 0, + "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, + "debug_payload": { + "trace_id": "address-Vt9n6mIOJu", + "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", + "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-12-01", + "period_to": "2020-12-31", + "as_of_date": "2020-12-31" + }, + "missing_required_filters": [], + "selected_recipe": "address_movements_account_snapshot_v1", + "mcp_call_status_legacy": "no_raw_rows", + "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": "no_raw_rows", + "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": "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": "empty_match", + "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": "AAUSXgOB1Gzr_e", + "llm_decomposition_effective_message": "Получить остаток по счету 60 на дату 2020-12-31", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "сальдо account 60 as of 2020-12-31", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "AAUSXgOB1Gzr_e", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Получить остаток по счету 60 на дату 2020-12-31" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 78, + "id": "X018", + "question": "плиз остаток по счету 51 на 2020-06-30", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-16-06-x018", + "status_code": 200, + "ok": true, + "elapsed_ms": 7125, + "reply_type": "factual", + "trace_id": "address-yWyqj6Ur7D", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 30, + "rows_matched": 30, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-yWyqj6Ur7D", + "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": "51", + "period_from": "2020-06-01", + "period_to": "2020-06-30", + "as_of_date": "2020-06-30" + }, + "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": 30, + "raw_rows_received": 30, + "rows_after_account_scope": 30, + "rows_after_recipe_filter": 30, + "rows_materialized": 30, + "rows_matched": 30, + "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": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "K2sMNd0cOPNT3K", + "llm_decomposition_effective_message": "остаток по счету 51 на 2020-06-30", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "плиз остаток по счету 51 на 2020-06-30", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "K2sMNd0cOPNT3K", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "остаток по счету 51 на 2020-06-30" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 79, + "id": "X019", + "question": "скока по 60.02 на конец 2020-12", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-16-06-x019", + "status_code": 200, + "ok": true, + "elapsed_ms": 984, + "reply_type": "partial_coverage", + "trace_id": "address-QH2UCFv85f", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.", + "assistant_reply_first_line": "В live-данных по текущему фильтру записи не найдены.", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "partial_non_blocking", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 0, + "rows_matched": 0, + "mcp_call_status": "no_raw_rows", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-QH2UCFv85f", + "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", + "account_balance_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": "account_balance_snapshot", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "account": "60.02", + "period_from": "2020-12-01", + "period_to": "2020-12-31", + "as_of_date": "2020-12-31" + }, + "missing_required_filters": [], + "selected_recipe": "address_movements_account_snapshot_v1", + "mcp_call_status_legacy": "no_raw_rows", + "account_scope_mode": "strict", + "account_scope_fallback_applied": false, + "anchor_type": "account", + "anchor_value_raw": "60.02", + "anchor_value_resolved": "60.02", + "resolver_confidence": "high", + "ambiguity_count": 0, + "match_failure_stage": "none", + "match_failure_reason": null, + "mcp_call_status": "no_raw_rows", + "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": "60.02", + "account_token_normalized": "60.2", + "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": "empty_match", + "response_type": "LIMITED_WITH_REASON", + "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.02 на конец 2020-12", + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "sanitized_user_message": "скока по 60.02 на конец 2020-12", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": 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_Nightly_stress_102_20-16-06-x020", + "status_code": 200, + "ok": true, + "elapsed_ms": 8167, + "reply_type": "factual", + "trace_id": "address-bwLTorMeWA", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-bwLTorMeWA", + "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", + "account_balance_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": "account_balance_snapshot", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "account": "60.01", + "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.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": "Km-ZZOndCxZahJ", + "llm_decomposition_effective_message": "проверить сальдо счета 60.01 на 2020-05-31", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "сальдо 60.01 на 2020-05-31", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "Km-ZZOndCxZahJ", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "проверить сальдо счета 60.01 на 2020-05-31" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 81, + "id": "X021", + "question": "раскрой остаток 60.01 по документам на конец июля 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-16-06-x021", + "status_code": 200, + "ok": true, + "elapsed_ms": 7088, + "reply_type": "factual", + "trace_id": "address-rwD-VysRma", + "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Можно уточнить выборку по контрагенту, договору или периоду.", + "assistant_reply_first_line": "Собран drilldown документов, формирующих остаток по счету на указанную дату.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_forming_balance_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-rwD-VysRma", + "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_account_drilldown_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": "documents_forming_balance", + "detected_intent_confidence": "medium", + "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_documents_forming_balance_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_LIST", + "execution_lane": "address_query", + "llm_decomposition_applied": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "rC-jOA-Aot87SM", + "llm_decomposition_effective_message": "Раскрыть остаток счета 60.01 по документам на конец июля 2020 года.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "раскрой остаток 60.01 по документам на конец июля 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "rC-jOA-Aot87SM", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Раскрыть остаток счета 60.01 по документам на конец июля 2020 года." + } + }, + "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_Nightly_stress_102_20-16-06-x022", + "status_code": 200, + "ok": true, + "elapsed_ms": 9183, + "reply_type": "factual", + "trace_id": "address-W9pNQeFuBD", + "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Можно уточнить выборку по контрагенту, договору или периоду.", + "assistant_reply_first_line": "Собран drilldown документов, формирующих остаток по счету на указанную дату.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_forming_balance_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "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, + "debug_payload": { + "trace_id": "address-W9pNQeFuBD", + "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_forming_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": "documents_forming_balance", + "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_documents_forming_balance_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_LIST", + "execution_lane": "address_query", + "llm_decomposition_applied": false, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "_WjDrtS1FXjZ3-", + "llm_decomposition_effective_message": "доки под остатком 60.01 на 2020-07-31", + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "sanitized_user_message": "доки под остатком 60.01 на 2020-07-31", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "_WjDrtS1FXjZ3-", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "доки под остатком 60.01 на 2020-07-31" + } + }, + "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_Nightly_stress_102_20-16-06-x023", + "status_code": 200, + "ok": true, + "elapsed_ms": 7092, + "reply_type": "factual", + "trace_id": "address-q0W363BbEE", + "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Можно уточнить выборку по контрагенту, договору или периоду.", + "assistant_reply_first_line": "Собран drilldown документов, формирующих остаток по счету на указанную дату.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_forming_balance_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-q0W363BbEE", + "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", + "documents_forming_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": "documents_forming_balance", + "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_documents_forming_balance_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_LIST", + "execution_lane": "address_query", + "llm_decomposition_applied": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "hI293M0WwvoPZX", + "llm_decomposition_effective_message": "Определить состав проводок, формирующих остаток по счету 60.01 на дату 2020-07-31.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "из чего остаток 60.01 на 2020-07-31", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "hI293M0WwvoPZX", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Определить состав проводок, формирующих остаток по счету 60.01 на дату 2020-07-31." + } + }, + "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_Nightly_stress_102_20-16-06-x024", + "status_code": 200, + "ok": true, + "elapsed_ms": 6091, + "reply_type": "factual", + "trace_id": "address-iHuU2pBegk", + "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Можно уточнить выборку по контрагенту, договору или периоду.", + "assistant_reply_first_line": "Собран drilldown документов, формирующих остаток по счету на указанную дату.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_forming_balance_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-iHuU2pBegk", + "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", + "drilldown_signal_detected", + "documents_forming_balance_signal_detected" + ], + "why_included_summary": [], + "selection_reason_summary": [] + }, + "dropped_intent_segments": [], + "detected_mode": "address_query", + "detected_mode_confidence": "high", + "query_shape": "DRILLDOWN_REQUEST", + "query_shape_confidence": "high", + "detected_intent": "documents_forming_balance", + "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_documents_forming_balance_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_LIST", + "execution_lane": "address_query", + "llm_decomposition_applied": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "By6dNye1iCrEE3", + "llm_decomposition_effective_message": "Какие документы формируют остаток по счету 60.01 на конец периода 2020-07-31?", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "какие документы формируют остаток по 60.01 на 2020-07-31", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "By6dNye1iCrEE3", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Какие документы формируют остаток по счету 60.01 на конец периода 2020-07-31?" + } + }, + "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_Nightly_stress_102_20-16-06-x025", + "status_code": 200, + "ok": true, + "elapsed_ms": 6102, + "reply_type": "factual", + "trace_id": "address-kE3n0NGrd_", + "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Можно уточнить выборку по контрагенту, договору или периоду.", + "assistant_reply_first_line": "Собран drilldown документов, формирующих остаток по счету на указанную дату.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_forming_balance_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-kE3n0NGrd_", + "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_forming_balance_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": "documents_forming_balance", + "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_documents_forming_balance_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_LIST", + "execution_lane": "address_query", + "llm_decomposition_applied": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "IuBhTwCfk3f5EP", + "llm_decomposition_effective_message": "документы, формирующие остаток по счету 60.01 на дату 2020-07-31", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "документы forming balance 60.01 as of 2020-07-31", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "IuBhTwCfk3f5EP", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "документы, формирующие остаток по счету 60.01 на дату 2020-07-31" + } + }, + "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_Nightly_stress_102_20-16-06-x026", + "status_code": 200, + "ok": true, + "elapsed_ms": 7128, + "reply_type": "partial_coverage", + "trace_id": "address-pR7C4yi3z_", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.", + "assistant_reply_first_line": "В live-данных по текущему фильтру записи не найдены.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "partial_non_blocking", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_forming_balance_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 0, + "rows_matched": 0, + "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, + "debug_payload": { + "trace_id": "address-pR7C4yi3z_", + "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_account_drilldown_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": "documents_forming_balance", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "account": "62.01", + "period_from": "2020-12-01", + "period_to": "2020-12-31", + "as_of_date": "2020-12-31" + }, + "missing_required_filters": [], + "selected_recipe": "address_documents_forming_balance_v1", + "mcp_call_status_legacy": "no_raw_rows", + "account_scope_mode": "strict", + "account_scope_fallback_applied": false, + "anchor_type": "account", + "anchor_value_raw": "62.01", + "anchor_value_resolved": "62.01", + "resolver_confidence": "high", + "ambiguity_count": 0, + "match_failure_stage": "none", + "match_failure_reason": null, + "mcp_call_status": "no_raw_rows", + "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": "62.01", + "account_token_normalized": "62.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": "empty_match", + "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": "H0r_getOhvLA_s", + "llm_decomposition_effective_message": "Распределить остаток счета 62.01 по документам на конец периода 2020-12-31.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "раскидай остаток 62.01 по докам на 2020-12-31", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "H0r_getOhvLA_s", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Распределить остаток счета 62.01 по документам на конец периода 2020-12-31." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 87, + "id": "X027", + "question": "по счету 51 раскрой остаток документами на 2020-06-30", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-16-06-x027", + "status_code": 200, + "ok": true, + "elapsed_ms": 7158, + "reply_type": "factual", + "trace_id": "address-qBGYoBp7QN", + "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Можно уточнить выборку по контрагенту, договору или периоду.", + "assistant_reply_first_line": "Собран drilldown документов, формирующих остаток по счету на указанную дату.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_forming_balance_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 30, + "rows_matched": 3, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-qBGYoBp7QN", + "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_account_drilldown_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": "documents_forming_balance", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "account": "51", + "period_from": "2020-06-01", + "period_to": "2020-06-30", + "as_of_date": "2020-06-30" + }, + "missing_required_filters": [], + "selected_recipe": "address_documents_forming_balance_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": 30, + "raw_rows_received": 30, + "rows_after_account_scope": 30, + "rows_after_recipe_filter": 30, + "rows_materialized": 30, + "rows_matched": 3, + "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_LIST", + "execution_lane": "address_query", + "llm_decomposition_applied": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "ifumqVgcZAUnP4", + "llm_decomposition_effective_message": "раскрыть остаток по счету 51 с разбивкой по документам на конец периода 2020-06-30", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "по счету 51 раскрой остаток документами на 2020-06-30", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "ifumqVgcZAUnP4", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "раскрыть остаток по счету 51 с разбивкой по документам на конец периода 2020-06-30" + } + }, + "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_Nightly_stress_102_20-16-06-x028", + "status_code": 200, + "ok": true, + "elapsed_ms": 7032, + "reply_type": "factual", + "trace_id": "address-OFMlPD-16S", + "assistant_reply": "Собран drilldown документов, формирующих остаток по счету на указанную дату.\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\n5. 2020-05-12T12:00:00Z | Списание с расчетного счета 00000000137 от 12.05.2020 12:00:00 | 60.01 / 51 | 70000\nМожно уточнить выборку по контрагенту, договору или периоду.", + "assistant_reply_first_line": "Собран drilldown документов, формирующих остаток по счету на указанную дату.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_forming_balance_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "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, + "debug_payload": { + "trace_id": "address-OFMlPD-16S", + "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", + "drilldown_signal_detected", + "documents_forming_balance_signal_detected" + ], + "why_included_summary": [], + "selection_reason_summary": [] + }, + "dropped_intent_segments": [], + "detected_mode": "address_query", + "detected_mode_confidence": "high", + "query_shape": "DRILLDOWN_REQUEST", + "query_shape_confidence": "high", + "detected_intent": "documents_forming_balance", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "account": "60.01", + "period_from": "2020-05-01", + "period_to": "2020-05-31", + "as_of_date": "2020-05-31" + }, + "missing_required_filters": [], + "selected_recipe": "address_documents_forming_balance_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_LIST", + "execution_lane": "address_query", + "llm_decomposition_applied": false, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "8tk8B9U0ArdfgD", + "llm_decomposition_effective_message": "бля из чего состоит остаток по 60.01 на 2020-05-31", + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "sanitized_user_message": "из чего состоит остаток по 60.01 на 2020-05-31", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "8tk8B9U0ArdfgD", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "бля из чего состоит остаток по 60.01 на 2020-05-31" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 89, + "id": "X029", + "question": "доки по договору 19/15 за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-16-06-x029", + "status_code": 200, + "ok": true, + "elapsed_ms": 7479, + "reply_type": "factual", + "trace_id": "address-ETVNPKwuJA", + "assistant_reply": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 8.\n1. 2020-08-31T15:00:06Z | Поступление товаров и услуг 00000000024 от 31.08.2020 15:00:06 | 19.04 / 76.05 | 233.33\n2. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 43804.8\n3. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 9776\n4. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 73968\n5. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 94924.8\n6. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 54400\n7. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.02 / 62.01 | 276873.6\n8. 2020-06-30T12:00:00Z | Поступление товаров и услуг 00000000015 от 30.06.2020 12:00:00 | 19.04 / 76.05 | 233.33", + "assistant_reply_first_line": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 8, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-ETVNPKwuJA", + "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": "19/15", + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": 11, + "rows_materialized": 438, + "rows_matched": 8, + "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": "Mkl2t31cibq8Fv", + "llm_decomposition_effective_message": "Документы по договору 19/15 за период 2020 года.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "доки по договору 19/15 за 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "Mkl2t31cibq8Fv", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Документы по договору 19/15 за период 2020 года." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 90, + "id": "X030", + "question": "покажи документы контракт 19/15", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-16-06-x030", + "status_code": 200, + "ok": true, + "elapsed_ms": 6037, + "reply_type": "factual", + "trace_id": "address-2SxCrGHPkP", + "assistant_reply": "Собран список документов по договору (live address lane).\nСтрок отобрано: 1.\n1. 2021-12-31T12:00:00Z | Поступление товаров и услуг 00000000015 от 31.12.2021 12:00:00 | 19.04 / 76.05 | 233.33", + "assistant_reply_first_line": "Собран список документов по договору (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 1, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-2SxCrGHPkP", + "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_contract_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_contract", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "contract": "19/15" + }, + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": 416, + "rows_after_recipe_filter": 2, + "rows_materialized": 416, + "rows_matched": 1, + "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": "HQGOBOsoHoOs89", + "llm_decomposition_effective_message": "Показать документы по контракту 19/15.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "покажи документы контракт 19/15", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "HQGOBOsoHoOs89", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Показать документы по контракту 19/15." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 91, + "id": "X031", + "question": "docs by contract 19/15 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-16-06-x031", + "status_code": 200, + "ok": true, + "elapsed_ms": 8200, + "reply_type": "factual", + "trace_id": "address-VnApr24d7f", + "assistant_reply": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 8.\n1. 2020-08-31T15:00:06Z | Поступление товаров и услуг 00000000024 от 31.08.2020 15:00:06 | 19.04 / 76.05 | 233.33\n2. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 43804.8\n3. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 9776\n4. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 73968\n5. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 94924.8\n6. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 54400\n7. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.02 / 62.01 | 276873.6\n8. 2020-06-30T12:00:00Z | Поступление товаров и услуг 00000000015 от 30.06.2020 12:00:00 | 19.04 / 76.05 | 233.33", + "assistant_reply_first_line": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 8, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-VnApr24d7f", + "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", + "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": "OBJECT_LOOKUP", + "query_shape_confidence": "medium", + "detected_intent": "list_documents_by_contract", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "contract": "19/15", + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": 11, + "rows_materialized": 438, + "rows_matched": 8, + "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": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "ND0FTRdyM-P7nN", + "llm_decomposition_effective_message": "docs by contract 19/15 2020", + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "sanitized_user_message": "документы by contract 19/15 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "ND0FTRdyM-P7nN", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "docs by contract 19/15 2020" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 92, + "id": "X032", + "question": "по дог 19/15 какие документы", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-16-06-x032", + "status_code": 200, + "ok": true, + "elapsed_ms": 7086, + "reply_type": "factual", + "trace_id": "address-tIvp1MseQl", + "assistant_reply": "Собран список документов по договору (live address lane).\nСтрок отобрано: 1.\n1. 2021-12-31T12:00:00Z | Поступление товаров и услуг 00000000015 от 31.12.2021 12:00:00 | 19.04 / 76.05 | 233.33", + "assistant_reply_first_line": "Собран список документов по договору (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 1, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-tIvp1MseQl", + "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" + ], + "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": "19/15" + }, + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": 416, + "rows_after_recipe_filter": 2, + "rows_materialized": 416, + "rows_matched": 1, + "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": "bW6flIGtBCFMXb", + "llm_decomposition_effective_message": "Документы по договору 19/15", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "по договор 19/15 какие документы", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "bW6flIGtBCFMXb", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Документы по договору 19/15" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 93, + "id": "X033", + "question": "договор 19/15 выведи доки", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-16-06-x033", + "status_code": 200, + "ok": true, + "elapsed_ms": 7967, + "reply_type": "factual", + "trace_id": "address-66ykde1R_f", + "assistant_reply": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 120.\n1. 2022-09-30T12:00:00Z | Поступление товаров и услуг 00000000010 от 30.09.2022 12:00:00 | 19.04 / 76.05 | 191.67\n2. 2022-09-30T12:00:00Z | Поступление товаров и услуг 00000000010 от 30.09.2022 12:00:00 | 44.01 / 76.05 | 958.33\n3. 2022-08-31T12:00:00Z | Поступление товаров и услуг 00000000009 от 31.08.2022 12:00:00 | 19.04 / 76.05 | 233.33\n4. 2022-08-31T12:00:00Z | Поступление товаров и услуг 00000000009 от 31.08.2022 12:00:00 | 44.01 / 76.05 | 1166.67\n5. 2022-07-31T12:00:00Z | Поступление товаров и услуг 00000000008 от 31.07.2022 12:00:00 | 19.04 / 76.05 | 150.54\n6. 2022-07-31T12:00:00Z | Поступление товаров и услуг 00000000008 от 31.07.2022 12:00:00 | 44.01 / 76.05 | 752.69\n7. 2022-07-31T12:00:00Z | Поступление товаров и услуг 00000000008 от 31.07.2022 12:00:00 | 76.05 / 76.05 | 280\n8. 2022-06-30T00:00:01Z | Поступление товаров и услуг 00000000006 от 30.06.2022 0:00:01 | 19.04 / 76.05 | 186.67\n9. 2022-06-30T00:00:01Z | Поступление товаров и услуг 00000000006 от 30.06.2022 0:00:01 | 44.01 / 76.05 | 933.33\n10. 2022-05-31T00:00:01Z | Поступление товаров и услуг 00000000005 от 31.05.2022 0:00:01 | 19.04 / 76.05 | 233.33\n11. 2022-05-31T00:00:01Z | Поступление товаров и услуг 00000000005 от 31.05.2022 0:00:01 | 44.01 / 76.05 | 1166.67\n12. 2022-04-30T00:00:01Z | Поступление товаров и услуг 00000000004 от 30.04.2022 0:00:01 | 19.04 / 76.05 | 233.33\n13. 2022-04-30T00:00:01Z | Поступление товаров и услуг 00000000004 от 30.04.2022 0:00:01 | 44.01 / 76.05 | 1166.67\n14. 2022-04-18T12:00:00Z | Поступление товаров и услуг 00000000007 от 18.04.2022 12:00:00 | 97.21 / 60.01 | 14790\n15. 2022-04-18T12:00:00Z | Поступление товаров и услуг 00000000007 от 18.04.2022 12:00:00 | 60.01 / 60.02 | 14790\n16. 2022-04-13T12:00:00Z | Поступление на расчетный счет 00000000004 от 13.04.2022 12:00:00 | 51 / 76.05 | 1200000\n17. 2022-03-31T12:00:00Z | Поступление товаров и услуг 00000000001 от 31.03.2022 12:00:00 | 19.04 / 76.05 | 233.33\n18. 2022-03-31T12:00:00Z | Поступление товаров и услуг 00000000001 от 31.03.2022 12:00:00 | 44.01 / 76.05 | 1166.67\n19. 2022-02-28T12:00:00Z | Поступление товаров и услуг 00000000002 от 28.02.2022 12:00:00 | 19.04 / 76.05 | 233.33\n20. 2022-02-28T12:00:00Z | Поступление товаров и услуг 00000000002 от 28.02.2022 12:00:00 | 44.01 / 76.05 | 1166.67\n21. 2022-01-31T12:00:00Z | Поступление товаров и услуг 00000000003 от 31.01.2022 12:00:00 | 19.04 / 76.05 | 233.33\n22. 2022-01-31T12:00:00Z | Поступление товаров и услуг 00000000003 от 31.01.2022 12:00:00 | 44.01 / 76.05 | 1166.67\n23. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 217415\n24. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 114640\n25. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 659320\n26. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 109610\n27. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 162300\n28. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 990830\n29. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 302560\n30. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 105310\n31. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 615320\n32. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 144220\n33. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 56930\n34. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 50000\n35. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 425600\n36. 2022-01-20T12:00:03Z | Поступление на расчетный счет 00000000001 от 20.01.2022 12:00:03 | 51 / 60.02 | 119210\n37. 2022-01-20T12:00:03Z | Поступление на расчетный счет 00000000001 от 20.01.2022 12:00:03 | 51 / 60.02 | 180230\n38. 2022-01-20T12:00:03Z | Поступление на расчетный счет 00000000001 от 20.01.2022 12:00:03 | 51 / 60.02 | 144320\n39. 2022-01-20T12:00:03Z | Поступление на расчетный счет 00000000001 от 20.01.2022 12:00:03 | 51 / 60.02 | 320600\n40. 2022-01-20T12:00:03Z | Поступление на расчетный счет 00000000001 от 20.01.2022 12:00:03 | 51 / 60.02 | 126300\n41. 2021-12-31T12:00:00Z | Поступление товаров и услуг 00000000015 от 31.12.2021 12:00:00 | 19.04 / 76.05 | 233.33\n42. 2021-12-31T12:00:00Z | Поступление товаров и услуг 00000000015 от 31.12.2021 12:00:00 | 44.01 / 76.05 | 1166.67\n43. 2021-11-30T12:00:00Z | Поступление товаров и услуг 00000000014 от 30.11.2021 12:00:00 | 19.04 / 76.05 | 233.33\n44. 2021-11-30T12:00:00Z | Поступление товаров и услуг 00000000014 от 30.11.2021 12:00:00 | 44.01 / 76.05 | 1166.67\n45. 2021-11-10T12:00:07Z | Поступление на расчетный счет 00000000013 от 10.11.2021 12:00:07 | 51 / 62.02 | 20000\n46. 2021-10-31T12:00:00Z | Поступление товаров и услуг 00000000013 от 31.10.2021 12:00:00 | 19.04 / 76.05 | 233.33\n47. 2021-10-31T12:00:00Z | Поступление товаров и услуг 00000000013 от 31.10.2021 12:00:00 | 44.01 / 76.05 | 1166.67\n48. 2021-09-30T12:00:00Z | Поступление товаров и услуг 00000000012 от 30.09.2021 12:00:00 | 19.04 / 76.05 | 233.33\n49. 2021-09-30T12:00:00Z | Поступление товаров и услуг 00000000012 от 30.09.2021 12:00:00 | 44.01 / 76.05 | 1166.67\n50. 2021-09-29T12:00:03Z | Поступление на расчетный счет 00000000012 от 29.09.2021 12:00:03 | 51 / 62.02 | 50000\n51. 2021-08-31T12:00:05Z | Поступление товаров и услуг 00000000011 от 31.08.2021 12:00:05 | 19.04 / 76.05 | 233.33\n52. 2021-08-31T12:00:05Z | Поступление товаров и услуг 00000000011 от 31.08.2021 12:00:05 | 44.01 / 76.05 | 1166.67\n53. 2021-08-31T12:00:04Z | Поступление на расчетный счет 00000000011 от 31.08.2021 12:00:04 | 51 / 62.02 | 120500\n54. 2021-07-31T12:00:00Z | Поступление товаров и услуг 00000000010 от 31.07.2021 12:00:00 | 19.04 / 76.05 | 233.33\n55. 2021-07-31T12:00:00Z | Поступление товаров и услуг 00000000010 от 31.07.2021 12:00:00 | 44.01 / 76.05 | 1166.67\n56. 2021-06-30T00:00:00Z | Поступление товаров и услуг 00000000008 от 30.06.2021 0:00:00 | 19.04 / 76.05 | 233.33\n57. 2021-06-30T00:00:00Z | Поступление товаров и услуг 00000000008 от 30.06.2021 0:00:00 | 44.01 / 76.05 | 1166.67\n58. 2021-06-22T12:00:00Z | Поступление на расчетный счет 00000000010 от 22.06.2021 12:00:00 | 51 / 62.02 | 498630\n59. 2021-06-09T12:00:05Z | Поступление на расчетный счет 00000000009 от 09.06.2021 12:00:05 | 51 / 62.02 | 418960\n60. 2021-05-31T12:00:04Z | Поступление товаров и услуг 00000000006 от 31.05.2021 12:00:04 | 19.04 / 76.05 | 233.33\n61. 2021-05-31T12:00:04Z | Поступление товаров и услуг 00000000006 от 31.05.2021 12:00:04 | 44.01 / 76.05 | 1166.67\n62. 2021-05-17T12:00:00Z | Поступление товаров и услуг 00000000009 от 17.05.2021 12:00:00 | 19.04 / 60.01 | 12000\n63. 2021-05-17T12:00:00Z | Поступление товаров и услуг 00000000009 от 17.05.2021 12:00:00 | 97.21 / 60.01 | 60000\n64. 2021-05-17T12:00:00Z | Поступление товаров и услуг 00000000009 от 17.05.2021 12:00:00 | 60.01 / 60.02 | 72000\n65. 2021-04-30T12:00:00Z | Поступление товаров и услуг 00000000005 от 30.04.2021 12:00:00 | 19.04 / 76.05 | 233.33\n66. 2021-04-30T12:00:00Z | Поступление товаров и услуг 00000000005 от 30.04.2021 12:00:00 | 44.01 / 76.05 | 1166.67\n67. 2021-04-28T12:00:08Z | Поступление на расчетный счет 00000000008 от 28.04.2021 12:00:08 | 51 / 62.02 | 564300\n68. 2021-04-22T12:00:00Z | Поступление на расчетный счет 00000000007 от 22.04.2021 12:00:00 | 51 / 62.02 | 982420\n69. 2021-04-13T12:00:11Z | Поступление на расчетный счет 00000000006 от 13.04.2021 12:00:11 | 51 / 62.02 | 1882400\n70. 2021-04-07T12:00:00Z | Поступление товаров и услуг 00000000016 от 07.04.2021 12:00:00 | 97.21 / 60.01 | 11900\n71. 2021-04-07T12:00:00Z | Поступление товаров и услуг 00000000016 от 07.04.2021 12:00:00 | 60.01 / 60.02 | 11900\n72. 2021-03-31T23:59:59Z | Поступление товаров и услуг 00000000003 от 31.03.2021 23:59:59 | 19.04 / 76.05 | 233.33\n73. 2021-03-31T23:59:59Z | Поступление товаров и услуг 00000000003 от 31.03.2021 23:59:59 | 44.01 / 76.05 | 1166.67\n74. 2021-03-25T12:00:02Z | Поступление на расчетный счет 00000000005 от 25.03.2021 12:00:02 | 51 / 62.02 | 644315\n75. 2021-03-24T12:00:03Z | Поступление на расчетный счет 00000000004 от 24.03.2021 12:00:03 | 51 / 62.02 | 1219990\n76. 2021-03-22T12:00:02Z | Реализация товаров и услуг 00000000001 от 22.03.2021 12:00:02 | 62.01 / 90.01.1 | 598950\n77. 2021-03-22T12:00:02Z | Реализация товаров и услуг 00000000001 от 22.03.2021 12:00:02 | 62.02 / 62.01 | 95274\n78. 2021-03-22T12:00:02Z | Реализация товаров и услуг 00000000001 от 22.03.2021 12:00:02 | 62.02 / 62.01 | 38900\n79. 2021-03-22T12:00:02Z | Реализация товаров и услуг 00000000001 от 22.03.2021 12:00:02 | 62.02 / 62.01 | 464776\n80. 2021-03-18T12:00:00Z | Поступление на расчетный счет 00000000003 от 18.03.2021 12:00:00 | 51 / 62.02 | 1425310\n81. 2021-03-12T12:00:03Z | Поступление на расчетный счет 00000000002 от 12.03.2021 12:00:03 | 51 / 62.02 | 214600\n82. 2021-03-09T00:00:00Z | Поступление товаров и услуг 00000000001 от 09.03.2021 0:00:00 | 19.03 / 60.01 | 88415\n83. 2021-03-09T00:00:00Z | Поступление товаров и услуг 00000000001 от 09.03.2021 0:00:00 | 41.01 / 60.01 | 442075\n84. 2021-02-28T23:59:59Z | Поступление товаров и услуг 00000000004 от 28.02.2021 23:59:59 | 19.04 / 76.05 | 233.33\n85. 2021-02-28T23:59:59Z | Поступление товаров и услуг 00000000004 от 28.02.2021 23:59:59 | 44.01 / 76.05 | 1166.67\n86. 2021-02-19T12:00:01Z | Поступление на расчетный счет 00000000001 от 19.02.2021 12:00:01 | 51 / 62.02 | 518600\n87. 2021-01-31T23:59:59Z | Поступление товаров и услуг 00000000002 от 31.01.2021 23:59:59 | 19.04 / 76.05 | 233.33\n88. 2021-01-31T23:59:59Z | Поступление товаров и услуг 00000000002 от 31.01.2021 23:59:59 | 44.01 / 76.05 | 1166.67\n89. 2020-12-31T23:59:59Z | Поступление товаров и услуг 00000000034 от 31.12.2020 23:59:59 | 19.04 / 76.05 | 233.33\n90. 2020-12-31T23:59:59Z | Поступление товаров и услуг 00000000034 от 31.12.2020 23:59:59 | 44.01 / 76.05 | 1166.67\n91. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 51 / 62.02 | 3248300\n92. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 51 / 62.02 | 216600\n93. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 51 / 62.02 | 200000\n94. 2020-11-30T23:59:59Z | Поступление товаров и услуг 00000000033 от 30.11.2020 23:59:59 | 19.04 / 76.05 | 233.33\n95. 2020-11-30T23:59:59Z | Поступление товаров и услуг 00000000033 от 30.11.2020 23:59:59 | 44.01 / 76.05 | 1166.67\n96. 2020-11-30T12:00:08Z | Реализация товаров и услуг 00000000010 от 30.11.2020 12:00:08 | 62.01 / 90.01.1 | 118552\n97. 2020-11-30T12:00:08Z | Реализация товаров и услуг 00000000010 от 30.11.2020 12:00:08 | 62.01 / 90.01.1 | 458472\n98. 2020-11-30T12:00:08Z | Реализация товаров и услуг 00000000010 от 30.11.2020 12:00:08 | 62.02 / 62.01 | 577024\n99. 2020-11-30T12:00:07Z | Поступление на расчетный счет 00000000041 от 30.11.2020 12:00:07 | 51 / 62.02 | 38900\n100. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 900000\n101. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 144749\n102. 2020-11-20T12:00:00Z | Поступление товаров и услуг 00000000030 от 20.11.2020 12:00:00 | 19.03 / 60.01 | 1450\n103. 2020-11-20T12:00:00Z | Поступление товаров и услуг 00000000030 от 20.11.2020 12:00:00 | 41.01 / 60.01 | 7250\n104. 2020-11-20T12:00:00Z | Поступление товаров и услуг 00000000030 от 20.11.2020 12:00:00 | 60.01 / 60.02 | 8700\n105. 2020-11-19T12:00:04Z | Поступление на расчетный счет 00000000039 от 19.11.2020 12:00:04 | 51 / 62.02 | 1041800\n106. 2020-11-19T12:00:04Z | Поступление на расчетный счет 00000000039 от 19.11.2020 12:00:04 | 51 / 62.01 | 2278800\n107. 2020-11-18T12:00:05Z | Поступление на расчетный счет 00000000038 от 18.11.2020 12:00:05 | 51 / 62.01 | 745300\n108. 2020-11-18T12:00:04Z | Поступление на расчетный счет 00000000037 от 18.11.2020 12:00:04 | 51 / 62.01 | 320000\n109. 2020-11-13T12:00:03Z | Поступление на расчетный счет 00000000036 от 13.11.2020 12:00:03 | 51 / 62.01 | 313600\n110. 2020-11-10T15:39:14Z | Реализация товаров и услуг 00000000009 от 10.11.2020 15:39:14 | 62.01 / 90.01.1 | 4161000\n111. 2020-11-10T15:39:14Z | Реализация товаров и услуг 00000000009 от 10.11.2020 15:39:14 | 62.02 / 62.01 | 328300\n112. 2020-11-10T15:39:14Z | Реализация товаров и услуг 00000000009 от 10.11.2020 15:39:14 | 62.02 / 62.01 | 175000\n113. 2020-11-10T15:39:13Z | Поступление на расчетный счет 00000000035 от 10.11.2020 15:39:13 | 51 / 62.02 | 328300\n114. 2020-11-09T12:00:01Z | Поступление товаров и услуг 00000000031 от 09.11.2020 12:00:01 | 41.01 / 60.01 | 2229840\n115. 2020-10-31T23:59:59Z | Поступление товаров и услуг 00000000032 от 31.10.2020 23:59:59 | 19.04 / 76.05 | 233.33\n116. 2020-10-31T23:59:59Z | Поступление товаров и услуг 00000000032 от 31.10.2020 23:59:59 | 44.01 / 76.05 | 1166.67\n117. 2020-10-26T12:00:00Z | Поступление на расчетный счет 00000000034 от 26.10.2020 12:00:00 | 51 / 62.02 | 175000\n118. 2020-10-14T12:00:00Z | Поступление на расчетный счет 00000000033 от 14.10.2020 12:00:00 | 51 / 60.01 | 160000\n119. 2020-09-30T12:00:04Z | Поступление товаров и услуг 00000000025 от 30.09.2020 12:00:04 | 19.04 / 76.05 | 233.33\n120. 2020-09-30T12:00:04Z | Поступление товаров и услуг 00000000025 от 30.09.2020 12:00:04 | 44.01 / 76.05 | 1166.67", + "assistant_reply_first_line": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "materialized_but_not_anchor_matched", + "match_failure_reason": "contract_anchor_not_matched_in_materialized_rows", + "rows_fetched": 1000, + "rows_matched": 120, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-66ykde1R_f", + "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_contract_signal_detected", + "anchor_not_matched_fallback_rows" + ], + "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_contract", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "contract": "19/15 выведите связанные документы" + }, + "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": "19/15 выведите связанные документы", + "anchor_value_resolved": "19/15 выведите связанные документы", + "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": "matched_non_empty", + "rows_fetched": 1000, + "raw_rows_received": 1000, + "rows_after_account_scope": 416, + "rows_after_recipe_filter": 0, + "rows_materialized": 416, + "rows_matched": 120, + "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": "7_mq-SbA7NwKnE", + "llm_decomposition_effective_message": "Для договора 19/15 выведите связанные документы.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "договор 19/15 выведи доки", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "7_mq-SbA7NwKnE", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Для договора 19/15 выведите связанные документы." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 94, + "id": "X034", + "question": "нах покажи документы по 19/15", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-16-06-x034", + "status_code": 200, + "ok": true, + "elapsed_ms": 6136, + "reply_type": "factual", + "trace_id": "address-lxOwgJn7rl", + "assistant_reply": "Собран список документов по договору (live address lane).\nСтрок отобрано: 1.\n1. 2021-12-31T12:00:00Z | Поступление товаров и услуг 00000000015 от 31.12.2021 12:00:00 | 19.04 / 76.05 | 233.33", + "assistant_reply_first_line": "Собран список документов по договору (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 1, + "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, + "debug_payload": { + "trace_id": "address-lxOwgJn7rl", + "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_contract_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_contract", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "contract": "19/15" + }, + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": 416, + "rows_after_recipe_filter": 2, + "rows_materialized": 416, + "rows_matched": 1, + "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": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "tA-OPb3kBlogKz", + "llm_decomposition_effective_message": "нах покажи документы по 19/15", + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "sanitized_user_message": "покажи документы по 19/15", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "tA-OPb3kBlogKz", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "нах покажи документы по 19/15" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 95, + "id": "X035", + "question": "банк операции по договору 19/15", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-16-06-x035", + "status_code": 200, + "ok": true, + "elapsed_ms": 6331, + "reply_type": "factual", + "trace_id": "address-9J842gBQST", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 1.\n1. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "assistant_reply_first_line": "Собран список банковских операций по договору (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 1, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-9J842gBQST", + "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": "19/15" + }, + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": 1, + "rows_materialized": 341, + "rows_matched": 1, + "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": "ZoMuA94906cyUM", + "llm_decomposition_effective_message": "операции банка по договору 19/15", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "банк операции по договору 19/15", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "ZoMuA94906cyUM", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "операции банка по договору 19/15" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 96, + "id": "X036", + "question": "платежки по дог 19/15", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-16-06-x036", + "status_code": 200, + "ok": true, + "elapsed_ms": 6909, + "reply_type": "factual", + "trace_id": "address-D-YmmIx2pB", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 1.\n1. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "assistant_reply_first_line": "Собран список банковских операций по договору (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 1, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-D-YmmIx2pB", + "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", + "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": "DOCUMENT_LIST", + "query_shape_confidence": "medium", + "detected_intent": "bank_operations_by_contract", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "contract": "19/15" + }, + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": 1, + "rows_materialized": 341, + "rows_matched": 1, + "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": "YJZmlZyn_TGRu1", + "llm_decomposition_effective_message": "платежи по договору 19/15", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "платежки по договор 19/15", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "YJZmlZyn_TGRu1", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "платежи по договору 19/15" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 97, + "id": "X037", + "question": "выписка по контракту 19/15", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-16-06-x037", + "status_code": 200, + "ok": true, + "elapsed_ms": 6111, + "reply_type": "factual", + "trace_id": "address-A1wa7ih1tr", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 1.\n1. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "assistant_reply_first_line": "Собран список банковских операций по договору (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 1, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-A1wa7ih1tr", + "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", + "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": "DOCUMENT_LIST", + "query_shape_confidence": "medium", + "detected_intent": "bank_operations_by_contract", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "contract": "19/15" + }, + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": 1, + "rows_materialized": 341, + "rows_matched": 1, + "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": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "AOnbk7_AYv_3ps", + "llm_decomposition_effective_message": "выписка по контракту 19/15", + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "sanitized_user_message": "выписка по контракту 19/15", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "AOnbk7_AYv_3ps", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "выписка по контракту 19/15" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 98, + "id": "X038", + "question": "bank ops by contract 19/15", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-16-06-x038", + "status_code": 200, + "ok": true, + "elapsed_ms": 7069, + "reply_type": "factual", + "trace_id": "address-L9OjSklst2", + "assistant_reply": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.\nСобран список банковских операций по договору (live address lane).\nСтрок отобрано: 341.\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\n5. 2022-07-11T12:00:00Z | Списание с расчетного счета 00000000014 от 11.07.2022 12:00:00 | 76.05 / 51 | 1120\n6. 2022-07-11T12:00:00Z | Списание с расчетного счета 00000000014 от 11.07.2022 12:00:00 | 76.05 / 51 | 1400\n7. 2022-07-11T12:00:00Z | Списание с расчетного счета 00000000014 от 11.07.2022 12:00:00 | 76.05 / 51 | 1400\n8. 2022-06-10T12:00:00Z | Списание с расчетного счета 00000000015 от 10.06.2022 12:00:00 | 91.02 / 51 | 990\n9. 2022-05-11T12:00:00Z | Списание с расчетного счета 00000000013 от 11.05.2022 12:00:00 | 66.04 / 51 | 180000\n10. 2022-05-10T12:00:00Z | Списание с расчетного счета 00000000012 от 10.05.2022 12:00:00 | 91.02 / 51 | 990\n11. 2022-04-15T12:00:02Z | Списание с расчетного счета 00000000011 от 15.04.2022 12:00:02 | 66.03 / 51 | 1000000\n12. 2022-04-15T12:00:01Z | Списание с расчетного счета 00000000010 от 15.04.2022 12:00:01 | 60.02 / 51 | 14790\n13. 2022-04-15T12:00:00Z | Списание с расчетного счета 00000000009 от 15.04.2022 12:00:00 | 76.05 / 51 | 1400\n14. 2022-04-15T12:00:00Z | Списание с расчетного счета 00000000009 от 15.04.2022 12:00:00 | 76.05 / 51 | 1400\n15. 2022-04-13T12:00:00Z | Поступление на расчетный счет 00000000004 от 13.04.2022 12:00:00 | 51 / 76.05 | 1200000\n16. 2022-03-10T12:00:00Z | Списание с расчетного счета 00000000008 от 10.03.2022 12:00:00 | 91.02 / 51 | 990\n17. 2022-02-14T12:00:01Z | Списание с расчетного счета 00000000007 от 14.02.2022 12:00:01 | 76.05 / 51 | 1400\n18. 2022-02-14T12:00:00Z | Списание с расчетного счета 00000000006 от 14.02.2022 12:00:00 | 91.02 / 51 | 990\n19. 2022-01-25T12:00:00Z | Списание с расчетного счета 00000000005 от 25.01.2022 12:00:00 | 68.1 / 51 | 3000\n20. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 217415\n21. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 114640\n22. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 659320\n23. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 109610\n24. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 162300\n25. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 990830\n26. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 302560\n27. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 105310\n28. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 615320\n29. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 144220\n30. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 56930\n31. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 50000\n32. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 425600\n33. 2022-01-20T12:00:03Z | Поступление на расчетный счет 00000000001 от 20.01.2022 12:00:03 | 51 / 60.02 | 119210\n34. 2022-01-20T12:00:03Z | Поступление на расчетный счет 00000000001 от 20.01.2022 12:00:03 | 51 / 60.02 | 180230\n35. 2022-01-20T12:00:03Z | Поступление на расчетный счет 00000000001 от 20.01.2022 12:00:03 | 51 / 60.02 | 144320\n36. 2022-01-20T12:00:03Z | Поступление на расчетный счет 00000000001 от 20.01.2022 12:00:03 | 51 / 60.02 | 320600\n37. 2022-01-20T12:00:03Z | Поступление на расчетный счет 00000000001 от 20.01.2022 12:00:03 | 51 / 60.02 | 126300\n38. 2022-01-20T12:00:02Z | Списание с расчетного счета 00000000004 от 20.01.2022 12:00:02 | 62.02 / 51 | 1808325\n39. 2022-01-20T12:00:02Z | Списание с расчетного счета 00000000004 от 20.01.2022 12:00:02 | 62.02 / 51 | 216600\n40. 2022-01-20T12:00:02Z | Списание с расчетного счета 00000000004 от 20.01.2022 12:00:02 | 62.02 / 51 | 104726\n41. 2022-01-20T12:00:01Z | Списание с расчетного счета 00000000003 от 20.01.2022 12:00:01 | 60.01 / 51 | 1705109.5\n42. 2022-01-20T12:00:00Z | Списание с расчетного счета 00000000002 от 20.01.2022 12:00:00 | 66.03 / 51 | 1000000\n43. 2022-01-19T12:00:00Z | Списание с расчетного счета 00000000001 от 19.01.2022 12:00:00 | 76.05 / 51 | 1400\n44. 2022-01-19T12:00:00Z | Списание с расчетного счета 00000000001 от 19.01.2022 12:00:00 | 76.05 / 51 | 1400\n45. 2021-12-01T12:00:00Z | Списание с расчетного счета 00000000196 от 01.12.2021 12:00:00 | 91.02 / 51 | 66.67\n46. 2021-11-10T12:00:07Z | Поступление на расчетный счет 00000000013 от 10.11.2021 12:00:07 | 51 / 62.02 | 20000\n47. 2021-11-10T12:00:06Z | Списание с расчетного счета 00000000195 от 10.11.2021 12:00:06 | 69.02.7 / 51 | 8632.1\n48. 2021-11-10T12:00:05Z | Списание с расчетного счета 00000000194 от 10.11.2021 12:00:05 | 69.03.1 / 51 | 3561.32\n49. 2021-11-10T12:00:04Z | Списание с расчетного счета 00000000193 от 10.11.2021 12:00:04 | 76.05 / 51 | 1400\n50. 2021-11-10T12:00:03Z | Списание с расчетного счета 00000000192 от 10.11.2021 12:00:03 | 91.02 / 51 | 990\n51. 2021-11-10T12:00:02Z | Списание с расчетного счета 00000000191 от 10.11.2021 12:00:02 | 69.01 / 51 | 370.97\n52. 2021-11-10T12:00:01Z | Списание с расчетного счета 00000000190 от 10.11.2021 12:00:01 | 69.11 / 51 | 141.94\n53. 2021-11-10T12:00:00Z | Списание с расчетного счета 00000000189 от 10.11.2021 12:00:00 | 91.02 / 51 | 8\n54. 2021-10-18T12:00:00Z | Списание с расчетного счета 00000000188 от 18.10.2021 12:00:00 | 76.05 / 51 | 1400\n55. 2021-10-12T12:00:04Z | Списание с расчетного счета 00000000187 от 12.10.2021 12:00:04 | 69.02.7 / 51 | 13326.28\n56. 2021-10-12T12:00:03Z | Списание с расчетного счета 00000000186 от 12.10.2021 12:00:03 | 68.01.1 / 51 | 9226\n57. 2021-10-12T12:00:02Z | Списание с расчетного счета 00000000185 от 12.10.2021 12:00:02 | 69.03.1 / 51 | 5153.69\n58. 2021-10-12T12:00:01Z | Списание с расчетного счета 00000000184 от 12.10.2021 12:00:01 | 69.01 / 51 | 741.94\n59. 2021-10-12T12:00:00Z | Списание с расчетного счета 00000000183 от 12.10.2021 12:00:00 | 69.11 / 51 | 205.12\n60. 2021-10-09T12:00:00Z | Списание с расчетного счета 00000000182 от 09.10.2021 12:00:00 | 91.02 / 51 | 990\n61. 2021-09-29T12:00:03Z | Поступление на расчетный счет 00000000012 от 29.09.2021 12:00:03 | 51 / 62.02 | 50000\n62. 2021-09-29T12:00:02Z | Списание с расчетного счета 00000000181 от 29.09.2021 12:00:02 | 70 / 51 | 34310\n63. 2021-09-29T12:00:01Z | Списание с расчетного счета 00000000180 от 29.09.2021 12:00:01 | 68.01.1 / 51 | 9503\n64. 2021-09-29T12:00:00Z | Списание с расчетного счета 00000000179 от 29.09.2021 12:00:00 | 91.02 / 51 | 171.55\n65. 2021-09-14T12:00:01Z | Списание с расчетного счета 00000000178 от 14.09.2021 12:00:01 | 70 / 51 | 29200\n66. 2021-09-14T12:00:00Z | Списание с расчетного счета 00000000177 от 14.09.2021 12:00:00 | 91.02 / 51 | 146\n67. 2021-09-09T12:00:00Z | Списание с расчетного счета 00000000176 от 09.09.2021 12:00:00 | 91.02 / 51 | 990\n68. 2021-09-07T12:00:05Z | Списание с расчетного счета 00000000175 от 07.09.2021 12:00:05 | 69.02.7 / 51 | 13830.84\n69. 2021-09-07T12:00:04Z | Списание с расчетного счета 00000000174 от 07.09.2021 12:00:04 | 69.03.1 / 51 | 5405.97\n70. 2021-09-07T12:00:03Z | Списание с расчетного счета 00000000173 от 07.09.2021 12:00:03 | 68.01.1 / 51 | 3830\n71. 2021-09-07T12:00:02Z | Списание с расчетного счета 00000000172 от 07.09.2021 12:00:02 | 76.05 / 51 | 1400\n72. 2021-09-07T12:00:01Z | Списание с расчетного счета 00000000171 от 07.09.2021 12:00:01 | 69.01 / 51 | 741.92\n73. 2021-09-07T12:00:00Z | Списание с расчетного счета 00000000170 от 07.09.2021 12:00:00 | 69.11 / 51 | 215.22\n74. 2021-08-31T12:00:04Z | Поступление на расчетный счет 00000000011 от 31.08.2021 12:00:04 | 51 / 62.02 | 120500\n75. 2021-08-31T12:00:03Z | Списание с расчетного счета 00000000169 от 31.08.2021 12:00:03 | 70 / 51 | 34642.18\n76. 2021-08-31T12:00:02Z | Списание с расчетного счета 00000000168 от 31.08.2021 12:00:02 | 70 / 51 | 33613.36\n77. 2021-08-31T12:00:01Z | Списание с расчетного счета 00000000167 от 31.08.2021 12:00:01 | 68.01.1 / 51 | 10199\n78. 2021-08-31T12:00:00Z | Списание с расчетного счета 00000000166 от 31.08.2021 12:00:00 | 91.02 / 51 | 341.28\n79. 2021-08-13T12:00:00Z | Списание с расчетного счета 00000000165 от 13.08.2021 12:00:00 | 76.05 / 51 | 1400\n80. 2021-08-12T12:00:02Z | Списание с расчетного счета 00000000164 от 12.08.2021 12:00:02 | 70 / 51 | 25363.04\n81. 2021-08-12T12:00:01Z | Списание с расчетного счета 00000000163 от 12.08.2021 12:00:01 | 68.01.1 / 51 | 3790\n82. 2021-08-12T12:00:00Z | Списание с расчетного счета 00000000162 от 12.08.2021 12:00:00 | 91.02 / 51 | 126.82\n83. 2021-08-11T12:00:00Z | Списание с расчетного счета 00000000160 от 11.08.2021 12:00:00 | 66.04 / 51 | 6410.96\n84. 2021-08-09T12:00:00Z | Списание с расчетного счета 00000000161 от 09.08.2021 12:00:00 | 91.02 / 51 | 990\n85. 2021-08-06T12:00:03Z | Списание с расчетного счета 00000000159 от 06.08.2021 12:00:03 | 69.02.7 / 51 | 16268.03\n86. 2021-08-06T12:00:02Z | Списание с расчетного счета 00000000158 от 06.08.2021 12:00:02 | 69.03.1 / 51 | 6624.56\n87. 2021-08-06T12:00:01Z | Списание с расчетного счета 00000000157 от 06.08.2021 12:00:01 | 69.01 / 51 | 741.96\n88. 2021-08-06T12:00:00Z | Списание с расчетного счета 00000000156 от 06.08.2021 12:00:00 | 69.11 / 51 | 263.96\n89. 2021-08-05T12:00:05Z | Списание с расчетного счета 00000000155 от 05.08.2021 12:00:05 | 68.04.1 / 51 | 125\n90. 2021-08-05T12:00:04Z | Списание с расчетного счета 00000000154 от 05.08.2021 12:00:04 | 68.04.1 / 51 | 3449\n91. 2021-08-05T12:00:03Z | Списание с расчетного счета 00000000153 от 05.08.2021 12:00:03 | 68.04.1 / 51 | 607\n92. 2021-08-05T12:00:02Z | Списание с расчетного счета 00000000152 от 05.08.2021 12:00:02 | 69.02.7 / 51 | 55.77\n93. 2021-08-05T12:00:01Z | Списание с расчетного счета 00000000151 от 05.08.2021 12:00:01 | 69.03.1 / 51 | 1\n94. 2021-08-05T12:00:00Z | Списание с расчетного счета 00000000150 от 05.08.2021 12:00:00 | 69.01 / 51 | 0.15\n95. 2021-07-29T12:00:02Z | Списание с расчетного счета 00000000149 от 29.07.2021 12:00:02 | 70 / 51 | 34310\n96. 2021-07-29T12:00:01Z | Списание с расчетного счета 00000000148 от 29.07.2021 12:00:01 | 68.01.1 / 51 | 9490\n97. 2021-07-29T12:00:00Z | Списание с расчетного счета 00000000147 от 29.07.2021 12:00:00 | 91.02 / 51 | 171.55\n98. 2021-07-16T12:00:00Z | Списание с расчетного счета 00000000146 от 16.07.2021 12:00:00 | 76.05 / 51 | 1400\n99. 2021-07-14T12:00:01Z | Списание с расчетного счета 00000000145 от 14.07.2021 12:00:01 | 70 / 51 | 29200\n100. 2021-07-14T12:00:00Z | Списание с расчетного счета 00000000144 от 14.07.2021 12:00:00 | 91.02 / 51 | 146\n101. 2021-07-12T12:00:03Z | Списание с расчетного счета 00000000143 от 12.07.2021 12:00:03 | 69.02.7 / 51 | 15370.08\n102. 2021-07-12T12:00:02Z | Списание с расчетного счета 00000000142 от 12.07.2021 12:00:02 | 69.03.1 / 51 | 6177.6\n103. 2021-07-12T12:00:01Z | Списание с расчетного счета 00000000141 от 12.07.2021 12:00:01 | 69.01 / 51 | 741.96\n104. 2021-07-12T12:00:00Z | Списание с расчетного счета 00000000140 от 12.07.2021 12:00:00 | 69.11 / 51 | 246\n105. 2021-07-09T12:00:03Z | Списание с расчетного счета 00000000139 от 09.07.2021 12:00:03 | 70 / 51 | 51312.53\n106. 2021-07-09T12:00:02Z | Списание с расчетного счета 00000000138 от 09.07.2021 12:00:02 | 68.01.1 / 51 | 7667\n107. 2021-07-09T12:00:01Z | Списание с расчетного счета 00000000137 от 09.07.2021 12:00:01 | 91.02 / 51 | 990\n108. 2021-07-09T12:00:00Z | Списание с расчетного счета 00000000136 от 09.07.2021 12:00:00 | 91.02 / 51 | 256.56\n109. 2021-07-05T12:00:01Z | Списание с расчетного счета 00000000135 от 05.07.2021 12:00:01 | 60.02 / 51 | 302560\n110. 2021-07-05T12:00:00Z | Списание с расчетного счета 00000000134 от 05.07.2021 12:00:00 | 91.02 / 51 | 1401.37\n111. 2021-06-29T12:00:03Z | Списание с расчетного счета 00000000133 от 29.06.2021 12:00:03 | 70 / 51 | 34310\n112. 2021-06-29T12:00:02Z | Списание с расчетного счета 00000000132 от 29.06.2021 12:00:02 | 70 / 51 | 23500\n113. 2021-06-29T12:00:01Z | Списание с расчетного счета 00000000131 от 29.06.2021 12:00:01 | 68.01.1 / 51 | 15990\n114. 2021-06-29T12:00:00Z | Списание с расчетного счета 00000000130 от 29.06.2021 12:00:00 | 91.02 / 51 | 289.05\n115. 2021-06-22T12:00:00Z | Поступление на расчетный счет 00000000010 от 22.06.2021 12:00:00 | 51 / 62.02 | 498630\n116. 2021-06-16T12:00:00Z | Списание с расчетного счета 00000000129 от 16.06.2021 12:00:00 | 60.02 / 51 | 105310\n117. 2021-06-15T12:00:03Z | Списание с расчетного счета 00000000128 от 15.06.2021 12:00:03 | 70 / 51 | 29200\n118. 2021-06-15T12:00:02Z | Списание с расчетного счета 00000000127 от 15.06.2021 12:00:02 | 70 / 51 | 20000\n119. 2021-06-15T12:00:01Z | Списание с расчетного счета 00000000126 от 15.06.2021 12:00:01 | 76.05 / 51 | 1400\n120. 2021-06-15T12:00:00Z | Списание с расчетного счета 00000000125 от 15.06.2021 12:00:00 | 91.02 / 51 | 246\n121. 2021-06-11T12:00:01Z | Списание с расчетного счета 00000000124 от 11.06.2021 12:00:01 | 60.02 / 51 | 119210\n122. 2021-06-11T12:00:00Z | Списание с расчетного счета 00000000123 от 11.06.2021 12:00:00 | 91.02 / 51 | 1000\n123. 2021-06-09T12:00:05Z | Поступление на расчетный счет 00000000009 от 09.06.2021 12:00:05 | 51 / 62.02 | 418960\n124. 2021-06-09T12:00:04Z | Списание с расчетного счета 00000000122 от 09.06.2021 12:00:04 | 69.02.7 / 51 | 15370.08\n125. 2021-06-09T12:00:03Z | Списание с расчетного счета 00000000121 от 09.06.2021 12:00:03 | 69.03.1 / 51 | 6175.08\n126. 2021-06-09T12:00:02Z | Списание с расчетного счета 00000000120 от 09.06.2021 12:00:02 | 91.02 / 51 | 990\n127. 2021-06-09T12:00:01Z | Списание с расчетного счета 00000000119 от 09.06.2021 12:00:01 | 69.01 / 51 | 741.92\n128. 2021-06-09T12:00:00Z | Списание с расчетного счета 00000000118 от 09.06.2021 12:00:00 | 69.11 / 51 | 246\n129. 2021-05-31T12:00:03Z | Списание с расчетного счета 00000000117 от 31.05.2021 12:00:03 | 70 / 51 | 34310\n130. 2021-05-31T12:00:02Z | Списание с расчетного счета 00000000116 от 31.05.2021 12:00:02 | 70 / 51 | 23500\n131. 2021-05-31T12:00:01Z | Списание с расчетного счета 00000000115 от 31.05.2021 12:00:01 | 68.01.1 / 51 | 15990\n132. 2021-05-31T12:00:00Z | Списание с расчетного счета 00000000114 от 31.05.2021 12:00:00 | 91.02 / 51 | 289.05\n133. 2021-05-19T12:00:00Z | Списание с расчетного счета 00000000113 от 19.05.2021 12:00:00 | 76.05 / 51 | 1400\n134. 2021-05-18T12:00:00Z | Списание с расчетного счета 00000000112 от 18.05.2021 12:00:00 | 60.02 / 51 | 180230\n135. 2021-05-13T00:00:06Z | Списание с расчетного счета 00000000110 от 13.05.2021 0:00:06 | 70 / 51 | 29200\n136. 2021-05-13T00:00:05Z | Списание с расчетного счета 00000000109 от 13.05.2021 0:00:05 | 70 / 51 | 20000\n137. 2021-05-13T00:00:04Z | Списание с расчетного счета 00000000108 от 13.05.2021 0:00:04 | 69.02.7 / 51 | 15370.08\n138. 2021-05-13T00:00:03Z | Списание с расчетного счета 00000000107 от 13.05.2021 0:00:03 | 69.03.1 / 51 | 6175.08\n139. 2021-05-13T00:00:02Z | Списание с расчетного счета 00000000106 от 13.05.2021 0:00:02 | 69.01 / 51 | 741.92\n140. 2021-05-13T00:00:01Z | Списание с расчетного счета 00000000105 от 13.05.2021 0:00:01 | 69.11 / 51 | 246\n141. 2021-05-13T00:00:00Z | Списание с расчетного счета 00000000104 от 13.05.2021 0:00:00 | 91.02 / 51 | 246\n142. 2021-05-09T12:00:00Z | Списание с расчетного счета 00000000111 от 09.05.2021 12:00:00 | 91.02 / 51 | 990\n143. 2021-04-29T12:00:01Z | Списание с расчетного счета 00000000103 от 29.04.2021 12:00:01 | 91.02 / 51 | 8\n144. 2021-04-29T12:00:00Z | Списание с расчетного счета 00000000102 от 29.04.2021 12:00:00 | 60.02 / 51 | 217415\n145. 2021-04-28T12:00:08Z | Поступление на расчетный счет 00000000008 от 28.04.2021 12:00:08 | 51 / 62.02 | 564300\n146. 2021-04-28T12:00:07Z | Списание с расчетного счета 00000000101 от 28.04.2021 12:00:07 | 60.02 / 51 | 114640\n147. 2021-04-28T12:00:06Z | Списание с расчетного счета 00000000100 от 28.04.2021 12:00:06 | 60.02 / 51 | 72000\n148. 2021-04-28T12:00:05Z | Списание с расчетного счета 00000000099 от 28.04.2021 12:00:05 | 70 / 51 | 34310\n149. 2021-04-28T12:00:04Z | Списание с расчетного счета 00000000098 от 28.04.2021 12:00:04 | 70 / 51 | 23500\n150. 2021-04-28T12:00:03Z | Списание с расчетного счета 00000000097 от 28.04.2021 12:00:03 | 68.01.1 / 51 | 15990\n151. 2021-04-28T12:00:02Z | Списание с расчетного счета 00000000096 от 28.04.2021 12:00:02 | 91.02 / 51 | 289.05\n152. 2021-04-28T12:00:01Z | Списание с расчетного счета 00000000095 от 28.04.2021 12:00:01 | 91.02 / 51 | 37\n153. 2021-04-28T12:00:00Z | Списание с расчетного счета 00000000094 от 28.04.2021 12:00:00 | 91.02 / 51 | 8\n154. 2021-04-27T12:00:01Z | Списание с расчетного счета 00000000093 от 27.04.2021 12:00:01 | 60.02 / 51 | 659320\n155. 2021-04-27T12:00:00Z | Списание с расчетного счета 00000000092 от 27.04.2021 12:00:00 | 91.02 / 51 | 8\n156. 2021-04-26T12:00:02Z | Списание с расчетного счета 00000000091 от 26.04.2021 12:00:02 | 60.02 / 51 | 109610\n157. 2021-04-26T12:00:01Z | Списание с расчетного счета 00000000090 от 26.04.2021 12:00:01 | 68.02 / 51 | 10010\n158. 2021-04-26T12:00:00Z | Списание с расчетного счета 00000000089 от 26.04.2021 12:00:00 | 91.02 / 51 | 8\n159. 2021-04-22T12:00:00Z | Поступление на расчетный счет 00000000007 от 22.04.2021 12:00:00 | 51 / 62.02 | 982420\n160. 2021-04-19T12:00:01Z | Списание с расчетного счета 00000000088 от 19.04.2021 12:00:01 | 60.02 / 51 | 162300\n161. 2021-04-19T12:00:00Z | Списание с расчетного счета 00000000087 от 19.04.2021 12:00:00 | 91.02 / 51 | 8\n162. 2021-04-16T12:00:00Z | Списание с расчетного счета 00000000086 от 16.04.2021 12:00:00 | 76.05 / 51 | 1400\n163. 2021-04-13T12:00:11Z | Поступление на расчетный счет 00000000006 от 13.04.2021 12:00:11 | 51 / 62.02 | 1882400\n164. 2021-04-13T12:00:10Z | Списание с расчетного счета 00000000085 от 13.04.2021 12:00:10 | 66.03 / 51 | 1000000\n165. 2021-04-13T12:00:09Z | Списание с расчетного счета 00000000084 от 13.04.2021 12:00:09 | 60.02 / 51 | 615320\n166. 2021-04-13T12:00:08Z | Списание с расчетного счета 00000000083 от 13.04.2021 12:00:08 | 60.02 / 51 | 144320\n167. 2021-04-13T12:00:07Z | Списание с расчетного счета 00000000082 от 13.04.2021 12:00:07 | 70 / 51 | 29200\n168. 2021-04-13T12:00:06Z | Списание с расчетного счета 00000000081 от 13.04.2021 12:00:06 | 70 / 51 | 20000\n169. 2021-04-13T12:00:05Z | Списание с расчетного счета 00000000080 от 13.04.2021 12:00:05 | 66.04 / 51 | 19139.34\n170. 2021-04-13T12:00:04Z | Списание с расчетного счета 00000000079 от 13.04.2021 12:00:04 | 69.02.7 / 51 | 15370.08\n171. 2021-04-13T12:00:03Z | Списание с расчетного счета 00000000078 от 13.04.2021 12:00:03 | 69.03.1 / 51 | 6175.08\n172. 2021-04-13T12:00:02Z | Списание с расчетного счета 00000000077 от 13.04.2021 12:00:02 | 91.02 / 51 | 246\n173. 2021-04-13T12:00:01Z | Списание с расчетного счета 00000000076 от 13.04.2021 12:00:01 | 69.01 / 51 | 741.94\n174. 2021-04-13T12:00:00Z | Списание с расчетного счета 00000000075 от 13.04.2021 12:00:00 | 69.11 / 51 | 246\n175. 2021-04-09T12:00:00Z | Списание с расчетного счета 00000000074 от 09.04.2021 12:00:00 | 91.02 / 51 | 2100\n176. 2021-04-06T12:00:01Z | Списание с расчетного счета 00000000073 от 06.04.2021 12:00:01 | 60.02 / 51 | 11900\n177. 2021-04-06T12:00:00Z | Списание с расчетного счета 00000000072 от 06.04.2021 12:00:00 | 91.02 / 51 | 37\n178. 2021-03-31T12:00:05Z | Списание с расчетного счета 00000000071 от 31.03.2021 12:00:05 | 70 / 51 | 34310\n179. 2021-03-31T12:00:04Z | Списание с расчетного счета 00000000070 от 31.03.2021 12:00:04 | 70 / 51 | 23500\n180. 2021-03-31T12:00:03Z | Списание с расчетного счета 00000000069 от 31.03.2021 12:00:03 | 68.01.1 / 51 | 15990\n181. 2021-03-31T12:00:02Z | Списание с расчетного счета 00000000068 от 31.03.2021 12:00:02 | 91.02 / 51 | 289.05\n182. 2021-03-31T12:00:01Z | Списание с расчетного счета 00000000067 от 31.03.2021 12:00:01 | 70 / 51 | 50\n183. 2021-03-31T12:00:00Z | Списание с расчетного счета 00000000066 от 31.03.2021 12:00:00 | 91.02 / 51 | 37\n184. 2021-03-25T12:00:02Z | Поступление на расчетный счет 00000000005 от 25.03.2021 12:00:02 | 51 / 62.02 | 644315\n185. 2021-03-25T12:00:01Z | Списание с расчетного счета 00000000065 от 25.03.2021 12:00:01 | 60.02 / 51 | 990830\n186. 2021-03-25T12:00:00Z | Списание с расчетного счета 00000000064 от 25.03.2021 12:00:00 | 91.02 / 51 | 8\n187. 2021-03-24T12:00:03Z | Поступление на расчетный счет 00000000004 от 24.03.2021 12:00:03 | 51 / 62.02 | 1219990\n188. 2021-03-24T12:00:02Z | Списание с расчетного счета 00000000062 от 24.03.2021 12:00:02 | 60.01 / 51 | 530490\n189. 2021-03-24T12:00:01Z | Списание с расчетного счета 00000000061 от 24.03.2021 12:00:01 | 60.02 / 51 | 144220\n190. 2021-03-24T12:00:00Z | Списание с расчетного счета 00000000060 от 24.03.2021 12:00:00 | 91.02 / 51 | 37\n191. 2021-03-23T12:00:01Z | Списание с расчетного счета 00000000058 от 23.03.2021 12:00:01 | 66.04 / 51 | 37377.05\n192. 2021-03-23T12:00:00Z | Списание с расчетного счета 00000000057 от 23.03.2021 12:00:00 | 66.03 / 51 | 600000\n193. 2021-03-22T12:00:03Z | Списание с расчетного счета 00000000197 от 22.03.2021 12:00:03 | 66.02 / 51 | 31857.79\n194. 2021-03-22T12:00:01Z | Списание с расчетного счета 00000000063 от 22.03.2021 12:00:01 | 66.02 / 51 | 1902.12\n195. 2021-03-22T12:00:00Z | Списание с расчетного счета 00000000059 от 22.03.2021 12:00:00 | 66.01 / 51 | 945302.69\n196. 2021-03-19T12:00:00Z | Списание с расчетного счета 00000000055 от 19.03.2021 12:00:00 | 76.05 / 51 | 1400\n197. 2021-03-18T12:00:00Z | Поступление на расчетный счет 00000000003 от 18.03.2021 12:00:00 | 51 / 62.02 | 1425310\n198. 2021-03-16T12:00:00Z | Списание с расчетного счета 00000000056 от 16.03.2021 12:00:00 | 91.02 / 51 | 60\n199. 2021-03-15T12:00:01Z | Списание с расчетного счета 00000000054 от 15.03.2021 12:00:01 | 66.02 / 51 | 7981.6\n200. 2021-03-15T12:00:00Z | Списание с расчетного счета 00000000053 от 15.03.2021 12:00:00 | 66.01 / 51 | 47921.4\n201. 2021-03-12T12:00:03Z | Поступление на расчетный счет 00000000002 от 12.03.2021 12:00:03 | 51 / 62.02 | 214600\n202. 2021-03-12T12:00:02Z | Списание с расчетного счета 00000000052 от 12.03.2021 12:00:02 | 70 / 51 | 29200\n203. 2021-03-12T12:00:01Z | Списание с расчетного счета 00000000051 от 12.03.2021 12:00:01 | 70 / 51 | 20000\n204. 2021-03-12T12:00:00Z | Списание с расчетного счета 00000000050 от 12.03.2021 12:00:00 | 91.02 / 51 | 246\n205. 2021-03-10T12:00:04Z | Списание с расчетного счета 00000000049 от 10.03.2021 12:00:04 | 60.02 / 51 | 56930\n206. 2021-03-10T12:00:03Z | Списание с расчетного счета 00000000047 от 10.03.2021 12:00:03 | 69.03.1 / 51 | 6175.08\n207. 2021-03-10T12:00:02Z | Списание с расчетного счета 00000000046 от 10.03.2021 12:00:02 | 69.11 / 51 | 246\n208. 2021-03-10T12:00:01Z | Списание с расчетного счета 00000000045 от 10.03.2021 12:00:01 | 69.01 / 51 | 741.94\n209. 2021-03-10T12:00:00Z | Списание с расчетного счета 00000000044 от 10.03.2021 12:00:00 | 91.02 / 51 | 2100\n210. 2021-03-10T00:00:00Z | Списание с расчетного счета 00000000048 от 10.03.2021 0:00:00 | 69.02.7 / 51 | 15370.08\n211. 2021-02-26T12:00:05Z | Списание с расчетного счета 00000000043 от 26.02.2021 12:00:05 | 60.02 / 51 | 50000\n212. 2021-02-26T12:00:04Z | Списание с расчетного счета 00000000042 от 26.02.2021 12:00:04 | 70 / 51 | 34310\n213. 2021-02-26T12:00:03Z | Списание с расчетного счета 00000000041 от 26.02.2021 12:00:03 | 70 / 51 | 23500\n214. 2021-02-26T12:00:02Z | Списание с расчетного счета 00000000040 от 26.02.2021 12:00:02 | 68.01.1 / 51 | 15990\n215. 2021-02-26T12:00:01Z | Списание с расчетного счета 00000000039 от 26.02.2021 12:00:01 | 91.02 / 51 | 289.05\n216. 2021-02-26T12:00:00Z | Списание с расчетного счета 00000000038 от 26.02.2021 12:00:00 | 70 / 51 | 50\n217. 2021-02-20T12:00:00Z | Списание с расчетного счета 00000000037 от 20.02.2021 12:00:00 | 60.02 / 51 | 320600\n218. 2021-02-19T12:00:01Z | Поступление на расчетный счет 00000000001 от 19.02.2021 12:00:01 | 51 / 62.02 | 518600\n219. 2021-02-19T12:00:00Z | Списание с расчетного счета 00000000036 от 19.02.2021 12:00:00 | 76.05 / 51 | 1400\n220. 2021-02-16T12:00:00Z | Списание с расчетного счета 00000000035 от 16.02.2021 12:00:00 | 91.02 / 51 | 60\n221. 2021-02-15T12:00:01Z | Списание с расчетного счета 00000000034 от 15.02.2021 12:00:01 | 66.02 / 51 | 27265.44\n222. 2021-02-15T12:00:00Z | Списание с расчетного счета 00000000033 от 15.02.2021 12:00:00 | 66.01 / 51 | 2137760.56\n223. 2021-02-12T12:00:02Z | Списание с расчетного счета 00000000031 от 12.02.2021 12:00:02 | 70 / 51 | 29200\n224. 2021-02-12T12:00:01Z | Списание с расчетного счета 00000000030 от 12.02.2021 12:00:01 | 70 / 51 | 20000\n225. 2021-02-12T12:00:00Z | Списание с расчетного счета 00000000029 от 12.02.2021 12:00:00 | 91.02 / 51 | 246\n226. 2021-02-09T12:00:00Z | Списание с расчетного счета 00000000032 от 09.02.2021 12:00:00 | 91.02 / 51 | 2100\n227. 2021-02-02T12:00:03Z | Списание с расчетного счета 00000000028 от 02.02.2021 12:00:03 | 60.02 / 51 | 425600\n228. 2021-02-02T12:00:02Z | Списание с расчетного счета 00000000027 от 02.02.2021 12:00:02 | 66.04 / 51 | 77854.1\n229. 2021-02-02T12:00:01Z | Списание с расчетного счета 00000000026 от 02.02.2021 12:00:01 | 66.04 / 51 | 28196.72\n230. 2021-02-02T12:00:00Z | Списание с расчетного счета 00000000025 от 02.02.2021 12:00:00 | 91.02 / 51 | 37\n231. 2021-01-29T12:00:03Z | Списание с расчетного счета 00000000024 от 29.01.2021 12:00:03 | 69.02.7 / 51 | 10720.08\n232. 2021-01-29T12:00:02Z | Списание с расчетного счета 00000000023 от 29.01.2021 12:00:02 | 69.03.1 / 51 | 3850.58\n233. 2021-01-29T12:00:01Z | Списание с расчетного счета 00000000022 от 29.01.2021 12:00:01 | 69.01 / 51 | 741.94\n234. 2021-01-29T12:00:00Z | Списание с расчетного счета 00000000021 от 29.01.2021 12:00:00 | 69.11 / 51 | 153\n235. 2021-01-28T12:00:02Z | Списание с расчетного счета 00000000020 от 28.01.2021 12:00:02 | 60.02 / 51 | 126300\n236. 2021-01-28T12:00:01Z | Списание с расчетного счета 00000000019 от 28.01.2021 12:00:01 | 91.02 / 51 | 179.78\n237. 2021-01-28T12:00:00Z | Списание с расчетного счета 00000000016 от 28.01.2021 12:00:00 | 70 / 51 | 17155\n238. 2021-01-28T00:00:00Z | Списание с расчетного счета 00000000018 от 28.01.2021 0:00:00 | 68.01.1 / 51 | 9945\n239. 2021-01-28T00:00:00Z | Списание с расчетного счета 00000000017 от 28.01.2021 0:00:00 | 70 / 51 | 18800\n240. 2021-01-28T00:00:00Z | Списание с расчетного счета 00000000015 от 28.01.2021 0:00:00 | 70 / 51 | 50\n241. 2021-01-25T12:00:00Z | Списание с расчетного счета 00000000014 от 25.01.2021 12:00:00 | 68.02 / 51 | 88003\n242. 2021-01-18T12:00:04Z | Списание с расчетного счета 00000000013 от 18.01.2021 12:00:04 | 70 / 51 | 16000\n243. 2021-01-18T12:00:03Z | Списание с расчетного счета 00000000012 от 18.01.2021 12:00:03 | 70 / 51 | 14600\n244. 2021-01-18T12:00:02Z | Списание с расчетного счета 00000000011 от 18.01.2021 12:00:02 | 91.02 / 51 | 2500\n245. 2021-01-18T12:00:01Z | Списание с расчетного счета 00000000010 от 18.01.2021 12:00:01 | 76.05 / 51 | 1400\n246. 2021-01-18T12:00:00Z | Списание с расчетного счета 00000000009 от 18.01.2021 12:00:00 | 91.02 / 51 | 153\n247. 2021-01-16T12:00:00Z | Списание с расчетного счета 00000000008 от 16.01.2021 12:00:00 | 91.02 / 51 | 60\n248. 2021-01-15T12:00:05Z | Списание с расчетного счета 00000000007 от 15.01.2021 12:00:05 | 66.02 / 51 | 28403.09\n249. 2021-01-15T12:00:04Z | Списание с расчетного счета 00000000006 от 15.01.2021 12:00:04 | 66.01 / 51 | 136622.91\n250. 2021-01-15T12:00:03Z | Списание с расчетного счета 00000000005 от 15.01.2021 12:00:03 | 69.02.7 / 51 | 10561.2\n251. 2021-01-15T12:00:02Z | Списание с расчетного счета 00000000004 от 15.01.2021 12:00:02 | 69.03.1 / 51 | 3849.26\n252. 2021-01-15T12:00:01Z | Списание с расчетного счета 00000000003 от 15.01.2021 12:00:01 | 69.01 / 51 | 703.54\n253. 2021-01-15T12:00:00Z | Списание с расчетного счета 00000000002 от 15.01.2021 12:00:00 | 69.11 / 51 | 153\n254. 2021-01-09T12:00:00Z | Списание с расчетного счета 00000000001 от 09.01.2021 12:00:00 | 91.02 / 51 | 2100\n255. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 51 / 62.02 | 3248300\n256. 2020-12-25T12:00:04Z | Списание с расчетного счета 00000000299 от 25.12.2020 12:00:04 | 91.02 / 51 | 179.78\n257. 2020-12-25T12:00:03Z | Списание с расчетного счета 00000000298 от 25.12.2020 12:00:03 | 68.01.1 / 51 | 9945\n258. 2020-12-25T12:00:02Z | Списание с расчетного счета 00000000297 от 25.12.2020 12:00:02 | 70 / 51 | 18800\n259. 2020-12-25T12:00:01Z | Списание с расчетного счета 00000000296 от 25.12.2020 12:00:01 | 70 / 51 | 17155\n260. 2020-12-25T12:00:00Z | Списание с расчетного счета 00000000295 от 25.12.2020 12:00:00 | 70 / 51 | 50\n261. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 51 / 62.02 | 216600\n262. 2020-12-16T16:20:52Z | Списание с расчетного счета 00000000294 от 16.12.2020 16:20:52 | 69.03.1 / 51 | 3849.26\n263. 2020-12-16T16:20:51Z | Списание с расчетного счета 00000000293 от 16.12.2020 16:20:51 | 91.02 / 51 | 60\n264. 2020-12-16T16:20:50Z | Списание с расчетного счета 00000000292 от 16.12.2020 16:20:50 | 69.02.7 / 51 | 10561.2\n265. 2020-12-16T16:20:27Z | Списание с расчетного счета 00000000291 от 16.12.2020 16:20:27 | 69.01 / 51 | 703.54\n266. 2020-12-16T16:20:06Z | Списание с расчетного счета 00000000290 от 16.12.2020 16:20:06 | 69.11 / 51 | 153\n267. 2020-12-15T11:13:41Z | Списание с расчетного счета 00000000289 от 15.12.2020 11:13:41 | 91.02 / 51 | 153\n268. 2020-12-15T11:13:40Z | Списание с расчетного счета 00000000288 от 15.12.2020 11:13:40 | 70 / 51 | 16000\n269. 2020-12-15T11:13:39Z | Списание с расчетного счета 00000000287 от 15.12.2020 11:13:39 | 70 / 51 | 14600\n270. 2020-12-15T11:13:38Z | Списание с расчетного счета 00000000286 от 15.12.2020 11:13:38 | 76.05 / 51 | 1400\n271. 2020-12-15T11:13:37Z | Списание с расчетного счета 00000000285 от 15.12.2020 11:13:37 | 66.02 / 51 | 28622.55\n272. 2020-12-15T11:13:21Z | Списание с расчетного счета 00000000284 от 15.12.2020 11:13:21 | 66.01 / 51 | 136403.45\n273. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 51 / 62.02 | 200000\n274. 2020-12-09T12:00:00Z | Списание с расчетного счета 00000000283 от 09.12.2020 12:00:00 | 91.02 / 51 | 2100\n275. 2020-11-30T12:00:07Z | Поступление на расчетный счет 00000000041 от 30.11.2020 12:00:07 | 51 / 62.02 | 38900\n276. 2020-11-30T12:00:06Z | Списание с расчетного счета 00000000282 от 30.11.2020 12:00:06 | 70 / 51 | 18800\n277. 2020-11-30T12:00:05Z | Списание с расчетного счета 00000000281 от 30.11.2020 12:00:05 | 70 / 51 | 17155\n278. 2020-11-30T12:00:04Z | Списание с расчетного счета 00000000280 от 30.11.2020 12:00:04 | 68.01.1 / 51 | 9945\n279. 2020-11-30T12:00:03Z | Списание с расчетного счета 00000000278 от 30.11.2020 12:00:03 | 70 / 51 | 50\n280. 2020-11-30T12:00:02Z | Списание с расчетного счета 00000000277 от 30.11.2020 12:00:02 | 91.02 / 51 | 37\n281. 2020-11-30T00:00:00Z | Списание с расчетного счета 00000000279 от 30.11.2020 0:00:00 | 91.02 / 51 | 179.78\n282. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 900000\n283. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 144749\n284. 2020-11-26T12:00:02Z | Списание с расчетного счета 00000000276 от 26.11.2020 12:00:02 | 60.01 / 51 | 524730.5\n285. 2020-11-26T12:00:02Z | Списание с расчетного счета 00000000276 от 26.11.2020 12:00:02 | 60.01 / 51 | 210770.5\n286. 2020-11-26T12:00:01Z | Списание с расчетного счета 00000000275 от 26.11.2020 12:00:01 | 66.03 / 51 | 400000\n287. 2020-11-26T12:00:00Z | Списание с расчетного счета 00000000274 от 26.11.2020 12:00:00 | 91.02 / 51 | 74\n288. 2020-11-23T12:00:01Z | Списание с расчетного счета 00000000273 от 23.11.2020 12:00:01 | 60.01 / 51 | 5429.5\n289. 2020-11-23T12:00:01Z | Списание с расчетного счета 00000000273 от 23.11.2020 12:00:01 | 60.01 / 51 | 63870.5\n290. 2020-11-23T12:00:00Z | Списание с расчетного счета 00000000272 от 23.11.2020 12:00:00 | 91.02 / 51 | 37\n291. 2020-11-19T12:00:04Z | Поступление на расчетный счет 00000000039 от 19.11.2020 12:00:04 | 51 / 62.02 | 1041800\n292. 2020-11-19T12:00:04Z | Поступление на расчетный счет 00000000039 от 19.11.2020 12:00:04 | 51 / 62.01 | 2278800\n293. 2020-11-19T12:00:03Z | Списание с расчетного счета 00000000271 от 19.11.2020 12:00:03 | 66.03 / 51 | 2335000\n294. 2020-11-19T12:00:02Z | Списание с расчетного счета 00000000270 от 19.11.2020 12:00:02 | 60.02 / 51 | 900000\n295. 2020-11-19T12:00:01Z | Списание с расчетного счета 00000000269 от 19.11.2020 12:00:01 | 91.02 / 51 | 37\n296. 2020-11-19T12:00:00Z | Списание с расчетного счета 00000000268 от 19.11.2020 12:00:00 | 91.02 / 51 | 8\n297. 2020-11-18T12:00:05Z | Поступление на расчетный счет 00000000038 от 18.11.2020 12:00:05 | 51 / 62.01 | 745300\n298. 2020-11-18T12:00:04Z | Поступление на расчетный счет 00000000037 от 18.11.2020 12:00:04 | 51 / 62.01 | 320000\n299. 2020-11-18T12:00:03Z | Списание с расчетного счета 00000000267 от 18.11.2020 12:00:03 | 60.02 / 51 | 144749\n300. 2020-11-18T12:00:03Z | Списание с расчетного счета 00000000267 от 18.11.2020 12:00:03 | 60.01 / 51 | 160000\n301. 2020-11-18T12:00:03Z | Списание с расчетного счета 00000000267 от 18.11.2020 12:00:03 | 60.01 / 51 | 389551\n302. 2020-11-18T12:00:02Z | Списание с расчетного счета 00000000266 от 18.11.2020 12:00:02 | 60.01 / 51 | 318600\n303. 2020-11-18T12:00:01Z | Списание с расчетного счета 00000000265 от 18.11.2020 12:00:01 | 76.05 / 51 | 1400\n304. 2020-11-18T12:00:00Z | Списание с расчетного счета 00000000264 от 18.11.2020 12:00:00 | 91.02 / 51 | 16\n305. 2020-11-16T16:08:52Z | Списание с расчетного счета 00000000263 от 16.11.2020 16:08:52 | 60.01 / 51 | 49298\n306. 2020-11-16T16:08:52Z | Списание с расчетного счета 00000000263 от 16.11.2020 16:08:52 | 60.01 / 51 | 3152\n307. 2020-11-16T16:08:51Z | Списание с расчетного счета 00000000262 от 16.11.2020 16:08:51 | 60.02 / 51 | 8700\n308. 2020-11-16T16:08:50Z | Списание с расчетного счета 00000000261 от 16.11.2020 16:08:50 | 91.02 / 51 | 60\n309. 2020-11-16T16:08:49Z | Списание с расчетного счета 00000000260 от 16.11.2020 16:08:49 | 66.01 / 51 | 165026\n310. 2020-11-13T12:00:03Z | Поступление на расчетный счет 00000000036 от 13.11.2020 12:00:03 | 51 / 62.01 | 313600\n311. 2020-11-13T12:00:02Z | Списание с расчетного счета 00000000258 от 13.11.2020 12:00:02 | 70 / 51 | 16000\n312. 2020-11-13T12:00:01Z | Списание с расчетного счета 00000000257 от 13.11.2020 12:00:01 | 70 / 51 | 14600\n313. 2020-11-13T12:00:00Z | Списание с расчетного счета 00000000256 от 13.11.2020 12:00:00 | 91.02 / 51 | 153\n314. 2020-11-13T00:00:00Z | Списание с расчетного счета 00000000259 от 13.11.2020 0:00:00 | 60.01 / 51 | 218400\n315. 2020-11-11T12:00:00Z | Списание с расчетного счета 00000000255 от 11.11.2020 12:00:00 | 66.04 / 51 | 19425.82\n316. 2020-11-10T15:39:13Z | Поступление на расчетный счет 00000000035 от 10.11.2020 15:39:13 | 51 / 62.02 | 328300\n317. 2020-11-09T12:00:00Z | Списание с расчетного счета 00000000253 от 09.11.2020 12:00:00 | 91.02 / 51 | 2100\n318. 2020-11-09T00:00:00Z | Списание с расчетного счета 00000000254 от 09.11.2020 0:00:00 | 60.01 / 51 | 151080\n319. 2020-10-27T12:00:01Z | Списание с расчетного счета 00000000252 от 27.10.2020 12:00:01 | 60.01 / 51 | 120000\n320. 2020-10-27T12:00:00Z | Списание с расчетного счета 00000000251 от 27.10.2020 12:00:00 | 70 / 51 | 50\n321. 2020-10-26T12:00:01Z | Списание с расчетного счета 00000000250 от 26.10.2020 12:00:01 | 68.02 / 51 | 4964\n322. 2020-10-26T12:00:00Z | Поступление на расчетный счет 00000000034 от 26.10.2020 12:00:00 | 51 / 62.02 | 175000\n323. 2020-10-20T12:00:00Z | Списание с расчетного счета 00000000248 от 20.10.2020 12:00:00 | 76.05 / 51 | 1400\n324. 2020-10-16T12:00:00Z | Списание с расчетного счета 00000000249 от 16.10.2020 12:00:00 | 91.02 / 51 | 60\n325. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n326. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53\n327. 2020-10-14T12:00:00Z | Поступление на расчетный счет 00000000033 от 14.10.2020 12:00:00 | 51 / 60.01 | 160000\n328. 2020-10-09T12:00:00Z | Списание с расчетного счета 00000000247 от 09.10.2020 12:00:00 | 91.02 / 51 | 2100\n329. 2020-10-01T12:00:00Z | Списание с расчетного счета 00000000244 от 01.10.2020 12:00:00 | 60.01 / 51 | 49460\n330. 2020-09-30T12:00:03Z | Списание с расчетного счета 00000000243 от 30.09.2020 12:00:03 | 60.01 / 51 | 30000\n331. 2020-09-30T12:00:02Z | Списание с расчетного счета 00000000242 от 30.09.2020 12:00:02 | 70 / 51 | 50\n332. 2020-09-29T12:00:00Z | Списание с расчетного счета 00000000240 от 29.09.2020 12:00:00 | 60.01 / 51 | 159400\n333. 2020-09-23T12:00:03Z | Списание с расчетного счета 00000000241 от 23.09.2020 12:00:03 | 91.02 / 51 | 60\n334. 2020-09-23T12:00:02Z | Списание с расчетного счета 00000000239 от 23.09.2020 12:00:02 | 69.03.1 / 51 | 12.58\n335. 2020-09-23T12:00:01Z | Списание с расчетного счета 00000000238 от 23.09.2020 12:00:01 | 68.02 / 51 | 54.27\n336. 2020-09-23T12:00:00Z | Списание с расчетного счета 00000000237 от 23.09.2020 12:00:00 | 68.02 / 51 | 41441\n337. 2020-09-15T12:00:01Z | Списание с расчетного счета 00000000236 от 15.09.2020 12:00:01 | 66.02 / 51 | 33053.64\n338. 2020-09-15T12:00:00Z | Списание с расчетного счета 00000000235 от 15.09.2020 12:00:00 | 66.01 / 51 | 131972.36\n339. 2020-09-14T12:00:04Z | Списание с расчетного счета 00000000234 от 14.09.2020 12:00:04 | 69.02.7 / 51 | 14973.39\n340. 2020-09-14T12:00:03Z | Списание с расчетного счета 00000000233 от 14.09.2020 12:00:03 | 69.03.1 / 51 | 6055.36\n341. 2020-09-14T12:00:02Z | Списание с расчетного счета 00000000232 от 14.09.2020 12:00:02 | 76.05 / 51 | 1400", + "assistant_reply_first_line": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "materialized_but_not_anchor_matched", + "match_failure_reason": "contract_anchor_not_matched_in_materialized_rows", + "rows_fetched": 1000, + "rows_matched": 341, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-L9OjSklst2", + "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", + "anchor_not_matched_fallback_rows" + ], + "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": "19/15 в банковском учете" + }, + "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": "19/15 в банковском учете", + "anchor_value_resolved": "19/15 в банковском учете", + "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": "matched_non_empty", + "rows_fetched": 1000, + "raw_rows_received": 1000, + "rows_after_account_scope": 341, + "rows_after_recipe_filter": 0, + "rows_materialized": 341, + "rows_matched": 341, + "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": "K2Oz3ih4uoMjti", + "llm_decomposition_effective_message": "операции по договору 19/15 в банковском учете", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "bank ops by contract 19/15", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "K2Oz3ih4uoMjti", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "операции по договору 19/15 в банковском учете" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 99, + "id": "X039", + "question": "покажи банк опер по дог 19/15 пж", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-16-06-x039", + "status_code": 200, + "ok": true, + "elapsed_ms": 7152, + "reply_type": "factual", + "trace_id": "address-lbfIKI8L1A", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 1.\n1. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "assistant_reply_first_line": "Собран список банковских операций по договору (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 1, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-lbfIKI8L1A", + "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", + "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": "high", + "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": "19/15" + }, + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": 1, + "rows_materialized": 341, + "rows_matched": 1, + "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": "NVukInRDitACmb", + "llm_decomposition_effective_message": "Показать банковские операции по договору 19/15, пожалуйста.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "покажи банк операции по договор 19/15", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "NVukInRDitACmb", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Показать банковские операции по договору 19/15, пожалуйста." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 100, + "id": "X040", + "question": "епт транзакции договор 19/15", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-16-06-x040", + "status_code": 200, + "ok": true, + "elapsed_ms": 7051, + "reply_type": "factual", + "trace_id": "address-X6elvixRIj", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 1.\n1. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "assistant_reply_first_line": "Собран список банковских операций по договору (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 1, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-X6elvixRIj", + "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_contract_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_contract", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "contract": "19/15" + }, + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": 1, + "rows_materialized": 341, + "rows_matched": 1, + "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": "ztSjgQXV_b9PTi", + "llm_decomposition_effective_message": "Проверить или разобрать транзакции по договору 19/15.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "транзакции договор 19/15", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "ztSjgQXV_b9PTi", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Проверить или разобрать транзакции по договору 19/15." + } + }, + "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_Nightly_stress_102_20-16-06-chain_balance_60_extra", + "status_code": 200, + "ok": true, + "elapsed_ms": 5950, + "reply_type": "factual", + "trace_id": "address-voL_mbgUQd", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 138, + "rows_matched": 138, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-voL_mbgUQd", + "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", + "account_balance_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": "account_balance_snapshot", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "account": "60", + "period_from": "2020-01-01", + "period_to": "2020-12-31", + "as_of_date": "2020-12-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": 138, + "raw_rows_received": 138, + "rows_after_account_scope": 138, + "rows_after_recipe_filter": 138, + "rows_materialized": 138, + "rows_matched": 138, + "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": "IkP8Mjv-jqE9W9", + "llm_decomposition_effective_message": "Показать остатки на счете 60 за период 2020 год.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "покажи сальдо по счету 60 за 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "IkP8Mjv-jqE9W9", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Показать остатки на счете 60 за период 2020 год." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 102, + "id": "X042", + "question": "а теперь только май 2020", + "session": "chain_balance_60_extra", + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_20-16-06-chain_balance_60_extra", + "status_code": 200, + "ok": true, + "elapsed_ms": 1000, + "reply_type": "factual", + "trace_id": "address-y5lY6vNX2d", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 6, + "rows_matched": 6, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-y5lY6vNX2d", + "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", + "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, + "period_from": "2020-05-01", + "period_to": "2020-05-31", + "as_of_date": "2020-05-31", + "account": "60" + }, + "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": "а теперь только май 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 + }, + "error_code": null, + "error_message": null + } + ] +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_stress_102_20-16-06/response_audit.md b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_stress_102_20-16-06/response_audit.md new file mode 100644 index 0000000..3eb42c5 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_stress_102_20-16-06/response_audit.md @@ -0,0 +1,106 @@ +# Response Audit: 2026-04-02_Address_Nightly_stress_102_20-16-06 + +| id | strict | route_health | reply_type | intent | limited_reason | question | assistant_first_line | +|---|---|---|---|---|---|---|---| +| S001 | True | ok_or_factual | factual | list_documents_by_counterparty | None | свк доки за 2020 покаж пж | Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу. | +| S002 | True | ok_or_factual | factual | list_documents_by_counterparty | None | покеж все доки по свк за 20 год | Собран список документов по контрагенту (live address lane). | +| S003 | True | ok_or_factual | factual | list_documents_by_counterparty | None | дай список документов по свк за 2020 | Собран список документов по контрагенту (live address lane). | +| S004 | True | ok_or_factual | factual | list_documents_by_counterparty | None | какие у свк есть доки за 2020? | Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу. | +| S005 | True | ok_or_factual | factual | list_documents_by_counterparty | None | че по свк по докам за 2020 год | Собран список документов по контрагенту (live address lane). | +| S006 | True | ok_or_factual | factual | list_documents_by_counterparty | None | ёпт покажи доки по свк за 2020 | Собран список документов по контрагенту (live address lane). | +| S007 | True | ok_or_factual | factual | list_documents_by_counterparty | None | бля, доки свк 2020 вывали | Собран список документов по контрагенту (live address lane). | +| S008 | True | ok_or_factual | factual | list_documents_by_counterparty | None | svk docs for 2020 please | Собран список документов по контрагенту (live address lane). | +| S009 | True | ok_or_factual | factual | list_documents_by_counterparty | None | docs by counterparty svk year 2020 | Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу. | +| S010 | True | ok_or_factual | factual | list_documents_by_counterparty | None | по контрагенту свк покаж документы за 2020 | Собран список документов по контрагенту (live address lane). | +| S011 | True | ok_or_factual | factual | list_documents_by_counterparty | None | плс доки по свк 2020 | Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу. | +| S012 | True | ok_or_factual | factual | list_documents_by_counterparty | None | свк док за 2020 гони | Собран список документов по контрагенту (live address lane). | +| S013 | True | ok_or_factual | factual | bank_operations_by_counterparty | None | по свк банковские операции за 2020 покаж | Собран список банковских операций по контрагенту (live address lane). | +| S014 | True | ok_or_factual | factual | bank_operations_by_counterparty | None | свк выписка банка 2020 | Собран список банковских операций по контрагенту (live address lane). | +| S015 | True | ok_or_factual | factual | bank_operations_by_counterparty | None | платежи по свк за 2020 выведи | Собран список банковских операций по контрагенту (live address lane). | +| S016 | True | ok_or_factual | factual | bank_operations_by_counterparty | None | оплаты по свк за 2020 | Собран список банковских операций по контрагенту (live address lane). | +| S017 | True | ok_or_factual | factual | bank_operations_by_counterparty | None | свк банк опер за 2020 | Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу. | +| S018 | True | ok_or_factual | factual | bank_operations_by_counterparty | None | че у свк по банку за 2020 | Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу. | +| S019 | True | ok_or_factual | factual | bank_operations_by_counterparty | None | свк списания/поступления за 2020 | Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу. | +| S020 | True | ok_or_factual | factual | bank_operations_by_counterparty | None | bank ops by svk for 2020 | Собран список банковских операций по контрагенту (live address lane). | +| S021 | True | ok_or_factual | factual | bank_operations_by_counterparty | None | transactions by counterparty svk 2020 | Собран список банковских операций по контрагенту (live address lane). | +| S022 | True | ok_or_factual | factual | bank_operations_by_counterparty | None | бля, по свк банковские платежки 2020 | Собран список банковских операций по контрагенту (live address lane). | +| S023 | True | ok_or_factual | factual | account_balance_snapshot | None | сальдо по счету 60.01 на дату 2020-07-31 | Адресный срез по счету собран (по движениям live MCP). | +| S024 | True | ok_or_factual | factual | account_balance_snapshot | None | остаток по счету 60.01 на 2020.05 | Адресный срез по счету собран (по движениям live MCP). | +| S025 | True | ok_or_factual | factual | account_balance_snapshot | None | покажи остаток по 60.01 за май 2020 | Адресный срез по счету собран (по движениям live MCP). | +| S026 | True | ok_or_factual | factual | account_balance_snapshot | None | счет 60 остаток на май 2020 | Адресный срез по счету собран (по движениям live MCP). | +| S027 | True | ok_or_factual | factual | account_balance_snapshot | None | баланс account 60.01 as of 2020-07-31 | Адресный срез по счету собран (по движениям live MCP). | +| S028 | True | ok_or_factual | factual | account_balance_snapshot | None | 60.01 saldo на 31.07.2020 | Адресный срез по счету собран (по движениям live MCP). | +| S029 | True | ok_or_factual | factual | account_balance_snapshot | None | сколько на счете 60 на конец 2020-05 | Адресный срез по счету собран (по движениям live MCP). | +| S030 | True | partial_non_blocking | partial_coverage | account_balance_snapshot | empty_match | дай остаток 60.02 на 2020-12-31 | В live-данных по текущему фильтру записи не найдены. | +| S031 | True | partial_non_blocking | partial_coverage | account_balance_snapshot | empty_match | епт, сальдо по счету 62.01 на 2020-12-31 | В live-данных по текущему фильтру записи не найдены. | +| S032 | True | ok_or_factual | factual | account_balance_snapshot | None | плс остаток по счету 51 на 2020-06-30 | Адресный срез по счету собран (по движениям live MCP). | +| S033 | True | ok_or_factual | factual | account_balance_snapshot | None | как там по счету 60.01 на 2020.07? | Адресный срез по счету собран (по движениям live MCP). | +| S034 | True | ok_or_factual | factual | account_balance_snapshot | None | сальдо 60 на 2020 | Адресный срез по счету собран (по движениям live MCP). | +| S035 | True | ok_or_factual | factual | documents_forming_balance | None | какие документы формируют остаток по счету 60.01 на 2020-07-31 | Собран drilldown документов, формирующих остаток по счету на указанную дату. | +| S036 | True | ok_or_factual | factual | documents_forming_balance | None | из чего состоит остаток по счету 60 на 2020.05 | Собран drilldown документов, формирующих остаток по счету на указанную дату. | +| S037 | True | ok_or_factual | factual | documents_forming_balance | None | раскрой остаток 60.01 по документам на конец июля 2020 | Собран drilldown документов, формирующих остаток по счету на указанную дату. | +| S038 | True | ok_or_factual | factual | documents_forming_balance | None | доки под остатком 60.01 на 2020-07-31 | Собран drilldown документов, формирующих остаток по счету на указанную дату. | +| S039 | True | ok_or_factual | factual | documents_forming_balance | None | documents forming balance for account 60.01 as of 2020-07-31 | Собран drilldown документов, формирующих остаток по счету на указанную дату. | +| S040 | True | ok_or_factual | factual | documents_forming_balance | None | бля, какие доки формируют остаток 60.01 на 2020-05-31 | Собран drilldown документов, формирующих остаток по счету на указанную дату. | +| S041 | True | partial_non_blocking | partial_coverage | documents_forming_balance | empty_match | по счету 62.01 раскрой остаток документами на 2020-12-31 | В live-данных по текущему фильтру записи не найдены. | +| S042 | True | ok_or_factual | factual | documents_forming_balance | None | из чего остаток по счету 51 на 2020-06-30 | Собран drilldown документов, формирующих остаток по счету на указанную дату. | +| S043 | True | ok_or_factual | factual | list_documents_by_contract | None | покажи документы по договору 19/15 за 2020 | Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк. | +| S044 | True | ok_or_factual | factual | list_documents_by_contract | None | доки по дог. 19/15 за 2020 | Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк. | +| S045 | True | ok_or_factual | factual | list_documents_by_contract | None | какие документы по контракту 19/15 | Собран список документов по договору (live address lane). | +| S046 | True | ok_or_factual | factual | list_documents_by_contract | None | docs by contract 19/15 year 2020 | Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк. | +| S047 | True | ok_or_factual | factual | list_documents_by_contract | None | бля, покажи по договору 19/15 доки | Собран список документов по договору (live address lane). | +| S048 | True | ok_or_factual | factual | list_documents_by_contract | None | договор 19/15 документы | Собран список документов по договору (live address lane). | +| S049 | True | ok_or_factual | factual | list_documents_by_contract | None | плс документы договор №19/15 | Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу. | +| S050 | True | ok_or_factual | factual | list_documents_by_contract | None | покеж документы по 19/15 | Собран список документов по договору (live address lane). | +| S051 | True | ok_or_factual | factual | bank_operations_by_contract | None | банковские операции по договору 19/15 | Собран список банковских операций по договору (live address lane). | +| S052 | True | ok_or_factual | factual | bank_operations_by_contract | None | платежи по договору 19/15 | Собран список банковских операций по договору (live address lane). | +| S053 | True | ok_or_factual | factual | bank_operations_by_contract | None | выписка по договору 19/15 | Собран список банковских операций по договору (live address lane). | +| S054 | True | ok_or_factual | factual | bank_operations_by_contract | None | bank ops by contract 19/15 | Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу. | +| S055 | True | ok_or_factual | factual | bank_operations_by_contract | None | ёпт, покажи банк операции по дог 19/15 | Собран список банковских операций по договору (live address lane). | +| S056 | True | ok_or_factual | factual | bank_operations_by_contract | None | по контракту 19/15 платежки | Собран список банковских операций по договору (live address lane). | +| S057 | True | ok_or_factual | factual | account_balance_snapshot | None | покажи сальдо по счету 60 за 2020 | Адресный срез по счету собран (по движениям live MCP). | +| S058 | True | ok_or_factual | factual | account_balance_snapshot | None | а теперь только май 2020 | Адресный срез по счету собран (по движениям live MCP). | +| S059 | True | ok_or_factual | factual | account_balance_snapshot | None | ок, теперь 2020.05 | Адресный срез по счету собран (по движениям live MCP). | +| S060 | True | ok_or_factual | factual | account_balance_snapshot | None | теперь на 2020-07-31 | Адресный срез по счету собран (по движениям live MCP). | +| X001 | True | ok_or_factual | factual | list_documents_by_counterparty | None | свк доки кинь за 2020 | Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу. | +| X002 | True | ok_or_factual | factual | list_documents_by_counterparty | None | по свк все документы за 20й год | Собран список документов по контрагенту (live address lane). | +| X003 | True | ok_or_factual | factual | list_documents_by_counterparty | None | пж вывали доки контрагент свк 2020 | Собран список документов по контрагенту (live address lane). | +| X004 | True | ok_or_factual | factual | list_documents_by_counterparty | None | svk poka docy za 2020 | Собран список документов по контрагенту (live address lane). | +| X005 | True | ok_or_factual | factual | list_documents_by_counterparty | None | какие доки по компании свк за 2020 | Собран список документов по контрагенту (live address lane). | +| X006 | True | ok_or_factual | factual | list_documents_by_counterparty | None | бля покаж свк документы 2020 | Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу. | +| X007 | True | ok_or_factual | factual | bank_operations_by_counterparty | None | свк банк операции за 2020 | Собран список банковских операций по контрагенту (live address lane). | +| X008 | True | ok_or_factual | factual | bank_operations_by_counterparty | None | по свк выписку банка за 2020 выведи | Собран список банковских операций по контрагенту (live address lane). | +| X009 | True | ok_or_factual | factual | bank_operations_by_counterparty | None | свк платежки за 2020 | Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу. | +| X010 | True | ok_or_factual | factual | bank_operations_by_counterparty | None | bank ops svk 2020 | Собран список банковских операций по контрагенту (live address lane). | +| X011 | True | ok_or_factual | factual | bank_operations_by_counterparty | None | транзакции по свк за 2020 | Собран список банковских операций по контрагенту (live address lane). | +| X012 | True | ok_or_factual | factual | bank_operations_by_counterparty | None | ёпт по свк че по банку 2020 | Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу. | +| X013 | True | ok_or_factual | factual | account_balance_snapshot | None | остаток по 60.01 на 2020-07-31 | Адресный срез по счету собран (по движениям live MCP). | +| X014 | True | ok_or_factual | factual | account_balance_snapshot | None | сальдо 60.01 на 31.07.2020 | Адресный срез по счету собран (по движениям live MCP). | +| X015 | True | ok_or_factual | factual | account_balance_snapshot | None | что на счете 60 на 2020.05 | Адресный срез по счету собран (по движениям live MCP). | +| X016 | True | ok_or_factual | factual | account_balance_snapshot | None | дай остаток 62.01 на 2020 май | Адресный срез по счету собран (по движениям live MCP). | +| X017 | True | partial_non_blocking | partial_coverage | account_balance_snapshot | empty_match | saldo account 60 as of 2020-12-31 | В live-данных по текущему фильтру записи не найдены. | +| X018 | True | ok_or_factual | factual | account_balance_snapshot | None | плиз остаток по счету 51 на 2020-06-30 | Адресный срез по счету собран (по движениям live MCP). | +| X019 | True | partial_non_blocking | partial_coverage | account_balance_snapshot | empty_match | скока по 60.02 на конец 2020-12 | В live-данных по текущему фильтру записи не найдены. | +| X020 | True | ok_or_factual | factual | account_balance_snapshot | None | бля сальдо 60.01 на 2020-05-31 | Адресный срез по счету собран (по движениям live MCP). | +| X021 | True | ok_or_factual | factual | documents_forming_balance | None | раскрой остаток 60.01 по документам на конец июля 2020 | Собран drilldown документов, формирующих остаток по счету на указанную дату. | +| X022 | True | ok_or_factual | factual | documents_forming_balance | None | доки под остатком 60.01 на 2020-07-31 | Собран drilldown документов, формирующих остаток по счету на указанную дату. | +| X023 | True | ok_or_factual | factual | documents_forming_balance | None | из чего остаток 60.01 на 2020-07-31 | Собран drilldown документов, формирующих остаток по счету на указанную дату. | +| X024 | True | ok_or_factual | factual | documents_forming_balance | None | какие документы формируют остаток по 60.01 на 2020-07-31 | Собран drilldown документов, формирующих остаток по счету на указанную дату. | +| X025 | True | ok_or_factual | factual | documents_forming_balance | None | docs forming balance 60.01 as of 2020-07-31 | Собран drilldown документов, формирующих остаток по счету на указанную дату. | +| X026 | True | partial_non_blocking | partial_coverage | documents_forming_balance | empty_match | раскидай остаток 62.01 по докам на 2020-12-31 | В live-данных по текущему фильтру записи не найдены. | +| X027 | True | ok_or_factual | factual | documents_forming_balance | None | по счету 51 раскрой остаток документами на 2020-06-30 | Собран drilldown документов, формирующих остаток по счету на указанную дату. | +| X028 | True | ok_or_factual | factual | documents_forming_balance | None | бля из чего состоит остаток по 60.01 на 2020-05-31 | Собран drilldown документов, формирующих остаток по счету на указанную дату. | +| X029 | True | ok_or_factual | factual | list_documents_by_contract | None | доки по договору 19/15 за 2020 | Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк. | +| X030 | True | ok_or_factual | factual | list_documents_by_contract | None | покажи документы контракт 19/15 | Собран список документов по договору (live address lane). | +| X031 | True | ok_or_factual | factual | list_documents_by_contract | None | docs by contract 19/15 2020 | Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк. | +| X032 | True | ok_or_factual | factual | list_documents_by_contract | None | по дог 19/15 какие документы | Собран список документов по договору (live address lane). | +| X033 | True | ok_or_factual | factual | list_documents_by_contract | None | договор 19/15 выведи доки | Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу. | +| X034 | True | ok_or_factual | factual | list_documents_by_contract | None | нах покажи документы по 19/15 | Собран список документов по договору (live address lane). | +| X035 | True | ok_or_factual | factual | bank_operations_by_contract | None | банк операции по договору 19/15 | Собран список банковских операций по договору (live address lane). | +| X036 | True | ok_or_factual | factual | bank_operations_by_contract | None | платежки по дог 19/15 | Собран список банковских операций по договору (live address lane). | +| X037 | True | ok_or_factual | factual | bank_operations_by_contract | None | выписка по контракту 19/15 | Собран список банковских операций по договору (live address lane). | +| X038 | True | ok_or_factual | factual | bank_operations_by_contract | None | bank ops by contract 19/15 | Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу. | +| X039 | True | ok_or_factual | factual | bank_operations_by_contract | None | покажи банк опер по дог 19/15 пж | Собран список банковских операций по договору (live address lane). | +| X040 | True | ok_or_factual | factual | bank_operations_by_contract | None | епт транзакции договор 19/15 | Собран список банковских операций по договору (live address lane). | +| X041 | True | ok_or_factual | factual | account_balance_snapshot | None | покажи сальдо по счету 60 за 2020 | Адресный срез по счету собран (по движениям live MCP). | +| X042 | True | ok_or_factual | factual | account_balance_snapshot | None | а теперь только май 2020 | Адресный срез по счету собран (по движениям live MCP). | diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_stress_102_20-16-06/run_summary.json b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_stress_102_20-16-06/run_summary.json new file mode 100644 index 0000000..1063b4f --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_stress_102_20-16-06/run_summary.json @@ -0,0 +1,54 @@ +{ + "run_id": "2026-04-02_Address_Nightly_stress_102_20-16-06", + "generated_at": "2026-04-02T20:27:52", + "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", + "strict_policy": "route", + "totals": { + "questions_total": 102, + "ok_200_count": 102, + "semantic_pass_count": 102, + "semantic_pass_rate": 1.0, + "route_pass_count": 102, + "route_pass_rate": 1.0, + "strict_pass_count": 102, + "strict_pass_rate": 1.0, + "factual_count": 96, + "partial_coverage_count": 6, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_applied_count": 81, + "avg_elapsed_ms": 6920.5 + }, + "distributions": { + "reply_type": { + "factual": 96, + "partial_coverage": 6 + }, + "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": { + "matched_non_empty": 96, + "no_raw_rows": 6 + }, + "limited_reason_category": { + "empty_match": 6 + }, + "route_health": { + "ok_or_factual": 96, + "partial_non_blocking": 6 + } + } +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_stress_102_20-16-06_comparator_report.json b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_stress_102_20-16-06_comparator_report.json new file mode 100644 index 0000000..a9c787b --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_stress_102_20-16-06_comparator_report.json @@ -0,0 +1,67 @@ +{ + "generated_at": "2026-04-02T20:27:52", + "overall_pass": true, + "baseline": { + "summary_path": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\runs\\2026-04-02_Address_Slang_Live_Stress_2026-04-02_12-57-27\\run_summary.json", + "run_id": "2026-04-02_Address_Slang_Live_Stress_2026-04-02_12-57-27", + "questions_total": 102, + "strict_pass_rate": 1.0, + "route_pass_rate": 1.0, + "execution_error_count": 0, + "false_factual_rate": 0.0, + "notes": [ + "execution_error_count derived as http_error_count + limited_reason_category.execution_error", + "false_factual_rate derived from false_factual_count/questions_total" + ] + }, + "candidate": { + "summary_path": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\runs\\2026-04-02_Address_Nightly_Regression_AfterFocusFix\\2026-04-02_Address_Nightly_stress_102_20-16-06\\run_summary.json", + "run_id": "2026-04-02_Address_Nightly_stress_102_20-16-06", + "questions_total": 102, + "strict_pass_rate": 1.0, + "route_pass_rate": 1.0, + "execution_error_count": 0, + "false_factual_rate": 0.0, + "notes": [ + "execution_error_count derived as http_error_count + limited_reason_category.execution_error", + "false_factual_rate derived from false_factual_count/questions_total" + ] + }, + "checks": [ + { + "metric": "strict_pass_rate", + "passed": true, + "baseline": 1.0, + "candidate": 1.0, + "rule": "candidate >= baseline" + }, + { + "metric": "route_pass_rate", + "passed": true, + "baseline": 1.0, + "candidate": 1.0, + "rule": "candidate >= baseline" + }, + { + "metric": "execution_error_count", + "passed": true, + "baseline": 0, + "candidate": 0, + "rule": "candidate <= baseline" + }, + { + "metric": "false_factual_rate", + "passed": true, + "baseline": 0.0, + "candidate": 0.0, + "rule": "candidate <= baseline" + }, + { + "metric": "questions_total_match", + "passed": true, + "baseline": 102, + "candidate": 102, + "rule": "candidate == baseline" + } + ] +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_stress_102_20-16-06_validator_report.json b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_stress_102_20-16-06_validator_report.json new file mode 100644 index 0000000..67ca7f9 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/2026-04-02_Address_Nightly_stress_102_20-16-06_validator_report.json @@ -0,0 +1,23 @@ +{ + "generated_at": "2026-04-02T20:27:52", + "total": 1, + "passed": 1, + "failed": 0, + "results": [ + { + "run_dir": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\runs\\2026-04-02_Address_Nightly_Regression_AfterFocusFix\\2026-04-02_Address_Nightly_stress_102_20-16-06", + "valid": true, + "errors": [], + "warnings": [], + "metrics": { + "run_id": "2026-04-02_Address_Nightly_stress_102_20-16-06", + "questions_total": 102, + "route_pass_rate": 1.0, + "strict_pass_rate": 1.0, + "http_error_count": 0, + "rows_count": 102, + "failures_count": 0 + } + } + ] +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/README.md b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/README.md new file mode 100644 index 0000000..8f1eec7 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/README.md @@ -0,0 +1,22 @@ +# 2026-04-02_Address_Nightly_Regression_AfterFocusFix + +Generated at: 2026-04-02T20:29:57 +Dry run: False +Strict policy: route +Overall: PASS + +## Packs +### stress_102 +- run_id: 2026-04-02_Address_Nightly_stress_102_20-16-06 +- runner_ok: True +- validator_ok: True +- comparator_ok: True +- run_dir: X:\1C\NDC_1C\docs\ADDRESS\runs\2026-04-02_Address_Nightly_Regression_AfterFocusFix\2026-04-02_Address_Nightly_stress_102_20-16-06 + +### followup_25 +- run_id: 2026-04-02_Address_Nightly_followup_25_20-27-52 +- runner_ok: True +- validator_ok: True +- comparator_ok: True +- run_dir: X:\1C\NDC_1C\docs\ADDRESS\runs\2026-04-02_Address_Nightly_Regression_AfterFocusFix\2026-04-02_Address_Nightly_followup_25_20-27-52 + diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/nightly_summary.json b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/nightly_summary.json new file mode 100644 index 0000000..56b1c5b --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterFocusFix/nightly_summary.json @@ -0,0 +1,35 @@ +{ + "nightly_run_id": "2026-04-02_Address_Nightly_Regression_AfterFocusFix", + "generated_at": "2026-04-02T20:29:57", + "dry_run": false, + "overall_ok": true, + "strict_policy": "route", + "packs": [ + { + "pack": "stress_102", + "run_id": "2026-04-02_Address_Nightly_stress_102_20-16-06", + "questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\address_slang_stress_full_2026-04-02.json", + "baseline_summary": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\runs\\2026-04-02_Address_Slang_Live_Stress_2026-04-02_12-57-27\\run_summary.json", + "run_dir": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\runs\\2026-04-02_Address_Nightly_Regression_AfterFocusFix\\2026-04-02_Address_Nightly_stress_102_20-16-06", + "runner_ok": true, + "validator_ok": true, + "comparator_ok": true, + "errors": [], + "validator_report": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\runs\\2026-04-02_Address_Nightly_Regression_AfterFocusFix\\2026-04-02_Address_Nightly_stress_102_20-16-06_validator_report.json", + "comparator_report": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\runs\\2026-04-02_Address_Nightly_Regression_AfterFocusFix\\2026-04-02_Address_Nightly_stress_102_20-16-06_comparator_report.json" + }, + { + "pack": "followup_25", + "run_id": "2026-04-02_Address_Nightly_followup_25_20-27-52", + "questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\address_followup_context_chains_2026-04-02.json", + "baseline_summary": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\runs\\2026-04-02_Address_Followup_Context_Chains_2026-04-02_19-15-Run5\\run_summary.json", + "run_dir": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\runs\\2026-04-02_Address_Nightly_Regression_AfterFocusFix\\2026-04-02_Address_Nightly_followup_25_20-27-52", + "runner_ok": true, + "validator_ok": true, + "comparator_ok": true, + "errors": [], + "validator_report": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\runs\\2026-04-02_Address_Nightly_Regression_AfterFocusFix\\2026-04-02_Address_Nightly_followup_25_20-27-52_validator_report.json", + "comparator_report": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\runs\\2026-04-02_Address_Nightly_Regression_AfterFocusFix\\2026-04-02_Address_Nightly_followup_25_20-27-52_comparator_report.json" + } + ] +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterGeneral5Fix/2026-04-02_Address_Nightly_followup_25_19-40-36/README.md b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterGeneral5Fix/2026-04-02_Address_Nightly_followup_25_19-40-36/README.md new file mode 100644 index 0000000..7a7dfc2 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterGeneral5Fix/2026-04-02_Address_Nightly_followup_25_19-40-36/README.md @@ -0,0 +1,28 @@ +# 2026-04-02_Address_Nightly_followup_25_19-40-36 + +Generated at: 2026-04-02T19:42:39 +Questions file: X:\1C\NDC_1C\docs\ADDRESS\question_sets\address_followup_context_chains_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 +Strict policy: route + +## Totals +- questions_total: 25 +- ok_200_count: 25 +- semantic_pass_count: 25 +- semantic_pass_rate: 1.0 +- route_pass_count: 25 +- route_pass_rate: 1.0 +- strict_pass_count: 25 +- strict_pass_rate: 1.0 +- factual_count: 23 +- partial_coverage_count: 2 +- clarification_required_count: 0 +- http_error_count: 0 +- llm_decomposition_applied_count: 14 +- avg_elapsed_ms: 4918.7 + +## Files +- run_summary.json +- full_live_results.json +- failures_only.json diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterGeneral5Fix/2026-04-02_Address_Nightly_followup_25_19-40-36/failures_only.json b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterGeneral5Fix/2026-04-02_Address_Nightly_followup_25_19-40-36/failures_only.json new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterGeneral5Fix/2026-04-02_Address_Nightly_followup_25_19-40-36/failures_only.json @@ -0,0 +1 @@ +[] diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterGeneral5Fix/2026-04-02_Address_Nightly_followup_25_19-40-36/full_live_results.json b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterGeneral5Fix/2026-04-02_Address_Nightly_followup_25_19-40-36/full_live_results.json new file mode 100644 index 0000000..8a2e956 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterGeneral5Fix/2026-04-02_Address_Nightly_followup_25_19-40-36/full_live_results.json @@ -0,0 +1,3832 @@ +{ + "run_id": "2026-04-02_Address_Nightly_followup_25_19-40-36", + "generated_at": "2026-04-02T19:42:39", + "summary": { + "run_id": "2026-04-02_Address_Nightly_followup_25_19-40-36", + "generated_at": "2026-04-02T19:42:39", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\address_followup_context_chains_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", + "strict_policy": "route", + "totals": { + "questions_total": 25, + "ok_200_count": 25, + "semantic_pass_count": 25, + "semantic_pass_rate": 1.0, + "route_pass_count": 25, + "route_pass_rate": 1.0, + "strict_pass_count": 25, + "strict_pass_rate": 1.0, + "factual_count": 23, + "partial_coverage_count": 2, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_applied_count": 14, + "avg_elapsed_ms": 4918.7 + }, + "distributions": { + "reply_type": { + "factual": 23, + "partial_coverage": 2 + }, + "actual_intent": { + "list_documents_by_counterparty": 3, + "account_balance_snapshot": 9, + "documents_forming_balance": 2, + "bank_operations_by_counterparty": 2, + "list_documents_by_contract": 3, + "bank_operations_by_contract": 3, + "open_items_by_counterparty_or_contract": 3 + }, + "actual_mode": { + "address_query": 25 + }, + "mcp_call_status": { + "matched_non_empty": 23, + "no_raw_rows": 2 + }, + "limited_reason_category": { + "empty_match": 2 + }, + "route_health": { + "ok_or_factual": 23, + "partial_non_blocking": 2 + } + } + }, + "rows": [ + { + "index": 1, + "id": "F001", + "question": "Покажи документы по СВК за 2020", + "session": "chain_docs_svk_a", + "session_id": "asst-2026-04-02_Address_Nightly_followup_25_19-40-36-chain_docs_svk_a", + "status_code": 200, + "ok": true, + "elapsed_ms": 5862, + "reply_type": "factual", + "trace_id": "address-B-dx4cn1mn", + "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 | аналитика: Группа", + "assistant_reply_first_line": "Собран список документов по контрагенту (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 20, + "rows_matched": 3, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-B-dx4cn1mn", + "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": "LFfpSEpbQY_V2e", + "llm_decomposition_effective_message": "Показать документы по СВК за период 2020 год.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "покажи документы по свк за 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "LFfpSEpbQY_V2e", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Показать документы по СВК за период 2020 год." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 2, + "id": "F002", + "question": "а теперь только за май 2020", + "session": "chain_docs_svk_a", + "session_id": "asst-2026-04-02_Address_Nightly_followup_25_19-40-36-chain_docs_svk_a", + "status_code": 200, + "ok": true, + "elapsed_ms": 3373, + "reply_type": "factual", + "trace_id": "address-OEVP_ax7Ys", + "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 | аналитика: Группа", + "assistant_reply_first_line": "По окну 2020-05-01..2020-05-31 строк не найдено; показаны ближайшие доступные данные 2020-07-27..2021-11-10.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 26, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-OEVP_ax7Ys", + "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 + }, + "error_code": null, + "error_message": null + }, + { + "index": 3, + "id": "F003", + "question": "а по счету 60.01 на ту же дату", + "session": "chain_docs_svk_a", + "session_id": "asst-2026-04-02_Address_Nightly_followup_25_19-40-36-chain_docs_svk_a", + "status_code": 200, + "ok": true, + "elapsed_ms": 5836, + "reply_type": "factual", + "trace_id": "address-zow1egavZ7", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-zow1egavZ7", + "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": "60.01", + "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": "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": "zKNWr-ASNxGdnh", + "llm_decomposition_effective_message": "по счету 60.01 на ту же дату", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "а по счету 60.01 на ту же дату", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "zKNWr-ASNxGdnh", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "по счету 60.01 на ту же дату" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 4, + "id": "F004", + "question": "а на ту же дату по 62.01", + "session": "chain_docs_svk_a", + "session_id": "asst-2026-04-02_Address_Nightly_followup_25_19-40-36-chain_docs_svk_a", + "status_code": 200, + "ok": true, + "elapsed_ms": 961, + "reply_type": "factual", + "trace_id": "address-tPhqbFCaOA", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 2, + "rows_matched": 2, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-tPhqbFCaOA", + "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", + "intent_not_supported_in_v1", + "intent_adjusted_to_balance_followup_context", + "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": "low", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "account": "62.01", + "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": "62.01", + "anchor_value_resolved": "62.01", + "resolver_confidence": "high", + "ambiguity_count": 0, + "match_failure_stage": "none", + "match_failure_reason": null, + "mcp_call_status": "matched_non_empty", + "rows_fetched": 2, + "raw_rows_received": 2, + "rows_after_account_scope": 2, + "rows_after_recipe_filter": 2, + "rows_materialized": 2, + "rows_matched": 2, + "raw_row_keys_sample": [ + "Период", + "Регистратор", + "СчетДт", + "СчетКт", + "Сумма", + "Period", + "Registrator", + "AccountDt", + "AccountKt", + "Amount" + ], + "materialization_drop_reason": "none", + "account_token_raw": "62.01", + "account_token_normalized": "62.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": false, + "llm_provider_used": "local", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "а на ту же дату по 62.01", + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "sanitized_user_message": "а на ту же дату по 62.01", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + }, + "error_code": null, + "error_message": null + }, + { + "index": 5, + "id": "F005", + "question": "раскрой остаток по 62.01 документами на ту же дату", + "session": "chain_docs_svk_a", + "session_id": "asst-2026-04-02_Address_Nightly_followup_25_19-40-36-chain_docs_svk_a", + "status_code": 200, + "ok": true, + "elapsed_ms": 7121, + "reply_type": "factual", + "trace_id": "address-gEH9KO31cS", + "assistant_reply": "Собран drilldown документов, формирующих остаток по счету на указанную дату.\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\nМожно уточнить выборку по контрагенту, договору или периоду.", + "assistant_reply_first_line": "Собран drilldown документов, формирующих остаток по счету на указанную дату.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_forming_balance_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 2, + "rows_matched": 2, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-gEH9KO31cS", + "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_account_drilldown_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": "high", + "query_shape": "DOCUMENT_LIST", + "query_shape_confidence": "medium", + "detected_intent": "documents_forming_balance", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "account": "62.01", + "as_of_date": "2020-05-31", + "period_from": "2020-05-01", + "period_to": "2020-05-31" + }, + "missing_required_filters": [], + "selected_recipe": "address_documents_forming_balance_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "strict", + "account_scope_fallback_applied": false, + "anchor_type": "account", + "anchor_value_raw": "62.01", + "anchor_value_resolved": "62.01", + "resolver_confidence": "high", + "ambiguity_count": 0, + "match_failure_stage": "none", + "match_failure_reason": null, + "mcp_call_status": "matched_non_empty", + "rows_fetched": 2, + "raw_rows_received": 2, + "rows_after_account_scope": 2, + "rows_after_recipe_filter": 2, + "rows_materialized": 2, + "rows_matched": 2, + "raw_row_keys_sample": [ + "Период", + "Регистратор", + "СчетДт", + "СчетКт", + "Сумма", + "Period", + "Registrator", + "AccountDt", + "AccountKt", + "Amount" + ], + "materialization_drop_reason": "none", + "account_token_raw": "62.01", + "account_token_normalized": "62.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_LIST", + "execution_lane": "address_query", + "llm_decomposition_applied": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "zf-7VN2opnmbLS", + "llm_decomposition_effective_message": "раскрыть остаток по счету 62.01 с соответствующими документами на ту же дату", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "раскрой остаток по 62.01 документами на ту же дату", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "zf-7VN2opnmbLS", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "раскрыть остаток по счету 62.01 с соответствующими документами на ту же дату" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 6, + "id": "F006", + "question": "Покажи банковские операции по СВК за 2020", + "session": "chain_bank_svk_b", + "session_id": "asst-2026-04-02_Address_Nightly_followup_25_19-40-36-chain_bank_svk_b", + "status_code": 200, + "ok": true, + "elapsed_ms": 8369, + "reply_type": "factual", + "trace_id": "address-kE08RiGabE", + "assistant_reply": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.\nСобран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 5.\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-16T16:20:52Z | Списание с расчетного счета 00000000294 от 16.12.2020 16:20:52 | 0 / 0 | 3849.26 | аналитика: УФК по г. Москве (для ГУ - Отделения ПФР по г. Москве и МО)\n4. 2020-12-16T16:20:51Z | Списание с расчетного счета 00000000293 от 16.12.2020 16:20:51 | 0 / 0 | 60 | аналитика: СБЕРБАНК, ПАО\n5. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "assistant_reply_first_line": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "rows_fetched": 20, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-kE08RiGabE", + "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", + "anchor_not_matched_fallback_rows" + ], + "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": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "mcp_call_status": "matched_non_empty", + "rows_fetched": 20, + "raw_rows_received": 20, + "rows_after_account_scope": 5, + "rows_after_recipe_filter": 0, + "rows_materialized": 5, + "rows_matched": 5, + "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": "tdAOr_1T4R-Vh7", + "llm_decomposition_effective_message": "Показать банковские операции по счету 51 (СВК) за период 2020 год.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "покажи банковские операции по свк за 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "tdAOr_1T4R-Vh7", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Показать банковские операции по счету 51 (СВК) за период 2020 год." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 7, + "id": "F007", + "question": "а теперь только ноябрь 2020", + "session": "chain_bank_svk_b", + "session_id": "asst-2026-04-02_Address_Nightly_followup_25_19-40-36-chain_bank_svk_b", + "status_code": 200, + "ok": true, + "elapsed_ms": 3048, + "reply_type": "factual", + "trace_id": "address-L7pHNZ4RwL", + "assistant_reply": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.\nСобран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 5.\n1. 2020-11-30T12:00:07Z | Поступление на расчетный счет 00000000041 от 30.11.2020 12:00:07 | 0 / 0 | 38900 | аналитика: Группа\n3. 2020-11-19T12:00:04Z | Поступление на расчетный счет 00000000039 от 19.11.2020 12:00:04 | 0 / 0 | 3320600 | аналитика: Группа\n4. 2020-11-18T12:00:05Z | Поступление на расчетный счет 00000000038 от 18.11.2020 12:00:05 | 0 / 0 | 745300 | аналитика: Группа\n5. 2020-11-18T12:00:04Z | Поступление на расчетный счет 00000000037 от 18.11.2020 12:00:04 | 0 / 0 | 320000 | аналитика: Группа", + "assistant_reply_first_line": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "rows_fetched": 20, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-L7pHNZ4RwL", + "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", + "anchor_not_matched_fallback_rows" + ], + "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_counterparty", + "detected_intent_confidence": "low", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "period_from": "2020-11-01", + "period_to": "2020-11-30", + "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": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "mcp_call_status": "matched_non_empty", + "rows_fetched": 20, + "raw_rows_received": 20, + "rows_after_account_scope": 5, + "rows_after_recipe_filter": 0, + "rows_materialized": 5, + "rows_matched": 5, + "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 + }, + "error_code": null, + "error_message": null + }, + { + "index": 8, + "id": "F008", + "question": "а теперь документы по нему", + "session": "chain_bank_svk_b", + "session_id": "asst-2026-04-02_Address_Nightly_followup_25_19-40-36-chain_bank_svk_b", + "status_code": 200, + "ok": true, + "elapsed_ms": 8199, + "reply_type": "factual", + "trace_id": "address-FS_Z42hLwi", + "assistant_reply": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.\nСобран список документов по контрагенту (live address lane).\nСтрок отобрано: 5.\n1. 2020-11-30T12:00:07Z | Поступление на расчетный счет 00000000041 от 30.11.2020 12:00:07 | 0 / 0 | 38900 | аналитика: Группа\n3. 2020-11-19T12:00:04Z | Поступление на расчетный счет 00000000039 от 19.11.2020 12:00:04 | 0 / 0 | 3320600 | аналитика: Группа\n4. 2020-11-18T12:00:05Z | Поступление на расчетный счет 00000000038 от 18.11.2020 12:00:05 | 0 / 0 | 745300 | аналитика: Группа\n5. 2020-11-18T12:00:04Z | Поступление на расчетный счет 00000000037 от 18.11.2020 12:00:04 | 0 / 0 | 320000 | аналитика: Группа", + "assistant_reply_first_line": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "rows_fetched": 20, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-FS_Z42hLwi", + "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", + "period_from_followup_context", + "address_followup_context_applied", + "anchor_not_matched_fallback_rows" + ], + "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-11-01", + "period_to": "2020-11-30" + }, + "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": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "mcp_call_status": "matched_non_empty", + "rows_fetched": 20, + "raw_rows_received": 20, + "rows_after_account_scope": 5, + "rows_after_recipe_filter": 0, + "rows_materialized": 5, + "rows_matched": 5, + "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": "lbAO-mvxp3e8Q4", + "llm_decomposition_effective_message": "документы по неуказанному объекту", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "а теперь документы по нему", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "lbAO-mvxp3e8Q4", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "документы по неуказанному объекту" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 9, + "id": "F009", + "question": "и остаток по 51 на ту же дату", + "session": "chain_bank_svk_b", + "session_id": "asst-2026-04-02_Address_Nightly_followup_25_19-40-36-chain_bank_svk_b", + "status_code": 200, + "ok": true, + "elapsed_ms": 5870, + "reply_type": "factual", + "trace_id": "address-_NgsyYE5Ox", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 200, + "rows_matched": 200, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-_NgsyYE5Ox", + "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": "51", + "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": "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": 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": "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": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "eG6Kt9zoJ7jJUL", + "llm_decomposition_effective_message": "остаток по счету 51 на текущую дату", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "и остаток по 51 на ту же дату", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "eG6Kt9zoJ7jJUL", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "остаток по счету 51 на текущую дату" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 10, + "id": "F010", + "question": "а теперь только май 2020", + "session": "chain_bank_svk_b", + "session_id": "asst-2026-04-02_Address_Nightly_followup_25_19-40-36-chain_bank_svk_b", + "status_code": 200, + "ok": true, + "elapsed_ms": 931, + "reply_type": "factual", + "trace_id": "address-wSzHHwEKWB", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 24, + "rows_matched": 24, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-wSzHHwEKWB", + "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", + "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, + "period_from": "2020-05-01", + "period_to": "2020-05-31", + "as_of_date": "2020-05-31", + "account": "51" + }, + "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": 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 + }, + "error_code": null, + "error_message": null + }, + { + "index": 11, + "id": "F011", + "question": "Покажи сальдо по счету 60 на 2020-12-31", + "session": "chain_balance_c", + "session_id": "asst-2026-04-02_Address_Nightly_followup_25_19-40-36-chain_balance_c", + "status_code": 200, + "ok": true, + "elapsed_ms": 6124, + "reply_type": "partial_coverage", + "trace_id": "address-EepDebEQeR", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.", + "assistant_reply_first_line": "В live-данных по текущему фильтру записи не найдены.", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "partial_non_blocking", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 0, + "rows_matched": 0, + "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, + "debug_payload": { + "trace_id": "address-EepDebEQeR", + "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", + "account_balance_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": "account_balance_snapshot", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "account": "60", + "period_from": "2020-12-01", + "period_to": "2020-12-31", + "as_of_date": "2020-12-31" + }, + "missing_required_filters": [], + "selected_recipe": "address_movements_account_snapshot_v1", + "mcp_call_status_legacy": "no_raw_rows", + "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": "no_raw_rows", + "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": "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": "empty_match", + "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": "HAfePUpcCnlAfg", + "llm_decomposition_effective_message": "Показать баланс по счету 60 на конец декабря 2020 года", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "покажи сальдо по счету 60 на 2020-12-31", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "HAfePUpcCnlAfg", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Показать баланс по счету 60 на конец декабря 2020 года" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 12, + "id": "F012", + "question": "а теперь только май 2020", + "session": "chain_balance_c", + "session_id": "asst-2026-04-02_Address_Nightly_followup_25_19-40-36-chain_balance_c", + "status_code": 200, + "ok": true, + "elapsed_ms": 1008, + "reply_type": "factual", + "trace_id": "address-bsc30iNHlG", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 6, + "rows_matched": 6, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-bsc30iNHlG", + "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", + "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, + "period_from": "2020-05-01", + "period_to": "2020-05-31", + "as_of_date": "2020-05-31", + "account": "60" + }, + "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": "а теперь только май 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 + }, + "error_code": null, + "error_message": null + }, + { + "index": 13, + "id": "F013", + "question": "а на ту же дату по 62", + "session": "chain_balance_c", + "session_id": "asst-2026-04-02_Address_Nightly_followup_25_19-40-36-chain_balance_c", + "status_code": 200, + "ok": true, + "elapsed_ms": 1012, + "reply_type": "factual", + "trace_id": "address-Nbi081vvxh", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 4.\nСумма по отобранным движениям: 2545546.24.\n1. 2020-05-21T12:00:00Z | Поступление на расчетный счет 00000000023 от 21.05.2020 12:00:00 | 51 / 62.02 | 250546.24\n2. 2020-05-18T12:00:01Z | Реализация товаров и услуг 00000000002 от 18.05.2020 12:00:01 | 62.01 / 90.01.1 | 765000\n3. 2020-05-18T12:00:01Z | Реализация товаров и услуг 00000000002 от 18.05.2020 12:00:01 | 62.02 / 62.01 | 765000\n4. 2020-05-15T12:00:02Z | Поступление на расчетный счет 00000000022 от 15.05.2020 12:00:02 | 51 / 62.02 | 765000", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 4, + "rows_matched": 4, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-Nbi081vvxh", + "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_adjusted_to_balance_followup_context", + "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": "low", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "account": "62", + "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": "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": 4, + "raw_rows_received": 4, + "rows_after_account_scope": 4, + "rows_after_recipe_filter": 4, + "rows_materialized": 4, + "rows_matched": 4, + "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": 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 + }, + "error_code": null, + "error_message": null + }, + { + "index": 14, + "id": "F014", + "question": "раскрой 62 документами на ту же дату", + "session": "chain_balance_c", + "session_id": "asst-2026-04-02_Address_Nightly_followup_25_19-40-36-chain_balance_c", + "status_code": 200, + "ok": true, + "elapsed_ms": 6156, + "reply_type": "factual", + "trace_id": "address-57ouqY4IG7", + "assistant_reply": "Собран drilldown документов, формирующих остаток по счету на указанную дату.\nДокументных строк отобрано: 196.\nСумма по отобранным движениям: 51567351.32000001.\n1. 2021-11-10T12:00:07Z | Поступление на расчетный счет 00000000013 от 10.11.2021 12:00:07 | 51 / 62.02 | 20000\n2. 2021-09-29T12:00:03Z | Поступление на расчетный счет 00000000012 от 29.09.2021 12:00:03 | 51 / 62.02 | 50000\n3. 2021-08-31T12:00:04Z | Поступление на расчетный счет 00000000011 от 31.08.2021 12:00:04 | 51 / 62.02 | 120500\n4. 2021-06-22T12:00:00Z | Поступление на расчетный счет 00000000010 от 22.06.2021 12:00:00 | 51 / 62.02 | 498630\n5. 2021-06-09T12:00:05Z | Поступление на расчетный счет 00000000009 от 09.06.2021 12:00:05 | 51 / 62.02 | 418960\n6. 2021-04-28T12:00:08Z | Поступление на расчетный счет 00000000008 от 28.04.2021 12:00:08 | 51 / 62.02 | 564300\n7. 2021-04-22T12:00:00Z | Поступление на расчетный счет 00000000007 от 22.04.2021 12:00:00 | 51 / 62.02 | 982420\n8. 2021-04-13T12:00:11Z | Поступление на расчетный счет 00000000006 от 13.04.2021 12:00:11 | 51 / 62.02 | 1882400\nМожно уточнить выборку по контрагенту, договору или периоду.", + "assistant_reply_first_line": "Собран drilldown документов, формирующих остаток по счету на указанную дату.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_forming_balance_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 200, + "rows_matched": 196, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-57ouqY4IG7", + "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_account_drilldown_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": "documents_forming_balance", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "account": "62", + "as_of_date": "2026-04-02" + }, + "missing_required_filters": [], + "selected_recipe": "address_documents_forming_balance_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": 196, + "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_LIST", + "execution_lane": "address_query", + "llm_decomposition_applied": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "mAqnq5ibKxh7Jb", + "llm_decomposition_effective_message": "раскрыть счет 62 по связанным документам с той же датой", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "раскрой 62 документами на ту же дату", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "mAqnq5ibKxh7Jb", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "раскрыть счет 62 по связанным документам с той же датой" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 15, + "id": "F015", + "question": "вернись на 2020-12-31 по 60", + "session": "chain_balance_c", + "session_id": "asst-2026-04-02_Address_Nightly_followup_25_19-40-36-chain_balance_c", + "status_code": 200, + "ok": true, + "elapsed_ms": 924, + "reply_type": "partial_coverage", + "trace_id": "address-e6dmzEqdES", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.", + "assistant_reply_first_line": "В live-данных по текущему фильтру записи не найдены.", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "partial_non_blocking", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 0, + "rows_matched": 0, + "mcp_call_status": "no_raw_rows", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-e6dmzEqdES", + "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": [ + "no_address_or_deep_signal", + "address_mode_from_followup_context", + "shape_not_detected", + "account_balance_signal_detected", + "intent_adjusted_to_balance_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, + "account": "60", + "period_from": "2020-12-01", + "period_to": "2020-12-31", + "as_of_date": "2020-12-31" + }, + "missing_required_filters": [], + "selected_recipe": "address_movements_account_snapshot_v1", + "mcp_call_status_legacy": "no_raw_rows", + "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": "no_raw_rows", + "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": "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": "empty_match", + "response_type": "LIMITED_WITH_REASON", + "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-12-31 по 60", + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "sanitized_user_message": "вернись на 2020-12-31 по 60", + "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 + }, + "error_code": null, + "error_message": null + }, + { + "index": 16, + "id": "F016", + "question": "Покажи документы по договору 19/15 за 2020", + "session": "chain_contract_d", + "session_id": "asst-2026-04-02_Address_Nightly_followup_25_19-40-36-chain_contract_d", + "status_code": 200, + "ok": true, + "elapsed_ms": 8383, + "reply_type": "factual", + "trace_id": "address-sEEK8EQw7a", + "assistant_reply": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 8.\n1. 2020-08-31T15:00:06Z | Поступление товаров и услуг 00000000024 от 31.08.2020 15:00:06 | 19.04 / 76.05 | 233.33\n2. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 43804.8\n3. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 9776\n4. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 73968\n5. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 94924.8\n6. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 54400\n7. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.02 / 62.01 | 276873.6\n8. 2020-06-30T12:00:00Z | Поступление товаров и услуг 00000000015 от 30.06.2020 12:00:00 | 19.04 / 76.05 | 233.33", + "assistant_reply_first_line": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 8, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-sEEK8EQw7a", + "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_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": "high", + "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": "19/15", + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": 11, + "rows_materialized": 438, + "rows_matched": 8, + "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": "mrVB--n_4TaGkU", + "llm_decomposition_effective_message": "показать документы по договору 19/15 за период 2020", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "покажи документы по договору 19/15 за 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "mrVB--n_4TaGkU", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "показать документы по договору 19/15 за период 2020" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 17, + "id": "F017", + "question": "а теперь банковские операции", + "session": "chain_contract_d", + "session_id": "asst-2026-04-02_Address_Nightly_followup_25_19-40-36-chain_contract_d", + "status_code": 200, + "ok": true, + "elapsed_ms": 8183, + "reply_type": "factual", + "trace_id": "address-sOwGN3Cmwj", + "assistant_reply": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.\nСобран список банковских операций по договору (live address lane).\nСтрок отобрано: 3.\n1. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53\n2. 2020-07-15T13:11:23Z | Списание с расчетного счета 00000000191 от 15.07.2020 13:11:23 | 66.02 / 51 | 54125.93\n3. 2020-07-15T13:11:22Z | Списание с расчетного счета 00000000190 от 15.07.2020 13:11:22 | 66.01 / 51 | 122035.07", + "assistant_reply_first_line": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 3, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-sOwGN3Cmwj", + "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", + "bank_ops_by_counterparty_signal_detected", + "intent_adjusted_to_contract_followup_context", + "contract_from_followup_context", + "period_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, + "contract": "19/15", + "period_from": "2020-01-01", + "period_to": "2020-12-31" + }, + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "QpSxdmHb-f60uH", + "llm_decomposition_effective_message": "а теперь банковские операции", + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "sanitized_user_message": "а теперь банковские операции", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "QpSxdmHb-f60uH", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "а теперь банковские операции" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 18, + "id": "F018", + "question": "а теперь только за 2020", + "session": "chain_contract_d", + "session_id": "asst-2026-04-02_Address_Nightly_followup_25_19-40-36-chain_contract_d", + "status_code": 200, + "ok": true, + "elapsed_ms": 1995, + "reply_type": "factual", + "trace_id": "address-iNEy1HH-eq", + "assistant_reply": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.\nСобран список банковских операций по договору (live address lane).\nСтрок отобрано: 3.\n1. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53\n2. 2020-07-15T13:11:23Z | Списание с расчетного счета 00000000191 от 15.07.2020 13:11:23 | 66.02 / 51 | 54125.93\n3. 2020-07-15T13:11:22Z | Списание с расчетного счета 00000000190 от 15.07.2020 13:11:22 | 66.01 / 51 | 122035.07", + "assistant_reply_first_line": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 3, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-iNEy1HH-eq", + "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": "19/15" + }, + "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": "19/15", + "anchor_value_resolved": "19/15", + "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 + }, + "error_code": null, + "error_message": null + }, + { + "index": 19, + "id": "F019", + "question": "есть ли открытые позиции по договору 19/15 на 2020-12-31", + "session": "chain_contract_d", + "session_id": "asst-2026-04-02_Address_Nightly_followup_25_19-40-36-chain_contract_d", + "status_code": 200, + "ok": true, + "elapsed_ms": 8104, + "reply_type": "factual", + "trace_id": "address-fGtmbxBscF", + "assistant_reply": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.\nСобраны открытые позиции по указанному фильтру (контрагент/договор).\nСтрок отобрано: 8.\n1. 2020-08-31T15:00:06Z | Поступление товаров и услуг 00000000024 от 31.08.2020 15:00:06 | 19.04 / 76.05 | 233.33\n2. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 43804.8\n3. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 9776\n4. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 73968\n5. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 94924.8\n6. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 54400", + "assistant_reply_first_line": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.", + "expected_intent": "open_items_by_counterparty_or_contract", + "actual_intent": "open_items_by_counterparty_or_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_open_items_by_party_or_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 8, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-fGtmbxBscF", + "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", + "open_items_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": "VERIFY_FACTUAL", + "query_shape_confidence": "medium", + "detected_intent": "open_items_by_counterparty_or_contract", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "contract": "19/15", + "as_of_date": "2020-12-31" + }, + "missing_required_filters": [], + "selected_recipe": "address_open_items_by_party_or_contract_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "account_scope_fallback_applied": false, + "anchor_type": "contract", + "anchor_value_raw": "19/15", + "anchor_value_resolved": "19/15", + "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": 285, + "rows_after_recipe_filter": 8, + "rows_materialized": 285, + "rows_matched": 8, + "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": "fA_XGstLWoeNcj", + "llm_decomposition_effective_message": "Проверить наличие открытых позиций по договору 19/15 на конец периода 2020-12-31.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "есть ли открытые позиции по договору 19/15 на 2020-12-31", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "fA_XGstLWoeNcj", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Проверить наличие открытых позиций по договору 19/15 на конец периода 2020-12-31." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 20, + "id": "F020", + "question": "покажи документы по этому же договору", + "session": "chain_contract_d", + "session_id": "asst-2026-04-02_Address_Nightly_followup_25_19-40-36-chain_contract_d", + "status_code": 200, + "ok": true, + "elapsed_ms": 7168, + "reply_type": "factual", + "trace_id": "address-ZOyAuMFUH4", + "assistant_reply": "Собран список документов по договору (live address lane).\nСтрок отобрано: 1.\n1. 2021-12-31T12:00:00Z | Поступление товаров и услуг 00000000015 от 31.12.2021 12:00:00 | 19.04 / 76.05 | 233.33", + "assistant_reply_first_line": "Собран список документов по договору (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 1, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-ZOyAuMFUH4", + "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_contract_signal_detected", + "contract_from_followup_context", + "address_followup_context_applied" + ], + "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_contract", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "contract": "19/15" + }, + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": 416, + "rows_after_recipe_filter": 2, + "rows_materialized": 416, + "rows_matched": 1, + "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": "m4IUSzTPvb99jf", + "llm_decomposition_effective_message": "Показать документы по указанному договору.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "покажи документы по этому же договору", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "m4IUSzTPvb99jf", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Показать документы по указанному договору." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 21, + "id": "F021", + "question": "Покажи банковские операции по договору 19/15", + "session": "chain_contract_e", + "session_id": "asst-2026-04-02_Address_Nightly_followup_25_19-40-36-chain_contract_e", + "status_code": 200, + "ok": true, + "elapsed_ms": 7158, + "reply_type": "factual", + "trace_id": "address-U9vEPSYrF-", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 29.\n1. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53\n2. 2020-07-15T13:11:23Z | Списание с расчетного счета 00000000191 от 15.07.2020 13:11:23 | 66.02 / 51 | 54125.93\n3. 2020-07-15T13:11:22Z | Списание с расчетного счета 00000000190 от 15.07.2020 13:11:22 | 66.01 / 51 | 122035.07\n4. 2019-11-29T12:00:02Z | Списание с расчетного счета 00000000515 от 29.11.2019 12:00:02 | 68.01.1 / 51 | 19058\n5. 2019-11-15T17:00:00Z | Списание с расчетного счета 00000000507 от 15.11.2019 17:00:00 | 66.02 / 51 | 68582.19\n6. 2019-11-15T12:00:07Z | Списание с расчетного счета 00000000506 от 15.11.2019 12:00:07 | 66.01 / 51 | 107578.81\n7. 2019-11-15T12:00:06Z | Списание с расчетного счета 00000000505 от 15.11.2019 12:00:06 | 70 / 51 | 29200\n8. 2019-11-15T12:00:05Z | Списание с расчетного счета 00000000504 от 15.11.2019 12:00:05 | 70 / 51 | 16000\n9. 2019-11-15T12:00:04Z | Списание с расчетного счета 00000000503 от 15.11.2019 12:00:04 | 69.02.7 / 51 | 32560\n10. 2019-11-15T12:00:03Z | Списание с расчетного счета 00000000502 от 15.11.2019 12:00:03 | 70 / 51 | 10296.85\n11. 2019-11-15T12:00:02Z | Списание с расчетного счета 00000000501 от 15.11.2019 12:00:02 | 69.03.1 / 51 | 7548\n12. 2019-11-15T12:00:01Z | Списание с расчетного счета 00000000500 от 15.11.2019 12:00:01 | 76.05 / 51 | 6900\n13. 2019-11-15T12:00:00Z | Списание с расчетного счета 00000000499 от 15.11.2019 12:00:00 | 69.11 / 51 | 296\n14. 2019-10-15T12:00:07Z | Поступление на расчетный счет 00000000052 от 15.10.2019 12:00:07 | 51 / 66.01 | 5000000\n15. 2019-10-15T12:00:06Z | Списание с расчетного счета 00000000454 от 15.10.2019 12:00:06 | 60.02 / 51 | 890000\n16. 2019-10-15T12:00:05Z | Списание с расчетного счета 00000000453 от 15.10.2019 12:00:05 | 76.05 / 51 | 491450\n17. 2019-10-15T12:00:04Z | Списание с расчетного счета 00000000452 от 15.10.2019 12:00:04 | 70 / 51 | 29200\n18. 2019-10-15T12:00:03Z | Списание с расчетного счета 00000000451 от 15.10.2019 12:00:03 | 70 / 51 | 16000\n19. 2019-10-15T12:00:02Z | Списание с расчетного счета 00000000450 от 15.10.2019 12:00:02 | 70 / 51 | 14000\n20. 2019-10-15T12:00:01Z | Списание с расчетного счета 00000000449 от 15.10.2019 12:00:01 | 76.05 / 51 | 3300\n21. 2019-10-15T12:00:00Z | Списание с расчетного счета 00000000448 от 15.10.2019 12:00:00 | 91.02 / 51 | 296\n22. 2019-09-17T12:00:00Z | Списание с расчетного счета 00000000415 от 17.09.2019 12:00:00 | 60.01 / 51 | 150000\n23. 2019-09-17T12:00:00Z | Списание с расчетного счета 00000000415 от 17.09.2019 12:00:00 | 60.01 / 51 | 170740\n24. 2019-08-01T14:37:15Z | Списание с расчетного счета 00000000345 от 01.08.2019 14:37:15 | 60.02 / 51 | 256500\n25. 2019-07-29T12:00:01Z | Списание с расчетного счета 00000000315 от 29.07.2019 12:00:01 | 68.04.1 / 51 | 42562\n26. 2019-07-15T12:00:03Z | Списание с расчетного счета 00000000294 от 15.07.2019 12:00:03 | 70 / 51 | 10800\n27. 2019-07-15T12:00:02Z | Списание с расчетного счета 00000000293 от 15.07.2019 12:00:02 | 70 / 51 | 14000\n28. 2019-07-15T12:00:01Z | Списание с расчетного счета 00000000292 от 15.07.2019 12:00:01 | 70 / 51 | 6800\n29. 2019-07-15T12:00:00Z | Списание с расчетного счета 00000000291 от 15.07.2019 12:00:00 | 91.02 / 51 | 158", + "assistant_reply_first_line": "Собран список банковских операций по договору (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 29, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-U9vEPSYrF-", + "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", + "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": "high", + "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, + "account": "51", + "contract": "19/15" + }, + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": 1000, + "rows_after_recipe_filter": 29, + "rows_materialized": 1000, + "rows_matched": 29, + "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": "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": "gpKLhOdV7Oa8jl", + "llm_decomposition_effective_message": "Показать банковские операции (счета 51, 62) связанные с договором 19/15.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "покажи банковские операции по договору 19/15", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "gpKLhOdV7Oa8jl", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Показать банковские операции (счета 51, 62) связанные с договором 19/15." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 22, + "id": "F022", + "question": "а теперь открытые позиции по нему", + "session": "chain_contract_e", + "session_id": "asst-2026-04-02_Address_Nightly_followup_25_19-40-36-chain_contract_e", + "status_code": 200, + "ok": true, + "elapsed_ms": 2049, + "reply_type": "factual", + "trace_id": "address-uM-Q9-YFpZ", + "assistant_reply": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.\nСобраны открытые позиции по указанному фильтру (контрагент/договор).\nСтрок отобрано: 1.\n1. 2021-12-31T12:00:00Z | Поступление товаров и услуг 00000000015 от 31.12.2021 12:00:00 | 19.04 / 76.05 | 233.33", + "assistant_reply_first_line": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.", + "expected_intent": "open_items_by_counterparty_or_contract", + "actual_intent": "open_items_by_counterparty_or_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_open_items_by_party_or_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 1, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-uM-Q9-YFpZ", + "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", + "open_items_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": "open_items_by_counterparty_or_contract", + "detected_intent_confidence": "low", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "contract": "19/15" + }, + "missing_required_filters": [], + "selected_recipe": "address_open_items_by_party_or_contract_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "account_scope_fallback_applied": false, + "anchor_type": "contract", + "anchor_value_raw": "19/15", + "anchor_value_resolved": "19/15", + "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": 190, + "rows_after_recipe_filter": 1, + "rows_materialized": 190, + "rows_matched": 1, + "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": "а теперь открытые позиции по нему", + "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 + }, + "error_code": null, + "error_message": null + }, + { + "index": 23, + "id": "F023", + "question": "а теперь на 2020-12-31", + "session": "chain_contract_e", + "session_id": "asst-2026-04-02_Address_Nightly_followup_25_19-40-36-chain_contract_e", + "status_code": 200, + "ok": true, + "elapsed_ms": 1995, + "reply_type": "factual", + "trace_id": "address-oYPtI0JQKN", + "assistant_reply": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.\nСобраны открытые позиции по указанному фильтру (контрагент/договор).\nСтрок отобрано: 8.\n1. 2020-08-31T15:00:06Z | Поступление товаров и услуг 00000000024 от 31.08.2020 15:00:06 | 19.04 / 76.05 | 233.33\n2. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 43804.8\n3. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 9776\n4. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 73968\n5. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 94924.8\n6. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 54400", + "assistant_reply_first_line": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.", + "expected_intent": "open_items_by_counterparty_or_contract", + "actual_intent": "open_items_by_counterparty_or_contract", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_open_items_by_party_or_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 8, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-oYPtI0JQKN", + "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": "open_items_by_counterparty_or_contract", + "detected_intent_confidence": "low", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "as_of_date": "2020-12-31", + "contract": "19/15" + }, + "missing_required_filters": [], + "selected_recipe": "address_open_items_by_party_or_contract_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "account_scope_fallback_applied": false, + "anchor_type": "contract", + "anchor_value_raw": "19/15", + "anchor_value_resolved": "19/15", + "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": 285, + "rows_after_recipe_filter": 8, + "rows_materialized": 285, + "rows_matched": 8, + "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-12-31", + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "sanitized_user_message": "а теперь на 2020-12-31", + "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 + }, + "error_code": null, + "error_message": null + }, + { + "index": 24, + "id": "F024", + "question": "а по счету 51 на ту же дату", + "session": "chain_contract_e", + "session_id": "asst-2026-04-02_Address_Nightly_followup_25_19-40-36-chain_contract_e", + "status_code": 200, + "ok": true, + "elapsed_ms": 5847, + "reply_type": "factual", + "trace_id": "address-mqxQBACqVq", + "assistant_reply": "Адресный срез по счету собран (по движениям live MCP).\nСтрок отобрано: 200.\nСумма по отобранным движениям: 31252061.949999988.\n1. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 51 / 62.02 | 3248300\n2. 2020-12-25T12:00:04Z | Списание с расчетного счета 00000000299 от 25.12.2020 12:00:04 | 91.02 / 51 | 179.78\n3. 2020-12-25T12:00:03Z | Списание с расчетного счета 00000000298 от 25.12.2020 12:00:03 | 68.01.1 / 51 | 9945\n4. 2020-12-25T12:00:02Z | Списание с расчетного счета 00000000297 от 25.12.2020 12:00:02 | 70 / 51 | 18800", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 200, + "rows_matched": 200, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-mqxQBACqVq", + "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", + "account_balance_signal_detected", + "as_of_date_from_followup_context", + "address_followup_context_applied" + ], + "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": "account_balance_snapshot", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "account": "51", + "as_of_date": "2020-12-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": 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": "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": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "WW9mpPocw8nX4y", + "llm_decomposition_effective_message": "показать записи по счету 51 на ту же дату", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "а по счету 51 на ту же дату", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "WW9mpPocw8nX4y", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "показать записи по счету 51 на ту же дату" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 25, + "id": "F025", + "question": "а документы по этому же договору за тот же период", + "session": "chain_contract_e", + "session_id": "asst-2026-04-02_Address_Nightly_followup_25_19-40-36-chain_contract_e", + "status_code": 200, + "ok": true, + "elapsed_ms": 7292, + "reply_type": "factual", + "trace_id": "address-w22W7gstfw", + "assistant_reply": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 120.\n1. 2022-09-30T12:00:00Z | Поступление товаров и услуг 00000000010 от 30.09.2022 12:00:00 | 19.04 / 76.05 | 191.67\n2. 2022-09-30T12:00:00Z | Поступление товаров и услуг 00000000010 от 30.09.2022 12:00:00 | 44.01 / 76.05 | 958.33\n3. 2022-08-31T12:00:00Z | Поступление товаров и услуг 00000000009 от 31.08.2022 12:00:00 | 19.04 / 76.05 | 233.33\n4. 2022-08-31T12:00:00Z | Поступление товаров и услуг 00000000009 от 31.08.2022 12:00:00 | 44.01 / 76.05 | 1166.67\n5. 2022-07-31T12:00:00Z | Поступление товаров и услуг 00000000008 от 31.07.2022 12:00:00 | 19.04 / 76.05 | 150.54\n6. 2022-07-31T12:00:00Z | Поступление товаров и услуг 00000000008 от 31.07.2022 12:00:00 | 44.01 / 76.05 | 752.69\n7. 2022-07-31T12:00:00Z | Поступление товаров и услуг 00000000008 от 31.07.2022 12:00:00 | 76.05 / 76.05 | 280\n8. 2022-06-30T00:00:01Z | Поступление товаров и услуг 00000000006 от 30.06.2022 0:00:01 | 19.04 / 76.05 | 186.67\n9. 2022-06-30T00:00:01Z | Поступление товаров и услуг 00000000006 от 30.06.2022 0:00:01 | 44.01 / 76.05 | 933.33\n10. 2022-05-31T00:00:01Z | Поступление товаров и услуг 00000000005 от 31.05.2022 0:00:01 | 19.04 / 76.05 | 233.33\n11. 2022-05-31T00:00:01Z | Поступление товаров и услуг 00000000005 от 31.05.2022 0:00:01 | 44.01 / 76.05 | 1166.67\n12. 2022-04-30T00:00:01Z | Поступление товаров и услуг 00000000004 от 30.04.2022 0:00:01 | 19.04 / 76.05 | 233.33\n13. 2022-04-30T00:00:01Z | Поступление товаров и услуг 00000000004 от 30.04.2022 0:00:01 | 44.01 / 76.05 | 1166.67\n14. 2022-04-18T12:00:00Z | Поступление товаров и услуг 00000000007 от 18.04.2022 12:00:00 | 97.21 / 60.01 | 14790\n15. 2022-04-18T12:00:00Z | Поступление товаров и услуг 00000000007 от 18.04.2022 12:00:00 | 60.01 / 60.02 | 14790\n16. 2022-04-13T12:00:00Z | Поступление на расчетный счет 00000000004 от 13.04.2022 12:00:00 | 51 / 76.05 | 1200000\n17. 2022-03-31T12:00:00Z | Поступление товаров и услуг 00000000001 от 31.03.2022 12:00:00 | 19.04 / 76.05 | 233.33\n18. 2022-03-31T12:00:00Z | Поступление товаров и услуг 00000000001 от 31.03.2022 12:00:00 | 44.01 / 76.05 | 1166.67\n19. 2022-02-28T12:00:00Z | Поступление товаров и услуг 00000000002 от 28.02.2022 12:00:00 | 19.04 / 76.05 | 233.33\n20. 2022-02-28T12:00:00Z | Поступление товаров и услуг 00000000002 от 28.02.2022 12:00:00 | 44.01 / 76.05 | 1166.67\n21. 2022-01-31T12:00:00Z | Поступление товаров и услуг 00000000003 от 31.01.2022 12:00:00 | 19.04 / 76.05 | 233.33\n22. 2022-01-31T12:00:00Z | Поступление товаров и услуг 00000000003 от 31.01.2022 12:00:00 | 44.01 / 76.05 | 1166.67\n23. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 217415\n24. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 114640\n25. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 659320\n26. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 109610\n27. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 162300\n28. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 990830\n29. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 302560\n30. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 105310\n31. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 615320\n32. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 144220\n33. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 56930\n34. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 50000\n35. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 425600\n36. 2022-01-20T12:00:03Z | Поступление на расчетный счет 00000000001 от 20.01.2022 12:00:03 | 51 / 60.02 | 119210\n37. 2022-01-20T12:00:03Z | Поступление на расчетный счет 00000000001 от 20.01.2022 12:00:03 | 51 / 60.02 | 180230\n38. 2022-01-20T12:00:03Z | Поступление на расчетный счет 00000000001 от 20.01.2022 12:00:03 | 51 / 60.02 | 144320\n39. 2022-01-20T12:00:03Z | Поступление на расчетный счет 00000000001 от 20.01.2022 12:00:03 | 51 / 60.02 | 320600\n40. 2022-01-20T12:00:03Z | Поступление на расчетный счет 00000000001 от 20.01.2022 12:00:03 | 51 / 60.02 | 126300\n41. 2021-12-31T12:00:00Z | Поступление товаров и услуг 00000000015 от 31.12.2021 12:00:00 | 19.04 / 76.05 | 233.33\n42. 2021-12-31T12:00:00Z | Поступление товаров и услуг 00000000015 от 31.12.2021 12:00:00 | 44.01 / 76.05 | 1166.67\n43. 2021-11-30T12:00:00Z | Поступление товаров и услуг 00000000014 от 30.11.2021 12:00:00 | 19.04 / 76.05 | 233.33\n44. 2021-11-30T12:00:00Z | Поступление товаров и услуг 00000000014 от 30.11.2021 12:00:00 | 44.01 / 76.05 | 1166.67\n45. 2021-11-10T12:00:07Z | Поступление на расчетный счет 00000000013 от 10.11.2021 12:00:07 | 51 / 62.02 | 20000\n46. 2021-10-31T12:00:00Z | Поступление товаров и услуг 00000000013 от 31.10.2021 12:00:00 | 19.04 / 76.05 | 233.33\n47. 2021-10-31T12:00:00Z | Поступление товаров и услуг 00000000013 от 31.10.2021 12:00:00 | 44.01 / 76.05 | 1166.67\n48. 2021-09-30T12:00:00Z | Поступление товаров и услуг 00000000012 от 30.09.2021 12:00:00 | 19.04 / 76.05 | 233.33\n49. 2021-09-30T12:00:00Z | Поступление товаров и услуг 00000000012 от 30.09.2021 12:00:00 | 44.01 / 76.05 | 1166.67\n50. 2021-09-29T12:00:03Z | Поступление на расчетный счет 00000000012 от 29.09.2021 12:00:03 | 51 / 62.02 | 50000\n51. 2021-08-31T12:00:05Z | Поступление товаров и услуг 00000000011 от 31.08.2021 12:00:05 | 19.04 / 76.05 | 233.33\n52. 2021-08-31T12:00:05Z | Поступление товаров и услуг 00000000011 от 31.08.2021 12:00:05 | 44.01 / 76.05 | 1166.67\n53. 2021-08-31T12:00:04Z | Поступление на расчетный счет 00000000011 от 31.08.2021 12:00:04 | 51 / 62.02 | 120500\n54. 2021-07-31T12:00:00Z | Поступление товаров и услуг 00000000010 от 31.07.2021 12:00:00 | 19.04 / 76.05 | 233.33\n55. 2021-07-31T12:00:00Z | Поступление товаров и услуг 00000000010 от 31.07.2021 12:00:00 | 44.01 / 76.05 | 1166.67\n56. 2021-06-30T00:00:00Z | Поступление товаров и услуг 00000000008 от 30.06.2021 0:00:00 | 19.04 / 76.05 | 233.33\n57. 2021-06-30T00:00:00Z | Поступление товаров и услуг 00000000008 от 30.06.2021 0:00:00 | 44.01 / 76.05 | 1166.67\n58. 2021-06-22T12:00:00Z | Поступление на расчетный счет 00000000010 от 22.06.2021 12:00:00 | 51 / 62.02 | 498630\n59. 2021-06-09T12:00:05Z | Поступление на расчетный счет 00000000009 от 09.06.2021 12:00:05 | 51 / 62.02 | 418960\n60. 2021-05-31T12:00:04Z | Поступление товаров и услуг 00000000006 от 31.05.2021 12:00:04 | 19.04 / 76.05 | 233.33\n61. 2021-05-31T12:00:04Z | Поступление товаров и услуг 00000000006 от 31.05.2021 12:00:04 | 44.01 / 76.05 | 1166.67\n62. 2021-05-17T12:00:00Z | Поступление товаров и услуг 00000000009 от 17.05.2021 12:00:00 | 19.04 / 60.01 | 12000\n63. 2021-05-17T12:00:00Z | Поступление товаров и услуг 00000000009 от 17.05.2021 12:00:00 | 97.21 / 60.01 | 60000\n64. 2021-05-17T12:00:00Z | Поступление товаров и услуг 00000000009 от 17.05.2021 12:00:00 | 60.01 / 60.02 | 72000\n65. 2021-04-30T12:00:00Z | Поступление товаров и услуг 00000000005 от 30.04.2021 12:00:00 | 19.04 / 76.05 | 233.33\n66. 2021-04-30T12:00:00Z | Поступление товаров и услуг 00000000005 от 30.04.2021 12:00:00 | 44.01 / 76.05 | 1166.67\n67. 2021-04-28T12:00:08Z | Поступление на расчетный счет 00000000008 от 28.04.2021 12:00:08 | 51 / 62.02 | 564300\n68. 2021-04-22T12:00:00Z | Поступление на расчетный счет 00000000007 от 22.04.2021 12:00:00 | 51 / 62.02 | 982420\n69. 2021-04-13T12:00:11Z | Поступление на расчетный счет 00000000006 от 13.04.2021 12:00:11 | 51 / 62.02 | 1882400\n70. 2021-04-07T12:00:00Z | Поступление товаров и услуг 00000000016 от 07.04.2021 12:00:00 | 97.21 / 60.01 | 11900\n71. 2021-04-07T12:00:00Z | Поступление товаров и услуг 00000000016 от 07.04.2021 12:00:00 | 60.01 / 60.02 | 11900\n72. 2021-03-31T23:59:59Z | Поступление товаров и услуг 00000000003 от 31.03.2021 23:59:59 | 19.04 / 76.05 | 233.33\n73. 2021-03-31T23:59:59Z | Поступление товаров и услуг 00000000003 от 31.03.2021 23:59:59 | 44.01 / 76.05 | 1166.67\n74. 2021-03-25T12:00:02Z | Поступление на расчетный счет 00000000005 от 25.03.2021 12:00:02 | 51 / 62.02 | 644315\n75. 2021-03-24T12:00:03Z | Поступление на расчетный счет 00000000004 от 24.03.2021 12:00:03 | 51 / 62.02 | 1219990\n76. 2021-03-22T12:00:02Z | Реализация товаров и услуг 00000000001 от 22.03.2021 12:00:02 | 62.01 / 90.01.1 | 598950\n77. 2021-03-22T12:00:02Z | Реализация товаров и услуг 00000000001 от 22.03.2021 12:00:02 | 62.02 / 62.01 | 95274\n78. 2021-03-22T12:00:02Z | Реализация товаров и услуг 00000000001 от 22.03.2021 12:00:02 | 62.02 / 62.01 | 38900\n79. 2021-03-22T12:00:02Z | Реализация товаров и услуг 00000000001 от 22.03.2021 12:00:02 | 62.02 / 62.01 | 464776\n80. 2021-03-18T12:00:00Z | Поступление на расчетный счет 00000000003 от 18.03.2021 12:00:00 | 51 / 62.02 | 1425310\n81. 2021-03-12T12:00:03Z | Поступление на расчетный счет 00000000002 от 12.03.2021 12:00:03 | 51 / 62.02 | 214600\n82. 2021-03-09T00:00:00Z | Поступление товаров и услуг 00000000001 от 09.03.2021 0:00:00 | 19.03 / 60.01 | 88415\n83. 2021-03-09T00:00:00Z | Поступление товаров и услуг 00000000001 от 09.03.2021 0:00:00 | 41.01 / 60.01 | 442075\n84. 2021-02-28T23:59:59Z | Поступление товаров и услуг 00000000004 от 28.02.2021 23:59:59 | 19.04 / 76.05 | 233.33\n85. 2021-02-28T23:59:59Z | Поступление товаров и услуг 00000000004 от 28.02.2021 23:59:59 | 44.01 / 76.05 | 1166.67\n86. 2021-02-19T12:00:01Z | Поступление на расчетный счет 00000000001 от 19.02.2021 12:00:01 | 51 / 62.02 | 518600\n87. 2021-01-31T23:59:59Z | Поступление товаров и услуг 00000000002 от 31.01.2021 23:59:59 | 19.04 / 76.05 | 233.33\n88. 2021-01-31T23:59:59Z | Поступление товаров и услуг 00000000002 от 31.01.2021 23:59:59 | 44.01 / 76.05 | 1166.67\n89. 2020-12-31T23:59:59Z | Поступление товаров и услуг 00000000034 от 31.12.2020 23:59:59 | 19.04 / 76.05 | 233.33\n90. 2020-12-31T23:59:59Z | Поступление товаров и услуг 00000000034 от 31.12.2020 23:59:59 | 44.01 / 76.05 | 1166.67\n91. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 51 / 62.02 | 3248300\n92. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 51 / 62.02 | 216600\n93. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 51 / 62.02 | 200000\n94. 2020-11-30T23:59:59Z | Поступление товаров и услуг 00000000033 от 30.11.2020 23:59:59 | 19.04 / 76.05 | 233.33\n95. 2020-11-30T23:59:59Z | Поступление товаров и услуг 00000000033 от 30.11.2020 23:59:59 | 44.01 / 76.05 | 1166.67\n96. 2020-11-30T12:00:08Z | Реализация товаров и услуг 00000000010 от 30.11.2020 12:00:08 | 62.01 / 90.01.1 | 118552\n97. 2020-11-30T12:00:08Z | Реализация товаров и услуг 00000000010 от 30.11.2020 12:00:08 | 62.01 / 90.01.1 | 458472\n98. 2020-11-30T12:00:08Z | Реализация товаров и услуг 00000000010 от 30.11.2020 12:00:08 | 62.02 / 62.01 | 577024\n99. 2020-11-30T12:00:07Z | Поступление на расчетный счет 00000000041 от 30.11.2020 12:00:07 | 51 / 62.02 | 38900\n100. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 900000\n101. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 144749\n102. 2020-11-20T12:00:00Z | Поступление товаров и услуг 00000000030 от 20.11.2020 12:00:00 | 19.03 / 60.01 | 1450\n103. 2020-11-20T12:00:00Z | Поступление товаров и услуг 00000000030 от 20.11.2020 12:00:00 | 41.01 / 60.01 | 7250\n104. 2020-11-20T12:00:00Z | Поступление товаров и услуг 00000000030 от 20.11.2020 12:00:00 | 60.01 / 60.02 | 8700\n105. 2020-11-19T12:00:04Z | Поступление на расчетный счет 00000000039 от 19.11.2020 12:00:04 | 51 / 62.02 | 1041800\n106. 2020-11-19T12:00:04Z | Поступление на расчетный счет 00000000039 от 19.11.2020 12:00:04 | 51 / 62.01 | 2278800\n107. 2020-11-18T12:00:05Z | Поступление на расчетный счет 00000000038 от 18.11.2020 12:00:05 | 51 / 62.01 | 745300\n108. 2020-11-18T12:00:04Z | Поступление на расчетный счет 00000000037 от 18.11.2020 12:00:04 | 51 / 62.01 | 320000\n109. 2020-11-13T12:00:03Z | Поступление на расчетный счет 00000000036 от 13.11.2020 12:00:03 | 51 / 62.01 | 313600\n110. 2020-11-10T15:39:14Z | Реализация товаров и услуг 00000000009 от 10.11.2020 15:39:14 | 62.01 / 90.01.1 | 4161000\n111. 2020-11-10T15:39:14Z | Реализация товаров и услуг 00000000009 от 10.11.2020 15:39:14 | 62.02 / 62.01 | 328300\n112. 2020-11-10T15:39:14Z | Реализация товаров и услуг 00000000009 от 10.11.2020 15:39:14 | 62.02 / 62.01 | 175000\n113. 2020-11-10T15:39:13Z | Поступление на расчетный счет 00000000035 от 10.11.2020 15:39:13 | 51 / 62.02 | 328300\n114. 2020-11-09T12:00:01Z | Поступление товаров и услуг 00000000031 от 09.11.2020 12:00:01 | 41.01 / 60.01 | 2229840\n115. 2020-10-31T23:59:59Z | Поступление товаров и услуг 00000000032 от 31.10.2020 23:59:59 | 19.04 / 76.05 | 233.33\n116. 2020-10-31T23:59:59Z | Поступление товаров и услуг 00000000032 от 31.10.2020 23:59:59 | 44.01 / 76.05 | 1166.67\n117. 2020-10-26T12:00:00Z | Поступление на расчетный счет 00000000034 от 26.10.2020 12:00:00 | 51 / 62.02 | 175000\n118. 2020-10-14T12:00:00Z | Поступление на расчетный счет 00000000033 от 14.10.2020 12:00:00 | 51 / 60.01 | 160000\n119. 2020-09-30T12:00:04Z | Поступление товаров и услуг 00000000025 от 30.09.2020 12:00:04 | 19.04 / 76.05 | 233.33\n120. 2020-09-30T12:00:04Z | Поступление товаров и услуг 00000000025 от 30.09.2020 12:00:04 | 44.01 / 76.05 | 1166.67", + "assistant_reply_first_line": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "materialized_but_not_anchor_matched", + "match_failure_reason": "contract_anchor_not_matched_in_materialized_rows", + "rows_fetched": 1000, + "rows_matched": 120, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-w22W7gstfw", + "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", + "anchor_not_matched_fallback_rows" + ], + "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": "за указанный период" + }, + "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": "за указанный период", + "anchor_value_resolved": "за указанный период", + "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": "matched_non_empty", + "rows_fetched": 1000, + "raw_rows_received": 1000, + "rows_after_account_scope": 416, + "rows_after_recipe_filter": 0, + "rows_materialized": 416, + "rows_matched": 120, + "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": "0uip-_eS1RVcQ9", + "llm_decomposition_effective_message": "документы по договору за указанный период", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "а документы по этому же договору за тот же период", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "0uip-_eS1RVcQ9", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "документы по договору за указанный период" + } + }, + "error_code": null, + "error_message": null + } + ] +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterGeneral5Fix/2026-04-02_Address_Nightly_followup_25_19-40-36/response_audit.md b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterGeneral5Fix/2026-04-02_Address_Nightly_followup_25_19-40-36/response_audit.md new file mode 100644 index 0000000..437cb74 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterGeneral5Fix/2026-04-02_Address_Nightly_followup_25_19-40-36/response_audit.md @@ -0,0 +1,29 @@ +# Response Audit: 2026-04-02_Address_Nightly_followup_25_19-40-36 + +| id | strict | route_health | reply_type | intent | limited_reason | question | assistant_first_line | +|---|---|---|---|---|---|---|---| +| F001 | True | ok_or_factual | factual | list_documents_by_counterparty | None | Покажи документы по СВК за 2020 | Собран список документов по контрагенту (live address lane). | +| F002 | True | ok_or_factual | factual | list_documents_by_counterparty | None | а теперь только за май 2020 | По окну 2020-05-01..2020-05-31 строк не найдено; показаны ближайшие доступные данные 2020-07-27..2021-11-10. | +| F003 | True | ok_or_factual | factual | account_balance_snapshot | None | а по счету 60.01 на ту же дату | Адресный срез по счету собран (по движениям live MCP). | +| F004 | True | ok_or_factual | factual | account_balance_snapshot | None | а на ту же дату по 62.01 | Адресный срез по счету собран (по движениям live MCP). | +| F005 | True | ok_or_factual | factual | documents_forming_balance | None | раскрой остаток по 62.01 документами на ту же дату | Собран drilldown документов, формирующих остаток по счету на указанную дату. | +| F006 | True | ok_or_factual | factual | bank_operations_by_counterparty | None | Покажи банковские операции по СВК за 2020 | Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу. | +| F007 | True | ok_or_factual | factual | bank_operations_by_counterparty | None | а теперь только ноябрь 2020 | Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу. | +| F008 | True | ok_or_factual | factual | list_documents_by_counterparty | None | а теперь документы по нему | Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу. | +| F009 | True | ok_or_factual | factual | account_balance_snapshot | None | и остаток по 51 на ту же дату | Адресный срез по счету собран (по движениям live MCP). | +| F010 | True | ok_or_factual | factual | account_balance_snapshot | None | а теперь только май 2020 | Адресный срез по счету собран (по движениям live MCP). | +| F011 | True | partial_non_blocking | partial_coverage | account_balance_snapshot | empty_match | Покажи сальдо по счету 60 на 2020-12-31 | В live-данных по текущему фильтру записи не найдены. | +| F012 | True | ok_or_factual | factual | account_balance_snapshot | None | а теперь только май 2020 | Адресный срез по счету собран (по движениям live MCP). | +| F013 | True | ok_or_factual | factual | account_balance_snapshot | None | а на ту же дату по 62 | Адресный срез по счету собран (по движениям live MCP). | +| F014 | True | ok_or_factual | factual | documents_forming_balance | None | раскрой 62 документами на ту же дату | Собран drilldown документов, формирующих остаток по счету на указанную дату. | +| F015 | True | partial_non_blocking | partial_coverage | account_balance_snapshot | empty_match | вернись на 2020-12-31 по 60 | В live-данных по текущему фильтру записи не найдены. | +| F016 | True | ok_or_factual | factual | list_documents_by_contract | None | Покажи документы по договору 19/15 за 2020 | Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк. | +| F017 | True | ok_or_factual | factual | bank_operations_by_contract | None | а теперь банковские операции | Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк. | +| F018 | True | ok_or_factual | factual | bank_operations_by_contract | None | а теперь только за 2020 | Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк. | +| F019 | True | ok_or_factual | factual | open_items_by_counterparty_or_contract | None | есть ли открытые позиции по договору 19/15 на 2020-12-31 | Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк. | +| F020 | True | ok_or_factual | factual | list_documents_by_contract | None | покажи документы по этому же договору | Собран список документов по договору (live address lane). | +| F021 | True | ok_or_factual | factual | bank_operations_by_contract | None | Покажи банковские операции по договору 19/15 | Собран список банковских операций по договору (live address lane). | +| F022 | True | ok_or_factual | factual | open_items_by_counterparty_or_contract | None | а теперь открытые позиции по нему | Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк. | +| F023 | True | ok_or_factual | factual | open_items_by_counterparty_or_contract | None | а теперь на 2020-12-31 | Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк. | +| F024 | True | ok_or_factual | factual | account_balance_snapshot | None | а по счету 51 на ту же дату | Адресный срез по счету собран (по движениям live MCP). | +| F025 | True | ok_or_factual | factual | list_documents_by_contract | None | а документы по этому же договору за тот же период | Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу. | diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterGeneral5Fix/2026-04-02_Address_Nightly_followup_25_19-40-36/run_summary.json b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterGeneral5Fix/2026-04-02_Address_Nightly_followup_25_19-40-36/run_summary.json new file mode 100644 index 0000000..9563f4b --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterGeneral5Fix/2026-04-02_Address_Nightly_followup_25_19-40-36/run_summary.json @@ -0,0 +1,55 @@ +{ + "run_id": "2026-04-02_Address_Nightly_followup_25_19-40-36", + "generated_at": "2026-04-02T19:42:39", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\address_followup_context_chains_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", + "strict_policy": "route", + "totals": { + "questions_total": 25, + "ok_200_count": 25, + "semantic_pass_count": 25, + "semantic_pass_rate": 1.0, + "route_pass_count": 25, + "route_pass_rate": 1.0, + "strict_pass_count": 25, + "strict_pass_rate": 1.0, + "factual_count": 23, + "partial_coverage_count": 2, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_applied_count": 14, + "avg_elapsed_ms": 4918.7 + }, + "distributions": { + "reply_type": { + "factual": 23, + "partial_coverage": 2 + }, + "actual_intent": { + "list_documents_by_counterparty": 3, + "account_balance_snapshot": 9, + "documents_forming_balance": 2, + "bank_operations_by_counterparty": 2, + "list_documents_by_contract": 3, + "bank_operations_by_contract": 3, + "open_items_by_counterparty_or_contract": 3 + }, + "actual_mode": { + "address_query": 25 + }, + "mcp_call_status": { + "matched_non_empty": 23, + "no_raw_rows": 2 + }, + "limited_reason_category": { + "empty_match": 2 + }, + "route_health": { + "ok_or_factual": 23, + "partial_non_blocking": 2 + } + } +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterGeneral5Fix/2026-04-02_Address_Nightly_followup_25_19-40-36_comparator_report.json b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterGeneral5Fix/2026-04-02_Address_Nightly_followup_25_19-40-36_comparator_report.json new file mode 100644 index 0000000..900f996 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterGeneral5Fix/2026-04-02_Address_Nightly_followup_25_19-40-36_comparator_report.json @@ -0,0 +1,67 @@ +{ + "generated_at": "2026-04-02T19:42:39", + "overall_pass": true, + "baseline": { + "summary_path": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\runs\\2026-04-02_Address_Followup_Context_Chains_2026-04-02_19-15-Run5\\run_summary.json", + "run_id": "2026-04-02_Address_Followup_Context_Chains_2026-04-02_19-15-Run5", + "questions_total": 25, + "strict_pass_rate": 1.0, + "route_pass_rate": 1.0, + "execution_error_count": 0, + "false_factual_rate": 0.0, + "notes": [ + "execution_error_count derived as http_error_count + limited_reason_category.execution_error", + "false_factual_rate derived from false_factual_count/questions_total" + ] + }, + "candidate": { + "summary_path": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\runs\\2026-04-02_Address_Nightly_Regression_AfterGeneral5Fix\\2026-04-02_Address_Nightly_followup_25_19-40-36\\run_summary.json", + "run_id": "2026-04-02_Address_Nightly_followup_25_19-40-36", + "questions_total": 25, + "strict_pass_rate": 1.0, + "route_pass_rate": 1.0, + "execution_error_count": 0, + "false_factual_rate": 0.0, + "notes": [ + "execution_error_count derived as http_error_count + limited_reason_category.execution_error", + "false_factual_rate derived from false_factual_count/questions_total" + ] + }, + "checks": [ + { + "metric": "strict_pass_rate", + "passed": true, + "baseline": 1.0, + "candidate": 1.0, + "rule": "candidate >= baseline" + }, + { + "metric": "route_pass_rate", + "passed": true, + "baseline": 1.0, + "candidate": 1.0, + "rule": "candidate >= baseline" + }, + { + "metric": "execution_error_count", + "passed": true, + "baseline": 0, + "candidate": 0, + "rule": "candidate <= baseline" + }, + { + "metric": "false_factual_rate", + "passed": true, + "baseline": 0.0, + "candidate": 0.0, + "rule": "candidate <= baseline" + }, + { + "metric": "questions_total_match", + "passed": true, + "baseline": 25, + "candidate": 25, + "rule": "candidate == baseline" + } + ] +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterGeneral5Fix/2026-04-02_Address_Nightly_followup_25_19-40-36_validator_report.json b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterGeneral5Fix/2026-04-02_Address_Nightly_followup_25_19-40-36_validator_report.json new file mode 100644 index 0000000..bb56144 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterGeneral5Fix/2026-04-02_Address_Nightly_followup_25_19-40-36_validator_report.json @@ -0,0 +1,23 @@ +{ + "generated_at": "2026-04-02T19:42:39", + "total": 1, + "passed": 1, + "failed": 0, + "results": [ + { + "run_dir": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\runs\\2026-04-02_Address_Nightly_Regression_AfterGeneral5Fix\\2026-04-02_Address_Nightly_followup_25_19-40-36", + "valid": true, + "errors": [], + "warnings": [], + "metrics": { + "run_id": "2026-04-02_Address_Nightly_followup_25_19-40-36", + "questions_total": 25, + "route_pass_rate": 1.0, + "strict_pass_rate": 1.0, + "http_error_count": 0, + "rows_count": 25, + "failures_count": 0 + } + } + ] +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterGeneral5Fix/2026-04-02_Address_Nightly_stress_102_19-30-01/README.md b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterGeneral5Fix/2026-04-02_Address_Nightly_stress_102_19-30-01/README.md new file mode 100644 index 0000000..094bfa8 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterGeneral5Fix/2026-04-02_Address_Nightly_stress_102_19-30-01/README.md @@ -0,0 +1,28 @@ +# 2026-04-02_Address_Nightly_stress_102_19-30-01 + +Generated at: 2026-04-02T19:40:36 +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 +Strict policy: route + +## Totals +- questions_total: 102 +- ok_200_count: 102 +- semantic_pass_count: 102 +- semantic_pass_rate: 1.0 +- route_pass_count: 102 +- route_pass_rate: 1.0 +- strict_pass_count: 102 +- strict_pass_rate: 1.0 +- factual_count: 96 +- partial_coverage_count: 6 +- clarification_required_count: 0 +- http_error_count: 0 +- llm_decomposition_applied_count: 80 +- avg_elapsed_ms: 6219.8 + +## Files +- run_summary.json +- full_live_results.json +- failures_only.json diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterGeneral5Fix/2026-04-02_Address_Nightly_stress_102_19-30-01/failures_only.json b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterGeneral5Fix/2026-04-02_Address_Nightly_stress_102_19-30-01/failures_only.json new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterGeneral5Fix/2026-04-02_Address_Nightly_stress_102_19-30-01/failures_only.json @@ -0,0 +1 @@ +[] diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterGeneral5Fix/2026-04-02_Address_Nightly_stress_102_19-30-01/full_live_results.json b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterGeneral5Fix/2026-04-02_Address_Nightly_stress_102_19-30-01/full_live_results.json new file mode 100644 index 0000000..46f0f94 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterGeneral5Fix/2026-04-02_Address_Nightly_stress_102_19-30-01/full_live_results.json @@ -0,0 +1,15393 @@ +{ + "run_id": "2026-04-02_Address_Nightly_stress_102_19-30-01", + "generated_at": "2026-04-02T19:40:36", + "summary": { + "run_id": "2026-04-02_Address_Nightly_stress_102_19-30-01", + "generated_at": "2026-04-02T19:40:36", + "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", + "strict_policy": "route", + "totals": { + "questions_total": 102, + "ok_200_count": 102, + "semantic_pass_count": 102, + "semantic_pass_rate": 1.0, + "route_pass_count": 102, + "route_pass_rate": 1.0, + "strict_pass_count": 102, + "strict_pass_rate": 1.0, + "factual_count": 96, + "partial_coverage_count": 6, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_applied_count": 80, + "avg_elapsed_ms": 6219.8 + }, + "distributions": { + "reply_type": { + "factual": 96, + "partial_coverage": 6 + }, + "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": { + "matched_non_empty": 96, + "no_raw_rows": 6 + }, + "limited_reason_category": { + "empty_match": 6 + }, + "route_health": { + "ok_or_factual": 96, + "partial_non_blocking": 6 + } + } + }, + "rows": [ + { + "index": 1, + "id": "S001", + "question": "свк доки за 2020 покаж пж", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_19-30-01-s001", + "status_code": 200, + "ok": true, + "elapsed_ms": 8903, + "reply_type": "factual", + "trace_id": "address-NmwzZmaPnf", + "assistant_reply": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.\nСобран список документов по контрагенту (live address lane).\nСтрок отобрано: 5.\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-16T16:20:52Z | Списание с расчетного счета 00000000294 от 16.12.2020 16:20:52 | 0 / 0 | 3849.26 | аналитика: УФК по г. Москве (для ГУ - Отделения ПФР по г. Москве и МО)\n4. 2020-12-16T16:20:51Z | Списание с расчетного счета 00000000293 от 16.12.2020 16:20:51 | 0 / 0 | 60 | аналитика: СБЕРБАНК, ПАО\n5. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "assistant_reply_first_line": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "rows_fetched": 20, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-NmwzZmaPnf", + "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", + "anchor_not_matched_fallback_rows" + ], + "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": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "mcp_call_status": "matched_non_empty", + "rows_fetched": 20, + "raw_rows_received": 20, + "rows_after_account_scope": 5, + "rows_after_recipe_filter": 0, + "rows_materialized": 5, + "rows_matched": 5, + "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": "bmPOiN2894WlBR", + "llm_decomposition_effective_message": "Показать сводку документов за 2020 год.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "свк доки за 2020 покаж", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "bmPOiN2894WlBR", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Показать сводку документов за 2020 год." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 2, + "id": "S002", + "question": "покеж все доки по свк за 20 год", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_19-30-01-s002", + "status_code": 200, + "ok": true, + "elapsed_ms": 6757, + "reply_type": "factual", + "trace_id": "address-U_uy2L-ydf", + "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 | аналитика: Группа", + "assistant_reply_first_line": "Собран список документов по контрагенту (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 20, + "rows_matched": 3, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-U_uy2L-ydf", + "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": "kjNTw36G7PFZ_m", + "llm_decomposition_effective_message": "показать все документы по СВК за 2020 год", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "покеж все доки по свк за 2020 год", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "kjNTw36G7PFZ_m", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "показать все документы по СВК за 2020 год" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 3, + "id": "S003", + "question": "дай список документов по свк за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_19-30-01-s003", + "status_code": 200, + "ok": true, + "elapsed_ms": 6109, + "reply_type": "factual", + "trace_id": "address-rUuZHUzn76", + "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 | аналитика: Группа", + "assistant_reply_first_line": "Собран список документов по контрагенту (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 20, + "rows_matched": 3, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-rUuZHUzn76", + "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": "oKci-4upQAXxuG", + "llm_decomposition_effective_message": "получить список документов по СВК за 2020 год", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "дай список документов по свк за 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "oKci-4upQAXxuG", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "получить список документов по СВК за 2020 год" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 4, + "id": "S004", + "question": "какие у свк есть доки за 2020?", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_19-30-01-s004", + "status_code": 200, + "ok": true, + "elapsed_ms": 8404, + "reply_type": "factual", + "trace_id": "address-lIVlRYYrCH", + "assistant_reply": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.\nСобран список документов по контрагенту (live address lane).\nСтрок отобрано: 5.\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-16T16:20:52Z | Списание с расчетного счета 00000000294 от 16.12.2020 16:20:52 | 0 / 0 | 3849.26 | аналитика: УФК по г. Москве (для ГУ - Отделения ПФР по г. Москве и МО)\n4. 2020-12-16T16:20:51Z | Списание с расчетного счета 00000000293 от 16.12.2020 16:20:51 | 0 / 0 | 60 | аналитика: СБЕРБАНК, ПАО\n5. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "assistant_reply_first_line": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "rows_fetched": 20, + "rows_matched": 5, + "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, + "debug_payload": { + "trace_id": "address-lIVlRYYrCH", + "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", + "documents_by_counterparty_signal_detected", + "anchor_not_matched_fallback_rows" + ], + "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": "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": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "mcp_call_status": "matched_non_empty", + "rows_fetched": 20, + "raw_rows_received": 20, + "rows_after_account_scope": 5, + "rows_after_recipe_filter": 0, + "rows_materialized": 5, + "rows_matched": 5, + "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": "zpTBVeyTGePKr2", + "llm_decomposition_effective_message": "какие у свк есть доки за 2020?", + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "sanitized_user_message": "какие у свк есть доки за 2020?", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "zpTBVeyTGePKr2", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "какие у свк есть доки за 2020?" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 5, + "id": "S005", + "question": "че по свк по докам за 2020 год", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_19-30-01-s005", + "status_code": 200, + "ok": true, + "elapsed_ms": 719, + "reply_type": "factual", + "trace_id": "address-aDArPHDAX0", + "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 | аналитика: Группа", + "assistant_reply_first_line": "Собран список документов по контрагенту (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 20, + "rows_matched": 3, + "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", + "debug_payload": { + "trace_id": "address-aDArPHDAX0", + "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": false, + "llm_provider_used": "local", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "документы по контрагенту свк за 2020 год", + "llm_decomposition_reason": "fallback_rule_applied_without_llm", + "fallback_rule_hit": "documents_counterparty_year_rewrite", + "sanitized_user_message": "че по свк по докам за 2020 год", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + }, + "error_code": null, + "error_message": null + }, + { + "index": 6, + "id": "S006", + "question": "ёпт покажи доки по свк за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_19-30-01-s006", + "status_code": 200, + "ok": true, + "elapsed_ms": 6101, + "reply_type": "factual", + "trace_id": "address--H9i6Z9bP7", + "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 | аналитика: Группа", + "assistant_reply_first_line": "Собран список документов по контрагенту (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 20, + "rows_matched": 3, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address--H9i6Z9bP7", + "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": "qt7fT_CYbQrdgc", + "llm_decomposition_effective_message": "покажи документы по СВК за 2020 год", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "покажи доки по свк за 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "qt7fT_CYbQrdgc", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "покажи документы по СВК за 2020 год" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 7, + "id": "S007", + "question": "бля, доки свк 2020 вывали", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_19-30-01-s007", + "status_code": 200, + "ok": true, + "elapsed_ms": 7134, + "reply_type": "factual", + "trace_id": "address-Zj3uLn4MEh", + "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 | аналитика: Группа", + "assistant_reply_first_line": "Собран список документов по контрагенту (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 20, + "rows_matched": 3, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-Zj3uLn4MEh", + "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": "TSqynLyJNv4Yjz", + "llm_decomposition_effective_message": "документы СВК 2020 вывалились", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "доки свк 2020 вывали", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "TSqynLyJNv4Yjz", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "документы СВК 2020 вывалились" + } + }, + "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_Nightly_stress_102_19-30-01-s008", + "status_code": 200, + "ok": true, + "elapsed_ms": 6083, + "reply_type": "factual", + "trace_id": "address-Vlc0SBmh2W", + "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 | аналитика: Группа", + "assistant_reply_first_line": "Собран список документов по контрагенту (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 20, + "rows_matched": 3, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-Vlc0SBmh2W", + "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": "77H728YFLtuRg9", + "llm_decomposition_effective_message": "СВК документы за 2020 год, пожалуйста.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "svk документы for 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "77H728YFLtuRg9", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "СВК документы за 2020 год, пожалуйста." + } + }, + "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_Nightly_stress_102_19-30-01-s009", + "status_code": 200, + "ok": true, + "elapsed_ms": 8477, + "reply_type": "factual", + "trace_id": "address-Kv-gJ5r6Tf", + "assistant_reply": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.\nСобран список документов по контрагенту (live address lane).\nСтрок отобрано: 5.\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-16T16:20:52Z | Списание с расчетного счета 00000000294 от 16.12.2020 16:20:52 | 0 / 0 | 3849.26 | аналитика: УФК по г. Москве (для ГУ - Отделения ПФР по г. Москве и МО)\n4. 2020-12-16T16:20:51Z | Списание с расчетного счета 00000000293 от 16.12.2020 16:20:51 | 0 / 0 | 60 | аналитика: СБЕРБАНК, ПАО\n5. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "assistant_reply_first_line": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "rows_fetched": 20, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-Kv-gJ5r6Tf", + "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", + "anchor_not_matched_fallback_rows" + ], + "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": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "mcp_call_status": "matched_non_empty", + "rows_fetched": 20, + "raw_rows_received": 20, + "rows_after_account_scope": 5, + "rows_after_recipe_filter": 0, + "rows_materialized": 5, + "rows_matched": 5, + "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": "weFCN4GYZxqw9y", + "llm_decomposition_effective_message": "документы по контрагентам за год 2020", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "документы by counterparty svk year 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "weFCN4GYZxqw9y", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "документы по контрагентам за год 2020" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 10, + "id": "S010", + "question": "по контрагенту свк покаж документы за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_19-30-01-s010", + "status_code": 200, + "ok": true, + "elapsed_ms": 6792, + "reply_type": "factual", + "trace_id": "address-FQUHRDx61g", + "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 | аналитика: Группа", + "assistant_reply_first_line": "Собран список документов по контрагенту (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 20, + "rows_matched": 3, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-FQUHRDx61g", + "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": "cRqfNgDX4KJYuH", + "llm_decomposition_effective_message": "Показать документы по контрагенту СВК за 2020 год.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "по контрагенту свк покаж документы за 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "cRqfNgDX4KJYuH", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Показать документы по контрагенту СВК за 2020 год." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 11, + "id": "S011", + "question": "плс доки по свк 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_19-30-01-s011", + "status_code": 200, + "ok": true, + "elapsed_ms": 9381, + "reply_type": "factual", + "trace_id": "address-ZUsqm5eNcy", + "assistant_reply": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.\nСобран список документов по контрагенту (live address lane).\nСтрок отобрано: 5.\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-16T16:20:52Z | Списание с расчетного счета 00000000294 от 16.12.2020 16:20:52 | 0 / 0 | 3849.26 | аналитика: УФК по г. Москве (для ГУ - Отделения ПФР по г. Москве и МО)\n4. 2020-12-16T16:20:51Z | Списание с расчетного счета 00000000293 от 16.12.2020 16:20:51 | 0 / 0 | 60 | аналитика: СБЕРБАНК, ПАО\n5. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "assistant_reply_first_line": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "rows_fetched": 20, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-ZUsqm5eNcy", + "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", + "anchor_not_matched_fallback_rows" + ], + "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": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "mcp_call_status": "matched_non_empty", + "rows_fetched": 20, + "raw_rows_received": 20, + "rows_after_account_scope": 5, + "rows_after_recipe_filter": 0, + "rows_materialized": 5, + "rows_matched": 5, + "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": "5GOoeM-q9G0gCW", + "llm_decomposition_effective_message": "Пожалуйста, предоставьте документы по сводной выручке (СВК) за 2020 год.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "доки по свк 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "5GOoeM-q9G0gCW", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Пожалуйста, предоставьте документы по сводной выручке (СВК) за 2020 год." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 12, + "id": "S012", + "question": "свк док за 2020 гони", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_19-30-01-s012", + "status_code": 200, + "ok": true, + "elapsed_ms": 758, + "reply_type": "factual", + "trace_id": "address-8vGkLoh93L", + "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 | аналитика: Группа", + "assistant_reply_first_line": "Собран список документов по контрагенту (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 20, + "rows_matched": 3, + "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", + "debug_payload": { + "trace_id": "address-8vGkLoh93L", + "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": false, + "llm_provider_used": "local", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "документы по контрагенту свк за 2020 год", + "llm_decomposition_reason": "fallback_rule_applied_without_llm", + "fallback_rule_hit": "documents_counterparty_year_rewrite", + "sanitized_user_message": "свк док за 2020 гони", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + }, + "error_code": null, + "error_message": null + }, + { + "index": 13, + "id": "S013", + "question": "по свк банковские операции за 2020 покаж", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_19-30-01-s013", + "status_code": 200, + "ok": true, + "elapsed_ms": 7160, + "reply_type": "factual", + "trace_id": "address-tMWgdVhb6z", + "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 | аналитика: Группа", + "assistant_reply_first_line": "Собран список банковских операций по контрагенту (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 20, + "rows_matched": 3, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-tMWgdVhb6z", + "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": "b6_yjokr1p1vSt", + "llm_decomposition_effective_message": "показать банковские операции по СВК за 2020 год", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "по свк банковские операции за 2020 покаж", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "b6_yjokr1p1vSt", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "показать банковские операции по СВК за 2020 год" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 14, + "id": "S014", + "question": "свк выписка банка 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_19-30-01-s014", + "status_code": 200, + "ok": true, + "elapsed_ms": 7058, + "reply_type": "factual", + "trace_id": "address-n0w6kDGSWA", + "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 | аналитика: Группа", + "assistant_reply_first_line": "Собран список банковских операций по контрагенту (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 20, + "rows_matched": 3, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-n0w6kDGSWA", + "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", + "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": "DOCUMENT_LIST", + "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": "EJc1bJ5PZXge0U", + "llm_decomposition_effective_message": "СВК выписка банка за 2020 год.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "свк выписка банка 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "EJc1bJ5PZXge0U", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "СВК выписка банка за 2020 год." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 15, + "id": "S015", + "question": "платежи по свк за 2020 выведи", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_19-30-01-s015", + "status_code": 200, + "ok": true, + "elapsed_ms": 7116, + "reply_type": "factual", + "trace_id": "address-ljuZH2At-o", + "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 | аналитика: Группа", + "assistant_reply_first_line": "Собран список банковских операций по контрагенту (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 20, + "rows_matched": 3, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-ljuZH2At-o", + "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", + "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": "DOCUMENT_LIST", + "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": "XD6afdPELX9uo4", + "llm_decomposition_effective_message": "Платежи по СВК за 2020 год выведите.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "платежи по свк за 2020 выведи", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "XD6afdPELX9uo4", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Платежи по СВК за 2020 год выведите." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 16, + "id": "S016", + "question": "оплаты по свк за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_19-30-01-s016", + "status_code": 200, + "ok": true, + "elapsed_ms": 6109, + "reply_type": "factual", + "trace_id": "address-L4pooyRg8v", + "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 | аналитика: Группа", + "assistant_reply_first_line": "Собран список банковских операций по контрагенту (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 20, + "rows_matched": 3, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-L4pooyRg8v", + "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", + "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": "medium", + "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": "J_TCi83EFZCJm1", + "llm_decomposition_effective_message": "оплаты по СВК за 2020 год", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "оплаты по свк за 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "J_TCi83EFZCJm1", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "оплаты по СВК за 2020 год" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 17, + "id": "S017", + "question": "свк банк опер за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_19-30-01-s017", + "status_code": 200, + "ok": true, + "elapsed_ms": 8432, + "reply_type": "factual", + "trace_id": "address-XyGI_oa5Qh", + "assistant_reply": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.\nСобран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 5.\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-16T16:20:52Z | Списание с расчетного счета 00000000294 от 16.12.2020 16:20:52 | 0 / 0 | 3849.26 | аналитика: УФК по г. Москве (для ГУ - Отделения ПФР по г. Москве и МО)\n4. 2020-12-16T16:20:51Z | Списание с расчетного счета 00000000293 от 16.12.2020 16:20:51 | 0 / 0 | 60 | аналитика: СБЕРБАНК, ПАО\n5. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "assistant_reply_first_line": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "rows_fetched": 20, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-XyGI_oa5Qh", + "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", + "bank_ops_by_counterparty_signal_detected", + "anchor_not_matched_fallback_rows" + ], + "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_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": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "mcp_call_status": "matched_non_empty", + "rows_fetched": 20, + "raw_rows_received": 20, + "rows_after_account_scope": 5, + "rows_after_recipe_filter": 0, + "rows_materialized": 5, + "rows_matched": 5, + "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": "y4Oe6u4MiN_g4J", + "llm_decomposition_effective_message": "Сверка с банком операций за 2020 год", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "свк банк операции за 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "y4Oe6u4MiN_g4J", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Сверка с банком операций за 2020 год" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 18, + "id": "S018", + "question": "че у свк по банку за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_19-30-01-s018", + "status_code": 200, + "ok": true, + "elapsed_ms": 8194, + "reply_type": "factual", + "trace_id": "address-WCwCxiIrQj", + "assistant_reply": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.\nСобран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 5.\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-16T16:20:52Z | Списание с расчетного счета 00000000294 от 16.12.2020 16:20:52 | 0 / 0 | 3849.26 | аналитика: УФК по г. Москве (для ГУ - Отделения ПФР по г. Москве и МО)\n4. 2020-12-16T16:20:51Z | Списание с расчетного счета 00000000293 от 16.12.2020 16:20:51 | 0 / 0 | 60 | аналитика: СБЕРБАНК, ПАО\n5. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "assistant_reply_first_line": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "rows_fetched": 20, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-WCwCxiIrQj", + "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", + "shape_not_detected", + "bank_ops_by_counterparty_signal_detected", + "anchor_not_matched_fallback_rows" + ], + "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_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": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "mcp_call_status": "matched_non_empty", + "rows_fetched": 20, + "raw_rows_received": 20, + "rows_after_account_scope": 5, + "rows_after_recipe_filter": 0, + "rows_materialized": 5, + "rows_matched": 5, + "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": "pLQYiccm3Lcwij", + "llm_decomposition_effective_message": "Что у СВК по банку за 2020 год?", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "че у свк по банку за 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "pLQYiccm3Lcwij", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Что у СВК по банку за 2020 год?" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 19, + "id": "S019", + "question": "свк списания/поступления за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_19-30-01-s019", + "status_code": 200, + "ok": true, + "elapsed_ms": 10079, + "reply_type": "factual", + "trace_id": "address-iESrbMtkBL", + "assistant_reply": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.\nСобран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 5.\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-16T16:20:52Z | Списание с расчетного счета 00000000294 от 16.12.2020 16:20:52 | 0 / 0 | 3849.26 | аналитика: УФК по г. Москве (для ГУ - Отделения ПФР по г. Москве и МО)\n4. 2020-12-16T16:20:51Z | Списание с расчетного счета 00000000293 от 16.12.2020 16:20:51 | 0 / 0 | 60 | аналитика: СБЕРБАНК, ПАО\n5. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "assistant_reply_first_line": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "rows_fetched": 20, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-iESrbMtkBL", + "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", + "bank_ops_by_counterparty_signal_detected", + "anchor_not_matched_fallback_rows" + ], + "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": "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": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "mcp_call_status": "matched_non_empty", + "rows_fetched": 20, + "raw_rows_received": 20, + "rows_after_account_scope": 5, + "rows_after_recipe_filter": 0, + "rows_materialized": 5, + "rows_matched": 5, + "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": "-YhwoUP7_AYYK9", + "llm_decomposition_effective_message": "сканирование сводных кассовых операций по списаниям и поступлениям за 2020 год", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "свк списания/поступления за 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "-YhwoUP7_AYYK9", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "сканирование сводных кассовых операций по списаниям и поступлениям за 2020 год" + } + }, + "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_Nightly_stress_102_19-30-01-s020", + "status_code": 200, + "ok": true, + "elapsed_ms": 756, + "reply_type": "factual", + "trace_id": "address-drEsM0Fu5W", + "assistant_reply": "Собран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 1.\n1. 2020-12-16T16:20:51Z | Списание с расчетного счета 00000000293 от 16.12.2020 16:20:51 | 0 / 0 | 60 | аналитика: СБЕРБАНК, ПАО", + "assistant_reply_first_line": "Собран список банковских операций по контрагенту (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 20, + "rows_matched": 1, + "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", + "debug_payload": { + "trace_id": "address-drEsM0Fu5W", + "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": "bank", + "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": "bank", + "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": 1, + "rows_materialized": 5, + "rows_matched": 1, + "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": false, + "llm_provider_used": "local", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "банковские операции по контрагенту bank за 2020 год", + "llm_decomposition_reason": "fallback_rule_applied_without_llm", + "fallback_rule_hit": "bank_operations_counterparty_year_rewrite", + "sanitized_user_message": "bank ops by svk for 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": 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_Nightly_stress_102_19-30-01-s021", + "status_code": 200, + "ok": true, + "elapsed_ms": 6084, + "reply_type": "factual", + "trace_id": "address-xOvMI_RtRN", + "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 | аналитика: Группа", + "assistant_reply_first_line": "Собран список банковских операций по контрагенту (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 20, + "rows_matched": 3, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-xOvMI_RtRN", + "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": "SVK", + "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": "SVK", + "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": "fbOqDcem-4cW0G", + "llm_decomposition_effective_message": "транзакции по контрагенту SVK за 2020 год", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "transactions by counterparty svk 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "fbOqDcem-4cW0G", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "транзакции по контрагенту SVK за 2020 год" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 22, + "id": "S022", + "question": "бля, по свк банковские платежки 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_19-30-01-s022", + "status_code": 200, + "ok": true, + "elapsed_ms": 7115, + "reply_type": "factual", + "trace_id": "address-YzZnYOEKry", + "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 | аналитика: Группа", + "assistant_reply_first_line": "Собран список банковских операций по контрагенту (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 20, + "rows_matched": 3, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-YzZnYOEKry", + "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", + "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": "DOCUMENT_LIST", + "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": "O3bRLS4Yedp4qe", + "llm_decomposition_effective_message": "по СВК банковские платежки 2020", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "по свк банковские платежки 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "O3bRLS4Yedp4qe", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "по СВК банковские платежки 2020" + } + }, + "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_Nightly_stress_102_19-30-01-s023", + "status_code": 200, + "ok": true, + "elapsed_ms": 6067, + "reply_type": "factual", + "trace_id": "address-xQvGDJfGs7", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-xQvGDJfGs7", + "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": "ExnTwgtx7b6Uu-", + "llm_decomposition_effective_message": "balance of account 60.01 as of 2020-07-31", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "сальдо по счету 60.01 на дату 2020-07-31", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "ExnTwgtx7b6Uu-", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "balance of account 60.01 as of 2020-07-31" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 24, + "id": "S024", + "question": "остаток по счету 60.01 на 2020.05", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_19-30-01-s024", + "status_code": 200, + "ok": true, + "elapsed_ms": 6143, + "reply_type": "factual", + "trace_id": "address-pZKxiXyR9M", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-pZKxiXyR9M", + "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-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.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": "pdnJ8cFyqpKli5", + "llm_decomposition_effective_message": "balance for account 60.01 as of May 2020", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "остаток по счету 60.01 на 2020.05", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "pdnJ8cFyqpKli5", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "balance for account 60.01 as of May 2020" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 25, + "id": "S025", + "question": "покажи остаток по 60.01 за май 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_19-30-01-s025", + "status_code": 200, + "ok": true, + "elapsed_ms": 6066, + "reply_type": "factual", + "trace_id": "address-0WI6VnXufX", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-0WI6VnXufX", + "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-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.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": "xu-iCXFYYY1ykF", + "llm_decomposition_effective_message": "Показать остаток на счете 60.01 за период май 2020.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "покажи остаток по 60.01 за май 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "xu-iCXFYYY1ykF", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Показать остаток на счете 60.01 за период май 2020." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 26, + "id": "S026", + "question": "счет 60 остаток на май 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_19-30-01-s026", + "status_code": 200, + "ok": true, + "elapsed_ms": 6099, + "reply_type": "factual", + "trace_id": "address--U6xcm2YL-", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 6, + "rows_matched": 6, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address--U6xcm2YL-", + "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", + "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": "_rwqyllyJcaV5T", + "llm_decomposition_effective_message": "балансовое состояние счета 60 на конец мая 2020 года", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "счет 60 остаток на май 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "_rwqyllyJcaV5T", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "балансовое состояние счета 60 на конец мая 2020 года" + } + }, + "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_Nightly_stress_102_19-30-01-s027", + "status_code": 200, + "ok": true, + "elapsed_ms": 6089, + "reply_type": "factual", + "trace_id": "address-Sf6ukKu4HC", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-Sf6ukKu4HC", + "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", + "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": "wKIdIlHIGD1pmF", + "llm_decomposition_effective_message": "баланс счета 60.01 на дату 2020-07-31", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "баланс account 60.01 as of 2020-07-31", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "wKIdIlHIGD1pmF", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "баланс счета 60.01 на дату 2020-07-31" + } + }, + "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_Nightly_stress_102_19-30-01-s028", + "status_code": 200, + "ok": true, + "elapsed_ms": 6096, + "reply_type": "factual", + "trace_id": "address-HlYWuHtnP7", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-HlYWuHtnP7", + "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", + "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": "zg9o2d4ySfZe7a", + "llm_decomposition_effective_message": "saldo счета 60.01 на дату 31.07.2020", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "60.01 сальдо на 31.07.2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "zg9o2d4ySfZe7a", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "saldo счета 60.01 на дату 31.07.2020" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 29, + "id": "S029", + "question": "сколько на счете 60 на конец 2020-05", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_19-30-01-s029", + "status_code": 200, + "ok": true, + "elapsed_ms": 6126, + "reply_type": "factual", + "trace_id": "address-EY908DpdGm", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 6, + "rows_matched": 6, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-EY908DpdGm", + "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": "M0_uLf1leHj960", + "llm_decomposition_effective_message": "balance inquiry for account 60 as of end of May 2020", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "сколько на счете 60 на конец 2020-05", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "M0_uLf1leHj960", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "balance inquiry for account 60 as of end of May 2020" + } + }, + "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_Nightly_stress_102_19-30-01-s030", + "status_code": 200, + "ok": true, + "elapsed_ms": 6056, + "reply_type": "partial_coverage", + "trace_id": "address-S502wf9yjs", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.", + "assistant_reply_first_line": "В live-данных по текущему фильтру записи не найдены.", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "partial_non_blocking", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 0, + "rows_matched": 0, + "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, + "debug_payload": { + "trace_id": "address-S502wf9yjs", + "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", + "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.02", + "period_from": "2020-12-01", + "period_to": "2020-12-31", + "as_of_date": "2020-12-31" + }, + "missing_required_filters": [], + "selected_recipe": "address_movements_account_snapshot_v1", + "mcp_call_status_legacy": "no_raw_rows", + "account_scope_mode": "strict", + "account_scope_fallback_applied": false, + "anchor_type": "account", + "anchor_value_raw": "60.02", + "anchor_value_resolved": "60.02", + "resolver_confidence": "high", + "ambiguity_count": 0, + "match_failure_stage": "none", + "match_failure_reason": null, + "mcp_call_status": "no_raw_rows", + "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": "60.02", + "account_token_normalized": "60.2", + "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": "empty_match", + "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": "0MmbQuN1xDm4RF", + "llm_decomposition_effective_message": "получить остаток по счету 60.02 на конец периода 2020-12-31", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "дай остаток 60.02 на 2020-12-31", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "0MmbQuN1xDm4RF", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "получить остаток по счету 60.02 на конец периода 2020-12-31" + } + }, + "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_Nightly_stress_102_19-30-01-s031", + "status_code": 200, + "ok": true, + "elapsed_ms": 6101, + "reply_type": "partial_coverage", + "trace_id": "address-1A1QJyoBWs", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.", + "assistant_reply_first_line": "В live-данных по текущему фильтру записи не найдены.", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "partial_non_blocking", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 0, + "rows_matched": 0, + "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, + "debug_payload": { + "trace_id": "address-1A1QJyoBWs", + "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", + "verify_signal_detected", + "account_balance_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": "account_balance_snapshot", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "account": "62.01", + "period_from": "2020-12-01", + "period_to": "2020-12-31", + "as_of_date": "2020-12-31" + }, + "missing_required_filters": [], + "selected_recipe": "address_movements_account_snapshot_v1", + "mcp_call_status_legacy": "no_raw_rows", + "account_scope_mode": "strict", + "account_scope_fallback_applied": false, + "anchor_type": "account", + "anchor_value_raw": "62.01", + "anchor_value_resolved": "62.01", + "resolver_confidence": "high", + "ambiguity_count": 0, + "match_failure_stage": "none", + "match_failure_reason": null, + "mcp_call_status": "no_raw_rows", + "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": "62.01", + "account_token_normalized": "62.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": "empty_match", + "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": "YoRvJ1IvbBgcwr", + "llm_decomposition_effective_message": "проверка сальдо по счету 62.01 на конец декабря 2020 года", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "сальдо по счету 62.01 на 2020-12-31", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "YoRvJ1IvbBgcwr", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "проверка сальдо по счету 62.01 на конец декабря 2020 года" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 32, + "id": "S032", + "question": "плс остаток по счету 51 на 2020-06-30", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_19-30-01-s032", + "status_code": 200, + "ok": true, + "elapsed_ms": 6133, + "reply_type": "factual", + "trace_id": "address-S0dthl_ZaQ", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 30, + "rows_matched": 30, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-S0dthl_ZaQ", + "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": "51", + "period_from": "2020-06-01", + "period_to": "2020-06-30", + "as_of_date": "2020-06-30" + }, + "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": 30, + "raw_rows_received": 30, + "rows_after_account_scope": 30, + "rows_after_recipe_filter": 30, + "rows_materialized": 30, + "rows_matched": 30, + "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": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "QvmWnfUmiCHMZQ", + "llm_decomposition_effective_message": "пожалуйста, предоставьте остаток по счету 51 на дату 2020-06-30", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "остаток по счету 51 на 2020-06-30", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "QvmWnfUmiCHMZQ", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "пожалуйста, предоставьте остаток по счету 51 на дату 2020-06-30" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 33, + "id": "S033", + "question": "как там по счету 60.01 на 2020.07?", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_19-30-01-s033", + "status_code": 200, + "ok": true, + "elapsed_ms": 6033, + "reply_type": "factual", + "trace_id": "address-nTBCzbBFKa", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "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, + "debug_payload": { + "trace_id": "address-nTBCzbBFKa", + "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", + "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": false, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "lqV4WTFk5S71Q9", + "llm_decomposition_effective_message": "как там по счету 60.01 на 2020.07?", + "llm_decomposition_reason": "normalized_fragment_rejected_intent_drop", + "fallback_rule_hit": null, + "sanitized_user_message": "как там по счету 60.01 на 2020.07?", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "lqV4WTFk5S71Q9", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "как там по счету 60.01 на 2020.07?" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 34, + "id": "S034", + "question": "сальдо 60 на 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_19-30-01-s034", + "status_code": 200, + "ok": true, + "elapsed_ms": 6226, + "reply_type": "factual", + "trace_id": "address-nDQYwXL2g3", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 138, + "rows_matched": 138, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-nDQYwXL2g3", + "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", + "aggregate_signal_detected", + "account_balance_signal_detected" + ], + "why_included_summary": [], + "selection_reason_summary": [] + }, + "dropped_intent_segments": [], + "detected_mode": "address_query", + "detected_mode_confidence": "medium", + "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-01-01", + "period_to": "2020-12-31", + "as_of_date": "2020-12-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": 138, + "raw_rows_received": 138, + "rows_after_account_scope": 138, + "rows_after_recipe_filter": 138, + "rows_materialized": 138, + "rows_matched": 138, + "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": "WZfkaZe08j07Q_", + "llm_decomposition_effective_message": "балансовое сальдо счета 60 на период 2020 год", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "сальдо 60 на 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "WZfkaZe08j07Q_", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "балансовое сальдо счета 60 на период 2020 год" + } + }, + "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_Nightly_stress_102_19-30-01-s035", + "status_code": 200, + "ok": true, + "elapsed_ms": 7040, + "reply_type": "factual", + "trace_id": "address-M1r5Ehtg4d", + "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Можно уточнить выборку по контрагенту, договору или периоду.", + "assistant_reply_first_line": "Собран drilldown документов, формирующих остаток по счету на указанную дату.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_forming_balance_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-M1r5Ehtg4d", + "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", + "drilldown_signal_detected", + "documents_forming_balance_signal_detected" + ], + "why_included_summary": [], + "selection_reason_summary": [] + }, + "dropped_intent_segments": [], + "detected_mode": "address_query", + "detected_mode_confidence": "high", + "query_shape": "DRILLDOWN_REQUEST", + "query_shape_confidence": "high", + "detected_intent": "documents_forming_balance", + "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_documents_forming_balance_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_LIST", + "execution_lane": "address_query", + "llm_decomposition_applied": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "eWPjljDMsv5zgL", + "llm_decomposition_effective_message": "Какие документы формируют остаток по счету 60.01 на 2020-07-31?", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "какие документы формируют остаток по счету 60.01 на 2020-07-31", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "eWPjljDMsv5zgL", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Какие документы формируют остаток по счету 60.01 на 2020-07-31?" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 36, + "id": "S036", + "question": "из чего состоит остаток по счету 60 на 2020.05", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_19-30-01-s036", + "status_code": 200, + "ok": true, + "elapsed_ms": 6092, + "reply_type": "factual", + "trace_id": "address-r3Lo3z4U2Z", + "assistant_reply": "Собран drilldown документов, формирующих остаток по счету на указанную дату.\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\n5. 2020-05-18T12:00:02Z | Списание с расчетного счета 00000000145 от 18.05.2020 12:00:02 | 60.01 / 51 | 162033\n6. 2020-05-12T12:00:00Z | Списание с расчетного счета 00000000137 от 12.05.2020 12:00:00 | 60.01 / 51 | 70000\nМожно уточнить выборку по контрагенту, договору или периоду.", + "assistant_reply_first_line": "Собран drilldown документов, формирующих остаток по счету на указанную дату.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_forming_balance_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 6, + "rows_matched": 6, + "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, + "debug_payload": { + "trace_id": "address-r3Lo3z4U2Z", + "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", + "drilldown_signal_detected", + "documents_forming_balance_signal_detected" + ], + "why_included_summary": [], + "selection_reason_summary": [] + }, + "dropped_intent_segments": [], + "detected_mode": "address_query", + "detected_mode_confidence": "high", + "query_shape": "DRILLDOWN_REQUEST", + "query_shape_confidence": "high", + "detected_intent": "documents_forming_balance", + "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_documents_forming_balance_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_LIST", + "execution_lane": "address_query", + "llm_decomposition_applied": false, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "wVnse4aspt7XOJ", + "llm_decomposition_effective_message": "из чего состоит остаток по счету 60 на 2020.05", + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "sanitized_user_message": "из чего состоит остаток по счету 60 на 2020.05", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "wVnse4aspt7XOJ", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "из чего состоит остаток по счету 60 на 2020.05" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 37, + "id": "S037", + "question": "раскрой остаток 60.01 по документам на конец июля 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_19-30-01-s037", + "status_code": 200, + "ok": true, + "elapsed_ms": 6088, + "reply_type": "factual", + "trace_id": "address-Zycqz-Hiqe", + "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Можно уточнить выборку по контрагенту, договору или периоду.", + "assistant_reply_first_line": "Собран drilldown документов, формирующих остаток по счету на указанную дату.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_forming_balance_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-Zycqz-Hiqe", + "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_account_drilldown_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": "documents_forming_balance", + "detected_intent_confidence": "medium", + "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_documents_forming_balance_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_LIST", + "execution_lane": "address_query", + "llm_decomposition_applied": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "400VcSUFnAnxFn", + "llm_decomposition_effective_message": "Раскрыть остаток счета 60.01 по документам на конец июля 2020 года.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "раскрой остаток 60.01 по документам на конец июля 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "400VcSUFnAnxFn", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Раскрыть остаток счета 60.01 по документам на конец июля 2020 года." + } + }, + "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_Nightly_stress_102_19-30-01-s038", + "status_code": 200, + "ok": true, + "elapsed_ms": 7108, + "reply_type": "factual", + "trace_id": "address-OXN3yZ-r-Y", + "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Можно уточнить выборку по контрагенту, договору или периоду.", + "assistant_reply_first_line": "Собран drilldown документов, формирующих остаток по счету на указанную дату.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_forming_balance_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "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, + "debug_payload": { + "trace_id": "address-OXN3yZ-r-Y", + "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_forming_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": "documents_forming_balance", + "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_documents_forming_balance_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_LIST", + "execution_lane": "address_query", + "llm_decomposition_applied": false, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "n6ZY5Q5uWs9EYb", + "llm_decomposition_effective_message": "доки под остатком 60.01 на 2020-07-31", + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "sanitized_user_message": "доки под остатком 60.01 на 2020-07-31", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "n6ZY5Q5uWs9EYb", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "доки под остатком 60.01 на 2020-07-31" + } + }, + "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_Nightly_stress_102_19-30-01-s039", + "status_code": 200, + "ok": true, + "elapsed_ms": 6083, + "reply_type": "factual", + "trace_id": "address-NSxVOlhu1Q", + "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Можно уточнить выборку по контрагенту, договору или периоду.", + "assistant_reply_first_line": "Собран drilldown документов, формирующих остаток по счету на указанную дату.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_forming_balance_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-NSxVOlhu1Q", + "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_forming_balance_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": "documents_forming_balance", + "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_documents_forming_balance_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_LIST", + "execution_lane": "address_query", + "llm_decomposition_applied": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "83KM87F629ed6W", + "llm_decomposition_effective_message": "документы, формирующие остаток по счету 60.01 на 2020-07-31", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "документы forming balance for account 60.01 as of 2020-07-31", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "83KM87F629ed6W", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "документы, формирующие остаток по счету 60.01 на 2020-07-31" + } + }, + "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_Nightly_stress_102_19-30-01-s040", + "status_code": 200, + "ok": true, + "elapsed_ms": 6134, + "reply_type": "factual", + "trace_id": "address-ag47y06bLf", + "assistant_reply": "Собран drilldown документов, формирующих остаток по счету на указанную дату.\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\n5. 2020-05-12T12:00:00Z | Списание с расчетного счета 00000000137 от 12.05.2020 12:00:00 | 60.01 / 51 | 70000\nМожно уточнить выборку по контрагенту, договору или периоду.", + "assistant_reply_first_line": "Собран drilldown документов, формирующих остаток по счету на указанную дату.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_forming_balance_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-ag47y06bLf", + "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", + "drilldown_signal_detected", + "documents_forming_balance_signal_detected" + ], + "why_included_summary": [], + "selection_reason_summary": [] + }, + "dropped_intent_segments": [], + "detected_mode": "address_query", + "detected_mode_confidence": "high", + "query_shape": "DRILLDOWN_REQUEST", + "query_shape_confidence": "high", + "detected_intent": "documents_forming_balance", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "account": "60.01", + "period_from": "2020-05-01", + "period_to": "2020-05-31", + "as_of_date": "2020-05-31" + }, + "missing_required_filters": [], + "selected_recipe": "address_documents_forming_balance_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_LIST", + "execution_lane": "address_query", + "llm_decomposition_applied": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "ohdOigF89LvZdF", + "llm_decomposition_effective_message": "какие документы формируют остаток по счету 60.01 на 2020-05-31", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "какие доки формируют остаток 60.01 на 2020-05-31", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "ohdOigF89LvZdF", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "какие документы формируют остаток по счету 60.01 на 2020-05-31" + } + }, + "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_Nightly_stress_102_19-30-01-s041", + "status_code": 200, + "ok": true, + "elapsed_ms": 7112, + "reply_type": "partial_coverage", + "trace_id": "address-08igm93CrH", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.", + "assistant_reply_first_line": "В live-данных по текущему фильтру записи не найдены.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "partial_non_blocking", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_forming_balance_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 0, + "rows_matched": 0, + "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, + "debug_payload": { + "trace_id": "address-08igm93CrH", + "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_account_drilldown_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": "documents_forming_balance", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "account": "62.01", + "period_from": "2020-12-01", + "period_to": "2020-12-31", + "as_of_date": "2020-12-31" + }, + "missing_required_filters": [], + "selected_recipe": "address_documents_forming_balance_v1", + "mcp_call_status_legacy": "no_raw_rows", + "account_scope_mode": "strict", + "account_scope_fallback_applied": false, + "anchor_type": "account", + "anchor_value_raw": "62.01", + "anchor_value_resolved": "62.01", + "resolver_confidence": "high", + "ambiguity_count": 0, + "match_failure_stage": "none", + "match_failure_reason": null, + "mcp_call_status": "no_raw_rows", + "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": "62.01", + "account_token_normalized": "62.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": "empty_match", + "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": "Up_X4qcZDq2cIb", + "llm_decomposition_effective_message": "раскрыть остаток по счету 62.01 с разложением по документам на конец периода 2020-12-31", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "по счету 62.01 раскрой остаток документами на 2020-12-31", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "Up_X4qcZDq2cIb", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "раскрыть остаток по счету 62.01 с разложением по документам на конец периода 2020-12-31" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 42, + "id": "S042", + "question": "из чего остаток по счету 51 на 2020-06-30", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_19-30-01-s042", + "status_code": 200, + "ok": true, + "elapsed_ms": 6080, + "reply_type": "factual", + "trace_id": "address-j5HvbKiPcV", + "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Можно уточнить выборку по контрагенту, договору или периоду.", + "assistant_reply_first_line": "Собран drilldown документов, формирующих остаток по счету на указанную дату.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_forming_balance_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 30, + "rows_matched": 3, + "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, + "debug_payload": { + "trace_id": "address-j5HvbKiPcV", + "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", + "drilldown_signal_detected", + "documents_forming_balance_signal_detected" + ], + "why_included_summary": [], + "selection_reason_summary": [] + }, + "dropped_intent_segments": [], + "detected_mode": "address_query", + "detected_mode_confidence": "high", + "query_shape": "DRILLDOWN_REQUEST", + "query_shape_confidence": "high", + "detected_intent": "documents_forming_balance", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "account": "51", + "period_from": "2020-06-01", + "period_to": "2020-06-30", + "as_of_date": "2020-06-30" + }, + "missing_required_filters": [], + "selected_recipe": "address_documents_forming_balance_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": 30, + "raw_rows_received": 30, + "rows_after_account_scope": 30, + "rows_after_recipe_filter": 30, + "rows_materialized": 30, + "rows_matched": 3, + "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_LIST", + "execution_lane": "address_query", + "llm_decomposition_applied": false, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "_PYTM6_MHVSvNo", + "llm_decomposition_effective_message": "из чего остаток по счету 51 на 2020-06-30", + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "sanitized_user_message": "из чего остаток по счету 51 на 2020-06-30", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "_PYTM6_MHVSvNo", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "из чего остаток по счету 51 на 2020-06-30" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 43, + "id": "S043", + "question": "покажи документы по договору 19/15 за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_19-30-01-s043", + "status_code": 200, + "ok": true, + "elapsed_ms": 7299, + "reply_type": "factual", + "trace_id": "address-57kQdGRav2", + "assistant_reply": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 8.\n1. 2020-08-31T15:00:06Z | Поступление товаров и услуг 00000000024 от 31.08.2020 15:00:06 | 19.04 / 76.05 | 233.33\n2. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 43804.8\n3. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 9776\n4. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 73968\n5. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 94924.8\n6. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 54400\n7. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.02 / 62.01 | 276873.6\n8. 2020-06-30T12:00:00Z | Поступление товаров и услуг 00000000015 от 30.06.2020 12:00:00 | 19.04 / 76.05 | 233.33", + "assistant_reply_first_line": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 8, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-57kQdGRav2", + "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_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": "high", + "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": "19/15", + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": 11, + "rows_materialized": 438, + "rows_matched": 8, + "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": "5oyc1TY4g-3kNA", + "llm_decomposition_effective_message": "Показать документы по договору 19/15 за период 2020 года.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "покажи документы по договору 19/15 за 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "5oyc1TY4g-3kNA", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Показать документы по договору 19/15 за период 2020 года." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 44, + "id": "S044", + "question": "доки по дог. 19/15 за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_19-30-01-s044", + "status_code": 200, + "ok": true, + "elapsed_ms": 7138, + "reply_type": "factual", + "trace_id": "address-pIKQjo7kq-", + "assistant_reply": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 8.\n1. 2020-08-31T15:00:06Z | Поступление товаров и услуг 00000000024 от 31.08.2020 15:00:06 | 19.04 / 76.05 | 233.33\n2. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 43804.8\n3. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 9776\n4. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 73968\n5. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 94924.8\n6. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 54400\n7. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.02 / 62.01 | 276873.6\n8. 2020-06-30T12:00:00Z | Поступление товаров и услуг 00000000015 от 30.06.2020 12:00:00 | 19.04 / 76.05 | 233.33", + "assistant_reply_first_line": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 8, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-pIKQjo7kq-", + "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": "19/15", + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": 11, + "rows_materialized": 438, + "rows_matched": 8, + "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": "lN8Ayu-9c4EYbb", + "llm_decomposition_effective_message": "Документы по договору 19/15 за период 2020 года.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "доки по договор 19/15 за 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "lN8Ayu-9c4EYbb", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Документы по договору 19/15 за период 2020 года." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 45, + "id": "S045", + "question": "какие документы по контракту 19/15", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_19-30-01-s045", + "status_code": 200, + "ok": true, + "elapsed_ms": 7181, + "reply_type": "factual", + "trace_id": "address--rWsFRmL4p", + "assistant_reply": "Собран список документов по договору (live address lane).\nСтрок отобрано: 1.\n1. 2021-12-31T12:00:00Z | Поступление товаров и услуг 00000000015 от 31.12.2021 12:00:00 | 19.04 / 76.05 | 233.33", + "assistant_reply_first_line": "Собран список документов по договору (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 1, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address--rWsFRmL4p", + "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_contract_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_contract", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "contract": "19/15" + }, + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": 416, + "rows_after_recipe_filter": 2, + "rows_materialized": 416, + "rows_matched": 1, + "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": "zM_T7M-svDmygI", + "llm_decomposition_effective_message": "Какие документы по контракту 19/15?", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "какие документы по контракту 19/15", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "zM_T7M-svDmygI", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Какие документы по контракту 19/15?" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 46, + "id": "S046", + "question": "docs by contract 19/15 year 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_19-30-01-s046", + "status_code": 200, + "ok": true, + "elapsed_ms": 8054, + "reply_type": "factual", + "trace_id": "address-2BUOGa1Aaa", + "assistant_reply": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 8.\n1. 2020-08-31T15:00:06Z | Поступление товаров и услуг 00000000024 от 31.08.2020 15:00:06 | 19.04 / 76.05 | 233.33\n2. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 43804.8\n3. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 9776\n4. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 73968\n5. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 94924.8\n6. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 54400\n7. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.02 / 62.01 | 276873.6\n8. 2020-06-30T12:00:00Z | Поступление товаров и услуг 00000000015 от 30.06.2020 12:00:00 | 19.04 / 76.05 | 233.33", + "assistant_reply_first_line": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 8, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-2BUOGa1Aaa", + "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", + "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": "OBJECT_LOOKUP", + "query_shape_confidence": "medium", + "detected_intent": "list_documents_by_contract", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "contract": "19/15", + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": 11, + "rows_materialized": 438, + "rows_matched": 8, + "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": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "vZakMN5FVfErvg", + "llm_decomposition_effective_message": "docs by contract 19/15 year 2020", + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "sanitized_user_message": "документы by contract 19/2015 год 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "vZakMN5FVfErvg", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "docs by contract 19/15 year 2020" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 47, + "id": "S047", + "question": "бля, покажи по договору 19/15 доки", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_19-30-01-s047", + "status_code": 200, + "ok": true, + "elapsed_ms": 6232, + "reply_type": "factual", + "trace_id": "address-RCNheJPiiD", + "assistant_reply": "Собран список документов по договору (live address lane).\nСтрок отобрано: 1.\n1. 2021-12-31T12:00:00Z | Поступление товаров и услуг 00000000015 от 31.12.2021 12:00:00 | 19.04 / 76.05 | 233.33", + "assistant_reply_first_line": "Собран список документов по договору (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 1, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-RCNheJPiiD", + "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_contract_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_contract", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "contract": "19/15" + }, + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": 416, + "rows_after_recipe_filter": 2, + "rows_materialized": 416, + "rows_matched": 1, + "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": "aOarU0_bP-XNMU", + "llm_decomposition_effective_message": "покажи документы по договору 19/15", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "покажи по договору 19/15 доки", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "aOarU0_bP-XNMU", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "покажи документы по договору 19/15" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 48, + "id": "S048", + "question": "договор 19/15 документы", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_19-30-01-s048", + "status_code": 200, + "ok": true, + "elapsed_ms": 7087, + "reply_type": "factual", + "trace_id": "address-78yPtbP-mf", + "assistant_reply": "Собран список документов по договору (live address lane).\nСтрок отобрано: 1.\n1. 2021-12-31T12:00:00Z | Поступление товаров и услуг 00000000015 от 31.12.2021 12:00:00 | 19.04 / 76.05 | 233.33", + "assistant_reply_first_line": "Собран список документов по договору (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 1, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-78yPtbP-mf", + "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" + ], + "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": "19/15" + }, + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": 416, + "rows_after_recipe_filter": 2, + "rows_materialized": 416, + "rows_matched": 1, + "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": "EdDpMCM7RSZdU5", + "llm_decomposition_effective_message": "Документы по договору 19/15", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "договор 19/15 документы", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "EdDpMCM7RSZdU5", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Документы по договору 19/15" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 49, + "id": "S049", + "question": "плс документы договор №19/15", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_19-30-01-s049", + "status_code": 200, + "ok": true, + "elapsed_ms": 7098, + "reply_type": "factual", + "trace_id": "address-ckK5C_36fO", + "assistant_reply": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 120.\n1. 2022-09-30T12:00:00Z | Поступление товаров и услуг 00000000010 от 30.09.2022 12:00:00 | 19.04 / 76.05 | 191.67\n2. 2022-09-30T12:00:00Z | Поступление товаров и услуг 00000000010 от 30.09.2022 12:00:00 | 44.01 / 76.05 | 958.33\n3. 2022-08-31T12:00:00Z | Поступление товаров и услуг 00000000009 от 31.08.2022 12:00:00 | 19.04 / 76.05 | 233.33\n4. 2022-08-31T12:00:00Z | Поступление товаров и услуг 00000000009 от 31.08.2022 12:00:00 | 44.01 / 76.05 | 1166.67\n5. 2022-07-31T12:00:00Z | Поступление товаров и услуг 00000000008 от 31.07.2022 12:00:00 | 19.04 / 76.05 | 150.54\n6. 2022-07-31T12:00:00Z | Поступление товаров и услуг 00000000008 от 31.07.2022 12:00:00 | 44.01 / 76.05 | 752.69\n7. 2022-07-31T12:00:00Z | Поступление товаров и услуг 00000000008 от 31.07.2022 12:00:00 | 76.05 / 76.05 | 280\n8. 2022-06-30T00:00:01Z | Поступление товаров и услуг 00000000006 от 30.06.2022 0:00:01 | 19.04 / 76.05 | 186.67\n9. 2022-06-30T00:00:01Z | Поступление товаров и услуг 00000000006 от 30.06.2022 0:00:01 | 44.01 / 76.05 | 933.33\n10. 2022-05-31T00:00:01Z | Поступление товаров и услуг 00000000005 от 31.05.2022 0:00:01 | 19.04 / 76.05 | 233.33\n11. 2022-05-31T00:00:01Z | Поступление товаров и услуг 00000000005 от 31.05.2022 0:00:01 | 44.01 / 76.05 | 1166.67\n12. 2022-04-30T00:00:01Z | Поступление товаров и услуг 00000000004 от 30.04.2022 0:00:01 | 19.04 / 76.05 | 233.33\n13. 2022-04-30T00:00:01Z | Поступление товаров и услуг 00000000004 от 30.04.2022 0:00:01 | 44.01 / 76.05 | 1166.67\n14. 2022-04-18T12:00:00Z | Поступление товаров и услуг 00000000007 от 18.04.2022 12:00:00 | 97.21 / 60.01 | 14790\n15. 2022-04-18T12:00:00Z | Поступление товаров и услуг 00000000007 от 18.04.2022 12:00:00 | 60.01 / 60.02 | 14790\n16. 2022-04-13T12:00:00Z | Поступление на расчетный счет 00000000004 от 13.04.2022 12:00:00 | 51 / 76.05 | 1200000\n17. 2022-03-31T12:00:00Z | Поступление товаров и услуг 00000000001 от 31.03.2022 12:00:00 | 19.04 / 76.05 | 233.33\n18. 2022-03-31T12:00:00Z | Поступление товаров и услуг 00000000001 от 31.03.2022 12:00:00 | 44.01 / 76.05 | 1166.67\n19. 2022-02-28T12:00:00Z | Поступление товаров и услуг 00000000002 от 28.02.2022 12:00:00 | 19.04 / 76.05 | 233.33\n20. 2022-02-28T12:00:00Z | Поступление товаров и услуг 00000000002 от 28.02.2022 12:00:00 | 44.01 / 76.05 | 1166.67\n21. 2022-01-31T12:00:00Z | Поступление товаров и услуг 00000000003 от 31.01.2022 12:00:00 | 19.04 / 76.05 | 233.33\n22. 2022-01-31T12:00:00Z | Поступление товаров и услуг 00000000003 от 31.01.2022 12:00:00 | 44.01 / 76.05 | 1166.67\n23. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 217415\n24. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 114640\n25. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 659320\n26. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 109610\n27. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 162300\n28. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 990830\n29. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 302560\n30. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 105310\n31. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 615320\n32. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 144220\n33. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 56930\n34. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 50000\n35. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 425600\n36. 2022-01-20T12:00:03Z | Поступление на расчетный счет 00000000001 от 20.01.2022 12:00:03 | 51 / 60.02 | 119210\n37. 2022-01-20T12:00:03Z | Поступление на расчетный счет 00000000001 от 20.01.2022 12:00:03 | 51 / 60.02 | 180230\n38. 2022-01-20T12:00:03Z | Поступление на расчетный счет 00000000001 от 20.01.2022 12:00:03 | 51 / 60.02 | 144320\n39. 2022-01-20T12:00:03Z | Поступление на расчетный счет 00000000001 от 20.01.2022 12:00:03 | 51 / 60.02 | 320600\n40. 2022-01-20T12:00:03Z | Поступление на расчетный счет 00000000001 от 20.01.2022 12:00:03 | 51 / 60.02 | 126300\n41. 2021-12-31T12:00:00Z | Поступление товаров и услуг 00000000015 от 31.12.2021 12:00:00 | 19.04 / 76.05 | 233.33\n42. 2021-12-31T12:00:00Z | Поступление товаров и услуг 00000000015 от 31.12.2021 12:00:00 | 44.01 / 76.05 | 1166.67\n43. 2021-11-30T12:00:00Z | Поступление товаров и услуг 00000000014 от 30.11.2021 12:00:00 | 19.04 / 76.05 | 233.33\n44. 2021-11-30T12:00:00Z | Поступление товаров и услуг 00000000014 от 30.11.2021 12:00:00 | 44.01 / 76.05 | 1166.67\n45. 2021-11-10T12:00:07Z | Поступление на расчетный счет 00000000013 от 10.11.2021 12:00:07 | 51 / 62.02 | 20000\n46. 2021-10-31T12:00:00Z | Поступление товаров и услуг 00000000013 от 31.10.2021 12:00:00 | 19.04 / 76.05 | 233.33\n47. 2021-10-31T12:00:00Z | Поступление товаров и услуг 00000000013 от 31.10.2021 12:00:00 | 44.01 / 76.05 | 1166.67\n48. 2021-09-30T12:00:00Z | Поступление товаров и услуг 00000000012 от 30.09.2021 12:00:00 | 19.04 / 76.05 | 233.33\n49. 2021-09-30T12:00:00Z | Поступление товаров и услуг 00000000012 от 30.09.2021 12:00:00 | 44.01 / 76.05 | 1166.67\n50. 2021-09-29T12:00:03Z | Поступление на расчетный счет 00000000012 от 29.09.2021 12:00:03 | 51 / 62.02 | 50000\n51. 2021-08-31T12:00:05Z | Поступление товаров и услуг 00000000011 от 31.08.2021 12:00:05 | 19.04 / 76.05 | 233.33\n52. 2021-08-31T12:00:05Z | Поступление товаров и услуг 00000000011 от 31.08.2021 12:00:05 | 44.01 / 76.05 | 1166.67\n53. 2021-08-31T12:00:04Z | Поступление на расчетный счет 00000000011 от 31.08.2021 12:00:04 | 51 / 62.02 | 120500\n54. 2021-07-31T12:00:00Z | Поступление товаров и услуг 00000000010 от 31.07.2021 12:00:00 | 19.04 / 76.05 | 233.33\n55. 2021-07-31T12:00:00Z | Поступление товаров и услуг 00000000010 от 31.07.2021 12:00:00 | 44.01 / 76.05 | 1166.67\n56. 2021-06-30T00:00:00Z | Поступление товаров и услуг 00000000008 от 30.06.2021 0:00:00 | 19.04 / 76.05 | 233.33\n57. 2021-06-30T00:00:00Z | Поступление товаров и услуг 00000000008 от 30.06.2021 0:00:00 | 44.01 / 76.05 | 1166.67\n58. 2021-06-22T12:00:00Z | Поступление на расчетный счет 00000000010 от 22.06.2021 12:00:00 | 51 / 62.02 | 498630\n59. 2021-06-09T12:00:05Z | Поступление на расчетный счет 00000000009 от 09.06.2021 12:00:05 | 51 / 62.02 | 418960\n60. 2021-05-31T12:00:04Z | Поступление товаров и услуг 00000000006 от 31.05.2021 12:00:04 | 19.04 / 76.05 | 233.33\n61. 2021-05-31T12:00:04Z | Поступление товаров и услуг 00000000006 от 31.05.2021 12:00:04 | 44.01 / 76.05 | 1166.67\n62. 2021-05-17T12:00:00Z | Поступление товаров и услуг 00000000009 от 17.05.2021 12:00:00 | 19.04 / 60.01 | 12000\n63. 2021-05-17T12:00:00Z | Поступление товаров и услуг 00000000009 от 17.05.2021 12:00:00 | 97.21 / 60.01 | 60000\n64. 2021-05-17T12:00:00Z | Поступление товаров и услуг 00000000009 от 17.05.2021 12:00:00 | 60.01 / 60.02 | 72000\n65. 2021-04-30T12:00:00Z | Поступление товаров и услуг 00000000005 от 30.04.2021 12:00:00 | 19.04 / 76.05 | 233.33\n66. 2021-04-30T12:00:00Z | Поступление товаров и услуг 00000000005 от 30.04.2021 12:00:00 | 44.01 / 76.05 | 1166.67\n67. 2021-04-28T12:00:08Z | Поступление на расчетный счет 00000000008 от 28.04.2021 12:00:08 | 51 / 62.02 | 564300\n68. 2021-04-22T12:00:00Z | Поступление на расчетный счет 00000000007 от 22.04.2021 12:00:00 | 51 / 62.02 | 982420\n69. 2021-04-13T12:00:11Z | Поступление на расчетный счет 00000000006 от 13.04.2021 12:00:11 | 51 / 62.02 | 1882400\n70. 2021-04-07T12:00:00Z | Поступление товаров и услуг 00000000016 от 07.04.2021 12:00:00 | 97.21 / 60.01 | 11900\n71. 2021-04-07T12:00:00Z | Поступление товаров и услуг 00000000016 от 07.04.2021 12:00:00 | 60.01 / 60.02 | 11900\n72. 2021-03-31T23:59:59Z | Поступление товаров и услуг 00000000003 от 31.03.2021 23:59:59 | 19.04 / 76.05 | 233.33\n73. 2021-03-31T23:59:59Z | Поступление товаров и услуг 00000000003 от 31.03.2021 23:59:59 | 44.01 / 76.05 | 1166.67\n74. 2021-03-25T12:00:02Z | Поступление на расчетный счет 00000000005 от 25.03.2021 12:00:02 | 51 / 62.02 | 644315\n75. 2021-03-24T12:00:03Z | Поступление на расчетный счет 00000000004 от 24.03.2021 12:00:03 | 51 / 62.02 | 1219990\n76. 2021-03-22T12:00:02Z | Реализация товаров и услуг 00000000001 от 22.03.2021 12:00:02 | 62.01 / 90.01.1 | 598950\n77. 2021-03-22T12:00:02Z | Реализация товаров и услуг 00000000001 от 22.03.2021 12:00:02 | 62.02 / 62.01 | 95274\n78. 2021-03-22T12:00:02Z | Реализация товаров и услуг 00000000001 от 22.03.2021 12:00:02 | 62.02 / 62.01 | 38900\n79. 2021-03-22T12:00:02Z | Реализация товаров и услуг 00000000001 от 22.03.2021 12:00:02 | 62.02 / 62.01 | 464776\n80. 2021-03-18T12:00:00Z | Поступление на расчетный счет 00000000003 от 18.03.2021 12:00:00 | 51 / 62.02 | 1425310\n81. 2021-03-12T12:00:03Z | Поступление на расчетный счет 00000000002 от 12.03.2021 12:00:03 | 51 / 62.02 | 214600\n82. 2021-03-09T00:00:00Z | Поступление товаров и услуг 00000000001 от 09.03.2021 0:00:00 | 19.03 / 60.01 | 88415\n83. 2021-03-09T00:00:00Z | Поступление товаров и услуг 00000000001 от 09.03.2021 0:00:00 | 41.01 / 60.01 | 442075\n84. 2021-02-28T23:59:59Z | Поступление товаров и услуг 00000000004 от 28.02.2021 23:59:59 | 19.04 / 76.05 | 233.33\n85. 2021-02-28T23:59:59Z | Поступление товаров и услуг 00000000004 от 28.02.2021 23:59:59 | 44.01 / 76.05 | 1166.67\n86. 2021-02-19T12:00:01Z | Поступление на расчетный счет 00000000001 от 19.02.2021 12:00:01 | 51 / 62.02 | 518600\n87. 2021-01-31T23:59:59Z | Поступление товаров и услуг 00000000002 от 31.01.2021 23:59:59 | 19.04 / 76.05 | 233.33\n88. 2021-01-31T23:59:59Z | Поступление товаров и услуг 00000000002 от 31.01.2021 23:59:59 | 44.01 / 76.05 | 1166.67\n89. 2020-12-31T23:59:59Z | Поступление товаров и услуг 00000000034 от 31.12.2020 23:59:59 | 19.04 / 76.05 | 233.33\n90. 2020-12-31T23:59:59Z | Поступление товаров и услуг 00000000034 от 31.12.2020 23:59:59 | 44.01 / 76.05 | 1166.67\n91. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 51 / 62.02 | 3248300\n92. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 51 / 62.02 | 216600\n93. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 51 / 62.02 | 200000\n94. 2020-11-30T23:59:59Z | Поступление товаров и услуг 00000000033 от 30.11.2020 23:59:59 | 19.04 / 76.05 | 233.33\n95. 2020-11-30T23:59:59Z | Поступление товаров и услуг 00000000033 от 30.11.2020 23:59:59 | 44.01 / 76.05 | 1166.67\n96. 2020-11-30T12:00:08Z | Реализация товаров и услуг 00000000010 от 30.11.2020 12:00:08 | 62.01 / 90.01.1 | 118552\n97. 2020-11-30T12:00:08Z | Реализация товаров и услуг 00000000010 от 30.11.2020 12:00:08 | 62.01 / 90.01.1 | 458472\n98. 2020-11-30T12:00:08Z | Реализация товаров и услуг 00000000010 от 30.11.2020 12:00:08 | 62.02 / 62.01 | 577024\n99. 2020-11-30T12:00:07Z | Поступление на расчетный счет 00000000041 от 30.11.2020 12:00:07 | 51 / 62.02 | 38900\n100. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 900000\n101. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 144749\n102. 2020-11-20T12:00:00Z | Поступление товаров и услуг 00000000030 от 20.11.2020 12:00:00 | 19.03 / 60.01 | 1450\n103. 2020-11-20T12:00:00Z | Поступление товаров и услуг 00000000030 от 20.11.2020 12:00:00 | 41.01 / 60.01 | 7250\n104. 2020-11-20T12:00:00Z | Поступление товаров и услуг 00000000030 от 20.11.2020 12:00:00 | 60.01 / 60.02 | 8700\n105. 2020-11-19T12:00:04Z | Поступление на расчетный счет 00000000039 от 19.11.2020 12:00:04 | 51 / 62.02 | 1041800\n106. 2020-11-19T12:00:04Z | Поступление на расчетный счет 00000000039 от 19.11.2020 12:00:04 | 51 / 62.01 | 2278800\n107. 2020-11-18T12:00:05Z | Поступление на расчетный счет 00000000038 от 18.11.2020 12:00:05 | 51 / 62.01 | 745300\n108. 2020-11-18T12:00:04Z | Поступление на расчетный счет 00000000037 от 18.11.2020 12:00:04 | 51 / 62.01 | 320000\n109. 2020-11-13T12:00:03Z | Поступление на расчетный счет 00000000036 от 13.11.2020 12:00:03 | 51 / 62.01 | 313600\n110. 2020-11-10T15:39:14Z | Реализация товаров и услуг 00000000009 от 10.11.2020 15:39:14 | 62.01 / 90.01.1 | 4161000\n111. 2020-11-10T15:39:14Z | Реализация товаров и услуг 00000000009 от 10.11.2020 15:39:14 | 62.02 / 62.01 | 328300\n112. 2020-11-10T15:39:14Z | Реализация товаров и услуг 00000000009 от 10.11.2020 15:39:14 | 62.02 / 62.01 | 175000\n113. 2020-11-10T15:39:13Z | Поступление на расчетный счет 00000000035 от 10.11.2020 15:39:13 | 51 / 62.02 | 328300\n114. 2020-11-09T12:00:01Z | Поступление товаров и услуг 00000000031 от 09.11.2020 12:00:01 | 41.01 / 60.01 | 2229840\n115. 2020-10-31T23:59:59Z | Поступление товаров и услуг 00000000032 от 31.10.2020 23:59:59 | 19.04 / 76.05 | 233.33\n116. 2020-10-31T23:59:59Z | Поступление товаров и услуг 00000000032 от 31.10.2020 23:59:59 | 44.01 / 76.05 | 1166.67\n117. 2020-10-26T12:00:00Z | Поступление на расчетный счет 00000000034 от 26.10.2020 12:00:00 | 51 / 62.02 | 175000\n118. 2020-10-14T12:00:00Z | Поступление на расчетный счет 00000000033 от 14.10.2020 12:00:00 | 51 / 60.01 | 160000\n119. 2020-09-30T12:00:04Z | Поступление товаров и услуг 00000000025 от 30.09.2020 12:00:04 | 19.04 / 76.05 | 233.33\n120. 2020-09-30T12:00:04Z | Поступление товаров и услуг 00000000025 от 30.09.2020 12:00:04 | 44.01 / 76.05 | 1166.67", + "assistant_reply_first_line": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "materialized_but_not_anchor_matched", + "match_failure_reason": "contract_anchor_not_matched_in_materialized_rows", + "rows_fetched": 1000, + "rows_matched": 120, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-ckK5C_36fO", + "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", + "anchor_not_matched_fallback_rows" + ], + "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": "номер 19/15" + }, + "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": "номер 19/15", + "anchor_value_resolved": "номер 19/15", + "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": "matched_non_empty", + "rows_fetched": 1000, + "raw_rows_received": 1000, + "rows_after_account_scope": 416, + "rows_after_recipe_filter": 0, + "rows_materialized": 416, + "rows_matched": 120, + "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": "2ot04HzBoYckXN", + "llm_decomposition_effective_message": "пожалуйста, предоставьте документы по договору номер 19/15", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "документы договор №19/15", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "2ot04HzBoYckXN", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "пожалуйста, предоставьте документы по договору номер 19/15" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 50, + "id": "S050", + "question": "покеж документы по 19/15", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_19-30-01-s050", + "status_code": 200, + "ok": true, + "elapsed_ms": 5967, + "reply_type": "factual", + "trace_id": "address-9IBefJMjpm", + "assistant_reply": "Собран список документов по договору (live address lane).\nСтрок отобрано: 1.\n1. 2021-12-31T12:00:00Z | Поступление товаров и услуг 00000000015 от 31.12.2021 12:00:00 | 19.04 / 76.05 | 233.33", + "assistant_reply_first_line": "Собран список документов по договору (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 1, + "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, + "debug_payload": { + "trace_id": "address-9IBefJMjpm", + "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" + ], + "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": "19/15" + }, + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": 416, + "rows_after_recipe_filter": 2, + "rows_materialized": 416, + "rows_matched": 1, + "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": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "3DNHj54OqC0H3d", + "llm_decomposition_effective_message": "покеж документы по 19/15", + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "sanitized_user_message": "покеж документы по 19/15", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "3DNHj54OqC0H3d", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "покеж документы по 19/15" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 51, + "id": "S051", + "question": "банковские операции по договору 19/15", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_19-30-01-s051", + "status_code": 200, + "ok": true, + "elapsed_ms": 7148, + "reply_type": "factual", + "trace_id": "address-Hl7FaOoqrm", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 1.\n1. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "assistant_reply_first_line": "Собран список банковских операций по договору (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 1, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-Hl7FaOoqrm", + "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": "19/15" + }, + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": 1, + "rows_materialized": 341, + "rows_matched": 1, + "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": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "ev0DwCieVZEXkx", + "llm_decomposition_effective_message": "банковские операции по договору 19/15", + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "sanitized_user_message": "банковские операции по договору 19/15", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "ev0DwCieVZEXkx", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "банковские операции по договору 19/15" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 52, + "id": "S052", + "question": "платежи по договору 19/15", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_19-30-01-s052", + "status_code": 200, + "ok": true, + "elapsed_ms": 6051, + "reply_type": "factual", + "trace_id": "address-0wacNUpHur", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 1.\n1. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "assistant_reply_first_line": "Собран список банковских операций по договору (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 1, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-0wacNUpHur", + "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", + "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": "DOCUMENT_LIST", + "query_shape_confidence": "medium", + "detected_intent": "bank_operations_by_contract", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "contract": "19/15" + }, + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": 1, + "rows_materialized": 341, + "rows_matched": 1, + "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": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "s2vENqo7TcwUUx", + "llm_decomposition_effective_message": "платежи по договору 19/15", + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "sanitized_user_message": "платежи по договору 19/15", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "s2vENqo7TcwUUx", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "платежи по договору 19/15" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 53, + "id": "S053", + "question": "выписка по договору 19/15", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_19-30-01-s053", + "status_code": 200, + "ok": true, + "elapsed_ms": 6171, + "reply_type": "factual", + "trace_id": "address-y0ovqSaFi-", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 1.\n1. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "assistant_reply_first_line": "Собран список банковских операций по договору (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 1, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-y0ovqSaFi-", + "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", + "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": "DOCUMENT_LIST", + "query_shape_confidence": "medium", + "detected_intent": "bank_operations_by_contract", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "contract": "19/15" + }, + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": 1, + "rows_materialized": 341, + "rows_matched": 1, + "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": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "hO8BNtXz_MTtcL", + "llm_decomposition_effective_message": "выписка по договору 19/15", + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "sanitized_user_message": "выписка по договору 19/15", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "hO8BNtXz_MTtcL", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "выписка по договору 19/15" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 54, + "id": "S054", + "question": "bank ops by contract 19/15", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_19-30-01-s054", + "status_code": 200, + "ok": true, + "elapsed_ms": 7048, + "reply_type": "factual", + "trace_id": "address-gNpAc_V8WT", + "assistant_reply": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.\nСобран список банковских операций по договору (live address lane).\nСтрок отобрано: 341.\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\n5. 2022-07-11T12:00:00Z | Списание с расчетного счета 00000000014 от 11.07.2022 12:00:00 | 76.05 / 51 | 1120\n6. 2022-07-11T12:00:00Z | Списание с расчетного счета 00000000014 от 11.07.2022 12:00:00 | 76.05 / 51 | 1400\n7. 2022-07-11T12:00:00Z | Списание с расчетного счета 00000000014 от 11.07.2022 12:00:00 | 76.05 / 51 | 1400\n8. 2022-06-10T12:00:00Z | Списание с расчетного счета 00000000015 от 10.06.2022 12:00:00 | 91.02 / 51 | 990\n9. 2022-05-11T12:00:00Z | Списание с расчетного счета 00000000013 от 11.05.2022 12:00:00 | 66.04 / 51 | 180000\n10. 2022-05-10T12:00:00Z | Списание с расчетного счета 00000000012 от 10.05.2022 12:00:00 | 91.02 / 51 | 990\n11. 2022-04-15T12:00:02Z | Списание с расчетного счета 00000000011 от 15.04.2022 12:00:02 | 66.03 / 51 | 1000000\n12. 2022-04-15T12:00:01Z | Списание с расчетного счета 00000000010 от 15.04.2022 12:00:01 | 60.02 / 51 | 14790\n13. 2022-04-15T12:00:00Z | Списание с расчетного счета 00000000009 от 15.04.2022 12:00:00 | 76.05 / 51 | 1400\n14. 2022-04-15T12:00:00Z | Списание с расчетного счета 00000000009 от 15.04.2022 12:00:00 | 76.05 / 51 | 1400\n15. 2022-04-13T12:00:00Z | Поступление на расчетный счет 00000000004 от 13.04.2022 12:00:00 | 51 / 76.05 | 1200000\n16. 2022-03-10T12:00:00Z | Списание с расчетного счета 00000000008 от 10.03.2022 12:00:00 | 91.02 / 51 | 990\n17. 2022-02-14T12:00:01Z | Списание с расчетного счета 00000000007 от 14.02.2022 12:00:01 | 76.05 / 51 | 1400\n18. 2022-02-14T12:00:00Z | Списание с расчетного счета 00000000006 от 14.02.2022 12:00:00 | 91.02 / 51 | 990\n19. 2022-01-25T12:00:00Z | Списание с расчетного счета 00000000005 от 25.01.2022 12:00:00 | 68.1 / 51 | 3000\n20. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 217415\n21. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 114640\n22. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 659320\n23. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 109610\n24. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 162300\n25. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 990830\n26. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 302560\n27. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 105310\n28. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 615320\n29. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 144220\n30. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 56930\n31. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 50000\n32. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 425600\n33. 2022-01-20T12:00:03Z | Поступление на расчетный счет 00000000001 от 20.01.2022 12:00:03 | 51 / 60.02 | 119210\n34. 2022-01-20T12:00:03Z | Поступление на расчетный счет 00000000001 от 20.01.2022 12:00:03 | 51 / 60.02 | 180230\n35. 2022-01-20T12:00:03Z | Поступление на расчетный счет 00000000001 от 20.01.2022 12:00:03 | 51 / 60.02 | 144320\n36. 2022-01-20T12:00:03Z | Поступление на расчетный счет 00000000001 от 20.01.2022 12:00:03 | 51 / 60.02 | 320600\n37. 2022-01-20T12:00:03Z | Поступление на расчетный счет 00000000001 от 20.01.2022 12:00:03 | 51 / 60.02 | 126300\n38. 2022-01-20T12:00:02Z | Списание с расчетного счета 00000000004 от 20.01.2022 12:00:02 | 62.02 / 51 | 1808325\n39. 2022-01-20T12:00:02Z | Списание с расчетного счета 00000000004 от 20.01.2022 12:00:02 | 62.02 / 51 | 216600\n40. 2022-01-20T12:00:02Z | Списание с расчетного счета 00000000004 от 20.01.2022 12:00:02 | 62.02 / 51 | 104726\n41. 2022-01-20T12:00:01Z | Списание с расчетного счета 00000000003 от 20.01.2022 12:00:01 | 60.01 / 51 | 1705109.5\n42. 2022-01-20T12:00:00Z | Списание с расчетного счета 00000000002 от 20.01.2022 12:00:00 | 66.03 / 51 | 1000000\n43. 2022-01-19T12:00:00Z | Списание с расчетного счета 00000000001 от 19.01.2022 12:00:00 | 76.05 / 51 | 1400\n44. 2022-01-19T12:00:00Z | Списание с расчетного счета 00000000001 от 19.01.2022 12:00:00 | 76.05 / 51 | 1400\n45. 2021-12-01T12:00:00Z | Списание с расчетного счета 00000000196 от 01.12.2021 12:00:00 | 91.02 / 51 | 66.67\n46. 2021-11-10T12:00:07Z | Поступление на расчетный счет 00000000013 от 10.11.2021 12:00:07 | 51 / 62.02 | 20000\n47. 2021-11-10T12:00:06Z | Списание с расчетного счета 00000000195 от 10.11.2021 12:00:06 | 69.02.7 / 51 | 8632.1\n48. 2021-11-10T12:00:05Z | Списание с расчетного счета 00000000194 от 10.11.2021 12:00:05 | 69.03.1 / 51 | 3561.32\n49. 2021-11-10T12:00:04Z | Списание с расчетного счета 00000000193 от 10.11.2021 12:00:04 | 76.05 / 51 | 1400\n50. 2021-11-10T12:00:03Z | Списание с расчетного счета 00000000192 от 10.11.2021 12:00:03 | 91.02 / 51 | 990\n51. 2021-11-10T12:00:02Z | Списание с расчетного счета 00000000191 от 10.11.2021 12:00:02 | 69.01 / 51 | 370.97\n52. 2021-11-10T12:00:01Z | Списание с расчетного счета 00000000190 от 10.11.2021 12:00:01 | 69.11 / 51 | 141.94\n53. 2021-11-10T12:00:00Z | Списание с расчетного счета 00000000189 от 10.11.2021 12:00:00 | 91.02 / 51 | 8\n54. 2021-10-18T12:00:00Z | Списание с расчетного счета 00000000188 от 18.10.2021 12:00:00 | 76.05 / 51 | 1400\n55. 2021-10-12T12:00:04Z | Списание с расчетного счета 00000000187 от 12.10.2021 12:00:04 | 69.02.7 / 51 | 13326.28\n56. 2021-10-12T12:00:03Z | Списание с расчетного счета 00000000186 от 12.10.2021 12:00:03 | 68.01.1 / 51 | 9226\n57. 2021-10-12T12:00:02Z | Списание с расчетного счета 00000000185 от 12.10.2021 12:00:02 | 69.03.1 / 51 | 5153.69\n58. 2021-10-12T12:00:01Z | Списание с расчетного счета 00000000184 от 12.10.2021 12:00:01 | 69.01 / 51 | 741.94\n59. 2021-10-12T12:00:00Z | Списание с расчетного счета 00000000183 от 12.10.2021 12:00:00 | 69.11 / 51 | 205.12\n60. 2021-10-09T12:00:00Z | Списание с расчетного счета 00000000182 от 09.10.2021 12:00:00 | 91.02 / 51 | 990\n61. 2021-09-29T12:00:03Z | Поступление на расчетный счет 00000000012 от 29.09.2021 12:00:03 | 51 / 62.02 | 50000\n62. 2021-09-29T12:00:02Z | Списание с расчетного счета 00000000181 от 29.09.2021 12:00:02 | 70 / 51 | 34310\n63. 2021-09-29T12:00:01Z | Списание с расчетного счета 00000000180 от 29.09.2021 12:00:01 | 68.01.1 / 51 | 9503\n64. 2021-09-29T12:00:00Z | Списание с расчетного счета 00000000179 от 29.09.2021 12:00:00 | 91.02 / 51 | 171.55\n65. 2021-09-14T12:00:01Z | Списание с расчетного счета 00000000178 от 14.09.2021 12:00:01 | 70 / 51 | 29200\n66. 2021-09-14T12:00:00Z | Списание с расчетного счета 00000000177 от 14.09.2021 12:00:00 | 91.02 / 51 | 146\n67. 2021-09-09T12:00:00Z | Списание с расчетного счета 00000000176 от 09.09.2021 12:00:00 | 91.02 / 51 | 990\n68. 2021-09-07T12:00:05Z | Списание с расчетного счета 00000000175 от 07.09.2021 12:00:05 | 69.02.7 / 51 | 13830.84\n69. 2021-09-07T12:00:04Z | Списание с расчетного счета 00000000174 от 07.09.2021 12:00:04 | 69.03.1 / 51 | 5405.97\n70. 2021-09-07T12:00:03Z | Списание с расчетного счета 00000000173 от 07.09.2021 12:00:03 | 68.01.1 / 51 | 3830\n71. 2021-09-07T12:00:02Z | Списание с расчетного счета 00000000172 от 07.09.2021 12:00:02 | 76.05 / 51 | 1400\n72. 2021-09-07T12:00:01Z | Списание с расчетного счета 00000000171 от 07.09.2021 12:00:01 | 69.01 / 51 | 741.92\n73. 2021-09-07T12:00:00Z | Списание с расчетного счета 00000000170 от 07.09.2021 12:00:00 | 69.11 / 51 | 215.22\n74. 2021-08-31T12:00:04Z | Поступление на расчетный счет 00000000011 от 31.08.2021 12:00:04 | 51 / 62.02 | 120500\n75. 2021-08-31T12:00:03Z | Списание с расчетного счета 00000000169 от 31.08.2021 12:00:03 | 70 / 51 | 34642.18\n76. 2021-08-31T12:00:02Z | Списание с расчетного счета 00000000168 от 31.08.2021 12:00:02 | 70 / 51 | 33613.36\n77. 2021-08-31T12:00:01Z | Списание с расчетного счета 00000000167 от 31.08.2021 12:00:01 | 68.01.1 / 51 | 10199\n78. 2021-08-31T12:00:00Z | Списание с расчетного счета 00000000166 от 31.08.2021 12:00:00 | 91.02 / 51 | 341.28\n79. 2021-08-13T12:00:00Z | Списание с расчетного счета 00000000165 от 13.08.2021 12:00:00 | 76.05 / 51 | 1400\n80. 2021-08-12T12:00:02Z | Списание с расчетного счета 00000000164 от 12.08.2021 12:00:02 | 70 / 51 | 25363.04\n81. 2021-08-12T12:00:01Z | Списание с расчетного счета 00000000163 от 12.08.2021 12:00:01 | 68.01.1 / 51 | 3790\n82. 2021-08-12T12:00:00Z | Списание с расчетного счета 00000000162 от 12.08.2021 12:00:00 | 91.02 / 51 | 126.82\n83. 2021-08-11T12:00:00Z | Списание с расчетного счета 00000000160 от 11.08.2021 12:00:00 | 66.04 / 51 | 6410.96\n84. 2021-08-09T12:00:00Z | Списание с расчетного счета 00000000161 от 09.08.2021 12:00:00 | 91.02 / 51 | 990\n85. 2021-08-06T12:00:03Z | Списание с расчетного счета 00000000159 от 06.08.2021 12:00:03 | 69.02.7 / 51 | 16268.03\n86. 2021-08-06T12:00:02Z | Списание с расчетного счета 00000000158 от 06.08.2021 12:00:02 | 69.03.1 / 51 | 6624.56\n87. 2021-08-06T12:00:01Z | Списание с расчетного счета 00000000157 от 06.08.2021 12:00:01 | 69.01 / 51 | 741.96\n88. 2021-08-06T12:00:00Z | Списание с расчетного счета 00000000156 от 06.08.2021 12:00:00 | 69.11 / 51 | 263.96\n89. 2021-08-05T12:00:05Z | Списание с расчетного счета 00000000155 от 05.08.2021 12:00:05 | 68.04.1 / 51 | 125\n90. 2021-08-05T12:00:04Z | Списание с расчетного счета 00000000154 от 05.08.2021 12:00:04 | 68.04.1 / 51 | 3449\n91. 2021-08-05T12:00:03Z | Списание с расчетного счета 00000000153 от 05.08.2021 12:00:03 | 68.04.1 / 51 | 607\n92. 2021-08-05T12:00:02Z | Списание с расчетного счета 00000000152 от 05.08.2021 12:00:02 | 69.02.7 / 51 | 55.77\n93. 2021-08-05T12:00:01Z | Списание с расчетного счета 00000000151 от 05.08.2021 12:00:01 | 69.03.1 / 51 | 1\n94. 2021-08-05T12:00:00Z | Списание с расчетного счета 00000000150 от 05.08.2021 12:00:00 | 69.01 / 51 | 0.15\n95. 2021-07-29T12:00:02Z | Списание с расчетного счета 00000000149 от 29.07.2021 12:00:02 | 70 / 51 | 34310\n96. 2021-07-29T12:00:01Z | Списание с расчетного счета 00000000148 от 29.07.2021 12:00:01 | 68.01.1 / 51 | 9490\n97. 2021-07-29T12:00:00Z | Списание с расчетного счета 00000000147 от 29.07.2021 12:00:00 | 91.02 / 51 | 171.55\n98. 2021-07-16T12:00:00Z | Списание с расчетного счета 00000000146 от 16.07.2021 12:00:00 | 76.05 / 51 | 1400\n99. 2021-07-14T12:00:01Z | Списание с расчетного счета 00000000145 от 14.07.2021 12:00:01 | 70 / 51 | 29200\n100. 2021-07-14T12:00:00Z | Списание с расчетного счета 00000000144 от 14.07.2021 12:00:00 | 91.02 / 51 | 146\n101. 2021-07-12T12:00:03Z | Списание с расчетного счета 00000000143 от 12.07.2021 12:00:03 | 69.02.7 / 51 | 15370.08\n102. 2021-07-12T12:00:02Z | Списание с расчетного счета 00000000142 от 12.07.2021 12:00:02 | 69.03.1 / 51 | 6177.6\n103. 2021-07-12T12:00:01Z | Списание с расчетного счета 00000000141 от 12.07.2021 12:00:01 | 69.01 / 51 | 741.96\n104. 2021-07-12T12:00:00Z | Списание с расчетного счета 00000000140 от 12.07.2021 12:00:00 | 69.11 / 51 | 246\n105. 2021-07-09T12:00:03Z | Списание с расчетного счета 00000000139 от 09.07.2021 12:00:03 | 70 / 51 | 51312.53\n106. 2021-07-09T12:00:02Z | Списание с расчетного счета 00000000138 от 09.07.2021 12:00:02 | 68.01.1 / 51 | 7667\n107. 2021-07-09T12:00:01Z | Списание с расчетного счета 00000000137 от 09.07.2021 12:00:01 | 91.02 / 51 | 990\n108. 2021-07-09T12:00:00Z | Списание с расчетного счета 00000000136 от 09.07.2021 12:00:00 | 91.02 / 51 | 256.56\n109. 2021-07-05T12:00:01Z | Списание с расчетного счета 00000000135 от 05.07.2021 12:00:01 | 60.02 / 51 | 302560\n110. 2021-07-05T12:00:00Z | Списание с расчетного счета 00000000134 от 05.07.2021 12:00:00 | 91.02 / 51 | 1401.37\n111. 2021-06-29T12:00:03Z | Списание с расчетного счета 00000000133 от 29.06.2021 12:00:03 | 70 / 51 | 34310\n112. 2021-06-29T12:00:02Z | Списание с расчетного счета 00000000132 от 29.06.2021 12:00:02 | 70 / 51 | 23500\n113. 2021-06-29T12:00:01Z | Списание с расчетного счета 00000000131 от 29.06.2021 12:00:01 | 68.01.1 / 51 | 15990\n114. 2021-06-29T12:00:00Z | Списание с расчетного счета 00000000130 от 29.06.2021 12:00:00 | 91.02 / 51 | 289.05\n115. 2021-06-22T12:00:00Z | Поступление на расчетный счет 00000000010 от 22.06.2021 12:00:00 | 51 / 62.02 | 498630\n116. 2021-06-16T12:00:00Z | Списание с расчетного счета 00000000129 от 16.06.2021 12:00:00 | 60.02 / 51 | 105310\n117. 2021-06-15T12:00:03Z | Списание с расчетного счета 00000000128 от 15.06.2021 12:00:03 | 70 / 51 | 29200\n118. 2021-06-15T12:00:02Z | Списание с расчетного счета 00000000127 от 15.06.2021 12:00:02 | 70 / 51 | 20000\n119. 2021-06-15T12:00:01Z | Списание с расчетного счета 00000000126 от 15.06.2021 12:00:01 | 76.05 / 51 | 1400\n120. 2021-06-15T12:00:00Z | Списание с расчетного счета 00000000125 от 15.06.2021 12:00:00 | 91.02 / 51 | 246\n121. 2021-06-11T12:00:01Z | Списание с расчетного счета 00000000124 от 11.06.2021 12:00:01 | 60.02 / 51 | 119210\n122. 2021-06-11T12:00:00Z | Списание с расчетного счета 00000000123 от 11.06.2021 12:00:00 | 91.02 / 51 | 1000\n123. 2021-06-09T12:00:05Z | Поступление на расчетный счет 00000000009 от 09.06.2021 12:00:05 | 51 / 62.02 | 418960\n124. 2021-06-09T12:00:04Z | Списание с расчетного счета 00000000122 от 09.06.2021 12:00:04 | 69.02.7 / 51 | 15370.08\n125. 2021-06-09T12:00:03Z | Списание с расчетного счета 00000000121 от 09.06.2021 12:00:03 | 69.03.1 / 51 | 6175.08\n126. 2021-06-09T12:00:02Z | Списание с расчетного счета 00000000120 от 09.06.2021 12:00:02 | 91.02 / 51 | 990\n127. 2021-06-09T12:00:01Z | Списание с расчетного счета 00000000119 от 09.06.2021 12:00:01 | 69.01 / 51 | 741.92\n128. 2021-06-09T12:00:00Z | Списание с расчетного счета 00000000118 от 09.06.2021 12:00:00 | 69.11 / 51 | 246\n129. 2021-05-31T12:00:03Z | Списание с расчетного счета 00000000117 от 31.05.2021 12:00:03 | 70 / 51 | 34310\n130. 2021-05-31T12:00:02Z | Списание с расчетного счета 00000000116 от 31.05.2021 12:00:02 | 70 / 51 | 23500\n131. 2021-05-31T12:00:01Z | Списание с расчетного счета 00000000115 от 31.05.2021 12:00:01 | 68.01.1 / 51 | 15990\n132. 2021-05-31T12:00:00Z | Списание с расчетного счета 00000000114 от 31.05.2021 12:00:00 | 91.02 / 51 | 289.05\n133. 2021-05-19T12:00:00Z | Списание с расчетного счета 00000000113 от 19.05.2021 12:00:00 | 76.05 / 51 | 1400\n134. 2021-05-18T12:00:00Z | Списание с расчетного счета 00000000112 от 18.05.2021 12:00:00 | 60.02 / 51 | 180230\n135. 2021-05-13T00:00:06Z | Списание с расчетного счета 00000000110 от 13.05.2021 0:00:06 | 70 / 51 | 29200\n136. 2021-05-13T00:00:05Z | Списание с расчетного счета 00000000109 от 13.05.2021 0:00:05 | 70 / 51 | 20000\n137. 2021-05-13T00:00:04Z | Списание с расчетного счета 00000000108 от 13.05.2021 0:00:04 | 69.02.7 / 51 | 15370.08\n138. 2021-05-13T00:00:03Z | Списание с расчетного счета 00000000107 от 13.05.2021 0:00:03 | 69.03.1 / 51 | 6175.08\n139. 2021-05-13T00:00:02Z | Списание с расчетного счета 00000000106 от 13.05.2021 0:00:02 | 69.01 / 51 | 741.92\n140. 2021-05-13T00:00:01Z | Списание с расчетного счета 00000000105 от 13.05.2021 0:00:01 | 69.11 / 51 | 246\n141. 2021-05-13T00:00:00Z | Списание с расчетного счета 00000000104 от 13.05.2021 0:00:00 | 91.02 / 51 | 246\n142. 2021-05-09T12:00:00Z | Списание с расчетного счета 00000000111 от 09.05.2021 12:00:00 | 91.02 / 51 | 990\n143. 2021-04-29T12:00:01Z | Списание с расчетного счета 00000000103 от 29.04.2021 12:00:01 | 91.02 / 51 | 8\n144. 2021-04-29T12:00:00Z | Списание с расчетного счета 00000000102 от 29.04.2021 12:00:00 | 60.02 / 51 | 217415\n145. 2021-04-28T12:00:08Z | Поступление на расчетный счет 00000000008 от 28.04.2021 12:00:08 | 51 / 62.02 | 564300\n146. 2021-04-28T12:00:07Z | Списание с расчетного счета 00000000101 от 28.04.2021 12:00:07 | 60.02 / 51 | 114640\n147. 2021-04-28T12:00:06Z | Списание с расчетного счета 00000000100 от 28.04.2021 12:00:06 | 60.02 / 51 | 72000\n148. 2021-04-28T12:00:05Z | Списание с расчетного счета 00000000099 от 28.04.2021 12:00:05 | 70 / 51 | 34310\n149. 2021-04-28T12:00:04Z | Списание с расчетного счета 00000000098 от 28.04.2021 12:00:04 | 70 / 51 | 23500\n150. 2021-04-28T12:00:03Z | Списание с расчетного счета 00000000097 от 28.04.2021 12:00:03 | 68.01.1 / 51 | 15990\n151. 2021-04-28T12:00:02Z | Списание с расчетного счета 00000000096 от 28.04.2021 12:00:02 | 91.02 / 51 | 289.05\n152. 2021-04-28T12:00:01Z | Списание с расчетного счета 00000000095 от 28.04.2021 12:00:01 | 91.02 / 51 | 37\n153. 2021-04-28T12:00:00Z | Списание с расчетного счета 00000000094 от 28.04.2021 12:00:00 | 91.02 / 51 | 8\n154. 2021-04-27T12:00:01Z | Списание с расчетного счета 00000000093 от 27.04.2021 12:00:01 | 60.02 / 51 | 659320\n155. 2021-04-27T12:00:00Z | Списание с расчетного счета 00000000092 от 27.04.2021 12:00:00 | 91.02 / 51 | 8\n156. 2021-04-26T12:00:02Z | Списание с расчетного счета 00000000091 от 26.04.2021 12:00:02 | 60.02 / 51 | 109610\n157. 2021-04-26T12:00:01Z | Списание с расчетного счета 00000000090 от 26.04.2021 12:00:01 | 68.02 / 51 | 10010\n158. 2021-04-26T12:00:00Z | Списание с расчетного счета 00000000089 от 26.04.2021 12:00:00 | 91.02 / 51 | 8\n159. 2021-04-22T12:00:00Z | Поступление на расчетный счет 00000000007 от 22.04.2021 12:00:00 | 51 / 62.02 | 982420\n160. 2021-04-19T12:00:01Z | Списание с расчетного счета 00000000088 от 19.04.2021 12:00:01 | 60.02 / 51 | 162300\n161. 2021-04-19T12:00:00Z | Списание с расчетного счета 00000000087 от 19.04.2021 12:00:00 | 91.02 / 51 | 8\n162. 2021-04-16T12:00:00Z | Списание с расчетного счета 00000000086 от 16.04.2021 12:00:00 | 76.05 / 51 | 1400\n163. 2021-04-13T12:00:11Z | Поступление на расчетный счет 00000000006 от 13.04.2021 12:00:11 | 51 / 62.02 | 1882400\n164. 2021-04-13T12:00:10Z | Списание с расчетного счета 00000000085 от 13.04.2021 12:00:10 | 66.03 / 51 | 1000000\n165. 2021-04-13T12:00:09Z | Списание с расчетного счета 00000000084 от 13.04.2021 12:00:09 | 60.02 / 51 | 615320\n166. 2021-04-13T12:00:08Z | Списание с расчетного счета 00000000083 от 13.04.2021 12:00:08 | 60.02 / 51 | 144320\n167. 2021-04-13T12:00:07Z | Списание с расчетного счета 00000000082 от 13.04.2021 12:00:07 | 70 / 51 | 29200\n168. 2021-04-13T12:00:06Z | Списание с расчетного счета 00000000081 от 13.04.2021 12:00:06 | 70 / 51 | 20000\n169. 2021-04-13T12:00:05Z | Списание с расчетного счета 00000000080 от 13.04.2021 12:00:05 | 66.04 / 51 | 19139.34\n170. 2021-04-13T12:00:04Z | Списание с расчетного счета 00000000079 от 13.04.2021 12:00:04 | 69.02.7 / 51 | 15370.08\n171. 2021-04-13T12:00:03Z | Списание с расчетного счета 00000000078 от 13.04.2021 12:00:03 | 69.03.1 / 51 | 6175.08\n172. 2021-04-13T12:00:02Z | Списание с расчетного счета 00000000077 от 13.04.2021 12:00:02 | 91.02 / 51 | 246\n173. 2021-04-13T12:00:01Z | Списание с расчетного счета 00000000076 от 13.04.2021 12:00:01 | 69.01 / 51 | 741.94\n174. 2021-04-13T12:00:00Z | Списание с расчетного счета 00000000075 от 13.04.2021 12:00:00 | 69.11 / 51 | 246\n175. 2021-04-09T12:00:00Z | Списание с расчетного счета 00000000074 от 09.04.2021 12:00:00 | 91.02 / 51 | 2100\n176. 2021-04-06T12:00:01Z | Списание с расчетного счета 00000000073 от 06.04.2021 12:00:01 | 60.02 / 51 | 11900\n177. 2021-04-06T12:00:00Z | Списание с расчетного счета 00000000072 от 06.04.2021 12:00:00 | 91.02 / 51 | 37\n178. 2021-03-31T12:00:05Z | Списание с расчетного счета 00000000071 от 31.03.2021 12:00:05 | 70 / 51 | 34310\n179. 2021-03-31T12:00:04Z | Списание с расчетного счета 00000000070 от 31.03.2021 12:00:04 | 70 / 51 | 23500\n180. 2021-03-31T12:00:03Z | Списание с расчетного счета 00000000069 от 31.03.2021 12:00:03 | 68.01.1 / 51 | 15990\n181. 2021-03-31T12:00:02Z | Списание с расчетного счета 00000000068 от 31.03.2021 12:00:02 | 91.02 / 51 | 289.05\n182. 2021-03-31T12:00:01Z | Списание с расчетного счета 00000000067 от 31.03.2021 12:00:01 | 70 / 51 | 50\n183. 2021-03-31T12:00:00Z | Списание с расчетного счета 00000000066 от 31.03.2021 12:00:00 | 91.02 / 51 | 37\n184. 2021-03-25T12:00:02Z | Поступление на расчетный счет 00000000005 от 25.03.2021 12:00:02 | 51 / 62.02 | 644315\n185. 2021-03-25T12:00:01Z | Списание с расчетного счета 00000000065 от 25.03.2021 12:00:01 | 60.02 / 51 | 990830\n186. 2021-03-25T12:00:00Z | Списание с расчетного счета 00000000064 от 25.03.2021 12:00:00 | 91.02 / 51 | 8\n187. 2021-03-24T12:00:03Z | Поступление на расчетный счет 00000000004 от 24.03.2021 12:00:03 | 51 / 62.02 | 1219990\n188. 2021-03-24T12:00:02Z | Списание с расчетного счета 00000000062 от 24.03.2021 12:00:02 | 60.01 / 51 | 530490\n189. 2021-03-24T12:00:01Z | Списание с расчетного счета 00000000061 от 24.03.2021 12:00:01 | 60.02 / 51 | 144220\n190. 2021-03-24T12:00:00Z | Списание с расчетного счета 00000000060 от 24.03.2021 12:00:00 | 91.02 / 51 | 37\n191. 2021-03-23T12:00:01Z | Списание с расчетного счета 00000000058 от 23.03.2021 12:00:01 | 66.04 / 51 | 37377.05\n192. 2021-03-23T12:00:00Z | Списание с расчетного счета 00000000057 от 23.03.2021 12:00:00 | 66.03 / 51 | 600000\n193. 2021-03-22T12:00:03Z | Списание с расчетного счета 00000000197 от 22.03.2021 12:00:03 | 66.02 / 51 | 31857.79\n194. 2021-03-22T12:00:01Z | Списание с расчетного счета 00000000063 от 22.03.2021 12:00:01 | 66.02 / 51 | 1902.12\n195. 2021-03-22T12:00:00Z | Списание с расчетного счета 00000000059 от 22.03.2021 12:00:00 | 66.01 / 51 | 945302.69\n196. 2021-03-19T12:00:00Z | Списание с расчетного счета 00000000055 от 19.03.2021 12:00:00 | 76.05 / 51 | 1400\n197. 2021-03-18T12:00:00Z | Поступление на расчетный счет 00000000003 от 18.03.2021 12:00:00 | 51 / 62.02 | 1425310\n198. 2021-03-16T12:00:00Z | Списание с расчетного счета 00000000056 от 16.03.2021 12:00:00 | 91.02 / 51 | 60\n199. 2021-03-15T12:00:01Z | Списание с расчетного счета 00000000054 от 15.03.2021 12:00:01 | 66.02 / 51 | 7981.6\n200. 2021-03-15T12:00:00Z | Списание с расчетного счета 00000000053 от 15.03.2021 12:00:00 | 66.01 / 51 | 47921.4\n201. 2021-03-12T12:00:03Z | Поступление на расчетный счет 00000000002 от 12.03.2021 12:00:03 | 51 / 62.02 | 214600\n202. 2021-03-12T12:00:02Z | Списание с расчетного счета 00000000052 от 12.03.2021 12:00:02 | 70 / 51 | 29200\n203. 2021-03-12T12:00:01Z | Списание с расчетного счета 00000000051 от 12.03.2021 12:00:01 | 70 / 51 | 20000\n204. 2021-03-12T12:00:00Z | Списание с расчетного счета 00000000050 от 12.03.2021 12:00:00 | 91.02 / 51 | 246\n205. 2021-03-10T12:00:04Z | Списание с расчетного счета 00000000049 от 10.03.2021 12:00:04 | 60.02 / 51 | 56930\n206. 2021-03-10T12:00:03Z | Списание с расчетного счета 00000000047 от 10.03.2021 12:00:03 | 69.03.1 / 51 | 6175.08\n207. 2021-03-10T12:00:02Z | Списание с расчетного счета 00000000046 от 10.03.2021 12:00:02 | 69.11 / 51 | 246\n208. 2021-03-10T12:00:01Z | Списание с расчетного счета 00000000045 от 10.03.2021 12:00:01 | 69.01 / 51 | 741.94\n209. 2021-03-10T12:00:00Z | Списание с расчетного счета 00000000044 от 10.03.2021 12:00:00 | 91.02 / 51 | 2100\n210. 2021-03-10T00:00:00Z | Списание с расчетного счета 00000000048 от 10.03.2021 0:00:00 | 69.02.7 / 51 | 15370.08\n211. 2021-02-26T12:00:05Z | Списание с расчетного счета 00000000043 от 26.02.2021 12:00:05 | 60.02 / 51 | 50000\n212. 2021-02-26T12:00:04Z | Списание с расчетного счета 00000000042 от 26.02.2021 12:00:04 | 70 / 51 | 34310\n213. 2021-02-26T12:00:03Z | Списание с расчетного счета 00000000041 от 26.02.2021 12:00:03 | 70 / 51 | 23500\n214. 2021-02-26T12:00:02Z | Списание с расчетного счета 00000000040 от 26.02.2021 12:00:02 | 68.01.1 / 51 | 15990\n215. 2021-02-26T12:00:01Z | Списание с расчетного счета 00000000039 от 26.02.2021 12:00:01 | 91.02 / 51 | 289.05\n216. 2021-02-26T12:00:00Z | Списание с расчетного счета 00000000038 от 26.02.2021 12:00:00 | 70 / 51 | 50\n217. 2021-02-20T12:00:00Z | Списание с расчетного счета 00000000037 от 20.02.2021 12:00:00 | 60.02 / 51 | 320600\n218. 2021-02-19T12:00:01Z | Поступление на расчетный счет 00000000001 от 19.02.2021 12:00:01 | 51 / 62.02 | 518600\n219. 2021-02-19T12:00:00Z | Списание с расчетного счета 00000000036 от 19.02.2021 12:00:00 | 76.05 / 51 | 1400\n220. 2021-02-16T12:00:00Z | Списание с расчетного счета 00000000035 от 16.02.2021 12:00:00 | 91.02 / 51 | 60\n221. 2021-02-15T12:00:01Z | Списание с расчетного счета 00000000034 от 15.02.2021 12:00:01 | 66.02 / 51 | 27265.44\n222. 2021-02-15T12:00:00Z | Списание с расчетного счета 00000000033 от 15.02.2021 12:00:00 | 66.01 / 51 | 2137760.56\n223. 2021-02-12T12:00:02Z | Списание с расчетного счета 00000000031 от 12.02.2021 12:00:02 | 70 / 51 | 29200\n224. 2021-02-12T12:00:01Z | Списание с расчетного счета 00000000030 от 12.02.2021 12:00:01 | 70 / 51 | 20000\n225. 2021-02-12T12:00:00Z | Списание с расчетного счета 00000000029 от 12.02.2021 12:00:00 | 91.02 / 51 | 246\n226. 2021-02-09T12:00:00Z | Списание с расчетного счета 00000000032 от 09.02.2021 12:00:00 | 91.02 / 51 | 2100\n227. 2021-02-02T12:00:03Z | Списание с расчетного счета 00000000028 от 02.02.2021 12:00:03 | 60.02 / 51 | 425600\n228. 2021-02-02T12:00:02Z | Списание с расчетного счета 00000000027 от 02.02.2021 12:00:02 | 66.04 / 51 | 77854.1\n229. 2021-02-02T12:00:01Z | Списание с расчетного счета 00000000026 от 02.02.2021 12:00:01 | 66.04 / 51 | 28196.72\n230. 2021-02-02T12:00:00Z | Списание с расчетного счета 00000000025 от 02.02.2021 12:00:00 | 91.02 / 51 | 37\n231. 2021-01-29T12:00:03Z | Списание с расчетного счета 00000000024 от 29.01.2021 12:00:03 | 69.02.7 / 51 | 10720.08\n232. 2021-01-29T12:00:02Z | Списание с расчетного счета 00000000023 от 29.01.2021 12:00:02 | 69.03.1 / 51 | 3850.58\n233. 2021-01-29T12:00:01Z | Списание с расчетного счета 00000000022 от 29.01.2021 12:00:01 | 69.01 / 51 | 741.94\n234. 2021-01-29T12:00:00Z | Списание с расчетного счета 00000000021 от 29.01.2021 12:00:00 | 69.11 / 51 | 153\n235. 2021-01-28T12:00:02Z | Списание с расчетного счета 00000000020 от 28.01.2021 12:00:02 | 60.02 / 51 | 126300\n236. 2021-01-28T12:00:01Z | Списание с расчетного счета 00000000019 от 28.01.2021 12:00:01 | 91.02 / 51 | 179.78\n237. 2021-01-28T12:00:00Z | Списание с расчетного счета 00000000016 от 28.01.2021 12:00:00 | 70 / 51 | 17155\n238. 2021-01-28T00:00:00Z | Списание с расчетного счета 00000000018 от 28.01.2021 0:00:00 | 68.01.1 / 51 | 9945\n239. 2021-01-28T00:00:00Z | Списание с расчетного счета 00000000017 от 28.01.2021 0:00:00 | 70 / 51 | 18800\n240. 2021-01-28T00:00:00Z | Списание с расчетного счета 00000000015 от 28.01.2021 0:00:00 | 70 / 51 | 50\n241. 2021-01-25T12:00:00Z | Списание с расчетного счета 00000000014 от 25.01.2021 12:00:00 | 68.02 / 51 | 88003\n242. 2021-01-18T12:00:04Z | Списание с расчетного счета 00000000013 от 18.01.2021 12:00:04 | 70 / 51 | 16000\n243. 2021-01-18T12:00:03Z | Списание с расчетного счета 00000000012 от 18.01.2021 12:00:03 | 70 / 51 | 14600\n244. 2021-01-18T12:00:02Z | Списание с расчетного счета 00000000011 от 18.01.2021 12:00:02 | 91.02 / 51 | 2500\n245. 2021-01-18T12:00:01Z | Списание с расчетного счета 00000000010 от 18.01.2021 12:00:01 | 76.05 / 51 | 1400\n246. 2021-01-18T12:00:00Z | Списание с расчетного счета 00000000009 от 18.01.2021 12:00:00 | 91.02 / 51 | 153\n247. 2021-01-16T12:00:00Z | Списание с расчетного счета 00000000008 от 16.01.2021 12:00:00 | 91.02 / 51 | 60\n248. 2021-01-15T12:00:05Z | Списание с расчетного счета 00000000007 от 15.01.2021 12:00:05 | 66.02 / 51 | 28403.09\n249. 2021-01-15T12:00:04Z | Списание с расчетного счета 00000000006 от 15.01.2021 12:00:04 | 66.01 / 51 | 136622.91\n250. 2021-01-15T12:00:03Z | Списание с расчетного счета 00000000005 от 15.01.2021 12:00:03 | 69.02.7 / 51 | 10561.2\n251. 2021-01-15T12:00:02Z | Списание с расчетного счета 00000000004 от 15.01.2021 12:00:02 | 69.03.1 / 51 | 3849.26\n252. 2021-01-15T12:00:01Z | Списание с расчетного счета 00000000003 от 15.01.2021 12:00:01 | 69.01 / 51 | 703.54\n253. 2021-01-15T12:00:00Z | Списание с расчетного счета 00000000002 от 15.01.2021 12:00:00 | 69.11 / 51 | 153\n254. 2021-01-09T12:00:00Z | Списание с расчетного счета 00000000001 от 09.01.2021 12:00:00 | 91.02 / 51 | 2100\n255. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 51 / 62.02 | 3248300\n256. 2020-12-25T12:00:04Z | Списание с расчетного счета 00000000299 от 25.12.2020 12:00:04 | 91.02 / 51 | 179.78\n257. 2020-12-25T12:00:03Z | Списание с расчетного счета 00000000298 от 25.12.2020 12:00:03 | 68.01.1 / 51 | 9945\n258. 2020-12-25T12:00:02Z | Списание с расчетного счета 00000000297 от 25.12.2020 12:00:02 | 70 / 51 | 18800\n259. 2020-12-25T12:00:01Z | Списание с расчетного счета 00000000296 от 25.12.2020 12:00:01 | 70 / 51 | 17155\n260. 2020-12-25T12:00:00Z | Списание с расчетного счета 00000000295 от 25.12.2020 12:00:00 | 70 / 51 | 50\n261. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 51 / 62.02 | 216600\n262. 2020-12-16T16:20:52Z | Списание с расчетного счета 00000000294 от 16.12.2020 16:20:52 | 69.03.1 / 51 | 3849.26\n263. 2020-12-16T16:20:51Z | Списание с расчетного счета 00000000293 от 16.12.2020 16:20:51 | 91.02 / 51 | 60\n264. 2020-12-16T16:20:50Z | Списание с расчетного счета 00000000292 от 16.12.2020 16:20:50 | 69.02.7 / 51 | 10561.2\n265. 2020-12-16T16:20:27Z | Списание с расчетного счета 00000000291 от 16.12.2020 16:20:27 | 69.01 / 51 | 703.54\n266. 2020-12-16T16:20:06Z | Списание с расчетного счета 00000000290 от 16.12.2020 16:20:06 | 69.11 / 51 | 153\n267. 2020-12-15T11:13:41Z | Списание с расчетного счета 00000000289 от 15.12.2020 11:13:41 | 91.02 / 51 | 153\n268. 2020-12-15T11:13:40Z | Списание с расчетного счета 00000000288 от 15.12.2020 11:13:40 | 70 / 51 | 16000\n269. 2020-12-15T11:13:39Z | Списание с расчетного счета 00000000287 от 15.12.2020 11:13:39 | 70 / 51 | 14600\n270. 2020-12-15T11:13:38Z | Списание с расчетного счета 00000000286 от 15.12.2020 11:13:38 | 76.05 / 51 | 1400\n271. 2020-12-15T11:13:37Z | Списание с расчетного счета 00000000285 от 15.12.2020 11:13:37 | 66.02 / 51 | 28622.55\n272. 2020-12-15T11:13:21Z | Списание с расчетного счета 00000000284 от 15.12.2020 11:13:21 | 66.01 / 51 | 136403.45\n273. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 51 / 62.02 | 200000\n274. 2020-12-09T12:00:00Z | Списание с расчетного счета 00000000283 от 09.12.2020 12:00:00 | 91.02 / 51 | 2100\n275. 2020-11-30T12:00:07Z | Поступление на расчетный счет 00000000041 от 30.11.2020 12:00:07 | 51 / 62.02 | 38900\n276. 2020-11-30T12:00:06Z | Списание с расчетного счета 00000000282 от 30.11.2020 12:00:06 | 70 / 51 | 18800\n277. 2020-11-30T12:00:05Z | Списание с расчетного счета 00000000281 от 30.11.2020 12:00:05 | 70 / 51 | 17155\n278. 2020-11-30T12:00:04Z | Списание с расчетного счета 00000000280 от 30.11.2020 12:00:04 | 68.01.1 / 51 | 9945\n279. 2020-11-30T12:00:03Z | Списание с расчетного счета 00000000278 от 30.11.2020 12:00:03 | 70 / 51 | 50\n280. 2020-11-30T12:00:02Z | Списание с расчетного счета 00000000277 от 30.11.2020 12:00:02 | 91.02 / 51 | 37\n281. 2020-11-30T00:00:00Z | Списание с расчетного счета 00000000279 от 30.11.2020 0:00:00 | 91.02 / 51 | 179.78\n282. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 900000\n283. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 144749\n284. 2020-11-26T12:00:02Z | Списание с расчетного счета 00000000276 от 26.11.2020 12:00:02 | 60.01 / 51 | 524730.5\n285. 2020-11-26T12:00:02Z | Списание с расчетного счета 00000000276 от 26.11.2020 12:00:02 | 60.01 / 51 | 210770.5\n286. 2020-11-26T12:00:01Z | Списание с расчетного счета 00000000275 от 26.11.2020 12:00:01 | 66.03 / 51 | 400000\n287. 2020-11-26T12:00:00Z | Списание с расчетного счета 00000000274 от 26.11.2020 12:00:00 | 91.02 / 51 | 74\n288. 2020-11-23T12:00:01Z | Списание с расчетного счета 00000000273 от 23.11.2020 12:00:01 | 60.01 / 51 | 5429.5\n289. 2020-11-23T12:00:01Z | Списание с расчетного счета 00000000273 от 23.11.2020 12:00:01 | 60.01 / 51 | 63870.5\n290. 2020-11-23T12:00:00Z | Списание с расчетного счета 00000000272 от 23.11.2020 12:00:00 | 91.02 / 51 | 37\n291. 2020-11-19T12:00:04Z | Поступление на расчетный счет 00000000039 от 19.11.2020 12:00:04 | 51 / 62.02 | 1041800\n292. 2020-11-19T12:00:04Z | Поступление на расчетный счет 00000000039 от 19.11.2020 12:00:04 | 51 / 62.01 | 2278800\n293. 2020-11-19T12:00:03Z | Списание с расчетного счета 00000000271 от 19.11.2020 12:00:03 | 66.03 / 51 | 2335000\n294. 2020-11-19T12:00:02Z | Списание с расчетного счета 00000000270 от 19.11.2020 12:00:02 | 60.02 / 51 | 900000\n295. 2020-11-19T12:00:01Z | Списание с расчетного счета 00000000269 от 19.11.2020 12:00:01 | 91.02 / 51 | 37\n296. 2020-11-19T12:00:00Z | Списание с расчетного счета 00000000268 от 19.11.2020 12:00:00 | 91.02 / 51 | 8\n297. 2020-11-18T12:00:05Z | Поступление на расчетный счет 00000000038 от 18.11.2020 12:00:05 | 51 / 62.01 | 745300\n298. 2020-11-18T12:00:04Z | Поступление на расчетный счет 00000000037 от 18.11.2020 12:00:04 | 51 / 62.01 | 320000\n299. 2020-11-18T12:00:03Z | Списание с расчетного счета 00000000267 от 18.11.2020 12:00:03 | 60.02 / 51 | 144749\n300. 2020-11-18T12:00:03Z | Списание с расчетного счета 00000000267 от 18.11.2020 12:00:03 | 60.01 / 51 | 160000\n301. 2020-11-18T12:00:03Z | Списание с расчетного счета 00000000267 от 18.11.2020 12:00:03 | 60.01 / 51 | 389551\n302. 2020-11-18T12:00:02Z | Списание с расчетного счета 00000000266 от 18.11.2020 12:00:02 | 60.01 / 51 | 318600\n303. 2020-11-18T12:00:01Z | Списание с расчетного счета 00000000265 от 18.11.2020 12:00:01 | 76.05 / 51 | 1400\n304. 2020-11-18T12:00:00Z | Списание с расчетного счета 00000000264 от 18.11.2020 12:00:00 | 91.02 / 51 | 16\n305. 2020-11-16T16:08:52Z | Списание с расчетного счета 00000000263 от 16.11.2020 16:08:52 | 60.01 / 51 | 49298\n306. 2020-11-16T16:08:52Z | Списание с расчетного счета 00000000263 от 16.11.2020 16:08:52 | 60.01 / 51 | 3152\n307. 2020-11-16T16:08:51Z | Списание с расчетного счета 00000000262 от 16.11.2020 16:08:51 | 60.02 / 51 | 8700\n308. 2020-11-16T16:08:50Z | Списание с расчетного счета 00000000261 от 16.11.2020 16:08:50 | 91.02 / 51 | 60\n309. 2020-11-16T16:08:49Z | Списание с расчетного счета 00000000260 от 16.11.2020 16:08:49 | 66.01 / 51 | 165026\n310. 2020-11-13T12:00:03Z | Поступление на расчетный счет 00000000036 от 13.11.2020 12:00:03 | 51 / 62.01 | 313600\n311. 2020-11-13T12:00:02Z | Списание с расчетного счета 00000000258 от 13.11.2020 12:00:02 | 70 / 51 | 16000\n312. 2020-11-13T12:00:01Z | Списание с расчетного счета 00000000257 от 13.11.2020 12:00:01 | 70 / 51 | 14600\n313. 2020-11-13T12:00:00Z | Списание с расчетного счета 00000000256 от 13.11.2020 12:00:00 | 91.02 / 51 | 153\n314. 2020-11-13T00:00:00Z | Списание с расчетного счета 00000000259 от 13.11.2020 0:00:00 | 60.01 / 51 | 218400\n315. 2020-11-11T12:00:00Z | Списание с расчетного счета 00000000255 от 11.11.2020 12:00:00 | 66.04 / 51 | 19425.82\n316. 2020-11-10T15:39:13Z | Поступление на расчетный счет 00000000035 от 10.11.2020 15:39:13 | 51 / 62.02 | 328300\n317. 2020-11-09T12:00:00Z | Списание с расчетного счета 00000000253 от 09.11.2020 12:00:00 | 91.02 / 51 | 2100\n318. 2020-11-09T00:00:00Z | Списание с расчетного счета 00000000254 от 09.11.2020 0:00:00 | 60.01 / 51 | 151080\n319. 2020-10-27T12:00:01Z | Списание с расчетного счета 00000000252 от 27.10.2020 12:00:01 | 60.01 / 51 | 120000\n320. 2020-10-27T12:00:00Z | Списание с расчетного счета 00000000251 от 27.10.2020 12:00:00 | 70 / 51 | 50\n321. 2020-10-26T12:00:01Z | Списание с расчетного счета 00000000250 от 26.10.2020 12:00:01 | 68.02 / 51 | 4964\n322. 2020-10-26T12:00:00Z | Поступление на расчетный счет 00000000034 от 26.10.2020 12:00:00 | 51 / 62.02 | 175000\n323. 2020-10-20T12:00:00Z | Списание с расчетного счета 00000000248 от 20.10.2020 12:00:00 | 76.05 / 51 | 1400\n324. 2020-10-16T12:00:00Z | Списание с расчетного счета 00000000249 от 16.10.2020 12:00:00 | 91.02 / 51 | 60\n325. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n326. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53\n327. 2020-10-14T12:00:00Z | Поступление на расчетный счет 00000000033 от 14.10.2020 12:00:00 | 51 / 60.01 | 160000\n328. 2020-10-09T12:00:00Z | Списание с расчетного счета 00000000247 от 09.10.2020 12:00:00 | 91.02 / 51 | 2100\n329. 2020-10-01T12:00:00Z | Списание с расчетного счета 00000000244 от 01.10.2020 12:00:00 | 60.01 / 51 | 49460\n330. 2020-09-30T12:00:03Z | Списание с расчетного счета 00000000243 от 30.09.2020 12:00:03 | 60.01 / 51 | 30000\n331. 2020-09-30T12:00:02Z | Списание с расчетного счета 00000000242 от 30.09.2020 12:00:02 | 70 / 51 | 50\n332. 2020-09-29T12:00:00Z | Списание с расчетного счета 00000000240 от 29.09.2020 12:00:00 | 60.01 / 51 | 159400\n333. 2020-09-23T12:00:03Z | Списание с расчетного счета 00000000241 от 23.09.2020 12:00:03 | 91.02 / 51 | 60\n334. 2020-09-23T12:00:02Z | Списание с расчетного счета 00000000239 от 23.09.2020 12:00:02 | 69.03.1 / 51 | 12.58\n335. 2020-09-23T12:00:01Z | Списание с расчетного счета 00000000238 от 23.09.2020 12:00:01 | 68.02 / 51 | 54.27\n336. 2020-09-23T12:00:00Z | Списание с расчетного счета 00000000237 от 23.09.2020 12:00:00 | 68.02 / 51 | 41441\n337. 2020-09-15T12:00:01Z | Списание с расчетного счета 00000000236 от 15.09.2020 12:00:01 | 66.02 / 51 | 33053.64\n338. 2020-09-15T12:00:00Z | Списание с расчетного счета 00000000235 от 15.09.2020 12:00:00 | 66.01 / 51 | 131972.36\n339. 2020-09-14T12:00:04Z | Списание с расчетного счета 00000000234 от 14.09.2020 12:00:04 | 69.02.7 / 51 | 14973.39\n340. 2020-09-14T12:00:03Z | Списание с расчетного счета 00000000233 от 14.09.2020 12:00:03 | 69.03.1 / 51 | 6055.36\n341. 2020-09-14T12:00:02Z | Списание с расчетного счета 00000000232 от 14.09.2020 12:00:02 | 76.05 / 51 | 1400", + "assistant_reply_first_line": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "materialized_but_not_anchor_matched", + "match_failure_reason": "contract_anchor_not_matched_in_materialized_rows", + "rows_fetched": 1000, + "rows_matched": 341, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-gNpAc_V8WT", + "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", + "anchor_not_matched_fallback_rows" + ], + "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": "19/15 в банковском учете" + }, + "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": "19/15 в банковском учете", + "anchor_value_resolved": "19/15 в банковском учете", + "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": "matched_non_empty", + "rows_fetched": 1000, + "raw_rows_received": 1000, + "rows_after_account_scope": 341, + "rows_after_recipe_filter": 0, + "rows_materialized": 341, + "rows_matched": 341, + "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": "aAz5O7Gr391NO1", + "llm_decomposition_effective_message": "операции по договору 19/15 в банковском учете", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "bank ops by contract 19/15", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "aAz5O7Gr391NO1", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "операции по договору 19/15 в банковском учете" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 55, + "id": "S055", + "question": "ёпт, покажи банк операции по дог 19/15", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_19-30-01-s055", + "status_code": 200, + "ok": true, + "elapsed_ms": 6214, + "reply_type": "factual", + "trace_id": "address-t_zM9SI7-O", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 1.\n1. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "assistant_reply_first_line": "Собран список банковских операций по договору (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 1, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-t_zM9SI7-O", + "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", + "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": "high", + "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": "19/15" + }, + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": 1, + "rows_materialized": 341, + "rows_matched": 1, + "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": "vQHV13k8j5Sy3Y", + "llm_decomposition_effective_message": "покажи банковские операции по договору 19/15", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "покажи банк операции по договор 19/15", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "vQHV13k8j5Sy3Y", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "покажи банковские операции по договору 19/15" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 56, + "id": "S056", + "question": "по контракту 19/15 платежки", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_19-30-01-s056", + "status_code": 200, + "ok": true, + "elapsed_ms": 6994, + "reply_type": "factual", + "trace_id": "address-83PTjllzfX", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 1.\n1. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "assistant_reply_first_line": "Собран список банковских операций по договору (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 1, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-83PTjllzfX", + "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", + "bank_ops_by_contract_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_contract", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "contract": "19/15" + }, + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": 1, + "rows_materialized": 341, + "rows_matched": 1, + "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": "57To5n1cJ-vm17", + "llm_decomposition_effective_message": "показать платежи по контракту 19/15", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "по контракту 19/15 платежки", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "57To5n1cJ-vm17", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "показать платежи по контракту 19/15" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 57, + "id": "S057", + "question": "покажи сальдо по счету 60 за 2020", + "session": "chain_balance_60", + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_19-30-01-chain_balance_60", + "status_code": 200, + "ok": true, + "elapsed_ms": 6012, + "reply_type": "factual", + "trace_id": "address--9vXaiD8nG", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 138, + "rows_matched": 138, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address--9vXaiD8nG", + "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-01-01", + "period_to": "2020-12-31", + "as_of_date": "2020-12-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": 138, + "raw_rows_received": 138, + "rows_after_account_scope": 138, + "rows_after_recipe_filter": 138, + "rows_materialized": 138, + "rows_matched": 138, + "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": "ZHiGU22geLoFVx", + "llm_decomposition_effective_message": "Показать сальдо по счету 60 за период 2020 год.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "покажи сальдо по счету 60 за 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "ZHiGU22geLoFVx", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Показать сальдо по счету 60 за период 2020 год." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 58, + "id": "S058", + "question": "а теперь только май 2020", + "session": "chain_balance_60", + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_19-30-01-chain_balance_60", + "status_code": 200, + "ok": true, + "elapsed_ms": 932, + "reply_type": "factual", + "trace_id": "address-0K1meuBMet", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 6, + "rows_matched": 6, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-0K1meuBMet", + "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", + "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, + "period_from": "2020-05-01", + "period_to": "2020-05-31", + "as_of_date": "2020-05-31", + "account": "60" + }, + "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": "а теперь только май 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 + }, + "error_code": null, + "error_message": null + }, + { + "index": 59, + "id": "S059", + "question": "ок, теперь 2020.05", + "session": "chain_balance_60", + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_19-30-01-chain_balance_60", + "status_code": 200, + "ok": true, + "elapsed_ms": 1017, + "reply_type": "factual", + "trace_id": "address-MnMcmqfINH", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 6, + "rows_matched": 6, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-MnMcmqfINH", + "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", + "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, + "period_from": "2020-05-01", + "period_to": "2020-05-31", + "as_of_date": "2020-05-31", + "account": "60" + }, + "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": "ок, теперь 2020.05", + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "sanitized_user_message": "ок, теперь 2020.05", + "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 + }, + "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_Nightly_stress_102_19-30-01-chain_balance_60", + "status_code": 200, + "ok": true, + "elapsed_ms": 997, + "reply_type": "factual", + "trace_id": "address-P9TadQcXFO", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 6, + "rows_matched": 6, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-P9TadQcXFO", + "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", + "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, + "period_from": "2020-07-01", + "period_to": "2020-07-31", + "as_of_date": "2020-07-31", + "account": "60" + }, + "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": "теперь на 2020-07-31", + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "sanitized_user_message": "теперь на 2020-07-31", + "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 + }, + "error_code": null, + "error_message": null + }, + { + "index": 61, + "id": "X001", + "question": "свк доки кинь за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_19-30-01-x001", + "status_code": 200, + "ok": true, + "elapsed_ms": 8435, + "reply_type": "factual", + "trace_id": "address-KMv1sQ6_rQ", + "assistant_reply": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.\nСобран список документов по контрагенту (live address lane).\nСтрок отобрано: 5.\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-16T16:20:52Z | Списание с расчетного счета 00000000294 от 16.12.2020 16:20:52 | 0 / 0 | 3849.26 | аналитика: УФК по г. Москве (для ГУ - Отделения ПФР по г. Москве и МО)\n4. 2020-12-16T16:20:51Z | Списание с расчетного счета 00000000293 от 16.12.2020 16:20:51 | 0 / 0 | 60 | аналитика: СБЕРБАНК, ПАО\n5. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "assistant_reply_first_line": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "rows_fetched": 20, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-KMv1sQ6_rQ", + "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", + "anchor_not_matched_fallback_rows" + ], + "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": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "mcp_call_status": "matched_non_empty", + "rows_fetched": 20, + "raw_rows_received": 20, + "rows_after_account_scope": 5, + "rows_after_recipe_filter": 0, + "rows_materialized": 5, + "rows_matched": 5, + "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": "qQwIp-IH8mnEOp", + "llm_decomposition_effective_message": "Показать сводные документы за 2020 год.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "свк доки кинь за 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "qQwIp-IH8mnEOp", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Показать сводные документы за 2020 год." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 62, + "id": "X002", + "question": "по свк все документы за 20й год", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_19-30-01-x002", + "status_code": 200, + "ok": true, + "elapsed_ms": 6826, + "reply_type": "factual", + "trace_id": "address-YYiPqkgzsV", + "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 | аналитика: Группа", + "assistant_reply_first_line": "Собран список документов по контрагенту (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 20, + "rows_matched": 3, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-YYiPqkgzsV", + "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": "FGCZGTYq-hnJQ-", + "llm_decomposition_effective_message": "Получить все документы по СВК за 2020 год.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "по свк все документы за 20й год", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "FGCZGTYq-hnJQ-", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Получить все документы по СВК за 2020 год." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 63, + "id": "X003", + "question": "пж вывали доки контрагент свк 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_19-30-01-x003", + "status_code": 200, + "ok": true, + "elapsed_ms": 6057, + "reply_type": "factual", + "trace_id": "address-5Smpmeg5Z-", + "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 | аналитика: Группа", + "assistant_reply_first_line": "Собран список документов по контрагенту (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 20, + "rows_matched": 3, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-5Smpmeg5Z-", + "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": "9dAI9xLs0nuAe2", + "llm_decomposition_effective_message": "Пожалуйста, предоставьте документы по контрагенту СВК за 2020 год.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "вывали доки контрагент свк 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "9dAI9xLs0nuAe2", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Пожалуйста, предоставьте документы по контрагенту СВК за 2020 год." + } + }, + "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_Nightly_stress_102_19-30-01-x004", + "status_code": 200, + "ok": true, + "elapsed_ms": 1025, + "reply_type": "factual", + "trace_id": "address-8Uliv0elfw", + "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 | аналитика: Группа", + "assistant_reply_first_line": "Собран список документов по контрагенту (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 20, + "rows_matched": 3, + "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", + "debug_payload": { + "trace_id": "address-8Uliv0elfw", + "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": "svk", + "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": "svk", + "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": false, + "llm_provider_used": "local", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "документы по контрагенту svk за 2020 год", + "llm_decomposition_reason": "fallback_rule_applied_without_llm", + "fallback_rule_hit": "documents_counterparty_year_rewrite", + "sanitized_user_message": "svk poka docy za 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + }, + "error_code": null, + "error_message": null + }, + { + "index": 65, + "id": "X005", + "question": "какие доки по компании свк за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_19-30-01-x005", + "status_code": 200, + "ok": true, + "elapsed_ms": 6155, + "reply_type": "factual", + "trace_id": "address-saRFJrH4Vc", + "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 | аналитика: Группа", + "assistant_reply_first_line": "Собран список документов по контрагенту (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 20, + "rows_matched": 3, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-saRFJrH4Vc", + "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": "gXnv0juVYiRz_h", + "llm_decomposition_effective_message": "Какие документы по компании СВК за 2020 год?", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "какие доки по компании свк за 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "gXnv0juVYiRz_h", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Какие документы по компании СВК за 2020 год?" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 66, + "id": "X006", + "question": "бля покаж свк документы 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_19-30-01-x006", + "status_code": 200, + "ok": true, + "elapsed_ms": 8439, + "reply_type": "factual", + "trace_id": "address-DYmdh3POsb", + "assistant_reply": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.\nСобран список документов по контрагенту (live address lane).\nСтрок отобрано: 5.\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-16T16:20:52Z | Списание с расчетного счета 00000000294 от 16.12.2020 16:20:52 | 0 / 0 | 3849.26 | аналитика: УФК по г. Москве (для ГУ - Отделения ПФР по г. Москве и МО)\n4. 2020-12-16T16:20:51Z | Списание с расчетного счета 00000000293 от 16.12.2020 16:20:51 | 0 / 0 | 60 | аналитика: СБЕРБАНК, ПАО\n5. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "assistant_reply_first_line": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "rows_fetched": 20, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-DYmdh3POsb", + "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", + "anchor_not_matched_fallback_rows" + ], + "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": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "mcp_call_status": "matched_non_empty", + "rows_fetched": 20, + "raw_rows_received": 20, + "rows_after_account_scope": 5, + "rows_after_recipe_filter": 0, + "rows_materialized": 5, + "rows_matched": 5, + "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": "al5msE2oVw2rjG", + "llm_decomposition_effective_message": "покажи все документы за 2020 год", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "покаж свк документы 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "al5msE2oVw2rjG", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "покажи все документы за 2020 год" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 67, + "id": "X007", + "question": "свк банк операции за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_19-30-01-x007", + "status_code": 200, + "ok": true, + "elapsed_ms": 8997, + "reply_type": "factual", + "trace_id": "address-fTJupKZzYF", + "assistant_reply": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.\nСобран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 5.\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-16T16:20:52Z | Списание с расчетного счета 00000000294 от 16.12.2020 16:20:52 | 0 / 0 | 3849.26 | аналитика: УФК по г. Москве (для ГУ - Отделения ПФР по г. Москве и МО)\n4. 2020-12-16T16:20:51Z | Списание с расчетного счета 00000000293 от 16.12.2020 16:20:51 | 0 / 0 | 60 | аналитика: СБЕРБАНК, ПАО\n5. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "assistant_reply_first_line": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "rows_fetched": 20, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-fTJupKZzYF", + "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", + "object_signal_detected", + "bank_ops_by_counterparty_signal_detected", + "anchor_not_matched_fallback_rows" + ], + "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": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "mcp_call_status": "matched_non_empty", + "rows_fetched": 20, + "raw_rows_received": 20, + "rows_after_account_scope": 5, + "rows_after_recipe_filter": 0, + "rows_materialized": 5, + "rows_matched": 5, + "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": "4hOUC06Fp149xD", + "llm_decomposition_effective_message": "Сверка с контрагентом (банк) по операциям за 2020 год.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "свк банк операции за 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "4hOUC06Fp149xD", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Сверка с контрагентом (банк) по операциям за 2020 год." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 68, + "id": "X008", + "question": "по свк выписку банка за 2020 выведи", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_19-30-01-x008", + "status_code": 200, + "ok": true, + "elapsed_ms": 6910, + "reply_type": "factual", + "trace_id": "address-x98dlPtG4R", + "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 | аналитика: Группа", + "assistant_reply_first_line": "Собран список банковских операций по контрагенту (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 20, + "rows_matched": 3, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-x98dlPtG4R", + "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", + "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": "DOCUMENT_LIST", + "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": "wGt9Xl_mg_LQ8f", + "llm_decomposition_effective_message": "Получить выписку из банка по СВК за 2020 год.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "по свк выписку банка за 2020 выведи", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "wGt9Xl_mg_LQ8f", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Получить выписку из банка по СВК за 2020 год." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 69, + "id": "X009", + "question": "свк платежки за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_19-30-01-x009", + "status_code": 200, + "ok": true, + "elapsed_ms": 9391, + "reply_type": "factual", + "trace_id": "address-0adujHQkV5", + "assistant_reply": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.\nСобран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 5.\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-16T16:20:52Z | Списание с расчетного счета 00000000294 от 16.12.2020 16:20:52 | 0 / 0 | 3849.26 | аналитика: УФК по г. Москве (для ГУ - Отделения ПФР по г. Москве и МО)\n4. 2020-12-16T16:20:51Z | Списание с расчетного счета 00000000293 от 16.12.2020 16:20:51 | 0 / 0 | 60 | аналитика: СБЕРБАНК, ПАО\n5. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "assistant_reply_first_line": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "rows_fetched": 20, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-0adujHQkV5", + "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": [ + "docs_or_bank_signal_detected", + "anchor_like_token_detected", + "document_list_signal_detected", + "bank_ops_by_counterparty_signal_detected", + "anchor_not_matched_fallback_rows" + ], + "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": "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": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "mcp_call_status": "matched_non_empty", + "rows_fetched": 20, + "raw_rows_received": 20, + "rows_after_account_scope": 5, + "rows_after_recipe_filter": 0, + "rows_materialized": 5, + "rows_matched": 5, + "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": "xphaN0ZK2FqRDm", + "llm_decomposition_effective_message": "Сверка платежек за 2020 год.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "свк платежки за 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "xphaN0ZK2FqRDm", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Сверка платежек за 2020 год." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 70, + "id": "X010", + "question": "bank ops svk 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_19-30-01-x010", + "status_code": 200, + "ok": true, + "elapsed_ms": 788, + "reply_type": "factual", + "trace_id": "address-yYv5tiwb5J", + "assistant_reply": "Собран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 1.\n1. 2020-12-16T16:20:51Z | Списание с расчетного счета 00000000293 от 16.12.2020 16:20:51 | 0 / 0 | 60 | аналитика: СБЕРБАНК, ПАО", + "assistant_reply_first_line": "Собран список банковских операций по контрагенту (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 20, + "rows_matched": 1, + "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", + "debug_payload": { + "trace_id": "address-yYv5tiwb5J", + "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": "bank", + "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": "bank", + "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": 1, + "rows_materialized": 5, + "rows_matched": 1, + "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": false, + "llm_provider_used": "local", + "llm_decomposition_trace_id": null, + "llm_decomposition_effective_message": "банковские операции по контрагенту bank за 2020 год", + "llm_decomposition_reason": "fallback_rule_applied_without_llm", + "fallback_rule_hit": "bank_operations_counterparty_year_rewrite", + "sanitized_user_message": "bank ops svk 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + }, + "error_code": null, + "error_message": null + }, + { + "index": 71, + "id": "X011", + "question": "транзакции по свк за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_19-30-01-x011", + "status_code": 200, + "ok": true, + "elapsed_ms": 990, + "reply_type": "factual", + "trace_id": "address-R0Th_Si_Ur", + "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 | аналитика: Группа", + "assistant_reply_first_line": "Собран список банковских операций по контрагенту (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 20, + "rows_matched": 3, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-R0Th_Si_Ur", + "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", + "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": "medium", + "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": 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": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + }, + "error_code": null, + "error_message": null + }, + { + "index": 72, + "id": "X012", + "question": "ёпт по свк че по банку 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_19-30-01-x012", + "status_code": 200, + "ok": true, + "elapsed_ms": 9466, + "reply_type": "factual", + "trace_id": "address-hc524ChvTG", + "assistant_reply": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.\nСобран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 5.\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-16T16:20:52Z | Списание с расчетного счета 00000000294 от 16.12.2020 16:20:52 | 0 / 0 | 3849.26 | аналитика: УФК по г. Москве (для ГУ - Отделения ПФР по г. Москве и МО)\n4. 2020-12-16T16:20:51Z | Списание с расчетного счета 00000000293 от 16.12.2020 16:20:51 | 0 / 0 | 60 | аналитика: СБЕРБАНК, ПАО\n5. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа", + "assistant_reply_first_line": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "rows_fetched": 20, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-hc524ChvTG", + "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", + "bank_ops_by_counterparty_signal_detected", + "anchor_not_matched_fallback_rows" + ], + "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_counterparty", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "account": "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": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "mcp_call_status": "matched_non_empty", + "rows_fetched": 20, + "raw_rows_received": 20, + "rows_after_account_scope": 5, + "rows_after_recipe_filter": 0, + "rows_materialized": 5, + "rows_matched": 5, + "raw_row_keys_sample": [ + "Период", + "Регистратор", + "СчетДт", + "СчетКт", + "Сумма", + "Контрагент", + "Period", + "Registrator", + "Amount" + ], + "materialization_drop_reason": "none", + "account_token_raw": "20", + "account_token_normalized": "20", + "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": "TqiR_BHRTOU59c", + "llm_decomposition_effective_message": "Что не в порядке с банковскими счетами в 2020 году?", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "по свк че по банку 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "TqiR_BHRTOU59c", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Что не в порядке с банковскими счетами в 2020 году?" + } + }, + "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_Nightly_stress_102_19-30-01-x013", + "status_code": 200, + "ok": true, + "elapsed_ms": 6836, + "reply_type": "factual", + "trace_id": "address-DnpbsPY0wE", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-DnpbsPY0wE", + "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": "1yYymWAiUONQgl", + "llm_decomposition_effective_message": "balance for account 60.01 as of 2020-07-31", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "остаток по 60.01 на 2020-07-31", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "1yYymWAiUONQgl", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "balance for account 60.01 as of 2020-07-31" + } + }, + "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_Nightly_stress_102_19-30-01-x014", + "status_code": 200, + "ok": true, + "elapsed_ms": 6140, + "reply_type": "factual", + "trace_id": "address-a_9NqaogRB", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-a_9NqaogRB", + "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": "ADbU-kONbB3pPu", + "llm_decomposition_effective_message": "балансовый остаток счета 60.01 на дату 31.07.2020", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "сальдо 60.01 на 31.07.2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "ADbU-kONbB3pPu", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "балансовый остаток счета 60.01 на дату 31.07.2020" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 75, + "id": "X015", + "question": "что на счете 60 на 2020.05", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_19-30-01-x015", + "status_code": 200, + "ok": true, + "elapsed_ms": 6099, + "reply_type": "factual", + "trace_id": "address-nRr1QjXaZ-", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 138, + "rows_matched": 138, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-nRr1QjXaZ-", + "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", + "period_from": "2020-01-01", + "period_to": "2020-12-31", + "as_of_date": "2020-12-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": 138, + "raw_rows_received": 138, + "rows_after_account_scope": 138, + "rows_after_recipe_filter": 138, + "rows_materialized": 138, + "rows_matched": 138, + "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": "7zt7_cOcyVTr-b", + "llm_decomposition_effective_message": "Что на счете 60 в мае 2020 года?", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "что на счете 60 на 2020.05", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "7zt7_cOcyVTr-b", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Что на счете 60 в мае 2020 года?" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 76, + "id": "X016", + "question": "дай остаток 62.01 на 2020 май", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_19-30-01-x016", + "status_code": 200, + "ok": true, + "elapsed_ms": 6052, + "reply_type": "factual", + "trace_id": "address-7OGweUh9nM", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 2, + "rows_matched": 2, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-7OGweUh9nM", + "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.01", + "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": "62.01", + "anchor_value_resolved": "62.01", + "resolver_confidence": "high", + "ambiguity_count": 0, + "match_failure_stage": "none", + "match_failure_reason": null, + "mcp_call_status": "matched_non_empty", + "rows_fetched": 2, + "raw_rows_received": 2, + "rows_after_account_scope": 2, + "rows_after_recipe_filter": 2, + "rows_materialized": 2, + "rows_matched": 2, + "raw_row_keys_sample": [ + "Период", + "Регистратор", + "СчетДт", + "СчетКт", + "Сумма", + "Period", + "Registrator", + "AccountDt", + "AccountKt", + "Amount" + ], + "materialization_drop_reason": "none", + "account_token_raw": "62.01", + "account_token_normalized": "62.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": "0kziTrvkQ3ApBo", + "llm_decomposition_effective_message": "Provide the balance for account 62.01 as of May 2020.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "дай остаток 62.01 на 2020 май", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "0kziTrvkQ3ApBo", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Provide the balance for account 62.01 as of May 2020." + } + }, + "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_Nightly_stress_102_19-30-01-x017", + "status_code": 200, + "ok": true, + "elapsed_ms": 6101, + "reply_type": "partial_coverage", + "trace_id": "address-O4223FTtDF", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.", + "assistant_reply_first_line": "В live-данных по текущему фильтру записи не найдены.", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "partial_non_blocking", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 0, + "rows_matched": 0, + "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, + "debug_payload": { + "trace_id": "address-O4223FTtDF", + "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", + "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-12-01", + "period_to": "2020-12-31", + "as_of_date": "2020-12-31" + }, + "missing_required_filters": [], + "selected_recipe": "address_movements_account_snapshot_v1", + "mcp_call_status_legacy": "no_raw_rows", + "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": "no_raw_rows", + "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": "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": "empty_match", + "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": "ie_-bF60D22dFK", + "llm_decomposition_effective_message": "Получить остаток по счету 60 на дату 2020-12-31", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "сальдо account 60 as of 2020-12-31", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "ie_-bF60D22dFK", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Получить остаток по счету 60 на дату 2020-12-31" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 78, + "id": "X018", + "question": "плиз остаток по счету 51 на 2020-06-30", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_19-30-01-x018", + "status_code": 200, + "ok": true, + "elapsed_ms": 6094, + "reply_type": "factual", + "trace_id": "address-A1gLL3rCWi", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 30, + "rows_matched": 30, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-A1gLL3rCWi", + "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": "51", + "period_from": "2020-06-01", + "period_to": "2020-06-30", + "as_of_date": "2020-06-30" + }, + "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": 30, + "raw_rows_received": 30, + "rows_after_account_scope": 30, + "rows_after_recipe_filter": 30, + "rows_materialized": 30, + "rows_matched": 30, + "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": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "i5TdoeQreUNXsR", + "llm_decomposition_effective_message": "остаток по счету 51 на 2020-06-30", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "плиз остаток по счету 51 на 2020-06-30", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "i5TdoeQreUNXsR", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "остаток по счету 51 на 2020-06-30" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 79, + "id": "X019", + "question": "скока по 60.02 на конец 2020-12", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_19-30-01-x019", + "status_code": 200, + "ok": true, + "elapsed_ms": 993, + "reply_type": "partial_coverage", + "trace_id": "address-k2X53KdiDX", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.", + "assistant_reply_first_line": "В live-данных по текущему фильтру записи не найдены.", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "partial_non_blocking", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 0, + "rows_matched": 0, + "mcp_call_status": "no_raw_rows", + "limited_reason_category": "empty_match", + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-k2X53KdiDX", + "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", + "account_balance_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": "account_balance_snapshot", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "account": "60.02", + "period_from": "2020-12-01", + "period_to": "2020-12-31", + "as_of_date": "2020-12-31" + }, + "missing_required_filters": [], + "selected_recipe": "address_movements_account_snapshot_v1", + "mcp_call_status_legacy": "no_raw_rows", + "account_scope_mode": "strict", + "account_scope_fallback_applied": false, + "anchor_type": "account", + "anchor_value_raw": "60.02", + "anchor_value_resolved": "60.02", + "resolver_confidence": "high", + "ambiguity_count": 0, + "match_failure_stage": "none", + "match_failure_reason": null, + "mcp_call_status": "no_raw_rows", + "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": "60.02", + "account_token_normalized": "60.2", + "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": "empty_match", + "response_type": "LIMITED_WITH_REASON", + "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.02 на конец 2020-12", + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "sanitized_user_message": "скока по 60.02 на конец 2020-12", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": 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_Nightly_stress_102_19-30-01-x020", + "status_code": 200, + "ok": true, + "elapsed_ms": 6161, + "reply_type": "factual", + "trace_id": "address-HC2HVVZaD9", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-HC2HVVZaD9", + "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", + "account_balance_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": "account_balance_snapshot", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "account": "60.01", + "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.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": "Y7hWuXIxslSoYq", + "llm_decomposition_effective_message": "проверить сальдо счета 60.01 на 2020-05-31", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "сальдо 60.01 на 2020-05-31", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "Y7hWuXIxslSoYq", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "проверить сальдо счета 60.01 на 2020-05-31" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 81, + "id": "X021", + "question": "раскрой остаток 60.01 по документам на конец июля 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_19-30-01-x021", + "status_code": 200, + "ok": true, + "elapsed_ms": 6027, + "reply_type": "factual", + "trace_id": "address-w497LqxQWT", + "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Можно уточнить выборку по контрагенту, договору или периоду.", + "assistant_reply_first_line": "Собран drilldown документов, формирующих остаток по счету на указанную дату.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_forming_balance_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-w497LqxQWT", + "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_account_drilldown_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": "documents_forming_balance", + "detected_intent_confidence": "medium", + "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_documents_forming_balance_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_LIST", + "execution_lane": "address_query", + "llm_decomposition_applied": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "XXHwZHALoUQXZa", + "llm_decomposition_effective_message": "Раскрыть остаток счета 60.01 по документам на конец июля 2020 года.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "раскрой остаток 60.01 по документам на конец июля 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "XXHwZHALoUQXZa", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Раскрыть остаток счета 60.01 по документам на конец июля 2020 года." + } + }, + "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_Nightly_stress_102_19-30-01-x022", + "status_code": 200, + "ok": true, + "elapsed_ms": 7130, + "reply_type": "factual", + "trace_id": "address-zCy5zoAyBL", + "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Можно уточнить выборку по контрагенту, договору или периоду.", + "assistant_reply_first_line": "Собран drilldown документов, формирующих остаток по счету на указанную дату.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_forming_balance_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "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, + "debug_payload": { + "trace_id": "address-zCy5zoAyBL", + "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_forming_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": "documents_forming_balance", + "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_documents_forming_balance_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_LIST", + "execution_lane": "address_query", + "llm_decomposition_applied": false, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "0vekEOsVDcF3EK", + "llm_decomposition_effective_message": "доки под остатком 60.01 на 2020-07-31", + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "sanitized_user_message": "доки под остатком 60.01 на 2020-07-31", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "0vekEOsVDcF3EK", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "доки под остатком 60.01 на 2020-07-31" + } + }, + "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_Nightly_stress_102_19-30-01-x023", + "status_code": 200, + "ok": true, + "elapsed_ms": 7088, + "reply_type": "factual", + "trace_id": "address-GSSUIErW-X", + "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Можно уточнить выборку по контрагенту, договору или периоду.", + "assistant_reply_first_line": "Собран drilldown документов, формирующих остаток по счету на указанную дату.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_forming_balance_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "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, + "debug_payload": { + "trace_id": "address-GSSUIErW-X", + "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", + "drilldown_signal_detected", + "documents_forming_balance_signal_detected" + ], + "why_included_summary": [], + "selection_reason_summary": [] + }, + "dropped_intent_segments": [], + "detected_mode": "address_query", + "detected_mode_confidence": "high", + "query_shape": "DRILLDOWN_REQUEST", + "query_shape_confidence": "high", + "detected_intent": "documents_forming_balance", + "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_documents_forming_balance_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_LIST", + "execution_lane": "address_query", + "llm_decomposition_applied": false, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "rCDruxY4D6CU3h", + "llm_decomposition_effective_message": "из чего остаток 60.01 на 2020-07-31", + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "sanitized_user_message": "из чего остаток 60.01 на 2020-07-31", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "rCDruxY4D6CU3h", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "из чего остаток 60.01 на 2020-07-31" + } + }, + "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_Nightly_stress_102_19-30-01-x024", + "status_code": 200, + "ok": true, + "elapsed_ms": 6083, + "reply_type": "factual", + "trace_id": "address-RMb89D6wDO", + "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Можно уточнить выборку по контрагенту, договору или периоду.", + "assistant_reply_first_line": "Собран drilldown документов, формирующих остаток по счету на указанную дату.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_forming_balance_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-RMb89D6wDO", + "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", + "drilldown_signal_detected", + "documents_forming_balance_signal_detected" + ], + "why_included_summary": [], + "selection_reason_summary": [] + }, + "dropped_intent_segments": [], + "detected_mode": "address_query", + "detected_mode_confidence": "high", + "query_shape": "DRILLDOWN_REQUEST", + "query_shape_confidence": "high", + "detected_intent": "documents_forming_balance", + "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_documents_forming_balance_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_LIST", + "execution_lane": "address_query", + "llm_decomposition_applied": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "1f_VyGAjvyNscy", + "llm_decomposition_effective_message": "Какие документы формируют остаток по счету 60.01 на конец периода 2020-07-31?", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "какие документы формируют остаток по 60.01 на 2020-07-31", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "1f_VyGAjvyNscy", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Какие документы формируют остаток по счету 60.01 на конец периода 2020-07-31?" + } + }, + "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_Nightly_stress_102_19-30-01-x025", + "status_code": 200, + "ok": true, + "elapsed_ms": 6115, + "reply_type": "factual", + "trace_id": "address-E_YdXgtipz", + "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Можно уточнить выборку по контрагенту, договору или периоду.", + "assistant_reply_first_line": "Собран drilldown документов, формирующих остаток по счету на указанную дату.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_forming_balance_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-E_YdXgtipz", + "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_forming_balance_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": "documents_forming_balance", + "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_documents_forming_balance_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_LIST", + "execution_lane": "address_query", + "llm_decomposition_applied": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "AQwHRJFQKOk7WM", + "llm_decomposition_effective_message": "документы, формирующие остаток по счету 60.01 на дату 2020-07-31", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "документы forming balance 60.01 as of 2020-07-31", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "AQwHRJFQKOk7WM", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "документы, формирующие остаток по счету 60.01 на дату 2020-07-31" + } + }, + "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_Nightly_stress_102_19-30-01-x026", + "status_code": 200, + "ok": true, + "elapsed_ms": 7080, + "reply_type": "partial_coverage", + "trace_id": "address-9-asa9mjbr", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.", + "assistant_reply_first_line": "В live-данных по текущему фильтру записи не найдены.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "partial_non_blocking", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_forming_balance_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 0, + "rows_matched": 0, + "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, + "debug_payload": { + "trace_id": "address-9-asa9mjbr", + "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_account_drilldown_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": "documents_forming_balance", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "account": "62.01", + "period_from": "2020-12-01", + "period_to": "2020-12-31", + "as_of_date": "2020-12-31" + }, + "missing_required_filters": [], + "selected_recipe": "address_documents_forming_balance_v1", + "mcp_call_status_legacy": "no_raw_rows", + "account_scope_mode": "strict", + "account_scope_fallback_applied": false, + "anchor_type": "account", + "anchor_value_raw": "62.01", + "anchor_value_resolved": "62.01", + "resolver_confidence": "high", + "ambiguity_count": 0, + "match_failure_stage": "none", + "match_failure_reason": null, + "mcp_call_status": "no_raw_rows", + "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": "62.01", + "account_token_normalized": "62.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": "empty_match", + "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": "EpiWMU8lM4lioe", + "llm_decomposition_effective_message": "Распределить остаток счета 62.01 по документам на конец периода 2020-12-31.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "раскидай остаток 62.01 по докам на 2020-12-31", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "EpiWMU8lM4lioe", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Распределить остаток счета 62.01 по документам на конец периода 2020-12-31." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 87, + "id": "X027", + "question": "по счету 51 раскрой остаток документами на 2020-06-30", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_19-30-01-x027", + "status_code": 200, + "ok": true, + "elapsed_ms": 6152, + "reply_type": "factual", + "trace_id": "address-N99qn18mrz", + "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Можно уточнить выборку по контрагенту, договору или периоду.", + "assistant_reply_first_line": "Собран drilldown документов, формирующих остаток по счету на указанную дату.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_forming_balance_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 30, + "rows_matched": 3, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-N99qn18mrz", + "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_account_drilldown_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": "documents_forming_balance", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "account": "51", + "period_from": "2020-06-01", + "period_to": "2020-06-30", + "as_of_date": "2020-06-30" + }, + "missing_required_filters": [], + "selected_recipe": "address_documents_forming_balance_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": 30, + "raw_rows_received": 30, + "rows_after_account_scope": 30, + "rows_after_recipe_filter": 30, + "rows_materialized": 30, + "rows_matched": 3, + "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_LIST", + "execution_lane": "address_query", + "llm_decomposition_applied": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "w6JHRr-J0DAJfa", + "llm_decomposition_effective_message": "раскрыть остаток по счету 51 с разбивкой по документам на конец периода 2020-06-30", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "по счету 51 раскрой остаток документами на 2020-06-30", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "w6JHRr-J0DAJfa", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "раскрыть остаток по счету 51 с разбивкой по документам на конец периода 2020-06-30" + } + }, + "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_Nightly_stress_102_19-30-01-x028", + "status_code": 200, + "ok": true, + "elapsed_ms": 7082, + "reply_type": "factual", + "trace_id": "address-mBI2lvmnHs", + "assistant_reply": "Собран drilldown документов, формирующих остаток по счету на указанную дату.\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\n5. 2020-05-12T12:00:00Z | Списание с расчетного счета 00000000137 от 12.05.2020 12:00:00 | 60.01 / 51 | 70000\nМожно уточнить выборку по контрагенту, договору или периоду.", + "assistant_reply_first_line": "Собран drilldown документов, формирующих остаток по счету на указанную дату.", + "expected_intent": "documents_forming_balance", + "actual_intent": "documents_forming_balance", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_forming_balance_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "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, + "debug_payload": { + "trace_id": "address-mBI2lvmnHs", + "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", + "drilldown_signal_detected", + "documents_forming_balance_signal_detected" + ], + "why_included_summary": [], + "selection_reason_summary": [] + }, + "dropped_intent_segments": [], + "detected_mode": "address_query", + "detected_mode_confidence": "high", + "query_shape": "DRILLDOWN_REQUEST", + "query_shape_confidence": "high", + "detected_intent": "documents_forming_balance", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "account": "60.01", + "period_from": "2020-05-01", + "period_to": "2020-05-31", + "as_of_date": "2020-05-31" + }, + "missing_required_filters": [], + "selected_recipe": "address_documents_forming_balance_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_LIST", + "execution_lane": "address_query", + "llm_decomposition_applied": false, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "poj1z3lyQnz_ti", + "llm_decomposition_effective_message": "бля из чего состоит остаток по 60.01 на 2020-05-31", + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "sanitized_user_message": "из чего состоит остаток по 60.01 на 2020-05-31", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "poj1z3lyQnz_ti", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "бля из чего состоит остаток по 60.01 на 2020-05-31" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 89, + "id": "X029", + "question": "доки по договору 19/15 за 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_19-30-01-x029", + "status_code": 200, + "ok": true, + "elapsed_ms": 7333, + "reply_type": "factual", + "trace_id": "address-HoT2ScRcbC", + "assistant_reply": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 8.\n1. 2020-08-31T15:00:06Z | Поступление товаров и услуг 00000000024 от 31.08.2020 15:00:06 | 19.04 / 76.05 | 233.33\n2. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 43804.8\n3. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 9776\n4. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 73968\n5. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 94924.8\n6. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 54400\n7. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.02 / 62.01 | 276873.6\n8. 2020-06-30T12:00:00Z | Поступление товаров и услуг 00000000015 от 30.06.2020 12:00:00 | 19.04 / 76.05 | 233.33", + "assistant_reply_first_line": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 8, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-HoT2ScRcbC", + "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": "19/15", + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": 11, + "rows_materialized": 438, + "rows_matched": 8, + "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": "YlWu_JjyPhBsWJ", + "llm_decomposition_effective_message": "Документы по договору 19/15 за период 2020 года.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "доки по договору 19/15 за 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "YlWu_JjyPhBsWJ", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Документы по договору 19/15 за период 2020 года." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 90, + "id": "X030", + "question": "покажи документы контракт 19/15", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_19-30-01-x030", + "status_code": 200, + "ok": true, + "elapsed_ms": 7235, + "reply_type": "factual", + "trace_id": "address-DgrzkpAuk0", + "assistant_reply": "Собран список документов по договору (live address lane).\nСтрок отобрано: 1.\n1. 2021-12-31T12:00:00Z | Поступление товаров и услуг 00000000015 от 31.12.2021 12:00:00 | 19.04 / 76.05 | 233.33", + "assistant_reply_first_line": "Собран список документов по договору (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 1, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-DgrzkpAuk0", + "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_contract_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_contract", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "contract": "19/15" + }, + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": 416, + "rows_after_recipe_filter": 2, + "rows_materialized": 416, + "rows_matched": 1, + "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": "PcMhF4yQ4TixTD", + "llm_decomposition_effective_message": "Показать документы по контракту 19/15.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "покажи документы контракт 19/15", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "PcMhF4yQ4TixTD", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Показать документы по контракту 19/15." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 91, + "id": "X031", + "question": "docs by contract 19/15 2020", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_19-30-01-x031", + "status_code": 200, + "ok": true, + "elapsed_ms": 8002, + "reply_type": "factual", + "trace_id": "address-j6YE2mWeuw", + "assistant_reply": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 8.\n1. 2020-08-31T15:00:06Z | Поступление товаров и услуг 00000000024 от 31.08.2020 15:00:06 | 19.04 / 76.05 | 233.33\n2. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 43804.8\n3. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 9776\n4. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 73968\n5. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 94924.8\n6. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.01 / 90.01.1 | 54400\n7. 2020-07-15T13:11:19Z | Реализация товаров и услуг 00000000008 от 15.07.2020 13:11:19 | 62.02 / 62.01 | 276873.6\n8. 2020-06-30T12:00:00Z | Поступление товаров и услуг 00000000015 от 30.06.2020 12:00:00 | 19.04 / 76.05 | 233.33", + "assistant_reply_first_line": "Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 8, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-j6YE2mWeuw", + "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", + "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": "OBJECT_LOOKUP", + "query_shape_confidence": "medium", + "detected_intent": "list_documents_by_contract", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "contract": "19/15", + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": 11, + "rows_materialized": 438, + "rows_matched": 8, + "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": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "__MqYsw1rQPMp2", + "llm_decomposition_effective_message": "docs by contract 19/15 2020", + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "sanitized_user_message": "документы by contract 19/15 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "__MqYsw1rQPMp2", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "docs by contract 19/15 2020" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 92, + "id": "X032", + "question": "по дог 19/15 какие документы", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_19-30-01-x032", + "status_code": 200, + "ok": true, + "elapsed_ms": 7123, + "reply_type": "factual", + "trace_id": "address-CbDnmeWgmx", + "assistant_reply": "Собран список документов по договору (live address lane).\nСтрок отобрано: 1.\n1. 2021-12-31T12:00:00Z | Поступление товаров и услуг 00000000015 от 31.12.2021 12:00:00 | 19.04 / 76.05 | 233.33", + "assistant_reply_first_line": "Собран список документов по договору (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 1, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-CbDnmeWgmx", + "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" + ], + "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": "19/15" + }, + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": 416, + "rows_after_recipe_filter": 2, + "rows_materialized": 416, + "rows_matched": 1, + "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": "6nUWS3duFPtlKr", + "llm_decomposition_effective_message": "Документы по договору 19/15", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "по договор 19/15 какие документы", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "6nUWS3duFPtlKr", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Документы по договору 19/15" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 93, + "id": "X033", + "question": "договор 19/15 выведи доки", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_19-30-01-x033", + "status_code": 200, + "ok": true, + "elapsed_ms": 8072, + "reply_type": "factual", + "trace_id": "address-iUnIdghdRy", + "assistant_reply": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.\nСобран список документов по договору (live address lane).\nСтрок отобрано: 120.\n1. 2022-09-30T12:00:00Z | Поступление товаров и услуг 00000000010 от 30.09.2022 12:00:00 | 19.04 / 76.05 | 191.67\n2. 2022-09-30T12:00:00Z | Поступление товаров и услуг 00000000010 от 30.09.2022 12:00:00 | 44.01 / 76.05 | 958.33\n3. 2022-08-31T12:00:00Z | Поступление товаров и услуг 00000000009 от 31.08.2022 12:00:00 | 19.04 / 76.05 | 233.33\n4. 2022-08-31T12:00:00Z | Поступление товаров и услуг 00000000009 от 31.08.2022 12:00:00 | 44.01 / 76.05 | 1166.67\n5. 2022-07-31T12:00:00Z | Поступление товаров и услуг 00000000008 от 31.07.2022 12:00:00 | 19.04 / 76.05 | 150.54\n6. 2022-07-31T12:00:00Z | Поступление товаров и услуг 00000000008 от 31.07.2022 12:00:00 | 44.01 / 76.05 | 752.69\n7. 2022-07-31T12:00:00Z | Поступление товаров и услуг 00000000008 от 31.07.2022 12:00:00 | 76.05 / 76.05 | 280\n8. 2022-06-30T00:00:01Z | Поступление товаров и услуг 00000000006 от 30.06.2022 0:00:01 | 19.04 / 76.05 | 186.67\n9. 2022-06-30T00:00:01Z | Поступление товаров и услуг 00000000006 от 30.06.2022 0:00:01 | 44.01 / 76.05 | 933.33\n10. 2022-05-31T00:00:01Z | Поступление товаров и услуг 00000000005 от 31.05.2022 0:00:01 | 19.04 / 76.05 | 233.33\n11. 2022-05-31T00:00:01Z | Поступление товаров и услуг 00000000005 от 31.05.2022 0:00:01 | 44.01 / 76.05 | 1166.67\n12. 2022-04-30T00:00:01Z | Поступление товаров и услуг 00000000004 от 30.04.2022 0:00:01 | 19.04 / 76.05 | 233.33\n13. 2022-04-30T00:00:01Z | Поступление товаров и услуг 00000000004 от 30.04.2022 0:00:01 | 44.01 / 76.05 | 1166.67\n14. 2022-04-18T12:00:00Z | Поступление товаров и услуг 00000000007 от 18.04.2022 12:00:00 | 97.21 / 60.01 | 14790\n15. 2022-04-18T12:00:00Z | Поступление товаров и услуг 00000000007 от 18.04.2022 12:00:00 | 60.01 / 60.02 | 14790\n16. 2022-04-13T12:00:00Z | Поступление на расчетный счет 00000000004 от 13.04.2022 12:00:00 | 51 / 76.05 | 1200000\n17. 2022-03-31T12:00:00Z | Поступление товаров и услуг 00000000001 от 31.03.2022 12:00:00 | 19.04 / 76.05 | 233.33\n18. 2022-03-31T12:00:00Z | Поступление товаров и услуг 00000000001 от 31.03.2022 12:00:00 | 44.01 / 76.05 | 1166.67\n19. 2022-02-28T12:00:00Z | Поступление товаров и услуг 00000000002 от 28.02.2022 12:00:00 | 19.04 / 76.05 | 233.33\n20. 2022-02-28T12:00:00Z | Поступление товаров и услуг 00000000002 от 28.02.2022 12:00:00 | 44.01 / 76.05 | 1166.67\n21. 2022-01-31T12:00:00Z | Поступление товаров и услуг 00000000003 от 31.01.2022 12:00:00 | 19.04 / 76.05 | 233.33\n22. 2022-01-31T12:00:00Z | Поступление товаров и услуг 00000000003 от 31.01.2022 12:00:00 | 44.01 / 76.05 | 1166.67\n23. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 217415\n24. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 114640\n25. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 659320\n26. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 109610\n27. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 162300\n28. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 990830\n29. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 302560\n30. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 105310\n31. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 615320\n32. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 144220\n33. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 56930\n34. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 50000\n35. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 425600\n36. 2022-01-20T12:00:03Z | Поступление на расчетный счет 00000000001 от 20.01.2022 12:00:03 | 51 / 60.02 | 119210\n37. 2022-01-20T12:00:03Z | Поступление на расчетный счет 00000000001 от 20.01.2022 12:00:03 | 51 / 60.02 | 180230\n38. 2022-01-20T12:00:03Z | Поступление на расчетный счет 00000000001 от 20.01.2022 12:00:03 | 51 / 60.02 | 144320\n39. 2022-01-20T12:00:03Z | Поступление на расчетный счет 00000000001 от 20.01.2022 12:00:03 | 51 / 60.02 | 320600\n40. 2022-01-20T12:00:03Z | Поступление на расчетный счет 00000000001 от 20.01.2022 12:00:03 | 51 / 60.02 | 126300\n41. 2021-12-31T12:00:00Z | Поступление товаров и услуг 00000000015 от 31.12.2021 12:00:00 | 19.04 / 76.05 | 233.33\n42. 2021-12-31T12:00:00Z | Поступление товаров и услуг 00000000015 от 31.12.2021 12:00:00 | 44.01 / 76.05 | 1166.67\n43. 2021-11-30T12:00:00Z | Поступление товаров и услуг 00000000014 от 30.11.2021 12:00:00 | 19.04 / 76.05 | 233.33\n44. 2021-11-30T12:00:00Z | Поступление товаров и услуг 00000000014 от 30.11.2021 12:00:00 | 44.01 / 76.05 | 1166.67\n45. 2021-11-10T12:00:07Z | Поступление на расчетный счет 00000000013 от 10.11.2021 12:00:07 | 51 / 62.02 | 20000\n46. 2021-10-31T12:00:00Z | Поступление товаров и услуг 00000000013 от 31.10.2021 12:00:00 | 19.04 / 76.05 | 233.33\n47. 2021-10-31T12:00:00Z | Поступление товаров и услуг 00000000013 от 31.10.2021 12:00:00 | 44.01 / 76.05 | 1166.67\n48. 2021-09-30T12:00:00Z | Поступление товаров и услуг 00000000012 от 30.09.2021 12:00:00 | 19.04 / 76.05 | 233.33\n49. 2021-09-30T12:00:00Z | Поступление товаров и услуг 00000000012 от 30.09.2021 12:00:00 | 44.01 / 76.05 | 1166.67\n50. 2021-09-29T12:00:03Z | Поступление на расчетный счет 00000000012 от 29.09.2021 12:00:03 | 51 / 62.02 | 50000\n51. 2021-08-31T12:00:05Z | Поступление товаров и услуг 00000000011 от 31.08.2021 12:00:05 | 19.04 / 76.05 | 233.33\n52. 2021-08-31T12:00:05Z | Поступление товаров и услуг 00000000011 от 31.08.2021 12:00:05 | 44.01 / 76.05 | 1166.67\n53. 2021-08-31T12:00:04Z | Поступление на расчетный счет 00000000011 от 31.08.2021 12:00:04 | 51 / 62.02 | 120500\n54. 2021-07-31T12:00:00Z | Поступление товаров и услуг 00000000010 от 31.07.2021 12:00:00 | 19.04 / 76.05 | 233.33\n55. 2021-07-31T12:00:00Z | Поступление товаров и услуг 00000000010 от 31.07.2021 12:00:00 | 44.01 / 76.05 | 1166.67\n56. 2021-06-30T00:00:00Z | Поступление товаров и услуг 00000000008 от 30.06.2021 0:00:00 | 19.04 / 76.05 | 233.33\n57. 2021-06-30T00:00:00Z | Поступление товаров и услуг 00000000008 от 30.06.2021 0:00:00 | 44.01 / 76.05 | 1166.67\n58. 2021-06-22T12:00:00Z | Поступление на расчетный счет 00000000010 от 22.06.2021 12:00:00 | 51 / 62.02 | 498630\n59. 2021-06-09T12:00:05Z | Поступление на расчетный счет 00000000009 от 09.06.2021 12:00:05 | 51 / 62.02 | 418960\n60. 2021-05-31T12:00:04Z | Поступление товаров и услуг 00000000006 от 31.05.2021 12:00:04 | 19.04 / 76.05 | 233.33\n61. 2021-05-31T12:00:04Z | Поступление товаров и услуг 00000000006 от 31.05.2021 12:00:04 | 44.01 / 76.05 | 1166.67\n62. 2021-05-17T12:00:00Z | Поступление товаров и услуг 00000000009 от 17.05.2021 12:00:00 | 19.04 / 60.01 | 12000\n63. 2021-05-17T12:00:00Z | Поступление товаров и услуг 00000000009 от 17.05.2021 12:00:00 | 97.21 / 60.01 | 60000\n64. 2021-05-17T12:00:00Z | Поступление товаров и услуг 00000000009 от 17.05.2021 12:00:00 | 60.01 / 60.02 | 72000\n65. 2021-04-30T12:00:00Z | Поступление товаров и услуг 00000000005 от 30.04.2021 12:00:00 | 19.04 / 76.05 | 233.33\n66. 2021-04-30T12:00:00Z | Поступление товаров и услуг 00000000005 от 30.04.2021 12:00:00 | 44.01 / 76.05 | 1166.67\n67. 2021-04-28T12:00:08Z | Поступление на расчетный счет 00000000008 от 28.04.2021 12:00:08 | 51 / 62.02 | 564300\n68. 2021-04-22T12:00:00Z | Поступление на расчетный счет 00000000007 от 22.04.2021 12:00:00 | 51 / 62.02 | 982420\n69. 2021-04-13T12:00:11Z | Поступление на расчетный счет 00000000006 от 13.04.2021 12:00:11 | 51 / 62.02 | 1882400\n70. 2021-04-07T12:00:00Z | Поступление товаров и услуг 00000000016 от 07.04.2021 12:00:00 | 97.21 / 60.01 | 11900\n71. 2021-04-07T12:00:00Z | Поступление товаров и услуг 00000000016 от 07.04.2021 12:00:00 | 60.01 / 60.02 | 11900\n72. 2021-03-31T23:59:59Z | Поступление товаров и услуг 00000000003 от 31.03.2021 23:59:59 | 19.04 / 76.05 | 233.33\n73. 2021-03-31T23:59:59Z | Поступление товаров и услуг 00000000003 от 31.03.2021 23:59:59 | 44.01 / 76.05 | 1166.67\n74. 2021-03-25T12:00:02Z | Поступление на расчетный счет 00000000005 от 25.03.2021 12:00:02 | 51 / 62.02 | 644315\n75. 2021-03-24T12:00:03Z | Поступление на расчетный счет 00000000004 от 24.03.2021 12:00:03 | 51 / 62.02 | 1219990\n76. 2021-03-22T12:00:02Z | Реализация товаров и услуг 00000000001 от 22.03.2021 12:00:02 | 62.01 / 90.01.1 | 598950\n77. 2021-03-22T12:00:02Z | Реализация товаров и услуг 00000000001 от 22.03.2021 12:00:02 | 62.02 / 62.01 | 95274\n78. 2021-03-22T12:00:02Z | Реализация товаров и услуг 00000000001 от 22.03.2021 12:00:02 | 62.02 / 62.01 | 38900\n79. 2021-03-22T12:00:02Z | Реализация товаров и услуг 00000000001 от 22.03.2021 12:00:02 | 62.02 / 62.01 | 464776\n80. 2021-03-18T12:00:00Z | Поступление на расчетный счет 00000000003 от 18.03.2021 12:00:00 | 51 / 62.02 | 1425310\n81. 2021-03-12T12:00:03Z | Поступление на расчетный счет 00000000002 от 12.03.2021 12:00:03 | 51 / 62.02 | 214600\n82. 2021-03-09T00:00:00Z | Поступление товаров и услуг 00000000001 от 09.03.2021 0:00:00 | 19.03 / 60.01 | 88415\n83. 2021-03-09T00:00:00Z | Поступление товаров и услуг 00000000001 от 09.03.2021 0:00:00 | 41.01 / 60.01 | 442075\n84. 2021-02-28T23:59:59Z | Поступление товаров и услуг 00000000004 от 28.02.2021 23:59:59 | 19.04 / 76.05 | 233.33\n85. 2021-02-28T23:59:59Z | Поступление товаров и услуг 00000000004 от 28.02.2021 23:59:59 | 44.01 / 76.05 | 1166.67\n86. 2021-02-19T12:00:01Z | Поступление на расчетный счет 00000000001 от 19.02.2021 12:00:01 | 51 / 62.02 | 518600\n87. 2021-01-31T23:59:59Z | Поступление товаров и услуг 00000000002 от 31.01.2021 23:59:59 | 19.04 / 76.05 | 233.33\n88. 2021-01-31T23:59:59Z | Поступление товаров и услуг 00000000002 от 31.01.2021 23:59:59 | 44.01 / 76.05 | 1166.67\n89. 2020-12-31T23:59:59Z | Поступление товаров и услуг 00000000034 от 31.12.2020 23:59:59 | 19.04 / 76.05 | 233.33\n90. 2020-12-31T23:59:59Z | Поступление товаров и услуг 00000000034 от 31.12.2020 23:59:59 | 44.01 / 76.05 | 1166.67\n91. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 51 / 62.02 | 3248300\n92. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 51 / 62.02 | 216600\n93. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 51 / 62.02 | 200000\n94. 2020-11-30T23:59:59Z | Поступление товаров и услуг 00000000033 от 30.11.2020 23:59:59 | 19.04 / 76.05 | 233.33\n95. 2020-11-30T23:59:59Z | Поступление товаров и услуг 00000000033 от 30.11.2020 23:59:59 | 44.01 / 76.05 | 1166.67\n96. 2020-11-30T12:00:08Z | Реализация товаров и услуг 00000000010 от 30.11.2020 12:00:08 | 62.01 / 90.01.1 | 118552\n97. 2020-11-30T12:00:08Z | Реализация товаров и услуг 00000000010 от 30.11.2020 12:00:08 | 62.01 / 90.01.1 | 458472\n98. 2020-11-30T12:00:08Z | Реализация товаров и услуг 00000000010 от 30.11.2020 12:00:08 | 62.02 / 62.01 | 577024\n99. 2020-11-30T12:00:07Z | Поступление на расчетный счет 00000000041 от 30.11.2020 12:00:07 | 51 / 62.02 | 38900\n100. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 900000\n101. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 144749\n102. 2020-11-20T12:00:00Z | Поступление товаров и услуг 00000000030 от 20.11.2020 12:00:00 | 19.03 / 60.01 | 1450\n103. 2020-11-20T12:00:00Z | Поступление товаров и услуг 00000000030 от 20.11.2020 12:00:00 | 41.01 / 60.01 | 7250\n104. 2020-11-20T12:00:00Z | Поступление товаров и услуг 00000000030 от 20.11.2020 12:00:00 | 60.01 / 60.02 | 8700\n105. 2020-11-19T12:00:04Z | Поступление на расчетный счет 00000000039 от 19.11.2020 12:00:04 | 51 / 62.02 | 1041800\n106. 2020-11-19T12:00:04Z | Поступление на расчетный счет 00000000039 от 19.11.2020 12:00:04 | 51 / 62.01 | 2278800\n107. 2020-11-18T12:00:05Z | Поступление на расчетный счет 00000000038 от 18.11.2020 12:00:05 | 51 / 62.01 | 745300\n108. 2020-11-18T12:00:04Z | Поступление на расчетный счет 00000000037 от 18.11.2020 12:00:04 | 51 / 62.01 | 320000\n109. 2020-11-13T12:00:03Z | Поступление на расчетный счет 00000000036 от 13.11.2020 12:00:03 | 51 / 62.01 | 313600\n110. 2020-11-10T15:39:14Z | Реализация товаров и услуг 00000000009 от 10.11.2020 15:39:14 | 62.01 / 90.01.1 | 4161000\n111. 2020-11-10T15:39:14Z | Реализация товаров и услуг 00000000009 от 10.11.2020 15:39:14 | 62.02 / 62.01 | 328300\n112. 2020-11-10T15:39:14Z | Реализация товаров и услуг 00000000009 от 10.11.2020 15:39:14 | 62.02 / 62.01 | 175000\n113. 2020-11-10T15:39:13Z | Поступление на расчетный счет 00000000035 от 10.11.2020 15:39:13 | 51 / 62.02 | 328300\n114. 2020-11-09T12:00:01Z | Поступление товаров и услуг 00000000031 от 09.11.2020 12:00:01 | 41.01 / 60.01 | 2229840\n115. 2020-10-31T23:59:59Z | Поступление товаров и услуг 00000000032 от 31.10.2020 23:59:59 | 19.04 / 76.05 | 233.33\n116. 2020-10-31T23:59:59Z | Поступление товаров и услуг 00000000032 от 31.10.2020 23:59:59 | 44.01 / 76.05 | 1166.67\n117. 2020-10-26T12:00:00Z | Поступление на расчетный счет 00000000034 от 26.10.2020 12:00:00 | 51 / 62.02 | 175000\n118. 2020-10-14T12:00:00Z | Поступление на расчетный счет 00000000033 от 14.10.2020 12:00:00 | 51 / 60.01 | 160000\n119. 2020-09-30T12:00:04Z | Поступление товаров и услуг 00000000025 от 30.09.2020 12:00:04 | 19.04 / 76.05 | 233.33\n120. 2020-09-30T12:00:04Z | Поступление товаров и услуг 00000000025 от 30.09.2020 12:00:04 | 44.01 / 76.05 | 1166.67", + "assistant_reply_first_line": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "materialized_but_not_anchor_matched", + "match_failure_reason": "contract_anchor_not_matched_in_materialized_rows", + "rows_fetched": 1000, + "rows_matched": 120, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-iUnIdghdRy", + "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_contract_signal_detected", + "anchor_not_matched_fallback_rows" + ], + "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_contract", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "contract": "19/15 выведите связанные документы" + }, + "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": "19/15 выведите связанные документы", + "anchor_value_resolved": "19/15 выведите связанные документы", + "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": "matched_non_empty", + "rows_fetched": 1000, + "raw_rows_received": 1000, + "rows_after_account_scope": 416, + "rows_after_recipe_filter": 0, + "rows_materialized": 416, + "rows_matched": 120, + "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": "0o5REf40503JOU", + "llm_decomposition_effective_message": "Для договора 19/15 выведите связанные документы.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "договор 19/15 выведи доки", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "0o5REf40503JOU", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Для договора 19/15 выведите связанные документы." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 94, + "id": "X034", + "question": "нах покажи документы по 19/15", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_19-30-01-x034", + "status_code": 200, + "ok": true, + "elapsed_ms": 6139, + "reply_type": "factual", + "trace_id": "address-DWGRkRnWWz", + "assistant_reply": "Собран список документов по договору (live address lane).\nСтрок отобрано: 1.\n1. 2021-12-31T12:00:00Z | Поступление товаров и услуг 00000000015 от 31.12.2021 12:00:00 | 19.04 / 76.05 | 233.33", + "assistant_reply_first_line": "Собран список документов по договору (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 1, + "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, + "debug_payload": { + "trace_id": "address-DWGRkRnWWz", + "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_contract_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_contract", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "contract": "19/15" + }, + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": 416, + "rows_after_recipe_filter": 2, + "rows_materialized": 416, + "rows_matched": 1, + "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": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "4eeKJlEX9MQsaj", + "llm_decomposition_effective_message": "нах покажи документы по 19/15", + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "sanitized_user_message": "покажи документы по 19/15", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "4eeKJlEX9MQsaj", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "нах покажи документы по 19/15" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 95, + "id": "X035", + "question": "банк операции по договору 19/15", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_19-30-01-x035", + "status_code": 200, + "ok": true, + "elapsed_ms": 6086, + "reply_type": "factual", + "trace_id": "address-gGr5CA839T", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 1.\n1. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "assistant_reply_first_line": "Собран список банковских операций по договору (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 1, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-gGr5CA839T", + "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": "19/15" + }, + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": 1, + "rows_materialized": 341, + "rows_matched": 1, + "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": "jq4x83hF3kTx1r", + "llm_decomposition_effective_message": "операции банка по договору 19/15", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "банк операции по договору 19/15", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "jq4x83hF3kTx1r", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "операции банка по договору 19/15" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 96, + "id": "X036", + "question": "платежки по дог 19/15", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_19-30-01-x036", + "status_code": 200, + "ok": true, + "elapsed_ms": 6128, + "reply_type": "factual", + "trace_id": "address-YwimplEt1e", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 1.\n1. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "assistant_reply_first_line": "Собран список банковских операций по договору (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 1, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-YwimplEt1e", + "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", + "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": "DOCUMENT_LIST", + "query_shape_confidence": "medium", + "detected_intent": "bank_operations_by_contract", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "contract": "19/15" + }, + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": 1, + "rows_materialized": 341, + "rows_matched": 1, + "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": "lDJ8s88uR9CeVc", + "llm_decomposition_effective_message": "платежи по договору 19/15", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "платежки по договор 19/15", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "lDJ8s88uR9CeVc", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "платежи по договору 19/15" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 97, + "id": "X037", + "question": "выписка по контракту 19/15", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_19-30-01-x037", + "status_code": 200, + "ok": true, + "elapsed_ms": 6041, + "reply_type": "factual", + "trace_id": "address-BAfk_pEu-O", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 1.\n1. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "assistant_reply_first_line": "Собран список банковских операций по договору (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 1, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-BAfk_pEu-O", + "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", + "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": "DOCUMENT_LIST", + "query_shape_confidence": "medium", + "detected_intent": "bank_operations_by_contract", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "contract": "19/15" + }, + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": 1, + "rows_materialized": 341, + "rows_matched": 1, + "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": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "lcuEeOLOWZuYIm", + "llm_decomposition_effective_message": "выписка по контракту 19/15", + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "sanitized_user_message": "выписка по контракту 19/15", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "lcuEeOLOWZuYIm", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "выписка по контракту 19/15" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 98, + "id": "X038", + "question": "bank ops by contract 19/15", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_19-30-01-x038", + "status_code": 200, + "ok": true, + "elapsed_ms": 7165, + "reply_type": "factual", + "trace_id": "address-9mynLeGwme", + "assistant_reply": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.\nСобран список банковских операций по договору (live address lane).\nСтрок отобрано: 341.\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\n5. 2022-07-11T12:00:00Z | Списание с расчетного счета 00000000014 от 11.07.2022 12:00:00 | 76.05 / 51 | 1120\n6. 2022-07-11T12:00:00Z | Списание с расчетного счета 00000000014 от 11.07.2022 12:00:00 | 76.05 / 51 | 1400\n7. 2022-07-11T12:00:00Z | Списание с расчетного счета 00000000014 от 11.07.2022 12:00:00 | 76.05 / 51 | 1400\n8. 2022-06-10T12:00:00Z | Списание с расчетного счета 00000000015 от 10.06.2022 12:00:00 | 91.02 / 51 | 990\n9. 2022-05-11T12:00:00Z | Списание с расчетного счета 00000000013 от 11.05.2022 12:00:00 | 66.04 / 51 | 180000\n10. 2022-05-10T12:00:00Z | Списание с расчетного счета 00000000012 от 10.05.2022 12:00:00 | 91.02 / 51 | 990\n11. 2022-04-15T12:00:02Z | Списание с расчетного счета 00000000011 от 15.04.2022 12:00:02 | 66.03 / 51 | 1000000\n12. 2022-04-15T12:00:01Z | Списание с расчетного счета 00000000010 от 15.04.2022 12:00:01 | 60.02 / 51 | 14790\n13. 2022-04-15T12:00:00Z | Списание с расчетного счета 00000000009 от 15.04.2022 12:00:00 | 76.05 / 51 | 1400\n14. 2022-04-15T12:00:00Z | Списание с расчетного счета 00000000009 от 15.04.2022 12:00:00 | 76.05 / 51 | 1400\n15. 2022-04-13T12:00:00Z | Поступление на расчетный счет 00000000004 от 13.04.2022 12:00:00 | 51 / 76.05 | 1200000\n16. 2022-03-10T12:00:00Z | Списание с расчетного счета 00000000008 от 10.03.2022 12:00:00 | 91.02 / 51 | 990\n17. 2022-02-14T12:00:01Z | Списание с расчетного счета 00000000007 от 14.02.2022 12:00:01 | 76.05 / 51 | 1400\n18. 2022-02-14T12:00:00Z | Списание с расчетного счета 00000000006 от 14.02.2022 12:00:00 | 91.02 / 51 | 990\n19. 2022-01-25T12:00:00Z | Списание с расчетного счета 00000000005 от 25.01.2022 12:00:00 | 68.1 / 51 | 3000\n20. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 217415\n21. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 114640\n22. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 659320\n23. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 109610\n24. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 162300\n25. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 51 / 60.02 | 990830\n26. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 302560\n27. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 105310\n28. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 615320\n29. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 144220\n30. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 56930\n31. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 50000\n32. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 51 / 60.02 | 425600\n33. 2022-01-20T12:00:03Z | Поступление на расчетный счет 00000000001 от 20.01.2022 12:00:03 | 51 / 60.02 | 119210\n34. 2022-01-20T12:00:03Z | Поступление на расчетный счет 00000000001 от 20.01.2022 12:00:03 | 51 / 60.02 | 180230\n35. 2022-01-20T12:00:03Z | Поступление на расчетный счет 00000000001 от 20.01.2022 12:00:03 | 51 / 60.02 | 144320\n36. 2022-01-20T12:00:03Z | Поступление на расчетный счет 00000000001 от 20.01.2022 12:00:03 | 51 / 60.02 | 320600\n37. 2022-01-20T12:00:03Z | Поступление на расчетный счет 00000000001 от 20.01.2022 12:00:03 | 51 / 60.02 | 126300\n38. 2022-01-20T12:00:02Z | Списание с расчетного счета 00000000004 от 20.01.2022 12:00:02 | 62.02 / 51 | 1808325\n39. 2022-01-20T12:00:02Z | Списание с расчетного счета 00000000004 от 20.01.2022 12:00:02 | 62.02 / 51 | 216600\n40. 2022-01-20T12:00:02Z | Списание с расчетного счета 00000000004 от 20.01.2022 12:00:02 | 62.02 / 51 | 104726\n41. 2022-01-20T12:00:01Z | Списание с расчетного счета 00000000003 от 20.01.2022 12:00:01 | 60.01 / 51 | 1705109.5\n42. 2022-01-20T12:00:00Z | Списание с расчетного счета 00000000002 от 20.01.2022 12:00:00 | 66.03 / 51 | 1000000\n43. 2022-01-19T12:00:00Z | Списание с расчетного счета 00000000001 от 19.01.2022 12:00:00 | 76.05 / 51 | 1400\n44. 2022-01-19T12:00:00Z | Списание с расчетного счета 00000000001 от 19.01.2022 12:00:00 | 76.05 / 51 | 1400\n45. 2021-12-01T12:00:00Z | Списание с расчетного счета 00000000196 от 01.12.2021 12:00:00 | 91.02 / 51 | 66.67\n46. 2021-11-10T12:00:07Z | Поступление на расчетный счет 00000000013 от 10.11.2021 12:00:07 | 51 / 62.02 | 20000\n47. 2021-11-10T12:00:06Z | Списание с расчетного счета 00000000195 от 10.11.2021 12:00:06 | 69.02.7 / 51 | 8632.1\n48. 2021-11-10T12:00:05Z | Списание с расчетного счета 00000000194 от 10.11.2021 12:00:05 | 69.03.1 / 51 | 3561.32\n49. 2021-11-10T12:00:04Z | Списание с расчетного счета 00000000193 от 10.11.2021 12:00:04 | 76.05 / 51 | 1400\n50. 2021-11-10T12:00:03Z | Списание с расчетного счета 00000000192 от 10.11.2021 12:00:03 | 91.02 / 51 | 990\n51. 2021-11-10T12:00:02Z | Списание с расчетного счета 00000000191 от 10.11.2021 12:00:02 | 69.01 / 51 | 370.97\n52. 2021-11-10T12:00:01Z | Списание с расчетного счета 00000000190 от 10.11.2021 12:00:01 | 69.11 / 51 | 141.94\n53. 2021-11-10T12:00:00Z | Списание с расчетного счета 00000000189 от 10.11.2021 12:00:00 | 91.02 / 51 | 8\n54. 2021-10-18T12:00:00Z | Списание с расчетного счета 00000000188 от 18.10.2021 12:00:00 | 76.05 / 51 | 1400\n55. 2021-10-12T12:00:04Z | Списание с расчетного счета 00000000187 от 12.10.2021 12:00:04 | 69.02.7 / 51 | 13326.28\n56. 2021-10-12T12:00:03Z | Списание с расчетного счета 00000000186 от 12.10.2021 12:00:03 | 68.01.1 / 51 | 9226\n57. 2021-10-12T12:00:02Z | Списание с расчетного счета 00000000185 от 12.10.2021 12:00:02 | 69.03.1 / 51 | 5153.69\n58. 2021-10-12T12:00:01Z | Списание с расчетного счета 00000000184 от 12.10.2021 12:00:01 | 69.01 / 51 | 741.94\n59. 2021-10-12T12:00:00Z | Списание с расчетного счета 00000000183 от 12.10.2021 12:00:00 | 69.11 / 51 | 205.12\n60. 2021-10-09T12:00:00Z | Списание с расчетного счета 00000000182 от 09.10.2021 12:00:00 | 91.02 / 51 | 990\n61. 2021-09-29T12:00:03Z | Поступление на расчетный счет 00000000012 от 29.09.2021 12:00:03 | 51 / 62.02 | 50000\n62. 2021-09-29T12:00:02Z | Списание с расчетного счета 00000000181 от 29.09.2021 12:00:02 | 70 / 51 | 34310\n63. 2021-09-29T12:00:01Z | Списание с расчетного счета 00000000180 от 29.09.2021 12:00:01 | 68.01.1 / 51 | 9503\n64. 2021-09-29T12:00:00Z | Списание с расчетного счета 00000000179 от 29.09.2021 12:00:00 | 91.02 / 51 | 171.55\n65. 2021-09-14T12:00:01Z | Списание с расчетного счета 00000000178 от 14.09.2021 12:00:01 | 70 / 51 | 29200\n66. 2021-09-14T12:00:00Z | Списание с расчетного счета 00000000177 от 14.09.2021 12:00:00 | 91.02 / 51 | 146\n67. 2021-09-09T12:00:00Z | Списание с расчетного счета 00000000176 от 09.09.2021 12:00:00 | 91.02 / 51 | 990\n68. 2021-09-07T12:00:05Z | Списание с расчетного счета 00000000175 от 07.09.2021 12:00:05 | 69.02.7 / 51 | 13830.84\n69. 2021-09-07T12:00:04Z | Списание с расчетного счета 00000000174 от 07.09.2021 12:00:04 | 69.03.1 / 51 | 5405.97\n70. 2021-09-07T12:00:03Z | Списание с расчетного счета 00000000173 от 07.09.2021 12:00:03 | 68.01.1 / 51 | 3830\n71. 2021-09-07T12:00:02Z | Списание с расчетного счета 00000000172 от 07.09.2021 12:00:02 | 76.05 / 51 | 1400\n72. 2021-09-07T12:00:01Z | Списание с расчетного счета 00000000171 от 07.09.2021 12:00:01 | 69.01 / 51 | 741.92\n73. 2021-09-07T12:00:00Z | Списание с расчетного счета 00000000170 от 07.09.2021 12:00:00 | 69.11 / 51 | 215.22\n74. 2021-08-31T12:00:04Z | Поступление на расчетный счет 00000000011 от 31.08.2021 12:00:04 | 51 / 62.02 | 120500\n75. 2021-08-31T12:00:03Z | Списание с расчетного счета 00000000169 от 31.08.2021 12:00:03 | 70 / 51 | 34642.18\n76. 2021-08-31T12:00:02Z | Списание с расчетного счета 00000000168 от 31.08.2021 12:00:02 | 70 / 51 | 33613.36\n77. 2021-08-31T12:00:01Z | Списание с расчетного счета 00000000167 от 31.08.2021 12:00:01 | 68.01.1 / 51 | 10199\n78. 2021-08-31T12:00:00Z | Списание с расчетного счета 00000000166 от 31.08.2021 12:00:00 | 91.02 / 51 | 341.28\n79. 2021-08-13T12:00:00Z | Списание с расчетного счета 00000000165 от 13.08.2021 12:00:00 | 76.05 / 51 | 1400\n80. 2021-08-12T12:00:02Z | Списание с расчетного счета 00000000164 от 12.08.2021 12:00:02 | 70 / 51 | 25363.04\n81. 2021-08-12T12:00:01Z | Списание с расчетного счета 00000000163 от 12.08.2021 12:00:01 | 68.01.1 / 51 | 3790\n82. 2021-08-12T12:00:00Z | Списание с расчетного счета 00000000162 от 12.08.2021 12:00:00 | 91.02 / 51 | 126.82\n83. 2021-08-11T12:00:00Z | Списание с расчетного счета 00000000160 от 11.08.2021 12:00:00 | 66.04 / 51 | 6410.96\n84. 2021-08-09T12:00:00Z | Списание с расчетного счета 00000000161 от 09.08.2021 12:00:00 | 91.02 / 51 | 990\n85. 2021-08-06T12:00:03Z | Списание с расчетного счета 00000000159 от 06.08.2021 12:00:03 | 69.02.7 / 51 | 16268.03\n86. 2021-08-06T12:00:02Z | Списание с расчетного счета 00000000158 от 06.08.2021 12:00:02 | 69.03.1 / 51 | 6624.56\n87. 2021-08-06T12:00:01Z | Списание с расчетного счета 00000000157 от 06.08.2021 12:00:01 | 69.01 / 51 | 741.96\n88. 2021-08-06T12:00:00Z | Списание с расчетного счета 00000000156 от 06.08.2021 12:00:00 | 69.11 / 51 | 263.96\n89. 2021-08-05T12:00:05Z | Списание с расчетного счета 00000000155 от 05.08.2021 12:00:05 | 68.04.1 / 51 | 125\n90. 2021-08-05T12:00:04Z | Списание с расчетного счета 00000000154 от 05.08.2021 12:00:04 | 68.04.1 / 51 | 3449\n91. 2021-08-05T12:00:03Z | Списание с расчетного счета 00000000153 от 05.08.2021 12:00:03 | 68.04.1 / 51 | 607\n92. 2021-08-05T12:00:02Z | Списание с расчетного счета 00000000152 от 05.08.2021 12:00:02 | 69.02.7 / 51 | 55.77\n93. 2021-08-05T12:00:01Z | Списание с расчетного счета 00000000151 от 05.08.2021 12:00:01 | 69.03.1 / 51 | 1\n94. 2021-08-05T12:00:00Z | Списание с расчетного счета 00000000150 от 05.08.2021 12:00:00 | 69.01 / 51 | 0.15\n95. 2021-07-29T12:00:02Z | Списание с расчетного счета 00000000149 от 29.07.2021 12:00:02 | 70 / 51 | 34310\n96. 2021-07-29T12:00:01Z | Списание с расчетного счета 00000000148 от 29.07.2021 12:00:01 | 68.01.1 / 51 | 9490\n97. 2021-07-29T12:00:00Z | Списание с расчетного счета 00000000147 от 29.07.2021 12:00:00 | 91.02 / 51 | 171.55\n98. 2021-07-16T12:00:00Z | Списание с расчетного счета 00000000146 от 16.07.2021 12:00:00 | 76.05 / 51 | 1400\n99. 2021-07-14T12:00:01Z | Списание с расчетного счета 00000000145 от 14.07.2021 12:00:01 | 70 / 51 | 29200\n100. 2021-07-14T12:00:00Z | Списание с расчетного счета 00000000144 от 14.07.2021 12:00:00 | 91.02 / 51 | 146\n101. 2021-07-12T12:00:03Z | Списание с расчетного счета 00000000143 от 12.07.2021 12:00:03 | 69.02.7 / 51 | 15370.08\n102. 2021-07-12T12:00:02Z | Списание с расчетного счета 00000000142 от 12.07.2021 12:00:02 | 69.03.1 / 51 | 6177.6\n103. 2021-07-12T12:00:01Z | Списание с расчетного счета 00000000141 от 12.07.2021 12:00:01 | 69.01 / 51 | 741.96\n104. 2021-07-12T12:00:00Z | Списание с расчетного счета 00000000140 от 12.07.2021 12:00:00 | 69.11 / 51 | 246\n105. 2021-07-09T12:00:03Z | Списание с расчетного счета 00000000139 от 09.07.2021 12:00:03 | 70 / 51 | 51312.53\n106. 2021-07-09T12:00:02Z | Списание с расчетного счета 00000000138 от 09.07.2021 12:00:02 | 68.01.1 / 51 | 7667\n107. 2021-07-09T12:00:01Z | Списание с расчетного счета 00000000137 от 09.07.2021 12:00:01 | 91.02 / 51 | 990\n108. 2021-07-09T12:00:00Z | Списание с расчетного счета 00000000136 от 09.07.2021 12:00:00 | 91.02 / 51 | 256.56\n109. 2021-07-05T12:00:01Z | Списание с расчетного счета 00000000135 от 05.07.2021 12:00:01 | 60.02 / 51 | 302560\n110. 2021-07-05T12:00:00Z | Списание с расчетного счета 00000000134 от 05.07.2021 12:00:00 | 91.02 / 51 | 1401.37\n111. 2021-06-29T12:00:03Z | Списание с расчетного счета 00000000133 от 29.06.2021 12:00:03 | 70 / 51 | 34310\n112. 2021-06-29T12:00:02Z | Списание с расчетного счета 00000000132 от 29.06.2021 12:00:02 | 70 / 51 | 23500\n113. 2021-06-29T12:00:01Z | Списание с расчетного счета 00000000131 от 29.06.2021 12:00:01 | 68.01.1 / 51 | 15990\n114. 2021-06-29T12:00:00Z | Списание с расчетного счета 00000000130 от 29.06.2021 12:00:00 | 91.02 / 51 | 289.05\n115. 2021-06-22T12:00:00Z | Поступление на расчетный счет 00000000010 от 22.06.2021 12:00:00 | 51 / 62.02 | 498630\n116. 2021-06-16T12:00:00Z | Списание с расчетного счета 00000000129 от 16.06.2021 12:00:00 | 60.02 / 51 | 105310\n117. 2021-06-15T12:00:03Z | Списание с расчетного счета 00000000128 от 15.06.2021 12:00:03 | 70 / 51 | 29200\n118. 2021-06-15T12:00:02Z | Списание с расчетного счета 00000000127 от 15.06.2021 12:00:02 | 70 / 51 | 20000\n119. 2021-06-15T12:00:01Z | Списание с расчетного счета 00000000126 от 15.06.2021 12:00:01 | 76.05 / 51 | 1400\n120. 2021-06-15T12:00:00Z | Списание с расчетного счета 00000000125 от 15.06.2021 12:00:00 | 91.02 / 51 | 246\n121. 2021-06-11T12:00:01Z | Списание с расчетного счета 00000000124 от 11.06.2021 12:00:01 | 60.02 / 51 | 119210\n122. 2021-06-11T12:00:00Z | Списание с расчетного счета 00000000123 от 11.06.2021 12:00:00 | 91.02 / 51 | 1000\n123. 2021-06-09T12:00:05Z | Поступление на расчетный счет 00000000009 от 09.06.2021 12:00:05 | 51 / 62.02 | 418960\n124. 2021-06-09T12:00:04Z | Списание с расчетного счета 00000000122 от 09.06.2021 12:00:04 | 69.02.7 / 51 | 15370.08\n125. 2021-06-09T12:00:03Z | Списание с расчетного счета 00000000121 от 09.06.2021 12:00:03 | 69.03.1 / 51 | 6175.08\n126. 2021-06-09T12:00:02Z | Списание с расчетного счета 00000000120 от 09.06.2021 12:00:02 | 91.02 / 51 | 990\n127. 2021-06-09T12:00:01Z | Списание с расчетного счета 00000000119 от 09.06.2021 12:00:01 | 69.01 / 51 | 741.92\n128. 2021-06-09T12:00:00Z | Списание с расчетного счета 00000000118 от 09.06.2021 12:00:00 | 69.11 / 51 | 246\n129. 2021-05-31T12:00:03Z | Списание с расчетного счета 00000000117 от 31.05.2021 12:00:03 | 70 / 51 | 34310\n130. 2021-05-31T12:00:02Z | Списание с расчетного счета 00000000116 от 31.05.2021 12:00:02 | 70 / 51 | 23500\n131. 2021-05-31T12:00:01Z | Списание с расчетного счета 00000000115 от 31.05.2021 12:00:01 | 68.01.1 / 51 | 15990\n132. 2021-05-31T12:00:00Z | Списание с расчетного счета 00000000114 от 31.05.2021 12:00:00 | 91.02 / 51 | 289.05\n133. 2021-05-19T12:00:00Z | Списание с расчетного счета 00000000113 от 19.05.2021 12:00:00 | 76.05 / 51 | 1400\n134. 2021-05-18T12:00:00Z | Списание с расчетного счета 00000000112 от 18.05.2021 12:00:00 | 60.02 / 51 | 180230\n135. 2021-05-13T00:00:06Z | Списание с расчетного счета 00000000110 от 13.05.2021 0:00:06 | 70 / 51 | 29200\n136. 2021-05-13T00:00:05Z | Списание с расчетного счета 00000000109 от 13.05.2021 0:00:05 | 70 / 51 | 20000\n137. 2021-05-13T00:00:04Z | Списание с расчетного счета 00000000108 от 13.05.2021 0:00:04 | 69.02.7 / 51 | 15370.08\n138. 2021-05-13T00:00:03Z | Списание с расчетного счета 00000000107 от 13.05.2021 0:00:03 | 69.03.1 / 51 | 6175.08\n139. 2021-05-13T00:00:02Z | Списание с расчетного счета 00000000106 от 13.05.2021 0:00:02 | 69.01 / 51 | 741.92\n140. 2021-05-13T00:00:01Z | Списание с расчетного счета 00000000105 от 13.05.2021 0:00:01 | 69.11 / 51 | 246\n141. 2021-05-13T00:00:00Z | Списание с расчетного счета 00000000104 от 13.05.2021 0:00:00 | 91.02 / 51 | 246\n142. 2021-05-09T12:00:00Z | Списание с расчетного счета 00000000111 от 09.05.2021 12:00:00 | 91.02 / 51 | 990\n143. 2021-04-29T12:00:01Z | Списание с расчетного счета 00000000103 от 29.04.2021 12:00:01 | 91.02 / 51 | 8\n144. 2021-04-29T12:00:00Z | Списание с расчетного счета 00000000102 от 29.04.2021 12:00:00 | 60.02 / 51 | 217415\n145. 2021-04-28T12:00:08Z | Поступление на расчетный счет 00000000008 от 28.04.2021 12:00:08 | 51 / 62.02 | 564300\n146. 2021-04-28T12:00:07Z | Списание с расчетного счета 00000000101 от 28.04.2021 12:00:07 | 60.02 / 51 | 114640\n147. 2021-04-28T12:00:06Z | Списание с расчетного счета 00000000100 от 28.04.2021 12:00:06 | 60.02 / 51 | 72000\n148. 2021-04-28T12:00:05Z | Списание с расчетного счета 00000000099 от 28.04.2021 12:00:05 | 70 / 51 | 34310\n149. 2021-04-28T12:00:04Z | Списание с расчетного счета 00000000098 от 28.04.2021 12:00:04 | 70 / 51 | 23500\n150. 2021-04-28T12:00:03Z | Списание с расчетного счета 00000000097 от 28.04.2021 12:00:03 | 68.01.1 / 51 | 15990\n151. 2021-04-28T12:00:02Z | Списание с расчетного счета 00000000096 от 28.04.2021 12:00:02 | 91.02 / 51 | 289.05\n152. 2021-04-28T12:00:01Z | Списание с расчетного счета 00000000095 от 28.04.2021 12:00:01 | 91.02 / 51 | 37\n153. 2021-04-28T12:00:00Z | Списание с расчетного счета 00000000094 от 28.04.2021 12:00:00 | 91.02 / 51 | 8\n154. 2021-04-27T12:00:01Z | Списание с расчетного счета 00000000093 от 27.04.2021 12:00:01 | 60.02 / 51 | 659320\n155. 2021-04-27T12:00:00Z | Списание с расчетного счета 00000000092 от 27.04.2021 12:00:00 | 91.02 / 51 | 8\n156. 2021-04-26T12:00:02Z | Списание с расчетного счета 00000000091 от 26.04.2021 12:00:02 | 60.02 / 51 | 109610\n157. 2021-04-26T12:00:01Z | Списание с расчетного счета 00000000090 от 26.04.2021 12:00:01 | 68.02 / 51 | 10010\n158. 2021-04-26T12:00:00Z | Списание с расчетного счета 00000000089 от 26.04.2021 12:00:00 | 91.02 / 51 | 8\n159. 2021-04-22T12:00:00Z | Поступление на расчетный счет 00000000007 от 22.04.2021 12:00:00 | 51 / 62.02 | 982420\n160. 2021-04-19T12:00:01Z | Списание с расчетного счета 00000000088 от 19.04.2021 12:00:01 | 60.02 / 51 | 162300\n161. 2021-04-19T12:00:00Z | Списание с расчетного счета 00000000087 от 19.04.2021 12:00:00 | 91.02 / 51 | 8\n162. 2021-04-16T12:00:00Z | Списание с расчетного счета 00000000086 от 16.04.2021 12:00:00 | 76.05 / 51 | 1400\n163. 2021-04-13T12:00:11Z | Поступление на расчетный счет 00000000006 от 13.04.2021 12:00:11 | 51 / 62.02 | 1882400\n164. 2021-04-13T12:00:10Z | Списание с расчетного счета 00000000085 от 13.04.2021 12:00:10 | 66.03 / 51 | 1000000\n165. 2021-04-13T12:00:09Z | Списание с расчетного счета 00000000084 от 13.04.2021 12:00:09 | 60.02 / 51 | 615320\n166. 2021-04-13T12:00:08Z | Списание с расчетного счета 00000000083 от 13.04.2021 12:00:08 | 60.02 / 51 | 144320\n167. 2021-04-13T12:00:07Z | Списание с расчетного счета 00000000082 от 13.04.2021 12:00:07 | 70 / 51 | 29200\n168. 2021-04-13T12:00:06Z | Списание с расчетного счета 00000000081 от 13.04.2021 12:00:06 | 70 / 51 | 20000\n169. 2021-04-13T12:00:05Z | Списание с расчетного счета 00000000080 от 13.04.2021 12:00:05 | 66.04 / 51 | 19139.34\n170. 2021-04-13T12:00:04Z | Списание с расчетного счета 00000000079 от 13.04.2021 12:00:04 | 69.02.7 / 51 | 15370.08\n171. 2021-04-13T12:00:03Z | Списание с расчетного счета 00000000078 от 13.04.2021 12:00:03 | 69.03.1 / 51 | 6175.08\n172. 2021-04-13T12:00:02Z | Списание с расчетного счета 00000000077 от 13.04.2021 12:00:02 | 91.02 / 51 | 246\n173. 2021-04-13T12:00:01Z | Списание с расчетного счета 00000000076 от 13.04.2021 12:00:01 | 69.01 / 51 | 741.94\n174. 2021-04-13T12:00:00Z | Списание с расчетного счета 00000000075 от 13.04.2021 12:00:00 | 69.11 / 51 | 246\n175. 2021-04-09T12:00:00Z | Списание с расчетного счета 00000000074 от 09.04.2021 12:00:00 | 91.02 / 51 | 2100\n176. 2021-04-06T12:00:01Z | Списание с расчетного счета 00000000073 от 06.04.2021 12:00:01 | 60.02 / 51 | 11900\n177. 2021-04-06T12:00:00Z | Списание с расчетного счета 00000000072 от 06.04.2021 12:00:00 | 91.02 / 51 | 37\n178. 2021-03-31T12:00:05Z | Списание с расчетного счета 00000000071 от 31.03.2021 12:00:05 | 70 / 51 | 34310\n179. 2021-03-31T12:00:04Z | Списание с расчетного счета 00000000070 от 31.03.2021 12:00:04 | 70 / 51 | 23500\n180. 2021-03-31T12:00:03Z | Списание с расчетного счета 00000000069 от 31.03.2021 12:00:03 | 68.01.1 / 51 | 15990\n181. 2021-03-31T12:00:02Z | Списание с расчетного счета 00000000068 от 31.03.2021 12:00:02 | 91.02 / 51 | 289.05\n182. 2021-03-31T12:00:01Z | Списание с расчетного счета 00000000067 от 31.03.2021 12:00:01 | 70 / 51 | 50\n183. 2021-03-31T12:00:00Z | Списание с расчетного счета 00000000066 от 31.03.2021 12:00:00 | 91.02 / 51 | 37\n184. 2021-03-25T12:00:02Z | Поступление на расчетный счет 00000000005 от 25.03.2021 12:00:02 | 51 / 62.02 | 644315\n185. 2021-03-25T12:00:01Z | Списание с расчетного счета 00000000065 от 25.03.2021 12:00:01 | 60.02 / 51 | 990830\n186. 2021-03-25T12:00:00Z | Списание с расчетного счета 00000000064 от 25.03.2021 12:00:00 | 91.02 / 51 | 8\n187. 2021-03-24T12:00:03Z | Поступление на расчетный счет 00000000004 от 24.03.2021 12:00:03 | 51 / 62.02 | 1219990\n188. 2021-03-24T12:00:02Z | Списание с расчетного счета 00000000062 от 24.03.2021 12:00:02 | 60.01 / 51 | 530490\n189. 2021-03-24T12:00:01Z | Списание с расчетного счета 00000000061 от 24.03.2021 12:00:01 | 60.02 / 51 | 144220\n190. 2021-03-24T12:00:00Z | Списание с расчетного счета 00000000060 от 24.03.2021 12:00:00 | 91.02 / 51 | 37\n191. 2021-03-23T12:00:01Z | Списание с расчетного счета 00000000058 от 23.03.2021 12:00:01 | 66.04 / 51 | 37377.05\n192. 2021-03-23T12:00:00Z | Списание с расчетного счета 00000000057 от 23.03.2021 12:00:00 | 66.03 / 51 | 600000\n193. 2021-03-22T12:00:03Z | Списание с расчетного счета 00000000197 от 22.03.2021 12:00:03 | 66.02 / 51 | 31857.79\n194. 2021-03-22T12:00:01Z | Списание с расчетного счета 00000000063 от 22.03.2021 12:00:01 | 66.02 / 51 | 1902.12\n195. 2021-03-22T12:00:00Z | Списание с расчетного счета 00000000059 от 22.03.2021 12:00:00 | 66.01 / 51 | 945302.69\n196. 2021-03-19T12:00:00Z | Списание с расчетного счета 00000000055 от 19.03.2021 12:00:00 | 76.05 / 51 | 1400\n197. 2021-03-18T12:00:00Z | Поступление на расчетный счет 00000000003 от 18.03.2021 12:00:00 | 51 / 62.02 | 1425310\n198. 2021-03-16T12:00:00Z | Списание с расчетного счета 00000000056 от 16.03.2021 12:00:00 | 91.02 / 51 | 60\n199. 2021-03-15T12:00:01Z | Списание с расчетного счета 00000000054 от 15.03.2021 12:00:01 | 66.02 / 51 | 7981.6\n200. 2021-03-15T12:00:00Z | Списание с расчетного счета 00000000053 от 15.03.2021 12:00:00 | 66.01 / 51 | 47921.4\n201. 2021-03-12T12:00:03Z | Поступление на расчетный счет 00000000002 от 12.03.2021 12:00:03 | 51 / 62.02 | 214600\n202. 2021-03-12T12:00:02Z | Списание с расчетного счета 00000000052 от 12.03.2021 12:00:02 | 70 / 51 | 29200\n203. 2021-03-12T12:00:01Z | Списание с расчетного счета 00000000051 от 12.03.2021 12:00:01 | 70 / 51 | 20000\n204. 2021-03-12T12:00:00Z | Списание с расчетного счета 00000000050 от 12.03.2021 12:00:00 | 91.02 / 51 | 246\n205. 2021-03-10T12:00:04Z | Списание с расчетного счета 00000000049 от 10.03.2021 12:00:04 | 60.02 / 51 | 56930\n206. 2021-03-10T12:00:03Z | Списание с расчетного счета 00000000047 от 10.03.2021 12:00:03 | 69.03.1 / 51 | 6175.08\n207. 2021-03-10T12:00:02Z | Списание с расчетного счета 00000000046 от 10.03.2021 12:00:02 | 69.11 / 51 | 246\n208. 2021-03-10T12:00:01Z | Списание с расчетного счета 00000000045 от 10.03.2021 12:00:01 | 69.01 / 51 | 741.94\n209. 2021-03-10T12:00:00Z | Списание с расчетного счета 00000000044 от 10.03.2021 12:00:00 | 91.02 / 51 | 2100\n210. 2021-03-10T00:00:00Z | Списание с расчетного счета 00000000048 от 10.03.2021 0:00:00 | 69.02.7 / 51 | 15370.08\n211. 2021-02-26T12:00:05Z | Списание с расчетного счета 00000000043 от 26.02.2021 12:00:05 | 60.02 / 51 | 50000\n212. 2021-02-26T12:00:04Z | Списание с расчетного счета 00000000042 от 26.02.2021 12:00:04 | 70 / 51 | 34310\n213. 2021-02-26T12:00:03Z | Списание с расчетного счета 00000000041 от 26.02.2021 12:00:03 | 70 / 51 | 23500\n214. 2021-02-26T12:00:02Z | Списание с расчетного счета 00000000040 от 26.02.2021 12:00:02 | 68.01.1 / 51 | 15990\n215. 2021-02-26T12:00:01Z | Списание с расчетного счета 00000000039 от 26.02.2021 12:00:01 | 91.02 / 51 | 289.05\n216. 2021-02-26T12:00:00Z | Списание с расчетного счета 00000000038 от 26.02.2021 12:00:00 | 70 / 51 | 50\n217. 2021-02-20T12:00:00Z | Списание с расчетного счета 00000000037 от 20.02.2021 12:00:00 | 60.02 / 51 | 320600\n218. 2021-02-19T12:00:01Z | Поступление на расчетный счет 00000000001 от 19.02.2021 12:00:01 | 51 / 62.02 | 518600\n219. 2021-02-19T12:00:00Z | Списание с расчетного счета 00000000036 от 19.02.2021 12:00:00 | 76.05 / 51 | 1400\n220. 2021-02-16T12:00:00Z | Списание с расчетного счета 00000000035 от 16.02.2021 12:00:00 | 91.02 / 51 | 60\n221. 2021-02-15T12:00:01Z | Списание с расчетного счета 00000000034 от 15.02.2021 12:00:01 | 66.02 / 51 | 27265.44\n222. 2021-02-15T12:00:00Z | Списание с расчетного счета 00000000033 от 15.02.2021 12:00:00 | 66.01 / 51 | 2137760.56\n223. 2021-02-12T12:00:02Z | Списание с расчетного счета 00000000031 от 12.02.2021 12:00:02 | 70 / 51 | 29200\n224. 2021-02-12T12:00:01Z | Списание с расчетного счета 00000000030 от 12.02.2021 12:00:01 | 70 / 51 | 20000\n225. 2021-02-12T12:00:00Z | Списание с расчетного счета 00000000029 от 12.02.2021 12:00:00 | 91.02 / 51 | 246\n226. 2021-02-09T12:00:00Z | Списание с расчетного счета 00000000032 от 09.02.2021 12:00:00 | 91.02 / 51 | 2100\n227. 2021-02-02T12:00:03Z | Списание с расчетного счета 00000000028 от 02.02.2021 12:00:03 | 60.02 / 51 | 425600\n228. 2021-02-02T12:00:02Z | Списание с расчетного счета 00000000027 от 02.02.2021 12:00:02 | 66.04 / 51 | 77854.1\n229. 2021-02-02T12:00:01Z | Списание с расчетного счета 00000000026 от 02.02.2021 12:00:01 | 66.04 / 51 | 28196.72\n230. 2021-02-02T12:00:00Z | Списание с расчетного счета 00000000025 от 02.02.2021 12:00:00 | 91.02 / 51 | 37\n231. 2021-01-29T12:00:03Z | Списание с расчетного счета 00000000024 от 29.01.2021 12:00:03 | 69.02.7 / 51 | 10720.08\n232. 2021-01-29T12:00:02Z | Списание с расчетного счета 00000000023 от 29.01.2021 12:00:02 | 69.03.1 / 51 | 3850.58\n233. 2021-01-29T12:00:01Z | Списание с расчетного счета 00000000022 от 29.01.2021 12:00:01 | 69.01 / 51 | 741.94\n234. 2021-01-29T12:00:00Z | Списание с расчетного счета 00000000021 от 29.01.2021 12:00:00 | 69.11 / 51 | 153\n235. 2021-01-28T12:00:02Z | Списание с расчетного счета 00000000020 от 28.01.2021 12:00:02 | 60.02 / 51 | 126300\n236. 2021-01-28T12:00:01Z | Списание с расчетного счета 00000000019 от 28.01.2021 12:00:01 | 91.02 / 51 | 179.78\n237. 2021-01-28T12:00:00Z | Списание с расчетного счета 00000000016 от 28.01.2021 12:00:00 | 70 / 51 | 17155\n238. 2021-01-28T00:00:00Z | Списание с расчетного счета 00000000018 от 28.01.2021 0:00:00 | 68.01.1 / 51 | 9945\n239. 2021-01-28T00:00:00Z | Списание с расчетного счета 00000000017 от 28.01.2021 0:00:00 | 70 / 51 | 18800\n240. 2021-01-28T00:00:00Z | Списание с расчетного счета 00000000015 от 28.01.2021 0:00:00 | 70 / 51 | 50\n241. 2021-01-25T12:00:00Z | Списание с расчетного счета 00000000014 от 25.01.2021 12:00:00 | 68.02 / 51 | 88003\n242. 2021-01-18T12:00:04Z | Списание с расчетного счета 00000000013 от 18.01.2021 12:00:04 | 70 / 51 | 16000\n243. 2021-01-18T12:00:03Z | Списание с расчетного счета 00000000012 от 18.01.2021 12:00:03 | 70 / 51 | 14600\n244. 2021-01-18T12:00:02Z | Списание с расчетного счета 00000000011 от 18.01.2021 12:00:02 | 91.02 / 51 | 2500\n245. 2021-01-18T12:00:01Z | Списание с расчетного счета 00000000010 от 18.01.2021 12:00:01 | 76.05 / 51 | 1400\n246. 2021-01-18T12:00:00Z | Списание с расчетного счета 00000000009 от 18.01.2021 12:00:00 | 91.02 / 51 | 153\n247. 2021-01-16T12:00:00Z | Списание с расчетного счета 00000000008 от 16.01.2021 12:00:00 | 91.02 / 51 | 60\n248. 2021-01-15T12:00:05Z | Списание с расчетного счета 00000000007 от 15.01.2021 12:00:05 | 66.02 / 51 | 28403.09\n249. 2021-01-15T12:00:04Z | Списание с расчетного счета 00000000006 от 15.01.2021 12:00:04 | 66.01 / 51 | 136622.91\n250. 2021-01-15T12:00:03Z | Списание с расчетного счета 00000000005 от 15.01.2021 12:00:03 | 69.02.7 / 51 | 10561.2\n251. 2021-01-15T12:00:02Z | Списание с расчетного счета 00000000004 от 15.01.2021 12:00:02 | 69.03.1 / 51 | 3849.26\n252. 2021-01-15T12:00:01Z | Списание с расчетного счета 00000000003 от 15.01.2021 12:00:01 | 69.01 / 51 | 703.54\n253. 2021-01-15T12:00:00Z | Списание с расчетного счета 00000000002 от 15.01.2021 12:00:00 | 69.11 / 51 | 153\n254. 2021-01-09T12:00:00Z | Списание с расчетного счета 00000000001 от 09.01.2021 12:00:00 | 91.02 / 51 | 2100\n255. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 51 / 62.02 | 3248300\n256. 2020-12-25T12:00:04Z | Списание с расчетного счета 00000000299 от 25.12.2020 12:00:04 | 91.02 / 51 | 179.78\n257. 2020-12-25T12:00:03Z | Списание с расчетного счета 00000000298 от 25.12.2020 12:00:03 | 68.01.1 / 51 | 9945\n258. 2020-12-25T12:00:02Z | Списание с расчетного счета 00000000297 от 25.12.2020 12:00:02 | 70 / 51 | 18800\n259. 2020-12-25T12:00:01Z | Списание с расчетного счета 00000000296 от 25.12.2020 12:00:01 | 70 / 51 | 17155\n260. 2020-12-25T12:00:00Z | Списание с расчетного счета 00000000295 от 25.12.2020 12:00:00 | 70 / 51 | 50\n261. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 51 / 62.02 | 216600\n262. 2020-12-16T16:20:52Z | Списание с расчетного счета 00000000294 от 16.12.2020 16:20:52 | 69.03.1 / 51 | 3849.26\n263. 2020-12-16T16:20:51Z | Списание с расчетного счета 00000000293 от 16.12.2020 16:20:51 | 91.02 / 51 | 60\n264. 2020-12-16T16:20:50Z | Списание с расчетного счета 00000000292 от 16.12.2020 16:20:50 | 69.02.7 / 51 | 10561.2\n265. 2020-12-16T16:20:27Z | Списание с расчетного счета 00000000291 от 16.12.2020 16:20:27 | 69.01 / 51 | 703.54\n266. 2020-12-16T16:20:06Z | Списание с расчетного счета 00000000290 от 16.12.2020 16:20:06 | 69.11 / 51 | 153\n267. 2020-12-15T11:13:41Z | Списание с расчетного счета 00000000289 от 15.12.2020 11:13:41 | 91.02 / 51 | 153\n268. 2020-12-15T11:13:40Z | Списание с расчетного счета 00000000288 от 15.12.2020 11:13:40 | 70 / 51 | 16000\n269. 2020-12-15T11:13:39Z | Списание с расчетного счета 00000000287 от 15.12.2020 11:13:39 | 70 / 51 | 14600\n270. 2020-12-15T11:13:38Z | Списание с расчетного счета 00000000286 от 15.12.2020 11:13:38 | 76.05 / 51 | 1400\n271. 2020-12-15T11:13:37Z | Списание с расчетного счета 00000000285 от 15.12.2020 11:13:37 | 66.02 / 51 | 28622.55\n272. 2020-12-15T11:13:21Z | Списание с расчетного счета 00000000284 от 15.12.2020 11:13:21 | 66.01 / 51 | 136403.45\n273. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 51 / 62.02 | 200000\n274. 2020-12-09T12:00:00Z | Списание с расчетного счета 00000000283 от 09.12.2020 12:00:00 | 91.02 / 51 | 2100\n275. 2020-11-30T12:00:07Z | Поступление на расчетный счет 00000000041 от 30.11.2020 12:00:07 | 51 / 62.02 | 38900\n276. 2020-11-30T12:00:06Z | Списание с расчетного счета 00000000282 от 30.11.2020 12:00:06 | 70 / 51 | 18800\n277. 2020-11-30T12:00:05Z | Списание с расчетного счета 00000000281 от 30.11.2020 12:00:05 | 70 / 51 | 17155\n278. 2020-11-30T12:00:04Z | Списание с расчетного счета 00000000280 от 30.11.2020 12:00:04 | 68.01.1 / 51 | 9945\n279. 2020-11-30T12:00:03Z | Списание с расчетного счета 00000000278 от 30.11.2020 12:00:03 | 70 / 51 | 50\n280. 2020-11-30T12:00:02Z | Списание с расчетного счета 00000000277 от 30.11.2020 12:00:02 | 91.02 / 51 | 37\n281. 2020-11-30T00:00:00Z | Списание с расчетного счета 00000000279 от 30.11.2020 0:00:00 | 91.02 / 51 | 179.78\n282. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 900000\n283. 2020-11-26T12:00:03Z | Поступление на расчетный счет 00000000040 от 26.11.2020 12:00:03 | 51 / 60.02 | 144749\n284. 2020-11-26T12:00:02Z | Списание с расчетного счета 00000000276 от 26.11.2020 12:00:02 | 60.01 / 51 | 524730.5\n285. 2020-11-26T12:00:02Z | Списание с расчетного счета 00000000276 от 26.11.2020 12:00:02 | 60.01 / 51 | 210770.5\n286. 2020-11-26T12:00:01Z | Списание с расчетного счета 00000000275 от 26.11.2020 12:00:01 | 66.03 / 51 | 400000\n287. 2020-11-26T12:00:00Z | Списание с расчетного счета 00000000274 от 26.11.2020 12:00:00 | 91.02 / 51 | 74\n288. 2020-11-23T12:00:01Z | Списание с расчетного счета 00000000273 от 23.11.2020 12:00:01 | 60.01 / 51 | 5429.5\n289. 2020-11-23T12:00:01Z | Списание с расчетного счета 00000000273 от 23.11.2020 12:00:01 | 60.01 / 51 | 63870.5\n290. 2020-11-23T12:00:00Z | Списание с расчетного счета 00000000272 от 23.11.2020 12:00:00 | 91.02 / 51 | 37\n291. 2020-11-19T12:00:04Z | Поступление на расчетный счет 00000000039 от 19.11.2020 12:00:04 | 51 / 62.02 | 1041800\n292. 2020-11-19T12:00:04Z | Поступление на расчетный счет 00000000039 от 19.11.2020 12:00:04 | 51 / 62.01 | 2278800\n293. 2020-11-19T12:00:03Z | Списание с расчетного счета 00000000271 от 19.11.2020 12:00:03 | 66.03 / 51 | 2335000\n294. 2020-11-19T12:00:02Z | Списание с расчетного счета 00000000270 от 19.11.2020 12:00:02 | 60.02 / 51 | 900000\n295. 2020-11-19T12:00:01Z | Списание с расчетного счета 00000000269 от 19.11.2020 12:00:01 | 91.02 / 51 | 37\n296. 2020-11-19T12:00:00Z | Списание с расчетного счета 00000000268 от 19.11.2020 12:00:00 | 91.02 / 51 | 8\n297. 2020-11-18T12:00:05Z | Поступление на расчетный счет 00000000038 от 18.11.2020 12:00:05 | 51 / 62.01 | 745300\n298. 2020-11-18T12:00:04Z | Поступление на расчетный счет 00000000037 от 18.11.2020 12:00:04 | 51 / 62.01 | 320000\n299. 2020-11-18T12:00:03Z | Списание с расчетного счета 00000000267 от 18.11.2020 12:00:03 | 60.02 / 51 | 144749\n300. 2020-11-18T12:00:03Z | Списание с расчетного счета 00000000267 от 18.11.2020 12:00:03 | 60.01 / 51 | 160000\n301. 2020-11-18T12:00:03Z | Списание с расчетного счета 00000000267 от 18.11.2020 12:00:03 | 60.01 / 51 | 389551\n302. 2020-11-18T12:00:02Z | Списание с расчетного счета 00000000266 от 18.11.2020 12:00:02 | 60.01 / 51 | 318600\n303. 2020-11-18T12:00:01Z | Списание с расчетного счета 00000000265 от 18.11.2020 12:00:01 | 76.05 / 51 | 1400\n304. 2020-11-18T12:00:00Z | Списание с расчетного счета 00000000264 от 18.11.2020 12:00:00 | 91.02 / 51 | 16\n305. 2020-11-16T16:08:52Z | Списание с расчетного счета 00000000263 от 16.11.2020 16:08:52 | 60.01 / 51 | 49298\n306. 2020-11-16T16:08:52Z | Списание с расчетного счета 00000000263 от 16.11.2020 16:08:52 | 60.01 / 51 | 3152\n307. 2020-11-16T16:08:51Z | Списание с расчетного счета 00000000262 от 16.11.2020 16:08:51 | 60.02 / 51 | 8700\n308. 2020-11-16T16:08:50Z | Списание с расчетного счета 00000000261 от 16.11.2020 16:08:50 | 91.02 / 51 | 60\n309. 2020-11-16T16:08:49Z | Списание с расчетного счета 00000000260 от 16.11.2020 16:08:49 | 66.01 / 51 | 165026\n310. 2020-11-13T12:00:03Z | Поступление на расчетный счет 00000000036 от 13.11.2020 12:00:03 | 51 / 62.01 | 313600\n311. 2020-11-13T12:00:02Z | Списание с расчетного счета 00000000258 от 13.11.2020 12:00:02 | 70 / 51 | 16000\n312. 2020-11-13T12:00:01Z | Списание с расчетного счета 00000000257 от 13.11.2020 12:00:01 | 70 / 51 | 14600\n313. 2020-11-13T12:00:00Z | Списание с расчетного счета 00000000256 от 13.11.2020 12:00:00 | 91.02 / 51 | 153\n314. 2020-11-13T00:00:00Z | Списание с расчетного счета 00000000259 от 13.11.2020 0:00:00 | 60.01 / 51 | 218400\n315. 2020-11-11T12:00:00Z | Списание с расчетного счета 00000000255 от 11.11.2020 12:00:00 | 66.04 / 51 | 19425.82\n316. 2020-11-10T15:39:13Z | Поступление на расчетный счет 00000000035 от 10.11.2020 15:39:13 | 51 / 62.02 | 328300\n317. 2020-11-09T12:00:00Z | Списание с расчетного счета 00000000253 от 09.11.2020 12:00:00 | 91.02 / 51 | 2100\n318. 2020-11-09T00:00:00Z | Списание с расчетного счета 00000000254 от 09.11.2020 0:00:00 | 60.01 / 51 | 151080\n319. 2020-10-27T12:00:01Z | Списание с расчетного счета 00000000252 от 27.10.2020 12:00:01 | 60.01 / 51 | 120000\n320. 2020-10-27T12:00:00Z | Списание с расчетного счета 00000000251 от 27.10.2020 12:00:00 | 70 / 51 | 50\n321. 2020-10-26T12:00:01Z | Списание с расчетного счета 00000000250 от 26.10.2020 12:00:01 | 68.02 / 51 | 4964\n322. 2020-10-26T12:00:00Z | Поступление на расчетный счет 00000000034 от 26.10.2020 12:00:00 | 51 / 62.02 | 175000\n323. 2020-10-20T12:00:00Z | Списание с расчетного счета 00000000248 от 20.10.2020 12:00:00 | 76.05 / 51 | 1400\n324. 2020-10-16T12:00:00Z | Списание с расчетного счета 00000000249 от 16.10.2020 12:00:00 | 91.02 / 51 | 60\n325. 2020-10-15T13:34:53Z | Списание с расчетного счета 00000000246 от 15.10.2020 13:34:53 | 66.02 / 51 | 30819.47\n326. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53\n327. 2020-10-14T12:00:00Z | Поступление на расчетный счет 00000000033 от 14.10.2020 12:00:00 | 51 / 60.01 | 160000\n328. 2020-10-09T12:00:00Z | Списание с расчетного счета 00000000247 от 09.10.2020 12:00:00 | 91.02 / 51 | 2100\n329. 2020-10-01T12:00:00Z | Списание с расчетного счета 00000000244 от 01.10.2020 12:00:00 | 60.01 / 51 | 49460\n330. 2020-09-30T12:00:03Z | Списание с расчетного счета 00000000243 от 30.09.2020 12:00:03 | 60.01 / 51 | 30000\n331. 2020-09-30T12:00:02Z | Списание с расчетного счета 00000000242 от 30.09.2020 12:00:02 | 70 / 51 | 50\n332. 2020-09-29T12:00:00Z | Списание с расчетного счета 00000000240 от 29.09.2020 12:00:00 | 60.01 / 51 | 159400\n333. 2020-09-23T12:00:03Z | Списание с расчетного счета 00000000241 от 23.09.2020 12:00:03 | 91.02 / 51 | 60\n334. 2020-09-23T12:00:02Z | Списание с расчетного счета 00000000239 от 23.09.2020 12:00:02 | 69.03.1 / 51 | 12.58\n335. 2020-09-23T12:00:01Z | Списание с расчетного счета 00000000238 от 23.09.2020 12:00:01 | 68.02 / 51 | 54.27\n336. 2020-09-23T12:00:00Z | Списание с расчетного счета 00000000237 от 23.09.2020 12:00:00 | 68.02 / 51 | 41441\n337. 2020-09-15T12:00:01Z | Списание с расчетного счета 00000000236 от 15.09.2020 12:00:01 | 66.02 / 51 | 33053.64\n338. 2020-09-15T12:00:00Z | Списание с расчетного счета 00000000235 от 15.09.2020 12:00:00 | 66.01 / 51 | 131972.36\n339. 2020-09-14T12:00:04Z | Списание с расчетного счета 00000000234 от 14.09.2020 12:00:04 | 69.02.7 / 51 | 14973.39\n340. 2020-09-14T12:00:03Z | Списание с расчетного счета 00000000233 от 14.09.2020 12:00:03 | 69.03.1 / 51 | 6055.36\n341. 2020-09-14T12:00:02Z | Списание с расчетного счета 00000000232 от 14.09.2020 12:00:02 | 76.05 / 51 | 1400", + "assistant_reply_first_line": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "materialized_but_not_anchor_matched", + "match_failure_reason": "contract_anchor_not_matched_in_materialized_rows", + "rows_fetched": 1000, + "rows_matched": 341, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-9mynLeGwme", + "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", + "anchor_not_matched_fallback_rows" + ], + "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": "19/15 в банковском учете" + }, + "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": "19/15 в банковском учете", + "anchor_value_resolved": "19/15 в банковском учете", + "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": "matched_non_empty", + "rows_fetched": 1000, + "raw_rows_received": 1000, + "rows_after_account_scope": 341, + "rows_after_recipe_filter": 0, + "rows_materialized": 341, + "rows_matched": 341, + "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": "-9qwb08ahRYC_I", + "llm_decomposition_effective_message": "операции по договору 19/15 в банковском учете", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "bank ops by contract 19/15", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "-9qwb08ahRYC_I", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "операции по договору 19/15 в банковском учете" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 99, + "id": "X039", + "question": "покажи банк опер по дог 19/15 пж", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_19-30-01-x039", + "status_code": 200, + "ok": true, + "elapsed_ms": 7094, + "reply_type": "factual", + "trace_id": "address-kgjzN3F4ld", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 1.\n1. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "assistant_reply_first_line": "Собран список банковских операций по договору (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 1, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-kgjzN3F4ld", + "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", + "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": "high", + "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": "19/15" + }, + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": 1, + "rows_materialized": 341, + "rows_matched": 1, + "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": "bQybYTauQU1YD1", + "llm_decomposition_effective_message": "Показать банковские операции по договору 19/15.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "покажи банк операции по договор 19/15", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "bQybYTauQU1YD1", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Показать банковские операции по договору 19/15." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 100, + "id": "X040", + "question": "епт транзакции договор 19/15", + "session": null, + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_19-30-01-x040", + "status_code": 200, + "ok": true, + "elapsed_ms": 7150, + "reply_type": "factual", + "trace_id": "address-DK16gFZ-Lx", + "assistant_reply": "Собран список банковских операций по договору (live address lane).\nСтрок отобрано: 1.\n1. 2020-10-15T13:34:19Z | Списание с расчетного счета 00000000245 от 15.10.2020 13:34:19 | 66.01 / 51 | 134206.53", + "assistant_reply_first_line": "Собран список банковских операций по договору (live address lane).", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_contract_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 1, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-DK16gFZ-Lx", + "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": "19/15" + }, + "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": "19/15", + "anchor_value_resolved": "19/15", + "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": 1, + "rows_materialized": 341, + "rows_matched": 1, + "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": "9S_T7Q1HuCDh6w", + "llm_decomposition_effective_message": "Неясные транзакции по договору 19/15", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "транзакции договор 19/15", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "9S_T7Q1HuCDh6w", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Неясные транзакции по договору 19/15" + } + }, + "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_Nightly_stress_102_19-30-01-chain_balance_60_extra", + "status_code": 200, + "ok": true, + "elapsed_ms": 5878, + "reply_type": "factual", + "trace_id": "address-poxumw9Gwu", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 138, + "rows_matched": 138, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-poxumw9Gwu", + "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-01-01", + "period_to": "2020-12-31", + "as_of_date": "2020-12-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": 138, + "raw_rows_received": 138, + "rows_after_account_scope": 138, + "rows_after_recipe_filter": 138, + "rows_materialized": 138, + "rows_matched": 138, + "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": "HK8hZD2YPsJXIB", + "llm_decomposition_effective_message": "Показать сальдо по счету 60 за период 2020 год.", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "покажи сальдо по счету 60 за 2020", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "HK8hZD2YPsJXIB", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Показать сальдо по счету 60 за период 2020 год." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 102, + "id": "X042", + "question": "а теперь только май 2020", + "session": "chain_balance_60_extra", + "session_id": "asst-2026-04-02_Address_Nightly_stress_102_19-30-01-chain_balance_60_extra", + "status_code": 200, + "ok": true, + "elapsed_ms": 931, + "reply_type": "factual", + "trace_id": "address-Hl2LxwOXwr", + "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", + "assistant_reply_first_line": "Адресный срез по счету собран (по движениям live MCP).", + "expected_intent": "account_balance_snapshot", + "actual_intent": "account_balance_snapshot", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_movements_account_snapshot_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 6, + "rows_matched": 6, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-Hl2LxwOXwr", + "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", + "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, + "period_from": "2020-05-01", + "period_to": "2020-05-31", + "as_of_date": "2020-05-31", + "account": "60" + }, + "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": "а теперь только май 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 + }, + "error_code": null, + "error_message": null + } + ] +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterGeneral5Fix/2026-04-02_Address_Nightly_stress_102_19-30-01/response_audit.md b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterGeneral5Fix/2026-04-02_Address_Nightly_stress_102_19-30-01/response_audit.md new file mode 100644 index 0000000..966dd0a --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterGeneral5Fix/2026-04-02_Address_Nightly_stress_102_19-30-01/response_audit.md @@ -0,0 +1,106 @@ +# Response Audit: 2026-04-02_Address_Nightly_stress_102_19-30-01 + +| id | strict | route_health | reply_type | intent | limited_reason | question | assistant_first_line | +|---|---|---|---|---|---|---|---| +| S001 | True | ok_or_factual | factual | list_documents_by_counterparty | None | свк доки за 2020 покаж пж | Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу. | +| S002 | True | ok_or_factual | factual | list_documents_by_counterparty | None | покеж все доки по свк за 20 год | Собран список документов по контрагенту (live address lane). | +| S003 | True | ok_or_factual | factual | list_documents_by_counterparty | None | дай список документов по свк за 2020 | Собран список документов по контрагенту (live address lane). | +| S004 | True | ok_or_factual | factual | list_documents_by_counterparty | None | какие у свк есть доки за 2020? | Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу. | +| S005 | True | ok_or_factual | factual | list_documents_by_counterparty | None | че по свк по докам за 2020 год | Собран список документов по контрагенту (live address lane). | +| S006 | True | ok_or_factual | factual | list_documents_by_counterparty | None | ёпт покажи доки по свк за 2020 | Собран список документов по контрагенту (live address lane). | +| S007 | True | ok_or_factual | factual | list_documents_by_counterparty | None | бля, доки свк 2020 вывали | Собран список документов по контрагенту (live address lane). | +| S008 | True | ok_or_factual | factual | list_documents_by_counterparty | None | svk docs for 2020 please | Собран список документов по контрагенту (live address lane). | +| S009 | True | ok_or_factual | factual | list_documents_by_counterparty | None | docs by counterparty svk year 2020 | Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу. | +| S010 | True | ok_or_factual | factual | list_documents_by_counterparty | None | по контрагенту свк покаж документы за 2020 | Собран список документов по контрагенту (live address lane). | +| S011 | True | ok_or_factual | factual | list_documents_by_counterparty | None | плс доки по свк 2020 | Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу. | +| S012 | True | ok_or_factual | factual | list_documents_by_counterparty | None | свк док за 2020 гони | Собран список документов по контрагенту (live address lane). | +| S013 | True | ok_or_factual | factual | bank_operations_by_counterparty | None | по свк банковские операции за 2020 покаж | Собран список банковских операций по контрагенту (live address lane). | +| S014 | True | ok_or_factual | factual | bank_operations_by_counterparty | None | свк выписка банка 2020 | Собран список банковских операций по контрагенту (live address lane). | +| S015 | True | ok_or_factual | factual | bank_operations_by_counterparty | None | платежи по свк за 2020 выведи | Собран список банковских операций по контрагенту (live address lane). | +| S016 | True | ok_or_factual | factual | bank_operations_by_counterparty | None | оплаты по свк за 2020 | Собран список банковских операций по контрагенту (live address lane). | +| S017 | True | ok_or_factual | factual | bank_operations_by_counterparty | None | свк банк опер за 2020 | Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу. | +| S018 | True | ok_or_factual | factual | bank_operations_by_counterparty | None | че у свк по банку за 2020 | Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу. | +| S019 | True | ok_or_factual | factual | bank_operations_by_counterparty | None | свк списания/поступления за 2020 | Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу. | +| S020 | True | ok_or_factual | factual | bank_operations_by_counterparty | None | bank ops by svk for 2020 | Собран список банковских операций по контрагенту (live address lane). | +| S021 | True | ok_or_factual | factual | bank_operations_by_counterparty | None | transactions by counterparty svk 2020 | Собран список банковских операций по контрагенту (live address lane). | +| S022 | True | ok_or_factual | factual | bank_operations_by_counterparty | None | бля, по свк банковские платежки 2020 | Собран список банковских операций по контрагенту (live address lane). | +| S023 | True | ok_or_factual | factual | account_balance_snapshot | None | сальдо по счету 60.01 на дату 2020-07-31 | Адресный срез по счету собран (по движениям live MCP). | +| S024 | True | ok_or_factual | factual | account_balance_snapshot | None | остаток по счету 60.01 на 2020.05 | Адресный срез по счету собран (по движениям live MCP). | +| S025 | True | ok_or_factual | factual | account_balance_snapshot | None | покажи остаток по 60.01 за май 2020 | Адресный срез по счету собран (по движениям live MCP). | +| S026 | True | ok_or_factual | factual | account_balance_snapshot | None | счет 60 остаток на май 2020 | Адресный срез по счету собран (по движениям live MCP). | +| S027 | True | ok_or_factual | factual | account_balance_snapshot | None | баланс account 60.01 as of 2020-07-31 | Адресный срез по счету собран (по движениям live MCP). | +| S028 | True | ok_or_factual | factual | account_balance_snapshot | None | 60.01 saldo на 31.07.2020 | Адресный срез по счету собран (по движениям live MCP). | +| S029 | True | ok_or_factual | factual | account_balance_snapshot | None | сколько на счете 60 на конец 2020-05 | Адресный срез по счету собран (по движениям live MCP). | +| S030 | True | partial_non_blocking | partial_coverage | account_balance_snapshot | empty_match | дай остаток 60.02 на 2020-12-31 | В live-данных по текущему фильтру записи не найдены. | +| S031 | True | partial_non_blocking | partial_coverage | account_balance_snapshot | empty_match | епт, сальдо по счету 62.01 на 2020-12-31 | В live-данных по текущему фильтру записи не найдены. | +| S032 | True | ok_or_factual | factual | account_balance_snapshot | None | плс остаток по счету 51 на 2020-06-30 | Адресный срез по счету собран (по движениям live MCP). | +| S033 | True | ok_or_factual | factual | account_balance_snapshot | None | как там по счету 60.01 на 2020.07? | Адресный срез по счету собран (по движениям live MCP). | +| S034 | True | ok_or_factual | factual | account_balance_snapshot | None | сальдо 60 на 2020 | Адресный срез по счету собран (по движениям live MCP). | +| S035 | True | ok_or_factual | factual | documents_forming_balance | None | какие документы формируют остаток по счету 60.01 на 2020-07-31 | Собран drilldown документов, формирующих остаток по счету на указанную дату. | +| S036 | True | ok_or_factual | factual | documents_forming_balance | None | из чего состоит остаток по счету 60 на 2020.05 | Собран drilldown документов, формирующих остаток по счету на указанную дату. | +| S037 | True | ok_or_factual | factual | documents_forming_balance | None | раскрой остаток 60.01 по документам на конец июля 2020 | Собран drilldown документов, формирующих остаток по счету на указанную дату. | +| S038 | True | ok_or_factual | factual | documents_forming_balance | None | доки под остатком 60.01 на 2020-07-31 | Собран drilldown документов, формирующих остаток по счету на указанную дату. | +| S039 | True | ok_or_factual | factual | documents_forming_balance | None | documents forming balance for account 60.01 as of 2020-07-31 | Собран drilldown документов, формирующих остаток по счету на указанную дату. | +| S040 | True | ok_or_factual | factual | documents_forming_balance | None | бля, какие доки формируют остаток 60.01 на 2020-05-31 | Собран drilldown документов, формирующих остаток по счету на указанную дату. | +| S041 | True | partial_non_blocking | partial_coverage | documents_forming_balance | empty_match | по счету 62.01 раскрой остаток документами на 2020-12-31 | В live-данных по текущему фильтру записи не найдены. | +| S042 | True | ok_or_factual | factual | documents_forming_balance | None | из чего остаток по счету 51 на 2020-06-30 | Собран drilldown документов, формирующих остаток по счету на указанную дату. | +| S043 | True | ok_or_factual | factual | list_documents_by_contract | None | покажи документы по договору 19/15 за 2020 | Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк. | +| S044 | True | ok_or_factual | factual | list_documents_by_contract | None | доки по дог. 19/15 за 2020 | Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк. | +| S045 | True | ok_or_factual | factual | list_documents_by_contract | None | какие документы по контракту 19/15 | Собран список документов по договору (live address lane). | +| S046 | True | ok_or_factual | factual | list_documents_by_contract | None | docs by contract 19/15 year 2020 | Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк. | +| S047 | True | ok_or_factual | factual | list_documents_by_contract | None | бля, покажи по договору 19/15 доки | Собран список документов по договору (live address lane). | +| S048 | True | ok_or_factual | factual | list_documents_by_contract | None | договор 19/15 документы | Собран список документов по договору (live address lane). | +| S049 | True | ok_or_factual | factual | list_documents_by_contract | None | плс документы договор №19/15 | Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу. | +| S050 | True | ok_or_factual | factual | list_documents_by_contract | None | покеж документы по 19/15 | Собран список документов по договору (live address lane). | +| S051 | True | ok_or_factual | factual | bank_operations_by_contract | None | банковские операции по договору 19/15 | Собран список банковских операций по договору (live address lane). | +| S052 | True | ok_or_factual | factual | bank_operations_by_contract | None | платежи по договору 19/15 | Собран список банковских операций по договору (live address lane). | +| S053 | True | ok_or_factual | factual | bank_operations_by_contract | None | выписка по договору 19/15 | Собран список банковских операций по договору (live address lane). | +| S054 | True | ok_or_factual | factual | bank_operations_by_contract | None | bank ops by contract 19/15 | Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу. | +| S055 | True | ok_or_factual | factual | bank_operations_by_contract | None | ёпт, покажи банк операции по дог 19/15 | Собран список банковских операций по договору (live address lane). | +| S056 | True | ok_or_factual | factual | bank_operations_by_contract | None | по контракту 19/15 платежки | Собран список банковских операций по договору (live address lane). | +| S057 | True | ok_or_factual | factual | account_balance_snapshot | None | покажи сальдо по счету 60 за 2020 | Адресный срез по счету собран (по движениям live MCP). | +| S058 | True | ok_or_factual | factual | account_balance_snapshot | None | а теперь только май 2020 | Адресный срез по счету собран (по движениям live MCP). | +| S059 | True | ok_or_factual | factual | account_balance_snapshot | None | ок, теперь 2020.05 | Адресный срез по счету собран (по движениям live MCP). | +| S060 | True | ok_or_factual | factual | account_balance_snapshot | None | теперь на 2020-07-31 | Адресный срез по счету собран (по движениям live MCP). | +| X001 | True | ok_or_factual | factual | list_documents_by_counterparty | None | свк доки кинь за 2020 | Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу. | +| X002 | True | ok_or_factual | factual | list_documents_by_counterparty | None | по свк все документы за 20й год | Собран список документов по контрагенту (live address lane). | +| X003 | True | ok_or_factual | factual | list_documents_by_counterparty | None | пж вывали доки контрагент свк 2020 | Собран список документов по контрагенту (live address lane). | +| X004 | True | ok_or_factual | factual | list_documents_by_counterparty | None | svk poka docy za 2020 | Собран список документов по контрагенту (live address lane). | +| X005 | True | ok_or_factual | factual | list_documents_by_counterparty | None | какие доки по компании свк за 2020 | Собран список документов по контрагенту (live address lane). | +| X006 | True | ok_or_factual | factual | list_documents_by_counterparty | None | бля покаж свк документы 2020 | Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу. | +| X007 | True | ok_or_factual | factual | bank_operations_by_counterparty | None | свк банк операции за 2020 | Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу. | +| X008 | True | ok_or_factual | factual | bank_operations_by_counterparty | None | по свк выписку банка за 2020 выведи | Собран список банковских операций по контрагенту (live address lane). | +| X009 | True | ok_or_factual | factual | bank_operations_by_counterparty | None | свк платежки за 2020 | Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу. | +| X010 | True | ok_or_factual | factual | bank_operations_by_counterparty | None | bank ops svk 2020 | Собран список банковских операций по контрагенту (live address lane). | +| X011 | True | ok_or_factual | factual | bank_operations_by_counterparty | None | транзакции по свк за 2020 | Собран список банковских операций по контрагенту (live address lane). | +| X012 | True | ok_or_factual | factual | bank_operations_by_counterparty | None | ёпт по свк че по банку 2020 | Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу. | +| X013 | True | ok_or_factual | factual | account_balance_snapshot | None | остаток по 60.01 на 2020-07-31 | Адресный срез по счету собран (по движениям live MCP). | +| X014 | True | ok_or_factual | factual | account_balance_snapshot | None | сальдо 60.01 на 31.07.2020 | Адресный срез по счету собран (по движениям live MCP). | +| X015 | True | ok_or_factual | factual | account_balance_snapshot | None | что на счете 60 на 2020.05 | Адресный срез по счету собран (по движениям live MCP). | +| X016 | True | ok_or_factual | factual | account_balance_snapshot | None | дай остаток 62.01 на 2020 май | Адресный срез по счету собран (по движениям live MCP). | +| X017 | True | partial_non_blocking | partial_coverage | account_balance_snapshot | empty_match | saldo account 60 as of 2020-12-31 | В live-данных по текущему фильтру записи не найдены. | +| X018 | True | ok_or_factual | factual | account_balance_snapshot | None | плиз остаток по счету 51 на 2020-06-30 | Адресный срез по счету собран (по движениям live MCP). | +| X019 | True | partial_non_blocking | partial_coverage | account_balance_snapshot | empty_match | скока по 60.02 на конец 2020-12 | В live-данных по текущему фильтру записи не найдены. | +| X020 | True | ok_or_factual | factual | account_balance_snapshot | None | бля сальдо 60.01 на 2020-05-31 | Адресный срез по счету собран (по движениям live MCP). | +| X021 | True | ok_or_factual | factual | documents_forming_balance | None | раскрой остаток 60.01 по документам на конец июля 2020 | Собран drilldown документов, формирующих остаток по счету на указанную дату. | +| X022 | True | ok_or_factual | factual | documents_forming_balance | None | доки под остатком 60.01 на 2020-07-31 | Собран drilldown документов, формирующих остаток по счету на указанную дату. | +| X023 | True | ok_or_factual | factual | documents_forming_balance | None | из чего остаток 60.01 на 2020-07-31 | Собран drilldown документов, формирующих остаток по счету на указанную дату. | +| X024 | True | ok_or_factual | factual | documents_forming_balance | None | какие документы формируют остаток по 60.01 на 2020-07-31 | Собран drilldown документов, формирующих остаток по счету на указанную дату. | +| X025 | True | ok_or_factual | factual | documents_forming_balance | None | docs forming balance 60.01 as of 2020-07-31 | Собран drilldown документов, формирующих остаток по счету на указанную дату. | +| X026 | True | partial_non_blocking | partial_coverage | documents_forming_balance | empty_match | раскидай остаток 62.01 по докам на 2020-12-31 | В live-данных по текущему фильтру записи не найдены. | +| X027 | True | ok_or_factual | factual | documents_forming_balance | None | по счету 51 раскрой остаток документами на 2020-06-30 | Собран drilldown документов, формирующих остаток по счету на указанную дату. | +| X028 | True | ok_or_factual | factual | documents_forming_balance | None | бля из чего состоит остаток по 60.01 на 2020-05-31 | Собран drilldown документов, формирующих остаток по счету на указанную дату. | +| X029 | True | ok_or_factual | factual | list_documents_by_contract | None | доки по договору 19/15 за 2020 | Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк. | +| X030 | True | ok_or_factual | factual | list_documents_by_contract | None | покажи документы контракт 19/15 | Собран список документов по договору (live address lane). | +| X031 | True | ok_or_factual | factual | list_documents_by_contract | None | docs by contract 19/15 2020 | Период сохранен. Глубина live-выборки автоматически расширена до 1000 строк. | +| X032 | True | ok_or_factual | factual | list_documents_by_contract | None | по дог 19/15 какие документы | Собран список документов по договору (live address lane). | +| X033 | True | ok_or_factual | factual | list_documents_by_contract | None | договор 19/15 выведи доки | Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу. | +| X034 | True | ok_or_factual | factual | list_documents_by_contract | None | нах покажи документы по 19/15 | Собран список документов по договору (live address lane). | +| X035 | True | ok_or_factual | factual | bank_operations_by_contract | None | банк операции по договору 19/15 | Собран список банковских операций по договору (live address lane). | +| X036 | True | ok_or_factual | factual | bank_operations_by_contract | None | платежки по дог 19/15 | Собран список банковских операций по договору (live address lane). | +| X037 | True | ok_or_factual | factual | bank_operations_by_contract | None | выписка по контракту 19/15 | Собран список банковских операций по договору (live address lane). | +| X038 | True | ok_or_factual | factual | bank_operations_by_contract | None | bank ops by contract 19/15 | Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу. | +| X039 | True | ok_or_factual | factual | bank_operations_by_contract | None | покажи банк опер по дог 19/15 пж | Собран список банковских операций по договору (live address lane). | +| X040 | True | ok_or_factual | factual | bank_operations_by_contract | None | епт транзакции договор 19/15 | Собран список банковских операций по договору (live address lane). | +| X041 | True | ok_or_factual | factual | account_balance_snapshot | None | покажи сальдо по счету 60 за 2020 | Адресный срез по счету собран (по движениям live MCP). | +| X042 | True | ok_or_factual | factual | account_balance_snapshot | None | а теперь только май 2020 | Адресный срез по счету собран (по движениям live MCP). | diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterGeneral5Fix/2026-04-02_Address_Nightly_stress_102_19-30-01/run_summary.json b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterGeneral5Fix/2026-04-02_Address_Nightly_stress_102_19-30-01/run_summary.json new file mode 100644 index 0000000..52b277d --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterGeneral5Fix/2026-04-02_Address_Nightly_stress_102_19-30-01/run_summary.json @@ -0,0 +1,54 @@ +{ + "run_id": "2026-04-02_Address_Nightly_stress_102_19-30-01", + "generated_at": "2026-04-02T19:40:36", + "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", + "strict_policy": "route", + "totals": { + "questions_total": 102, + "ok_200_count": 102, + "semantic_pass_count": 102, + "semantic_pass_rate": 1.0, + "route_pass_count": 102, + "route_pass_rate": 1.0, + "strict_pass_count": 102, + "strict_pass_rate": 1.0, + "factual_count": 96, + "partial_coverage_count": 6, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_applied_count": 80, + "avg_elapsed_ms": 6219.8 + }, + "distributions": { + "reply_type": { + "factual": 96, + "partial_coverage": 6 + }, + "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": { + "matched_non_empty": 96, + "no_raw_rows": 6 + }, + "limited_reason_category": { + "empty_match": 6 + }, + "route_health": { + "ok_or_factual": 96, + "partial_non_blocking": 6 + } + } +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterGeneral5Fix/2026-04-02_Address_Nightly_stress_102_19-30-01_comparator_report.json b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterGeneral5Fix/2026-04-02_Address_Nightly_stress_102_19-30-01_comparator_report.json new file mode 100644 index 0000000..6fd9cd0 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterGeneral5Fix/2026-04-02_Address_Nightly_stress_102_19-30-01_comparator_report.json @@ -0,0 +1,67 @@ +{ + "generated_at": "2026-04-02T19:40:36", + "overall_pass": true, + "baseline": { + "summary_path": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\runs\\2026-04-02_Address_Slang_Live_Stress_2026-04-02_12-57-27\\run_summary.json", + "run_id": "2026-04-02_Address_Slang_Live_Stress_2026-04-02_12-57-27", + "questions_total": 102, + "strict_pass_rate": 1.0, + "route_pass_rate": 1.0, + "execution_error_count": 0, + "false_factual_rate": 0.0, + "notes": [ + "execution_error_count derived as http_error_count + limited_reason_category.execution_error", + "false_factual_rate derived from false_factual_count/questions_total" + ] + }, + "candidate": { + "summary_path": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\runs\\2026-04-02_Address_Nightly_Regression_AfterGeneral5Fix\\2026-04-02_Address_Nightly_stress_102_19-30-01\\run_summary.json", + "run_id": "2026-04-02_Address_Nightly_stress_102_19-30-01", + "questions_total": 102, + "strict_pass_rate": 1.0, + "route_pass_rate": 1.0, + "execution_error_count": 0, + "false_factual_rate": 0.0, + "notes": [ + "execution_error_count derived as http_error_count + limited_reason_category.execution_error", + "false_factual_rate derived from false_factual_count/questions_total" + ] + }, + "checks": [ + { + "metric": "strict_pass_rate", + "passed": true, + "baseline": 1.0, + "candidate": 1.0, + "rule": "candidate >= baseline" + }, + { + "metric": "route_pass_rate", + "passed": true, + "baseline": 1.0, + "candidate": 1.0, + "rule": "candidate >= baseline" + }, + { + "metric": "execution_error_count", + "passed": true, + "baseline": 0, + "candidate": 0, + "rule": "candidate <= baseline" + }, + { + "metric": "false_factual_rate", + "passed": true, + "baseline": 0.0, + "candidate": 0.0, + "rule": "candidate <= baseline" + }, + { + "metric": "questions_total_match", + "passed": true, + "baseline": 102, + "candidate": 102, + "rule": "candidate == baseline" + } + ] +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterGeneral5Fix/2026-04-02_Address_Nightly_stress_102_19-30-01_validator_report.json b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterGeneral5Fix/2026-04-02_Address_Nightly_stress_102_19-30-01_validator_report.json new file mode 100644 index 0000000..004d940 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterGeneral5Fix/2026-04-02_Address_Nightly_stress_102_19-30-01_validator_report.json @@ -0,0 +1,23 @@ +{ + "generated_at": "2026-04-02T19:40:36", + "total": 1, + "passed": 1, + "failed": 0, + "results": [ + { + "run_dir": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\runs\\2026-04-02_Address_Nightly_Regression_AfterGeneral5Fix\\2026-04-02_Address_Nightly_stress_102_19-30-01", + "valid": true, + "errors": [], + "warnings": [], + "metrics": { + "run_id": "2026-04-02_Address_Nightly_stress_102_19-30-01", + "questions_total": 102, + "route_pass_rate": 1.0, + "strict_pass_rate": 1.0, + "http_error_count": 0, + "rows_count": 102, + "failures_count": 0 + } + } + ] +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterGeneral5Fix/README.md b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterGeneral5Fix/README.md new file mode 100644 index 0000000..59a9790 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterGeneral5Fix/README.md @@ -0,0 +1,22 @@ +# 2026-04-02_Address_Nightly_Regression_AfterGeneral5Fix + +Generated at: 2026-04-02T19:42:39 +Dry run: False +Strict policy: route +Overall: PASS + +## Packs +### stress_102 +- run_id: 2026-04-02_Address_Nightly_stress_102_19-30-01 +- runner_ok: True +- validator_ok: True +- comparator_ok: True +- run_dir: X:\1C\NDC_1C\docs\ADDRESS\runs\2026-04-02_Address_Nightly_Regression_AfterGeneral5Fix\2026-04-02_Address_Nightly_stress_102_19-30-01 + +### followup_25 +- run_id: 2026-04-02_Address_Nightly_followup_25_19-40-36 +- runner_ok: True +- validator_ok: True +- comparator_ok: True +- run_dir: X:\1C\NDC_1C\docs\ADDRESS\runs\2026-04-02_Address_Nightly_Regression_AfterGeneral5Fix\2026-04-02_Address_Nightly_followup_25_19-40-36 + diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterGeneral5Fix/nightly_summary.json b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterGeneral5Fix/nightly_summary.json new file mode 100644 index 0000000..3a3ec23 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_AfterGeneral5Fix/nightly_summary.json @@ -0,0 +1,35 @@ +{ + "nightly_run_id": "2026-04-02_Address_Nightly_Regression_AfterGeneral5Fix", + "generated_at": "2026-04-02T19:42:39", + "dry_run": false, + "overall_ok": true, + "strict_policy": "route", + "packs": [ + { + "pack": "stress_102", + "run_id": "2026-04-02_Address_Nightly_stress_102_19-30-01", + "questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\address_slang_stress_full_2026-04-02.json", + "baseline_summary": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\runs\\2026-04-02_Address_Slang_Live_Stress_2026-04-02_12-57-27\\run_summary.json", + "run_dir": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\runs\\2026-04-02_Address_Nightly_Regression_AfterGeneral5Fix\\2026-04-02_Address_Nightly_stress_102_19-30-01", + "runner_ok": true, + "validator_ok": true, + "comparator_ok": true, + "errors": [], + "validator_report": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\runs\\2026-04-02_Address_Nightly_Regression_AfterGeneral5Fix\\2026-04-02_Address_Nightly_stress_102_19-30-01_validator_report.json", + "comparator_report": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\runs\\2026-04-02_Address_Nightly_Regression_AfterGeneral5Fix\\2026-04-02_Address_Nightly_stress_102_19-30-01_comparator_report.json" + }, + { + "pack": "followup_25", + "run_id": "2026-04-02_Address_Nightly_followup_25_19-40-36", + "questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\address_followup_context_chains_2026-04-02.json", + "baseline_summary": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\runs\\2026-04-02_Address_Followup_Context_Chains_2026-04-02_19-15-Run5\\run_summary.json", + "run_dir": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\runs\\2026-04-02_Address_Nightly_Regression_AfterGeneral5Fix\\2026-04-02_Address_Nightly_followup_25_19-40-36", + "runner_ok": true, + "validator_ok": true, + "comparator_ok": true, + "errors": [], + "validator_report": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\runs\\2026-04-02_Address_Nightly_Regression_AfterGeneral5Fix\\2026-04-02_Address_Nightly_followup_25_19-40-36_validator_report.json", + "comparator_report": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\runs\\2026-04-02_Address_Nightly_Regression_AfterGeneral5Fix\\2026-04-02_Address_Nightly_followup_25_19-40-36_comparator_report.json" + } + ] +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Repro_CustomerList_AfterRouterFix/README.md b/docs/ADDRESS/runs/2026-04-02_Address_Repro_CustomerList_AfterRouterFix/README.md new file mode 100644 index 0000000..619b655 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Repro_CustomerList_AfterRouterFix/README.md @@ -0,0 +1,28 @@ +# 2026-04-02_Address_Repro_CustomerList_AfterRouterFix + +Generated at: 2026-04-02T21:47:01 +Questions file: X:\1C\NDC_1C\docs\ADDRESS\question_sets\temp_repro_customer_list_issue_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 +Strict policy: factual + +## Totals +- questions_total: 2 +- ok_200_count: 2 +- semantic_pass_count: 2 +- semantic_pass_rate: 1.0 +- route_pass_count: 2 +- route_pass_rate: 1.0 +- strict_pass_count: 2 +- strict_pass_rate: 1.0 +- factual_count: 2 +- partial_coverage_count: 0 +- clarification_required_count: 0 +- http_error_count: 0 +- llm_decomposition_applied_count: 0 +- avg_elapsed_ms: 919.5 + +## Files +- run_summary.json +- full_live_results.json +- failures_only.json diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Repro_CustomerList_AfterRouterFix/failures_only.json b/docs/ADDRESS/runs/2026-04-02_Address_Repro_CustomerList_AfterRouterFix/failures_only.json new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Repro_CustomerList_AfterRouterFix/failures_only.json @@ -0,0 +1 @@ +[] diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Repro_CustomerList_AfterRouterFix/full_live_results.json b/docs/ADDRESS/runs/2026-04-02_Address_Repro_CustomerList_AfterRouterFix/full_live_results.json new file mode 100644 index 0000000..30b5740 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Repro_CustomerList_AfterRouterFix/full_live_results.json @@ -0,0 +1,337 @@ +{ + "run_id": "2026-04-02_Address_Repro_CustomerList_AfterRouterFix", + "generated_at": "2026-04-02T21:47:01", + "summary": { + "run_id": "2026-04-02_Address_Repro_CustomerList_AfterRouterFix", + "generated_at": "2026-04-02T21:47:01", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\temp_repro_customer_list_issue_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", + "strict_policy": "factual", + "totals": { + "questions_total": 2, + "ok_200_count": 2, + "semantic_pass_count": 2, + "semantic_pass_rate": 1.0, + "route_pass_count": 2, + "route_pass_rate": 1.0, + "strict_pass_count": 2, + "strict_pass_rate": 1.0, + "factual_count": 2, + "partial_coverage_count": 0, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_applied_count": 0, + "avg_elapsed_ms": 919.5 + }, + "distributions": { + "reply_type": { + "factual": 2 + }, + "actual_intent": { + "counterparty_activity_lifecycle": 2 + }, + "actual_mode": { + "address_query": 2 + }, + "mcp_call_status": { + "matched_non_empty": 2 + }, + "limited_reason_category": {}, + "route_health": { + "ok_or_factual": 2 + } + } + }, + "rows": [ + { + "index": 1, + "id": "R001", + "question": "выведи список заказчиков за все время", + "session": null, + "session_id": "asst-2026-04-02_Address_Repro_CustomerList_AfterRouterFix-r001", + "status_code": 200, + "ok": true, + "elapsed_ms": 874, + "reply_type": "factual", + "trace_id": "address-yRgs3Oi797", + "assistant_reply": "Собран профиль активности заказчиков (bank-doc activity aggregate).\nСтрок агрегата: 46.\nАктивные заказчики за все время: 46.\n1. ГКУ | операций: 44 | последняя активность: 2019-12-25T16:09:27Z\n2. ГБУ \\Многофункциональный центр\\ | операций: 38 | последняя активность: 2018-12-04T12:00:01Z\n3. СБЕРБАНК, ПАО | операций: 36 | последняя активность: 2020-03-02T12:00:04Z\n4. Комитет государственных услуг г. Москвы | операций: 27 | последняя активность: 2015-05-19T12:00:00Z\n5. Группа | операций: 26 | последняя активность: 2021-11-10T12:00:07Z\n6. НОРТОН | операций: 14 | последняя активность: 2022-01-20T12:00:05Z\n7. МНН | операций: 14 | последняя активность: 2022-01-20T12:00:04Z\n8. МОСКОВСКИЙ ФИЛИАЛ ООО КБ\\МЕГАПОЛИС\\ | операций: 11 | последняя активность: 2019-07-31T12:00:22Z\n9. Департамент капитального ремонта города Москвы. | операций: 10 | последняя активность: 2019-09-16T11:00:00Z\n10. Департамент финансов города Москвы | операций: 10 | последняя активность: 2015-12-29T12:00:03Z\n11. Лайсвуд, ООО | операций: 7 | последняя активность: 2020-03-02T12:00:02Z\n12. Единая электронная торговая площадка, АО | операций: 7 | последняя активность: 2018-08-10T12:00:00Z\n13. ЭталонМебель | операций: 6 | последняя активность: 2020-04-27T12:00:00Z\n14. ИП Калинин Н.М. | операций: 5 | последняя активность: 2020-03-02T12:00:03Z\n15. Элмаш-К | операций: 5 | последняя активность: 2018-02-06T12:32:17Z\n16. ГТК-Интер, ООО | операций: 5 | последняя активность: 2016-07-07T12:00:00Z\n17. Гамма-мебель, ООО | операций: 4 | последняя активность: 2020-08-11T13:15:30Z\n18. Смарт | операций: 4 | последняя активность: 2020-02-07T12:00:03Z\n19. Сбербанк-АСТ, ЗАО | операций: 4 | последняя активность: 2017-07-26T12:00:00Z\n20. КБ \\НЕФТЯНОЙ АЛЬЯНС\\ (ПАО) (Расчетный) | операций: 4 | последняя активность: 2015-02-05T12:00:06Z\n21. ЗАО Ремонтно-строительная фирма «Ремстройсервис» | операций: 3 | последняя активность: 2020-06-03T00:00:02Z\n22. ПрофТренд,ООО | операций: 3 | последняя активность: 2020-05-15T12:00:02Z\n23. ГБПОУ г. Москвы \\Московская театральная школа Олега Табакова\\ | операций: 3 | последняя активность: 2019-10-25T12:00:00Z\n24. Газпром авиа, ООО | операций: 3 | последняя активность: 2016-11-29T12:00:01Z\n25. ФГКУ \\Центрреставрация\\ | операций: 3 | последняя активность: 2015-12-30T12:00:03Z\n26. РАЙМ, ООО | операций: 3 | последняя активность: 2015-08-13T12:00:00Z\n27. СервисКонсалт, ООО | операций: 2 | последняя активность: 2022-04-13T12:00:00Z\n30. УФК по г. Москве (ГУ - | операций: 2 | последняя активность: 2018-12-12T12:00:01Z\n31. Чепурнов П.Д. | операций: 1 | последняя активность: 2022-01-20T12:00:03Z\n32. «Олимпстрой» | операций: 1 | последняя активность: 2020-07-13T12:00:00Z\n33. КПК \\Столичная Сберегательная компания\\ | операций: 1 | последняя активность: 2019-04-17T12:00:00Z\n34. РТС-тендер | операций: 1 | последняя активность: 2018-12-17T00:00:00Z\n35. ФГБУ «УЗС» | операций: 1 | последняя активность: 2018-12-13T12:00:02Z\n36. АС \\ЕО | операций: 1 | последняя активность: 2018-01-15T13:25:36Z\n37. АкваСервис, ООО | операций: 1 | последняя активность: 2017-09-19T12:00:01Z\n38. ГБУ МФЦ города Москвы | операций: 1 | последняя активность: 2017-04-27T00:00:00Z\n39. \\Жуковка 51\\ | операций: 1 | последняя активность: 2017-04-10T16:50:38Z\n40. 0 | операций: 1 | последняя активность: 2017-03-02T12:00:00Z\n41. ФГБОУ ВО \\Московский государственный университет имени М.В. Ломоносова\\ | операций: 1 | последняя активность: 2016-11-25T00:00:00Z\n42. ДжетАэроКонцепт, ООО | операций: 1 | последняя активность: 2016-08-18T13:13:35Z\n43. УМ и автотранспорта, ЗАО | операций: 1 | последняя активность: 2015-12-24T12:00:00Z\n44. Межрегиональное операционное УФК | операций: 1 | последняя активность: 2015-11-12T12:00:00Z\n45. Банк ГПБ (АО) г. Москва | операций: 1 | последняя активность: 2015-10-30T12:00:03Z\n46. Спецстрой, ООО | операций: 1 | последняя активность: 2015-09-14T12:00:00Z", + "assistant_reply_first_line": "Собран профиль активности заказчиков (bank-doc activity aggregate).", + "expected_intent": null, + "actual_intent": "counterparty_activity_lifecycle", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "factual", + "strict_pass": true, + "selected_recipe": "address_counterparty_activity_lifecycle_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 46, + "rows_matched": 46, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-yRgs3Oi797", + "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", + "counterparty_activity_lifecycle_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": "counterparty_activity_lifecycle", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_to": "2026-04-02" + }, + "missing_required_filters": [], + "selected_recipe": "address_counterparty_activity_lifecycle_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "matched_non_empty", + "rows_fetched": 46, + "raw_rows_received": 46, + "rows_after_account_scope": 46, + "rows_after_recipe_filter": 46, + "rows_materialized": 46, + "rows_matched": 46, + "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": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + }, + "error_code": null, + "error_message": null + }, + { + "index": 2, + "id": "R002", + "question": "покажи список заказчиков за 20год", + "session": null, + "session_id": "asst-2026-04-02_Address_Repro_CustomerList_AfterRouterFix-r002", + "status_code": 200, + "ok": true, + "elapsed_ms": 965, + "reply_type": "factual", + "trace_id": "address-NFROrJ3yD2", + "assistant_reply": "Собран профиль активности заказчиков (bank-doc activity aggregate).\nСтрок агрегата: 13.\nАктивные заказчики в выбранном периоде: 13.\n1. Группа | операций: 13 | последняя активность: 2020-12-30T12:00:00Z\n2. СБЕРБАНК, ПАО | операций: 9 | последняя активность: 2020-03-02T12:00:04Z\n3. ЭталонМебель | операций: 4 | последняя активность: 2020-04-27T12:00:00Z\n4. Гамма-мебель, ООО | операций: 3 | последняя активность: 2020-08-11T13:15:30Z\n5. ЗАО Ремонтно-строительная фирма «Ремстройсервис» | операций: 3 | последняя активность: 2020-06-03T00:00:02Z\n6. НОРТОН | операций: 3 | последняя активность: 2020-03-19T12:00:00Z\n8. ИП Калинин Н.М. | операций: 2 | последняя активность: 2020-03-02T12:00:03Z\n9. МНН | операций: 1 | последняя активность: 2020-08-11T13:16:37Z\n10. «Олимпстрой» | операций: 1 | последняя активность: 2020-07-13T12:00:00Z\n11. ПрофТренд,ООО | операций: 1 | последняя активность: 2020-05-15T12:00:02Z\n12. Лайсвуд, ООО | операций: 1 | последняя активность: 2020-03-02T12:00:02Z\n13. Смарт | операций: 1 | последняя активность: 2020-02-07T12:00:03Z", + "assistant_reply_first_line": "Собран профиль активности заказчиков (bank-doc activity aggregate).", + "expected_intent": null, + "actual_intent": "counterparty_activity_lifecycle", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "factual", + "strict_pass": true, + "selected_recipe": "address_counterparty_activity_lifecycle_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 13, + "rows_matched": 13, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-NFROrJ3yD2", + "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", + "counterparty_activity_lifecycle_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": "counterparty_activity_lifecycle", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_from": "2020-01-01", + "period_to": "2020-12-31" + }, + "missing_required_filters": [], + "selected_recipe": "address_counterparty_activity_lifecycle_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "matched_non_empty", + "rows_fetched": 13, + "raw_rows_received": 13, + "rows_after_account_scope": 13, + "rows_after_recipe_filter": 13, + "rows_materialized": 13, + "rows_matched": 13, + "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": "покажи список заказчиков за 20год", + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "sanitized_user_message": "покажи список заказчиков за 2020 год", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + }, + "error_code": null, + "error_message": null + } + ] +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Repro_CustomerList_AfterRouterFix/response_audit.md b/docs/ADDRESS/runs/2026-04-02_Address_Repro_CustomerList_AfterRouterFix/response_audit.md new file mode 100644 index 0000000..42fa74a --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Repro_CustomerList_AfterRouterFix/response_audit.md @@ -0,0 +1,6 @@ +# Response Audit: 2026-04-02_Address_Repro_CustomerList_AfterRouterFix + +| id | strict | route_health | reply_type | intent | limited_reason | question | assistant_first_line | +|---|---|---|---|---|---|---|---| +| R001 | True | ok_or_factual | factual | counterparty_activity_lifecycle | None | выведи список заказчиков за все время | Собран профиль активности заказчиков (bank-doc activity aggregate). | +| R002 | True | ok_or_factual | factual | counterparty_activity_lifecycle | None | покажи список заказчиков за 20год | Собран профиль активности заказчиков (bank-doc activity aggregate). | diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Repro_CustomerList_AfterRouterFix/run_summary.json b/docs/ADDRESS/runs/2026-04-02_Address_Repro_CustomerList_AfterRouterFix/run_summary.json new file mode 100644 index 0000000..f7a2d4b --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Repro_CustomerList_AfterRouterFix/run_summary.json @@ -0,0 +1,44 @@ +{ + "run_id": "2026-04-02_Address_Repro_CustomerList_AfterRouterFix", + "generated_at": "2026-04-02T21:47:01", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\temp_repro_customer_list_issue_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", + "strict_policy": "factual", + "totals": { + "questions_total": 2, + "ok_200_count": 2, + "semantic_pass_count": 2, + "semantic_pass_rate": 1.0, + "route_pass_count": 2, + "route_pass_rate": 1.0, + "strict_pass_count": 2, + "strict_pass_rate": 1.0, + "factual_count": 2, + "partial_coverage_count": 0, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_applied_count": 0, + "avg_elapsed_ms": 919.5 + }, + "distributions": { + "reply_type": { + "factual": 2 + }, + "actual_intent": { + "counterparty_activity_lifecycle": 2 + }, + "actual_mode": { + "address_query": 2 + }, + "mcp_call_status": { + "matched_non_empty": 2 + }, + "limited_reason_category": {}, + "route_health": { + "ok_or_factual": 2 + } + } +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Repro_CustomerList_AfterRouterFix_02/README.md b/docs/ADDRESS/runs/2026-04-02_Address_Repro_CustomerList_AfterRouterFix_02/README.md new file mode 100644 index 0000000..28a2ee8 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Repro_CustomerList_AfterRouterFix_02/README.md @@ -0,0 +1,28 @@ +# 2026-04-02_Address_Repro_CustomerList_AfterRouterFix_02 + +Generated at: 2026-04-02T21:48:56 +Questions file: X:\1C\NDC_1C\docs\ADDRESS\question_sets\temp_repro_customer_list_issue_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 +Strict policy: factual + +## Totals +- questions_total: 2 +- ok_200_count: 2 +- semantic_pass_count: 2 +- semantic_pass_rate: 1.0 +- route_pass_count: 2 +- route_pass_rate: 1.0 +- strict_pass_count: 2 +- strict_pass_rate: 1.0 +- factual_count: 2 +- partial_coverage_count: 0 +- clarification_required_count: 0 +- http_error_count: 0 +- llm_decomposition_applied_count: 0 +- avg_elapsed_ms: 616.5 + +## Files +- run_summary.json +- full_live_results.json +- failures_only.json diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Repro_CustomerList_AfterRouterFix_02/failures_only.json b/docs/ADDRESS/runs/2026-04-02_Address_Repro_CustomerList_AfterRouterFix_02/failures_only.json new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Repro_CustomerList_AfterRouterFix_02/failures_only.json @@ -0,0 +1 @@ +[] diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Repro_CustomerList_AfterRouterFix_02/full_live_results.json b/docs/ADDRESS/runs/2026-04-02_Address_Repro_CustomerList_AfterRouterFix_02/full_live_results.json new file mode 100644 index 0000000..fe5cf85 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Repro_CustomerList_AfterRouterFix_02/full_live_results.json @@ -0,0 +1,337 @@ +{ + "run_id": "2026-04-02_Address_Repro_CustomerList_AfterRouterFix_02", + "generated_at": "2026-04-02T21:48:56", + "summary": { + "run_id": "2026-04-02_Address_Repro_CustomerList_AfterRouterFix_02", + "generated_at": "2026-04-02T21:48:56", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\temp_repro_customer_list_issue_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", + "strict_policy": "factual", + "totals": { + "questions_total": 2, + "ok_200_count": 2, + "semantic_pass_count": 2, + "semantic_pass_rate": 1.0, + "route_pass_count": 2, + "route_pass_rate": 1.0, + "strict_pass_count": 2, + "strict_pass_rate": 1.0, + "factual_count": 2, + "partial_coverage_count": 0, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_applied_count": 0, + "avg_elapsed_ms": 616.5 + }, + "distributions": { + "reply_type": { + "factual": 2 + }, + "actual_intent": { + "counterparty_activity_lifecycle": 2 + }, + "actual_mode": { + "address_query": 2 + }, + "mcp_call_status": { + "matched_non_empty": 2 + }, + "limited_reason_category": {}, + "route_health": { + "ok_or_factual": 2 + } + } + }, + "rows": [ + { + "index": 1, + "id": "R001", + "question": "выведи список заказчиков за все время", + "session": null, + "session_id": "asst-2026-04-02_Address_Repro_CustomerList_AfterRouterFix_02-r001", + "status_code": 200, + "ok": true, + "elapsed_ms": 294, + "reply_type": "factual", + "trace_id": "address-YnNlZjPw-p", + "assistant_reply": "Собран профиль активности заказчиков (bank-doc activity aggregate).\nСтрок агрегата: 46.\nАктивные заказчики за все время: 46.\n1. ГКУ | операций: 44 | последняя активность: 2019-12-25T16:09:27Z\n2. ГБУ \\Многофункциональный центр\\ | операций: 38 | последняя активность: 2018-12-04T12:00:01Z\n3. СБЕРБАНК, ПАО | операций: 36 | последняя активность: 2020-03-02T12:00:04Z\n4. Комитет государственных услуг г. Москвы | операций: 27 | последняя активность: 2015-05-19T12:00:00Z\n5. Группа | операций: 26 | последняя активность: 2021-11-10T12:00:07Z\n6. НОРТОН | операций: 14 | последняя активность: 2022-01-20T12:00:05Z\n7. МНН | операций: 14 | последняя активность: 2022-01-20T12:00:04Z\n8. МОСКОВСКИЙ ФИЛИАЛ ООО КБ\\МЕГАПОЛИС\\ | операций: 11 | последняя активность: 2019-07-31T12:00:22Z\n9. Департамент капитального ремонта города Москвы. | операций: 10 | последняя активность: 2019-09-16T11:00:00Z\n10. Департамент финансов города Москвы | операций: 10 | последняя активность: 2015-12-29T12:00:03Z\n11. Лайсвуд, ООО | операций: 7 | последняя активность: 2020-03-02T12:00:02Z\n12. Единая электронная торговая площадка, АО | операций: 7 | последняя активность: 2018-08-10T12:00:00Z\n13. ЭталонМебель | операций: 6 | последняя активность: 2020-04-27T12:00:00Z\n14. ИП Калинин Н.М. | операций: 5 | последняя активность: 2020-03-02T12:00:03Z\n15. Элмаш-К | операций: 5 | последняя активность: 2018-02-06T12:32:17Z\n16. ГТК-Интер, ООО | операций: 5 | последняя активность: 2016-07-07T12:00:00Z\n17. Гамма-мебель, ООО | операций: 4 | последняя активность: 2020-08-11T13:15:30Z\n18. Смарт | операций: 4 | последняя активность: 2020-02-07T12:00:03Z\n19. Сбербанк-АСТ, ЗАО | операций: 4 | последняя активность: 2017-07-26T12:00:00Z\n20. КБ \\НЕФТЯНОЙ АЛЬЯНС\\ (ПАО) (Расчетный) | операций: 4 | последняя активность: 2015-02-05T12:00:06Z\n21. ЗАО Ремонтно-строительная фирма «Ремстройсервис» | операций: 3 | последняя активность: 2020-06-03T00:00:02Z\n22. ПрофТренд,ООО | операций: 3 | последняя активность: 2020-05-15T12:00:02Z\n23. ГБПОУ г. Москвы \\Московская театральная школа Олега Табакова\\ | операций: 3 | последняя активность: 2019-10-25T12:00:00Z\n24. Газпром авиа, ООО | операций: 3 | последняя активность: 2016-11-29T12:00:01Z\n25. ФГКУ \\Центрреставрация\\ | операций: 3 | последняя активность: 2015-12-30T12:00:03Z\n26. РАЙМ, ООО | операций: 3 | последняя активность: 2015-08-13T12:00:00Z\n27. СервисКонсалт, ООО | операций: 2 | последняя активность: 2022-04-13T12:00:00Z\n30. УФК по г. Москве (ГУ - | операций: 2 | последняя активность: 2018-12-12T12:00:01Z\n31. Чепурнов П.Д. | операций: 1 | последняя активность: 2022-01-20T12:00:03Z\n32. «Олимпстрой» | операций: 1 | последняя активность: 2020-07-13T12:00:00Z\n33. КПК \\Столичная Сберегательная компания\\ | операций: 1 | последняя активность: 2019-04-17T12:00:00Z\n34. РТС-тендер | операций: 1 | последняя активность: 2018-12-17T00:00:00Z\n35. ФГБУ «УЗС» | операций: 1 | последняя активность: 2018-12-13T12:00:02Z\n36. АС \\ЕО | операций: 1 | последняя активность: 2018-01-15T13:25:36Z\n37. АкваСервис, ООО | операций: 1 | последняя активность: 2017-09-19T12:00:01Z\n38. ГБУ МФЦ города Москвы | операций: 1 | последняя активность: 2017-04-27T00:00:00Z\n39. \\Жуковка 51\\ | операций: 1 | последняя активность: 2017-04-10T16:50:38Z\n40. 0 | операций: 1 | последняя активность: 2017-03-02T12:00:00Z\n41. ФГБОУ ВО \\Московский государственный университет имени М.В. Ломоносова\\ | операций: 1 | последняя активность: 2016-11-25T00:00:00Z\n42. ДжетАэроКонцепт, ООО | операций: 1 | последняя активность: 2016-08-18T13:13:35Z\n43. УМ и автотранспорта, ЗАО | операций: 1 | последняя активность: 2015-12-24T12:00:00Z\n44. Межрегиональное операционное УФК | операций: 1 | последняя активность: 2015-11-12T12:00:00Z\n45. Банк ГПБ (АО) г. Москва | операций: 1 | последняя активность: 2015-10-30T12:00:03Z\n46. Спецстрой, ООО | операций: 1 | последняя активность: 2015-09-14T12:00:00Z", + "assistant_reply_first_line": "Собран профиль активности заказчиков (bank-doc activity aggregate).", + "expected_intent": null, + "actual_intent": "counterparty_activity_lifecycle", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "factual", + "strict_pass": true, + "selected_recipe": "address_counterparty_activity_lifecycle_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 46, + "rows_matched": 46, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-YnNlZjPw-p", + "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", + "counterparty_activity_lifecycle_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": "counterparty_activity_lifecycle", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_to": "2026-04-02" + }, + "missing_required_filters": [], + "selected_recipe": "address_counterparty_activity_lifecycle_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "matched_non_empty", + "rows_fetched": 46, + "raw_rows_received": 46, + "rows_after_account_scope": 46, + "rows_after_recipe_filter": 46, + "rows_materialized": 46, + "rows_matched": 46, + "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": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + }, + "error_code": null, + "error_message": null + }, + { + "index": 2, + "id": "R002", + "question": "покажи список заказчиков за 20год", + "session": null, + "session_id": "asst-2026-04-02_Address_Repro_CustomerList_AfterRouterFix_02-r002", + "status_code": 200, + "ok": true, + "elapsed_ms": 939, + "reply_type": "factual", + "trace_id": "address-w7FhJIdud5", + "assistant_reply": "Собран профиль активности заказчиков (bank-doc activity aggregate).\nСтрок агрегата: 13.\nАктивные заказчики в 2020 году: 13.\n1. Группа | операций: 13 | последняя активность: 2020-12-30T12:00:00Z\n2. СБЕРБАНК, ПАО | операций: 9 | последняя активность: 2020-03-02T12:00:04Z\n3. ЭталонМебель | операций: 4 | последняя активность: 2020-04-27T12:00:00Z\n4. Гамма-мебель, ООО | операций: 3 | последняя активность: 2020-08-11T13:15:30Z\n5. ЗАО Ремонтно-строительная фирма «Ремстройсервис» | операций: 3 | последняя активность: 2020-06-03T00:00:02Z\n6. НОРТОН | операций: 3 | последняя активность: 2020-03-19T12:00:00Z\n8. ИП Калинин Н.М. | операций: 2 | последняя активность: 2020-03-02T12:00:03Z\n9. МНН | операций: 1 | последняя активность: 2020-08-11T13:16:37Z\n10. «Олимпстрой» | операций: 1 | последняя активность: 2020-07-13T12:00:00Z\n11. ПрофТренд,ООО | операций: 1 | последняя активность: 2020-05-15T12:00:02Z\n12. Лайсвуд, ООО | операций: 1 | последняя активность: 2020-03-02T12:00:02Z\n13. Смарт | операций: 1 | последняя активность: 2020-02-07T12:00:03Z", + "assistant_reply_first_line": "Собран профиль активности заказчиков (bank-doc activity aggregate).", + "expected_intent": null, + "actual_intent": "counterparty_activity_lifecycle", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "factual", + "strict_pass": true, + "selected_recipe": "address_counterparty_activity_lifecycle_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 13, + "rows_matched": 13, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-w7FhJIdud5", + "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", + "counterparty_activity_lifecycle_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": "counterparty_activity_lifecycle", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_from": "2020-01-01", + "period_to": "2020-12-31" + }, + "missing_required_filters": [], + "selected_recipe": "address_counterparty_activity_lifecycle_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "matched_non_empty", + "rows_fetched": 13, + "raw_rows_received": 13, + "rows_after_account_scope": 13, + "rows_after_recipe_filter": 13, + "rows_materialized": 13, + "rows_matched": 13, + "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": "покажи список заказчиков за 20год", + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "sanitized_user_message": "покажи список заказчиков за 2020 год", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + }, + "error_code": null, + "error_message": null + } + ] +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Repro_CustomerList_AfterRouterFix_02/response_audit.md b/docs/ADDRESS/runs/2026-04-02_Address_Repro_CustomerList_AfterRouterFix_02/response_audit.md new file mode 100644 index 0000000..892709e --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Repro_CustomerList_AfterRouterFix_02/response_audit.md @@ -0,0 +1,6 @@ +# Response Audit: 2026-04-02_Address_Repro_CustomerList_AfterRouterFix_02 + +| id | strict | route_health | reply_type | intent | limited_reason | question | assistant_first_line | +|---|---|---|---|---|---|---|---| +| R001 | True | ok_or_factual | factual | counterparty_activity_lifecycle | None | выведи список заказчиков за все время | Собран профиль активности заказчиков (bank-doc activity aggregate). | +| R002 | True | ok_or_factual | factual | counterparty_activity_lifecycle | None | покажи список заказчиков за 20год | Собран профиль активности заказчиков (bank-doc activity aggregate). | diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Repro_CustomerList_AfterRouterFix_02/run_summary.json b/docs/ADDRESS/runs/2026-04-02_Address_Repro_CustomerList_AfterRouterFix_02/run_summary.json new file mode 100644 index 0000000..19b3cb1 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Repro_CustomerList_AfterRouterFix_02/run_summary.json @@ -0,0 +1,44 @@ +{ + "run_id": "2026-04-02_Address_Repro_CustomerList_AfterRouterFix_02", + "generated_at": "2026-04-02T21:48:56", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\temp_repro_customer_list_issue_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", + "strict_policy": "factual", + "totals": { + "questions_total": 2, + "ok_200_count": 2, + "semantic_pass_count": 2, + "semantic_pass_rate": 1.0, + "route_pass_count": 2, + "route_pass_rate": 1.0, + "strict_pass_count": 2, + "strict_pass_rate": 1.0, + "factual_count": 2, + "partial_coverage_count": 0, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_applied_count": 0, + "avg_elapsed_ms": 616.5 + }, + "distributions": { + "reply_type": { + "factual": 2 + }, + "actual_intent": { + "counterparty_activity_lifecycle": 2 + }, + "actual_mode": { + "address_query": 2 + }, + "mcp_call_status": { + "matched_non_empty": 2 + }, + "limited_reason_category": {}, + "route_health": { + "ok_or_factual": 2 + } + } +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Repro_CustomerList_Issue/README.md b/docs/ADDRESS/runs/2026-04-02_Address_Repro_CustomerList_Issue/README.md new file mode 100644 index 0000000..9b0d60d --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Repro_CustomerList_Issue/README.md @@ -0,0 +1,28 @@ +# 2026-04-02_Address_Repro_CustomerList_Issue + +Generated at: 2026-04-02T21:43:22 +Questions file: X:\1C\NDC_1C\docs\ADDRESS\question_sets\temp_repro_customer_list_issue_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 +Strict policy: factual + +## Totals +- questions_total: 2 +- ok_200_count: 2 +- semantic_pass_count: 0 +- semantic_pass_rate: 0.0 +- route_pass_count: 0 +- route_pass_rate: 0.0 +- strict_pass_count: 0 +- strict_pass_rate: 0.0 +- factual_count: 0 +- partial_coverage_count: 0 +- clarification_required_count: 2 +- http_error_count: 0 +- llm_decomposition_applied_count: 0 +- avg_elapsed_ms: 10178.5 + +## Files +- run_summary.json +- full_live_results.json +- failures_only.json diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Repro_CustomerList_Issue/failures_only.json b/docs/ADDRESS/runs/2026-04-02_Address_Repro_CustomerList_Issue/failures_only.json new file mode 100644 index 0000000..4c6cccd --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Repro_CustomerList_Issue/failures_only.json @@ -0,0 +1,790 @@ +[ + { + "index": 1, + "id": "R001", + "question": "выведи список заказчиков за все время", + "session": null, + "session_id": "asst-2026-04-02_Address_Repro_CustomerList_Issue-r001", + "status_code": 200, + "ok": true, + "elapsed_ms": 9835, + "reply_type": "clarification_required", + "trace_id": "_YGiNihsd7WQgz", + "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.", + "assistant_reply_first_line": "Коротко: Наиболее вероятный механизм проблемы подтвержден частично и требует первичной проверки. Что сломано:", + "expected_intent": null, + "actual_intent": null, + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": null, + "mode_match": false, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": false, + "route_pass": false, + "route_health": "blocked_clarification", + "strict_policy": "factual", + "strict_pass": false, + "selected_recipe": null, + "missing_required_filters": null, + "match_failure_stage": null, + "match_failure_reason": null, + "rows_fetched": null, + "rows_matched": null, + "mcp_call_status": null, + "limited_reason_category": null, + "llm_decomposition_applied": null, + "llm_decomposition_reason": null, + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "_YGiNihsd7WQgz", + "prompt_version": "address_query_runtime_v1", + "schema_version": "v1", + "fallback_type": "clarification", + "route_summary": null, + "fragments": [], + "requirements_extracted": [ + { + "requirement_id": "R1", + "source_fragment_id": null, + "requirement_text": "выведи список заказчиков за все время", + "subject_tokens": [], + "status": "clarification_needed", + "route": null + } + ], + "coverage_report": { + "requirements_total": 1, + "requirements_covered": 0, + "requirements_uncovered": [], + "requirements_partially_covered": [], + "clarification_needed_for": [ + "R1" + ], + "out_of_scope_requirements": [] + }, + "routes": [], + "retrieval_status": [], + "retrieval_results": [], + "answer_grounding_check": { + "status": "no_grounded_answer", + "route_subject_match": true, + "missing_requirements": [ + "R1" + ], + "reasons": [ + "Ни одно требование не получило подтвержденного покрытия.", + "Нет explainable-сигналов why_included в результатах выборки.", + "Недостаточно покрытия required anchors для claim-bound grounding.", + "Недостаточно допустимого evidence для обоснованного ответа.", + "Targeted evidence acquisition РЅРµ дал допустимых попаданий РїРѕ claim target path." + ], + "why_included_summary": [], + "selection_reason_summary": [] + }, + "dropped_intent_segments": [], + "question_type_class": "why_breaks", + "company_anchors": { + "contract_numbers": [], + "document_numbers": [], + "dates": [], + "amounts": [], + "accounts": [], + "periods": [], + "document_types": [], + "all": [] + }, + "business_scope_raw": [], + "business_scope_resolved": [ + "company_specific_accounting" + ], + "company_grounding_applied": true, + "scope_resolution_reason": [ + "settlement_claim_company_scope_recovery" + ], + "company_scope_resolution_reason": [ + "settlement_claim_company_scope_recovery" + ], + "raw_time_anchor": null, + "raw_time_scope": null, + "resolved_time_anchor": null, + "resolved_primary_period": null, + "effective_primary_period": null, + "temporal_guard_input": null, + "temporal_alignment_status": "conflicting", + "temporal_resolution_source": "normalized_time_scope:missing", + "temporal_guard_basis": "none", + "temporal_guard_applied": false, + "temporal_guard_outcome": "passed", + "temporal_guard": { + "raw_time_anchor": null, + "raw_time_scope": null, + "resolved_time_anchor": null, + "resolved_primary_period": null, + "effective_primary_period": null, + "temporal_guard_input": null, + "temporal_alignment_status": "conflicting", + "temporal_resolution_source": "normalized_time_scope:missing", + "temporal_guard_basis": "none", + "temporal_guard_applied": false, + "temporal_guard_outcome": "passed", + "primary_period_window": null, + "allowed_context_window": null, + "controlled_temporal_expansion_enabled": false, + "context_expansion_reasons_allowed": [ + "prehistory", + "carryover", + "post_period_closure", + "long_running_contract_context" + ], + "normalized_anchor_drift_detected": false, + "reason_codes": [ + "missing_resolved_primary_period" + ] + }, + "raw_numeric_tokens": [], + "classified_numeric_tokens": [], + "rejected_as_non_accounts": [], + "resolved_account_anchors": [], + "domain_polarity_guard": { + "applied": false, + "polarity": "not_applicable", + "outcome": "not_applicable", + "supplier_score": 0, + "customer_score": 0, + "account_scope": [], + "raw_numeric_tokens": [], + "classified_numeric_tokens": [], + "rejected_as_non_accounts": [], + "resolved_account_anchors": [], + "rejected_problem_units": 0, + "rejected_evidence": 0, + "critical_contradiction": false, + "reason_codes": [] + }, + "claim_anchor_audit": { + "claim_type": "prove_settlement_closure_state", + "settlement_role": "unknown", + "settlement_role_resolution_reason": [ + "settlement_role_resolved_unknown" + ], + "polarity_resolution_status": "unknown", + "required_anchors": [ + "period", + "account_scope", + "counterparty_scope_or_contract", + "closure_signal" + ], + "resolved_anchors": { + "period": [], + "account_scope": [], + "amounts": [], + "contract": [], + "document_numbers": [], + "document_types": [], + "counterparty_scope": [], + "advance_signal": [], + "closure_signal": [], + "vat_signal": [], + "chain_signal": [], + "close_signal": [], + "cost_scope": [], + "rbp_signal": [], + "writeoff_signal": [], + "fixed_asset_signal": [], + "amortization_signal": [], + "expected_fa_set": [], + "actual_fa_set": [] + }, + "missing_anchors": [ + "period", + "account_scope", + "counterparty_scope_or_contract", + "closure_signal" + ], + "claim_anchor_resolution_rate": 0, + "primary_period": null, + "allowed_context_window": null, + "context_expansion_reasons_allowed": [ + "prehistory", + "carryover", + "post_period_closure", + "long_running_contract_context" + ], + "reason_codes": [ + "claim_missing_required_anchors", + "claim_anchor_resolution_low", + "unresolved_supplier_customer_polarity" + ] + }, + "settlement_role": "unknown", + "settlement_role_resolution_reason": [ + "settlement_role_resolved_unknown" + ], + "polarity_resolution_status": "unknown", + "targeted_evidence_acquisition": { + "claim_type": "prove_settlement_closure_state", + "required_checks": [ + "payment_document_found", + "contract_matched", + "settlement_object_matched", + "closing_document_found", + "register_closure_entry_found", + "posting_link_found" + ], + "check_status": { + "payment_document_found": "not_found", + "contract_matched": "not_found", + "settlement_object_matched": "not_found", + "closing_document_found": "not_found", + "register_closure_entry_found": "not_found", + "posting_link_found": "not_found" + }, + "targeted_item_hits": 0, + "targeted_evidence_hits": 0, + "targeted_evidence_hit_rate": 0, + "targeted_evidence_source_refs": [], + "reason_codes": [ + "targeted_evidence_not_found", + "targeted_evidence_hit_rate_low" + ] + }, + "evidence_admissibility_gate": { + "candidate_evidence_total": 0, + "admissible_evidence_count": 0, + "rejected_evidence_count": 0, + "rejected_item_count": 0, + "reject_breakdown": { + "wrong_period": 0, + "wrong_domain": 0, + "wrong_account_scope": 0, + "weak_source_mapping": 0, + "zero_live_match": 0, + "future_dated_or_out_of_window": 0 + }, + "category_breakdown": { + "hard_evidence": 0, + "supporting_signal": 0, + "inadmissible_noise": 0 + }, + "reason_codes": [ + "no_admissible_evidence_for_grounded_answer" + ] + }, + "eligibility_time_basis": "none", + "grounded_answer_eligibility_guard": { + "eligible": false, + "temporal_passed": true, + "eligibility_time_basis": "none", + "business_scope_passed": true, + "polarity_passed": true, + "claim_anchors_passed": false, + "claim_anchor_resolution_rate": 0, + "missing_required_anchors": 4, + "admissible_evidence_count": 0, + "critical_contradiction": false, + "outcome": "limited_or_insufficient_evidence", + "grounding_mode": "limited_or_insufficient_evidence", + "reason_codes": [ + "claim_anchor_coverage_insufficient", + "admissible_evidence_count_zero", + "targeted_evidence_hit_rate_zero" + ] + }, + "problem_centric_answer_applied": false, + "problem_units_used_count": 0, + "problem_answer_mode": "stage1_policy_v11", + "answer_structure_v11": { + "schema_version": "answer_structure_v1_1", + "answer_summary": "Нужны уточнения: без сужения фокуса надежный вывод невозможен.", + "direct_answer": "Есть признаки проблемы, но без уточнений по периоду и объекту вывод ненадежен.", + "mechanism_block": { + "status": "unresolved", + "mechanism_notes": [], + "limitation_reason_codes": [] + }, + "evidence_block": { + "evidence_ids": [], + "source_refs": [], + "mechanism_notes": [], + "coverage_note": "coverage_partial_or_limited" + }, + "uncertainty_block": { + "open_uncertainties": [ + "R1", + "missing_anchor:period", + "missing_anchor:account", + "missing_anchor:document_or_object", + "missing_anchor:counterparty" + ], + "limitations": [ + "Ни одно требование не получило подтвержденного покрытия.", + "Нет explainable-сигналов why_included в результатах выборки.", + "Недостаточно покрытия required anchors для claim-bound grounding.", + "Недостаточно допустимого evidence для обоснованного ответа.", + "Targeted evidence acquisition РЅРµ дал допустимых попаданий РїРѕ claim target path." + ] + }, + "next_step_block": { + "recommended_actions": [ + "Дайте недостающие СЏРєРѕСЂСЏ (период/счет/объект), иначе сильный factual вывод невозможен." + ], + "clarification_questions": [ + "Уточните период проверки (например, июль 2020).", + "Уточните счет или РіСЂСѓРїРїСѓ счетов (например, 19, 60, 62).", + "Укажите документ/GUID/конкретный объект для трассировки.", + "Укажите контрагента или РіСЂСѓРїРїСѓ контрагентов.", + "Закройте уточнения для требований: R1." + ] + } + }, + "investigation_state_snapshot": { + "schema_version": "investigation_state_v1", + "session_id": "asst-2026-04-02_Address_Repro_CustomerList_Issue-r001", + "status": "active", + "turn_index": 1, + "updated_at": "2026-04-02T18:43:12.460Z", + "question_id": "msg-iAOivPGlF-", + "question_scope_id": "s:выведи список заказчиков за все время", + "scope_origin": "underspecified", + "focus": { + "domain": null, + "period": null, + "primary_accounts": [], + "active_query_subject": "выведи список заказчиков за все время" + }, + "narrowing_status": "unknown", + "evidence_refs": [], + "open_uncertainties": [ + "clarify:R1" + ], + "last_answer_mode": "clarification_required", + "followup_context": { + "previous_question_id": null, + "last_user_message": "выведи список заказчиков за все время", + "referenced_requirement_ids": [ + "R1" + ], + "active_domain": null, + "active_requirement_ids": [ + "R1" + ], + "uncovered_requirement_ids": [ + "R1" + ], + "last_problem_unit_id": null, + "settlement_next_actions": [], + "evidence_summary": [], + "question_scope_id": "s:выведи список заказчиков за все время", + "scope_origin": "underspecified" + }, + "query_mode_hint": "investigation_candidate" + }, + "normalized": null + }, + "error_code": null, + "error_message": null + }, + { + "index": 2, + "id": "R002", + "question": "покажи список заказчиков за 20год", + "session": null, + "session_id": "asst-2026-04-02_Address_Repro_CustomerList_Issue-r002", + "status_code": 200, + "ok": true, + "elapsed_ms": 10522, + "reply_type": "clarification_required", + "trace_id": "LW9oA6w5nExHAK", + "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.", + "assistant_reply_first_line": "Коротко: Наиболее вероятный механизм проблемы подтвержден частично и требует первичной проверки. Что сломано:", + "expected_intent": null, + "actual_intent": null, + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": null, + "mode_match": false, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": false, + "route_pass": false, + "route_health": "blocked_clarification", + "strict_policy": "factual", + "strict_pass": false, + "selected_recipe": null, + "missing_required_filters": null, + "match_failure_stage": null, + "match_failure_reason": null, + "rows_fetched": null, + "rows_matched": null, + "mcp_call_status": null, + "limited_reason_category": null, + "llm_decomposition_applied": null, + "llm_decomposition_reason": null, + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "LW9oA6w5nExHAK", + "prompt_version": "address_query_runtime_v1", + "schema_version": "v1", + "fallback_type": "clarification", + "route_summary": null, + "fragments": [], + "requirements_extracted": [ + { + "requirement_id": "R1", + "source_fragment_id": null, + "requirement_text": "покажи список заказчиков за 20год", + "subject_tokens": [], + "status": "clarification_needed", + "route": null + } + ], + "coverage_report": { + "requirements_total": 1, + "requirements_covered": 0, + "requirements_uncovered": [], + "requirements_partially_covered": [], + "clarification_needed_for": [ + "R1" + ], + "out_of_scope_requirements": [] + }, + "routes": [], + "retrieval_status": [], + "retrieval_results": [], + "answer_grounding_check": { + "status": "no_grounded_answer", + "route_subject_match": true, + "missing_requirements": [ + "R1" + ], + "reasons": [ + "Ни одно требование не получило подтвержденного покрытия.", + "Нет explainable-сигналов why_included в результатах выборки.", + "Недостаточно покрытия required anchors для claim-bound grounding.", + "Недостаточно допустимого evidence для обоснованного ответа.", + "Targeted evidence acquisition РЅРµ дал допустимых попаданий РїРѕ claim target path." + ], + "why_included_summary": [], + "selection_reason_summary": [] + }, + "dropped_intent_segments": [], + "question_type_class": "why_breaks", + "company_anchors": { + "contract_numbers": [], + "document_numbers": [], + "dates": [], + "amounts": [], + "accounts": [], + "periods": [], + "document_types": [], + "all": [] + }, + "business_scope_raw": [], + "business_scope_resolved": [ + "company_specific_accounting" + ], + "company_grounding_applied": true, + "scope_resolution_reason": [ + "settlement_claim_company_scope_recovery" + ], + "company_scope_resolution_reason": [ + "settlement_claim_company_scope_recovery" + ], + "raw_time_anchor": null, + "raw_time_scope": null, + "resolved_time_anchor": null, + "resolved_primary_period": null, + "effective_primary_period": null, + "temporal_guard_input": null, + "temporal_alignment_status": "conflicting", + "temporal_resolution_source": "normalized_time_scope:missing", + "temporal_guard_basis": "none", + "temporal_guard_applied": false, + "temporal_guard_outcome": "passed", + "temporal_guard": { + "raw_time_anchor": null, + "raw_time_scope": null, + "resolved_time_anchor": null, + "resolved_primary_period": null, + "effective_primary_period": null, + "temporal_guard_input": null, + "temporal_alignment_status": "conflicting", + "temporal_resolution_source": "normalized_time_scope:missing", + "temporal_guard_basis": "none", + "temporal_guard_applied": false, + "temporal_guard_outcome": "passed", + "primary_period_window": null, + "allowed_context_window": null, + "controlled_temporal_expansion_enabled": false, + "context_expansion_reasons_allowed": [ + "prehistory", + "carryover", + "post_period_closure", + "long_running_contract_context" + ], + "normalized_anchor_drift_detected": false, + "reason_codes": [ + "missing_resolved_primary_period" + ] + }, + "raw_numeric_tokens": [ + "20" + ], + "classified_numeric_tokens": [ + { + "token": "20", + "classification": "other_numeric" + } + ], + "rejected_as_non_accounts": [ + "20" + ], + "resolved_account_anchors": [], + "domain_polarity_guard": { + "applied": false, + "polarity": "not_applicable", + "outcome": "not_applicable", + "supplier_score": 0, + "customer_score": 0, + "account_scope": [], + "raw_numeric_tokens": [ + "20" + ], + "classified_numeric_tokens": [ + { + "token": "20", + "classification": "other_numeric" + } + ], + "rejected_as_non_accounts": [ + "20" + ], + "resolved_account_anchors": [], + "rejected_problem_units": 0, + "rejected_evidence": 0, + "critical_contradiction": false, + "reason_codes": [] + }, + "claim_anchor_audit": { + "claim_type": "prove_settlement_closure_state", + "settlement_role": "unknown", + "settlement_role_resolution_reason": [ + "settlement_role_resolved_unknown" + ], + "polarity_resolution_status": "unknown", + "required_anchors": [ + "period", + "account_scope", + "counterparty_scope_or_contract", + "closure_signal" + ], + "resolved_anchors": { + "period": [], + "account_scope": [], + "amounts": [], + "contract": [], + "document_numbers": [], + "document_types": [], + "counterparty_scope": [], + "advance_signal": [], + "closure_signal": [], + "vat_signal": [], + "chain_signal": [], + "close_signal": [], + "cost_scope": [], + "rbp_signal": [], + "writeoff_signal": [], + "fixed_asset_signal": [], + "amortization_signal": [], + "expected_fa_set": [], + "actual_fa_set": [] + }, + "missing_anchors": [ + "period", + "account_scope", + "counterparty_scope_or_contract", + "closure_signal" + ], + "claim_anchor_resolution_rate": 0, + "primary_period": null, + "allowed_context_window": null, + "context_expansion_reasons_allowed": [ + "prehistory", + "carryover", + "post_period_closure", + "long_running_contract_context" + ], + "reason_codes": [ + "claim_missing_required_anchors", + "claim_anchor_resolution_low", + "unresolved_supplier_customer_polarity" + ] + }, + "settlement_role": "unknown", + "settlement_role_resolution_reason": [ + "settlement_role_resolved_unknown" + ], + "polarity_resolution_status": "unknown", + "targeted_evidence_acquisition": { + "claim_type": "prove_settlement_closure_state", + "required_checks": [ + "payment_document_found", + "contract_matched", + "settlement_object_matched", + "closing_document_found", + "register_closure_entry_found", + "posting_link_found" + ], + "check_status": { + "payment_document_found": "not_found", + "contract_matched": "not_found", + "settlement_object_matched": "not_found", + "closing_document_found": "not_found", + "register_closure_entry_found": "not_found", + "posting_link_found": "not_found" + }, + "targeted_item_hits": 0, + "targeted_evidence_hits": 0, + "targeted_evidence_hit_rate": 0, + "targeted_evidence_source_refs": [], + "reason_codes": [ + "targeted_evidence_not_found", + "targeted_evidence_hit_rate_low" + ] + }, + "evidence_admissibility_gate": { + "candidate_evidence_total": 0, + "admissible_evidence_count": 0, + "rejected_evidence_count": 0, + "rejected_item_count": 0, + "reject_breakdown": { + "wrong_period": 0, + "wrong_domain": 0, + "wrong_account_scope": 0, + "weak_source_mapping": 0, + "zero_live_match": 0, + "future_dated_or_out_of_window": 0 + }, + "category_breakdown": { + "hard_evidence": 0, + "supporting_signal": 0, + "inadmissible_noise": 0 + }, + "reason_codes": [ + "no_admissible_evidence_for_grounded_answer" + ] + }, + "eligibility_time_basis": "none", + "grounded_answer_eligibility_guard": { + "eligible": false, + "temporal_passed": true, + "eligibility_time_basis": "none", + "business_scope_passed": true, + "polarity_passed": true, + "claim_anchors_passed": false, + "claim_anchor_resolution_rate": 0, + "missing_required_anchors": 4, + "admissible_evidence_count": 0, + "critical_contradiction": false, + "outcome": "limited_or_insufficient_evidence", + "grounding_mode": "limited_or_insufficient_evidence", + "reason_codes": [ + "claim_anchor_coverage_insufficient", + "admissible_evidence_count_zero", + "targeted_evidence_hit_rate_zero" + ] + }, + "problem_centric_answer_applied": false, + "problem_units_used_count": 0, + "problem_answer_mode": "stage1_policy_v11", + "answer_structure_v11": { + "schema_version": "answer_structure_v1_1", + "answer_summary": "Нужны уточнения: без сужения фокуса надежный вывод невозможен.", + "direct_answer": "Есть признаки проблемы, но без уточнений по периоду и объекту вывод ненадежен.", + "mechanism_block": { + "status": "unresolved", + "mechanism_notes": [], + "limitation_reason_codes": [] + }, + "evidence_block": { + "evidence_ids": [], + "source_refs": [], + "mechanism_notes": [], + "coverage_note": "coverage_partial_or_limited" + }, + "uncertainty_block": { + "open_uncertainties": [ + "R1", + "missing_anchor:period", + "missing_anchor:document_or_object", + "missing_anchor:counterparty" + ], + "limitations": [ + "Ни одно требование не получило подтвержденного покрытия.", + "Нет explainable-сигналов why_included в результатах выборки.", + "Недостаточно покрытия required anchors для claim-bound grounding.", + "Недостаточно допустимого evidence для обоснованного ответа.", + "Targeted evidence acquisition РЅРµ дал допустимых попаданий РїРѕ claim target path." + ] + }, + "next_step_block": { + "recommended_actions": [ + "Дайте недостающие СЏРєРѕСЂСЏ (период/счет/объект), иначе сильный factual вывод невозможен." + ], + "clarification_questions": [ + "Уточните период проверки (например, июль 2020).", + "Укажите документ/GUID/конкретный объект для трассировки.", + "Укажите контрагента или РіСЂСѓРїРїСѓ контрагентов.", + "Закройте уточнения для требований: R1." + ] + } + }, + "investigation_state_snapshot": { + "schema_version": "investigation_state_v1", + "session_id": "asst-2026-04-02_Address_Repro_CustomerList_Issue-r002", + "status": "active", + "turn_index": 1, + "updated_at": "2026-04-02T18:43:22.977Z", + "question_id": "msg-6PVv4DTNfA", + "question_scope_id": "s:покажи список заказчиков за 20год", + "scope_origin": "underspecified", + "focus": { + "domain": null, + "period": null, + "primary_accounts": [], + "active_query_subject": "покажи список заказчиков за 20год" + }, + "narrowing_status": "unknown", + "evidence_refs": [], + "open_uncertainties": [ + "clarify:R1" + ], + "last_answer_mode": "clarification_required", + "followup_context": { + "previous_question_id": null, + "last_user_message": "покажи список заказчиков за 20год", + "referenced_requirement_ids": [ + "R1" + ], + "active_domain": null, + "active_requirement_ids": [ + "R1" + ], + "uncovered_requirement_ids": [ + "R1" + ], + "last_problem_unit_id": null, + "settlement_next_actions": [], + "evidence_summary": [], + "question_scope_id": "s:покажи список заказчиков за 20год", + "scope_origin": "underspecified" + }, + "query_mode_hint": "investigation_candidate" + }, + "normalized": null + }, + "error_code": null, + "error_message": null + } +] diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Repro_CustomerList_Issue/full_live_results.json b/docs/ADDRESS/runs/2026-04-02_Address_Repro_CustomerList_Issue/full_live_results.json new file mode 100644 index 0000000..4d0c7ab --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Repro_CustomerList_Issue/full_live_results.json @@ -0,0 +1,838 @@ +{ + "run_id": "2026-04-02_Address_Repro_CustomerList_Issue", + "generated_at": "2026-04-02T21:43:22", + "summary": { + "run_id": "2026-04-02_Address_Repro_CustomerList_Issue", + "generated_at": "2026-04-02T21:43:22", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\temp_repro_customer_list_issue_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", + "strict_policy": "factual", + "totals": { + "questions_total": 2, + "ok_200_count": 2, + "semantic_pass_count": 0, + "semantic_pass_rate": 0.0, + "route_pass_count": 0, + "route_pass_rate": 0.0, + "strict_pass_count": 0, + "strict_pass_rate": 0.0, + "factual_count": 0, + "partial_coverage_count": 0, + "clarification_required_count": 2, + "http_error_count": 0, + "llm_decomposition_applied_count": 0, + "avg_elapsed_ms": 10178.5 + }, + "distributions": { + "reply_type": { + "clarification_required": 2 + }, + "actual_intent": { + "None": 2 + }, + "actual_mode": { + "None": 2 + }, + "mcp_call_status": { + "None": 2 + }, + "limited_reason_category": {}, + "route_health": { + "blocked_clarification": 2 + } + } + }, + "rows": [ + { + "index": 1, + "id": "R001", + "question": "выведи список заказчиков за все время", + "session": null, + "session_id": "asst-2026-04-02_Address_Repro_CustomerList_Issue-r001", + "status_code": 200, + "ok": true, + "elapsed_ms": 9835, + "reply_type": "clarification_required", + "trace_id": "_YGiNihsd7WQgz", + "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.", + "assistant_reply_first_line": "Коротко: Наиболее вероятный механизм проблемы подтвержден частично и требует первичной проверки. Что сломано:", + "expected_intent": null, + "actual_intent": null, + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": null, + "mode_match": false, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": false, + "route_pass": false, + "route_health": "blocked_clarification", + "strict_policy": "factual", + "strict_pass": false, + "selected_recipe": null, + "missing_required_filters": null, + "match_failure_stage": null, + "match_failure_reason": null, + "rows_fetched": null, + "rows_matched": null, + "mcp_call_status": null, + "limited_reason_category": null, + "llm_decomposition_applied": null, + "llm_decomposition_reason": null, + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "_YGiNihsd7WQgz", + "prompt_version": "address_query_runtime_v1", + "schema_version": "v1", + "fallback_type": "clarification", + "route_summary": null, + "fragments": [], + "requirements_extracted": [ + { + "requirement_id": "R1", + "source_fragment_id": null, + "requirement_text": "выведи список заказчиков за все время", + "subject_tokens": [], + "status": "clarification_needed", + "route": null + } + ], + "coverage_report": { + "requirements_total": 1, + "requirements_covered": 0, + "requirements_uncovered": [], + "requirements_partially_covered": [], + "clarification_needed_for": [ + "R1" + ], + "out_of_scope_requirements": [] + }, + "routes": [], + "retrieval_status": [], + "retrieval_results": [], + "answer_grounding_check": { + "status": "no_grounded_answer", + "route_subject_match": true, + "missing_requirements": [ + "R1" + ], + "reasons": [ + "Ни одно требование не получило подтвержденного покрытия.", + "Нет explainable-сигналов why_included в результатах выборки.", + "Недостаточно покрытия required anchors для claim-bound grounding.", + "Недостаточно допустимого evidence для обоснованного ответа.", + "Targeted evidence acquisition РЅРµ дал допустимых попаданий РїРѕ claim target path." + ], + "why_included_summary": [], + "selection_reason_summary": [] + }, + "dropped_intent_segments": [], + "question_type_class": "why_breaks", + "company_anchors": { + "contract_numbers": [], + "document_numbers": [], + "dates": [], + "amounts": [], + "accounts": [], + "periods": [], + "document_types": [], + "all": [] + }, + "business_scope_raw": [], + "business_scope_resolved": [ + "company_specific_accounting" + ], + "company_grounding_applied": true, + "scope_resolution_reason": [ + "settlement_claim_company_scope_recovery" + ], + "company_scope_resolution_reason": [ + "settlement_claim_company_scope_recovery" + ], + "raw_time_anchor": null, + "raw_time_scope": null, + "resolved_time_anchor": null, + "resolved_primary_period": null, + "effective_primary_period": null, + "temporal_guard_input": null, + "temporal_alignment_status": "conflicting", + "temporal_resolution_source": "normalized_time_scope:missing", + "temporal_guard_basis": "none", + "temporal_guard_applied": false, + "temporal_guard_outcome": "passed", + "temporal_guard": { + "raw_time_anchor": null, + "raw_time_scope": null, + "resolved_time_anchor": null, + "resolved_primary_period": null, + "effective_primary_period": null, + "temporal_guard_input": null, + "temporal_alignment_status": "conflicting", + "temporal_resolution_source": "normalized_time_scope:missing", + "temporal_guard_basis": "none", + "temporal_guard_applied": false, + "temporal_guard_outcome": "passed", + "primary_period_window": null, + "allowed_context_window": null, + "controlled_temporal_expansion_enabled": false, + "context_expansion_reasons_allowed": [ + "prehistory", + "carryover", + "post_period_closure", + "long_running_contract_context" + ], + "normalized_anchor_drift_detected": false, + "reason_codes": [ + "missing_resolved_primary_period" + ] + }, + "raw_numeric_tokens": [], + "classified_numeric_tokens": [], + "rejected_as_non_accounts": [], + "resolved_account_anchors": [], + "domain_polarity_guard": { + "applied": false, + "polarity": "not_applicable", + "outcome": "not_applicable", + "supplier_score": 0, + "customer_score": 0, + "account_scope": [], + "raw_numeric_tokens": [], + "classified_numeric_tokens": [], + "rejected_as_non_accounts": [], + "resolved_account_anchors": [], + "rejected_problem_units": 0, + "rejected_evidence": 0, + "critical_contradiction": false, + "reason_codes": [] + }, + "claim_anchor_audit": { + "claim_type": "prove_settlement_closure_state", + "settlement_role": "unknown", + "settlement_role_resolution_reason": [ + "settlement_role_resolved_unknown" + ], + "polarity_resolution_status": "unknown", + "required_anchors": [ + "period", + "account_scope", + "counterparty_scope_or_contract", + "closure_signal" + ], + "resolved_anchors": { + "period": [], + "account_scope": [], + "amounts": [], + "contract": [], + "document_numbers": [], + "document_types": [], + "counterparty_scope": [], + "advance_signal": [], + "closure_signal": [], + "vat_signal": [], + "chain_signal": [], + "close_signal": [], + "cost_scope": [], + "rbp_signal": [], + "writeoff_signal": [], + "fixed_asset_signal": [], + "amortization_signal": [], + "expected_fa_set": [], + "actual_fa_set": [] + }, + "missing_anchors": [ + "period", + "account_scope", + "counterparty_scope_or_contract", + "closure_signal" + ], + "claim_anchor_resolution_rate": 0, + "primary_period": null, + "allowed_context_window": null, + "context_expansion_reasons_allowed": [ + "prehistory", + "carryover", + "post_period_closure", + "long_running_contract_context" + ], + "reason_codes": [ + "claim_missing_required_anchors", + "claim_anchor_resolution_low", + "unresolved_supplier_customer_polarity" + ] + }, + "settlement_role": "unknown", + "settlement_role_resolution_reason": [ + "settlement_role_resolved_unknown" + ], + "polarity_resolution_status": "unknown", + "targeted_evidence_acquisition": { + "claim_type": "prove_settlement_closure_state", + "required_checks": [ + "payment_document_found", + "contract_matched", + "settlement_object_matched", + "closing_document_found", + "register_closure_entry_found", + "posting_link_found" + ], + "check_status": { + "payment_document_found": "not_found", + "contract_matched": "not_found", + "settlement_object_matched": "not_found", + "closing_document_found": "not_found", + "register_closure_entry_found": "not_found", + "posting_link_found": "not_found" + }, + "targeted_item_hits": 0, + "targeted_evidence_hits": 0, + "targeted_evidence_hit_rate": 0, + "targeted_evidence_source_refs": [], + "reason_codes": [ + "targeted_evidence_not_found", + "targeted_evidence_hit_rate_low" + ] + }, + "evidence_admissibility_gate": { + "candidate_evidence_total": 0, + "admissible_evidence_count": 0, + "rejected_evidence_count": 0, + "rejected_item_count": 0, + "reject_breakdown": { + "wrong_period": 0, + "wrong_domain": 0, + "wrong_account_scope": 0, + "weak_source_mapping": 0, + "zero_live_match": 0, + "future_dated_or_out_of_window": 0 + }, + "category_breakdown": { + "hard_evidence": 0, + "supporting_signal": 0, + "inadmissible_noise": 0 + }, + "reason_codes": [ + "no_admissible_evidence_for_grounded_answer" + ] + }, + "eligibility_time_basis": "none", + "grounded_answer_eligibility_guard": { + "eligible": false, + "temporal_passed": true, + "eligibility_time_basis": "none", + "business_scope_passed": true, + "polarity_passed": true, + "claim_anchors_passed": false, + "claim_anchor_resolution_rate": 0, + "missing_required_anchors": 4, + "admissible_evidence_count": 0, + "critical_contradiction": false, + "outcome": "limited_or_insufficient_evidence", + "grounding_mode": "limited_or_insufficient_evidence", + "reason_codes": [ + "claim_anchor_coverage_insufficient", + "admissible_evidence_count_zero", + "targeted_evidence_hit_rate_zero" + ] + }, + "problem_centric_answer_applied": false, + "problem_units_used_count": 0, + "problem_answer_mode": "stage1_policy_v11", + "answer_structure_v11": { + "schema_version": "answer_structure_v1_1", + "answer_summary": "Нужны уточнения: без сужения фокуса надежный вывод невозможен.", + "direct_answer": "Есть признаки проблемы, но без уточнений по периоду и объекту вывод ненадежен.", + "mechanism_block": { + "status": "unresolved", + "mechanism_notes": [], + "limitation_reason_codes": [] + }, + "evidence_block": { + "evidence_ids": [], + "source_refs": [], + "mechanism_notes": [], + "coverage_note": "coverage_partial_or_limited" + }, + "uncertainty_block": { + "open_uncertainties": [ + "R1", + "missing_anchor:period", + "missing_anchor:account", + "missing_anchor:document_or_object", + "missing_anchor:counterparty" + ], + "limitations": [ + "Ни одно требование не получило подтвержденного покрытия.", + "Нет explainable-сигналов why_included в результатах выборки.", + "Недостаточно покрытия required anchors для claim-bound grounding.", + "Недостаточно допустимого evidence для обоснованного ответа.", + "Targeted evidence acquisition РЅРµ дал допустимых попаданий РїРѕ claim target path." + ] + }, + "next_step_block": { + "recommended_actions": [ + "Дайте недостающие СЏРєРѕСЂСЏ (период/счет/объект), иначе сильный factual вывод невозможен." + ], + "clarification_questions": [ + "Уточните период проверки (например, июль 2020).", + "Уточните счет или РіСЂСѓРїРїСѓ счетов (например, 19, 60, 62).", + "Укажите документ/GUID/конкретный объект для трассировки.", + "Укажите контрагента или РіСЂСѓРїРїСѓ контрагентов.", + "Закройте уточнения для требований: R1." + ] + } + }, + "investigation_state_snapshot": { + "schema_version": "investigation_state_v1", + "session_id": "asst-2026-04-02_Address_Repro_CustomerList_Issue-r001", + "status": "active", + "turn_index": 1, + "updated_at": "2026-04-02T18:43:12.460Z", + "question_id": "msg-iAOivPGlF-", + "question_scope_id": "s:выведи список заказчиков за все время", + "scope_origin": "underspecified", + "focus": { + "domain": null, + "period": null, + "primary_accounts": [], + "active_query_subject": "выведи список заказчиков за все время" + }, + "narrowing_status": "unknown", + "evidence_refs": [], + "open_uncertainties": [ + "clarify:R1" + ], + "last_answer_mode": "clarification_required", + "followup_context": { + "previous_question_id": null, + "last_user_message": "выведи список заказчиков за все время", + "referenced_requirement_ids": [ + "R1" + ], + "active_domain": null, + "active_requirement_ids": [ + "R1" + ], + "uncovered_requirement_ids": [ + "R1" + ], + "last_problem_unit_id": null, + "settlement_next_actions": [], + "evidence_summary": [], + "question_scope_id": "s:выведи список заказчиков за все время", + "scope_origin": "underspecified" + }, + "query_mode_hint": "investigation_candidate" + }, + "normalized": null + }, + "error_code": null, + "error_message": null + }, + { + "index": 2, + "id": "R002", + "question": "покажи список заказчиков за 20год", + "session": null, + "session_id": "asst-2026-04-02_Address_Repro_CustomerList_Issue-r002", + "status_code": 200, + "ok": true, + "elapsed_ms": 10522, + "reply_type": "clarification_required", + "trace_id": "LW9oA6w5nExHAK", + "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.", + "assistant_reply_first_line": "Коротко: Наиболее вероятный механизм проблемы подтвержден частично и требует первичной проверки. Что сломано:", + "expected_intent": null, + "actual_intent": null, + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": null, + "mode_match": false, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": false, + "route_pass": false, + "route_health": "blocked_clarification", + "strict_policy": "factual", + "strict_pass": false, + "selected_recipe": null, + "missing_required_filters": null, + "match_failure_stage": null, + "match_failure_reason": null, + "rows_fetched": null, + "rows_matched": null, + "mcp_call_status": null, + "limited_reason_category": null, + "llm_decomposition_applied": null, + "llm_decomposition_reason": null, + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "LW9oA6w5nExHAK", + "prompt_version": "address_query_runtime_v1", + "schema_version": "v1", + "fallback_type": "clarification", + "route_summary": null, + "fragments": [], + "requirements_extracted": [ + { + "requirement_id": "R1", + "source_fragment_id": null, + "requirement_text": "покажи список заказчиков за 20год", + "subject_tokens": [], + "status": "clarification_needed", + "route": null + } + ], + "coverage_report": { + "requirements_total": 1, + "requirements_covered": 0, + "requirements_uncovered": [], + "requirements_partially_covered": [], + "clarification_needed_for": [ + "R1" + ], + "out_of_scope_requirements": [] + }, + "routes": [], + "retrieval_status": [], + "retrieval_results": [], + "answer_grounding_check": { + "status": "no_grounded_answer", + "route_subject_match": true, + "missing_requirements": [ + "R1" + ], + "reasons": [ + "Ни одно требование не получило подтвержденного покрытия.", + "Нет explainable-сигналов why_included в результатах выборки.", + "Недостаточно покрытия required anchors для claim-bound grounding.", + "Недостаточно допустимого evidence для обоснованного ответа.", + "Targeted evidence acquisition РЅРµ дал допустимых попаданий РїРѕ claim target path." + ], + "why_included_summary": [], + "selection_reason_summary": [] + }, + "dropped_intent_segments": [], + "question_type_class": "why_breaks", + "company_anchors": { + "contract_numbers": [], + "document_numbers": [], + "dates": [], + "amounts": [], + "accounts": [], + "periods": [], + "document_types": [], + "all": [] + }, + "business_scope_raw": [], + "business_scope_resolved": [ + "company_specific_accounting" + ], + "company_grounding_applied": true, + "scope_resolution_reason": [ + "settlement_claim_company_scope_recovery" + ], + "company_scope_resolution_reason": [ + "settlement_claim_company_scope_recovery" + ], + "raw_time_anchor": null, + "raw_time_scope": null, + "resolved_time_anchor": null, + "resolved_primary_period": null, + "effective_primary_period": null, + "temporal_guard_input": null, + "temporal_alignment_status": "conflicting", + "temporal_resolution_source": "normalized_time_scope:missing", + "temporal_guard_basis": "none", + "temporal_guard_applied": false, + "temporal_guard_outcome": "passed", + "temporal_guard": { + "raw_time_anchor": null, + "raw_time_scope": null, + "resolved_time_anchor": null, + "resolved_primary_period": null, + "effective_primary_period": null, + "temporal_guard_input": null, + "temporal_alignment_status": "conflicting", + "temporal_resolution_source": "normalized_time_scope:missing", + "temporal_guard_basis": "none", + "temporal_guard_applied": false, + "temporal_guard_outcome": "passed", + "primary_period_window": null, + "allowed_context_window": null, + "controlled_temporal_expansion_enabled": false, + "context_expansion_reasons_allowed": [ + "prehistory", + "carryover", + "post_period_closure", + "long_running_contract_context" + ], + "normalized_anchor_drift_detected": false, + "reason_codes": [ + "missing_resolved_primary_period" + ] + }, + "raw_numeric_tokens": [ + "20" + ], + "classified_numeric_tokens": [ + { + "token": "20", + "classification": "other_numeric" + } + ], + "rejected_as_non_accounts": [ + "20" + ], + "resolved_account_anchors": [], + "domain_polarity_guard": { + "applied": false, + "polarity": "not_applicable", + "outcome": "not_applicable", + "supplier_score": 0, + "customer_score": 0, + "account_scope": [], + "raw_numeric_tokens": [ + "20" + ], + "classified_numeric_tokens": [ + { + "token": "20", + "classification": "other_numeric" + } + ], + "rejected_as_non_accounts": [ + "20" + ], + "resolved_account_anchors": [], + "rejected_problem_units": 0, + "rejected_evidence": 0, + "critical_contradiction": false, + "reason_codes": [] + }, + "claim_anchor_audit": { + "claim_type": "prove_settlement_closure_state", + "settlement_role": "unknown", + "settlement_role_resolution_reason": [ + "settlement_role_resolved_unknown" + ], + "polarity_resolution_status": "unknown", + "required_anchors": [ + "period", + "account_scope", + "counterparty_scope_or_contract", + "closure_signal" + ], + "resolved_anchors": { + "period": [], + "account_scope": [], + "amounts": [], + "contract": [], + "document_numbers": [], + "document_types": [], + "counterparty_scope": [], + "advance_signal": [], + "closure_signal": [], + "vat_signal": [], + "chain_signal": [], + "close_signal": [], + "cost_scope": [], + "rbp_signal": [], + "writeoff_signal": [], + "fixed_asset_signal": [], + "amortization_signal": [], + "expected_fa_set": [], + "actual_fa_set": [] + }, + "missing_anchors": [ + "period", + "account_scope", + "counterparty_scope_or_contract", + "closure_signal" + ], + "claim_anchor_resolution_rate": 0, + "primary_period": null, + "allowed_context_window": null, + "context_expansion_reasons_allowed": [ + "prehistory", + "carryover", + "post_period_closure", + "long_running_contract_context" + ], + "reason_codes": [ + "claim_missing_required_anchors", + "claim_anchor_resolution_low", + "unresolved_supplier_customer_polarity" + ] + }, + "settlement_role": "unknown", + "settlement_role_resolution_reason": [ + "settlement_role_resolved_unknown" + ], + "polarity_resolution_status": "unknown", + "targeted_evidence_acquisition": { + "claim_type": "prove_settlement_closure_state", + "required_checks": [ + "payment_document_found", + "contract_matched", + "settlement_object_matched", + "closing_document_found", + "register_closure_entry_found", + "posting_link_found" + ], + "check_status": { + "payment_document_found": "not_found", + "contract_matched": "not_found", + "settlement_object_matched": "not_found", + "closing_document_found": "not_found", + "register_closure_entry_found": "not_found", + "posting_link_found": "not_found" + }, + "targeted_item_hits": 0, + "targeted_evidence_hits": 0, + "targeted_evidence_hit_rate": 0, + "targeted_evidence_source_refs": [], + "reason_codes": [ + "targeted_evidence_not_found", + "targeted_evidence_hit_rate_low" + ] + }, + "evidence_admissibility_gate": { + "candidate_evidence_total": 0, + "admissible_evidence_count": 0, + "rejected_evidence_count": 0, + "rejected_item_count": 0, + "reject_breakdown": { + "wrong_period": 0, + "wrong_domain": 0, + "wrong_account_scope": 0, + "weak_source_mapping": 0, + "zero_live_match": 0, + "future_dated_or_out_of_window": 0 + }, + "category_breakdown": { + "hard_evidence": 0, + "supporting_signal": 0, + "inadmissible_noise": 0 + }, + "reason_codes": [ + "no_admissible_evidence_for_grounded_answer" + ] + }, + "eligibility_time_basis": "none", + "grounded_answer_eligibility_guard": { + "eligible": false, + "temporal_passed": true, + "eligibility_time_basis": "none", + "business_scope_passed": true, + "polarity_passed": true, + "claim_anchors_passed": false, + "claim_anchor_resolution_rate": 0, + "missing_required_anchors": 4, + "admissible_evidence_count": 0, + "critical_contradiction": false, + "outcome": "limited_or_insufficient_evidence", + "grounding_mode": "limited_or_insufficient_evidence", + "reason_codes": [ + "claim_anchor_coverage_insufficient", + "admissible_evidence_count_zero", + "targeted_evidence_hit_rate_zero" + ] + }, + "problem_centric_answer_applied": false, + "problem_units_used_count": 0, + "problem_answer_mode": "stage1_policy_v11", + "answer_structure_v11": { + "schema_version": "answer_structure_v1_1", + "answer_summary": "Нужны уточнения: без сужения фокуса надежный вывод невозможен.", + "direct_answer": "Есть признаки проблемы, но без уточнений по периоду и объекту вывод ненадежен.", + "mechanism_block": { + "status": "unresolved", + "mechanism_notes": [], + "limitation_reason_codes": [] + }, + "evidence_block": { + "evidence_ids": [], + "source_refs": [], + "mechanism_notes": [], + "coverage_note": "coverage_partial_or_limited" + }, + "uncertainty_block": { + "open_uncertainties": [ + "R1", + "missing_anchor:period", + "missing_anchor:document_or_object", + "missing_anchor:counterparty" + ], + "limitations": [ + "Ни одно требование не получило подтвержденного покрытия.", + "Нет explainable-сигналов why_included в результатах выборки.", + "Недостаточно покрытия required anchors для claim-bound grounding.", + "Недостаточно допустимого evidence для обоснованного ответа.", + "Targeted evidence acquisition РЅРµ дал допустимых попаданий РїРѕ claim target path." + ] + }, + "next_step_block": { + "recommended_actions": [ + "Дайте недостающие СЏРєРѕСЂСЏ (период/счет/объект), иначе сильный factual вывод невозможен." + ], + "clarification_questions": [ + "Уточните период проверки (например, июль 2020).", + "Укажите документ/GUID/конкретный объект для трассировки.", + "Укажите контрагента или РіСЂСѓРїРїСѓ контрагентов.", + "Закройте уточнения для требований: R1." + ] + } + }, + "investigation_state_snapshot": { + "schema_version": "investigation_state_v1", + "session_id": "asst-2026-04-02_Address_Repro_CustomerList_Issue-r002", + "status": "active", + "turn_index": 1, + "updated_at": "2026-04-02T18:43:22.977Z", + "question_id": "msg-6PVv4DTNfA", + "question_scope_id": "s:покажи список заказчиков за 20год", + "scope_origin": "underspecified", + "focus": { + "domain": null, + "period": null, + "primary_accounts": [], + "active_query_subject": "покажи список заказчиков за 20год" + }, + "narrowing_status": "unknown", + "evidence_refs": [], + "open_uncertainties": [ + "clarify:R1" + ], + "last_answer_mode": "clarification_required", + "followup_context": { + "previous_question_id": null, + "last_user_message": "покажи список заказчиков за 20год", + "referenced_requirement_ids": [ + "R1" + ], + "active_domain": null, + "active_requirement_ids": [ + "R1" + ], + "uncovered_requirement_ids": [ + "R1" + ], + "last_problem_unit_id": null, + "settlement_next_actions": [], + "evidence_summary": [], + "question_scope_id": "s:покажи список заказчиков за 20год", + "scope_origin": "underspecified" + }, + "query_mode_hint": "investigation_candidate" + }, + "normalized": null + }, + "error_code": null, + "error_message": null + } + ] +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Repro_CustomerList_Issue/response_audit.md b/docs/ADDRESS/runs/2026-04-02_Address_Repro_CustomerList_Issue/response_audit.md new file mode 100644 index 0000000..820fa98 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Repro_CustomerList_Issue/response_audit.md @@ -0,0 +1,6 @@ +# Response Audit: 2026-04-02_Address_Repro_CustomerList_Issue + +| id | strict | route_health | reply_type | intent | limited_reason | question | assistant_first_line | +|---|---|---|---|---|---|---|---| +| R001 | False | blocked_clarification | clarification_required | None | None | выведи список заказчиков за все время | Коротко: Наиболее вероятный механизм проблемы подтвержден частично и требует первичной проверки. Что сломано: | +| R002 | False | blocked_clarification | clarification_required | None | None | покажи список заказчиков за 20год | Коротко: Наиболее вероятный механизм проблемы подтвержден частично и требует первичной проверки. Что сломано: | diff --git a/docs/ADDRESS/runs/2026-04-02_Address_Repro_CustomerList_Issue/run_summary.json b/docs/ADDRESS/runs/2026-04-02_Address_Repro_CustomerList_Issue/run_summary.json new file mode 100644 index 0000000..f27e014 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_Repro_CustomerList_Issue/run_summary.json @@ -0,0 +1,44 @@ +{ + "run_id": "2026-04-02_Address_Repro_CustomerList_Issue", + "generated_at": "2026-04-02T21:43:22", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\temp_repro_customer_list_issue_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", + "strict_policy": "factual", + "totals": { + "questions_total": 2, + "ok_200_count": 2, + "semantic_pass_count": 0, + "semantic_pass_rate": 0.0, + "route_pass_count": 0, + "route_pass_rate": 0.0, + "strict_pass_count": 0, + "strict_pass_rate": 0.0, + "factual_count": 0, + "partial_coverage_count": 0, + "clarification_required_count": 2, + "http_error_count": 0, + "llm_decomposition_applied_count": 0, + "avg_elapsed_ms": 10178.5 + }, + "distributions": { + "reply_type": { + "clarification_required": 2 + }, + "actual_intent": { + "None": 2 + }, + "actual_mode": { + "None": 2 + }, + "mcp_call_status": { + "None": 2 + }, + "limited_reason_category": {}, + "route_health": { + "blocked_clarification": 2 + } + } +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_ReverseVariations_AfterFix/README.md b/docs/ADDRESS/runs/2026-04-02_Address_ReverseVariations_AfterFix/README.md new file mode 100644 index 0000000..050d21f --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_ReverseVariations_AfterFix/README.md @@ -0,0 +1,28 @@ +# 2026-04-02_Address_ReverseVariations_AfterFix + +Generated at: 2026-04-02T20:49:58 +Questions file: X:\1C\NDC_1C\docs\ADDRESS\question_sets\temp_reverse_variations_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 +Strict policy: factual + +## Totals +- questions_total: 4 +- ok_200_count: 4 +- semantic_pass_count: 4 +- semantic_pass_rate: 1.0 +- route_pass_count: 4 +- route_pass_rate: 1.0 +- strict_pass_count: 4 +- strict_pass_rate: 1.0 +- factual_count: 4 +- partial_coverage_count: 0 +- clarification_required_count: 0 +- http_error_count: 0 +- llm_decomposition_applied_count: 0 +- avg_elapsed_ms: 3186 + +## Files +- run_summary.json +- full_live_results.json +- failures_only.json diff --git a/docs/ADDRESS/runs/2026-04-02_Address_ReverseVariations_AfterFix/failures_only.json b/docs/ADDRESS/runs/2026-04-02_Address_ReverseVariations_AfterFix/failures_only.json new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_ReverseVariations_AfterFix/failures_only.json @@ -0,0 +1 @@ +[] diff --git a/docs/ADDRESS/runs/2026-04-02_Address_ReverseVariations_AfterFix/full_live_results.json b/docs/ADDRESS/runs/2026-04-02_Address_ReverseVariations_AfterFix/full_live_results.json new file mode 100644 index 0000000..06d734a --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_ReverseVariations_AfterFix/full_live_results.json @@ -0,0 +1,628 @@ +{ + "run_id": "2026-04-02_Address_ReverseVariations_AfterFix", + "generated_at": "2026-04-02T20:49:58", + "summary": { + "run_id": "2026-04-02_Address_ReverseVariations_AfterFix", + "generated_at": "2026-04-02T20:49:58", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\temp_reverse_variations_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", + "strict_policy": "factual", + "totals": { + "questions_total": 4, + "ok_200_count": 4, + "semantic_pass_count": 4, + "semantic_pass_rate": 1.0, + "route_pass_count": 4, + "route_pass_rate": 1.0, + "strict_pass_count": 4, + "strict_pass_rate": 1.0, + "factual_count": 4, + "partial_coverage_count": 0, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_applied_count": 0, + "avg_elapsed_ms": 3186 + }, + "distributions": { + "reply_type": { + "factual": 4 + }, + "actual_intent": { + "period_coverage_profile": 2, + "document_type_and_account_section_profile": 2 + }, + "actual_mode": { + "address_query": 4 + }, + "mcp_call_status": { + "matched_non_empty": 4 + }, + "limited_reason_category": {}, + "route_health": { + "ok_or_factual": 4 + } + } + }, + "rows": [ + { + "index": 1, + "id": "R001", + "question": "Какой год самый пассивный по количеству документов?", + "session": null, + "session_id": "asst-2026-04-02_Address_ReverseVariations_AfterFix-r001", + "status_code": 200, + "ok": true, + "elapsed_ms": 5603, + "reply_type": "factual", + "trace_id": "address-COk1X3-aNn", + "assistant_reply": "Профиль периодов базы собран (movement-based aggregate).\nСтрок агрегата: 134.\nСамый пассивный год по документам: 2022 (87).\n1. 2022: 87\n2. 2014: 115\n3. 2021: 308\n4. 2017: 456\n5. 2020: 536", + "assistant_reply_first_line": "Профиль периодов базы собран (movement-based aggregate).", + "expected_intent": null, + "actual_intent": "period_coverage_profile", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "factual", + "strict_pass": true, + "selected_recipe": "address_period_coverage_profile_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 134, + "rows_matched": 134, + "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, + "debug_payload": { + "trace_id": "address-COk1X3-aNn", + "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": [ + "management_profile_signal_detected", + "document_list_signal_detected", + "period_coverage_profile_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": "period_coverage_profile", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_to": "2026-04-02" + }, + "missing_required_filters": [], + "selected_recipe": "address_period_coverage_profile_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "matched_non_empty", + "rows_fetched": 134, + "raw_rows_received": 134, + "rows_after_account_scope": 134, + "rows_after_recipe_filter": 134, + "rows_materialized": 134, + "rows_matched": 134, + "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_SUMMARY", + "execution_lane": "address_query", + "llm_decomposition_applied": false, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "848TfHFsoLijex", + "llm_decomposition_effective_message": "Какой год самый пассивный по количеству документов?", + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "sanitized_user_message": "какой год самый пассивный по количеству документов?", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "848TfHFsoLijex", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "Какой год самый пассивный по количеству документов?" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 2, + "id": "R002", + "question": "Какой месяц самый пассивный по количеству операций?", + "session": null, + "session_id": "asst-2026-04-02_Address_ReverseVariations_AfterFix-r002", + "status_code": 200, + "ok": true, + "elapsed_ms": 901, + "reply_type": "factual", + "trace_id": "address-Y_GOJgpD3P", + "assistant_reply": "Профиль периодов базы собран (movement-based aggregate).\nСтрок агрегата: 134.\nСамый пассивный месяц по операциям: 2014-05 (3).\n1. 2014-05: 3\n2. 2022-11: 6\n3. 2014-09: 8\n4. 2022-09: 9\n5. 2022-10: 9", + "assistant_reply_first_line": "Профиль периодов базы собран (movement-based aggregate).", + "expected_intent": null, + "actual_intent": "period_coverage_profile", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "factual", + "strict_pass": true, + "selected_recipe": "address_period_coverage_profile_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 134, + "rows_matched": 134, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-Y_GOJgpD3P", + "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": [ + "management_profile_signal_detected", + "shape_not_detected", + "period_coverage_profile_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": "period_coverage_profile", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_to": "2026-04-02" + }, + "missing_required_filters": [], + "selected_recipe": "address_period_coverage_profile_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "matched_non_empty", + "rows_fetched": 134, + "raw_rows_received": 134, + "rows_after_account_scope": 134, + "rows_after_recipe_filter": 134, + "rows_materialized": 134, + "rows_matched": 134, + "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_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": "Какой месяц самый пассивный по количеству операций?", + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "sanitized_user_message": "какой месяц самый пассивный по количеству операций?", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + }, + "error_code": null, + "error_message": null + }, + { + "index": 3, + "id": "R003", + "question": "Какие типы документов используются реже всего в базе?", + "session": null, + "session_id": "asst-2026-04-02_Address_ReverseVariations_AfterFix-r003", + "status_code": 200, + "ok": true, + "elapsed_ms": 5146, + "reply_type": "factual", + "trace_id": "address-Ch4Sx0sdIq", + "assistant_reply": "Профиль типов документов и разделов учета собран (movement-based aggregate).\nСтрок агрегата: 147.\nНаименее используемые типы документов (по числу уникальных регистраторов):\n1. Формирование записей книги продаж: 2 (0.0%)\n2. Принятие к учету ОС: 3 (0.1%)\n3. Комплектация номенклатуры: 10 (0.2%)\n4. Корректировка реализации: 10 (0.2%)\n5. Авансовый отчет: 12 (0.3%)\n6. Формирование записей книги покупок: 13 (0.3%)\n7. Поступление из переработки: 15 (0.3%)\n8. Передача товаров: 16 (0.4%)\n9. Требование-накладная: 45 (1.0%)\n10. Расходный кассовый ордер: 73 (1.6%)", + "assistant_reply_first_line": "Профиль типов документов и разделов учета собран (movement-based aggregate).", + "expected_intent": null, + "actual_intent": "document_type_and_account_section_profile", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "factual", + "strict_pass": true, + "selected_recipe": "address_document_type_and_account_section_profile_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 147, + "rows_matched": 147, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-Ch4Sx0sdIq", + "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", + "document_type_and_account_section_profile_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": "document_type_and_account_section_profile", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_to": "2026-04-02" + }, + "missing_required_filters": [], + "selected_recipe": "address_document_type_and_account_section_profile_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "matched_non_empty", + "rows_fetched": 147, + "raw_rows_received": 147, + "rows_after_account_scope": 147, + "rows_after_recipe_filter": 147, + "rows_materialized": 147, + "rows_matched": 147, + "raw_row_keys_sample": [ + "Период", + "Регистратор", + "СчетДт", + "СчетКт", + "Сумма", + "Period", + "Registrator", + "AccountDt", + "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_SUMMARY", + "execution_lane": "address_query", + "llm_decomposition_applied": false, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "Yp99Ah7nflPNs9", + "llm_decomposition_effective_message": "Какие типы документов используются реже всего в базе?", + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "sanitized_user_message": "какие типы документов используются реже всего в базе?", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "Yp99Ah7nflPNs9", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "Какие типы документов используются реже всего в базе?" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 4, + "id": "R004", + "question": "Какие разделы учета наименее заполнены?", + "session": null, + "session_id": "asst-2026-04-02_Address_ReverseVariations_AfterFix-r004", + "status_code": 200, + "ok": true, + "elapsed_ms": 1094, + "reply_type": "factual", + "trace_id": "address-TZG6852m1u", + "assistant_reply": "Профиль типов документов и разделов учета собран (movement-based aggregate).\nСтрок агрегата: 147.\nНаименее заполненные разделы учета (по операциям Дт+Кт):\n1. 58 (Финансовые вложения): 2 (0.0%)\n2. 81 (Собственные акции (доли)): 2 (0.0%)\n3. 80 (Уставный капитал): 5 (0.0%)\n4. 03: 6 (0.0%)\n5. 04 (Нематериальные активы): 6 (0.0%)\n6. 75 (Расчеты с учредителями): 16 (0.1%)\n7. 55 (Специальные счета в банках): 18 (0.1%)\n8. 84 (Нераспределенная прибыль (непокрытый убыток)): 20 (0.1%)\n9. 26 (Общехозяйственные расходы): 51 (0.2%)\n10. 71 (Расчеты с подотчетными лицами): 76 (0.3%)", + "assistant_reply_first_line": "Профиль типов документов и разделов учета собран (movement-based aggregate).", + "expected_intent": null, + "actual_intent": "document_type_and_account_section_profile", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "factual", + "strict_pass": true, + "selected_recipe": "address_document_type_and_account_section_profile_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 147, + "rows_matched": 147, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-TZG6852m1u", + "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": [ + "management_profile_signal_detected", + "shape_not_detected", + "document_type_and_account_section_profile_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": "document_type_and_account_section_profile", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_to": "2026-04-02" + }, + "missing_required_filters": [], + "selected_recipe": "address_document_type_and_account_section_profile_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "matched_non_empty", + "rows_fetched": 147, + "raw_rows_received": 147, + "rows_after_account_scope": 147, + "rows_after_recipe_filter": 147, + "rows_materialized": 147, + "rows_matched": 147, + "raw_row_keys_sample": [ + "Период", + "Регистратор", + "СчетДт", + "СчетКт", + "Сумма", + "Period", + "Registrator", + "AccountDt", + "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_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": "Какие разделы учета наименее заполнены?", + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "sanitized_user_message": "какие разделы учета наименее заполнены?", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + }, + "error_code": null, + "error_message": null + } + ] +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_ReverseVariations_AfterFix/response_audit.md b/docs/ADDRESS/runs/2026-04-02_Address_ReverseVariations_AfterFix/response_audit.md new file mode 100644 index 0000000..d98ac62 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_ReverseVariations_AfterFix/response_audit.md @@ -0,0 +1,8 @@ +# Response Audit: 2026-04-02_Address_ReverseVariations_AfterFix + +| id | strict | route_health | reply_type | intent | limited_reason | question | assistant_first_line | +|---|---|---|---|---|---|---|---| +| R001 | True | ok_or_factual | factual | period_coverage_profile | None | Какой год самый пассивный по количеству документов? | Профиль периодов базы собран (movement-based aggregate). | +| R002 | True | ok_or_factual | factual | period_coverage_profile | None | Какой месяц самый пассивный по количеству операций? | Профиль периодов базы собран (movement-based aggregate). | +| R003 | True | ok_or_factual | factual | document_type_and_account_section_profile | None | Какие типы документов используются реже всего в базе? | Профиль типов документов и разделов учета собран (movement-based aggregate). | +| R004 | True | ok_or_factual | factual | document_type_and_account_section_profile | None | Какие разделы учета наименее заполнены? | Профиль типов документов и разделов учета собран (movement-based aggregate). | diff --git a/docs/ADDRESS/runs/2026-04-02_Address_ReverseVariations_AfterFix/run_summary.json b/docs/ADDRESS/runs/2026-04-02_Address_ReverseVariations_AfterFix/run_summary.json new file mode 100644 index 0000000..1397a65 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_ReverseVariations_AfterFix/run_summary.json @@ -0,0 +1,45 @@ +{ + "run_id": "2026-04-02_Address_ReverseVariations_AfterFix", + "generated_at": "2026-04-02T20:49:58", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\temp_reverse_variations_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", + "strict_policy": "factual", + "totals": { + "questions_total": 4, + "ok_200_count": 4, + "semantic_pass_count": 4, + "semantic_pass_rate": 1.0, + "route_pass_count": 4, + "route_pass_rate": 1.0, + "strict_pass_count": 4, + "strict_pass_rate": 1.0, + "factual_count": 4, + "partial_coverage_count": 0, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_applied_count": 0, + "avg_elapsed_ms": 3186 + }, + "distributions": { + "reply_type": { + "factual": 4 + }, + "actual_intent": { + "period_coverage_profile": 2, + "document_type_and_account_section_profile": 2 + }, + "actual_mode": { + "address_query": 4 + }, + "mcp_call_status": { + "matched_non_empty": 4 + }, + "limited_reason_category": {}, + "route_health": { + "ok_or_factual": 4 + } + } +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_ReverseVariations_AfterNextPack/README.md b/docs/ADDRESS/runs/2026-04-02_Address_ReverseVariations_AfterNextPack/README.md new file mode 100644 index 0000000..a898fe6 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_ReverseVariations_AfterNextPack/README.md @@ -0,0 +1,28 @@ +# 2026-04-02_Address_ReverseVariations_AfterNextPack + +Generated at: 2026-04-02T21:06:51 +Questions file: X:\1C\NDC_1C\docs\ADDRESS\question_sets\temp_reverse_variations_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 +Strict policy: factual + +## Totals +- questions_total: 4 +- ok_200_count: 4 +- semantic_pass_count: 4 +- semantic_pass_rate: 1.0 +- route_pass_count: 4 +- route_pass_rate: 1.0 +- strict_pass_count: 4 +- strict_pass_rate: 1.0 +- factual_count: 4 +- partial_coverage_count: 0 +- clarification_required_count: 0 +- http_error_count: 0 +- llm_decomposition_applied_count: 0 +- avg_elapsed_ms: 4023.8 + +## Files +- run_summary.json +- full_live_results.json +- failures_only.json diff --git a/docs/ADDRESS/runs/2026-04-02_Address_ReverseVariations_AfterNextPack/failures_only.json b/docs/ADDRESS/runs/2026-04-02_Address_ReverseVariations_AfterNextPack/failures_only.json new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_ReverseVariations_AfterNextPack/failures_only.json @@ -0,0 +1 @@ +[] diff --git a/docs/ADDRESS/runs/2026-04-02_Address_ReverseVariations_AfterNextPack/full_live_results.json b/docs/ADDRESS/runs/2026-04-02_Address_ReverseVariations_AfterNextPack/full_live_results.json new file mode 100644 index 0000000..255168e --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_ReverseVariations_AfterNextPack/full_live_results.json @@ -0,0 +1,628 @@ +{ + "run_id": "2026-04-02_Address_ReverseVariations_AfterNextPack", + "generated_at": "2026-04-02T21:06:51", + "summary": { + "run_id": "2026-04-02_Address_ReverseVariations_AfterNextPack", + "generated_at": "2026-04-02T21:06:51", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\temp_reverse_variations_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", + "strict_policy": "factual", + "totals": { + "questions_total": 4, + "ok_200_count": 4, + "semantic_pass_count": 4, + "semantic_pass_rate": 1.0, + "route_pass_count": 4, + "route_pass_rate": 1.0, + "strict_pass_count": 4, + "strict_pass_rate": 1.0, + "factual_count": 4, + "partial_coverage_count": 0, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_applied_count": 0, + "avg_elapsed_ms": 4023.8 + }, + "distributions": { + "reply_type": { + "factual": 4 + }, + "actual_intent": { + "period_coverage_profile": 2, + "document_type_and_account_section_profile": 2 + }, + "actual_mode": { + "address_query": 4 + }, + "mcp_call_status": { + "matched_non_empty": 4 + }, + "limited_reason_category": {}, + "route_health": { + "ok_or_factual": 4 + } + } + }, + "rows": [ + { + "index": 1, + "id": "R001", + "question": "Какой год самый пассивный по количеству документов?", + "session": null, + "session_id": "asst-2026-04-02_Address_ReverseVariations_AfterNextPack-r001", + "status_code": 200, + "ok": true, + "elapsed_ms": 6869, + "reply_type": "factual", + "trace_id": "address-v7cBUbzjuB", + "assistant_reply": "Профиль периодов базы собран (movement-based aggregate).\nСтрок агрегата: 134.\nСамый пассивный год по документам: 2022 (87).\n1. 2022: 87\n2. 2014: 115\n3. 2021: 308\n4. 2017: 456\n5. 2020: 536", + "assistant_reply_first_line": "Профиль периодов базы собран (movement-based aggregate).", + "expected_intent": null, + "actual_intent": "period_coverage_profile", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "factual", + "strict_pass": true, + "selected_recipe": "address_period_coverage_profile_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 134, + "rows_matched": 134, + "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, + "debug_payload": { + "trace_id": "address-v7cBUbzjuB", + "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": [ + "management_profile_signal_detected", + "document_list_signal_detected", + "period_coverage_profile_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": "period_coverage_profile", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_to": "2026-04-02" + }, + "missing_required_filters": [], + "selected_recipe": "address_period_coverage_profile_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "matched_non_empty", + "rows_fetched": 134, + "raw_rows_received": 134, + "rows_after_account_scope": 134, + "rows_after_recipe_filter": 134, + "rows_materialized": 134, + "rows_matched": 134, + "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_SUMMARY", + "execution_lane": "address_query", + "llm_decomposition_applied": false, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "Mzc3Ud1_QXtcJ4", + "llm_decomposition_effective_message": "Какой год самый пассивный по количеству документов?", + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "fallback_rule_hit": null, + "sanitized_user_message": "какой год самый пассивный по количеству документов?", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "Mzc3Ud1_QXtcJ4", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "Какой год самый пассивный по количеству документов?" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 2, + "id": "R002", + "question": "Какой месяц самый пассивный по количеству операций?", + "session": null, + "session_id": "asst-2026-04-02_Address_ReverseVariations_AfterNextPack-r002", + "status_code": 200, + "ok": true, + "elapsed_ms": 2039, + "reply_type": "factual", + "trace_id": "address-dWXKrv8Y3z", + "assistant_reply": "Профиль периодов базы собран (movement-based aggregate).\nСтрок агрегата: 134.\nСамый пассивный месяц по операциям: 2014-05 (3).\n1. 2014-05: 3\n2. 2022-11: 6\n3. 2014-09: 8\n4. 2022-09: 9\n5. 2022-10: 9", + "assistant_reply_first_line": "Профиль периодов базы собран (movement-based aggregate).", + "expected_intent": null, + "actual_intent": "period_coverage_profile", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "factual", + "strict_pass": true, + "selected_recipe": "address_period_coverage_profile_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 134, + "rows_matched": 134, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-dWXKrv8Y3z", + "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": [ + "management_profile_signal_detected", + "shape_not_detected", + "period_coverage_profile_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": "period_coverage_profile", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_to": "2026-04-02" + }, + "missing_required_filters": [], + "selected_recipe": "address_period_coverage_profile_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "matched_non_empty", + "rows_fetched": 134, + "raw_rows_received": 134, + "rows_after_account_scope": 134, + "rows_after_recipe_filter": 134, + "rows_materialized": 134, + "rows_matched": 134, + "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_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": "Какой месяц самый пассивный по количеству операций?", + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "sanitized_user_message": "какой месяц самый пассивный по количеству операций?", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + }, + "error_code": null, + "error_message": null + }, + { + "index": 3, + "id": "R003", + "question": "Какие типы документов используются реже всего в базе?", + "session": null, + "session_id": "asst-2026-04-02_Address_ReverseVariations_AfterNextPack-r003", + "status_code": 200, + "ok": true, + "elapsed_ms": 6089, + "reply_type": "factual", + "trace_id": "address-ZeKL6uc-Bc", + "assistant_reply": "Профиль типов документов и разделов учета собран (movement-based aggregate).\nСтрок агрегата: 147.\nНаименее используемые типы документов (по числу уникальных регистраторов):\n1. Формирование записей книги продаж: 2 (0.0%)\n2. Принятие к учету ОС: 3 (0.1%)\n3. Комплектация номенклатуры: 10 (0.2%)\n4. Корректировка реализации: 10 (0.2%)\n5. Авансовый отчет: 12 (0.3%)\n6. Формирование записей книги покупок: 13 (0.3%)\n7. Поступление из переработки: 15 (0.3%)\n8. Передача товаров: 16 (0.4%)\n9. Требование-накладная: 45 (1.0%)\n10. Расходный кассовый ордер: 73 (1.6%)", + "assistant_reply_first_line": "Профиль типов документов и разделов учета собран (movement-based aggregate).", + "expected_intent": null, + "actual_intent": "document_type_and_account_section_profile", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "factual", + "strict_pass": true, + "selected_recipe": "address_document_type_and_account_section_profile_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 147, + "rows_matched": 147, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-ZeKL6uc-Bc", + "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", + "document_type_and_account_section_profile_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": "document_type_and_account_section_profile", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_to": "2026-04-02" + }, + "missing_required_filters": [], + "selected_recipe": "address_document_type_and_account_section_profile_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "matched_non_empty", + "rows_fetched": 147, + "raw_rows_received": 147, + "rows_after_account_scope": 147, + "rows_after_recipe_filter": 147, + "rows_materialized": 147, + "rows_matched": 147, + "raw_row_keys_sample": [ + "Период", + "Регистратор", + "СчетДт", + "СчетКт", + "Сумма", + "Period", + "Registrator", + "AccountDt", + "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_SUMMARY", + "execution_lane": "address_query", + "llm_decomposition_applied": false, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "tWOmN3ghgN9AE4", + "llm_decomposition_effective_message": "Какие типы документов используются реже всего в базе?", + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "sanitized_user_message": "какие типы документов используются реже всего в базе?", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "tWOmN3ghgN9AE4", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "Какие типы документов используются реже всего в базе?" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 4, + "id": "R004", + "question": "Какие разделы учета наименее заполнены?", + "session": null, + "session_id": "asst-2026-04-02_Address_ReverseVariations_AfterNextPack-r004", + "status_code": 200, + "ok": true, + "elapsed_ms": 1098, + "reply_type": "factual", + "trace_id": "address-X7F6Lsuoho", + "assistant_reply": "Профиль типов документов и разделов учета собран (movement-based aggregate).\nСтрок агрегата: 147.\nНаименее заполненные разделы учета (по операциям Дт+Кт):\n1. 58 (Финансовые вложения): 2 (0.0%)\n2. 81 (Собственные акции (доли)): 2 (0.0%)\n3. 80 (Уставный капитал): 5 (0.0%)\n4. 03: 6 (0.0%)\n5. 04 (Нематериальные активы): 6 (0.0%)\n6. 75 (Расчеты с учредителями): 16 (0.1%)\n7. 55 (Специальные счета в банках): 18 (0.1%)\n8. 84 (Нераспределенная прибыль (непокрытый убыток)): 20 (0.1%)\n9. 26 (Общехозяйственные расходы): 51 (0.2%)\n10. 71 (Расчеты с подотчетными лицами): 76 (0.3%)", + "assistant_reply_first_line": "Профиль типов документов и разделов учета собран (movement-based aggregate).", + "expected_intent": null, + "actual_intent": "document_type_and_account_section_profile", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "factual", + "strict_pass": true, + "selected_recipe": "address_document_type_and_account_section_profile_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 147, + "rows_matched": 147, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-X7F6Lsuoho", + "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": [ + "management_profile_signal_detected", + "shape_not_detected", + "document_type_and_account_section_profile_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": "document_type_and_account_section_profile", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_to": "2026-04-02" + }, + "missing_required_filters": [], + "selected_recipe": "address_document_type_and_account_section_profile_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "matched_non_empty", + "rows_fetched": 147, + "raw_rows_received": 147, + "rows_after_account_scope": 147, + "rows_after_recipe_filter": 147, + "rows_materialized": 147, + "rows_matched": 147, + "raw_row_keys_sample": [ + "Период", + "Регистратор", + "СчетДт", + "СчетКт", + "Сумма", + "Period", + "Registrator", + "AccountDt", + "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_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": "Какие разделы учета наименее заполнены?", + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "sanitized_user_message": "какие разделы учета наименее заполнены?", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + }, + "error_code": null, + "error_message": null + } + ] +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_ReverseVariations_AfterNextPack/response_audit.md b/docs/ADDRESS/runs/2026-04-02_Address_ReverseVariations_AfterNextPack/response_audit.md new file mode 100644 index 0000000..a4a0f13 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_ReverseVariations_AfterNextPack/response_audit.md @@ -0,0 +1,8 @@ +# Response Audit: 2026-04-02_Address_ReverseVariations_AfterNextPack + +| id | strict | route_health | reply_type | intent | limited_reason | question | assistant_first_line | +|---|---|---|---|---|---|---|---| +| R001 | True | ok_or_factual | factual | period_coverage_profile | None | Какой год самый пассивный по количеству документов? | Профиль периодов базы собран (movement-based aggregate). | +| R002 | True | ok_or_factual | factual | period_coverage_profile | None | Какой месяц самый пассивный по количеству операций? | Профиль периодов базы собран (movement-based aggregate). | +| R003 | True | ok_or_factual | factual | document_type_and_account_section_profile | None | Какие типы документов используются реже всего в базе? | Профиль типов документов и разделов учета собран (movement-based aggregate). | +| R004 | True | ok_or_factual | factual | document_type_and_account_section_profile | None | Какие разделы учета наименее заполнены? | Профиль типов документов и разделов учета собран (movement-based aggregate). | diff --git a/docs/ADDRESS/runs/2026-04-02_Address_ReverseVariations_AfterNextPack/run_summary.json b/docs/ADDRESS/runs/2026-04-02_Address_ReverseVariations_AfterNextPack/run_summary.json new file mode 100644 index 0000000..65bb4c5 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_ReverseVariations_AfterNextPack/run_summary.json @@ -0,0 +1,45 @@ +{ + "run_id": "2026-04-02_Address_ReverseVariations_AfterNextPack", + "generated_at": "2026-04-02T21:06:51", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\temp_reverse_variations_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", + "strict_policy": "factual", + "totals": { + "questions_total": 4, + "ok_200_count": 4, + "semantic_pass_count": 4, + "semantic_pass_rate": 1.0, + "route_pass_count": 4, + "route_pass_rate": 1.0, + "strict_pass_count": 4, + "strict_pass_rate": 1.0, + "factual_count": 4, + "partial_coverage_count": 0, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_applied_count": 0, + "avg_elapsed_ms": 4023.8 + }, + "distributions": { + "reply_type": { + "factual": 4 + }, + "actual_intent": { + "period_coverage_profile": 2, + "document_type_and_account_section_profile": 2 + }, + "actual_mode": { + "address_query": 4 + }, + "mcp_call_status": { + "matched_non_empty": 4 + }, + "limited_reason_category": {}, + "route_health": { + "ok_or_factual": 4 + } + } +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_ReverseVariations_BeforeFix/README.md b/docs/ADDRESS/runs/2026-04-02_Address_ReverseVariations_BeforeFix/README.md new file mode 100644 index 0000000..7977275 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_ReverseVariations_BeforeFix/README.md @@ -0,0 +1,28 @@ +# 2026-04-02_Address_ReverseVariations_BeforeFix + +Generated at: 2026-04-02T20:37:24 +Questions file: X:\1C\NDC_1C\docs\ADDRESS\question_sets\temp_reverse_variations_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 +Strict policy: route + +## Totals +- questions_total: 4 +- ok_200_count: 4 +- semantic_pass_count: 3 +- semantic_pass_rate: 0.75 +- route_pass_count: 3 +- route_pass_rate: 0.75 +- strict_pass_count: 3 +- strict_pass_rate: 0.75 +- factual_count: 3 +- partial_coverage_count: 0 +- clarification_required_count: 1 +- http_error_count: 0 +- llm_decomposition_applied_count: 1 +- avg_elapsed_ms: 6469 + +## Files +- run_summary.json +- full_live_results.json +- failures_only.json diff --git a/docs/ADDRESS/runs/2026-04-02_Address_ReverseVariations_BeforeFix/failures_only.json b/docs/ADDRESS/runs/2026-04-02_Address_ReverseVariations_BeforeFix/failures_only.json new file mode 100644 index 0000000..a4bf6ba --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_ReverseVariations_BeforeFix/failures_only.json @@ -0,0 +1,388 @@ +[ + { + "index": 4, + "id": "R004", + "question": "Какие разделы учета наименее заполнены?", + "session": null, + "session_id": "asst-2026-04-02_Address_ReverseVariations_BeforeFix-r004", + "status_code": 200, + "ok": true, + "elapsed_ms": 10610, + "reply_type": "clarification_required", + "trace_id": "apY-eOJF6ZJW1y", + "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.", + "assistant_reply_first_line": "Коротко: Наиболее вероятный механизм проблемы подтвержден частично и требует первичной проверки. Что сломано:", + "expected_intent": null, + "actual_intent": null, + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": null, + "mode_match": false, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": false, + "route_pass": false, + "route_health": "blocked_clarification", + "strict_policy": "route", + "strict_pass": false, + "selected_recipe": null, + "missing_required_filters": null, + "match_failure_stage": null, + "match_failure_reason": null, + "rows_fetched": null, + "rows_matched": null, + "mcp_call_status": null, + "limited_reason_category": null, + "llm_decomposition_applied": null, + "llm_decomposition_reason": null, + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "apY-eOJF6ZJW1y", + "prompt_version": "address_query_runtime_v1", + "schema_version": "v1", + "fallback_type": "clarification", + "route_summary": null, + "fragments": [], + "requirements_extracted": [ + { + "requirement_id": "R1", + "source_fragment_id": null, + "requirement_text": "Какие разделы учета наименее заполнены?", + "subject_tokens": [], + "status": "clarification_needed", + "route": null + } + ], + "coverage_report": { + "requirements_total": 1, + "requirements_covered": 0, + "requirements_uncovered": [], + "requirements_partially_covered": [], + "clarification_needed_for": [ + "R1" + ], + "out_of_scope_requirements": [] + }, + "routes": [], + "retrieval_status": [], + "retrieval_results": [], + "answer_grounding_check": { + "status": "no_grounded_answer", + "route_subject_match": true, + "missing_requirements": [ + "R1" + ], + "reasons": [ + "Ни одно требование не получило подтвержденного покрытия.", + "Нет explainable-сигналов why_included в результатах выборки.", + "Недостаточно покрытия required anchors для claim-bound grounding.", + "Недостаточно допустимого evidence для обоснованного ответа.", + "Targeted evidence acquisition РЅРµ дал допустимых попаданий РїРѕ claim target path." + ], + "why_included_summary": [], + "selection_reason_summary": [] + }, + "dropped_intent_segments": [], + "question_type_class": "why_breaks", + "company_anchors": { + "contract_numbers": [], + "document_numbers": [], + "dates": [], + "amounts": [], + "accounts": [], + "periods": [], + "document_types": [], + "all": [] + }, + "business_scope_raw": [], + "business_scope_resolved": [ + "company_specific_accounting" + ], + "company_grounding_applied": true, + "scope_resolution_reason": [ + "settlement_claim_company_scope_recovery" + ], + "company_scope_resolution_reason": [ + "settlement_claim_company_scope_recovery" + ], + "raw_time_anchor": null, + "raw_time_scope": null, + "resolved_time_anchor": null, + "resolved_primary_period": null, + "effective_primary_period": null, + "temporal_guard_input": null, + "temporal_alignment_status": "conflicting", + "temporal_resolution_source": "normalized_time_scope:missing", + "temporal_guard_basis": "none", + "temporal_guard_applied": false, + "temporal_guard_outcome": "passed", + "temporal_guard": { + "raw_time_anchor": null, + "raw_time_scope": null, + "resolved_time_anchor": null, + "resolved_primary_period": null, + "effective_primary_period": null, + "temporal_guard_input": null, + "temporal_alignment_status": "conflicting", + "temporal_resolution_source": "normalized_time_scope:missing", + "temporal_guard_basis": "none", + "temporal_guard_applied": false, + "temporal_guard_outcome": "passed", + "primary_period_window": null, + "allowed_context_window": null, + "controlled_temporal_expansion_enabled": false, + "context_expansion_reasons_allowed": [ + "prehistory", + "carryover", + "post_period_closure", + "long_running_contract_context" + ], + "normalized_anchor_drift_detected": false, + "reason_codes": [ + "missing_resolved_primary_period" + ] + }, + "raw_numeric_tokens": [], + "classified_numeric_tokens": [], + "rejected_as_non_accounts": [], + "resolved_account_anchors": [], + "domain_polarity_guard": { + "applied": false, + "polarity": "not_applicable", + "outcome": "not_applicable", + "supplier_score": 0, + "customer_score": 0, + "account_scope": [], + "raw_numeric_tokens": [], + "classified_numeric_tokens": [], + "rejected_as_non_accounts": [], + "resolved_account_anchors": [], + "rejected_problem_units": 0, + "rejected_evidence": 0, + "critical_contradiction": false, + "reason_codes": [] + }, + "claim_anchor_audit": { + "claim_type": "prove_settlement_closure_state", + "settlement_role": "unknown", + "settlement_role_resolution_reason": [ + "settlement_role_resolved_unknown" + ], + "polarity_resolution_status": "unknown", + "required_anchors": [ + "period", + "account_scope", + "counterparty_scope_or_contract", + "closure_signal" + ], + "resolved_anchors": { + "period": [], + "account_scope": [], + "amounts": [], + "contract": [], + "document_numbers": [], + "document_types": [], + "counterparty_scope": [], + "advance_signal": [], + "closure_signal": [], + "vat_signal": [], + "chain_signal": [], + "close_signal": [], + "cost_scope": [], + "rbp_signal": [], + "writeoff_signal": [], + "fixed_asset_signal": [], + "amortization_signal": [], + "expected_fa_set": [], + "actual_fa_set": [] + }, + "missing_anchors": [ + "period", + "account_scope", + "counterparty_scope_or_contract", + "closure_signal" + ], + "claim_anchor_resolution_rate": 0, + "primary_period": null, + "allowed_context_window": null, + "context_expansion_reasons_allowed": [ + "prehistory", + "carryover", + "post_period_closure", + "long_running_contract_context" + ], + "reason_codes": [ + "claim_missing_required_anchors", + "claim_anchor_resolution_low", + "unresolved_supplier_customer_polarity" + ] + }, + "settlement_role": "unknown", + "settlement_role_resolution_reason": [ + "settlement_role_resolved_unknown" + ], + "polarity_resolution_status": "unknown", + "targeted_evidence_acquisition": { + "claim_type": "prove_settlement_closure_state", + "required_checks": [ + "payment_document_found", + "contract_matched", + "settlement_object_matched", + "closing_document_found", + "register_closure_entry_found", + "posting_link_found" + ], + "check_status": { + "payment_document_found": "not_found", + "contract_matched": "not_found", + "settlement_object_matched": "not_found", + "closing_document_found": "not_found", + "register_closure_entry_found": "not_found", + "posting_link_found": "not_found" + }, + "targeted_item_hits": 0, + "targeted_evidence_hits": 0, + "targeted_evidence_hit_rate": 0, + "targeted_evidence_source_refs": [], + "reason_codes": [ + "targeted_evidence_not_found", + "targeted_evidence_hit_rate_low" + ] + }, + "evidence_admissibility_gate": { + "candidate_evidence_total": 0, + "admissible_evidence_count": 0, + "rejected_evidence_count": 0, + "rejected_item_count": 0, + "reject_breakdown": { + "wrong_period": 0, + "wrong_domain": 0, + "wrong_account_scope": 0, + "weak_source_mapping": 0, + "zero_live_match": 0, + "future_dated_or_out_of_window": 0 + }, + "category_breakdown": { + "hard_evidence": 0, + "supporting_signal": 0, + "inadmissible_noise": 0 + }, + "reason_codes": [ + "no_admissible_evidence_for_grounded_answer" + ] + }, + "eligibility_time_basis": "none", + "grounded_answer_eligibility_guard": { + "eligible": false, + "temporal_passed": true, + "eligibility_time_basis": "none", + "business_scope_passed": true, + "polarity_passed": true, + "claim_anchors_passed": false, + "claim_anchor_resolution_rate": 0, + "missing_required_anchors": 4, + "admissible_evidence_count": 0, + "critical_contradiction": false, + "outcome": "limited_or_insufficient_evidence", + "grounding_mode": "limited_or_insufficient_evidence", + "reason_codes": [ + "claim_anchor_coverage_insufficient", + "admissible_evidence_count_zero", + "targeted_evidence_hit_rate_zero" + ] + }, + "problem_centric_answer_applied": false, + "problem_units_used_count": 0, + "problem_answer_mode": "stage1_policy_v11", + "answer_structure_v11": { + "schema_version": "answer_structure_v1_1", + "answer_summary": "Нужны уточнения: без сужения фокуса надежный вывод невозможен.", + "direct_answer": "Есть признаки проблемы, но без уточнений по периоду и объекту вывод ненадежен.", + "mechanism_block": { + "status": "unresolved", + "mechanism_notes": [], + "limitation_reason_codes": [] + }, + "evidence_block": { + "evidence_ids": [], + "source_refs": [], + "mechanism_notes": [], + "coverage_note": "coverage_partial_or_limited" + }, + "uncertainty_block": { + "open_uncertainties": [ + "R1", + "missing_anchor:period", + "missing_anchor:account", + "missing_anchor:document_or_object", + "missing_anchor:counterparty" + ], + "limitations": [ + "Ни одно требование не получило подтвержденного покрытия.", + "Нет explainable-сигналов why_included в результатах выборки.", + "Недостаточно покрытия required anchors для claim-bound grounding.", + "Недостаточно допустимого evidence для обоснованного ответа.", + "Targeted evidence acquisition РЅРµ дал допустимых попаданий РїРѕ claim target path." + ] + }, + "next_step_block": { + "recommended_actions": [ + "Дайте недостающие СЏРєРѕСЂСЏ (период/счет/объект), иначе сильный factual вывод невозможен." + ], + "clarification_questions": [ + "Уточните период проверки (например, июль 2020).", + "Уточните счет или РіСЂСѓРїРїСѓ счетов (например, 19, 60, 62).", + "Укажите документ/GUID/конкретный объект для трассировки.", + "Укажите контрагента или РіСЂСѓРїРїСѓ контрагентов.", + "Закройте уточнения для требований: R1." + ] + } + }, + "investigation_state_snapshot": { + "schema_version": "investigation_state_v1", + "session_id": "asst-2026-04-02_Address_ReverseVariations_BeforeFix-r004", + "status": "active", + "turn_index": 1, + "updated_at": "2026-04-02T17:37:24.517Z", + "question_id": "msg-JafenTpNZ2", + "question_scope_id": "s:какие разделы учета наименее заполнены?", + "scope_origin": "underspecified", + "focus": { + "domain": null, + "period": null, + "primary_accounts": [], + "active_query_subject": "Какие разделы учета наименее заполнены?" + }, + "narrowing_status": "unknown", + "evidence_refs": [], + "open_uncertainties": [ + "clarify:R1" + ], + "last_answer_mode": "clarification_required", + "followup_context": { + "previous_question_id": null, + "last_user_message": "Какие разделы учета наименее заполнены?", + "referenced_requirement_ids": [ + "R1" + ], + "active_domain": null, + "active_requirement_ids": [ + "R1" + ], + "uncovered_requirement_ids": [ + "R1" + ], + "last_problem_unit_id": null, + "settlement_next_actions": [], + "evidence_summary": [], + "question_scope_id": "s:какие разделы учета наименее заполнены?", + "scope_origin": "underspecified" + }, + "query_mode_hint": "investigation_candidate" + }, + "normalized": null + }, + "error_code": null, + "error_message": null + } +] diff --git a/docs/ADDRESS/runs/2026-04-02_Address_ReverseVariations_BeforeFix/full_live_results.json b/docs/ADDRESS/runs/2026-04-02_Address_ReverseVariations_BeforeFix/full_live_results.json new file mode 100644 index 0000000..fd50267 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_ReverseVariations_BeforeFix/full_live_results.json @@ -0,0 +1,884 @@ +{ + "run_id": "2026-04-02_Address_ReverseVariations_BeforeFix", + "generated_at": "2026-04-02T20:37:24", + "summary": { + "run_id": "2026-04-02_Address_ReverseVariations_BeforeFix", + "generated_at": "2026-04-02T20:37:24", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\temp_reverse_variations_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", + "strict_policy": "route", + "totals": { + "questions_total": 4, + "ok_200_count": 4, + "semantic_pass_count": 3, + "semantic_pass_rate": 0.75, + "route_pass_count": 3, + "route_pass_rate": 0.75, + "strict_pass_count": 3, + "strict_pass_rate": 0.75, + "factual_count": 3, + "partial_coverage_count": 0, + "clarification_required_count": 1, + "http_error_count": 0, + "llm_decomposition_applied_count": 1, + "avg_elapsed_ms": 6469 + }, + "distributions": { + "reply_type": { + "factual": 3, + "clarification_required": 1 + }, + "actual_intent": { + "list_documents_by_counterparty": 1, + "bank_operations_by_counterparty": 1, + "document_type_and_account_section_profile": 1, + "None": 1 + }, + "actual_mode": { + "address_query": 3, + "None": 1 + }, + "mcp_call_status": { + "matched_non_empty": 3, + "None": 1 + }, + "limited_reason_category": {}, + "route_health": { + "ok_or_factual": 3, + "blocked_clarification": 1 + } + } + }, + "rows": [ + { + "index": 1, + "id": "R001", + "question": "Какой год самый пассивный по количеству документов?", + "session": null, + "session_id": "asst-2026-04-02_Address_ReverseVariations_BeforeFix-r001", + "status_code": 200, + "ok": true, + "elapsed_ms": 7207, + "reply_type": "factual", + "trace_id": "address-eCIkDrH0KG", + "assistant_reply": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.\nСобран список документов по контрагенту (live address lane).\nСтрок отобрано: 124.\n1. 2022-04-13T12:00:00Z | Поступление на расчетный счет 00000000004 от 13.04.2022 12:00:00 | 0 / 0 | 1200000 | аналитика: СервисКонсалт, ООО\n2. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 0 / 0 | 2254115 | аналитика: НОРТОН\n3. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 0 / 0 | 1699940 | аналитика: МНН\n4. 2022-01-20T12:00:03Z | Поступление на расчетный счет 00000000001 от 20.01.2022 12:00:03 | 0 / 0 | 890660 | аналитика: Чепурнов П.Д.\n5. 2021-11-10T12:00:07Z | Поступление на расчетный счет 00000000013 от 10.11.2021 12:00:07 | 0 / 0 | 20000 | аналитика: Группа\n6. 2021-09-29T12:00:03Z | Поступление на расчетный счет 00000000012 от 29.09.2021 12:00:03 | 0 / 0 | 50000 | аналитика: Группа\n7. 2021-08-31T12:00:04Z | Поступление на расчетный счет 00000000011 от 31.08.2021 12:00:04 | 0 / 0 | 120500 | аналитика: Группа\n8. 2021-06-22T12:00:00Z | Поступление на расчетный счет 00000000010 от 22.06.2021 12:00:00 | 0 / 0 | 498630 | аналитика: Группа\n9. 2021-06-09T12:00:05Z | Поступление на расчетный счет 00000000009 от 09.06.2021 12:00:05 | 0 / 0 | 418960 | аналитика: Группа\n10. 2021-04-28T12:00:08Z | Поступление на расчетный счет 00000000008 от 28.04.2021 12:00:08 | 0 / 0 | 564300 | аналитика: Группа\n11. 2021-04-22T12:00:00Z | Поступление на расчетный счет 00000000007 от 22.04.2021 12:00:00 | 0 / 0 | 982420 | аналитика: Группа\n12. 2021-04-13T12:00:11Z | Поступление на расчетный счет 00000000006 от 13.04.2021 12:00:11 | 0 / 0 | 1882400 | аналитика: Группа\n13. 2021-03-25T12:00:02Z | Поступление на расчетный счет 00000000005 от 25.03.2021 12:00:02 | 0 / 0 | 644315 | аналитика: Группа\n14. 2021-03-24T12:00:03Z | Поступление на расчетный счет 00000000004 от 24.03.2021 12:00:03 | 0 / 0 | 1219990 | аналитика: Группа\n15. 2021-03-18T12:00:00Z | Поступление на расчетный счет 00000000003 от 18.03.2021 12:00:00 | 0 / 0 | 1425310 | аналитика: Группа\n16. 2021-03-12T12:00:03Z | Поступление на расчетный счет 00000000002 от 12.03.2021 12:00:03 | 0 / 0 | 214600 | аналитика: Группа\n17. 2021-02-19T12:00:01Z | Поступление на расчетный счет 00000000001 от 19.02.2021 12:00:01 | 0 / 0 | 518600 | аналитика: Группа\n18. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n19. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n20. 2020-12-16T16:20:52Z | Списание с расчетного счета 00000000294 от 16.12.2020 16:20:52 | 0 / 0 | 3849.26 | аналитика: УФК по г. Москве (для ГУ - Отделения ПФР по г. Москве и МО)\n21. 2020-12-16T16:20:51Z | Списание с расчетного счета 00000000293 от 16.12.2020 16:20:51 | 0 / 0 | 60 | аналитика: СБЕРБАНК, ПАО\n22. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа\n23. 2020-11-30T12:00:07Z | Поступление на расчетный счет 00000000041 от 30.11.2020 12:00:07 | 0 / 0 | 38900 | аналитика: Группа\n25. 2020-11-19T12:00:04Z | Поступление на расчетный счет 00000000039 от 19.11.2020 12:00:04 | 0 / 0 | 3320600 | аналитика: Группа\n26. 2020-11-18T12:00:05Z | Поступление на расчетный счет 00000000038 от 18.11.2020 12:00:05 | 0 / 0 | 745300 | аналитика: Группа\n27. 2020-11-18T12:00:04Z | Поступление на расчетный счет 00000000037 от 18.11.2020 12:00:04 | 0 / 0 | 320000 | аналитика: Группа\n29. 2020-11-16T16:08:51Z | Списание с расчетного счета 00000000262 от 16.11.2020 16:08:51 | 0 / 0 | 8700 | аналитика: ВИЗАНТИЯ\n30. 2020-11-13T12:00:03Z | Поступление на расчетный счет 00000000036 от 13.11.2020 12:00:03 | 0 / 0 | 313600 | аналитика: Группа\n31. 2020-11-10T15:39:13Z | Поступление на расчетный счет 00000000035 от 10.11.2020 15:39:13 | 0 / 0 | 328300 | аналитика: Группа\n32. 2020-10-26T12:00:00Z | Поступление на расчетный счет 00000000034 от 26.10.2020 12:00:00 | 0 / 0 | 175000 | аналитика: Группа\n34. 2020-08-20T12:00:06Z | Поступление на расчетный счет 00000000032 от 20.08.2020 12:00:06 | 0 / 0 | 3126005 | аналитика: Группа\n35. 2020-08-11T13:16:37Z | Поступление на расчетный счет 00000000031 от 11.08.2020 13:16:37 | 0 / 0 | 55200 | аналитика: МНН\n36. 2020-08-11T13:15:30Z | Поступление на расчетный счет 00000000030 от 11.08.2020 13:15:30 | 0 / 0 | 221000 | аналитика: Гамма-мебель, ООО\n37. 2020-07-30T12:00:00Z | Поступление на расчетный счет 00000000029 от 30.07.2020 12:00:00 | 0 / 0 | 20000 | аналитика: Группа\n38. 2020-07-27T12:00:00Z | Поступление на расчетный счет 00000000028 от 27.07.2020 12:00:00 | 0 / 0 | 40860 | аналитика: Группа\n39. 2020-07-13T12:00:00Z | Поступление на расчетный счет 00000000027 от 13.07.2020 12:00:00 | 0 / 0 | 276873.6 | аналитика: «Олимпстрой»\n40. 2020-06-16T12:00:02Z | Поступление на расчетный счет 00000000026 от 16.06.2020 12:00:02 | 0 / 0 | 250000 | аналитика: Гамма-мебель, ООО\n41. 2020-06-03T00:00:02Z | Поступление на расчетный счет 00000000025 от 03.06.2020 0:00:02 | 0 / 0 | 1642764.88 | аналитика: ЗАО Ремонтно-строительная фирма «Ремстройсервис»\n42. 2020-06-03T00:00:01Z | Поступление на расчетный счет 00000000024 от 03.06.2020 0:00:01 | 0 / 0 | 297760 | аналитика: ЗАО Ремонтно-строительная фирма «Ремстройсервис»\n43. 2020-05-21T12:00:00Z | Поступление на расчетный счет 00000000023 от 21.05.2020 12:00:00 | 0 / 0 | 250546.24 | аналитика: ЗАО Ремонтно-строительная фирма «Ремстройсервис»\n44. 2020-05-15T12:00:02Z | Поступление на расчетный счет 00000000022 от 15.05.2020 12:00:02 | 0 / 0 | 765000 | аналитика: ПрофТренд,ООО\n45. 2020-04-27T12:00:00Z | Поступление на расчетный счет 00000000021 от 27.04.2020 12:00:00 | 0 / 0 | 500000 | аналитика: ЭталонМебель\n46. 2020-03-26T12:00:04Z | Поступление на расчетный счет 00000000020 от 26.03.2020 12:00:04 | 0 / 0 | 355000 | аналитика: ЭталонМебель\n47. 2020-03-19T12:00:01Z | Поступление на расчетный счет 00000000019 от 19.03.2020 12:00:01 | 0 / 0 | 4000000 | аналитика: ЭталонМебель\n48. 2020-03-19T12:00:00Z | Поступление на расчетный счет 00000000018 от 19.03.2020 12:00:00 | 0 / 0 | 2500000 | аналитика: НОРТОН\n49. 2020-03-02T12:00:04Z | Поступление на расчетный счет 00000000017 от 02.03.2020 12:00:04 | 0 / 0 | 0.26 | аналитика: СБЕРБАНК, ПАО\n50. 2020-03-02T12:00:03Z | Поступление на расчетный счет 00000000016 от 02.03.2020 12:00:03 | 0 / 0 | 3000000 | аналитика: ИП Калинин Н.М.\n51. 2020-03-02T12:00:02Z | Поступление на расчетный счет 00000000015 от 02.03.2020 12:00:02 | 0 / 0 | 2500000 | аналитика: Лайсвуд, ООО\n52. 2020-03-02T12:00:01Z | Поступление на расчетный счет 00000000013 от 02.03.2020 12:00:01 | 0 / 0 | 1100000 | аналитика: Гамма-мебель, ООО\n53. 2020-03-02T12:00:00Z | Поступление на расчетный счет 00000000012 от 02.03.2020 12:00:00 | 0 / 0 | 1000000 | аналитика: ЭталонМебель\n54. 2020-03-02T00:00:00Z | Поступление на расчетный счет 00000000014 от 02.03.2020 0:00:00 | 0 / 0 | 1920000 | аналитика: НОРТОН\n55. 2020-02-21T12:00:02Z | Поступление на расчетный счет 00000000011 от 21.02.2020 12:00:02 | 0 / 0 | 400000 | аналитика: НОРТОН\n56. 2020-02-18T12:00:03Z | Поступление на расчетный счет 00000000010 от 18.02.2020 12:00:03 | 0 / 0 | 200000 | аналитика: ИП Калинин Н.М.\n57. 2020-02-07T12:00:03Z | Поступление на расчетный счет 00000000009 от 07.02.2020 12:00:03 | 0 / 0 | 304300 | аналитика: Смарт\n58. 2020-02-03T00:00:01Z | Поступление на расчетный счет 00000000008 от 03.02.2020 0:00:01 | 0 / 0 | 0.01 | аналитика: СБЕРБАНК, ПАО\n59. 2020-02-03T00:00:00Z | Поступление на расчетный счет 00000000006 от 03.02.2020 0:00:00 | 0 / 0 | 2500000 | аналитика: СБЕРБАНК, ПАО\n60. 2020-02-03T00:00:00Z | Поступление на расчетный счет 00000000007 от 03.02.2020 0:00:00 | 0 / 0 | 1778.69 | аналитика: СБЕРБАНК, ПАО\n61. 2020-01-20T11:36:40Z | Поступление на расчетный счет 00000000005 от 20.01.2020 11:36:40 | 0 / 0 | 3678.69 | аналитика: СБЕРБАНК, ПАО\n62. 2020-01-20T11:35:27Z | Поступление на расчетный счет 00000000004 от 20.01.2020 11:35:27 | 0 / 0 | 3600000 | аналитика: СБЕРБАНК, ПАО\n63. 2020-01-09T12:00:02Z | Поступление на расчетный счет 00000000003 от 09.01.2020 12:00:02 | 0 / 0 | 6736.6 | аналитика: СБЕРБАНК, ПАО\n64. 2020-01-09T12:00:01Z | Поступление на расчетный счет 00000000002 от 09.01.2020 12:00:01 | 0 / 0 | 6680000 | аналитика: СБЕРБАНК, ПАО\n65. 2020-01-09T12:00:00Z | Поступление на расчетный счет 00000000001 от 09.01.2020 12:00:00 | 0 / 0 | 0.06 | аналитика: СБЕРБАНК, ПАО\n66. 2019-12-26T12:00:03Z | Поступление на расчетный счет 00000000073 от 26.12.2019 12:00:03 | 0 / 0 | 400035.05 | аналитика: ИП Калинин Н.М.\n67. 2019-12-25T16:09:27Z | Поступление на расчетный счет 00000000072 от 25.12.2019 16:09:27 | 0 / 0 | 6787560 | аналитика: ГКУ\n68. 2019-12-24T14:52:22Z | Списание с расчетного счета 00000000552 от 24.12.2019 14:52:22 | 0 / 0 | 5100 | аналитика: СБЕРБАНК, ПАО\n69. 2019-12-24T14:52:21Z | Поступление на расчетный счет 00000000071 от 24.12.2019 14:52:21 | 0 / 0 | 400000 | аналитика: НОРТОН\n70. 2019-12-24T14:52:20Z | Списание с расчетного счета 00000000551 от 24.12.2019 14:52:20 | 0 / 0 | 22100 | аналитика: УФК МФ по г. Москве (ИФНС России №36 по г. Москве)\n71. 2019-12-24T14:51:56Z | Списание с расчетного счета 00000000546 от 24.12.2019 14:51:56 | 0 / 0 | 32560 | аналитика: УФК по г. Москве (для ГУ - Отделения ПФР по г. Москве и МО)\n72. 2019-12-24T14:51:45Z | Списание с расчетного счета 00000000545 от 24.12.2019 14:51:45 | 0 / 0 | 7548 | аналитика: УФК по г. Москве (для ГУ - Отделения ПФР по г. Москве и МО)\n73. 2019-12-24T14:51:33Z | Списание с расчетного счета 00000000544 от 24.12.2019 14:51:33 | 0 / 0 | 296 | аналитика: УФК по г. Москве (ГУ -\n74. 2019-12-13T12:00:04Z | Поступление на расчетный счет 00000000070 от 13.12.2019 12:00:04 | 0 / 0 | 572800 | аналитика: ИП Калинин Н.М.\n75. 2019-12-11T12:35:33Z | Поступление на расчетный счет 00000000069 от 11.12.2019 12:35:33 | 0 / 0 | 399800 | аналитика: Гамма-мебель, ООО\n76. 2019-12-02T12:00:02Z | Поступление на расчетный счет 00000000068 от 02.12.2019 12:00:02 | 0 / 0 | 0.59 | аналитика: СБЕРБАНК, ПАО\n77. 2019-11-29T12:00:07Z | Поступление на расчетный счет 00000000067 от 29.11.2019 12:00:07 | 0 / 0 | 120800 | аналитика: Смарт\n78. 2019-11-20T12:00:00Z | Поступление на расчетный счет 00000000066 от 20.11.2019 12:00:00 | 0 / 0 | 155000 | аналитика: НОРТОН\n79. 2019-11-18T12:00:00Z | Поступление на расчетный счет 00000000065 от 18.11.2019 12:00:00 | 0 / 0 | 10000 | аналитика: НОРТОН\n80. 2019-11-14T00:00:00Z | Поступление на расчетный счет 00000000064 от 14.11.2019 0:00:00 | 0 / 0 | 250000 | аналитика: НОРТОН\n81. 2019-11-06T12:00:00Z | Поступление на расчетный счет 00000000063 от 06.11.2019 12:00:00 | 0 / 0 | 85000 | аналитика: ИП Калинин Н.М.\n82. 2019-11-01T12:00:00Z | Поступление на расчетный счет 00000000062 от 01.11.2019 12:00:00 | 0 / 0 | 0.04 | аналитика: СБЕРБАНК, ПАО\n83. 2019-10-25T12:00:00Z | Поступление на расчетный счет 00000000061 от 25.10.2019 12:00:00 | 0 / 0 | 570177.4 | аналитика: ГБПОУ г. Москвы \\Московская театральная школа Олега Табакова\\\n84. 2019-10-23T12:00:07Z | Поступление на расчетный счет 00000000060 от 23.10.2019 12:00:07 | 0 / 0 | 331634.63 | аналитика: ГБПОУ г. Москвы \\Московская театральная школа Олега Табакова\\\n85. 2019-10-23T12:00:06Z | Поступление на расчетный счет 00000000059 от 23.10.2019 12:00:06 | 0 / 0 | 203536.42 | аналитика: ГБПОУ г. Москвы \\Московская театральная школа Олега Табакова\\\n86. 2019-10-23T12:00:05Z | Поступление на расчетный счет 00000000058 от 23.10.2019 12:00:05 | 0 / 0 | 100000 | аналитика: Смарт\n87. 2019-10-22T12:00:01Z | Поступление на расчетный счет 00000000057 от 22.10.2019 12:00:01 | 0 / 0 | 943400 | аналитика: Смарт\n88. 2019-10-22T12:00:00Z | Поступление на расчетный счет 00000000056 от 22.10.2019 12:00:00 | 0 / 0 | 765000 | аналитика: НОРТОН\n89. 2019-10-16T12:00:01Z | Поступление на расчетный счет 00000000055 от 16.10.2019 12:00:01 | 0 / 0 | 364475 | аналитика: ЭталонМебель\n90. 2019-10-16T12:00:00Z | Поступление на расчетный счет 00000000053 от 16.10.2019 12:00:00 | 0 / 0 | 120500 | аналитика: ПрофТренд,ООО\n91. 2019-10-16T11:58:53Z | Поступление на расчетный счет 00000000054 от 16.10.2019 11:58:53 | 0 / 0 | 161641 | аналитика: Лайсвуд, ООО\n92. 2019-10-15T12:00:07Z | Поступление на расчетный счет 00000000052 от 15.10.2019 12:00:07 | 0 / 0 | 5000000 | аналитика: СБЕРБАНК, ПАО\n93. 2019-10-08T12:00:00Z | Поступление на расчетный счет 00000000051 от 08.10.2019 12:00:00 | 0 / 0 | 289101 | аналитика: НОРТОН\n94. 2019-10-01T12:00:04Z | Поступление на расчетный счет 00000000050 от 01.10.2019 12:00:04 | 0 / 0 | 0.75 | аналитика: СБЕРБАНК, ПАО\n95. 2019-09-23T14:49:17Z | Поступление на расчетный счет 00000000049 от 23.09.2019 14:49:17 | 0 / 0 | 211800 | аналитика: МНН\n96. 2019-09-16T11:00:00Z | Поступление на расчетный счет 00000000048 от 16.09.2019 11:00:00 | 0 / 0 | 10147409.75 | аналитика: Департамент капитального ремонта города Москвы.\n98. 2019-09-02T12:00:01Z | Поступление на расчетный счет 00000000046 от 02.09.2019 12:00:01 | 0 / 0 | 1.61 | аналитика: СБЕРБАНК, ПАО\n100. 2019-08-13T12:00:00Z | Поступление на расчетный счет 00000000044 от 13.08.2019 12:00:00 | 0 / 0 | 1250000 | аналитика: НОРТОН\n101. 2019-08-05T18:34:52Z | Списание с расчетного счета 00000000350 от 05.08.2019 18:34:52 | 0 / 0 | 8 | аналитика: СБЕРБАНК, ПАО\n102. 2019-08-01T14:38:57Z | Поступление на расчетный счет 00000000043 от 01.08.2019 14:38:57 | 0 / 0 | 0.07 | аналитика: СБЕРБАНК, ПАО\n103. 2019-08-01T14:38:56Z | Поступление на расчетный счет 00000000042 от 01.08.2019 14:38:56 | 0 / 0 | 4341417.9 | аналитика: Департамент капитального ремонта города Москвы.\n104. 2019-07-31T12:00:22Z | Поступление на расчетный счет 00000000041 от 31.07.2019 12:00:22 | 0 / 0 | 885750 | аналитика: МОСКОВСКИЙ ФИЛИАЛ ООО КБ\\МЕГАПОЛИС\\\n105. 2019-07-31T00:00:00Z | Поступление на расчетный счет 00000000040 от 31.07.2019 0:00:00 | 0 / 0 | 5851476.3 | аналитика: Департамент капитального ремонта города Москвы.\n106. 2019-07-30T12:28:33Z | Поступление на расчетный счет 00000000039 от 30.07.2019 12:28:33 | 0 / 0 | 150000 | аналитика: ПрофТренд,ООО\n107. 2019-07-26T12:00:03Z | Поступление на расчетный счет 00000000038 от 26.07.2019 12:00:03 | 0 / 0 | 2300000 | аналитика: НОРТОН\n108. 2019-07-26T12:00:00Z | Поступление на расчетный счет 00000000037 от 26.07.2019 12:00:00 | 0 / 0 | 1089000 | аналитика: МОСКОВСКИЙ ФИЛИАЛ ООО КБ\\МЕГАПОЛИС\\\n109. 2019-07-19T12:00:00Z | Поступление на расчетный счет 00000000036 от 19.07.2019 12:00:00 | 0 / 0 | 659709 | аналитика: МОСКОВСКИЙ ФИЛИАЛ ООО КБ\\МЕГАПОЛИС\\\n110. 2019-07-17T12:26:22Z | Поступление на расчетный счет 00000000035 от 17.07.2019 12:26:22 | 0 / 0 | 2545480 | аналитика: МОСКОВСКИЙ ФИЛИАЛ ООО КБ\\МЕГАПОЛИС\\\n111. 2019-07-05T00:00:03Z | Поступление на расчетный счет 00000000034 от 05.07.2019 0:00:03 | 0 / 0 | 3065950 | аналитика: МОСКОВСКИЙ ФИЛИАЛ ООО КБ\\МЕГАПОЛИС\\\n112. 2019-07-01T12:00:03Z | Поступление на расчетный счет 00000000033 от 01.07.2019 12:00:03 | 0 / 0 | 1.88 | аналитика: СБЕРБАНК, ПАО\n113. 2019-07-01T12:00:02Z | Поступление на расчетный счет 00000000032 от 01.07.2019 12:00:02 | 0 / 0 | 1943295 | аналитика: Лайсвуд, ООО\n114. 2019-06-26T00:00:01Z | Поступление на расчетный счет 00000000031 от 26.06.2019 0:00:01 | 0 / 0 | 4148050 | аналитика: МОСКОВСКИЙ ФИЛИАЛ ООО КБ\\МЕГАПОЛИС\\\n115. 2019-06-25T17:29:13Z | Поступление на расчетный счет 00000000030 от 25.06.2019 17:29:13 | 0 / 0 | 2606060 | аналитика: МОСКОВСКИЙ ФИЛИАЛ ООО КБ\\МЕГАПОЛИС\\\n116. 2019-06-25T17:29:10Z | Поступление на расчетный счет 00000000029 от 25.06.2019 17:29:10 | 0 / 0 | 57700 | аналитика: Лайсвуд, ООО\n117. 2019-06-24T12:00:07Z | Поступление на расчетный счет 00000000028 от 24.06.2019 12:00:07 | 0 / 0 | 877000 | аналитика: Лайсвуд, ООО\n118. 2019-06-17T12:10:24Z | Поступление на расчетный счет 00000000027 от 17.06.2019 12:10:24 | 0 / 0 | 9500644.3 | аналитика: Департамент капитального ремонта города Москвы.\n119. 2019-06-17T12:10:23Z | Поступление на расчетный счет 00000000026 от 17.06.2019 12:10:23 | 0 / 0 | 6369341.5 | аналитика: Департамент капитального ремонта города Москвы.\n120. 2019-06-13T12:00:01Z | Поступление на расчетный счет 00000000025 от 13.06.2019 12:00:01 | 0 / 0 | 20000 | аналитика: МНН\n121. 2019-06-10T17:03:15Z | Поступление на расчетный счет 00000000024 от 10.06.2019 17:03:15 | 0 / 0 | 7714130 | аналитика: МОСКОВСКИЙ ФИЛИАЛ ООО КБ\\МЕГАПОЛИС\\\n122. 2019-06-07T13:19:06Z | Поступление на расчетный счет 00000000023 от 07.06.2019 13:19:06 | 0 / 0 | 13590525.6 | аналитика: Департамент капитального ремонта города Москвы.\n123. 2019-06-07T13:19:05Z | Поступление на расчетный счет 00000000022 от 07.06.2019 13:19:05 | 0 / 0 | 3874887.07 | аналитика: Департамент капитального ремонта города Москвы.\n124. 2019-06-07T13:19:04Z | Поступление на расчетный счет 00000000021 от 07.06.2019 13:19:04 | 0 / 0 | 386923.5 | аналитика: Департамент капитального ремонта города Москвы.", + "assistant_reply_first_line": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.", + "expected_intent": null, + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "rows_fetched": 1000, + "rows_matched": 124, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-eCIkDrH0KG", + "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", + "anchor_not_matched_fallback_rows" + ], + "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": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "mcp_call_status": "matched_non_empty", + "rows_fetched": 1000, + "raw_rows_received": 1000, + "rows_after_account_scope": 124, + "rows_after_recipe_filter": 0, + "rows_materialized": 124, + "rows_matched": 124, + "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": "UNRBabW7_f-M6E", + "llm_decomposition_effective_message": "Какой год имеет наименьшее количество документов?", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "какой год самый пассивный по количеству документов?", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "UNRBabW7_f-M6E", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Какой год имеет наименьшее количество документов?" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 2, + "id": "R002", + "question": "Какой месяц самый пассивный по количеству операций?", + "session": null, + "session_id": "asst-2026-04-02_Address_ReverseVariations_BeforeFix-r002", + "status_code": 200, + "ok": true, + "elapsed_ms": 2002, + "reply_type": "factual", + "trace_id": "address-MevPGKr0Lp", + "assistant_reply": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.\nСобран список банковских операций по контрагенту (live address lane).\nСтрок отобрано: 124.\n1. 2022-04-13T12:00:00Z | Поступление на расчетный счет 00000000004 от 13.04.2022 12:00:00 | 0 / 0 | 1200000 | аналитика: СервисКонсалт, ООО\n2. 2022-01-20T12:00:05Z | Поступление на расчетный счет 00000000003 от 20.01.2022 12:00:05 | 0 / 0 | 2254115 | аналитика: НОРТОН\n3. 2022-01-20T12:00:04Z | Поступление на расчетный счет 00000000002 от 20.01.2022 12:00:04 | 0 / 0 | 1699940 | аналитика: МНН\n4. 2022-01-20T12:00:03Z | Поступление на расчетный счет 00000000001 от 20.01.2022 12:00:03 | 0 / 0 | 890660 | аналитика: Чепурнов П.Д.\n5. 2021-11-10T12:00:07Z | Поступление на расчетный счет 00000000013 от 10.11.2021 12:00:07 | 0 / 0 | 20000 | аналитика: Группа\n6. 2021-09-29T12:00:03Z | Поступление на расчетный счет 00000000012 от 29.09.2021 12:00:03 | 0 / 0 | 50000 | аналитика: Группа\n7. 2021-08-31T12:00:04Z | Поступление на расчетный счет 00000000011 от 31.08.2021 12:00:04 | 0 / 0 | 120500 | аналитика: Группа\n8. 2021-06-22T12:00:00Z | Поступление на расчетный счет 00000000010 от 22.06.2021 12:00:00 | 0 / 0 | 498630 | аналитика: Группа\n9. 2021-06-09T12:00:05Z | Поступление на расчетный счет 00000000009 от 09.06.2021 12:00:05 | 0 / 0 | 418960 | аналитика: Группа\n10. 2021-04-28T12:00:08Z | Поступление на расчетный счет 00000000008 от 28.04.2021 12:00:08 | 0 / 0 | 564300 | аналитика: Группа\n11. 2021-04-22T12:00:00Z | Поступление на расчетный счет 00000000007 от 22.04.2021 12:00:00 | 0 / 0 | 982420 | аналитика: Группа\n12. 2021-04-13T12:00:11Z | Поступление на расчетный счет 00000000006 от 13.04.2021 12:00:11 | 0 / 0 | 1882400 | аналитика: Группа\n13. 2021-03-25T12:00:02Z | Поступление на расчетный счет 00000000005 от 25.03.2021 12:00:02 | 0 / 0 | 644315 | аналитика: Группа\n14. 2021-03-24T12:00:03Z | Поступление на расчетный счет 00000000004 от 24.03.2021 12:00:03 | 0 / 0 | 1219990 | аналитика: Группа\n15. 2021-03-18T12:00:00Z | Поступление на расчетный счет 00000000003 от 18.03.2021 12:00:00 | 0 / 0 | 1425310 | аналитика: Группа\n16. 2021-03-12T12:00:03Z | Поступление на расчетный счет 00000000002 от 12.03.2021 12:00:03 | 0 / 0 | 214600 | аналитика: Группа\n17. 2021-02-19T12:00:01Z | Поступление на расчетный счет 00000000001 от 19.02.2021 12:00:01 | 0 / 0 | 518600 | аналитика: Группа\n18. 2020-12-30T12:00:00Z | Поступление на расчетный счет 00000000044 от 30.12.2020 12:00:00 | 0 / 0 | 3248300 | аналитика: Группа\n19. 2020-12-16T16:20:53Z | Поступление на расчетный счет 00000000043 от 16.12.2020 16:20:53 | 0 / 0 | 216600 | аналитика: Группа\n20. 2020-12-16T16:20:52Z | Списание с расчетного счета 00000000294 от 16.12.2020 16:20:52 | 0 / 0 | 3849.26 | аналитика: УФК по г. Москве (для ГУ - Отделения ПФР по г. Москве и МО)\n21. 2020-12-16T16:20:51Z | Списание с расчетного счета 00000000293 от 16.12.2020 16:20:51 | 0 / 0 | 60 | аналитика: СБЕРБАНК, ПАО\n22. 2020-12-14T12:00:00Z | Поступление на расчетный счет 00000000042 от 14.12.2020 12:00:00 | 0 / 0 | 200000 | аналитика: Группа\n23. 2020-11-30T12:00:07Z | Поступление на расчетный счет 00000000041 от 30.11.2020 12:00:07 | 0 / 0 | 38900 | аналитика: Группа\n25. 2020-11-19T12:00:04Z | Поступление на расчетный счет 00000000039 от 19.11.2020 12:00:04 | 0 / 0 | 3320600 | аналитика: Группа\n26. 2020-11-18T12:00:05Z | Поступление на расчетный счет 00000000038 от 18.11.2020 12:00:05 | 0 / 0 | 745300 | аналитика: Группа\n27. 2020-11-18T12:00:04Z | Поступление на расчетный счет 00000000037 от 18.11.2020 12:00:04 | 0 / 0 | 320000 | аналитика: Группа\n29. 2020-11-16T16:08:51Z | Списание с расчетного счета 00000000262 от 16.11.2020 16:08:51 | 0 / 0 | 8700 | аналитика: ВИЗАНТИЯ\n30. 2020-11-13T12:00:03Z | Поступление на расчетный счет 00000000036 от 13.11.2020 12:00:03 | 0 / 0 | 313600 | аналитика: Группа\n31. 2020-11-10T15:39:13Z | Поступление на расчетный счет 00000000035 от 10.11.2020 15:39:13 | 0 / 0 | 328300 | аналитика: Группа\n32. 2020-10-26T12:00:00Z | Поступление на расчетный счет 00000000034 от 26.10.2020 12:00:00 | 0 / 0 | 175000 | аналитика: Группа\n34. 2020-08-20T12:00:06Z | Поступление на расчетный счет 00000000032 от 20.08.2020 12:00:06 | 0 / 0 | 3126005 | аналитика: Группа\n35. 2020-08-11T13:16:37Z | Поступление на расчетный счет 00000000031 от 11.08.2020 13:16:37 | 0 / 0 | 55200 | аналитика: МНН\n36. 2020-08-11T13:15:30Z | Поступление на расчетный счет 00000000030 от 11.08.2020 13:15:30 | 0 / 0 | 221000 | аналитика: Гамма-мебель, ООО\n37. 2020-07-30T12:00:00Z | Поступление на расчетный счет 00000000029 от 30.07.2020 12:00:00 | 0 / 0 | 20000 | аналитика: Группа\n38. 2020-07-27T12:00:00Z | Поступление на расчетный счет 00000000028 от 27.07.2020 12:00:00 | 0 / 0 | 40860 | аналитика: Группа\n39. 2020-07-13T12:00:00Z | Поступление на расчетный счет 00000000027 от 13.07.2020 12:00:00 | 0 / 0 | 276873.6 | аналитика: «Олимпстрой»\n40. 2020-06-16T12:00:02Z | Поступление на расчетный счет 00000000026 от 16.06.2020 12:00:02 | 0 / 0 | 250000 | аналитика: Гамма-мебель, ООО\n41. 2020-06-03T00:00:02Z | Поступление на расчетный счет 00000000025 от 03.06.2020 0:00:02 | 0 / 0 | 1642764.88 | аналитика: ЗАО Ремонтно-строительная фирма «Ремстройсервис»\n42. 2020-06-03T00:00:01Z | Поступление на расчетный счет 00000000024 от 03.06.2020 0:00:01 | 0 / 0 | 297760 | аналитика: ЗАО Ремонтно-строительная фирма «Ремстройсервис»\n43. 2020-05-21T12:00:00Z | Поступление на расчетный счет 00000000023 от 21.05.2020 12:00:00 | 0 / 0 | 250546.24 | аналитика: ЗАО Ремонтно-строительная фирма «Ремстройсервис»\n44. 2020-05-15T12:00:02Z | Поступление на расчетный счет 00000000022 от 15.05.2020 12:00:02 | 0 / 0 | 765000 | аналитика: ПрофТренд,ООО\n45. 2020-04-27T12:00:00Z | Поступление на расчетный счет 00000000021 от 27.04.2020 12:00:00 | 0 / 0 | 500000 | аналитика: ЭталонМебель\n46. 2020-03-26T12:00:04Z | Поступление на расчетный счет 00000000020 от 26.03.2020 12:00:04 | 0 / 0 | 355000 | аналитика: ЭталонМебель\n47. 2020-03-19T12:00:01Z | Поступление на расчетный счет 00000000019 от 19.03.2020 12:00:01 | 0 / 0 | 4000000 | аналитика: ЭталонМебель\n48. 2020-03-19T12:00:00Z | Поступление на расчетный счет 00000000018 от 19.03.2020 12:00:00 | 0 / 0 | 2500000 | аналитика: НОРТОН\n49. 2020-03-02T12:00:04Z | Поступление на расчетный счет 00000000017 от 02.03.2020 12:00:04 | 0 / 0 | 0.26 | аналитика: СБЕРБАНК, ПАО\n50. 2020-03-02T12:00:03Z | Поступление на расчетный счет 00000000016 от 02.03.2020 12:00:03 | 0 / 0 | 3000000 | аналитика: ИП Калинин Н.М.\n51. 2020-03-02T12:00:02Z | Поступление на расчетный счет 00000000015 от 02.03.2020 12:00:02 | 0 / 0 | 2500000 | аналитика: Лайсвуд, ООО\n52. 2020-03-02T12:00:01Z | Поступление на расчетный счет 00000000013 от 02.03.2020 12:00:01 | 0 / 0 | 1100000 | аналитика: Гамма-мебель, ООО\n53. 2020-03-02T12:00:00Z | Поступление на расчетный счет 00000000012 от 02.03.2020 12:00:00 | 0 / 0 | 1000000 | аналитика: ЭталонМебель\n54. 2020-03-02T00:00:00Z | Поступление на расчетный счет 00000000014 от 02.03.2020 0:00:00 | 0 / 0 | 1920000 | аналитика: НОРТОН\n55. 2020-02-21T12:00:02Z | Поступление на расчетный счет 00000000011 от 21.02.2020 12:00:02 | 0 / 0 | 400000 | аналитика: НОРТОН\n56. 2020-02-18T12:00:03Z | Поступление на расчетный счет 00000000010 от 18.02.2020 12:00:03 | 0 / 0 | 200000 | аналитика: ИП Калинин Н.М.\n57. 2020-02-07T12:00:03Z | Поступление на расчетный счет 00000000009 от 07.02.2020 12:00:03 | 0 / 0 | 304300 | аналитика: Смарт\n58. 2020-02-03T00:00:01Z | Поступление на расчетный счет 00000000008 от 03.02.2020 0:00:01 | 0 / 0 | 0.01 | аналитика: СБЕРБАНК, ПАО\n59. 2020-02-03T00:00:00Z | Поступление на расчетный счет 00000000006 от 03.02.2020 0:00:00 | 0 / 0 | 2500000 | аналитика: СБЕРБАНК, ПАО\n60. 2020-02-03T00:00:00Z | Поступление на расчетный счет 00000000007 от 03.02.2020 0:00:00 | 0 / 0 | 1778.69 | аналитика: СБЕРБАНК, ПАО\n61. 2020-01-20T11:36:40Z | Поступление на расчетный счет 00000000005 от 20.01.2020 11:36:40 | 0 / 0 | 3678.69 | аналитика: СБЕРБАНК, ПАО\n62. 2020-01-20T11:35:27Z | Поступление на расчетный счет 00000000004 от 20.01.2020 11:35:27 | 0 / 0 | 3600000 | аналитика: СБЕРБАНК, ПАО\n63. 2020-01-09T12:00:02Z | Поступление на расчетный счет 00000000003 от 09.01.2020 12:00:02 | 0 / 0 | 6736.6 | аналитика: СБЕРБАНК, ПАО\n64. 2020-01-09T12:00:01Z | Поступление на расчетный счет 00000000002 от 09.01.2020 12:00:01 | 0 / 0 | 6680000 | аналитика: СБЕРБАНК, ПАО\n65. 2020-01-09T12:00:00Z | Поступление на расчетный счет 00000000001 от 09.01.2020 12:00:00 | 0 / 0 | 0.06 | аналитика: СБЕРБАНК, ПАО\n66. 2019-12-26T12:00:03Z | Поступление на расчетный счет 00000000073 от 26.12.2019 12:00:03 | 0 / 0 | 400035.05 | аналитика: ИП Калинин Н.М.\n67. 2019-12-25T16:09:27Z | Поступление на расчетный счет 00000000072 от 25.12.2019 16:09:27 | 0 / 0 | 6787560 | аналитика: ГКУ\n68. 2019-12-24T14:52:22Z | Списание с расчетного счета 00000000552 от 24.12.2019 14:52:22 | 0 / 0 | 5100 | аналитика: СБЕРБАНК, ПАО\n69. 2019-12-24T14:52:21Z | Поступление на расчетный счет 00000000071 от 24.12.2019 14:52:21 | 0 / 0 | 400000 | аналитика: НОРТОН\n70. 2019-12-24T14:52:20Z | Списание с расчетного счета 00000000551 от 24.12.2019 14:52:20 | 0 / 0 | 22100 | аналитика: УФК МФ по г. Москве (ИФНС России №36 по г. Москве)\n71. 2019-12-24T14:51:56Z | Списание с расчетного счета 00000000546 от 24.12.2019 14:51:56 | 0 / 0 | 32560 | аналитика: УФК по г. Москве (для ГУ - Отделения ПФР по г. Москве и МО)\n72. 2019-12-24T14:51:45Z | Списание с расчетного счета 00000000545 от 24.12.2019 14:51:45 | 0 / 0 | 7548 | аналитика: УФК по г. Москве (для ГУ - Отделения ПФР по г. Москве и МО)\n73. 2019-12-24T14:51:33Z | Списание с расчетного счета 00000000544 от 24.12.2019 14:51:33 | 0 / 0 | 296 | аналитика: УФК по г. Москве (ГУ -\n74. 2019-12-13T12:00:04Z | Поступление на расчетный счет 00000000070 от 13.12.2019 12:00:04 | 0 / 0 | 572800 | аналитика: ИП Калинин Н.М.\n75. 2019-12-11T12:35:33Z | Поступление на расчетный счет 00000000069 от 11.12.2019 12:35:33 | 0 / 0 | 399800 | аналитика: Гамма-мебель, ООО\n76. 2019-12-02T12:00:02Z | Поступление на расчетный счет 00000000068 от 02.12.2019 12:00:02 | 0 / 0 | 0.59 | аналитика: СБЕРБАНК, ПАО\n77. 2019-11-29T12:00:07Z | Поступление на расчетный счет 00000000067 от 29.11.2019 12:00:07 | 0 / 0 | 120800 | аналитика: Смарт\n78. 2019-11-20T12:00:00Z | Поступление на расчетный счет 00000000066 от 20.11.2019 12:00:00 | 0 / 0 | 155000 | аналитика: НОРТОН\n79. 2019-11-18T12:00:00Z | Поступление на расчетный счет 00000000065 от 18.11.2019 12:00:00 | 0 / 0 | 10000 | аналитика: НОРТОН\n80. 2019-11-14T00:00:00Z | Поступление на расчетный счет 00000000064 от 14.11.2019 0:00:00 | 0 / 0 | 250000 | аналитика: НОРТОН\n81. 2019-11-06T12:00:00Z | Поступление на расчетный счет 00000000063 от 06.11.2019 12:00:00 | 0 / 0 | 85000 | аналитика: ИП Калинин Н.М.\n82. 2019-11-01T12:00:00Z | Поступление на расчетный счет 00000000062 от 01.11.2019 12:00:00 | 0 / 0 | 0.04 | аналитика: СБЕРБАНК, ПАО\n83. 2019-10-25T12:00:00Z | Поступление на расчетный счет 00000000061 от 25.10.2019 12:00:00 | 0 / 0 | 570177.4 | аналитика: ГБПОУ г. Москвы \\Московская театральная школа Олега Табакова\\\n84. 2019-10-23T12:00:07Z | Поступление на расчетный счет 00000000060 от 23.10.2019 12:00:07 | 0 / 0 | 331634.63 | аналитика: ГБПОУ г. Москвы \\Московская театральная школа Олега Табакова\\\n85. 2019-10-23T12:00:06Z | Поступление на расчетный счет 00000000059 от 23.10.2019 12:00:06 | 0 / 0 | 203536.42 | аналитика: ГБПОУ г. Москвы \\Московская театральная школа Олега Табакова\\\n86. 2019-10-23T12:00:05Z | Поступление на расчетный счет 00000000058 от 23.10.2019 12:00:05 | 0 / 0 | 100000 | аналитика: Смарт\n87. 2019-10-22T12:00:01Z | Поступление на расчетный счет 00000000057 от 22.10.2019 12:00:01 | 0 / 0 | 943400 | аналитика: Смарт\n88. 2019-10-22T12:00:00Z | Поступление на расчетный счет 00000000056 от 22.10.2019 12:00:00 | 0 / 0 | 765000 | аналитика: НОРТОН\n89. 2019-10-16T12:00:01Z | Поступление на расчетный счет 00000000055 от 16.10.2019 12:00:01 | 0 / 0 | 364475 | аналитика: ЭталонМебель\n90. 2019-10-16T12:00:00Z | Поступление на расчетный счет 00000000053 от 16.10.2019 12:00:00 | 0 / 0 | 120500 | аналитика: ПрофТренд,ООО\n91. 2019-10-16T11:58:53Z | Поступление на расчетный счет 00000000054 от 16.10.2019 11:58:53 | 0 / 0 | 161641 | аналитика: Лайсвуд, ООО\n92. 2019-10-15T12:00:07Z | Поступление на расчетный счет 00000000052 от 15.10.2019 12:00:07 | 0 / 0 | 5000000 | аналитика: СБЕРБАНК, ПАО\n93. 2019-10-08T12:00:00Z | Поступление на расчетный счет 00000000051 от 08.10.2019 12:00:00 | 0 / 0 | 289101 | аналитика: НОРТОН\n94. 2019-10-01T12:00:04Z | Поступление на расчетный счет 00000000050 от 01.10.2019 12:00:04 | 0 / 0 | 0.75 | аналитика: СБЕРБАНК, ПАО\n95. 2019-09-23T14:49:17Z | Поступление на расчетный счет 00000000049 от 23.09.2019 14:49:17 | 0 / 0 | 211800 | аналитика: МНН\n96. 2019-09-16T11:00:00Z | Поступление на расчетный счет 00000000048 от 16.09.2019 11:00:00 | 0 / 0 | 10147409.75 | аналитика: Департамент капитального ремонта города Москвы.\n98. 2019-09-02T12:00:01Z | Поступление на расчетный счет 00000000046 от 02.09.2019 12:00:01 | 0 / 0 | 1.61 | аналитика: СБЕРБАНК, ПАО\n100. 2019-08-13T12:00:00Z | Поступление на расчетный счет 00000000044 от 13.08.2019 12:00:00 | 0 / 0 | 1250000 | аналитика: НОРТОН\n101. 2019-08-05T18:34:52Z | Списание с расчетного счета 00000000350 от 05.08.2019 18:34:52 | 0 / 0 | 8 | аналитика: СБЕРБАНК, ПАО\n102. 2019-08-01T14:38:57Z | Поступление на расчетный счет 00000000043 от 01.08.2019 14:38:57 | 0 / 0 | 0.07 | аналитика: СБЕРБАНК, ПАО\n103. 2019-08-01T14:38:56Z | Поступление на расчетный счет 00000000042 от 01.08.2019 14:38:56 | 0 / 0 | 4341417.9 | аналитика: Департамент капитального ремонта города Москвы.\n104. 2019-07-31T12:00:22Z | Поступление на расчетный счет 00000000041 от 31.07.2019 12:00:22 | 0 / 0 | 885750 | аналитика: МОСКОВСКИЙ ФИЛИАЛ ООО КБ\\МЕГАПОЛИС\\\n105. 2019-07-31T00:00:00Z | Поступление на расчетный счет 00000000040 от 31.07.2019 0:00:00 | 0 / 0 | 5851476.3 | аналитика: Департамент капитального ремонта города Москвы.\n106. 2019-07-30T12:28:33Z | Поступление на расчетный счет 00000000039 от 30.07.2019 12:28:33 | 0 / 0 | 150000 | аналитика: ПрофТренд,ООО\n107. 2019-07-26T12:00:03Z | Поступление на расчетный счет 00000000038 от 26.07.2019 12:00:03 | 0 / 0 | 2300000 | аналитика: НОРТОН\n108. 2019-07-26T12:00:00Z | Поступление на расчетный счет 00000000037 от 26.07.2019 12:00:00 | 0 / 0 | 1089000 | аналитика: МОСКОВСКИЙ ФИЛИАЛ ООО КБ\\МЕГАПОЛИС\\\n109. 2019-07-19T12:00:00Z | Поступление на расчетный счет 00000000036 от 19.07.2019 12:00:00 | 0 / 0 | 659709 | аналитика: МОСКОВСКИЙ ФИЛИАЛ ООО КБ\\МЕГАПОЛИС\\\n110. 2019-07-17T12:26:22Z | Поступление на расчетный счет 00000000035 от 17.07.2019 12:26:22 | 0 / 0 | 2545480 | аналитика: МОСКОВСКИЙ ФИЛИАЛ ООО КБ\\МЕГАПОЛИС\\\n111. 2019-07-05T00:00:03Z | Поступление на расчетный счет 00000000034 от 05.07.2019 0:00:03 | 0 / 0 | 3065950 | аналитика: МОСКОВСКИЙ ФИЛИАЛ ООО КБ\\МЕГАПОЛИС\\\n112. 2019-07-01T12:00:03Z | Поступление на расчетный счет 00000000033 от 01.07.2019 12:00:03 | 0 / 0 | 1.88 | аналитика: СБЕРБАНК, ПАО\n113. 2019-07-01T12:00:02Z | Поступление на расчетный счет 00000000032 от 01.07.2019 12:00:02 | 0 / 0 | 1943295 | аналитика: Лайсвуд, ООО\n114. 2019-06-26T00:00:01Z | Поступление на расчетный счет 00000000031 от 26.06.2019 0:00:01 | 0 / 0 | 4148050 | аналитика: МОСКОВСКИЙ ФИЛИАЛ ООО КБ\\МЕГАПОЛИС\\\n115. 2019-06-25T17:29:13Z | Поступление на расчетный счет 00000000030 от 25.06.2019 17:29:13 | 0 / 0 | 2606060 | аналитика: МОСКОВСКИЙ ФИЛИАЛ ООО КБ\\МЕГАПОЛИС\\\n116. 2019-06-25T17:29:10Z | Поступление на расчетный счет 00000000029 от 25.06.2019 17:29:10 | 0 / 0 | 57700 | аналитика: Лайсвуд, ООО\n117. 2019-06-24T12:00:07Z | Поступление на расчетный счет 00000000028 от 24.06.2019 12:00:07 | 0 / 0 | 877000 | аналитика: Лайсвуд, ООО\n118. 2019-06-17T12:10:24Z | Поступление на расчетный счет 00000000027 от 17.06.2019 12:10:24 | 0 / 0 | 9500644.3 | аналитика: Департамент капитального ремонта города Москвы.\n119. 2019-06-17T12:10:23Z | Поступление на расчетный счет 00000000026 от 17.06.2019 12:10:23 | 0 / 0 | 6369341.5 | аналитика: Департамент капитального ремонта города Москвы.\n120. 2019-06-13T12:00:01Z | Поступление на расчетный счет 00000000025 от 13.06.2019 12:00:01 | 0 / 0 | 20000 | аналитика: МНН\n121. 2019-06-10T17:03:15Z | Поступление на расчетный счет 00000000024 от 10.06.2019 17:03:15 | 0 / 0 | 7714130 | аналитика: МОСКОВСКИЙ ФИЛИАЛ ООО КБ\\МЕГАПОЛИС\\\n122. 2019-06-07T13:19:06Z | Поступление на расчетный счет 00000000023 от 07.06.2019 13:19:06 | 0 / 0 | 13590525.6 | аналитика: Департамент капитального ремонта города Москвы.\n123. 2019-06-07T13:19:05Z | Поступление на расчетный счет 00000000022 от 07.06.2019 13:19:05 | 0 / 0 | 3874887.07 | аналитика: Департамент капитального ремонта города Москвы.\n124. 2019-06-07T13:19:04Z | Поступление на расчетный счет 00000000021 от 07.06.2019 13:19:04 | 0 / 0 | 386923.5 | аналитика: Департамент капитального ремонта города Москвы.", + "assistant_reply_first_line": "Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу.", + "expected_intent": null, + "actual_intent": "bank_operations_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_bank_operations_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "rows_fetched": 1000, + "rows_matched": 124, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-MevPGKr0Lp", + "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", + "shape_not_detected", + "bank_ops_by_counterparty_signal_detected", + "anchor_not_matched_fallback_rows" + ], + "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_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": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "mcp_call_status": "matched_non_empty", + "rows_fetched": 1000, + "raw_rows_received": 1000, + "rows_after_account_scope": 124, + "rows_after_recipe_filter": 0, + "rows_materialized": 124, + "rows_matched": 124, + "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": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + }, + "error_code": null, + "error_message": null + }, + { + "index": 3, + "id": "R003", + "question": "Какие типы документов используются реже всего в базе?", + "session": null, + "session_id": "asst-2026-04-02_Address_ReverseVariations_BeforeFix-r003", + "status_code": 200, + "ok": true, + "elapsed_ms": 6057, + "reply_type": "factual", + "trace_id": "address-5JFiMpZboE", + "assistant_reply": "Профиль типов документов и разделов учета собран (movement-based aggregate).\nСтрок агрегата: 147.\nТоп типов документов (по числу уникальных регистраторов):\n1. Списание с расчетного счета: 2352 (52.6%)\n2. Поступление товаров и услуг: 486 (10.9%)\n3. Регламентная операция: 414 (9.3%)\n4. Поступление на расчетный счет: 323 (7.2%)\n5. Счет-фактура полученный: 261 (5.8%)\n6. Операция (бухгалтерский и налоговый учет): 147 (3.3%)\n7. Реализация товаров и услуг: 123 (2.8%)\n8. Отражение зарплаты в регламентированном учете: 87 (1.9%)\n9. Приходный кассовый ордер: 76 (1.7%)\n10. Расходный кассовый ордер: 73 (1.6%)", + "assistant_reply_first_line": "Профиль типов документов и разделов учета собран (movement-based aggregate).", + "expected_intent": null, + "actual_intent": "document_type_and_account_section_profile", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_document_type_and_account_section_profile_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 147, + "rows_matched": 147, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-5JFiMpZboE", + "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", + "document_type_and_account_section_profile_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": "document_type_and_account_section_profile", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_to": "2026-04-02" + }, + "missing_required_filters": [], + "selected_recipe": "address_document_type_and_account_section_profile_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "matched_non_empty", + "rows_fetched": 147, + "raw_rows_received": 147, + "rows_after_account_scope": 147, + "rows_after_recipe_filter": 147, + "rows_materialized": 147, + "rows_matched": 147, + "raw_row_keys_sample": [ + "Период", + "Регистратор", + "СчетДт", + "СчетКт", + "Сумма", + "Period", + "Registrator", + "AccountDt", + "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_SUMMARY", + "execution_lane": "address_query", + "llm_decomposition_applied": false, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "Pzk2HgXecjBlpN", + "llm_decomposition_effective_message": "Какие типы документов используются реже всего в базе?", + "llm_decomposition_reason": "normalized_fragment_same", + "fallback_rule_hit": null, + "sanitized_user_message": "какие типы документов используются реже всего в базе?", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "Pzk2HgXecjBlpN", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "Какие типы документов используются реже всего в базе?" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 4, + "id": "R004", + "question": "Какие разделы учета наименее заполнены?", + "session": null, + "session_id": "asst-2026-04-02_Address_ReverseVariations_BeforeFix-r004", + "status_code": 200, + "ok": true, + "elapsed_ms": 10610, + "reply_type": "clarification_required", + "trace_id": "apY-eOJF6ZJW1y", + "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.", + "assistant_reply_first_line": "Коротко: Наиболее вероятный механизм проблемы подтвержден частично и требует первичной проверки. Что сломано:", + "expected_intent": null, + "actual_intent": null, + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": null, + "mode_match": false, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": false, + "route_pass": false, + "route_health": "blocked_clarification", + "strict_policy": "route", + "strict_pass": false, + "selected_recipe": null, + "missing_required_filters": null, + "match_failure_stage": null, + "match_failure_reason": null, + "rows_fetched": null, + "rows_matched": null, + "mcp_call_status": null, + "limited_reason_category": null, + "llm_decomposition_applied": null, + "llm_decomposition_reason": null, + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "apY-eOJF6ZJW1y", + "prompt_version": "address_query_runtime_v1", + "schema_version": "v1", + "fallback_type": "clarification", + "route_summary": null, + "fragments": [], + "requirements_extracted": [ + { + "requirement_id": "R1", + "source_fragment_id": null, + "requirement_text": "Какие разделы учета наименее заполнены?", + "subject_tokens": [], + "status": "clarification_needed", + "route": null + } + ], + "coverage_report": { + "requirements_total": 1, + "requirements_covered": 0, + "requirements_uncovered": [], + "requirements_partially_covered": [], + "clarification_needed_for": [ + "R1" + ], + "out_of_scope_requirements": [] + }, + "routes": [], + "retrieval_status": [], + "retrieval_results": [], + "answer_grounding_check": { + "status": "no_grounded_answer", + "route_subject_match": true, + "missing_requirements": [ + "R1" + ], + "reasons": [ + "Ни одно требование не получило подтвержденного покрытия.", + "Нет explainable-сигналов why_included в результатах выборки.", + "Недостаточно покрытия required anchors для claim-bound grounding.", + "Недостаточно допустимого evidence для обоснованного ответа.", + "Targeted evidence acquisition РЅРµ дал допустимых попаданий РїРѕ claim target path." + ], + "why_included_summary": [], + "selection_reason_summary": [] + }, + "dropped_intent_segments": [], + "question_type_class": "why_breaks", + "company_anchors": { + "contract_numbers": [], + "document_numbers": [], + "dates": [], + "amounts": [], + "accounts": [], + "periods": [], + "document_types": [], + "all": [] + }, + "business_scope_raw": [], + "business_scope_resolved": [ + "company_specific_accounting" + ], + "company_grounding_applied": true, + "scope_resolution_reason": [ + "settlement_claim_company_scope_recovery" + ], + "company_scope_resolution_reason": [ + "settlement_claim_company_scope_recovery" + ], + "raw_time_anchor": null, + "raw_time_scope": null, + "resolved_time_anchor": null, + "resolved_primary_period": null, + "effective_primary_period": null, + "temporal_guard_input": null, + "temporal_alignment_status": "conflicting", + "temporal_resolution_source": "normalized_time_scope:missing", + "temporal_guard_basis": "none", + "temporal_guard_applied": false, + "temporal_guard_outcome": "passed", + "temporal_guard": { + "raw_time_anchor": null, + "raw_time_scope": null, + "resolved_time_anchor": null, + "resolved_primary_period": null, + "effective_primary_period": null, + "temporal_guard_input": null, + "temporal_alignment_status": "conflicting", + "temporal_resolution_source": "normalized_time_scope:missing", + "temporal_guard_basis": "none", + "temporal_guard_applied": false, + "temporal_guard_outcome": "passed", + "primary_period_window": null, + "allowed_context_window": null, + "controlled_temporal_expansion_enabled": false, + "context_expansion_reasons_allowed": [ + "prehistory", + "carryover", + "post_period_closure", + "long_running_contract_context" + ], + "normalized_anchor_drift_detected": false, + "reason_codes": [ + "missing_resolved_primary_period" + ] + }, + "raw_numeric_tokens": [], + "classified_numeric_tokens": [], + "rejected_as_non_accounts": [], + "resolved_account_anchors": [], + "domain_polarity_guard": { + "applied": false, + "polarity": "not_applicable", + "outcome": "not_applicable", + "supplier_score": 0, + "customer_score": 0, + "account_scope": [], + "raw_numeric_tokens": [], + "classified_numeric_tokens": [], + "rejected_as_non_accounts": [], + "resolved_account_anchors": [], + "rejected_problem_units": 0, + "rejected_evidence": 0, + "critical_contradiction": false, + "reason_codes": [] + }, + "claim_anchor_audit": { + "claim_type": "prove_settlement_closure_state", + "settlement_role": "unknown", + "settlement_role_resolution_reason": [ + "settlement_role_resolved_unknown" + ], + "polarity_resolution_status": "unknown", + "required_anchors": [ + "period", + "account_scope", + "counterparty_scope_or_contract", + "closure_signal" + ], + "resolved_anchors": { + "period": [], + "account_scope": [], + "amounts": [], + "contract": [], + "document_numbers": [], + "document_types": [], + "counterparty_scope": [], + "advance_signal": [], + "closure_signal": [], + "vat_signal": [], + "chain_signal": [], + "close_signal": [], + "cost_scope": [], + "rbp_signal": [], + "writeoff_signal": [], + "fixed_asset_signal": [], + "amortization_signal": [], + "expected_fa_set": [], + "actual_fa_set": [] + }, + "missing_anchors": [ + "period", + "account_scope", + "counterparty_scope_or_contract", + "closure_signal" + ], + "claim_anchor_resolution_rate": 0, + "primary_period": null, + "allowed_context_window": null, + "context_expansion_reasons_allowed": [ + "prehistory", + "carryover", + "post_period_closure", + "long_running_contract_context" + ], + "reason_codes": [ + "claim_missing_required_anchors", + "claim_anchor_resolution_low", + "unresolved_supplier_customer_polarity" + ] + }, + "settlement_role": "unknown", + "settlement_role_resolution_reason": [ + "settlement_role_resolved_unknown" + ], + "polarity_resolution_status": "unknown", + "targeted_evidence_acquisition": { + "claim_type": "prove_settlement_closure_state", + "required_checks": [ + "payment_document_found", + "contract_matched", + "settlement_object_matched", + "closing_document_found", + "register_closure_entry_found", + "posting_link_found" + ], + "check_status": { + "payment_document_found": "not_found", + "contract_matched": "not_found", + "settlement_object_matched": "not_found", + "closing_document_found": "not_found", + "register_closure_entry_found": "not_found", + "posting_link_found": "not_found" + }, + "targeted_item_hits": 0, + "targeted_evidence_hits": 0, + "targeted_evidence_hit_rate": 0, + "targeted_evidence_source_refs": [], + "reason_codes": [ + "targeted_evidence_not_found", + "targeted_evidence_hit_rate_low" + ] + }, + "evidence_admissibility_gate": { + "candidate_evidence_total": 0, + "admissible_evidence_count": 0, + "rejected_evidence_count": 0, + "rejected_item_count": 0, + "reject_breakdown": { + "wrong_period": 0, + "wrong_domain": 0, + "wrong_account_scope": 0, + "weak_source_mapping": 0, + "zero_live_match": 0, + "future_dated_or_out_of_window": 0 + }, + "category_breakdown": { + "hard_evidence": 0, + "supporting_signal": 0, + "inadmissible_noise": 0 + }, + "reason_codes": [ + "no_admissible_evidence_for_grounded_answer" + ] + }, + "eligibility_time_basis": "none", + "grounded_answer_eligibility_guard": { + "eligible": false, + "temporal_passed": true, + "eligibility_time_basis": "none", + "business_scope_passed": true, + "polarity_passed": true, + "claim_anchors_passed": false, + "claim_anchor_resolution_rate": 0, + "missing_required_anchors": 4, + "admissible_evidence_count": 0, + "critical_contradiction": false, + "outcome": "limited_or_insufficient_evidence", + "grounding_mode": "limited_or_insufficient_evidence", + "reason_codes": [ + "claim_anchor_coverage_insufficient", + "admissible_evidence_count_zero", + "targeted_evidence_hit_rate_zero" + ] + }, + "problem_centric_answer_applied": false, + "problem_units_used_count": 0, + "problem_answer_mode": "stage1_policy_v11", + "answer_structure_v11": { + "schema_version": "answer_structure_v1_1", + "answer_summary": "Нужны уточнения: без сужения фокуса надежный вывод невозможен.", + "direct_answer": "Есть признаки проблемы, но без уточнений по периоду и объекту вывод ненадежен.", + "mechanism_block": { + "status": "unresolved", + "mechanism_notes": [], + "limitation_reason_codes": [] + }, + "evidence_block": { + "evidence_ids": [], + "source_refs": [], + "mechanism_notes": [], + "coverage_note": "coverage_partial_or_limited" + }, + "uncertainty_block": { + "open_uncertainties": [ + "R1", + "missing_anchor:period", + "missing_anchor:account", + "missing_anchor:document_or_object", + "missing_anchor:counterparty" + ], + "limitations": [ + "Ни одно требование не получило подтвержденного покрытия.", + "Нет explainable-сигналов why_included в результатах выборки.", + "Недостаточно покрытия required anchors для claim-bound grounding.", + "Недостаточно допустимого evidence для обоснованного ответа.", + "Targeted evidence acquisition РЅРµ дал допустимых попаданий РїРѕ claim target path." + ] + }, + "next_step_block": { + "recommended_actions": [ + "Дайте недостающие СЏРєРѕСЂСЏ (период/счет/объект), иначе сильный factual вывод невозможен." + ], + "clarification_questions": [ + "Уточните период проверки (например, июль 2020).", + "Уточните счет или РіСЂСѓРїРїСѓ счетов (например, 19, 60, 62).", + "Укажите документ/GUID/конкретный объект для трассировки.", + "Укажите контрагента или РіСЂСѓРїРїСѓ контрагентов.", + "Закройте уточнения для требований: R1." + ] + } + }, + "investigation_state_snapshot": { + "schema_version": "investigation_state_v1", + "session_id": "asst-2026-04-02_Address_ReverseVariations_BeforeFix-r004", + "status": "active", + "turn_index": 1, + "updated_at": "2026-04-02T17:37:24.517Z", + "question_id": "msg-JafenTpNZ2", + "question_scope_id": "s:какие разделы учета наименее заполнены?", + "scope_origin": "underspecified", + "focus": { + "domain": null, + "period": null, + "primary_accounts": [], + "active_query_subject": "Какие разделы учета наименее заполнены?" + }, + "narrowing_status": "unknown", + "evidence_refs": [], + "open_uncertainties": [ + "clarify:R1" + ], + "last_answer_mode": "clarification_required", + "followup_context": { + "previous_question_id": null, + "last_user_message": "Какие разделы учета наименее заполнены?", + "referenced_requirement_ids": [ + "R1" + ], + "active_domain": null, + "active_requirement_ids": [ + "R1" + ], + "uncovered_requirement_ids": [ + "R1" + ], + "last_problem_unit_id": null, + "settlement_next_actions": [], + "evidence_summary": [], + "question_scope_id": "s:какие разделы учета наименее заполнены?", + "scope_origin": "underspecified" + }, + "query_mode_hint": "investigation_candidate" + }, + "normalized": null + }, + "error_code": null, + "error_message": null + } + ] +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_ReverseVariations_BeforeFix/response_audit.md b/docs/ADDRESS/runs/2026-04-02_Address_ReverseVariations_BeforeFix/response_audit.md new file mode 100644 index 0000000..908f9e3 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_ReverseVariations_BeforeFix/response_audit.md @@ -0,0 +1,8 @@ +# Response Audit: 2026-04-02_Address_ReverseVariations_BeforeFix + +| id | strict | route_health | reply_type | intent | limited_reason | question | assistant_first_line | +|---|---|---|---|---|---|---|---| +| R001 | True | ok_or_factual | factual | list_documents_by_counterparty | None | Какой год самый пассивный по количеству документов? | Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу. | +| R002 | True | ok_or_factual | factual | bank_operations_by_counterparty | None | Какой месяц самый пассивный по количеству операций? | Точный якорь не подтвердился в текущем окне live-данных; показаны ближайшие доступные документы/операции по выбранному типу. | +| R003 | True | ok_or_factual | factual | document_type_and_account_section_profile | None | Какие типы документов используются реже всего в базе? | Профиль типов документов и разделов учета собран (movement-based aggregate). | +| R004 | False | blocked_clarification | clarification_required | None | None | Какие разделы учета наименее заполнены? | Коротко: Наиболее вероятный механизм проблемы подтвержден частично и требует первичной проверки. Что сломано: | diff --git a/docs/ADDRESS/runs/2026-04-02_Address_ReverseVariations_BeforeFix/run_summary.json b/docs/ADDRESS/runs/2026-04-02_Address_ReverseVariations_BeforeFix/run_summary.json new file mode 100644 index 0000000..9b96bf3 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_ReverseVariations_BeforeFix/run_summary.json @@ -0,0 +1,51 @@ +{ + "run_id": "2026-04-02_Address_ReverseVariations_BeforeFix", + "generated_at": "2026-04-02T20:37:24", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\temp_reverse_variations_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", + "strict_policy": "route", + "totals": { + "questions_total": 4, + "ok_200_count": 4, + "semantic_pass_count": 3, + "semantic_pass_rate": 0.75, + "route_pass_count": 3, + "route_pass_rate": 0.75, + "strict_pass_count": 3, + "strict_pass_rate": 0.75, + "factual_count": 3, + "partial_coverage_count": 0, + "clarification_required_count": 1, + "http_error_count": 0, + "llm_decomposition_applied_count": 1, + "avg_elapsed_ms": 6469 + }, + "distributions": { + "reply_type": { + "factual": 3, + "clarification_required": 1 + }, + "actual_intent": { + "list_documents_by_counterparty": 1, + "bank_operations_by_counterparty": 1, + "document_type_and_account_section_profile": 1, + "None": 1 + }, + "actual_mode": { + "address_query": 3, + "None": 1 + }, + "mcp_call_status": { + "matched_non_empty": 3, + "None": 1 + }, + "limited_reason_category": {}, + "route_health": { + "ok_or_factual": 3, + "blocked_clarification": 1 + } + } +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_SupplierClient_Followup_AfterFix/README.md b/docs/ADDRESS/runs/2026-04-02_Address_SupplierClient_Followup_AfterFix/README.md new file mode 100644 index 0000000..c23fdae --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_SupplierClient_Followup_AfterFix/README.md @@ -0,0 +1,28 @@ +# 2026-04-02_Address_SupplierClient_Followup_AfterFix + +Generated at: 2026-04-02T21:26:34 +Questions file: X:\1C\NDC_1C\docs\ADDRESS\question_sets\temp_supplier_client_followup_targeted_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 +Strict policy: factual + +## Totals +- questions_total: 3 +- ok_200_count: 3 +- semantic_pass_count: 3 +- semantic_pass_rate: 1.0 +- route_pass_count: 3 +- route_pass_rate: 1.0 +- strict_pass_count: 3 +- strict_pass_rate: 1.0 +- factual_count: 3 +- partial_coverage_count: 0 +- clarification_required_count: 0 +- http_error_count: 0 +- llm_decomposition_applied_count: 0 +- avg_elapsed_ms: 992.3 + +## Files +- run_summary.json +- full_live_results.json +- failures_only.json diff --git a/docs/ADDRESS/runs/2026-04-02_Address_SupplierClient_Followup_AfterFix/failures_only.json b/docs/ADDRESS/runs/2026-04-02_Address_SupplierClient_Followup_AfterFix/failures_only.json new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_SupplierClient_Followup_AfterFix/failures_only.json @@ -0,0 +1 @@ +[] diff --git a/docs/ADDRESS/runs/2026-04-02_Address_SupplierClient_Followup_AfterFix/full_live_results.json b/docs/ADDRESS/runs/2026-04-02_Address_SupplierClient_Followup_AfterFix/full_live_results.json new file mode 100644 index 0000000..c8f736c --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_SupplierClient_Followup_AfterFix/full_live_results.json @@ -0,0 +1,473 @@ +{ + "run_id": "2026-04-02_Address_SupplierClient_Followup_AfterFix", + "generated_at": "2026-04-02T21:26:34", + "summary": { + "run_id": "2026-04-02_Address_SupplierClient_Followup_AfterFix", + "generated_at": "2026-04-02T21:26:34", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\temp_supplier_client_followup_targeted_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", + "strict_policy": "factual", + "totals": { + "questions_total": 3, + "ok_200_count": 3, + "semantic_pass_count": 3, + "semantic_pass_rate": 1.0, + "route_pass_count": 3, + "route_pass_rate": 1.0, + "strict_pass_count": 3, + "strict_pass_rate": 1.0, + "factual_count": 3, + "partial_coverage_count": 0, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_applied_count": 0, + "avg_elapsed_ms": 992.3 + }, + "distributions": { + "reply_type": { + "factual": 3 + }, + "actual_intent": { + "counterparty_population_and_roles": 3 + }, + "actual_mode": { + "address_query": 3 + }, + "mcp_call_status": { + "matched_non_empty": 3 + }, + "limited_reason_category": {}, + "route_health": { + "ok_or_factual": 3 + } + } + }, + "rows": [ + { + "index": 1, + "id": "Q001", + "question": "скок поставщиков в базе", + "session": "supplier_client_followup_2026-04-02", + "session_id": "asst-2026-04-02_Address_SupplierClient_Followup_AfterFix-supplier_client_followup_2026-04-02", + "status_code": 200, + "ok": true, + "elapsed_ms": 1032, + "reply_type": "factual", + "trace_id": "address-G2kKyeAeJc", + "assistant_reply": "Профиль контрагентов собран (catalog + bank-doc activity aggregate).\nСтрок агрегата: 5.\nПоставщиков (только supplier-роль): 79.", + "assistant_reply_first_line": "Профиль контрагентов собран (catalog + bank-doc activity aggregate).", + "expected_intent": "counterparty_population_and_roles", + "actual_intent": "counterparty_population_and_roles", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": "factual", + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "factual", + "strict_pass": true, + "selected_recipe": "address_counterparty_population_roles_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-G2kKyeAeJc", + "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": [ + "management_profile_signal_detected", + "shape_not_detected", + "counterparty_population_and_roles_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": "counterparty_population_and_roles", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_to": "2026-04-02" + }, + "missing_required_filters": [], + "selected_recipe": "address_counterparty_population_roles_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "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", + "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_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": "скок поставщиков в базе", + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "sanitized_user_message": "скок поставщиков в базе", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + }, + "error_code": null, + "error_message": null + }, + { + "index": 2, + "id": "Q002", + "question": "скок клиентов", + "session": "supplier_client_followup_2026-04-02", + "session_id": "asst-2026-04-02_Address_SupplierClient_Followup_AfterFix-supplier_client_followup_2026-04-02", + "status_code": 200, + "ok": true, + "elapsed_ms": 935, + "reply_type": "factual", + "trace_id": "address-0bXRNhajpz", + "assistant_reply": "Профиль контрагентов собран (catalog + bank-doc activity aggregate).\nСтрок агрегата: 5.\nЗаказчиков (только customer-роль): 14.", + "assistant_reply_first_line": "Профиль контрагентов собран (catalog + bank-doc activity aggregate).", + "expected_intent": "counterparty_population_and_roles", + "actual_intent": "counterparty_population_and_roles", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": "factual", + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "factual", + "strict_pass": true, + "selected_recipe": "address_counterparty_population_roles_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-0bXRNhajpz", + "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": [ + "management_profile_signal_detected", + "shape_not_detected", + "counterparty_population_and_roles_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": "counterparty_population_and_roles", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_to": "2026-04-02" + }, + "missing_required_filters": [], + "selected_recipe": "address_counterparty_population_roles_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "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", + "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_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": "скок клиентов", + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "sanitized_user_message": "скок клиентов", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + }, + "error_code": null, + "error_message": null + }, + { + "index": 3, + "id": "Q003", + "question": "скок клиентов в базе", + "session": null, + "session_id": "asst-2026-04-02_Address_SupplierClient_Followup_AfterFix-q003", + "status_code": 200, + "ok": true, + "elapsed_ms": 1010, + "reply_type": "factual", + "trace_id": "address-cceqFCqC29", + "assistant_reply": "Профиль контрагентов собран (catalog + bank-doc activity aggregate).\nСтрок агрегата: 5.\nЗаказчиков (только customer-роль): 14.", + "assistant_reply_first_line": "Профиль контрагентов собран (catalog + bank-doc activity aggregate).", + "expected_intent": "counterparty_population_and_roles", + "actual_intent": "counterparty_population_and_roles", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": "factual", + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "factual", + "strict_pass": true, + "selected_recipe": "address_counterparty_population_roles_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-cceqFCqC29", + "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": [ + "management_profile_signal_detected", + "shape_not_detected", + "counterparty_population_and_roles_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": "counterparty_population_and_roles", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_to": "2026-04-02" + }, + "missing_required_filters": [], + "selected_recipe": "address_counterparty_population_roles_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "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", + "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_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": "скок клиентов в базе", + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "sanitized_user_message": "скок клиентов в базе", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + }, + "error_code": null, + "error_message": null + } + ] +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_SupplierClient_Followup_AfterFix/response_audit.md b/docs/ADDRESS/runs/2026-04-02_Address_SupplierClient_Followup_AfterFix/response_audit.md new file mode 100644 index 0000000..a8787f2 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_SupplierClient_Followup_AfterFix/response_audit.md @@ -0,0 +1,7 @@ +# Response Audit: 2026-04-02_Address_SupplierClient_Followup_AfterFix + +| id | strict | route_health | reply_type | intent | limited_reason | question | assistant_first_line | +|---|---|---|---|---|---|---|---| +| Q001 | True | ok_or_factual | factual | counterparty_population_and_roles | None | скок поставщиков в базе | Профиль контрагентов собран (catalog + bank-doc activity aggregate). | +| Q002 | True | ok_or_factual | factual | counterparty_population_and_roles | None | скок клиентов | Профиль контрагентов собран (catalog + bank-doc activity aggregate). | +| Q003 | True | ok_or_factual | factual | counterparty_population_and_roles | None | скок клиентов в базе | Профиль контрагентов собран (catalog + bank-doc activity aggregate). | diff --git a/docs/ADDRESS/runs/2026-04-02_Address_SupplierClient_Followup_AfterFix/run_summary.json b/docs/ADDRESS/runs/2026-04-02_Address_SupplierClient_Followup_AfterFix/run_summary.json new file mode 100644 index 0000000..b93749a --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_SupplierClient_Followup_AfterFix/run_summary.json @@ -0,0 +1,44 @@ +{ + "run_id": "2026-04-02_Address_SupplierClient_Followup_AfterFix", + "generated_at": "2026-04-02T21:26:34", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\temp_supplier_client_followup_targeted_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", + "strict_policy": "factual", + "totals": { + "questions_total": 3, + "ok_200_count": 3, + "semantic_pass_count": 3, + "semantic_pass_rate": 1.0, + "route_pass_count": 3, + "route_pass_rate": 1.0, + "strict_pass_count": 3, + "strict_pass_rate": 1.0, + "factual_count": 3, + "partial_coverage_count": 0, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_applied_count": 0, + "avg_elapsed_ms": 992.3 + }, + "distributions": { + "reply_type": { + "factual": 3 + }, + "actual_intent": { + "counterparty_population_and_roles": 3 + }, + "actual_mode": { + "address_query": 3 + }, + "mcp_call_status": { + "matched_non_empty": 3 + }, + "limited_reason_category": {}, + "route_health": { + "ok_or_factual": 3 + } + } +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_SupplierCount_Targeted_AfterFix/README.md b/docs/ADDRESS/runs/2026-04-02_Address_SupplierCount_Targeted_AfterFix/README.md new file mode 100644 index 0000000..87c3f78 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_SupplierCount_Targeted_AfterFix/README.md @@ -0,0 +1,28 @@ +# 2026-04-02_Address_SupplierCount_Targeted_AfterFix + +Generated at: 2026-04-02T21:19:30 +Questions file: X:\1C\NDC_1C\docs\ADDRESS\question_sets\temp_supplier_count_targeted_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 +Strict policy: factual + +## Totals +- questions_total: 4 +- ok_200_count: 4 +- semantic_pass_count: 4 +- semantic_pass_rate: 1.0 +- route_pass_count: 4 +- route_pass_rate: 1.0 +- strict_pass_count: 4 +- strict_pass_rate: 1.0 +- factual_count: 4 +- partial_coverage_count: 0 +- clarification_required_count: 0 +- http_error_count: 0 +- llm_decomposition_applied_count: 1 +- avg_elapsed_ms: 2184 + +## Files +- run_summary.json +- full_live_results.json +- failures_only.json diff --git a/docs/ADDRESS/runs/2026-04-02_Address_SupplierCount_Targeted_AfterFix/failures_only.json b/docs/ADDRESS/runs/2026-04-02_Address_SupplierCount_Targeted_AfterFix/failures_only.json new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_SupplierCount_Targeted_AfterFix/failures_only.json @@ -0,0 +1 @@ +[] diff --git a/docs/ADDRESS/runs/2026-04-02_Address_SupplierCount_Targeted_AfterFix/full_live_results.json b/docs/ADDRESS/runs/2026-04-02_Address_SupplierCount_Targeted_AfterFix/full_live_results.json new file mode 100644 index 0000000..6b30ba9 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_SupplierCount_Targeted_AfterFix/full_live_results.json @@ -0,0 +1,622 @@ +{ + "run_id": "2026-04-02_Address_SupplierCount_Targeted_AfterFix", + "generated_at": "2026-04-02T21:19:30", + "summary": { + "run_id": "2026-04-02_Address_SupplierCount_Targeted_AfterFix", + "generated_at": "2026-04-02T21:19:30", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\temp_supplier_count_targeted_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", + "strict_policy": "factual", + "totals": { + "questions_total": 4, + "ok_200_count": 4, + "semantic_pass_count": 4, + "semantic_pass_rate": 1.0, + "route_pass_count": 4, + "route_pass_rate": 1.0, + "strict_pass_count": 4, + "strict_pass_rate": 1.0, + "factual_count": 4, + "partial_coverage_count": 0, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_applied_count": 1, + "avg_elapsed_ms": 2184 + }, + "distributions": { + "reply_type": { + "factual": 4 + }, + "actual_intent": { + "counterparty_population_and_roles": 4 + }, + "actual_mode": { + "address_query": 4 + }, + "mcp_call_status": { + "matched_non_empty": 4 + }, + "limited_reason_category": {}, + "route_health": { + "ok_or_factual": 4 + } + } + }, + "rows": [ + { + "index": 1, + "id": "Q001", + "question": "скока всего контрагентов в базе", + "session": "supplier_count_targeted_2026-04-02", + "session_id": "asst-2026-04-02_Address_SupplierCount_Targeted_AfterFix-supplier_count_targeted_2026-04-02", + "status_code": 200, + "ok": true, + "elapsed_ms": 5736, + "reply_type": "factual", + "trace_id": "address-LEbzk0ap7T", + "assistant_reply": "Профиль контрагентов собран (catalog + bank-doc activity aggregate).\nСтрок агрегата: 5.\nВсего уникальных контрагентов в базе: 139.", + "assistant_reply_first_line": "Профиль контрагентов собран (catalog + bank-doc activity aggregate).", + "expected_intent": "counterparty_population_and_roles", + "actual_intent": "counterparty_population_and_roles", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": "factual", + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "factual", + "strict_pass": true, + "selected_recipe": "address_counterparty_population_roles_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-LEbzk0ap7T", + "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", + "object_signal_detected", + "counterparty_population_and_roles_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": "counterparty_population_and_roles", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_to": "2026-04-02" + }, + "missing_required_filters": [], + "selected_recipe": "address_counterparty_population_roles_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "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", + "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_SUMMARY", + "execution_lane": "address_query", + "llm_decomposition_applied": true, + "llm_decomposition_attempted": true, + "llm_provider_used": "local", + "llm_decomposition_trace_id": "FGjjCV9fhrrXCU", + "llm_decomposition_effective_message": "сколько всего контрагентов в базе данных", + "llm_decomposition_reason": "normalized_fragment_applied", + "fallback_rule_hit": null, + "sanitized_user_message": "скока всего контрагентов в базе", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "FGjjCV9fhrrXCU", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "сколько всего контрагентов в базе данных" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 2, + "id": "Q002", + "question": "скока поставщиков", + "session": "supplier_count_targeted_2026-04-02", + "session_id": "asst-2026-04-02_Address_SupplierCount_Targeted_AfterFix-supplier_count_targeted_2026-04-02", + "status_code": 200, + "ok": true, + "elapsed_ms": 987, + "reply_type": "factual", + "trace_id": "address-DPK8Lt6Fi1", + "assistant_reply": "Профиль контрагентов собран (catalog + bank-doc activity aggregate).\nСтрок агрегата: 5.\nПоставщиков (только supplier-роль): 79.", + "assistant_reply_first_line": "Профиль контрагентов собран (catalog + bank-doc activity aggregate).", + "expected_intent": "counterparty_population_and_roles", + "actual_intent": "counterparty_population_and_roles", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": "factual", + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "factual", + "strict_pass": true, + "selected_recipe": "address_counterparty_population_roles_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-DPK8Lt6Fi1", + "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", + "counterparty_population_and_roles_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": "counterparty_population_and_roles", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_to": "2026-04-02" + }, + "missing_required_filters": [], + "selected_recipe": "address_counterparty_population_roles_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "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", + "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_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": "скока поставщиков", + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "sanitized_user_message": "скока поставщиков", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + }, + "error_code": null, + "error_message": null + }, + { + "index": 3, + "id": "Q003", + "question": "скока поставщиков в базе", + "session": "supplier_count_targeted_2026-04-02", + "session_id": "asst-2026-04-02_Address_SupplierCount_Targeted_AfterFix-supplier_count_targeted_2026-04-02", + "status_code": 200, + "ok": true, + "elapsed_ms": 1022, + "reply_type": "factual", + "trace_id": "address-B5wpIYr-gj", + "assistant_reply": "Профиль контрагентов собран (catalog + bank-doc activity aggregate).\nСтрок агрегата: 5.\nПоставщиков (только supplier-роль): 79.", + "assistant_reply_first_line": "Профиль контрагентов собран (catalog + bank-doc activity aggregate).", + "expected_intent": "counterparty_population_and_roles", + "actual_intent": "counterparty_population_and_roles", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": "factual", + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "factual", + "strict_pass": true, + "selected_recipe": "address_counterparty_population_roles_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-B5wpIYr-gj", + "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", + "counterparty_population_and_roles_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": "counterparty_population_and_roles", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_to": "2026-04-02" + }, + "missing_required_filters": [], + "selected_recipe": "address_counterparty_population_roles_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "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", + "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_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": "скока поставщиков в базе", + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "sanitized_user_message": "скока поставщиков в базе", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + }, + "error_code": null, + "error_message": null + }, + { + "index": 4, + "id": "Q004", + "question": "скока заказчиков в базе", + "session": null, + "session_id": "asst-2026-04-02_Address_SupplierCount_Targeted_AfterFix-q004", + "status_code": 200, + "ok": true, + "elapsed_ms": 991, + "reply_type": "factual", + "trace_id": "address-vtZrZJfecc", + "assistant_reply": "Профиль контрагентов собран (catalog + bank-doc activity aggregate).\nСтрок агрегата: 5.\nЗаказчиков (только customer-роль): 14.", + "assistant_reply_first_line": "Профиль контрагентов собран (catalog + bank-doc activity aggregate).", + "expected_intent": "counterparty_population_and_roles", + "actual_intent": "counterparty_population_and_roles", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": "factual", + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "factual", + "strict_pass": true, + "selected_recipe": "address_counterparty_population_roles_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 5, + "rows_matched": 5, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "debug_payload": { + "trace_id": "address-vtZrZJfecc", + "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": [ + "management_profile_signal_detected", + "shape_not_detected", + "counterparty_population_and_roles_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": "counterparty_population_and_roles", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_to": "2026-04-02" + }, + "missing_required_filters": [], + "selected_recipe": "address_counterparty_population_roles_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "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", + "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_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": "скока заказчиков в базе", + "llm_decomposition_reason": "not_address_like", + "fallback_rule_hit": null, + "sanitized_user_message": "скока заказчиков в базе", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": null + }, + "error_code": null, + "error_message": null + } + ] +} diff --git a/docs/ADDRESS/runs/2026-04-02_Address_SupplierCount_Targeted_AfterFix/response_audit.md b/docs/ADDRESS/runs/2026-04-02_Address_SupplierCount_Targeted_AfterFix/response_audit.md new file mode 100644 index 0000000..42b6098 --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_SupplierCount_Targeted_AfterFix/response_audit.md @@ -0,0 +1,8 @@ +# Response Audit: 2026-04-02_Address_SupplierCount_Targeted_AfterFix + +| id | strict | route_health | reply_type | intent | limited_reason | question | assistant_first_line | +|---|---|---|---|---|---|---|---| +| Q001 | True | ok_or_factual | factual | counterparty_population_and_roles | None | скока всего контрагентов в базе | Профиль контрагентов собран (catalog + bank-doc activity aggregate). | +| Q002 | True | ok_or_factual | factual | counterparty_population_and_roles | None | скока поставщиков | Профиль контрагентов собран (catalog + bank-doc activity aggregate). | +| Q003 | True | ok_or_factual | factual | counterparty_population_and_roles | None | скока поставщиков в базе | Профиль контрагентов собран (catalog + bank-doc activity aggregate). | +| Q004 | True | ok_or_factual | factual | counterparty_population_and_roles | None | скока заказчиков в базе | Профиль контрагентов собран (catalog + bank-doc activity aggregate). | diff --git a/docs/ADDRESS/runs/2026-04-02_Address_SupplierCount_Targeted_AfterFix/run_summary.json b/docs/ADDRESS/runs/2026-04-02_Address_SupplierCount_Targeted_AfterFix/run_summary.json new file mode 100644 index 0000000..b35b3ae --- /dev/null +++ b/docs/ADDRESS/runs/2026-04-02_Address_SupplierCount_Targeted_AfterFix/run_summary.json @@ -0,0 +1,44 @@ +{ + "run_id": "2026-04-02_Address_SupplierCount_Targeted_AfterFix", + "generated_at": "2026-04-02T21:19:30", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\temp_supplier_count_targeted_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", + "strict_policy": "factual", + "totals": { + "questions_total": 4, + "ok_200_count": 4, + "semantic_pass_count": 4, + "semantic_pass_rate": 1.0, + "route_pass_count": 4, + "route_pass_rate": 1.0, + "strict_pass_count": 4, + "strict_pass_rate": 1.0, + "factual_count": 4, + "partial_coverage_count": 0, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_applied_count": 1, + "avg_elapsed_ms": 2184 + }, + "distributions": { + "reply_type": { + "factual": 4 + }, + "actual_intent": { + "counterparty_population_and_roles": 4 + }, + "actual_mode": { + "address_query": 4 + }, + "mcp_call_status": { + "matched_non_empty": 4 + }, + "limited_reason_category": {}, + "route_health": { + "ok_or_factual": 4 + } + } +} diff --git a/docs/ADDRESS/runs/Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02/README.md b/docs/ADDRESS/runs/Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02/README.md new file mode 100644 index 0000000..4ce091e --- /dev/null +++ b/docs/ADDRESS/runs/Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02/README.md @@ -0,0 +1,33 @@ +# Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02 + +Generated at: 2026-04-02T22:30:52 +Questions file: X:\1C\NDC_1C\docs\ADDRESS\question_sets\temp_contracts_zhukovka_targeted_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 +Strict policy: route + +## Totals +- questions_total: 3 +- ok_200_count: 3 +- semantic_pass_count: 3 +- semantic_pass_rate: 1.0 +- route_pass_count: 0 +- route_pass_rate: 0.0 +- strict_pass_count: 0 +- strict_pass_rate: 0.0 +- factual_count: 0 +- partial_coverage_count: 3 +- clarification_required_count: 0 +- http_error_count: 0 +- llm_decomposition_attempted_count: 3 +- llm_decomposition_applied_count: 1 +- llm_fallback_count: 0 +- llm_fallback_rate: 0.0 +- tool_gate_blocked_count: 0 +- tool_gate_blocked_rate: 0.0 +- avg_elapsed_ms: 7047.3 + +## Files +- run_summary.json +- full_live_results.json +- failures_only.json diff --git a/docs/ADDRESS/runs/Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02/failures_only.json b/docs/ADDRESS/runs/Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02/failures_only.json new file mode 100644 index 0000000..f767409 --- /dev/null +++ b/docs/ADDRESS/runs/Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02/failures_only.json @@ -0,0 +1,539 @@ +[ + { + "index": 1, + "id": "Q_CONTRACTS_ZHUKOVKA", + "question": "покажи договора все по жуковке 51", + "session": null, + "session_id": "asst-Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02-q_contracts_zhukovka", + "status_code": 200, + "ok": true, + "elapsed_ms": 6945, + "reply_type": "partial_coverage", + "trace_id": "address-HNM484NYqC", + "assistant_reply": "Не удалось выполнить адресный live-запрос в V1.\nПричина: live MCP вызов завершился ошибкой.\nЧто нужно уточнить: {ВнешняяОбработка.MCPToolkit.Форма.Форма.Форма(1989)}: Ошибка при вызове метода контекста (Выполнить): {(3, 5)}: Операция не разрешена в предложении \"УПОРЯДОЧИТЬ\"\n<>ПРЕДСТАВЛЕНИЕ(Договоры.Ссылка) КАК Регистратор,.", + "assistant_reply_first_line": "Не удалось выполнить адресный live-запрос в V1.", + "expected_intent": "list_contracts_by_counterparty", + "actual_intent": "list_contracts_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": false, + "route_health": "blocked_execution_error", + "strict_policy": "route", + "strict_pass": false, + "selected_recipe": "address_contracts_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 0, + "rows_matched": 0, + "mcp_call_status": "error", + "limited_reason_category": "execution_error", + "llm_decomposition_attempted": true, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "llm_canonical_candidate_detected": true, + "fallback_rule_hit": null, + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "predecompose_contract_intent": "list_contracts_by_counterparty", + "predecompose_contract_aggregation_profile": "list_lookup", + "predecompose_contract_period_scope": "unspecified", + "debug_payload": { + "trace_id": "address-HNM484NYqC", + "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", + "contracts_by_counterparty_signal_detected", + "{ВнешняяОбработка.MCPToolkit.Форма.Форма.Форма(1989)}: Ошибка при вызове метода контекста (Выполнить): {(3, 5)}: Операция не разрешена в предложении \"УПОРЯДОЧИТЬ\"\n<>ПРЕДСТАВЛЕНИЕ(Договоры.Ссылка) КАК Регистратор," + ], + "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": "list_contracts_by_counterparty", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "counterparty": "жуковке 51", + "contract": "все" + }, + "missing_required_filters": [], + "selected_recipe": "address_contracts_by_counterparty_v1", + "mcp_call_status_legacy": "error", + "account_scope_mode": "preferred", + "account_scope_fallback_applied": false, + "anchor_type": "counterparty", + "anchor_value_raw": "жуковке 51", + "anchor_value_resolved": "жуковке 51", + "resolver_confidence": "medium", + "ambiguity_count": 0, + "match_failure_stage": "none", + "match_failure_reason": null, + "mcp_call_status": "error", + "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": "UNKNOWN", + "limited_reason_category": "execution_error", + "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": "6vWM_5n83Nd59p", + "llm_decomposition_effective_message": "покажи договора все по жуковке 51", + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "llm_canonical_candidate_detected": true, + "llm_predecompose_contract": { + "schema_version": "address_llm_predecompose_contract_v1", + "source_message": "покажи договора все по жуковке 51", + "canonical_message": "покажи договора все по жуковке 51", + "mode": "address_query", + "mode_confidence": "high", + "query_shape": "OBJECT_LOOKUP", + "query_shape_confidence": "medium", + "intent": "list_contracts_by_counterparty", + "intent_confidence": "medium", + "entities": { + "account": null, + "counterparty": "жуковке 51", + "contract": "все", + "document_type": null, + "document_ref": null, + "organization": null + }, + "period": { + "scope": "unspecified", + "period_from": null, + "period_to": null, + "as_of_date": null, + "has_explicit_period": false + }, + "aggregation_profile": "list_lookup" + }, + "fallback_rule_hit": null, + "sanitized_user_message": "покажи договора все по жуковке 51", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "6vWM_5n83Nd59p", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "покажи договора все по жуковке 51" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 2, + "id": "Q_DOCS_ZHUKOVKA", + "question": "покажи документы все по жуковке 51", + "session": null, + "session_id": "asst-Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02-q_docs_zhukovka", + "status_code": 200, + "ok": true, + "elapsed_ms": 7372, + "reply_type": "partial_coverage", + "trace_id": "address-BWZNeub9K9", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "assistant_reply_first_line": "В live-данных по текущему фильтру записи не найдены.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": false, + "route_health": "likely_blocked_route", + "strict_policy": "route", + "strict_pass": false, + "selected_recipe": "address_documents_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "rows_fetched": 1000, + "rows_matched": 0, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_attempted": true, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "llm_canonical_candidate_detected": true, + "fallback_rule_hit": null, + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "predecompose_contract_intent": "list_documents_by_counterparty", + "predecompose_contract_aggregation_profile": "list_lookup", + "predecompose_contract_period_scope": "unspecified", + "debug_payload": { + "trace_id": "address-BWZNeub9K9", + "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, + "account": "51", + "counterparty": "все" + }, + "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": "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": "empty_match", + "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": "9a9uKVMfRGHdzd", + "llm_decomposition_effective_message": "Показать все документы, связанные с контрагентом Жуковка и счетом 51.", + "llm_decomposition_reason": "normalized_fragment_applied", + "llm_canonical_candidate_detected": true, + "llm_predecompose_contract": { + "schema_version": "address_llm_predecompose_contract_v1", + "source_message": "покажи документы все по жуковке 51", + "canonical_message": "Показать все документы, связанные с контрагентом Жуковка и счетом 51.", + "mode": "address_query", + "mode_confidence": "high", + "query_shape": "DOCUMENT_LIST", + "query_shape_confidence": "medium", + "intent": "list_documents_by_counterparty", + "intent_confidence": "medium", + "entities": { + "account": "51", + "counterparty": "все", + "contract": null, + "document_type": null, + "document_ref": null, + "organization": null + }, + "period": { + "scope": "unspecified", + "period_from": null, + "period_to": null, + "as_of_date": null, + "has_explicit_period": false + }, + "aggregation_profile": "list_lookup" + }, + "fallback_rule_hit": null, + "sanitized_user_message": "покажи документы все по жуковке 51", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "9a9uKVMfRGHdzd", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Показать все документы, связанные с контрагентом Жуковка и счетом 51." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 3, + "id": "Q_CONTRACTS_SVK", + "question": "покажи договора по свк", + "session": null, + "session_id": "asst-Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02-q_contracts_svk", + "status_code": 200, + "ok": true, + "elapsed_ms": 6825, + "reply_type": "partial_coverage", + "trace_id": "address-sIy4MSA-BD", + "assistant_reply": "Не удалось выполнить адресный live-запрос в V1.\nПричина: live MCP вызов завершился ошибкой.\nЧто нужно уточнить: {ВнешняяОбработка.MCPToolkit.Форма.Форма.Форма(1989)}: Ошибка при вызове метода контекста (Выполнить): {(3, 5)}: Операция не разрешена в предложении \"УПОРЯДОЧИТЬ\"\n<>ПРЕДСТАВЛЕНИЕ(Договоры.Ссылка) КАК Регистратор,.", + "assistant_reply_first_line": "Не удалось выполнить адресный live-запрос в V1.", + "expected_intent": "list_contracts_by_counterparty", + "actual_intent": "list_contracts_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": false, + "route_health": "blocked_execution_error", + "strict_policy": "route", + "strict_pass": false, + "selected_recipe": "address_contracts_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 0, + "rows_matched": 0, + "mcp_call_status": "error", + "limited_reason_category": "execution_error", + "llm_decomposition_attempted": true, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "llm_canonical_candidate_detected": true, + "fallback_rule_hit": null, + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "predecompose_contract_intent": "list_contracts_by_counterparty", + "predecompose_contract_aggregation_profile": "list_lookup", + "predecompose_contract_period_scope": "unspecified", + "debug_payload": { + "trace_id": "address-sIy4MSA-BD", + "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", + "contracts_by_counterparty_signal_detected", + "{ВнешняяОбработка.MCPToolkit.Форма.Форма.Форма(1989)}: Ошибка при вызове метода контекста (Выполнить): {(3, 5)}: Операция не разрешена в предложении \"УПОРЯДОЧИТЬ\"\n<>ПРЕДСТАВЛЕНИЕ(Договоры.Ссылка) КАК Регистратор," + ], + "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": "list_contracts_by_counterparty", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "counterparty": "свк", + "contract": "по свк" + }, + "missing_required_filters": [], + "selected_recipe": "address_contracts_by_counterparty_v1", + "mcp_call_status_legacy": "error", + "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": "error", + "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": "UNKNOWN", + "limited_reason_category": "execution_error", + "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": "PVQqllXhOWfK34", + "llm_decomposition_effective_message": "покажи договора по свк", + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "llm_canonical_candidate_detected": true, + "llm_predecompose_contract": { + "schema_version": "address_llm_predecompose_contract_v1", + "source_message": "покажи договора по свк", + "canonical_message": "покажи договора по свк", + "mode": "address_query", + "mode_confidence": "high", + "query_shape": "OBJECT_LOOKUP", + "query_shape_confidence": "medium", + "intent": "list_contracts_by_counterparty", + "intent_confidence": "medium", + "entities": { + "account": null, + "counterparty": "свк", + "contract": "по свк", + "document_type": null, + "document_ref": null, + "organization": null + }, + "period": { + "scope": "unspecified", + "period_from": null, + "period_to": null, + "as_of_date": null, + "has_explicit_period": false + }, + "aggregation_profile": "list_lookup" + }, + "fallback_rule_hit": null, + "sanitized_user_message": "покажи договора по свк", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "PVQqllXhOWfK34", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "покажи договора по свк" + } + }, + "error_code": null, + "error_message": null + } +] diff --git a/docs/ADDRESS/runs/Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02/full_live_results.json b/docs/ADDRESS/runs/Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02/full_live_results.json new file mode 100644 index 0000000..9c39e97 --- /dev/null +++ b/docs/ADDRESS/runs/Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02/full_live_results.json @@ -0,0 +1,634 @@ +{ + "run_id": "Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02", + "generated_at": "2026-04-02T22:30:52", + "summary": { + "run_id": "Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02", + "generated_at": "2026-04-02T22:30:52", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\temp_contracts_zhukovka_targeted_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", + "strict_policy": "route", + "totals": { + "questions_total": 3, + "ok_200_count": 3, + "semantic_pass_count": 3, + "semantic_pass_rate": 1.0, + "route_pass_count": 0, + "route_pass_rate": 0.0, + "strict_pass_count": 0, + "strict_pass_rate": 0.0, + "factual_count": 0, + "partial_coverage_count": 3, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_attempted_count": 3, + "llm_decomposition_applied_count": 1, + "llm_fallback_count": 0, + "llm_fallback_rate": 0.0, + "tool_gate_blocked_count": 0, + "tool_gate_blocked_rate": 0.0, + "avg_elapsed_ms": 7047.3 + }, + "distributions": { + "reply_type": { + "partial_coverage": 3 + }, + "actual_intent": { + "list_contracts_by_counterparty": 2, + "list_documents_by_counterparty": 1 + }, + "actual_mode": { + "address_query": 3 + }, + "mcp_call_status": { + "error": 2, + "materialized_but_not_anchor_matched": 1 + }, + "limited_reason_category": { + "execution_error": 2, + "empty_match": 1 + }, + "route_health": { + "blocked_execution_error": 2, + "likely_blocked_route": 1 + }, + "tool_gate_decision": { + "run_address_lane": 3 + }, + "tool_gate_reason": { + "address_mode_classifier_detected": 3 + } + }, + "address_llm_predecompose_metrics": { + "overall": { + "llm_attempted": 3, + "llm_applied": 1, + "fallback_used": 0, + "fallback_rate": 0.0, + "tool_gate_blocked": 0, + "gate_block_rate": 0.0 + }, + "by_intent": { + "list_contracts_by_counterparty": { + "total": 2, + "llm_attempted": 2, + "llm_applied": 0, + "fallback_used": 0, + "tool_gate_blocked": 0, + "fallback_rate": 0.0, + "gate_block_rate": 0.0 + }, + "list_documents_by_counterparty": { + "total": 1, + "llm_attempted": 1, + "llm_applied": 1, + "fallback_used": 0, + "tool_gate_blocked": 0, + "fallback_rate": 0.0, + "gate_block_rate": 0.0 + } + } + } + }, + "rows": [ + { + "index": 1, + "id": "Q_CONTRACTS_ZHUKOVKA", + "question": "покажи договора все по жуковке 51", + "session": null, + "session_id": "asst-Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02-q_contracts_zhukovka", + "status_code": 200, + "ok": true, + "elapsed_ms": 6945, + "reply_type": "partial_coverage", + "trace_id": "address-HNM484NYqC", + "assistant_reply": "Не удалось выполнить адресный live-запрос в V1.\nПричина: live MCP вызов завершился ошибкой.\nЧто нужно уточнить: {ВнешняяОбработка.MCPToolkit.Форма.Форма.Форма(1989)}: Ошибка при вызове метода контекста (Выполнить): {(3, 5)}: Операция не разрешена в предложении \"УПОРЯДОЧИТЬ\"\n<>ПРЕДСТАВЛЕНИЕ(Договоры.Ссылка) КАК Регистратор,.", + "assistant_reply_first_line": "Не удалось выполнить адресный live-запрос в V1.", + "expected_intent": "list_contracts_by_counterparty", + "actual_intent": "list_contracts_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": false, + "route_health": "blocked_execution_error", + "strict_policy": "route", + "strict_pass": false, + "selected_recipe": "address_contracts_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 0, + "rows_matched": 0, + "mcp_call_status": "error", + "limited_reason_category": "execution_error", + "llm_decomposition_attempted": true, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "llm_canonical_candidate_detected": true, + "fallback_rule_hit": null, + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "predecompose_contract_intent": "list_contracts_by_counterparty", + "predecompose_contract_aggregation_profile": "list_lookup", + "predecompose_contract_period_scope": "unspecified", + "debug_payload": { + "trace_id": "address-HNM484NYqC", + "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", + "contracts_by_counterparty_signal_detected", + "{ВнешняяОбработка.MCPToolkit.Форма.Форма.Форма(1989)}: Ошибка при вызове метода контекста (Выполнить): {(3, 5)}: Операция не разрешена в предложении \"УПОРЯДОЧИТЬ\"\n<>ПРЕДСТАВЛЕНИЕ(Договоры.Ссылка) КАК Регистратор," + ], + "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": "list_contracts_by_counterparty", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "counterparty": "жуковке 51", + "contract": "все" + }, + "missing_required_filters": [], + "selected_recipe": "address_contracts_by_counterparty_v1", + "mcp_call_status_legacy": "error", + "account_scope_mode": "preferred", + "account_scope_fallback_applied": false, + "anchor_type": "counterparty", + "anchor_value_raw": "жуковке 51", + "anchor_value_resolved": "жуковке 51", + "resolver_confidence": "medium", + "ambiguity_count": 0, + "match_failure_stage": "none", + "match_failure_reason": null, + "mcp_call_status": "error", + "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": "UNKNOWN", + "limited_reason_category": "execution_error", + "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": "6vWM_5n83Nd59p", + "llm_decomposition_effective_message": "покажи договора все по жуковке 51", + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "llm_canonical_candidate_detected": true, + "llm_predecompose_contract": { + "schema_version": "address_llm_predecompose_contract_v1", + "source_message": "покажи договора все по жуковке 51", + "canonical_message": "покажи договора все по жуковке 51", + "mode": "address_query", + "mode_confidence": "high", + "query_shape": "OBJECT_LOOKUP", + "query_shape_confidence": "medium", + "intent": "list_contracts_by_counterparty", + "intent_confidence": "medium", + "entities": { + "account": null, + "counterparty": "жуковке 51", + "contract": "все", + "document_type": null, + "document_ref": null, + "organization": null + }, + "period": { + "scope": "unspecified", + "period_from": null, + "period_to": null, + "as_of_date": null, + "has_explicit_period": false + }, + "aggregation_profile": "list_lookup" + }, + "fallback_rule_hit": null, + "sanitized_user_message": "покажи договора все по жуковке 51", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "6vWM_5n83Nd59p", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "покажи договора все по жуковке 51" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 2, + "id": "Q_DOCS_ZHUKOVKA", + "question": "покажи документы все по жуковке 51", + "session": null, + "session_id": "asst-Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02-q_docs_zhukovka", + "status_code": 200, + "ok": true, + "elapsed_ms": 7372, + "reply_type": "partial_coverage", + "trace_id": "address-BWZNeub9K9", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "assistant_reply_first_line": "В live-данных по текущему фильтру записи не найдены.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": false, + "route_health": "likely_blocked_route", + "strict_policy": "route", + "strict_pass": false, + "selected_recipe": "address_documents_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "rows_fetched": 1000, + "rows_matched": 0, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_attempted": true, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "llm_canonical_candidate_detected": true, + "fallback_rule_hit": null, + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "predecompose_contract_intent": "list_documents_by_counterparty", + "predecompose_contract_aggregation_profile": "list_lookup", + "predecompose_contract_period_scope": "unspecified", + "debug_payload": { + "trace_id": "address-BWZNeub9K9", + "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, + "account": "51", + "counterparty": "все" + }, + "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": "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": "empty_match", + "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": "9a9uKVMfRGHdzd", + "llm_decomposition_effective_message": "Показать все документы, связанные с контрагентом Жуковка и счетом 51.", + "llm_decomposition_reason": "normalized_fragment_applied", + "llm_canonical_candidate_detected": true, + "llm_predecompose_contract": { + "schema_version": "address_llm_predecompose_contract_v1", + "source_message": "покажи документы все по жуковке 51", + "canonical_message": "Показать все документы, связанные с контрагентом Жуковка и счетом 51.", + "mode": "address_query", + "mode_confidence": "high", + "query_shape": "DOCUMENT_LIST", + "query_shape_confidence": "medium", + "intent": "list_documents_by_counterparty", + "intent_confidence": "medium", + "entities": { + "account": "51", + "counterparty": "все", + "contract": null, + "document_type": null, + "document_ref": null, + "organization": null + }, + "period": { + "scope": "unspecified", + "period_from": null, + "period_to": null, + "as_of_date": null, + "has_explicit_period": false + }, + "aggregation_profile": "list_lookup" + }, + "fallback_rule_hit": null, + "sanitized_user_message": "покажи документы все по жуковке 51", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "9a9uKVMfRGHdzd", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Показать все документы, связанные с контрагентом Жуковка и счетом 51." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 3, + "id": "Q_CONTRACTS_SVK", + "question": "покажи договора по свк", + "session": null, + "session_id": "asst-Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02-q_contracts_svk", + "status_code": 200, + "ok": true, + "elapsed_ms": 6825, + "reply_type": "partial_coverage", + "trace_id": "address-sIy4MSA-BD", + "assistant_reply": "Не удалось выполнить адресный live-запрос в V1.\nПричина: live MCP вызов завершился ошибкой.\nЧто нужно уточнить: {ВнешняяОбработка.MCPToolkit.Форма.Форма.Форма(1989)}: Ошибка при вызове метода контекста (Выполнить): {(3, 5)}: Операция не разрешена в предложении \"УПОРЯДОЧИТЬ\"\n<>ПРЕДСТАВЛЕНИЕ(Договоры.Ссылка) КАК Регистратор,.", + "assistant_reply_first_line": "Не удалось выполнить адресный live-запрос в V1.", + "expected_intent": "list_contracts_by_counterparty", + "actual_intent": "list_contracts_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": false, + "route_health": "blocked_execution_error", + "strict_policy": "route", + "strict_pass": false, + "selected_recipe": "address_contracts_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 0, + "rows_matched": 0, + "mcp_call_status": "error", + "limited_reason_category": "execution_error", + "llm_decomposition_attempted": true, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "llm_canonical_candidate_detected": true, + "fallback_rule_hit": null, + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "predecompose_contract_intent": "list_contracts_by_counterparty", + "predecompose_contract_aggregation_profile": "list_lookup", + "predecompose_contract_period_scope": "unspecified", + "debug_payload": { + "trace_id": "address-sIy4MSA-BD", + "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", + "contracts_by_counterparty_signal_detected", + "{ВнешняяОбработка.MCPToolkit.Форма.Форма.Форма(1989)}: Ошибка при вызове метода контекста (Выполнить): {(3, 5)}: Операция не разрешена в предложении \"УПОРЯДОЧИТЬ\"\n<>ПРЕДСТАВЛЕНИЕ(Договоры.Ссылка) КАК Регистратор," + ], + "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": "list_contracts_by_counterparty", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "counterparty": "свк", + "contract": "по свк" + }, + "missing_required_filters": [], + "selected_recipe": "address_contracts_by_counterparty_v1", + "mcp_call_status_legacy": "error", + "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": "error", + "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": "UNKNOWN", + "limited_reason_category": "execution_error", + "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": "PVQqllXhOWfK34", + "llm_decomposition_effective_message": "покажи договора по свк", + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "llm_canonical_candidate_detected": true, + "llm_predecompose_contract": { + "schema_version": "address_llm_predecompose_contract_v1", + "source_message": "покажи договора по свк", + "canonical_message": "покажи договора по свк", + "mode": "address_query", + "mode_confidence": "high", + "query_shape": "OBJECT_LOOKUP", + "query_shape_confidence": "medium", + "intent": "list_contracts_by_counterparty", + "intent_confidence": "medium", + "entities": { + "account": null, + "counterparty": "свк", + "contract": "по свк", + "document_type": null, + "document_ref": null, + "organization": null + }, + "period": { + "scope": "unspecified", + "period_from": null, + "period_to": null, + "as_of_date": null, + "has_explicit_period": false + }, + "aggregation_profile": "list_lookup" + }, + "fallback_rule_hit": null, + "sanitized_user_message": "покажи договора по свк", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "PVQqllXhOWfK34", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "покажи договора по свк" + } + }, + "error_code": null, + "error_message": null + } + ] +} diff --git a/docs/ADDRESS/runs/Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02/response_audit.md b/docs/ADDRESS/runs/Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02/response_audit.md new file mode 100644 index 0000000..3bf5f91 --- /dev/null +++ b/docs/ADDRESS/runs/Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02/response_audit.md @@ -0,0 +1,7 @@ +# Response Audit: Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02 + +| id | strict | route_health | reply_type | intent | limited_reason | question | assistant_first_line | +|---|---|---|---|---|---|---|---| +| Q_CONTRACTS_ZHUKOVKA | False | blocked_execution_error | partial_coverage | list_contracts_by_counterparty | execution_error | покажи договора все по жуковке 51 | Не удалось выполнить адресный live-запрос в V1. | +| Q_DOCS_ZHUKOVKA | False | likely_blocked_route | partial_coverage | list_documents_by_counterparty | empty_match | покажи документы все по жуковке 51 | В live-данных по текущему фильтру записи не найдены. | +| Q_CONTRACTS_SVK | False | blocked_execution_error | partial_coverage | list_contracts_by_counterparty | execution_error | покажи договора по свк | Не удалось выполнить адресный live-запрос в V1. | diff --git a/docs/ADDRESS/runs/Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02/run_summary.json b/docs/ADDRESS/runs/Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02/run_summary.json new file mode 100644 index 0000000..9b5cb78 --- /dev/null +++ b/docs/ADDRESS/runs/Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02/run_summary.json @@ -0,0 +1,91 @@ +{ + "run_id": "Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02", + "generated_at": "2026-04-02T22:30:52", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\temp_contracts_zhukovka_targeted_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", + "strict_policy": "route", + "totals": { + "questions_total": 3, + "ok_200_count": 3, + "semantic_pass_count": 3, + "semantic_pass_rate": 1.0, + "route_pass_count": 0, + "route_pass_rate": 0.0, + "strict_pass_count": 0, + "strict_pass_rate": 0.0, + "factual_count": 0, + "partial_coverage_count": 3, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_attempted_count": 3, + "llm_decomposition_applied_count": 1, + "llm_fallback_count": 0, + "llm_fallback_rate": 0.0, + "tool_gate_blocked_count": 0, + "tool_gate_blocked_rate": 0.0, + "avg_elapsed_ms": 7047.3 + }, + "distributions": { + "reply_type": { + "partial_coverage": 3 + }, + "actual_intent": { + "list_contracts_by_counterparty": 2, + "list_documents_by_counterparty": 1 + }, + "actual_mode": { + "address_query": 3 + }, + "mcp_call_status": { + "error": 2, + "materialized_but_not_anchor_matched": 1 + }, + "limited_reason_category": { + "execution_error": 2, + "empty_match": 1 + }, + "route_health": { + "blocked_execution_error": 2, + "likely_blocked_route": 1 + }, + "tool_gate_decision": { + "run_address_lane": 3 + }, + "tool_gate_reason": { + "address_mode_classifier_detected": 3 + } + }, + "address_llm_predecompose_metrics": { + "overall": { + "llm_attempted": 3, + "llm_applied": 1, + "fallback_used": 0, + "fallback_rate": 0.0, + "tool_gate_blocked": 0, + "gate_block_rate": 0.0 + }, + "by_intent": { + "list_contracts_by_counterparty": { + "total": 2, + "llm_attempted": 2, + "llm_applied": 0, + "fallback_used": 0, + "tool_gate_blocked": 0, + "fallback_rate": 0.0, + "gate_block_rate": 0.0 + }, + "list_documents_by_counterparty": { + "total": 1, + "llm_attempted": 1, + "llm_applied": 1, + "fallback_used": 0, + "tool_gate_blocked": 0, + "fallback_rate": 0.0, + "gate_block_rate": 0.0 + } + } + } +} diff --git a/docs/ADDRESS/runs/Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02_v2/README.md b/docs/ADDRESS/runs/Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02_v2/README.md new file mode 100644 index 0000000..56a6bbd --- /dev/null +++ b/docs/ADDRESS/runs/Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02_v2/README.md @@ -0,0 +1,33 @@ +# Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02_v2 + +Generated at: 2026-04-02T22:33:03 +Questions file: X:\1C\NDC_1C\docs\ADDRESS\question_sets\temp_contracts_zhukovka_targeted_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 +Strict policy: route + +## Totals +- questions_total: 3 +- ok_200_count: 3 +- semantic_pass_count: 3 +- semantic_pass_rate: 1.0 +- route_pass_count: 1 +- route_pass_rate: 0.3333 +- strict_pass_count: 1 +- strict_pass_rate: 0.3333 +- factual_count: 1 +- partial_coverage_count: 2 +- clarification_required_count: 0 +- http_error_count: 0 +- llm_decomposition_attempted_count: 3 +- llm_decomposition_applied_count: 1 +- llm_fallback_count: 0 +- llm_fallback_rate: 0.0 +- tool_gate_blocked_count: 0 +- tool_gate_blocked_rate: 0.0 +- avg_elapsed_ms: 7565.3 + +## Files +- run_summary.json +- full_live_results.json +- failures_only.json diff --git a/docs/ADDRESS/runs/Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02_v2/failures_only.json b/docs/ADDRESS/runs/Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02_v2/failures_only.json new file mode 100644 index 0000000..9d6ef57 --- /dev/null +++ b/docs/ADDRESS/runs/Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02_v2/failures_only.json @@ -0,0 +1,371 @@ +[ + { + "index": 1, + "id": "Q_CONTRACTS_ZHUKOVKA", + "question": "покажи договора все по жуковке 51", + "session": null, + "session_id": "asst-Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02_v2-q_contracts_zhukovka", + "status_code": 200, + "ok": true, + "elapsed_ms": 7458, + "reply_type": "partial_coverage", + "trace_id": "address-1bbeYQLW6f", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "assistant_reply_first_line": "В live-данных по текущему фильтру записи не найдены.", + "expected_intent": "list_contracts_by_counterparty", + "actual_intent": "list_contracts_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": false, + "route_health": "likely_blocked_route", + "strict_policy": "route", + "strict_pass": false, + "selected_recipe": "address_contracts_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "rows_fetched": 394, + "rows_matched": 0, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_attempted": true, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "llm_canonical_candidate_detected": true, + "fallback_rule_hit": null, + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "predecompose_contract_intent": "list_contracts_by_counterparty", + "predecompose_contract_aggregation_profile": "list_lookup", + "predecompose_contract_period_scope": "unspecified", + "debug_payload": { + "trace_id": "address-1bbeYQLW6f", + "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", + "contracts_by_counterparty_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": "list_contracts_by_counterparty", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "counterparty": "жуковке 51" + }, + "missing_required_filters": [], + "selected_recipe": "address_contracts_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": "жуковке 51", + "anchor_value_resolved": "жуковке 51", + "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": 394, + "raw_rows_received": 394, + "rows_after_account_scope": 394, + "rows_after_recipe_filter": 0, + "rows_materialized": 394, + "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": "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": "w5YAUCEVVTdH7N", + "llm_decomposition_effective_message": "покажи договора все по жуковке 51", + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "llm_canonical_candidate_detected": true, + "llm_predecompose_contract": { + "schema_version": "address_llm_predecompose_contract_v1", + "source_message": "покажи договора все по жуковке 51", + "canonical_message": "покажи договора все по жуковке 51", + "mode": "address_query", + "mode_confidence": "high", + "query_shape": "OBJECT_LOOKUP", + "query_shape_confidence": "medium", + "intent": "list_contracts_by_counterparty", + "intent_confidence": "medium", + "entities": { + "account": null, + "counterparty": "жуковке 51", + "contract": null, + "document_type": null, + "document_ref": null, + "organization": null + }, + "period": { + "scope": "unspecified", + "period_from": null, + "period_to": null, + "as_of_date": null, + "has_explicit_period": false + }, + "aggregation_profile": "list_lookup" + }, + "fallback_rule_hit": null, + "sanitized_user_message": "покажи договора все по жуковке 51", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "w5YAUCEVVTdH7N", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "покажи договора все по жуковке 51" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 2, + "id": "Q_DOCS_ZHUKOVKA", + "question": "покажи документы все по жуковке 51", + "session": null, + "session_id": "asst-Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02_v2-q_docs_zhukovka", + "status_code": 200, + "ok": true, + "elapsed_ms": 8284, + "reply_type": "partial_coverage", + "trace_id": "address-BeQW7vZLVI", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "assistant_reply_first_line": "В live-данных по текущему фильтру записи не найдены.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": false, + "route_health": "likely_blocked_route", + "strict_policy": "route", + "strict_pass": false, + "selected_recipe": "address_documents_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "rows_fetched": 1000, + "rows_matched": 0, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_attempted": true, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "llm_canonical_candidate_detected": true, + "fallback_rule_hit": null, + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "predecompose_contract_intent": "list_documents_by_counterparty", + "predecompose_contract_aggregation_profile": "list_lookup", + "predecompose_contract_period_scope": "unspecified", + "debug_payload": { + "trace_id": "address-BeQW7vZLVI", + "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, + "account": "51", + "counterparty": "все" + }, + "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": "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": "empty_match", + "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": "zgQKF-wY_5cE8G", + "llm_decomposition_effective_message": "Показать все документы, связанные с контрагентом Жуковка и счетом 51.", + "llm_decomposition_reason": "normalized_fragment_applied", + "llm_canonical_candidate_detected": true, + "llm_predecompose_contract": { + "schema_version": "address_llm_predecompose_contract_v1", + "source_message": "покажи документы все по жуковке 51", + "canonical_message": "Показать все документы, связанные с контрагентом Жуковка и счетом 51.", + "mode": "address_query", + "mode_confidence": "high", + "query_shape": "DOCUMENT_LIST", + "query_shape_confidence": "medium", + "intent": "list_documents_by_counterparty", + "intent_confidence": "medium", + "entities": { + "account": "51", + "counterparty": "все", + "contract": null, + "document_type": null, + "document_ref": null, + "organization": null + }, + "period": { + "scope": "unspecified", + "period_from": null, + "period_to": null, + "as_of_date": null, + "has_explicit_period": false + }, + "aggregation_profile": "list_lookup" + }, + "fallback_rule_hit": null, + "sanitized_user_message": "покажи документы все по жуковке 51", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "zgQKF-wY_5cE8G", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Показать все документы, связанные с контрагентом Жуковка и счетом 51." + } + }, + "error_code": null, + "error_message": null + } +] diff --git a/docs/ADDRESS/runs/Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02_v2/full_live_results.json b/docs/ADDRESS/runs/Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02_v2/full_live_results.json new file mode 100644 index 0000000..6aaed87 --- /dev/null +++ b/docs/ADDRESS/runs/Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02_v2/full_live_results.json @@ -0,0 +1,650 @@ +{ + "run_id": "Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02_v2", + "generated_at": "2026-04-02T22:33:03", + "summary": { + "run_id": "Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02_v2", + "generated_at": "2026-04-02T22:33:03", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\temp_contracts_zhukovka_targeted_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", + "strict_policy": "route", + "totals": { + "questions_total": 3, + "ok_200_count": 3, + "semantic_pass_count": 3, + "semantic_pass_rate": 1.0, + "route_pass_count": 1, + "route_pass_rate": 0.3333, + "strict_pass_count": 1, + "strict_pass_rate": 0.3333, + "factual_count": 1, + "partial_coverage_count": 2, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_attempted_count": 3, + "llm_decomposition_applied_count": 1, + "llm_fallback_count": 0, + "llm_fallback_rate": 0.0, + "tool_gate_blocked_count": 0, + "tool_gate_blocked_rate": 0.0, + "avg_elapsed_ms": 7565.3 + }, + "distributions": { + "reply_type": { + "partial_coverage": 2, + "factual": 1 + }, + "actual_intent": { + "list_contracts_by_counterparty": 2, + "list_documents_by_counterparty": 1 + }, + "actual_mode": { + "address_query": 3 + }, + "mcp_call_status": { + "materialized_but_not_anchor_matched": 2, + "matched_non_empty": 1 + }, + "limited_reason_category": { + "empty_match": 2 + }, + "route_health": { + "likely_blocked_route": 2, + "ok_or_factual": 1 + }, + "tool_gate_decision": { + "run_address_lane": 3 + }, + "tool_gate_reason": { + "address_mode_classifier_detected": 3 + } + }, + "address_llm_predecompose_metrics": { + "overall": { + "llm_attempted": 3, + "llm_applied": 1, + "fallback_used": 0, + "fallback_rate": 0.0, + "tool_gate_blocked": 0, + "gate_block_rate": 0.0 + }, + "by_intent": { + "list_contracts_by_counterparty": { + "total": 2, + "llm_attempted": 2, + "llm_applied": 0, + "fallback_used": 0, + "tool_gate_blocked": 0, + "fallback_rate": 0.0, + "gate_block_rate": 0.0 + }, + "list_documents_by_counterparty": { + "total": 1, + "llm_attempted": 1, + "llm_applied": 1, + "fallback_used": 0, + "tool_gate_blocked": 0, + "fallback_rate": 0.0, + "gate_block_rate": 0.0 + } + } + } + }, + "rows": [ + { + "index": 1, + "id": "Q_CONTRACTS_ZHUKOVKA", + "question": "покажи договора все по жуковке 51", + "session": null, + "session_id": "asst-Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02_v2-q_contracts_zhukovka", + "status_code": 200, + "ok": true, + "elapsed_ms": 7458, + "reply_type": "partial_coverage", + "trace_id": "address-1bbeYQLW6f", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "assistant_reply_first_line": "В live-данных по текущему фильтру записи не найдены.", + "expected_intent": "list_contracts_by_counterparty", + "actual_intent": "list_contracts_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": false, + "route_health": "likely_blocked_route", + "strict_policy": "route", + "strict_pass": false, + "selected_recipe": "address_contracts_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "rows_fetched": 394, + "rows_matched": 0, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_attempted": true, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "llm_canonical_candidate_detected": true, + "fallback_rule_hit": null, + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "predecompose_contract_intent": "list_contracts_by_counterparty", + "predecompose_contract_aggregation_profile": "list_lookup", + "predecompose_contract_period_scope": "unspecified", + "debug_payload": { + "trace_id": "address-1bbeYQLW6f", + "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", + "contracts_by_counterparty_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": "list_contracts_by_counterparty", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "counterparty": "жуковке 51" + }, + "missing_required_filters": [], + "selected_recipe": "address_contracts_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": "жуковке 51", + "anchor_value_resolved": "жуковке 51", + "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": 394, + "raw_rows_received": 394, + "rows_after_account_scope": 394, + "rows_after_recipe_filter": 0, + "rows_materialized": 394, + "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": "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": "w5YAUCEVVTdH7N", + "llm_decomposition_effective_message": "покажи договора все по жуковке 51", + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "llm_canonical_candidate_detected": true, + "llm_predecompose_contract": { + "schema_version": "address_llm_predecompose_contract_v1", + "source_message": "покажи договора все по жуковке 51", + "canonical_message": "покажи договора все по жуковке 51", + "mode": "address_query", + "mode_confidence": "high", + "query_shape": "OBJECT_LOOKUP", + "query_shape_confidence": "medium", + "intent": "list_contracts_by_counterparty", + "intent_confidence": "medium", + "entities": { + "account": null, + "counterparty": "жуковке 51", + "contract": null, + "document_type": null, + "document_ref": null, + "organization": null + }, + "period": { + "scope": "unspecified", + "period_from": null, + "period_to": null, + "as_of_date": null, + "has_explicit_period": false + }, + "aggregation_profile": "list_lookup" + }, + "fallback_rule_hit": null, + "sanitized_user_message": "покажи договора все по жуковке 51", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "w5YAUCEVVTdH7N", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "покажи договора все по жуковке 51" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 2, + "id": "Q_DOCS_ZHUKOVKA", + "question": "покажи документы все по жуковке 51", + "session": null, + "session_id": "asst-Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02_v2-q_docs_zhukovka", + "status_code": 200, + "ok": true, + "elapsed_ms": 8284, + "reply_type": "partial_coverage", + "trace_id": "address-BeQW7vZLVI", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "assistant_reply_first_line": "В live-данных по текущему фильтру записи не найдены.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": false, + "route_health": "likely_blocked_route", + "strict_policy": "route", + "strict_pass": false, + "selected_recipe": "address_documents_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "rows_fetched": 1000, + "rows_matched": 0, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_attempted": true, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "llm_canonical_candidate_detected": true, + "fallback_rule_hit": null, + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "predecompose_contract_intent": "list_documents_by_counterparty", + "predecompose_contract_aggregation_profile": "list_lookup", + "predecompose_contract_period_scope": "unspecified", + "debug_payload": { + "trace_id": "address-BeQW7vZLVI", + "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, + "account": "51", + "counterparty": "все" + }, + "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": "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": "empty_match", + "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": "zgQKF-wY_5cE8G", + "llm_decomposition_effective_message": "Показать все документы, связанные с контрагентом Жуковка и счетом 51.", + "llm_decomposition_reason": "normalized_fragment_applied", + "llm_canonical_candidate_detected": true, + "llm_predecompose_contract": { + "schema_version": "address_llm_predecompose_contract_v1", + "source_message": "покажи документы все по жуковке 51", + "canonical_message": "Показать все документы, связанные с контрагентом Жуковка и счетом 51.", + "mode": "address_query", + "mode_confidence": "high", + "query_shape": "DOCUMENT_LIST", + "query_shape_confidence": "medium", + "intent": "list_documents_by_counterparty", + "intent_confidence": "medium", + "entities": { + "account": "51", + "counterparty": "все", + "contract": null, + "document_type": null, + "document_ref": null, + "organization": null + }, + "period": { + "scope": "unspecified", + "period_from": null, + "period_to": null, + "as_of_date": null, + "has_explicit_period": false + }, + "aggregation_profile": "list_lookup" + }, + "fallback_rule_hit": null, + "sanitized_user_message": "покажи документы все по жуковке 51", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "zgQKF-wY_5cE8G", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Показать все документы, связанные с контрагентом Жуковка и счетом 51." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 3, + "id": "Q_CONTRACTS_SVK", + "question": "покажи договора по свк", + "session": null, + "session_id": "asst-Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02_v2-q_contracts_svk", + "status_code": 200, + "ok": true, + "elapsed_ms": 6954, + "reply_type": "factual", + "trace_id": "address-bp19Ch7jZL", + "assistant_reply": "Собран список договоров по контрагенту (catalog address lane).\nСтрок отобрано: 1.\nУникальных договоров: 1.\nКонтрагент: Группа\n1. Договор № 1-ПМ/2020 от 05.06.2020", + "assistant_reply_first_line": "Собран список договоров по контрагенту (catalog address lane).", + "expected_intent": "list_contracts_by_counterparty", + "actual_intent": "list_contracts_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_contracts_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 394, + "rows_matched": 1, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_attempted": true, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "llm_canonical_candidate_detected": true, + "fallback_rule_hit": null, + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "predecompose_contract_intent": "list_contracts_by_counterparty", + "predecompose_contract_aggregation_profile": "list_lookup", + "predecompose_contract_period_scope": "unspecified", + "debug_payload": { + "trace_id": "address-bp19Ch7jZL", + "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", + "object_signal_detected", + "contracts_by_counterparty_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": "list_contracts_by_counterparty", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "counterparty": "свк" + }, + "missing_required_filters": [], + "selected_recipe": "address_contracts_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": 394, + "raw_rows_received": 394, + "rows_after_account_scope": 394, + "rows_after_recipe_filter": 1, + "rows_materialized": 394, + "rows_matched": 1, + "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": "QOKJXiQ_yZ4ACQ", + "llm_decomposition_effective_message": "покажи договора по свк", + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "llm_canonical_candidate_detected": true, + "llm_predecompose_contract": { + "schema_version": "address_llm_predecompose_contract_v1", + "source_message": "покажи договора по свк", + "canonical_message": "покажи договора по свк", + "mode": "address_query", + "mode_confidence": "high", + "query_shape": "OBJECT_LOOKUP", + "query_shape_confidence": "medium", + "intent": "list_contracts_by_counterparty", + "intent_confidence": "medium", + "entities": { + "account": null, + "counterparty": "свк", + "contract": null, + "document_type": null, + "document_ref": null, + "organization": null + }, + "period": { + "scope": "unspecified", + "period_from": null, + "period_to": null, + "as_of_date": null, + "has_explicit_period": false + }, + "aggregation_profile": "list_lookup" + }, + "fallback_rule_hit": null, + "sanitized_user_message": "покажи договора по свк", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "QOKJXiQ_yZ4ACQ", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "покажи договора по свк" + } + }, + "error_code": null, + "error_message": null + } + ] +} diff --git a/docs/ADDRESS/runs/Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02_v2/response_audit.md b/docs/ADDRESS/runs/Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02_v2/response_audit.md new file mode 100644 index 0000000..f285827 --- /dev/null +++ b/docs/ADDRESS/runs/Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02_v2/response_audit.md @@ -0,0 +1,7 @@ +# Response Audit: Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02_v2 + +| id | strict | route_health | reply_type | intent | limited_reason | question | assistant_first_line | +|---|---|---|---|---|---|---|---| +| Q_CONTRACTS_ZHUKOVKA | False | likely_blocked_route | partial_coverage | list_contracts_by_counterparty | empty_match | покажи договора все по жуковке 51 | В live-данных по текущему фильтру записи не найдены. | +| Q_DOCS_ZHUKOVKA | False | likely_blocked_route | partial_coverage | list_documents_by_counterparty | empty_match | покажи документы все по жуковке 51 | В live-данных по текущему фильтру записи не найдены. | +| Q_CONTRACTS_SVK | True | ok_or_factual | factual | list_contracts_by_counterparty | None | покажи договора по свк | Собран список договоров по контрагенту (catalog address lane). | diff --git a/docs/ADDRESS/runs/Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02_v2/run_summary.json b/docs/ADDRESS/runs/Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02_v2/run_summary.json new file mode 100644 index 0000000..3278a36 --- /dev/null +++ b/docs/ADDRESS/runs/Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02_v2/run_summary.json @@ -0,0 +1,91 @@ +{ + "run_id": "Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02_v2", + "generated_at": "2026-04-02T22:33:03", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\temp_contracts_zhukovka_targeted_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", + "strict_policy": "route", + "totals": { + "questions_total": 3, + "ok_200_count": 3, + "semantic_pass_count": 3, + "semantic_pass_rate": 1.0, + "route_pass_count": 1, + "route_pass_rate": 0.3333, + "strict_pass_count": 1, + "strict_pass_rate": 0.3333, + "factual_count": 1, + "partial_coverage_count": 2, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_attempted_count": 3, + "llm_decomposition_applied_count": 1, + "llm_fallback_count": 0, + "llm_fallback_rate": 0.0, + "tool_gate_blocked_count": 0, + "tool_gate_blocked_rate": 0.0, + "avg_elapsed_ms": 7565.3 + }, + "distributions": { + "reply_type": { + "partial_coverage": 2, + "factual": 1 + }, + "actual_intent": { + "list_contracts_by_counterparty": 2, + "list_documents_by_counterparty": 1 + }, + "actual_mode": { + "address_query": 3 + }, + "mcp_call_status": { + "materialized_but_not_anchor_matched": 2, + "matched_non_empty": 1 + }, + "limited_reason_category": { + "empty_match": 2 + }, + "route_health": { + "likely_blocked_route": 2, + "ok_or_factual": 1 + }, + "tool_gate_decision": { + "run_address_lane": 3 + }, + "tool_gate_reason": { + "address_mode_classifier_detected": 3 + } + }, + "address_llm_predecompose_metrics": { + "overall": { + "llm_attempted": 3, + "llm_applied": 1, + "fallback_used": 0, + "fallback_rate": 0.0, + "tool_gate_blocked": 0, + "gate_block_rate": 0.0 + }, + "by_intent": { + "list_contracts_by_counterparty": { + "total": 2, + "llm_attempted": 2, + "llm_applied": 0, + "fallback_used": 0, + "tool_gate_blocked": 0, + "fallback_rate": 0.0, + "gate_block_rate": 0.0 + }, + "list_documents_by_counterparty": { + "total": 1, + "llm_attempted": 1, + "llm_applied": 1, + "fallback_used": 0, + "tool_gate_blocked": 0, + "fallback_rate": 0.0, + "gate_block_rate": 0.0 + } + } + } +} diff --git a/docs/ADDRESS/runs/Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02_v3/README.md b/docs/ADDRESS/runs/Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02_v3/README.md new file mode 100644 index 0000000..9c8d545 --- /dev/null +++ b/docs/ADDRESS/runs/Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02_v3/README.md @@ -0,0 +1,33 @@ +# Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02_v3 + +Generated at: 2026-04-02T22:36:33 +Questions file: X:\1C\NDC_1C\docs\ADDRESS\question_sets\temp_contracts_zhukovka_targeted_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 +Strict policy: route + +## Totals +- questions_total: 3 +- ok_200_count: 3 +- semantic_pass_count: 3 +- semantic_pass_rate: 1.0 +- route_pass_count: 2 +- route_pass_rate: 0.6667 +- strict_pass_count: 2 +- strict_pass_rate: 0.6667 +- factual_count: 2 +- partial_coverage_count: 1 +- clarification_required_count: 0 +- http_error_count: 0 +- llm_decomposition_attempted_count: 3 +- llm_decomposition_applied_count: 1 +- llm_fallback_count: 0 +- llm_fallback_rate: 0.0 +- tool_gate_blocked_count: 0 +- tool_gate_blocked_rate: 0.0 +- avg_elapsed_ms: 7179.3 + +## Files +- run_summary.json +- full_live_results.json +- failures_only.json diff --git a/docs/ADDRESS/runs/Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02_v3/failures_only.json b/docs/ADDRESS/runs/Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02_v3/failures_only.json new file mode 100644 index 0000000..ccc7d38 --- /dev/null +++ b/docs/ADDRESS/runs/Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02_v3/failures_only.json @@ -0,0 +1,187 @@ +[ + { + "index": 2, + "id": "Q_DOCS_ZHUKOVKA", + "question": "покажи документы все по жуковке 51", + "session": null, + "session_id": "asst-Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02_v3-q_docs_zhukovka", + "status_code": 200, + "ok": true, + "elapsed_ms": 7245, + "reply_type": "partial_coverage", + "trace_id": "address-Fcyt6H96vA", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "assistant_reply_first_line": "В live-данных по текущему фильтру записи не найдены.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": false, + "route_health": "likely_blocked_route", + "strict_policy": "route", + "strict_pass": false, + "selected_recipe": "address_documents_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "rows_fetched": 1000, + "rows_matched": 0, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_attempted": true, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "llm_canonical_candidate_detected": true, + "fallback_rule_hit": null, + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "predecompose_contract_intent": "list_documents_by_counterparty", + "predecompose_contract_aggregation_profile": "list_lookup", + "predecompose_contract_period_scope": "unspecified", + "debug_payload": { + "trace_id": "address-Fcyt6H96vA", + "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, + "account": "51", + "counterparty": "все" + }, + "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": "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": "empty_match", + "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": "611GYLtxH3wuRo", + "llm_decomposition_effective_message": "Показать все документы, связанные с контрагентом Жуковка и счетом 51.", + "llm_decomposition_reason": "normalized_fragment_applied", + "llm_canonical_candidate_detected": true, + "llm_predecompose_contract": { + "schema_version": "address_llm_predecompose_contract_v1", + "source_message": "покажи документы все по жуковке 51", + "canonical_message": "Показать все документы, связанные с контрагентом Жуковка и счетом 51.", + "mode": "address_query", + "mode_confidence": "high", + "query_shape": "DOCUMENT_LIST", + "query_shape_confidence": "medium", + "intent": "list_documents_by_counterparty", + "intent_confidence": "medium", + "entities": { + "account": "51", + "counterparty": "все", + "contract": null, + "document_type": null, + "document_ref": null, + "organization": null + }, + "period": { + "scope": "unspecified", + "period_from": null, + "period_to": null, + "as_of_date": null, + "has_explicit_period": false + }, + "aggregation_profile": "list_lookup" + }, + "fallback_rule_hit": null, + "sanitized_user_message": "покажи документы все по жуковке 51", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "611GYLtxH3wuRo", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Показать все документы, связанные с контрагентом Жуковка и счетом 51." + } + }, + "error_code": null, + "error_message": null + } +] diff --git a/docs/ADDRESS/runs/Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02_v3/full_live_results.json b/docs/ADDRESS/runs/Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02_v3/full_live_results.json new file mode 100644 index 0000000..8676248 --- /dev/null +++ b/docs/ADDRESS/runs/Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02_v3/full_live_results.json @@ -0,0 +1,650 @@ +{ + "run_id": "Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02_v3", + "generated_at": "2026-04-02T22:36:33", + "summary": { + "run_id": "Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02_v3", + "generated_at": "2026-04-02T22:36:33", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\temp_contracts_zhukovka_targeted_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", + "strict_policy": "route", + "totals": { + "questions_total": 3, + "ok_200_count": 3, + "semantic_pass_count": 3, + "semantic_pass_rate": 1.0, + "route_pass_count": 2, + "route_pass_rate": 0.6667, + "strict_pass_count": 2, + "strict_pass_rate": 0.6667, + "factual_count": 2, + "partial_coverage_count": 1, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_attempted_count": 3, + "llm_decomposition_applied_count": 1, + "llm_fallback_count": 0, + "llm_fallback_rate": 0.0, + "tool_gate_blocked_count": 0, + "tool_gate_blocked_rate": 0.0, + "avg_elapsed_ms": 7179.3 + }, + "distributions": { + "reply_type": { + "factual": 2, + "partial_coverage": 1 + }, + "actual_intent": { + "list_contracts_by_counterparty": 2, + "list_documents_by_counterparty": 1 + }, + "actual_mode": { + "address_query": 3 + }, + "mcp_call_status": { + "matched_non_empty": 2, + "materialized_but_not_anchor_matched": 1 + }, + "limited_reason_category": { + "empty_match": 1 + }, + "route_health": { + "ok_or_factual": 2, + "likely_blocked_route": 1 + }, + "tool_gate_decision": { + "run_address_lane": 3 + }, + "tool_gate_reason": { + "address_mode_classifier_detected": 3 + } + }, + "address_llm_predecompose_metrics": { + "overall": { + "llm_attempted": 3, + "llm_applied": 1, + "fallback_used": 0, + "fallback_rate": 0.0, + "tool_gate_blocked": 0, + "gate_block_rate": 0.0 + }, + "by_intent": { + "list_contracts_by_counterparty": { + "total": 2, + "llm_attempted": 2, + "llm_applied": 0, + "fallback_used": 0, + "tool_gate_blocked": 0, + "fallback_rate": 0.0, + "gate_block_rate": 0.0 + }, + "list_documents_by_counterparty": { + "total": 1, + "llm_attempted": 1, + "llm_applied": 1, + "fallback_used": 0, + "tool_gate_blocked": 0, + "fallback_rate": 0.0, + "gate_block_rate": 0.0 + } + } + } + }, + "rows": [ + { + "index": 1, + "id": "Q_CONTRACTS_ZHUKOVKA", + "question": "покажи договора все по жуковке 51", + "session": null, + "session_id": "asst-Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02_v3-q_contracts_zhukovka", + "status_code": 200, + "ok": true, + "elapsed_ms": 7228, + "reply_type": "factual", + "trace_id": "address-QrJBjctRSG", + "assistant_reply": "Собран список договоров по контрагенту (catalog address lane).\nСтрок отобрано: 1.\nУникальных договоров: 1.\nКонтрагент: \\Жуковка 51\\.\n1. Счет № 5 от 05.04.2017", + "assistant_reply_first_line": "Собран список договоров по контрагенту (catalog address lane).", + "expected_intent": "list_contracts_by_counterparty", + "actual_intent": "list_contracts_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_contracts_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 394, + "rows_matched": 1, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_attempted": true, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "llm_canonical_candidate_detected": true, + "fallback_rule_hit": null, + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "predecompose_contract_intent": "list_contracts_by_counterparty", + "predecompose_contract_aggregation_profile": "list_lookup", + "predecompose_contract_period_scope": "unspecified", + "debug_payload": { + "trace_id": "address-QrJBjctRSG", + "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", + "object_signal_detected", + "contracts_by_counterparty_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": "list_contracts_by_counterparty", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "counterparty": "жуковке 51" + }, + "missing_required_filters": [], + "selected_recipe": "address_contracts_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": "жуковке 51", + "anchor_value_resolved": "ТСЖ \\Жуковка 51\\", + "resolver_confidence": "medium", + "ambiguity_count": 0, + "match_failure_stage": "none", + "match_failure_reason": null, + "mcp_call_status": "matched_non_empty", + "rows_fetched": 394, + "raw_rows_received": 394, + "rows_after_account_scope": 394, + "rows_after_recipe_filter": 1, + "rows_materialized": 394, + "rows_matched": 1, + "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": "ns1IfALBU0Q-Pt", + "llm_decomposition_effective_message": "покажи договора все по жуковке 51", + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "llm_canonical_candidate_detected": true, + "llm_predecompose_contract": { + "schema_version": "address_llm_predecompose_contract_v1", + "source_message": "покажи договора все по жуковке 51", + "canonical_message": "покажи договора все по жуковке 51", + "mode": "address_query", + "mode_confidence": "high", + "query_shape": "OBJECT_LOOKUP", + "query_shape_confidence": "medium", + "intent": "list_contracts_by_counterparty", + "intent_confidence": "medium", + "entities": { + "account": null, + "counterparty": "жуковке 51", + "contract": null, + "document_type": null, + "document_ref": null, + "organization": null + }, + "period": { + "scope": "unspecified", + "period_from": null, + "period_to": null, + "as_of_date": null, + "has_explicit_period": false + }, + "aggregation_profile": "list_lookup" + }, + "fallback_rule_hit": null, + "sanitized_user_message": "покажи договора все по жуковке 51", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "ns1IfALBU0Q-Pt", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "покажи договора все по жуковке 51" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 2, + "id": "Q_DOCS_ZHUKOVKA", + "question": "покажи документы все по жуковке 51", + "session": null, + "session_id": "asst-Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02_v3-q_docs_zhukovka", + "status_code": 200, + "ok": true, + "elapsed_ms": 7245, + "reply_type": "partial_coverage", + "trace_id": "address-Fcyt6H96vA", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "assistant_reply_first_line": "В live-данных по текущему фильтру записи не найдены.", + "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, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": false, + "route_health": "likely_blocked_route", + "strict_policy": "route", + "strict_pass": false, + "selected_recipe": "address_documents_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "rows_fetched": 1000, + "rows_matched": 0, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_attempted": true, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "llm_canonical_candidate_detected": true, + "fallback_rule_hit": null, + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "predecompose_contract_intent": "list_documents_by_counterparty", + "predecompose_contract_aggregation_profile": "list_lookup", + "predecompose_contract_period_scope": "unspecified", + "debug_payload": { + "trace_id": "address-Fcyt6H96vA", + "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, + "account": "51", + "counterparty": "все" + }, + "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": "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": "empty_match", + "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": "611GYLtxH3wuRo", + "llm_decomposition_effective_message": "Показать все документы, связанные с контрагентом Жуковка и счетом 51.", + "llm_decomposition_reason": "normalized_fragment_applied", + "llm_canonical_candidate_detected": true, + "llm_predecompose_contract": { + "schema_version": "address_llm_predecompose_contract_v1", + "source_message": "покажи документы все по жуковке 51", + "canonical_message": "Показать все документы, связанные с контрагентом Жуковка и счетом 51.", + "mode": "address_query", + "mode_confidence": "high", + "query_shape": "DOCUMENT_LIST", + "query_shape_confidence": "medium", + "intent": "list_documents_by_counterparty", + "intent_confidence": "medium", + "entities": { + "account": "51", + "counterparty": "все", + "contract": null, + "document_type": null, + "document_ref": null, + "organization": null + }, + "period": { + "scope": "unspecified", + "period_from": null, + "period_to": null, + "as_of_date": null, + "has_explicit_period": false + }, + "aggregation_profile": "list_lookup" + }, + "fallback_rule_hit": null, + "sanitized_user_message": "покажи документы все по жуковке 51", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "611GYLtxH3wuRo", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Показать все документы, связанные с контрагентом Жуковка и счетом 51." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 3, + "id": "Q_CONTRACTS_SVK", + "question": "покажи договора по свк", + "session": null, + "session_id": "asst-Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02_v3-q_contracts_svk", + "status_code": 200, + "ok": true, + "elapsed_ms": 7065, + "reply_type": "factual", + "trace_id": "address-pKnNcIgPKe", + "assistant_reply": "Собран список договоров по контрагенту (catalog address lane).\nСтрок отобрано: 1.\nУникальных договоров: 1.\nКонтрагент: Группа\n1. Договор № 1-ПМ/2020 от 05.06.2020", + "assistant_reply_first_line": "Собран список договоров по контрагенту (catalog address lane).", + "expected_intent": "list_contracts_by_counterparty", + "actual_intent": "list_contracts_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_contracts_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 394, + "rows_matched": 1, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_attempted": true, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "llm_canonical_candidate_detected": true, + "fallback_rule_hit": null, + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "predecompose_contract_intent": "list_contracts_by_counterparty", + "predecompose_contract_aggregation_profile": "list_lookup", + "predecompose_contract_period_scope": "unspecified", + "debug_payload": { + "trace_id": "address-pKnNcIgPKe", + "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", + "object_signal_detected", + "contracts_by_counterparty_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": "list_contracts_by_counterparty", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "counterparty": "свк" + }, + "missing_required_filters": [], + "selected_recipe": "address_contracts_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": 394, + "raw_rows_received": 394, + "rows_after_account_scope": 394, + "rows_after_recipe_filter": 1, + "rows_materialized": 394, + "rows_matched": 1, + "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": "WG22lpXFFEGlrJ", + "llm_decomposition_effective_message": "покажи договора по свк", + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "llm_canonical_candidate_detected": true, + "llm_predecompose_contract": { + "schema_version": "address_llm_predecompose_contract_v1", + "source_message": "покажи договора по свк", + "canonical_message": "покажи договора по свк", + "mode": "address_query", + "mode_confidence": "high", + "query_shape": "OBJECT_LOOKUP", + "query_shape_confidence": "medium", + "intent": "list_contracts_by_counterparty", + "intent_confidence": "medium", + "entities": { + "account": null, + "counterparty": "свк", + "contract": null, + "document_type": null, + "document_ref": null, + "organization": null + }, + "period": { + "scope": "unspecified", + "period_from": null, + "period_to": null, + "as_of_date": null, + "has_explicit_period": false + }, + "aggregation_profile": "list_lookup" + }, + "fallback_rule_hit": null, + "sanitized_user_message": "покажи договора по свк", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "WG22lpXFFEGlrJ", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "покажи договора по свк" + } + }, + "error_code": null, + "error_message": null + } + ] +} diff --git a/docs/ADDRESS/runs/Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02_v3/response_audit.md b/docs/ADDRESS/runs/Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02_v3/response_audit.md new file mode 100644 index 0000000..866faba --- /dev/null +++ b/docs/ADDRESS/runs/Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02_v3/response_audit.md @@ -0,0 +1,7 @@ +# Response Audit: Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02_v3 + +| id | strict | route_health | reply_type | intent | limited_reason | question | assistant_first_line | +|---|---|---|---|---|---|---|---| +| Q_CONTRACTS_ZHUKOVKA | True | ok_or_factual | factual | list_contracts_by_counterparty | None | покажи договора все по жуковке 51 | Собран список договоров по контрагенту (catalog address lane). | +| Q_DOCS_ZHUKOVKA | False | likely_blocked_route | partial_coverage | list_documents_by_counterparty | empty_match | покажи документы все по жуковке 51 | В live-данных по текущему фильтру записи не найдены. | +| Q_CONTRACTS_SVK | True | ok_or_factual | factual | list_contracts_by_counterparty | None | покажи договора по свк | Собран список договоров по контрагенту (catalog address lane). | diff --git a/docs/ADDRESS/runs/Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02_v3/run_summary.json b/docs/ADDRESS/runs/Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02_v3/run_summary.json new file mode 100644 index 0000000..90d18d1 --- /dev/null +++ b/docs/ADDRESS/runs/Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02_v3/run_summary.json @@ -0,0 +1,91 @@ +{ + "run_id": "Address_Contracts_Zhukovka_Targeted_AfterFix_2026-04-02_v3", + "generated_at": "2026-04-02T22:36:33", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\temp_contracts_zhukovka_targeted_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", + "strict_policy": "route", + "totals": { + "questions_total": 3, + "ok_200_count": 3, + "semantic_pass_count": 3, + "semantic_pass_rate": 1.0, + "route_pass_count": 2, + "route_pass_rate": 0.6667, + "strict_pass_count": 2, + "strict_pass_rate": 0.6667, + "factual_count": 2, + "partial_coverage_count": 1, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_attempted_count": 3, + "llm_decomposition_applied_count": 1, + "llm_fallback_count": 0, + "llm_fallback_rate": 0.0, + "tool_gate_blocked_count": 0, + "tool_gate_blocked_rate": 0.0, + "avg_elapsed_ms": 7179.3 + }, + "distributions": { + "reply_type": { + "factual": 2, + "partial_coverage": 1 + }, + "actual_intent": { + "list_contracts_by_counterparty": 2, + "list_documents_by_counterparty": 1 + }, + "actual_mode": { + "address_query": 3 + }, + "mcp_call_status": { + "matched_non_empty": 2, + "materialized_but_not_anchor_matched": 1 + }, + "limited_reason_category": { + "empty_match": 1 + }, + "route_health": { + "ok_or_factual": 2, + "likely_blocked_route": 1 + }, + "tool_gate_decision": { + "run_address_lane": 3 + }, + "tool_gate_reason": { + "address_mode_classifier_detected": 3 + } + }, + "address_llm_predecompose_metrics": { + "overall": { + "llm_attempted": 3, + "llm_applied": 1, + "fallback_used": 0, + "fallback_rate": 0.0, + "tool_gate_blocked": 0, + "gate_block_rate": 0.0 + }, + "by_intent": { + "list_contracts_by_counterparty": { + "total": 2, + "llm_attempted": 2, + "llm_applied": 0, + "fallback_used": 0, + "tool_gate_blocked": 0, + "fallback_rate": 0.0, + "gate_block_rate": 0.0 + }, + "list_documents_by_counterparty": { + "total": 1, + "llm_attempted": 1, + "llm_applied": 1, + "fallback_used": 0, + "tool_gate_blocked": 0, + "fallback_rate": 0.0, + "gate_block_rate": 0.0 + } + } + } +} diff --git a/docs/ADDRESS/runs/Address_Contracts_Zhukovka_Variants_2026-04-02/README.md b/docs/ADDRESS/runs/Address_Contracts_Zhukovka_Variants_2026-04-02/README.md new file mode 100644 index 0000000..6981679 --- /dev/null +++ b/docs/ADDRESS/runs/Address_Contracts_Zhukovka_Variants_2026-04-02/README.md @@ -0,0 +1,33 @@ +# Address_Contracts_Zhukovka_Variants_2026-04-02 + +Generated at: 2026-04-02T22:34:45 +Questions file: X:\1C\NDC_1C\docs\ADDRESS\question_sets\temp_contracts_zhukovka_variants_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 +Strict policy: route + +## Totals +- questions_total: 2 +- ok_200_count: 2 +- semantic_pass_count: 2 +- semantic_pass_rate: 1.0 +- route_pass_count: 2 +- route_pass_rate: 1.0 +- strict_pass_count: 2 +- strict_pass_rate: 1.0 +- factual_count: 2 +- partial_coverage_count: 0 +- clarification_required_count: 0 +- http_error_count: 0 +- llm_decomposition_attempted_count: 2 +- llm_decomposition_applied_count: 0 +- llm_fallback_count: 0 +- llm_fallback_rate: 0.0 +- tool_gate_blocked_count: 0 +- tool_gate_blocked_rate: 0.0 +- avg_elapsed_ms: 6098 + +## Files +- run_summary.json +- full_live_results.json +- failures_only.json diff --git a/docs/ADDRESS/runs/Address_Contracts_Zhukovka_Variants_2026-04-02/failures_only.json b/docs/ADDRESS/runs/Address_Contracts_Zhukovka_Variants_2026-04-02/failures_only.json new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/docs/ADDRESS/runs/Address_Contracts_Zhukovka_Variants_2026-04-02/failures_only.json @@ -0,0 +1 @@ +[] diff --git a/docs/ADDRESS/runs/Address_Contracts_Zhukovka_Variants_2026-04-02/full_live_results.json b/docs/ADDRESS/runs/Address_Contracts_Zhukovka_Variants_2026-04-02/full_live_results.json new file mode 100644 index 0000000..55addd0 --- /dev/null +++ b/docs/ADDRESS/runs/Address_Contracts_Zhukovka_Variants_2026-04-02/full_live_results.json @@ -0,0 +1,450 @@ +{ + "run_id": "Address_Contracts_Zhukovka_Variants_2026-04-02", + "generated_at": "2026-04-02T22:34:45", + "summary": { + "run_id": "Address_Contracts_Zhukovka_Variants_2026-04-02", + "generated_at": "2026-04-02T22:34:45", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\temp_contracts_zhukovka_variants_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", + "strict_policy": "route", + "totals": { + "questions_total": 2, + "ok_200_count": 2, + "semantic_pass_count": 2, + "semantic_pass_rate": 1.0, + "route_pass_count": 2, + "route_pass_rate": 1.0, + "strict_pass_count": 2, + "strict_pass_rate": 1.0, + "factual_count": 2, + "partial_coverage_count": 0, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_attempted_count": 2, + "llm_decomposition_applied_count": 0, + "llm_fallback_count": 0, + "llm_fallback_rate": 0.0, + "tool_gate_blocked_count": 0, + "tool_gate_blocked_rate": 0.0, + "avg_elapsed_ms": 6098 + }, + "distributions": { + "reply_type": { + "factual": 2 + }, + "actual_intent": { + "list_contracts_by_counterparty": 2 + }, + "actual_mode": { + "address_query": 2 + }, + "mcp_call_status": { + "matched_non_empty": 2 + }, + "limited_reason_category": {}, + "route_health": { + "ok_or_factual": 2 + }, + "tool_gate_decision": { + "run_address_lane": 2 + }, + "tool_gate_reason": { + "address_mode_classifier_detected": 2 + } + }, + "address_llm_predecompose_metrics": { + "overall": { + "llm_attempted": 2, + "llm_applied": 0, + "fallback_used": 0, + "fallback_rate": 0.0, + "tool_gate_blocked": 0, + "gate_block_rate": 0.0 + }, + "by_intent": { + "list_contracts_by_counterparty": { + "total": 2, + "llm_attempted": 2, + "llm_applied": 0, + "fallback_used": 0, + "tool_gate_blocked": 0, + "fallback_rate": 0.0, + "gate_block_rate": 0.0 + } + } + } + }, + "rows": [ + { + "index": 1, + "id": "Q_Z1", + "question": "покажи договора все по жуковка 51", + "session": null, + "session_id": "asst-Address_Contracts_Zhukovka_Variants_2026-04-02-q_z1", + "status_code": 200, + "ok": true, + "elapsed_ms": 6007, + "reply_type": "factual", + "trace_id": "address-TmhPF8PI6s", + "assistant_reply": "Собран список договоров по контрагенту (catalog address lane).\nСтрок отобрано: 1.\nУникальных договоров: 1.\nКонтрагент: \\Жуковка 51\\.\n1. Счет № 5 от 05.04.2017", + "assistant_reply_first_line": "Собран список договоров по контрагенту (catalog address lane).", + "expected_intent": null, + "actual_intent": "list_contracts_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_contracts_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 394, + "rows_matched": 1, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_attempted": true, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "llm_canonical_candidate_detected": true, + "fallback_rule_hit": null, + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "predecompose_contract_intent": "list_contracts_by_counterparty", + "predecompose_contract_aggregation_profile": "list_lookup", + "predecompose_contract_period_scope": "unspecified", + "debug_payload": { + "trace_id": "address-TmhPF8PI6s", + "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", + "object_signal_detected", + "contracts_by_counterparty_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": "list_contracts_by_counterparty", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "counterparty": "жуковка 51" + }, + "missing_required_filters": [], + "selected_recipe": "address_contracts_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": "жуковка 51", + "anchor_value_resolved": "ТСЖ \\Жуковка 51\\", + "resolver_confidence": "medium", + "ambiguity_count": 0, + "match_failure_stage": "none", + "match_failure_reason": null, + "mcp_call_status": "matched_non_empty", + "rows_fetched": 394, + "raw_rows_received": 394, + "rows_after_account_scope": 394, + "rows_after_recipe_filter": 1, + "rows_materialized": 394, + "rows_matched": 1, + "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": "IvZkmfNCo_IQKY", + "llm_decomposition_effective_message": "покажи договора все по жуковка 51", + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "llm_canonical_candidate_detected": true, + "llm_predecompose_contract": { + "schema_version": "address_llm_predecompose_contract_v1", + "source_message": "покажи договора все по жуковка 51", + "canonical_message": "покажи договора все по жуковка 51", + "mode": "address_query", + "mode_confidence": "high", + "query_shape": "OBJECT_LOOKUP", + "query_shape_confidence": "medium", + "intent": "list_contracts_by_counterparty", + "intent_confidence": "medium", + "entities": { + "account": null, + "counterparty": "жуковка 51", + "contract": null, + "document_type": null, + "document_ref": null, + "organization": null + }, + "period": { + "scope": "unspecified", + "period_from": null, + "period_to": null, + "as_of_date": null, + "has_explicit_period": false + }, + "aggregation_profile": "list_lookup" + }, + "fallback_rule_hit": null, + "sanitized_user_message": "покажи договора все по жуковка 51", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "IvZkmfNCo_IQKY", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "покажи договора все по жуковка 51" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 2, + "id": "Q_Z2", + "question": "покажи договора все по жуковка", + "session": null, + "session_id": "asst-Address_Contracts_Zhukovka_Variants_2026-04-02-q_z2", + "status_code": 200, + "ok": true, + "elapsed_ms": 6189, + "reply_type": "factual", + "trace_id": "address-6n99HCcfbA", + "assistant_reply": "Собран список договоров по контрагенту (catalog address lane).\nСтрок отобрано: 1.\nУникальных договоров: 1.\nКонтрагент: \\Жуковка 51\\.\n1. Счет № 5 от 05.04.2017", + "assistant_reply_first_line": "Собран список договоров по контрагенту (catalog address lane).", + "expected_intent": null, + "actual_intent": "list_contracts_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_contracts_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 394, + "rows_matched": 1, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_attempted": true, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "llm_canonical_candidate_detected": true, + "fallback_rule_hit": null, + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "predecompose_contract_intent": "list_contracts_by_counterparty", + "predecompose_contract_aggregation_profile": "list_lookup", + "predecompose_contract_period_scope": "unspecified", + "debug_payload": { + "trace_id": "address-6n99HCcfbA", + "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", + "object_signal_detected", + "contracts_by_counterparty_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": "list_contracts_by_counterparty", + "detected_intent_confidence": "medium", + "extracted_filters": { + "sort": "period_desc", + "limit": 20, + "counterparty": "жуковка" + }, + "missing_required_filters": [], + "selected_recipe": "address_contracts_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": "ТСЖ \\Жуковка 51\\", + "resolver_confidence": "medium", + "ambiguity_count": 0, + "match_failure_stage": "none", + "match_failure_reason": null, + "mcp_call_status": "matched_non_empty", + "rows_fetched": 394, + "raw_rows_received": 394, + "rows_after_account_scope": 394, + "rows_after_recipe_filter": 1, + "rows_materialized": 394, + "rows_matched": 1, + "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": "fmofmG2pAzwX02", + "llm_decomposition_effective_message": "покажи договора все по жуковка", + "llm_decomposition_reason": "normalized_fragment_rejected_intent_conflict", + "llm_canonical_candidate_detected": true, + "llm_predecompose_contract": { + "schema_version": "address_llm_predecompose_contract_v1", + "source_message": "покажи договора все по жуковка", + "canonical_message": "покажи договора все по жуковка", + "mode": "address_query", + "mode_confidence": "high", + "query_shape": "OBJECT_LOOKUP", + "query_shape_confidence": "medium", + "intent": "list_contracts_by_counterparty", + "intent_confidence": "medium", + "entities": { + "account": null, + "counterparty": "жуковка", + "contract": null, + "document_type": null, + "document_ref": null, + "organization": null + }, + "period": { + "scope": "unspecified", + "period_from": null, + "period_to": null, + "as_of_date": null, + "has_explicit_period": false + }, + "aggregation_profile": "list_lookup" + }, + "fallback_rule_hit": null, + "sanitized_user_message": "покажи договора все по жуковка", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "fmofmG2pAzwX02", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "покажи договора все по жуковка" + } + }, + "error_code": null, + "error_message": null + } + ] +} diff --git a/docs/ADDRESS/runs/Address_Contracts_Zhukovka_Variants_2026-04-02/response_audit.md b/docs/ADDRESS/runs/Address_Contracts_Zhukovka_Variants_2026-04-02/response_audit.md new file mode 100644 index 0000000..c14bb46 --- /dev/null +++ b/docs/ADDRESS/runs/Address_Contracts_Zhukovka_Variants_2026-04-02/response_audit.md @@ -0,0 +1,6 @@ +# Response Audit: Address_Contracts_Zhukovka_Variants_2026-04-02 + +| id | strict | route_health | reply_type | intent | limited_reason | question | assistant_first_line | +|---|---|---|---|---|---|---|---| +| Q_Z1 | True | ok_or_factual | factual | list_contracts_by_counterparty | None | покажи договора все по жуковка 51 | Собран список договоров по контрагенту (catalog address lane). | +| Q_Z2 | True | ok_or_factual | factual | list_contracts_by_counterparty | None | покажи договора все по жуковка | Собран список договоров по контрагенту (catalog address lane). | diff --git a/docs/ADDRESS/runs/Address_Contracts_Zhukovka_Variants_2026-04-02/run_summary.json b/docs/ADDRESS/runs/Address_Contracts_Zhukovka_Variants_2026-04-02/run_summary.json new file mode 100644 index 0000000..e0d1b86 --- /dev/null +++ b/docs/ADDRESS/runs/Address_Contracts_Zhukovka_Variants_2026-04-02/run_summary.json @@ -0,0 +1,76 @@ +{ + "run_id": "Address_Contracts_Zhukovka_Variants_2026-04-02", + "generated_at": "2026-04-02T22:34:45", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\temp_contracts_zhukovka_variants_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", + "strict_policy": "route", + "totals": { + "questions_total": 2, + "ok_200_count": 2, + "semantic_pass_count": 2, + "semantic_pass_rate": 1.0, + "route_pass_count": 2, + "route_pass_rate": 1.0, + "strict_pass_count": 2, + "strict_pass_rate": 1.0, + "factual_count": 2, + "partial_coverage_count": 0, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_attempted_count": 2, + "llm_decomposition_applied_count": 0, + "llm_fallback_count": 0, + "llm_fallback_rate": 0.0, + "tool_gate_blocked_count": 0, + "tool_gate_blocked_rate": 0.0, + "avg_elapsed_ms": 6098 + }, + "distributions": { + "reply_type": { + "factual": 2 + }, + "actual_intent": { + "list_contracts_by_counterparty": 2 + }, + "actual_mode": { + "address_query": 2 + }, + "mcp_call_status": { + "matched_non_empty": 2 + }, + "limited_reason_category": {}, + "route_health": { + "ok_or_factual": 2 + }, + "tool_gate_decision": { + "run_address_lane": 2 + }, + "tool_gate_reason": { + "address_mode_classifier_detected": 2 + } + }, + "address_llm_predecompose_metrics": { + "overall": { + "llm_attempted": 2, + "llm_applied": 0, + "fallback_used": 0, + "fallback_rate": 0.0, + "tool_gate_blocked": 0, + "gate_block_rate": 0.0 + }, + "by_intent": { + "list_contracts_by_counterparty": { + "total": 2, + "llm_attempted": 2, + "llm_applied": 0, + "fallback_used": 0, + "tool_gate_blocked": 0, + "fallback_rate": 0.0, + "gate_block_rate": 0.0 + } + } + } +} diff --git a/docs/ADDRESS/runs/Address_UserRepro_Followup_Zhukovka_AfterFix_2026-04-02/README.md b/docs/ADDRESS/runs/Address_UserRepro_Followup_Zhukovka_AfterFix_2026-04-02/README.md new file mode 100644 index 0000000..1a99a1d --- /dev/null +++ b/docs/ADDRESS/runs/Address_UserRepro_Followup_Zhukovka_AfterFix_2026-04-02/README.md @@ -0,0 +1,33 @@ +# Address_UserRepro_Followup_Zhukovka_AfterFix_2026-04-02 + +Generated at: 2026-04-02T22:45:20 +Questions file: X:\1C\NDC_1C\docs\ADDRESS\question_sets\temp_user_repro_followup_zhukovka_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 +Strict policy: route + +## Totals +- questions_total: 5 +- ok_200_count: 5 +- semantic_pass_count: 5 +- semantic_pass_rate: 1.0 +- route_pass_count: 4 +- route_pass_rate: 0.8 +- strict_pass_count: 4 +- strict_pass_rate: 0.8 +- factual_count: 4 +- partial_coverage_count: 1 +- clarification_required_count: 0 +- http_error_count: 0 +- llm_decomposition_attempted_count: 5 +- llm_decomposition_applied_count: 3 +- llm_fallback_count: 0 +- llm_fallback_rate: 0.0 +- tool_gate_blocked_count: 0 +- tool_gate_blocked_rate: 0.0 +- avg_elapsed_ms: 7696.2 + +## Files +- run_summary.json +- full_live_results.json +- failures_only.json diff --git a/docs/ADDRESS/runs/Address_UserRepro_Followup_Zhukovka_AfterFix_2026-04-02/failures_only.json b/docs/ADDRESS/runs/Address_UserRepro_Followup_Zhukovka_AfterFix_2026-04-02/failures_only.json new file mode 100644 index 0000000..16f22a3 --- /dev/null +++ b/docs/ADDRESS/runs/Address_UserRepro_Followup_Zhukovka_AfterFix_2026-04-02/failures_only.json @@ -0,0 +1,188 @@ +[ + { + "index": 1, + "id": "Q_DOCS_ZH_2020", + "question": "покажи доки по жуковке за 20 год", + "session": null, + "session_id": "asst-Address_UserRepro_Followup_Zhukovka_AfterFix_2026-04-02-q_docs_zh_2020", + "status_code": 200, + "ok": true, + "elapsed_ms": 9022, + "reply_type": "partial_coverage", + "trace_id": "address-vad-ePurWq", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "assistant_reply_first_line": "В live-данных по текущему фильтру записи не найдены.", + "expected_intent": null, + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": false, + "route_health": "likely_blocked_route", + "strict_policy": "route", + "strict_pass": false, + "selected_recipe": "address_documents_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "rows_fetched": 20, + "rows_matched": 0, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_attempted": true, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "llm_canonical_candidate_detected": true, + "fallback_rule_hit": null, + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "predecompose_contract_intent": "list_documents_by_counterparty", + "predecompose_contract_aggregation_profile": "list_lookup", + "predecompose_contract_period_scope": "year", + "debug_payload": { + "trace_id": "address-vad-ePurWq", + "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-01-01", + "period_to": "2020-12-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": 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": "empty_match", + "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": "JGhXaUOXNttb2u", + "llm_decomposition_effective_message": "Показать документы по контрагенту Жуковка за 2020 год.", + "llm_decomposition_reason": "normalized_fragment_applied", + "llm_canonical_candidate_detected": true, + "llm_predecompose_contract": { + "schema_version": "address_llm_predecompose_contract_v1", + "source_message": "покажи доки по жуковке за 20 год", + "canonical_message": "Показать документы по контрагенту Жуковка за 2020 год.", + "mode": "address_query", + "mode_confidence": "high", + "query_shape": "DOCUMENT_LIST", + "query_shape_confidence": "medium", + "intent": "list_documents_by_counterparty", + "intent_confidence": "medium", + "entities": { + "account": null, + "counterparty": "Жуковка", + "contract": null, + "document_type": null, + "document_ref": null, + "organization": null + }, + "period": { + "scope": "year", + "period_from": "2020-01-01", + "period_to": "2020-12-31", + "as_of_date": null, + "has_explicit_period": true + }, + "aggregation_profile": "list_lookup" + }, + "fallback_rule_hit": null, + "sanitized_user_message": "покажи доки по жуковке за 2020 год", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "JGhXaUOXNttb2u", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Показать документы по контрагенту Жуковка за 2020 год." + } + }, + "error_code": null, + "error_message": null + } +] diff --git a/docs/ADDRESS/runs/Address_UserRepro_Followup_Zhukovka_AfterFix_2026-04-02/full_live_results.json b/docs/ADDRESS/runs/Address_UserRepro_Followup_Zhukovka_AfterFix_2026-04-02/full_live_results.json new file mode 100644 index 0000000..cb972fd --- /dev/null +++ b/docs/ADDRESS/runs/Address_UserRepro_Followup_Zhukovka_AfterFix_2026-04-02/full_live_results.json @@ -0,0 +1,1025 @@ +{ + "run_id": "Address_UserRepro_Followup_Zhukovka_AfterFix_2026-04-02", + "generated_at": "2026-04-02T22:45:20", + "summary": { + "run_id": "Address_UserRepro_Followup_Zhukovka_AfterFix_2026-04-02", + "generated_at": "2026-04-02T22:45:20", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\temp_user_repro_followup_zhukovka_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", + "strict_policy": "route", + "totals": { + "questions_total": 5, + "ok_200_count": 5, + "semantic_pass_count": 5, + "semantic_pass_rate": 1.0, + "route_pass_count": 4, + "route_pass_rate": 0.8, + "strict_pass_count": 4, + "strict_pass_rate": 0.8, + "factual_count": 4, + "partial_coverage_count": 1, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_attempted_count": 5, + "llm_decomposition_applied_count": 3, + "llm_fallback_count": 0, + "llm_fallback_rate": 0.0, + "tool_gate_blocked_count": 0, + "tool_gate_blocked_rate": 0.0, + "avg_elapsed_ms": 7696.2 + }, + "distributions": { + "reply_type": { + "partial_coverage": 1, + "factual": 4 + }, + "actual_intent": { + "list_documents_by_counterparty": 3, + "counterparty_activity_lifecycle": 2 + }, + "actual_mode": { + "address_query": 5 + }, + "mcp_call_status": { + "materialized_but_not_anchor_matched": 1, + "matched_non_empty": 4 + }, + "limited_reason_category": { + "empty_match": 1 + }, + "route_health": { + "likely_blocked_route": 1, + "ok_or_factual": 4 + }, + "tool_gate_decision": { + "run_address_lane": 5 + }, + "tool_gate_reason": { + "address_mode_classifier_detected": 4, + "llm_canonical_candidate_detected": 1 + } + }, + "address_llm_predecompose_metrics": { + "overall": { + "llm_attempted": 5, + "llm_applied": 3, + "fallback_used": 0, + "fallback_rate": 0.0, + "tool_gate_blocked": 0, + "gate_block_rate": 0.0 + }, + "by_intent": { + "list_documents_by_counterparty": { + "total": 3, + "llm_attempted": 3, + "llm_applied": 3, + "fallback_used": 0, + "tool_gate_blocked": 0, + "fallback_rate": 0.0, + "gate_block_rate": 0.0 + }, + "counterparty_activity_lifecycle": { + "total": 2, + "llm_attempted": 2, + "llm_applied": 0, + "fallback_used": 0, + "tool_gate_blocked": 0, + "fallback_rate": 0.0, + "gate_block_rate": 0.0 + } + } + } + }, + "rows": [ + { + "index": 1, + "id": "Q_DOCS_ZH_2020", + "question": "покажи доки по жуковке за 20 год", + "session": null, + "session_id": "asst-Address_UserRepro_Followup_Zhukovka_AfterFix_2026-04-02-q_docs_zh_2020", + "status_code": 200, + "ok": true, + "elapsed_ms": 9022, + "reply_type": "partial_coverage", + "trace_id": "address-vad-ePurWq", + "assistant_reply": "В live-данных по текущему фильтру записи не найдены.\nПричина: по указанному якорю и фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период или снимите часть фильтров.", + "assistant_reply_first_line": "В live-данных по текущему фильтру записи не найдены.", + "expected_intent": null, + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": false, + "route_health": "likely_blocked_route", + "strict_policy": "route", + "strict_pass": false, + "selected_recipe": "address_documents_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "materialized_but_not_anchor_matched", + "match_failure_reason": "counterparty_anchor_not_matched_in_materialized_rows", + "rows_fetched": 20, + "rows_matched": 0, + "mcp_call_status": "materialized_but_not_anchor_matched", + "limited_reason_category": "empty_match", + "llm_decomposition_attempted": true, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "llm_canonical_candidate_detected": true, + "fallback_rule_hit": null, + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "predecompose_contract_intent": "list_documents_by_counterparty", + "predecompose_contract_aggregation_profile": "list_lookup", + "predecompose_contract_period_scope": "year", + "debug_payload": { + "trace_id": "address-vad-ePurWq", + "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-01-01", + "period_to": "2020-12-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": 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": "empty_match", + "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": "JGhXaUOXNttb2u", + "llm_decomposition_effective_message": "Показать документы по контрагенту Жуковка за 2020 год.", + "llm_decomposition_reason": "normalized_fragment_applied", + "llm_canonical_candidate_detected": true, + "llm_predecompose_contract": { + "schema_version": "address_llm_predecompose_contract_v1", + "source_message": "покажи доки по жуковке за 20 год", + "canonical_message": "Показать документы по контрагенту Жуковка за 2020 год.", + "mode": "address_query", + "mode_confidence": "high", + "query_shape": "DOCUMENT_LIST", + "query_shape_confidence": "medium", + "intent": "list_documents_by_counterparty", + "intent_confidence": "medium", + "entities": { + "account": null, + "counterparty": "Жуковка", + "contract": null, + "document_type": null, + "document_ref": null, + "organization": null + }, + "period": { + "scope": "year", + "period_from": "2020-01-01", + "period_to": "2020-12-31", + "as_of_date": null, + "has_explicit_period": true + }, + "aggregation_profile": "list_lookup" + }, + "fallback_rule_hit": null, + "sanitized_user_message": "покажи доки по жуковке за 2020 год", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "JGhXaUOXNttb2u", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Показать документы по контрагенту Жуковка за 2020 год." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 2, + "id": "Q_CUST_2020", + "question": "покажи заказчиков за 20 год", + "session": "cust_followup_2020_2021", + "session_id": "asst-Address_UserRepro_Followup_Zhukovka_AfterFix_2026-04-02-cust_followup_2020_2021", + "status_code": 200, + "ok": true, + "elapsed_ms": 5882, + "reply_type": "factual", + "trace_id": "address-O2LzNxjyDd", + "assistant_reply": "Собран профиль активности заказчиков (bank-doc activity aggregate).\nСтрок агрегата: 13.\nАктивные заказчики в 2020 году: 13.\n1. Группа | операций: 13 | последняя активность: 2020-12-30T12:00:00Z\n2. СБЕРБАНК, ПАО | операций: 9 | последняя активность: 2020-03-02T12:00:04Z\n3. ЭталонМебель | операций: 4 | последняя активность: 2020-04-27T12:00:00Z\n4. Гамма-мебель, ООО | операций: 3 | последняя активность: 2020-08-11T13:15:30Z\n5. ЗАО Ремонтно-строительная фирма «Ремстройсервис» | операций: 3 | последняя активность: 2020-06-03T00:00:02Z\n6. НОРТОН | операций: 3 | последняя активность: 2020-03-19T12:00:00Z\n8. ИП Калинин Н.М. | операций: 2 | последняя активность: 2020-03-02T12:00:03Z\n9. МНН | операций: 1 | последняя активность: 2020-08-11T13:16:37Z\n10. «Олимпстрой» | операций: 1 | последняя активность: 2020-07-13T12:00:00Z\n11. ПрофТренд,ООО | операций: 1 | последняя активность: 2020-05-15T12:00:02Z\n12. Лайсвуд, ООО | операций: 1 | последняя активность: 2020-03-02T12:00:02Z\n13. Смарт | операций: 1 | последняя активность: 2020-02-07T12:00:03Z", + "assistant_reply_first_line": "Собран профиль активности заказчиков (bank-doc activity aggregate).", + "expected_intent": null, + "actual_intent": "counterparty_activity_lifecycle", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_counterparty_activity_lifecycle_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 13, + "rows_matched": 13, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_attempted": true, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_rejected_intent_drop", + "llm_canonical_candidate_detected": true, + "fallback_rule_hit": null, + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "predecompose_contract_intent": "counterparty_activity_lifecycle", + "predecompose_contract_aggregation_profile": "management_profile", + "predecompose_contract_period_scope": "year", + "debug_payload": { + "trace_id": "address-O2LzNxjyDd", + "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", + "counterparty_activity_lifecycle_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": "counterparty_activity_lifecycle", + "detected_intent_confidence": "high", + "extracted_filters": { + "sort": "period_desc", + "period_from": "2020-01-01", + "period_to": "2020-12-31" + }, + "missing_required_filters": [], + "selected_recipe": "address_counterparty_activity_lifecycle_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "matched_non_empty", + "rows_fetched": 13, + "raw_rows_received": 13, + "rows_after_account_scope": 13, + "rows_after_recipe_filter": 13, + "rows_materialized": 13, + "rows_matched": 13, + "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": "PcA5AkK87QkqKs", + "llm_decomposition_effective_message": "покажи заказчиков за 20 год", + "llm_decomposition_reason": "normalized_fragment_rejected_intent_drop", + "llm_canonical_candidate_detected": true, + "llm_predecompose_contract": { + "schema_version": "address_llm_predecompose_contract_v1", + "source_message": "покажи заказчиков за 20 год", + "canonical_message": "покажи заказчиков за 20 год", + "mode": "address_query", + "mode_confidence": "high", + "query_shape": "UNKNOWN", + "query_shape_confidence": "low", + "intent": "counterparty_activity_lifecycle", + "intent_confidence": "high", + "entities": { + "account": null, + "counterparty": null, + "contract": null, + "document_type": null, + "document_ref": null, + "organization": null + }, + "period": { + "scope": "year", + "period_from": "2020-01-01", + "period_to": "2020-12-31", + "as_of_date": null, + "has_explicit_period": true + }, + "aggregation_profile": "management_profile" + }, + "fallback_rule_hit": null, + "sanitized_user_message": "покажи заказчиков за 2020 год", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "PcA5AkK87QkqKs", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "покажи заказчиков за 20 год" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 3, + "id": "Q_CUST_2021_FOLLOWUP", + "question": "теперь за 21", + "session": "cust_followup_2020_2021", + "session_id": "asst-Address_UserRepro_Followup_Zhukovka_AfterFix_2026-04-02-cust_followup_2020_2021", + "status_code": 200, + "ok": true, + "elapsed_ms": 6072, + "reply_type": "factual", + "trace_id": "address-MFxq1wGm7j", + "assistant_reply": "Собран профиль активности заказчиков (bank-doc activity aggregate).\nСтрок агрегата: 1.\nАктивные заказчики в выбранном периоде: 1.\n1. Группа | операций: 13 | последняя активность: 2021-11-10T12:00:07Z", + "assistant_reply_first_line": "Собран профиль активности заказчиков (bank-doc activity aggregate).", + "expected_intent": null, + "actual_intent": "counterparty_activity_lifecycle", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_counterparty_activity_lifecycle_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1, + "rows_matched": 1, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_attempted": true, + "llm_decomposition_applied": false, + "llm_decomposition_reason": "normalized_fragment_same", + "llm_canonical_candidate_detected": true, + "fallback_rule_hit": null, + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "llm_canonical_candidate_detected", + "predecompose_contract_intent": "unknown", + "predecompose_contract_aggregation_profile": "unknown", + "predecompose_contract_period_scope": "year", + "debug_payload": { + "trace_id": "address-MFxq1wGm7j", + "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", + "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": "counterparty_activity_lifecycle", + "detected_intent_confidence": "low", + "extracted_filters": { + "sort": "period_desc", + "period_from": "2021-01-01", + "period_to": "2021-12-31" + }, + "missing_required_filters": [], + "selected_recipe": "address_counterparty_activity_lifecycle_v1", + "mcp_call_status_legacy": "matched_non_empty", + "account_scope_mode": "preferred", + "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": "matched_non_empty", + "rows_fetched": 1, + "raw_rows_received": 1, + "rows_after_account_scope": 1, + "rows_after_recipe_filter": 1, + "rows_materialized": 1, + "rows_matched": 1, + "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": "c1NkIwWkR0qhlo", + "llm_decomposition_effective_message": "теперь за 21", + "llm_decomposition_reason": "normalized_fragment_same", + "llm_canonical_candidate_detected": true, + "llm_predecompose_contract": { + "schema_version": "address_llm_predecompose_contract_v1", + "source_message": "теперь за 21", + "canonical_message": "теперь за 21", + "mode": "unsupported", + "mode_confidence": "low", + "query_shape": "UNKNOWN", + "query_shape_confidence": "low", + "intent": "unknown", + "intent_confidence": "low", + "entities": { + "account": null, + "counterparty": null, + "contract": null, + "document_type": null, + "document_ref": null, + "organization": null + }, + "period": { + "scope": "year", + "period_from": "2021-01-01", + "period_to": "2021-12-31", + "as_of_date": null, + "has_explicit_period": true + }, + "aggregation_profile": "unknown" + }, + "fallback_rule_hit": null, + "sanitized_user_message": "теперь за 21", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "llm_canonical_candidate_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "c1NkIwWkR0qhlo", + "prompt_version": "normalizer_v2_0_2", + "applied": false, + "effective_message": "теперь за 21" + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 4, + "id": "Q_DOCS_ZH_ALL", + "question": "покажи доки по жуковке за все время", + "session": null, + "session_id": "asst-Address_UserRepro_Followup_Zhukovka_AfterFix_2026-04-02-q_docs_zh_all", + "status_code": 200, + "ok": true, + "elapsed_ms": 8491, + "reply_type": "factual", + "trace_id": "address-20cCDABQi5", + "assistant_reply": "В последних доступных записях якорь не подтвердился; показаны найденные строки по историческому окну.\nСобран список документов по контрагенту (live address lane).\nСтрок отобрано: 1.\n1. 2017-04-10T16:50:38Z | Поступление на расчетный счет 00000000010 от 10.04.2017 16:50:38 | 0 / 0 | 49500 | аналитика: \\Жуковка 51\\", + "assistant_reply_first_line": "В последних доступных записях якорь не подтвердился; показаны найденные строки по историческому окну.", + "expected_intent": null, + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 1, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_attempted": true, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "llm_canonical_candidate_detected": true, + "fallback_rule_hit": null, + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "predecompose_contract_intent": "list_documents_by_counterparty", + "predecompose_contract_aggregation_profile": "list_lookup", + "predecompose_contract_period_scope": "all_time", + "debug_payload": { + "trace_id": "address-20cCDABQi5", + "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", + "historical_window_sort_recovery_applied" + ], + "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": "ТСЖ \\Жуковка 51\\", + "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": 145, + "rows_after_recipe_filter": 1, + "rows_materialized": 145, + "rows_matched": 1, + "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": "9h35cQJD2xAj3d", + "llm_decomposition_effective_message": "Показать документы по контрагенту Жуковка за весь период.", + "llm_decomposition_reason": "normalized_fragment_applied", + "llm_canonical_candidate_detected": true, + "llm_predecompose_contract": { + "schema_version": "address_llm_predecompose_contract_v1", + "source_message": "покажи доки по жуковке за все время", + "canonical_message": "Показать документы по контрагенту Жуковка за весь период.", + "mode": "address_query", + "mode_confidence": "high", + "query_shape": "DOCUMENT_LIST", + "query_shape_confidence": "medium", + "intent": "list_documents_by_counterparty", + "intent_confidence": "medium", + "entities": { + "account": null, + "counterparty": "Жуковка", + "contract": null, + "document_type": null, + "document_ref": null, + "organization": null + }, + "period": { + "scope": "all_time", + "period_from": null, + "period_to": null, + "as_of_date": null, + "has_explicit_period": false + }, + "aggregation_profile": "list_lookup" + }, + "fallback_rule_hit": null, + "sanitized_user_message": "покажи доки по жуковке за все время", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "9h35cQJD2xAj3d", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Показать документы по контрагенту Жуковка за весь период." + } + }, + "error_code": null, + "error_message": null + }, + { + "index": 5, + "id": "Q_DOCS_ZH51_ALL", + "question": "покажи доки по жуковке 51 за все время", + "session": null, + "session_id": "asst-Address_UserRepro_Followup_Zhukovka_AfterFix_2026-04-02-q_docs_zh51_all", + "status_code": 200, + "ok": true, + "elapsed_ms": 9014, + "reply_type": "factual", + "trace_id": "address-U6VMhQxlH9", + "assistant_reply": "В последних доступных записях якорь не подтвердился; показаны найденные строки по историческому окну.\nСобран список документов по контрагенту (live address lane).\nСтрок отобрано: 1.\n1. 2017-04-10T16:50:38Z | Поступление на расчетный счет 00000000010 от 10.04.2017 16:50:38 | 0 / 0 | 49500 | аналитика: \\Жуковка 51\\", + "assistant_reply_first_line": "В последних доступных записях якорь не подтвердился; показаны найденные строки по историческому окну.", + "expected_intent": null, + "actual_intent": "list_documents_by_counterparty", + "intent_match": true, + "expected_mode": "address_query", + "actual_mode": "address_query", + "mode_match": true, + "expected_reply_type": null, + "reply_match": true, + "semantic_pass": true, + "route_pass": true, + "route_health": "ok_or_factual", + "strict_policy": "route", + "strict_pass": true, + "selected_recipe": "address_documents_by_counterparty_v1", + "missing_required_filters": [], + "match_failure_stage": "none", + "match_failure_reason": null, + "rows_fetched": 1000, + "rows_matched": 1, + "mcp_call_status": "matched_non_empty", + "limited_reason_category": null, + "llm_decomposition_attempted": true, + "llm_decomposition_applied": true, + "llm_decomposition_reason": "normalized_fragment_applied", + "llm_canonical_candidate_detected": true, + "fallback_rule_hit": null, + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "predecompose_contract_intent": "list_documents_by_counterparty", + "predecompose_contract_aggregation_profile": "list_lookup", + "predecompose_contract_period_scope": "all_time", + "debug_payload": { + "trace_id": "address-U6VMhQxlH9", + "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", + "historical_window_sort_recovery_applied" + ], + "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, + "account": "51", + "counterparty": "Жуковка по счету 51" + }, + "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": "Жуковка по счету 51", + "anchor_value_resolved": "Жуковка по счету 51", + "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": 145, + "rows_after_recipe_filter": 1, + "rows_materialized": 145, + "rows_matched": 1, + "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": "mRNp_YctIT2N1J", + "llm_decomposition_effective_message": "Показать документы контрагента Жуковка по счету 51 за весь период.", + "llm_decomposition_reason": "normalized_fragment_applied", + "llm_canonical_candidate_detected": true, + "llm_predecompose_contract": { + "schema_version": "address_llm_predecompose_contract_v1", + "source_message": "покажи доки по жуковке 51 за все время", + "canonical_message": "Показать документы контрагента Жуковка по счету 51 за весь период.", + "mode": "address_query", + "mode_confidence": "high", + "query_shape": "DOCUMENT_LIST", + "query_shape_confidence": "medium", + "intent": "list_documents_by_counterparty", + "intent_confidence": "medium", + "entities": { + "account": "51", + "counterparty": "Жуковка по счету 51", + "contract": null, + "document_type": null, + "document_ref": null, + "organization": null + }, + "period": { + "scope": "all_time", + "period_from": null, + "period_to": null, + "as_of_date": null, + "has_explicit_period": false + }, + "aggregation_profile": "list_lookup" + }, + "fallback_rule_hit": null, + "sanitized_user_message": "покажи доки по жуковке 51 за все время", + "tool_gate_decision": "run_address_lane", + "tool_gate_reason": "address_mode_classifier_detected", + "answer_structure_v11": null, + "investigation_state_snapshot": null, + "normalized": null, + "normalizer_output": { + "trace_id": "mRNp_YctIT2N1J", + "prompt_version": "normalizer_v2_0_2", + "applied": true, + "effective_message": "Показать документы контрагента Жуковка по счету 51 за весь период." + } + }, + "error_code": null, + "error_message": null + } + ] +} diff --git a/docs/ADDRESS/runs/Address_UserRepro_Followup_Zhukovka_AfterFix_2026-04-02/response_audit.md b/docs/ADDRESS/runs/Address_UserRepro_Followup_Zhukovka_AfterFix_2026-04-02/response_audit.md new file mode 100644 index 0000000..3966ba5 --- /dev/null +++ b/docs/ADDRESS/runs/Address_UserRepro_Followup_Zhukovka_AfterFix_2026-04-02/response_audit.md @@ -0,0 +1,9 @@ +# Response Audit: Address_UserRepro_Followup_Zhukovka_AfterFix_2026-04-02 + +| id | strict | route_health | reply_type | intent | limited_reason | question | assistant_first_line | +|---|---|---|---|---|---|---|---| +| Q_DOCS_ZH_2020 | False | likely_blocked_route | partial_coverage | list_documents_by_counterparty | empty_match | покажи доки по жуковке за 20 год | В live-данных по текущему фильтру записи не найдены. | +| Q_CUST_2020 | True | ok_or_factual | factual | counterparty_activity_lifecycle | None | покажи заказчиков за 20 год | Собран профиль активности заказчиков (bank-doc activity aggregate). | +| Q_CUST_2021_FOLLOWUP | True | ok_or_factual | factual | counterparty_activity_lifecycle | None | теперь за 21 | Собран профиль активности заказчиков (bank-doc activity aggregate). | +| Q_DOCS_ZH_ALL | True | ok_or_factual | factual | list_documents_by_counterparty | None | покажи доки по жуковке за все время | В последних доступных записях якорь не подтвердился; показаны найденные строки по историческому окну. | +| Q_DOCS_ZH51_ALL | True | ok_or_factual | factual | list_documents_by_counterparty | None | покажи доки по жуковке 51 за все время | В последних доступных записях якорь не подтвердился; показаны найденные строки по историческому окну. | diff --git a/docs/ADDRESS/runs/Address_UserRepro_Followup_Zhukovka_AfterFix_2026-04-02/run_summary.json b/docs/ADDRESS/runs/Address_UserRepro_Followup_Zhukovka_AfterFix_2026-04-02/run_summary.json new file mode 100644 index 0000000..9ce70a7 --- /dev/null +++ b/docs/ADDRESS/runs/Address_UserRepro_Followup_Zhukovka_AfterFix_2026-04-02/run_summary.json @@ -0,0 +1,92 @@ +{ + "run_id": "Address_UserRepro_Followup_Zhukovka_AfterFix_2026-04-02", + "generated_at": "2026-04-02T22:45:20", + "source_questions_file": "X:\\1C\\NDC_1C\\docs\\ADDRESS\\question_sets\\temp_user_repro_followup_zhukovka_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", + "strict_policy": "route", + "totals": { + "questions_total": 5, + "ok_200_count": 5, + "semantic_pass_count": 5, + "semantic_pass_rate": 1.0, + "route_pass_count": 4, + "route_pass_rate": 0.8, + "strict_pass_count": 4, + "strict_pass_rate": 0.8, + "factual_count": 4, + "partial_coverage_count": 1, + "clarification_required_count": 0, + "http_error_count": 0, + "llm_decomposition_attempted_count": 5, + "llm_decomposition_applied_count": 3, + "llm_fallback_count": 0, + "llm_fallback_rate": 0.0, + "tool_gate_blocked_count": 0, + "tool_gate_blocked_rate": 0.0, + "avg_elapsed_ms": 7696.2 + }, + "distributions": { + "reply_type": { + "partial_coverage": 1, + "factual": 4 + }, + "actual_intent": { + "list_documents_by_counterparty": 3, + "counterparty_activity_lifecycle": 2 + }, + "actual_mode": { + "address_query": 5 + }, + "mcp_call_status": { + "materialized_but_not_anchor_matched": 1, + "matched_non_empty": 4 + }, + "limited_reason_category": { + "empty_match": 1 + }, + "route_health": { + "likely_blocked_route": 1, + "ok_or_factual": 4 + }, + "tool_gate_decision": { + "run_address_lane": 5 + }, + "tool_gate_reason": { + "address_mode_classifier_detected": 4, + "llm_canonical_candidate_detected": 1 + } + }, + "address_llm_predecompose_metrics": { + "overall": { + "llm_attempted": 5, + "llm_applied": 3, + "fallback_used": 0, + "fallback_rate": 0.0, + "tool_gate_blocked": 0, + "gate_block_rate": 0.0 + }, + "by_intent": { + "list_documents_by_counterparty": { + "total": 3, + "llm_attempted": 3, + "llm_applied": 3, + "fallback_used": 0, + "tool_gate_blocked": 0, + "fallback_rate": 0.0, + "gate_block_rate": 0.0 + }, + "counterparty_activity_lifecycle": { + "total": 2, + "llm_attempted": 2, + "llm_applied": 0, + "fallback_used": 0, + "tool_gate_blocked": 0, + "fallback_rate": 0.0, + "gate_block_rate": 0.0 + } + } + } +} diff --git a/llm_normalizer/backend/dist/services/addressFilterExtractor.js b/llm_normalizer/backend/dist/services/addressFilterExtractor.js index 6f7de18..bc557dc 100644 --- a/llm_normalizer/backend/dist/services/addressFilterExtractor.js +++ b/llm_normalizer/backend/dist/services/addressFilterExtractor.js @@ -18,6 +18,7 @@ const YEAR_RANGE_LOOSE_PATTERN = /\b(20\d{2})\b\s*(?:[-‐‑‒–—―−]|д const YEAR_PERIOD_PATTERN = /(?:за|for)\s*(20\d{2})(?!\s*(?:[-‐‑‒–—―−]|до|to|по)\s*20\d{2})\s*(?:г(?:од|ода)?\.?|year|god)?/iu; const YEAR_PERIOD_SHORT_PATTERN = /(?:^|[\s,.;:!?()\-])(\d{2})\s*(?:г(?:од|ода)?\.?|year|god)(?=$|[\s,.;:!?()\-])/iu; const YEAR_PERIOD_SHORT_ORDINAL_PATTERN = /(?:^|[\s,.;:!?()\-])(?:за|for|на|in)?\s*(\d{2})\s*(?:[-\s]?(?:й|ый|ой|th))(?:\s*(?:г(?:од|ода)?\.?|year|period|период))?(?=$|[\s,.;:!?()\-])/iu; +const YEAR_PERIOD_SHORT_BARE_PATTERN = /(?:^|[\s,.;:!?()\-])(?:за|for|на|in)\s*(\d{2})(?=$|[\s,.;:!?()\-])/iu; const YEAR_PERIOD_ANY_PATTERN = /(?:^|[\s,.;:!?()\-])((?:19|20)\d{2})(?!\s*(?:[-‐‑‒–—―−]|до|to|по)\s*(?:19|20)\d{2})(?![.\/-]\d)(?:\s*(?:г(?:од|ода)?\.?|year))?(?=$|[\s,.;:!?()\-])/iu; const MONTH_PERIOD_NUMERIC_MONTH_YEAR_PATTERN = /(?:^|[\s,.;:!?()\-])(?:за|for|на|in)?\s*(0?[1-9]|1[0-2])[.\/-](20\d{2})(?=$|[\s,.;:!?()\-])/iu; const MONTH_PERIOD_NUMERIC_YEAR_MONTH_PATTERN = /(?:^|[\s,.;:!?()\-])(?:за|for|на|in)?\s*(20\d{2})[.\/-](0?[1-9]|1[0-2])(?=$|[\s,.;:!?()\-])/iu; @@ -261,6 +262,17 @@ function extractYearPeriod(text) { }; } } + const shortBareMatch = text.match(YEAR_PERIOD_SHORT_BARE_PATTERN); + if (shortBareMatch) { + const shortYear = Number(shortBareMatch[1]); + if (Number.isFinite(shortYear) && shortYear >= 0 && shortYear <= 99) { + const year = 2000 + shortYear; + return { + period_from: `${year}-01-01`, + period_to: `${year}-12-31` + }; + } + } return {}; } function extractYearRangePeriod(text) { @@ -343,7 +355,7 @@ function hasAllTimeHint(text) { return /(?:за\s+вс[её]\s+время|за\s+весь\s+период|за\s+весь\s+срок|за\s+всю\s+истори(?:ю|и)|за\s+любой\s+период|за\s+любой\s+срок|for\s+all\s+time|all\s+time|for\s+entire\s+period|entire\s+period|for\s+any\s+period|any\s+period|for\s+full\s+history|full\s+history)/iu.test(value); } function extractLooseByAnchorValue(text) { - const match = String(text ?? "").match(/(?:^|\s)по\s+([\p{L}][\p{L}\p{N}._-]{1,})(?=[\s,.;:!?)]|$)/iu); + const match = String(text ?? "").match(/(?:^|\s)по\s+([\p{L}][\p{L}\p{N}._-]{1,}(?:\s+\d{1,6})?)(?=[\s,.;:!?)]|$)/iu); if (!match) { return undefined; } @@ -376,6 +388,7 @@ function extractLooseByAnchorValue(text) { "периоду", "период", "документам", + "документами", "докам", "взаиморасчетам", "взаиморасчётам", @@ -387,6 +400,13 @@ function extractLooseByAnchorValue(text) { "раскрой", "раскрыть", "раскройте", + "связанный", + "связанные", + "связанных", + "связанным", + "связанному", + "related", + "linked", "нему", "ней", "ним", @@ -444,6 +464,13 @@ function isLikelyCounterpartyToken(rawToken) { "документ", "документы", "документов", + "документами", + "документу", + "документе", + "документа", + "документах", + "докам", + "доками", "банк", "банковские", "операции", @@ -506,7 +533,14 @@ function isLikelyCounterpartyToken(rawToken) { "dokument", "dokumenty", "documents", - "docs" + "docs", + "связанный", + "связанные", + "связанных", + "связанным", + "связанному", + "related", + "linked" ]); return !stopWords.has(lowered); } @@ -670,7 +704,9 @@ function requiredFiltersByIntent(intent) { if (intent === "account_balance_snapshot" || intent === "documents_forming_balance") { return ["account", "as_of_date"]; } - if (intent === "list_documents_by_counterparty" || intent === "bank_operations_by_counterparty") { + if (intent === "list_documents_by_counterparty" || + intent === "bank_operations_by_counterparty" || + intent === "list_contracts_by_counterparty") { return ["counterparty"]; } if (intent === "list_documents_by_contract" || intent === "bank_operations_by_contract") { @@ -684,10 +720,17 @@ function usesAsOfPrimaryWindow(intent) { function extractAddressFilters(userMessage, intent) { const rawText = String(userMessage ?? "").trim(); const text = normalizeMojibakeString(rawText); + const isManagementProfileIntent = intent === "period_coverage_profile" || + intent === "document_type_and_account_section_profile" || + intent === "counterparty_population_and_roles" || + intent === "counterparty_activity_lifecycle" || + intent === "contract_usage_overview"; const filters = { - sort: "period_desc", - limit: 20 + sort: "period_desc" }; + if (!isManagementProfileIntent) { + filters.limit = 20; + } const warnings = []; const accountMatch = text.match(ACCOUNT_PATTERN); if (accountMatch) { @@ -711,35 +754,48 @@ function extractAddressFilters(userMessage, intent) { if (counterpartyMatch) { filters.counterparty = cleanupAnchorValue(String(counterpartyMatch[1])); } - if (!filters.counterparty && (intent === "list_documents_by_counterparty" || intent === "bank_operations_by_counterparty")) { + if (!filters.counterparty && + (intent === "list_documents_by_counterparty" || + intent === "bank_operations_by_counterparty" || + intent === "list_contracts_by_counterparty")) { const fallbackCounterparty = extractLooseByAnchorValue(text); if (fallbackCounterparty) { filters.counterparty = cleanupAnchorValue(fallbackCounterparty); warnings.push("counterparty_anchor_derived_from_loose_by_phrase"); } } - if (!filters.counterparty && (intent === "list_documents_by_counterparty" || intent === "bank_operations_by_counterparty")) { + if (!filters.counterparty && + (intent === "list_documents_by_counterparty" || + intent === "bank_operations_by_counterparty" || + intent === "list_contracts_by_counterparty")) { const implicitCounterparty = extractImplicitCounterpartyValue(text); if (implicitCounterparty) { filters.counterparty = cleanupAnchorValue(implicitCounterparty); warnings.push("counterparty_anchor_derived_from_implicit_phrase"); } } - if (!filters.counterparty && (intent === "list_documents_by_counterparty" || intent === "bank_operations_by_counterparty")) { + if (!filters.counterparty && + (intent === "list_documents_by_counterparty" || + intent === "bank_operations_by_counterparty" || + intent === "list_contracts_by_counterparty")) { const heuristicCounterparty = extractCounterpartyFromFreeTextHeuristic(text); if (heuristicCounterparty) { filters.counterparty = cleanupAnchorValue(heuristicCounterparty); warnings.push("counterparty_anchor_derived_from_free_text_heuristic"); } } - if (!filters.counterparty && (intent === "list_documents_by_counterparty" || intent === "bank_operations_by_counterparty")) { + if (!filters.counterparty && + (intent === "list_documents_by_counterparty" || + intent === "bank_operations_by_counterparty" || + intent === "list_contracts_by_counterparty")) { const leadingCounterparty = extractLeadingCounterpartyTokenHeuristic(text); if (leadingCounterparty) { filters.counterparty = cleanupAnchorValue(leadingCounterparty); warnings.push("counterparty_anchor_derived_from_leading_token"); } } - const contractMatch = text.match(CONTRACT_PATTERN); + const shouldExtractContractAnchor = intent !== "list_contracts_by_counterparty"; + const contractMatch = shouldExtractContractAnchor ? text.match(CONTRACT_PATTERN) : null; if (contractMatch) { filters.contract = cleanupContractAnchorValue(String(contractMatch[1])); } @@ -781,6 +837,10 @@ function extractAddressFilters(userMessage, intent) { warnings.push("period_derived_from_year_phrase"); } } + if (isManagementProfileIntent && !filters.period_to && !filters.as_of_date) { + filters.period_to = new Date().toISOString().slice(0, 10); + warnings.push("period_to_defaulted_today_for_management_profile"); + } const explicitAsOfDate = extractAsOfDate(text); if (usesAsOfPrimaryWindow(intent) && explicitAsOfDate) { filters.as_of_date = explicitAsOfDate; diff --git a/llm_normalizer/backend/dist/services/addressIntentResolver.js b/llm_normalizer/backend/dist/services/addressIntentResolver.js index 17f371a..4971ad5 100644 --- a/llm_normalizer/backend/dist/services/addressIntentResolver.js +++ b/llm_normalizer/backend/dist/services/addressIntentResolver.js @@ -154,12 +154,123 @@ const BANK_OPERATION_CORE_HINTS = [ "statement", "wire" ]; +const PERIOD_COVERAGE_PROFILE_HINTS = [ + "за какие годы", + "за какие года", + "в базе есть данные", + "покрытие периодов", + "диапазон лет", + "профиль данных", + "самый активный год", + "самый активный месяц", + "самый пассивный год", + "самый пассивный месяц", + "наименее активный год", + "наименее активный месяц", + "минимум документов по году", + "минимум операций по месяцу", + "год с минимальным количеством документов", + "месяц с минимальным количеством операций", + "активный год по количеству документов", + "активный месяц по количеству операций", + "most active year", + "most active month", + "least active year", + "least active month", + "year coverage", + "data coverage" +]; +const DOCUMENT_TYPE_AND_ACCOUNT_SECTION_PROFILE_HINTS = [ + "типы документов", + "типы доков", + "документы чаще всего", + "документы реже всего", + "редкие типы документов", + "наименее используемые типы документов", + "частые типы документов", + "сводка по типам документов", + "доля типов документов", + "разделы учета", + "разделы учёта", + "наиболее заполнены", + "наименее заполнены", + "почти не используются", + "account section", + "document types usage", + "document type profile" +]; +const COUNTERPARTY_POPULATION_AND_ROLES_HINTS = [ + "сколько всего контрагентов", + "сколько уникальных контрагентов", + "сколько контрагентов в базе", + "сколько заказчиков", + "сколько поставщиков", + "сколько клиентов", + "сколько покупателей", + "скока всего контрагентов", + "скока уникальных контрагентов", + "скока контрагентов в базе", + "скока заказчиков", + "скока поставщиков", + "скока клиентов", + "скока покупателей", + "скок контрагентов", + "скок контрагентов в базе", + "скок заказчиков", + "скок поставщиков", + "скок клиентов", + "скок покупателей", + "сколько смешанных контрагентов", + "типы контрагентов", + "разбей контрагентов", + "раздели контрагентов", + "counterparty population", + "counterparty roles", + "customer supplier split" +]; +const COUNTERPARTY_ACTIVITY_LIFECYCLE_HINTS = [ + "какие заказчики работали", + "какие заказчики активны", + "какие клиенты работали", + "какие клиенты активны", + "список заказчиков", + "список клиентов", + "список заказчиков за все время", + "список клиентов за все время", + "список активных заказчиков", + "список активных клиентов", + "active customers", + "customer activity list", + "counterparty lifecycle" +]; +const CONTRACT_USAGE_OVERVIEW_HINTS = [ + "сколько всего договоров", + "сколько договоров заведено", + "сколько договоров в базе", + "сколько договоров использовались", + "сколько договоров использовалось", + "договоры total vs used", + "обзор договорной базы", + "договорная база total used", + "contracts total used", + "contract usage overview" +]; +const CONTRACT_LIST_BY_COUNTERPARTY_HINTS = [ + "договоры по", + "договора по", + "список договоров по", + "покажи договоры по", + "выведи договоры по", + "contracts by counterparty", + "list contracts by counterparty", + "show contracts by counterparty" +]; function hasAny(text, patterns) { return patterns.some((item) => text.includes(item)); } function hasCompactAccountCodeToken(text) { // Match compact account tokens like 60.01 / 62, while avoiding date fragments. - return /(? token.trim()) .filter((token) => token.length >= 2 && !PARTY_ANCHOR_STOPWORDS.has(token)); } +function anchorTokenVariants(token) { + const source = String(token ?? "").trim().toLowerCase(); + if (!source) { + return []; + } + const variants = new Set([source]); + if (/^[а-яё]+$/iu.test(source) && source.length >= 4) { + const withoutEnding = source.replace(/(?:ами|ями|ого|ему|ому|ыми|ими|иях|ях|ах|ей|ой|ом|ем|ам|ям|ую|юю|ая|яя|ое|ее|ые|ие|ов|ев|ий|ый|ой|е|у|ы|а|я|и|ю)$/iu, ""); + if (withoutEnding.length >= 3) { + variants.add(withoutEnding); + } + const withoutTrailingVowel = source.replace(/[аеёиоуыэюя]$/iu, ""); + if (withoutTrailingVowel.length >= 3) { + variants.add(withoutTrailingVowel); + } + } + return Array.from(variants); +} function matchesAnchorText(searchable, anchor) { const searchableNormalized = normalizeSearchText(searchable); const searchableLatin = transliterateCyrillicToLatin(searchableNormalized); @@ -146,8 +178,11 @@ function matchesAnchorText(searchable, anchor) { return searchableNormalized.includes(direct) || searchableLatin.includes(transliterateCyrillicToLatin(direct)); } return tokens.every((token) => { - const tokenLatin = transliterateCyrillicToLatin(token); - return searchableNormalized.includes(token) || searchableLatin.includes(tokenLatin); + const variants = anchorTokenVariants(token); + return variants.some((variant) => { + const tokenLatin = transliterateCyrillicToLatin(variant); + return searchableNormalized.includes(variant) || searchableLatin.includes(tokenLatin); + }); }); } function isLikelyLowQualityPartyAnchor(value) { @@ -218,6 +253,154 @@ function uniqueStrings(values) { .map((item) => item.trim()) .filter((item) => item.length > 0))); } +function normalizeCounterpartyName(value) { + return normalizeSearchText(String(value ?? "")) + .replace(/\s+/g, " ") + .trim(); +} +function extractCounterpartyCatalogNames(rows) { + return uniqueStrings(rows + .map((row) => { + const direct = valueAsString(row.Контрагент ?? row.counterparty ?? row.Counterparty).trim() || + valueAsString(row.Регистратор ?? row.registrator ?? row.Registrator).trim(); + return direct; + }) + .map((value) => value.trim()) + .filter((value) => value.length >= 2)); +} +function scoreCounterpartyCandidate(name, anchor) { + if (!matchesAnchorText(name, anchor)) { + return null; + } + const normalizedName = normalizeCounterpartyName(name); + const normalizedAnchor = normalizeCounterpartyName(anchor); + if (!normalizedName || !normalizedAnchor) { + return null; + } + let score = 0; + if (normalizedName === normalizedAnchor) { + score += 10_000; + } + else if (normalizedName.includes(normalizedAnchor)) { + score += 5_000; + } + else if (normalizedAnchor.includes(normalizedName) && normalizedName.length >= 4) { + score += 2_000; + } + const anchorTokens = tokenizeAnchor(anchor); + for (const token of anchorTokens) { + const variants = anchorTokenVariants(token); + let tokenScore = 0; + for (const variant of variants) { + if (normalizedName.includes(variant)) { + tokenScore = Math.max(tokenScore, Math.max(2, variant.length) * 20); + } + } + if (tokenScore === 0) { + return null; + } + score += tokenScore; + } + const lengthPenalty = Math.abs(normalizedName.length - normalizedAnchor.length); + score -= lengthPenalty; + return score; +} +function shouldAttemptCounterpartyCatalogResolution(intent, filters) { + const counterparty = typeof filters.counterparty === "string" ? filters.counterparty.trim() : ""; + if (!counterparty || isLikelyLowQualityPartyAnchor(counterparty)) { + return false; + } + return (intent === "list_contracts_by_counterparty" || + intent === "list_documents_by_counterparty" || + intent === "bank_operations_by_counterparty" || + intent === "open_items_by_counterparty_or_contract" || + intent === "list_payables_counterparties" || + intent === "list_receivables_counterparties"); +} +async function resolveCounterpartyViaCatalog(anchorRaw) { + const requested = String(anchorRaw ?? "").trim(); + if (!requested || isLikelyLowQualityPartyAnchor(requested)) { + return { + tried: false, + resolvedValue: null, + confidence: null, + ambiguityCount: 0 + }; + } + const now = Date.now(); + const cacheFresh = counterpartyCatalogCache !== null && now - counterpartyCatalogCache.loadedAt <= COUNTERPARTY_CATALOG_CACHE_TTL_MS; + let names = cacheFresh ? [...counterpartyCatalogCache.names] : []; + if (!cacheFresh) { + const mcp = await (0, addressMcpClient_1.executeAddressMcpQuery)({ + query: COUNTERPARTY_CATALOG_LOOKUP_QUERY_TEMPLATE.replaceAll("__LIMIT__", String(COUNTERPARTY_CATALOG_LOOKUP_LIMIT)), + limit: COUNTERPARTY_CATALOG_LOOKUP_LIMIT + }); + if (!mcp.error) { + names = extractCounterpartyCatalogNames(mcp.raw_rows); + if (names.length > 0) { + counterpartyCatalogCache = { + names: [...names], + loadedAt: now + }; + } + } + else if (counterpartyCatalogCache && counterpartyCatalogCache.names.length > 0) { + names = [...counterpartyCatalogCache.names]; + } + else { + return { + tried: true, + resolvedValue: null, + confidence: null, + ambiguityCount: 0 + }; + } + } + if (names.length === 0) { + return { + tried: true, + resolvedValue: null, + confidence: null, + ambiguityCount: 0 + }; + } + const scored = names + .map((name) => { + const score = scoreCounterpartyCandidate(name, requested); + return score === null ? null : { name, score }; + }) + .filter((item) => Boolean(item)) + .sort((a, b) => b.score - a.score || a.name.length - b.name.length || a.name.localeCompare(b.name, "ru")); + if (scored.length === 0) { + return { + tried: true, + resolvedValue: null, + confidence: null, + ambiguityCount: 0 + }; + } + const topScore = scored[0].score; + const topCandidates = scored.filter((item) => item.score === topScore); + const bestCandidate = topCandidates[0]; + const normalizedRequested = normalizeCounterpartyName(requested); + const normalizedBest = normalizeCounterpartyName(bestCandidate.name); + const isExact = normalizedBest === normalizedRequested; + const isStrongContains = normalizedBest.includes(normalizedRequested); + if (topCandidates.length > 1 && !isExact && !isStrongContains) { + return { + tried: true, + resolvedValue: null, + confidence: "low", + ambiguityCount: topCandidates.length - 1 + }; + } + return { + tried: true, + resolvedValue: bestCandidate.name, + confidence: isExact ? "high" : isStrongContains ? "medium" : topCandidates.length === 1 ? "medium" : "low", + ambiguityCount: topCandidates.length - 1 + }; +} function collectAnalyticsStrings(row) { const fixedKeys = [ "СубконтоДт1", @@ -390,9 +573,13 @@ function canAutoBroadenPeriodWindow(intent, filters) { intent === "list_documents_by_contract" || intent === "bank_operations_by_contract"); } +function invertSort(sort) { + return sort === "period_asc" ? "period_desc" : "period_asc"; +} function isAnchorRecoveryIntent(intent) { return (intent === "list_documents_by_counterparty" || intent === "bank_operations_by_counterparty" || + intent === "list_contracts_by_counterparty" || intent === "list_documents_by_contract" || intent === "bank_operations_by_contract" || intent === "open_items_by_counterparty_or_contract" || @@ -734,6 +921,42 @@ class AddressQueryService { reasons: baseReasons }); } + const rawCounterpartyAnchor = typeof filters.extracted_filters.counterparty === "string" ? filters.extracted_filters.counterparty.trim() : ""; + if (shouldAttemptCounterpartyCatalogResolution(intent.intent, filters.extracted_filters)) { + const catalogResolution = await resolveCounterpartyViaCatalog(rawCounterpartyAnchor); + if (catalogResolution.resolvedValue) { + if (normalizeCounterpartyName(rawCounterpartyAnchor) !== normalizeCounterpartyName(catalogResolution.resolvedValue)) { + filters.warnings.push("counterparty_anchor_resolved_via_catalog_lookup"); + } + } + else if (catalogResolution.tried) { + filters.warnings.push(catalogResolution.ambiguityCount > 0 + ? "counterparty_anchor_catalog_lookup_ambiguous" + : "counterparty_anchor_catalog_lookup_no_match"); + } + anchor = (0, resolveStage_1.resolvePrimaryAnchor)(intent.intent, filters.extracted_filters); + if (anchor.anchor_type === "counterparty") { + anchor = { + ...anchor, + anchor_value_raw: rawCounterpartyAnchor || anchor.anchor_value_raw + }; + if (catalogResolution.resolvedValue) { + anchor = { + ...anchor, + anchor_value_resolved: catalogResolution.resolvedValue, + resolver_confidence: catalogResolution.confidence ?? anchor.resolver_confidence, + ambiguity_count: Math.max(anchor.ambiguity_count, catalogResolution.ambiguityCount) + }; + } + else if (catalogResolution.ambiguityCount > 0) { + anchor = { + ...anchor, + resolver_confidence: "low", + ambiguity_count: Math.max(anchor.ambiguity_count, catalogResolution.ambiguityCount) + }; + } + } + } const plan = (0, addressRecipeCatalog_1.buildAddressRecipePlan)(recipeSelection.selected_recipe, filters.extracted_filters); const mcp = await (0, addressMcpClient_1.executeAddressMcpQuery)({ query: plan.query, @@ -817,7 +1040,7 @@ class AddressQueryService { const recoveredBankRows = applyIntentSpecificFilter("bank_operations_by_contract", filterByAnchors); const recoveredRows = recoveredBankRows.length > 0 ? recoveredBankRows : filterByAnchors; if (recoveredRows.length > 0) { - const factual = (0, composeStage_1.composeFactualReply)(intent.intent, recoveredRows); + const factual = (0, composeStage_1.composeFactualReply)(intent.intent, recoveredRows, { userMessage }); const recoveryReason = recoveredBankRows.length > 0 ? "contract_docs_recovered_via_bank_fallback" : "contract_docs_recovered_via_anchor_rows"; @@ -924,7 +1147,7 @@ class AddressQueryService { rowsAnchorMatched: expandedRowsByAnchor.length, rowsMatched: expandedFilteredRows.length }); - const expandedFactual = (0, composeStage_1.composeFactualReply)(intent.intent, expandedFilteredRows); + const expandedFactual = (0, composeStage_1.composeFactualReply)(intent.intent, expandedFilteredRows, { userMessage }); const expandedPrefix = `Период сохранен. Глубина live-выборки автоматически расширена до ${expandedPlan.limit} строк.`; const expandedLimitations = [...filters.warnings, "query_limit_auto_expanded_for_anchor_recovery"]; const expandedReasons = [...baseReasons, "query_limit_auto_expanded_for_anchor_recovery"]; @@ -1026,7 +1249,7 @@ class AddressQueryService { }); const observedWindow = deriveObservedPeriodWindow(broadenedFilteredRows); const broadenedPrefix = composeAutoBroadenedPeriodPrefix(filters.extracted_filters, observedWindow); - const broadenedFactual = (0, composeStage_1.composeFactualReply)(intent.intent, broadenedFilteredRows); + const broadenedFactual = (0, composeStage_1.composeFactualReply)(intent.intent, broadenedFilteredRows, { userMessage }); const broadenedLimitations = [...filters.warnings, "period_window_auto_broadened_to_available_data"]; const broadenedReasons = [...baseReasons, "period_window_auto_broadened_to_available_data"]; return { @@ -1079,13 +1302,120 @@ class AddressQueryService { } } } + if (filteredRows.length === 0 && + isDocumentOrBankAnchorIntent(intent.intent) && + !hasExplicitPeriodWindow(filters.extracted_filters) && + (anchor.anchor_type === "counterparty" || anchor.anchor_type === "contract")) { + const currentLimit = typeof filters.extracted_filters.limit === "number" && Number.isFinite(filters.extracted_filters.limit) + ? Math.max(1, Math.trunc(filters.extracted_filters.limit)) + : plan.limit; + const historicalFilters = { + ...filters.extracted_filters, + sort: invertSort(filters.extracted_filters.sort), + limit: Math.max(currentLimit, ADDRESS_ANCHOR_RECOVERY_LIMIT) + }; + const historicalSelection = (0, addressRecipeCatalog_1.selectAddressRecipe)(intent.intent, historicalFilters); + if (historicalSelection.selected_recipe && historicalSelection.missing_required_filters.length === 0) { + const historicalPlan = (0, addressRecipeCatalog_1.buildAddressRecipePlan)(historicalSelection.selected_recipe, historicalFilters); + const historicalMcp = await (0, addressMcpClient_1.executeAddressMcpQuery)({ + query: historicalPlan.query, + limit: historicalPlan.limit + }); + if (!historicalMcp.error) { + const historicalRawRows = toNormalizedRows(historicalMcp.raw_rows); + const historicalScopedRows = applyAccountScopeFilter(historicalRawRows, historicalPlan.account_scope); + const historicalAccountScopeFallbackApplied = historicalPlan.account_scope_mode === "preferred" && + historicalPlan.account_scope.length > 0 && + historicalRawRows.length > 0 && + historicalScopedRows.length === 0; + const historicalNormalizedRows = historicalAccountScopeFallbackApplied ? historicalRawRows : historicalScopedRows; + let historicalAnchor = (0, resolveStage_1.resolvePrimaryAnchor)(intent.intent, historicalFilters); + historicalAnchor = (0, resolveStage_1.refineAnchorFromRows)(historicalAnchor, historicalNormalizedRows); + const historicalFiltersForMatching = historicalAnchor.anchor_type === "counterparty" && historicalAnchor.anchor_value_resolved + ? { ...historicalFilters, counterparty: historicalAnchor.anchor_value_resolved } + : historicalAnchor.anchor_type === "contract" && historicalAnchor.anchor_value_resolved + ? { ...historicalFilters, contract: historicalAnchor.anchor_value_resolved } + : historicalFilters; + const historicalAccountScopeAudit = buildAccountScopeAudit({ + intent: intent.intent, + filters: historicalFiltersForMatching, + accountScope: historicalPlan.account_scope, + rowsBeforeScope: historicalRawRows.length, + rowsAfterScope: historicalNormalizedRows.length + }); + const historicalAnchorFilter = applyAddressFilters(historicalNormalizedRows, historicalFiltersForMatching); + const historicalRowsByAnchor = historicalAnchorFilter.rows; + const historicalFilteredRows = applyIntentSpecificFilter(intent.intent, historicalRowsByAnchor); + if (historicalFilteredRows.length > 0) { + const historicalRowDiagnostics = deriveRowStageDiagnostics(historicalMcp.raw_rows, historicalNormalizedRows.length, historicalNormalizedRows.length); + const historicalStageStatus = deriveMcpStageStatus({ + rawRowsReceived: historicalMcp.raw_rows.length, + rowsMaterialized: historicalNormalizedRows.length, + rowsAnchorMatched: historicalRowsByAnchor.length, + rowsMatched: historicalFilteredRows.length + }); + const historicalFactual = (0, composeStage_1.composeFactualReply)(intent.intent, historicalFilteredRows, { userMessage }); + const historicalPrefix = "В последних доступных записях якорь не подтвердился; показаны найденные строки по историческому окну."; + const historicalLimitations = [...filters.warnings, "historical_window_sort_recovery_applied"]; + const historicalReasons = [...baseReasons, "historical_window_sort_recovery_applied"]; + return { + handled: true, + reply_text: `${historicalPrefix}\n${historicalFactual.text}`, + reply_type: (0, composeStage_1.inferReplyType)(historicalFactual.responseType), + response_type: historicalFactual.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: historicalSelection.selected_recipe.recipe_id, + mcp_call_status_legacy: toLegacyMcpStatus(historicalStageStatus), + account_scope_mode: historicalPlan.account_scope_mode, + account_scope_fallback_applied: historicalAccountScopeFallbackApplied, + anchor_type: historicalAnchor.anchor_type, + anchor_value_raw: historicalAnchor.anchor_value_raw, + anchor_value_resolved: historicalAnchor.anchor_value_resolved, + resolver_confidence: historicalAnchor.resolver_confidence, + ambiguity_count: historicalAnchor.ambiguity_count, + match_failure_stage: "none", + match_failure_reason: null, + mcp_call_status: historicalStageStatus, + rows_fetched: historicalMcp.fetched_rows, + raw_rows_received: historicalMcp.raw_rows.length, + rows_after_account_scope: historicalNormalizedRows.length, + rows_after_recipe_filter: historicalRowsByAnchor.length, + rows_materialized: historicalNormalizedRows.length, + rows_matched: historicalFilteredRows.length, + raw_row_keys_sample: historicalRowDiagnostics.rawRowKeysSample, + materialization_drop_reason: historicalRowDiagnostics.materializationDropReason, + account_token_raw: historicalAccountScopeAudit.accountTokenRaw, + account_token_normalized: historicalAccountScopeAudit.accountTokenNormalized, + account_scope_fields_checked: historicalAccountScopeAudit.accountScopeFieldsChecked, + account_scope_match_strategy: historicalAccountScopeAudit.accountScopeMatchStrategy, + account_scope_drop_reason: historicalAccountScopeAudit.accountScopeDropReason, + runtime_readiness: "LIVE_QUERYABLE_WITH_LIMITS", + limited_reason_category: null, + response_type: historicalFactual.responseType, + limitations: historicalLimitations, + reasons: historicalReasons + } + }; + } + } + } + } if (filteredRows.length === 0 && isDocumentOrBankAnchorIntent(intent.intent) && normalizedRows.length > 0 && + filterByAnchors.length > 0 && (stageStatus === "materialized_but_not_anchor_matched" || stageStatus === "materialized_but_filtered_out_by_recipe")) { const documentBankFallbackRows = applyIntentSpecificFilter(intent.intent, normalizedRows); if (documentBankFallbackRows.length > 0) { - const fallbackFactual = (0, composeStage_1.composeFactualReply)(intent.intent, documentBankFallbackRows); + const fallbackFactual = (0, composeStage_1.composeFactualReply)(intent.intent, documentBankFallbackRows, { userMessage }); const fallbackLimitations = [...filters.warnings, "anchor_not_matched_fallback_rows"]; const fallbackReasons = [...baseReasons, "anchor_not_matched_fallback_rows"]; return { @@ -1221,7 +1551,7 @@ class AddressQueryService { reasons: baseReasons }); } - const factual = (0, composeStage_1.composeFactualReply)(intent.intent, filteredRows); + const factual = (0, composeStage_1.composeFactualReply)(intent.intent, filteredRows, { userMessage }); return { handled: true, reply_text: factual.text, diff --git a/llm_normalizer/backend/dist/services/addressRecipeCatalog.js b/llm_normalizer/backend/dist/services/addressRecipeCatalog.js index a155794..b3bbcfd 100644 --- a/llm_normalizer/backend/dist/services/addressRecipeCatalog.js +++ b/llm_normalizer/backend/dist/services/addressRecipeCatalog.js @@ -13,7 +13,7 @@ const MOVEMENTS_QUERY_TEMPLATE = ` РегистрБухгалтерии.Хозрасчетный КАК Движения __WHERE_CLAUSE__ УПОРЯДОЧИТЬ ПО - Движения.Период УБЫВ + Движения.Период __ORDER_DIRECTION__ `; const BANK_DOCS_QUERY_TEMPLATE = ` ВЫБРАТЬ ПЕРВЫЕ __LIMIT__ @@ -38,9 +38,303 @@ __WHERE_OUT__ Документ.ПоступлениеНаРасчетныйСчет КАК БанкПоступление __WHERE_IN__ УПОРЯДОЧИТЬ ПО + Период __ORDER_DIRECTION__ +`; +const PERIOD_COVERAGE_PROFILE_QUERY_TEMPLATE = ` +ВЫБРАТЬ + МИНИМУМ(Движения.Период) КАК Период, + "MIN_DATE" КАК Регистратор, + "" КАК СчетДт, + "" КАК СчетКт, + 0 КАК Сумма +ИЗ + РегистрБухгалтерии.Хозрасчетный КАК Движения +__WHERE_CLAUSE__ +ОБЪЕДИНИТЬ ВСЕ +ВЫБРАТЬ + МАКСИМУМ(Движения.Период) КАК Период, + "MAX_DATE" КАК Регистратор, + "" КАК СчетДт, + "" КАК СчетКт, + 0 КАК Сумма +ИЗ + РегистрБухгалтерии.Хозрасчетный КАК Движения +__WHERE_CLAUSE__ +ОБЪЕДИНИТЬ ВСЕ +ВЫБРАТЬ + НАЧАЛОПЕРИОДА(Движения.Период, ГОД) КАК Период, + "YEAR_OPS" КАК Регистратор, + "" КАК СчетДт, + "" КАК СчетКт, + КОЛИЧЕСТВО(*) КАК Сумма +ИЗ + РегистрБухгалтерии.Хозрасчетный КАК Движения +__WHERE_CLAUSE__ +СГРУППИРОВАТЬ ПО + НАЧАЛОПЕРИОДА(Движения.Период, ГОД) +ОБЪЕДИНИТЬ ВСЕ +ВЫБРАТЬ + НАЧАЛОПЕРИОДА(Движения.Период, ГОД) КАК Период, + "YEAR_DOCS" КАК Регистратор, + "" КАК СчетДт, + "" КАК СчетКт, + КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Движения.Регистратор) КАК Сумма +ИЗ + РегистрБухгалтерии.Хозрасчетный КАК Движения +__WHERE_CLAUSE__ +СГРУППИРОВАТЬ ПО + НАЧАЛОПЕРИОДА(Движения.Период, ГОД) +ОБЪЕДИНИТЬ ВСЕ +ВЫБРАТЬ + НАЧАЛОПЕРИОДА(Движения.Период, МЕСЯЦ) КАК Период, + "MONTH_OPS" КАК Регистратор, + "" КАК СчетДт, + "" КАК СчетКт, + КОЛИЧЕСТВО(*) КАК Сумма +ИЗ + РегистрБухгалтерии.Хозрасчетный КАК Движения +__WHERE_CLAUSE__ +СГРУППИРОВАТЬ ПО + НАЧАЛОПЕРИОДА(Движения.Период, МЕСЯЦ) +УПОРЯДОЧИТЬ ПО + Регистратор, + Период +`; +const DOCUMENT_TYPE_AND_SECTION_PROFILE_QUERY_TEMPLATE = ` +ВЫБРАТЬ + ДАТАВРЕМЯ(2000, 1, 1, 0, 0, 0) КАК Период, + "DOC_TYPE_DOCS" КАК Регистратор, + ПРЕДСТАВЛЕНИЕ(ТИПЗНАЧЕНИЯ(Движения.Регистратор)) КАК СчетДт, + "" КАК СчетКт, + КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Движения.Регистратор) КАК Сумма +ИЗ + РегистрБухгалтерии.Хозрасчетный КАК Движения +__WHERE_CLAUSE__ +СГРУППИРОВАТЬ ПО + ПРЕДСТАВЛЕНИЕ(ТИПЗНАЧЕНИЯ(Движения.Регистратор)) +ОБЪЕДИНИТЬ ВСЕ +ВЫБРАТЬ + ДАТАВРЕМЯ(2000, 1, 1, 0, 0, 0) КАК Период, + "SECTION_DT_OPS" КАК Регистратор, + ПРЕДСТАВЛЕНИЕ(Движения.СчетДт) КАК СчетДт, + "DT" КАК СчетКт, + КОЛИЧЕСТВО(*) КАК Сумма +ИЗ + РегистрБухгалтерии.Хозрасчетный КАК Движения +__WHERE_CLAUSE__ +СГРУППИРОВАТЬ ПО + Движения.СчетДт +ОБЪЕДИНИТЬ ВСЕ +ВЫБРАТЬ + ДАТАВРЕМЯ(2000, 1, 1, 0, 0, 0) КАК Период, + "SECTION_KT_OPS" КАК Регистратор, + ПРЕДСТАВЛЕНИЕ(Движения.СчетКт) КАК СчетДт, + "KT" КАК СчетКт, + КОЛИЧЕСТВО(*) КАК Сумма +ИЗ + РегистрБухгалтерии.Хозрасчетный КАК Движения +__WHERE_CLAUSE__ +СГРУППИРОВАТЬ ПО + Движения.СчетКт +УПОРЯДОЧИТЬ ПО + Регистратор, + Сумма УБЫВ +`; +const COUNTERPARTY_POPULATION_AND_ROLES_QUERY_TEMPLATE = ` +ВЫБРАТЬ + ДАТАВРЕМЯ(2000, 1, 1, 0, 0, 0) КАК Период, + "CP_TOTAL" КАК Регистратор, + "" КАК СчетДт, + "" КАК СчетКт, + КОЛИЧЕСТВО(*) КАК Сумма +ИЗ + Справочник.Контрагенты КАК Контрагенты +ОБЪЕДИНИТЬ ВСЕ +ВЫБРАТЬ + ДАТАВРЕМЯ(2000, 1, 1, 0, 0, 0) КАК Период, + "CP_CUSTOMER_ACTIVE" КАК Регистратор, + "" КАК СчетДт, + "" КАК СчетКт, + КОЛИЧЕСТВО(РАЗЛИЧНЫЕ БанкПоступление.Контрагент) КАК Сумма +ИЗ + Документ.ПоступлениеНаРасчетныйСчет КАК БанкПоступление +__WHERE_IN__ +ОБЪЕДИНИТЬ ВСЕ +ВЫБРАТЬ + ДАТАВРЕМЯ(2000, 1, 1, 0, 0, 0) КАК Период, + "CP_SUPPLIER_ACTIVE" КАК Регистратор, + "" КАК СчетДт, + "" КАК СчетКт, + КОЛИЧЕСТВО(РАЗЛИЧНЫЕ БанкСписание.Контрагент) КАК Сумма +ИЗ + Документ.СписаниеСРасчетногоСчета КАК БанкСписание +__WHERE_OUT__ +ОБЪЕДИНИТЬ ВСЕ +ВЫБРАТЬ + ДАТАВРЕМЯ(2000, 1, 1, 0, 0, 0) КАК Период, + "CP_MIXED_ACTIVE" КАК Регистратор, + "" КАК СчетДт, + "" КАК СчетКт, + КОЛИЧЕСТВО(*) КАК Сумма +ИЗ + (ВЫБРАТЬ РАЗЛИЧНЫЕ + БанкПоступление.Контрагент КАК Контрагент + ИЗ + Документ.ПоступлениеНаРасчетныйСчет КАК БанкПоступление + __WHERE_IN__ + ) КАК Входящие + ВНУТРЕННЕЕ СОЕДИНЕНИЕ + (ВЫБРАТЬ РАЗЛИЧНЫЕ + БанкСписание.Контрагент КАК Контрагент + ИЗ + Документ.СписаниеСРасчетногоСчета КАК БанкСписание + __WHERE_OUT__ + ) КАК Исходящие + ПО Входящие.Контрагент = Исходящие.Контрагент +ОБЪЕДИНИТЬ ВСЕ +ВЫБРАТЬ + ДАТАВРЕМЯ(2000, 1, 1, 0, 0, 0) КАК Период, + "CP_ACTIVE_UNION" КАК Регистратор, + "" КАК СчетДт, + "" КАК СчетКт, + КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Источник.Контрагент) КАК Сумма +ИЗ + (ВЫБРАТЬ + БанкПоступление.Контрагент КАК Контрагент + ИЗ + Документ.ПоступлениеНаРасчетныйСчет КАК БанкПоступление + __WHERE_IN__ + ОБЪЕДИНИТЬ ВСЕ + ВЫБРАТЬ + БанкСписание.Контрагент КАК Контрагент + ИЗ + Документ.СписаниеСРасчетногоСчета КАК БанкСписание + __WHERE_OUT__ + ) КАК Источник +УПОРЯДОЧИТЬ ПО + Регистратор +`; +const COUNTERPARTY_ACTIVITY_LIFECYCLE_QUERY_TEMPLATE = ` +ВЫБРАТЬ + МАКСИМУМ(БанкПоступление.Дата) КАК Период, + "CP_CUSTOMER_ACTIVITY" КАК Регистратор, + "" КАК СчетДт, + "" КАК СчетКт, + КОЛИЧЕСТВО(*) КАК Сумма, + ПРЕДСТАВЛЕНИЕ(БанкПоступление.Контрагент) КАК Контрагент +ИЗ + Документ.ПоступлениеНаРасчетныйСчет КАК БанкПоступление +__WHERE_IN__ +СГРУППИРОВАТЬ ПО + БанкПоступление.Контрагент +УПОРЯДОЧИТЬ ПО + Сумма УБЫВ, Период УБЫВ `; +const CONTRACT_USAGE_OVERVIEW_QUERY_TEMPLATE = ` +ВЫБРАТЬ + ДАТАВРЕМЯ(2000, 1, 1, 0, 0, 0) КАК Период, + "CT_TOTAL" КАК Регистратор, + "" КАК СчетДт, + "" КАК СчетКт, + КОЛИЧЕСТВО(*) КАК Сумма +ИЗ + Справочник.ДоговорыКонтрагентов КАК Договоры +ОБЪЕДИНИТЬ ВСЕ +ВЫБРАТЬ + ДАТАВРЕМЯ(2000, 1, 1, 0, 0, 0) КАК Период, + "CT_USED" КАК Регистратор, + "" КАК СчетДт, + "" КАК СчетКт, + КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Источник.Договор) КАК Сумма +ИЗ + (ВЫБРАТЬ + БанкПоступление.ДоговорКонтрагента КАК Договор + ИЗ + Документ.ПоступлениеНаРасчетныйСчет КАК БанкПоступление + __WHERE_IN_USED__ + ОБЪЕДИНИТЬ ВСЕ + ВЫБРАТЬ + БанкСписание.ДоговорКонтрагента КАК Договор + ИЗ + Документ.СписаниеСРасчетногоСчета КАК БанкСписание + __WHERE_OUT_USED__ + ) КАК Источник +УПОРЯДОЧИТЬ ПО + Регистратор +`; +const CONTRACTS_BY_COUNTERPARTY_QUERY_TEMPLATE = ` +ВЫБРАТЬ ПЕРВЫЕ __LIMIT__ + ДАТАВРЕМЯ(2000, 1, 1, 0, 0, 0) КАК Период, + ПРЕДСТАВЛЕНИЕ(Договоры.Ссылка) КАК Регистратор, + "" КАК СчетДт, + "" КАК СчетКт, + 0 КАК Сумма, + ПРЕДСТАВЛЕНИЕ(Договоры.Владелец) КАК Контрагент +ИЗ + Справочник.ДоговорыКонтрагентов КАК Договоры +`; const BASE_RECIPES = [ + { + recipe_id: "address_period_coverage_profile_v1", + intent: "period_coverage_profile", + purpose: "Build period coverage profile and top active year/month metrics from movements", + required_filters: [], + optional_filters: ["period_from", "period_to", "organization", "limit"], + default_limit: 600, + account_scope_mode: "preferred", + query_template: "period_profile" + }, + { + recipe_id: "address_document_type_and_account_section_profile_v1", + intent: "document_type_and_account_section_profile", + purpose: "Build document type usage ranking and account section activity profile", + required_filters: [], + optional_filters: ["period_from", "period_to", "organization", "limit"], + default_limit: 800, + account_scope_mode: "preferred", + query_template: "document_section_profile" + }, + { + recipe_id: "address_counterparty_population_roles_v1", + intent: "counterparty_population_and_roles", + purpose: "Build total counterparties and role split (customer/supplier/mixed) from catalog + bank docs", + required_filters: [], + optional_filters: ["period_from", "period_to", "organization", "limit"], + default_limit: 300, + account_scope_mode: "preferred", + query_template: "counterparty_roles_profile" + }, + { + recipe_id: "address_counterparty_activity_lifecycle_v1", + intent: "counterparty_activity_lifecycle", + purpose: "Build active customer list for requested period/all-time using bank inflow docs", + required_filters: [], + optional_filters: ["period_from", "period_to", "organization", "limit", "sort"], + default_limit: 200, + account_scope_mode: "preferred", + query_template: "counterparty_lifecycle_profile" + }, + { + recipe_id: "address_contract_usage_overview_v1", + intent: "contract_usage_overview", + purpose: "Build total-vs-used contract overview from catalog + bank docs", + required_filters: [], + optional_filters: ["period_from", "period_to", "organization", "limit"], + default_limit: 300, + account_scope_mode: "preferred", + query_template: "contract_usage_profile" + }, + { + recipe_id: "address_contracts_by_counterparty_v1", + intent: "list_contracts_by_counterparty", + purpose: "List contracts by counterparty from contract catalog", + required_filters: ["counterparty"], + optional_filters: ["limit", "sort"], + default_limit: 300, + account_scope_mode: "preferred", + query_template: "contracts_by_counterparty_profile" + }, { recipe_id: "address_movements_payables_v1", intent: "list_payables_counterparties", @@ -194,6 +488,14 @@ function buildWhereClause(filters, fieldPath, extraConditions = []) { } return ""; } +function buildManagementWhereClause(filters, fieldPath) { + return buildWhereClause(filters, fieldPath); +} +function buildUsedContractWhereClause(filters, fieldPath, contractFieldPath) { + return buildWhereClause(filters, fieldPath, [ + `${contractFieldPath} <> ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка)` + ]); +} function normalizeAccountTokenForQuery(value) { const source = String(value ?? "").trim().replace(",", "."); const match = source.match(/^(\d{2})(?:\.(\d{1,2}))?/); @@ -247,7 +549,13 @@ function shouldBoostLimitForAllTimeCounterparty(filters) { return !hasPeriod; } function maxLimitForIntent(intent) { - if (intent === "list_documents_by_counterparty" || + if (intent === "period_coverage_profile" || + intent === "document_type_and_account_section_profile" || + intent === "counterparty_population_and_roles" || + intent === "counterparty_activity_lifecycle" || + intent === "contract_usage_overview" || + intent === "list_contracts_by_counterparty" || + intent === "list_documents_by_counterparty" || intent === "bank_operations_by_counterparty" || intent === "list_documents_by_contract" || intent === "bank_operations_by_contract" || @@ -257,6 +565,9 @@ function maxLimitForIntent(intent) { } return ADDRESS_MAX_LIMIT_DEFAULT; } +function resolveOrderDirection(sort) { + return sort === "period_asc" ? "ВОЗР" : "УБЫВ"; +} function selectAddressRecipe(intent, filters) { const recipe = BASE_RECIPES.find((item) => item.intent === intent) ?? null; if (!recipe) { @@ -278,20 +589,26 @@ function selectAddressRecipe(intent, filters) { } function buildAddressRecipePlan(recipe, filters) { const maxLimit = maxLimitForIntent(recipe.intent); + const isManagementAggregateRecipe = recipe.query_template === "period_profile" || + recipe.query_template === "document_section_profile" || + recipe.query_template === "counterparty_roles_profile" || + recipe.query_template === "contract_usage_profile"; const baseLimit = typeof filters.limit === "number" && Number.isFinite(filters.limit) ? Math.max(1, Math.min(maxLimit, Math.trunc(filters.limit))) : recipe.default_limit; + const normalizedBaseLimit = isManagementAggregateRecipe && baseLimit < recipe.default_limit ? recipe.default_limit : baseLimit; const boostedLimit = (recipe.intent === "list_documents_by_counterparty" || recipe.intent === "bank_operations_by_counterparty" || + recipe.intent === "list_contracts_by_counterparty" || recipe.intent === "list_documents_by_contract" || recipe.intent === "bank_operations_by_contract") && shouldBoostLimitForAllTimeCounterparty(filters) - ? Math.max(baseLimit, maxLimit) + ? Math.max(normalizedBaseLimit, maxLimit) : (recipe.intent === "account_balance_snapshot" || recipe.intent === "documents_forming_balance") && typeof filters.account === "string" && filters.account.trim().length > 0 - ? Math.max(baseLimit, ADDRESS_MAX_LIMIT_DEFAULT) - : baseLimit; + ? Math.max(normalizedBaseLimit, ADDRESS_MAX_LIMIT_DEFAULT) + : normalizedBaseLimit; const resolvedLimit = Math.max(1, Math.min(maxLimit, boostedLimit)); const accountScope = (recipe.intent === "account_balance_snapshot" || recipe.intent === "documents_forming_balance") && filters.account ? [String(filters.account)] @@ -304,14 +621,34 @@ function buildAddressRecipePlan(recipe, filters) { .replaceAll("__LIMIT__", String(resolvedLimit)) .replace("__WHERE_OUT__", buildWhereClause(filters, "БанкСписание.Дата")) .replace("__WHERE_IN__", buildWhereClause(filters, "БанкПоступление.Дата")) - : MOVEMENTS_QUERY_TEMPLATE.replace("__LIMIT__", String(resolvedLimit)).replace("__WHERE_CLAUSE__", (() => { - const extraConditions = []; - const accountCondition = buildMovementAccountCondition(filters); - if (accountCondition) { - extraConditions.push(accountCondition); - } - return buildWhereClause(filters, "Движения.Период", extraConditions); - })()); + .replaceAll("__ORDER_DIRECTION__", resolveOrderDirection(filters.sort)) + : recipe.query_template === "period_profile" + ? PERIOD_COVERAGE_PROFILE_QUERY_TEMPLATE.replaceAll("__WHERE_CLAUSE__", buildManagementWhereClause(filters, "Движения.Период")) + : recipe.query_template === "document_section_profile" + ? DOCUMENT_TYPE_AND_SECTION_PROFILE_QUERY_TEMPLATE.replaceAll("__WHERE_CLAUSE__", buildManagementWhereClause(filters, "Движения.Период")) + : recipe.query_template === "counterparty_roles_profile" + ? COUNTERPARTY_POPULATION_AND_ROLES_QUERY_TEMPLATE + .replaceAll("__WHERE_OUT__", buildWhereClause(filters, "БанкСписание.Дата")) + .replaceAll("__WHERE_IN__", buildWhereClause(filters, "БанкПоступление.Дата")) + : recipe.query_template === "counterparty_lifecycle_profile" + ? COUNTERPARTY_ACTIVITY_LIFECYCLE_QUERY_TEMPLATE.replaceAll("__WHERE_IN__", buildWhereClause(filters, "БанкПоступление.Дата")) + : recipe.query_template === "contract_usage_profile" + ? CONTRACT_USAGE_OVERVIEW_QUERY_TEMPLATE + .replaceAll("__WHERE_OUT_USED__", buildUsedContractWhereClause(filters, "БанкСписание.Дата", "БанкСписание.ДоговорКонтрагента")) + .replaceAll("__WHERE_IN_USED__", buildUsedContractWhereClause(filters, "БанкПоступление.Дата", "БанкПоступление.ДоговорКонтрагента")) + : recipe.query_template === "contracts_by_counterparty_profile" + ? CONTRACTS_BY_COUNTERPARTY_QUERY_TEMPLATE.replaceAll("__LIMIT__", String(resolvedLimit)) + : MOVEMENTS_QUERY_TEMPLATE + .replace("__LIMIT__", String(resolvedLimit)) + .replace("__WHERE_CLAUSE__", (() => { + const extraConditions = []; + const accountCondition = buildMovementAccountCondition(filters); + if (accountCondition) { + extraConditions.push(accountCondition); + } + return buildWhereClause(filters, "Движения.Период", extraConditions); + })()) + .replaceAll("__ORDER_DIRECTION__", resolveOrderDirection(filters.sort)); return { recipe, query, diff --git a/llm_normalizer/backend/dist/services/address_runtime/composeStage.js b/llm_normalizer/backend/dist/services/address_runtime/composeStage.js index 6d36235..e71ae2a 100644 --- a/llm_normalizer/backend/dist/services/address_runtime/composeStage.js +++ b/llm_normalizer/backend/dist/services/address_runtime/composeStage.js @@ -17,6 +17,234 @@ function formatTopRows(rows, limit = 6) { return `${index + 1}. ${period} | ${row.registrator} | ${accounts} | ${amount}${analytics}`; }); } +function extractYearFromIso(value) { + const source = String(value ?? ""); + const match = source.match(/^(\d{4})-(\d{2})-(\d{2})/); + if (!match) { + return null; + } + const year = Number(match[1]); + return Number.isFinite(year) ? year : null; +} +function extractYearMonthFromIso(value) { + const source = String(value ?? ""); + const match = source.match(/^(\d{4})-(\d{2})-(\d{2})/); + if (!match) { + return null; + } + return `${match[1]}-${match[2]}`; +} +const ACCOUNT_SECTION_LABELS = { + "01": "Основные средства", + "04": "Нематериальные активы", + "08": "Вложения во внеоборотные активы", + "10": "Материалы", + "19": "НДС по приобретенным ценностям", + "20": "Основное производство", + "23": "Вспомогательные производства", + "25": "Общепроизводственные расходы", + "26": "Общехозяйственные расходы", + "41": "Товары", + "43": "Готовая продукция", + "44": "Расходы на продажу", + "50": "Касса", + "51": "Расчетные счета", + "52": "Валютные счета", + "55": "Специальные счета в банках", + "58": "Финансовые вложения", + "60": "Расчеты с поставщиками и подрядчиками", + "62": "Расчеты с покупателями и заказчиками", + "66": "Краткосрочные кредиты и займы", + "67": "Долгосрочные кредиты и займы", + "68": "Расчеты по налогам и сборам", + "69": "Расчеты по социальному страхованию", + "70": "Расчеты с персоналом по оплате труда", + "71": "Расчеты с подотчетными лицами", + "73": "Расчеты с персоналом по прочим операциям", + "75": "Расчеты с учредителями", + "76": "Расчеты с разными дебиторами и кредиторами", + "80": "Уставный капитал", + "81": "Собственные акции (доли)", + "84": "Нераспределенная прибыль (непокрытый убыток)", + "90": "Продажи", + "91": "Прочие доходы и расходы" +}; +function formatPercent(value, total) { + if (!Number.isFinite(value) || !Number.isFinite(total) || total <= 0) { + return null; + } + return `${((value / total) * 100).toFixed(1)}%`; +} +function extractAccountSectionCode(value) { + const source = String(value ?? "").trim(); + if (!source) { + return null; + } + const match = source.match(/(^|[^0-9])(\d{2})(?:[.,]\d{1,2})?/); + if (!match) { + return null; + } + return match[2]; +} +function normalizeQuestionText(value) { + return String(value ?? "") + .toLowerCase() + .replace(/ё/g, "е") + .replace(/\s+/g, " ") + .trim(); +} +function detectPeriodProfileFocus(userMessage) { + const text = normalizeQuestionText(userMessage); + if (!text) { + return "full_profile"; + } + const asksYear = /(?:\byear\b|год(?:а|у|ом|е|ы)?)/iu.test(text); + const asksMonth = /(?:\bmonth\b|месяц(?:а|у|ем|е|ы)?)/iu.test(text); + const asksDocs = /(?:\bdocument(?:s)?\b|док(?:умент(?:ы|ов|ам|ами|ах|а)?|и|ов)?)/iu.test(text); + const asksOps = /(?:\bops?\b|\boperation(?:s)?\b|операц)/iu.test(text); + const asksTop = /(?:сам(?:ый|ая|ое)\s+актив|наибол[её]е\s+актив|чаще\s+всего|most\s+active|top)/iu.test(text); + const asksBottom = /(?:сам(?:ый|ая|ое)\s+пассив|наимен[её]е\s+актив|least\s+active|миним(?:ум|альн)|наименьш)/iu.test(text); + if (asksYear && asksDocs && asksBottom) { + return "bottom_year_docs"; + } + if (asksYear && asksDocs && asksTop) { + return "top_year_docs"; + } + if (asksMonth && asksOps && asksBottom) { + return "bottom_month_ops"; + } + if (asksMonth && asksOps && asksTop) { + return "top_month_ops"; + } + if (/(?:за\s+какие\s+год[а-яё]*|годы?\s+с\s+данными|покрыт(?:ие|ия)\s+период|диапазон\s+лет|профил[ья]\s+данн|year\s+coverage|data\s+coverage)/iu.test(text)) { + return "coverage_years"; + } + return "full_profile"; +} +function detectDocumentSectionProfileFocus(userMessage) { + const text = normalizeQuestionText(userMessage); + if (!text) { + return "full_profile"; + } + const asksDocTypes = /(?:тип[аы]?\s+док|типы?\s+документ|document\s+types?)/iu.test(text); + const asksSections = /(?:раздел[ыа]?\s+уч[её]та|account\s+section)/iu.test(text); + const asksRare = /(?:реже|редк|наимен[её]е|почти\s+не|least|rare|миним(?:ум|альн))/iu.test(text); + const asksTop = /(?:чаще\s+всего|наибол[её]е|most|top|максим)/iu.test(text); + if (asksDocTypes && !asksSections) { + if (asksRare && !asksTop) { + return "doc_types_rare_only"; + } + return "doc_types_only"; + } + if (asksSections && !asksDocTypes) { + if (asksRare && !asksTop) { + return "sections_rare_only"; + } + return "sections_only"; + } + return "full_profile"; +} +function detectCounterpartyProfileFocus(userMessage) { + const text = normalizeQuestionText(userMessage); + if (!text) { + return "full_profile"; + } + const asksTotal = /(?:(?:сколько|скока|скок)\s+(?:всего\s+)?(?:уникальн(?:ых|ые|ого)?\s+)?контрагент(?:ов|а)?(?:\s+в\s+баз[еы])?|total\s+counterpart(?:y|ies))/iu.test(text); + const hasSupplierToken = /(?:поставщик(?:ов|а)?|supplier(?:s)?)/iu.test(text); + const hasCustomerToken = /(?:заказчик(?:ов|а)?|клиент(?:ов|а)?|customer(?:s)?|client(?:s)?)/iu.test(text); + const hasMixedToken = /(?:смешан|проч(?:их|ие)|mixed)/iu.test(text); + const asksRoles = /(?:заказчик(?:ов|а)?|поставщик(?:ов|а)?|смешан|проч(?:их|ие)|типы?\s+контрагент|разбей|раздели|roles?|split)/iu.test(text); + if (hasSupplierToken && !hasCustomerToken && !hasMixedToken && !asksTotal) { + return "suppliers_only"; + } + if (hasCustomerToken && !hasSupplierToken && !hasMixedToken && !asksTotal) { + return "customers_only"; + } + if (hasMixedToken && !hasSupplierToken && !hasCustomerToken && !asksTotal) { + return "mixed_only"; + } + if (asksTotal && !asksRoles) { + return "total_only"; + } + if (asksRoles && !asksTotal) { + return "roles_only"; + } + return "full_profile"; +} +function detectCounterpartyLifecycleFocus(userMessage) { + const text = normalizeQuestionText(userMessage); + if (!text) { + return "active_customers_period"; + } + if (/(?:за\s+вс[её]\s+время|all\s+time|за\s+всю\s+истори(?:ю|и))/iu.test(text)) { + return "active_customers_all_time"; + } + return "active_customers_period"; +} +function extractRequestedYearFromQuestion(userMessage) { + const text = normalizeQuestionText(userMessage); + if (!text) { + return null; + } + const fullYearMatch = text.match(/\b(19|20)\d{2}\b/); + if (fullYearMatch) { + const parsed = Number(fullYearMatch[0]); + return Number.isFinite(parsed) ? parsed : null; + } + const shortYearMatch = text.match(/(?:^|[^\d])(\d{2})\s*(?:г(?:од|ода)?|г)(?:[^\p{L}\p{N}]|$)/iu); + if (!shortYearMatch) { + return null; + } + const shortYear = Number(shortYearMatch[1]); + if (!Number.isFinite(shortYear) || shortYear < 0 || shortYear > 99) { + return null; + } + return 2000 + shortYear; +} +function extractCounterpartyName(row) { + for (const token of row.analytics) { + const normalized = String(token ?? "").trim(); + if (!normalized) { + continue; + } + if (/^\d{4}-\d{2}-\d{2}/.test(normalized)) { + continue; + } + return normalized; + } + return null; +} +function deriveOperationalYearWindow(yearDocs, yearOps) { + const docsSeries = [...yearDocs].sort((a, b) => a.year - b.year); + const fallbackSeries = [...yearOps].sort((a, b) => a.year - b.year); + const series = docsSeries.length > 0 ? docsSeries : fallbackSeries; + if (series.length === 0) { + return { + dataFrom: null, + dataTo: null, + operationalFrom: null, + operationalTo: null, + tailYears: [] + }; + } + const dataFrom = series[0]?.year ?? null; + const dataTo = series[series.length - 1]?.year ?? null; + const maxCount = Math.max(...series.map((item) => item.count)); + const significantThreshold = Math.max(20, Math.ceil(maxCount * 0.02)); + const significantYears = series.filter((item) => item.count >= significantThreshold).map((item) => item.year); + const operationalFrom = significantYears[0] ?? dataFrom; + const operationalTo = significantYears[significantYears.length - 1] ?? dataTo; + const tailYears = series + .filter((item) => operationalTo !== null && item.year > operationalTo) + .map((item) => item.year); + return { + dataFrom, + dataTo, + operationalFrom, + operationalTo, + tailYears + }; +} function contractCandidatesFromRows(rows) { const candidates = []; for (const row of rows) { @@ -32,7 +260,406 @@ function contractCandidatesFromRows(rows) { } return uniqueStrings(candidates); } -function composeFactualReply(intent, rows) { +function composeFactualReply(intent, rows, options = {}) { + if (intent === "document_type_and_account_section_profile") { + const rowsByMarker = new Map(); + for (const row of rows) { + const marker = String(row.registrator ?? "").trim().toUpperCase(); + if (!marker) { + continue; + } + if (!rowsByMarker.has(marker)) { + rowsByMarker.set(marker, []); + } + rowsByMarker.get(marker).push(row); + } + const docTypeRanking = (rowsByMarker.get("DOC_TYPE_DOCS") ?? []) + .map((row) => ({ + docType: String(row.account_dt ?? "").trim(), + count: row.amount ?? 0 + })) + .filter((item) => item.docType.length > 0) + .sort((a, b) => b.count - a.count); + const docTypeRankingLow = [...docTypeRanking] + .sort((a, b) => a.count - b.count || a.docType.localeCompare(b.docType)) + .slice(0, 10); + const sectionCounter = new Map(); + for (const marker of ["SECTION_DT_OPS", "SECTION_KT_OPS"]) { + for (const row of rowsByMarker.get(marker) ?? []) { + const sectionCode = extractAccountSectionCode(row.account_dt); + if (!sectionCode) { + continue; + } + const nextValue = (sectionCounter.get(sectionCode) ?? 0) + (row.amount ?? 0); + sectionCounter.set(sectionCode, nextValue); + } + } + const sectionRanking = Array.from(sectionCounter.entries()) + .map(([section, count]) => ({ section, count })) + .sort((a, b) => b.count - a.count || a.section.localeCompare(b.section)); + const sectionRankingLow = [...sectionRanking] + .sort((a, b) => a.count - b.count || a.section.localeCompare(b.section)) + .slice(0, 10); + const docTypeTotal = docTypeRanking.reduce((sum, item) => sum + item.count, 0); + const sectionTotal = sectionRanking.reduce((sum, item) => sum + item.count, 0); + const focus = detectDocumentSectionProfileFocus(options.userMessage); + const includeDocTypes = focus === "full_profile" || focus === "doc_types_only" || focus === "doc_types_rare_only"; + const includeSections = focus === "full_profile" || focus === "sections_only" || focus === "sections_rare_only"; + const includeDocTypesLowOnly = focus === "doc_types_rare_only"; + const includeSectionsLowOnly = focus === "sections_rare_only"; + const lines = [ + "Профиль типов документов и разделов учета собран (movement-based aggregate).", + `Строк агрегата: ${rows.length}.` + ]; + if (includeDocTypes) { + if (docTypeRanking.length > 0) { + if (includeDocTypesLowOnly) { + lines.push("Наименее используемые типы документов (по числу уникальных регистраторов):"); + lines.push(...docTypeRankingLow.map((item, index) => { + const share = formatPercent(item.count, docTypeTotal); + return share + ? `${index + 1}. ${item.docType}: ${item.count} (${share})` + : `${index + 1}. ${item.docType}: ${item.count}`; + })); + } + else { + lines.push("Топ типов документов (по числу уникальных регистраторов):"); + lines.push(...docTypeRanking.slice(0, 10).map((item, index) => { + const share = formatPercent(item.count, docTypeTotal); + return share + ? `${index + 1}. ${item.docType}: ${item.count} (${share})` + : `${index + 1}. ${item.docType}: ${item.count}`; + })); + } + } + else { + lines.push("По типам документов агрегатных строк не найдено."); + } + } + if (includeSections) { + if (sectionRanking.length > 0) { + if (includeSectionsLowOnly) { + lines.push("Наименее заполненные разделы учета (по операциям Дт+Кт):"); + lines.push(...sectionRankingLow.map((item, index) => { + const label = ACCOUNT_SECTION_LABELS[item.section]; + const sectionTitle = label ? `${item.section} (${label})` : item.section; + const share = formatPercent(item.count, sectionTotal); + return share + ? `${index + 1}. ${sectionTitle}: ${item.count} (${share})` + : `${index + 1}. ${sectionTitle}: ${item.count}`; + })); + } + else { + lines.push("Наиболее заполненные разделы учета (по операциям Дт+Кт):"); + lines.push(...sectionRanking.slice(0, 10).map((item, index) => { + const label = ACCOUNT_SECTION_LABELS[item.section]; + const sectionTitle = label ? `${item.section} (${label})` : item.section; + const share = formatPercent(item.count, sectionTotal); + return share + ? `${index + 1}. ${sectionTitle}: ${item.count} (${share})` + : `${index + 1}. ${sectionTitle}: ${item.count}`; + })); + lines.push("Разделы с минимальной активностью (среди использованных):"); + lines.push(...sectionRankingLow.map((item, index) => { + const label = ACCOUNT_SECTION_LABELS[item.section]; + const sectionTitle = label ? `${item.section} (${label})` : item.section; + return `${index + 1}. ${sectionTitle}: ${item.count}`; + })); + } + } + else { + lines.push("По разделам учета агрегатных строк не найдено."); + } + } + return { + responseType: "FACTUAL_SUMMARY", + text: lines.join("\n") + }; + } + if (intent === "period_coverage_profile") { + const rowsByMarker = new Map(); + for (const row of rows) { + const marker = String(row.registrator ?? "").trim().toUpperCase(); + if (!marker) { + continue; + } + if (!rowsByMarker.has(marker)) { + rowsByMarker.set(marker, []); + } + rowsByMarker.get(marker).push(row); + } + const minDate = rowsByMarker.get("MIN_DATE")?.[0]?.period ?? null; + const maxDate = rowsByMarker.get("MAX_DATE")?.[0]?.period ?? null; + const yearOps = (rowsByMarker.get("YEAR_OPS") ?? []) + .map((row) => ({ + year: extractYearFromIso(row.period), + count: row.amount ?? 0 + })) + .filter((item) => item.year !== null) + .sort((a, b) => b.count - a.count); + const yearDocs = (rowsByMarker.get("YEAR_DOCS") ?? []) + .map((row) => ({ + year: extractYearFromIso(row.period), + count: row.amount ?? 0 + })) + .filter((item) => item.year !== null) + .sort((a, b) => b.count - a.count); + const monthOps = (rowsByMarker.get("MONTH_OPS") ?? []) + .map((row) => ({ + month: extractYearMonthFromIso(row.period), + count: row.amount ?? 0 + })) + .filter((item) => item.month !== null) + .sort((a, b) => b.count - a.count); + const focus = detectPeriodProfileFocus(options.userMessage); + const includeCoverage = focus === "full_profile" || focus === "coverage_years"; + const includeTopYear = focus === "full_profile" || focus === "top_year_docs"; + const includeBottomYear = focus === "bottom_year_docs"; + const includeTopMonth = focus === "full_profile" || focus === "top_month_ops"; + const includeBottomMonth = focus === "bottom_month_ops"; + const operationalWindow = deriveOperationalYearWindow(yearDocs, yearOps); + const yearsCoverage = (yearOps.length > 0 ? yearOps : yearDocs).map((item) => item.year).sort((a, b) => a - b); + const yearDocsWithinOperational = operationalWindow.operationalFrom !== null && operationalWindow.operationalTo !== null + ? yearDocs.filter((item) => item.year >= operationalWindow.operationalFrom && item.year <= operationalWindow.operationalTo) + : yearDocs; + const yearDocsForRanking = yearDocsWithinOperational.length > 0 ? yearDocsWithinOperational : yearDocs; + const yearDocsTop = [...yearDocsForRanking].sort((a, b) => b.count - a.count || a.year - b.year); + const yearDocsBottom = [...yearDocsForRanking].sort((a, b) => a.count - b.count || a.year - b.year); + const monthOpsWithinOperational = operationalWindow.operationalFrom !== null && operationalWindow.operationalTo !== null + ? monthOps.filter((item) => { + const year = Number(item.month.slice(0, 4)); + return (Number.isFinite(year) && + year >= operationalWindow.operationalFrom && + year <= operationalWindow.operationalTo); + }) + : monthOps; + const monthOpsForRanking = monthOpsWithinOperational.length > 0 ? monthOpsWithinOperational : monthOps; + const monthOpsTop = [...monthOpsForRanking].sort((a, b) => b.count - a.count || a.month.localeCompare(b.month)); + const monthOpsBottom = [...monthOpsForRanking].sort((a, b) => a.count - b.count || a.month.localeCompare(b.month)); + const topYearByDocs = yearDocsTop[0] ?? null; + const bottomYearByDocs = yearDocsBottom[0] ?? null; + const topMonthByOps = monthOpsTop[0] ?? null; + const bottomMonthByOps = monthOpsBottom[0] ?? null; + const hasTailYears = operationalWindow.tailYears.length > 0 && + operationalWindow.operationalTo !== null && + operationalWindow.dataTo !== null && + operationalWindow.operationalTo < operationalWindow.dataTo; + const lines = [ + "Профиль периодов базы собран (movement-based aggregate).", + `Строк агрегата: ${rows.length}.` + ]; + if (includeCoverage) { + if (hasTailYears && + operationalWindow.operationalFrom !== null && + operationalWindow.operationalTo !== null) { + lines.push(`Операционный период с выраженной активностью: ${operationalWindow.operationalFrom}..${operationalWindow.operationalTo}.`); + lines.push(`Низкоактивный хвост (единичные записи): ${operationalWindow.tailYears.join(", ")}.`); + lines.push(`Полный технический диапазон дат: ${minDate ?? "н/д"} .. ${maxDate ?? "н/д"}.`); + } + else { + lines.push(`Покрытие по датам: ${minDate ?? "н/д"} .. ${maxDate ?? "н/д"}.`); + if (yearsCoverage.length > 0) { + lines.push(`Годы с данными: ${yearsCoverage[0]}..${yearsCoverage[yearsCoverage.length - 1]} (уникальных: ${yearsCoverage.length}).`); + } + } + } + if (includeTopYear && topYearByDocs) { + lines.push(`Самый активный год по документам: ${topYearByDocs.year} (${topYearByDocs.count}).`); + lines.push(...yearDocsTop + .slice(0, 5) + .map((item, index) => `${index + 1}. ${item.year}: ${item.count}`)); + } + if (includeBottomYear && bottomYearByDocs) { + lines.push(`Самый пассивный год по документам: ${bottomYearByDocs.year} (${bottomYearByDocs.count}).`); + lines.push(...yearDocsBottom + .slice(0, 5) + .map((item, index) => `${index + 1}. ${item.year}: ${item.count}`)); + } + if (includeTopMonth && topMonthByOps) { + lines.push(`Самый активный месяц по операциям: ${topMonthByOps.month} (${topMonthByOps.count}).`); + lines.push(...monthOpsTop + .slice(0, 5) + .map((item, index) => `${index + 1}. ${item.month}: ${item.count}`)); + } + if (includeBottomMonth && bottomMonthByOps) { + lines.push(`Самый пассивный месяц по операциям: ${bottomMonthByOps.month} (${bottomMonthByOps.count}).`); + lines.push(...monthOpsBottom + .slice(0, 5) + .map((item, index) => `${index + 1}. ${item.month}: ${item.count}`)); + } + return { + responseType: "FACTUAL_SUMMARY", + text: lines.join("\n") + }; + } + if (intent === "counterparty_population_and_roles") { + const rowsByMarker = new Map(); + for (const row of rows) { + const marker = String(row.registrator ?? "").trim().toUpperCase(); + if (!marker) { + continue; + } + if (!rowsByMarker.has(marker)) { + rowsByMarker.set(marker, []); + } + rowsByMarker.get(marker).push(row); + } + const sumMarker = (marker) => (rowsByMarker.get(marker) ?? []).reduce((sum, row) => sum + (row.amount ?? 0), 0); + const totalCounterparties = sumMarker("CP_TOTAL"); + const customerActive = sumMarker("CP_CUSTOMER_ACTIVE"); + const supplierActive = sumMarker("CP_SUPPLIER_ACTIVE"); + const mixedActive = sumMarker("CP_MIXED_ACTIVE"); + const activeUnion = sumMarker("CP_ACTIVE_UNION"); + const customerOnly = Math.max(0, customerActive - mixedActive); + const supplierOnly = Math.max(0, supplierActive - mixedActive); + const resolvedActive = customerOnly + supplierOnly + mixedActive; + const activeCounterparties = Math.max(activeUnion, resolvedActive); + const otherCounterparties = totalCounterparties > 0 ? Math.max(0, totalCounterparties - resolvedActive) : null; + const focus = detectCounterpartyProfileFocus(options.userMessage); + const includeTotal = focus === "full_profile" || focus === "total_only"; + const includeRoles = focus === "full_profile" || focus === "roles_only"; + const lines = [ + "Профиль контрагентов собран (catalog + bank-doc activity aggregate).", + `Строк агрегата: ${rows.length}.` + ]; + if (includeTotal) { + if (totalCounterparties > 0) { + lines.push(`Всего уникальных контрагентов в базе: ${totalCounterparties}.`); + } + else if (activeCounterparties > 0) { + lines.push(`Total из справочника не получен, оценка по активности в документах: ${activeCounterparties} контрагентов.`); + } + else { + lines.push("По количеству контрагентов агрегатных строк не найдено."); + } + } + if (includeRoles) { + if (resolvedActive > 0 || activeCounterparties > 0) { + lines.push("Роли контрагентов по активности:"); + lines.push(`1. Заказчики (только customer-роль): ${customerOnly}.`); + lines.push(`2. Поставщики (только supplier-роль): ${supplierOnly}.`); + lines.push(`3. Смешанные (и покупатель, и поставщик): ${mixedActive}.`); + lines.push(`4. Активные контрагенты (union ролей): ${activeCounterparties}.`); + if (otherCounterparties !== null) { + lines.push(`5. Прочие/неактивные в выбранном окне: ${otherCounterparties}.`); + } + } + else { + lines.push("По role-split контрагентов агрегатных строк не найдено."); + } + } + if (focus === "suppliers_only") { + lines.push(`Поставщиков (только supplier-роль): ${supplierOnly}.`); + } + if (focus === "customers_only") { + lines.push(`Заказчиков (только customer-роль): ${customerOnly}.`); + } + if (focus === "mixed_only") { + lines.push(`Смешанных контрагентов (и customer, и supplier): ${mixedActive}.`); + } + return { + responseType: "FACTUAL_SUMMARY", + text: lines.join("\n") + }; + } + if (intent === "counterparty_activity_lifecycle") { + const activityRows = rows.filter((row) => String(row.registrator ?? "").trim().toUpperCase() === "CP_CUSTOMER_ACTIVITY"); + const byCounterparty = new Map(); + for (const row of activityRows) { + const name = extractCounterpartyName(row); + if (!name) { + continue; + } + const opsCount = Math.max(0, Math.trunc(row.amount ?? 0)); + const current = byCounterparty.get(name); + if (!current) { + byCounterparty.set(name, { name, opsCount, lastPeriod: row.period }); + continue; + } + if (opsCount > current.opsCount) { + current.opsCount = opsCount; + } + if ((row.period ?? "") > (current.lastPeriod ?? "")) { + current.lastPeriod = row.period; + } + } + const counterparties = Array.from(byCounterparty.values()).sort((left, right) => { + if (right.opsCount !== left.opsCount) { + return right.opsCount - left.opsCount; + } + return (right.lastPeriod ?? "").localeCompare(left.lastPeriod ?? ""); + }); + const focus = detectCounterpartyLifecycleFocus(options.userMessage); + const requestedYear = extractRequestedYearFromQuestion(options.userMessage); + const scopeLabel = focus === "active_customers_all_time" + ? "за все время" + : requestedYear + ? `в ${requestedYear} году` + : "в выбранном периоде"; + const lines = [ + "Собран профиль активности заказчиков (bank-doc activity aggregate).", + `Строк агрегата: ${rows.length}.` + ]; + if (counterparties.length === 0) { + lines.push("Активных заказчиков по выбранному окну не найдено."); + return { + responseType: "FACTUAL_SUMMARY", + text: lines.join("\n") + }; + } + lines.push(`Активные заказчики ${scopeLabel}: ${counterparties.length}.`); + const visible = counterparties.slice(0, 120); + lines.push(...visible.map((item, index) => { + const suffix = item.lastPeriod ? ` | последняя активность: ${item.lastPeriod}` : ""; + return `${index + 1}. ${item.name} | операций: ${item.opsCount}${suffix}`; + })); + if (counterparties.length > visible.length) { + lines.push(`Показаны первые ${visible.length} из ${counterparties.length} заказчиков.`); + } + return { + responseType: "FACTUAL_LIST", + text: lines.join("\n") + }; + } + if (intent === "contract_usage_overview") { + const rowsByMarker = new Map(); + for (const row of rows) { + const marker = String(row.registrator ?? "").trim().toUpperCase(); + if (!marker) { + continue; + } + if (!rowsByMarker.has(marker)) { + rowsByMarker.set(marker, []); + } + rowsByMarker.get(marker).push(row); + } + const sumMarker = (marker) => (rowsByMarker.get(marker) ?? []).reduce((sum, row) => sum + (row.amount ?? 0), 0); + const totalContracts = sumMarker("CT_TOTAL"); + const usedContracts = sumMarker("CT_USED"); + const unusedContracts = totalContracts > 0 ? Math.max(0, totalContracts - Math.min(usedContracts, totalContracts)) : null; + const usedShare = totalContracts > 0 ? formatPercent(Math.min(usedContracts, totalContracts), totalContracts) : null; + const lines = [ + "Профиль договорной базы собран (catalog + usage aggregate).", + `Строк агрегата: ${rows.length}.` + ]; + if (totalContracts > 0) { + lines.push(`Всего договоров в базе: ${totalContracts}.`); + } + else { + lines.push("Общее количество договоров не получено (пустой/недоступный срез справочника)."); + } + lines.push(`Использованных договоров (есть factual связь с операциями): ${usedContracts}.`); + if (unusedContracts !== null) { + lines.push(`Неиспользуемых договоров: ${unusedContracts}.`); + } + if (usedShare) { + lines.push(`Доля используемых договоров: ${usedShare}.`); + } + return { + responseType: "FACTUAL_SUMMARY", + text: lines.join("\n") + }; + } if (intent === "account_balance_snapshot") { const movementSum = rows.reduce((sum, row) => sum + (row.amount ?? 0), 0); const lines = [ @@ -90,6 +717,40 @@ function composeFactualReply(intent, rows) { text: lines.join("\n") }; } + if (intent === "list_contracts_by_counterparty") { + const contracts = uniqueStrings(rows + .map((row) => String(row.registrator ?? "").trim()) + .filter((item) => item.length > 0)); + const counterparties = uniqueStrings(rows + .flatMap((row) => row.analytics) + .map((item) => String(item ?? "").trim()) + .filter((item) => item.length > 0)); + const lines = [ + "Собран список договоров по контрагенту (catalog address lane).", + `Строк отобрано: ${rows.length}.`, + `Уникальных договоров: ${contracts.length}.` + ]; + if (counterparties.length === 1) { + lines.push(`Контрагент: ${counterparties[0]}.`); + } + else if (counterparties.length > 1) { + lines.push(`Контрагенты в выборке: ${counterparties.length}.`); + } + if (contracts.length > 0) { + const visible = contracts.slice(0, 120); + lines.push(...visible.map((item, index) => `${index + 1}. ${item}`)); + if (contracts.length > visible.length) { + lines.push(`Показаны первые ${visible.length} из ${contracts.length} договоров.`); + } + } + else { + lines.push("Договоры по указанному якорю в текущем live-срезе не найдены."); + } + return { + responseType: "FACTUAL_LIST", + text: lines.join("\n") + }; + } if (intent === "list_documents_by_counterparty") { const lines = [ "Собран список документов по контрагенту (live address lane).", diff --git a/llm_normalizer/backend/dist/services/address_runtime/decomposeStage.js b/llm_normalizer/backend/dist/services/address_runtime/decomposeStage.js index fb00048..ebf5b94 100644 --- a/llm_normalizer/backend/dist/services/address_runtime/decomposeStage.js +++ b/llm_normalizer/backend/dist/services/address_runtime/decomposeStage.js @@ -133,7 +133,9 @@ function mergeFollowupFilters(current, intent, userMessage, followupContext) { const previousPeriodTo = toNonEmptyString(previous.period_to); const allTimeRequested = hasAllTimeHint(userMessage); const sameDateRequested = hasSameDateHint(userMessage); - if (intent === "list_documents_by_counterparty" || intent === "bank_operations_by_counterparty") { + if (intent === "list_documents_by_counterparty" || + intent === "bank_operations_by_counterparty" || + intent === "list_contracts_by_counterparty") { if (!toNonEmptyString(merged.counterparty)) { const inheritedCounterparty = previousCounterparty ?? (followupContext.previous_anchor_type === "counterparty" ? previousAnchorValue : null); @@ -212,6 +214,7 @@ function resolveMissingRequiredFilters(intent, filters) { documents_forming_balance: ["account", "as_of_date"], list_documents_by_counterparty: ["counterparty"], bank_operations_by_counterparty: ["counterparty"], + list_contracts_by_counterparty: ["counterparty"], list_documents_by_contract: ["contract"], bank_operations_by_contract: ["contract"] }; @@ -251,7 +254,8 @@ function deriveIntentWithFollowupContext(detectedIntent, userMessage, followupCo hasAccountSignal(normalizedMessage) && (detectedIntent.intent === "unknown" || detectedIntent.intent === "list_documents_by_counterparty" || - detectedIntent.intent === "bank_operations_by_counterparty")) { + detectedIntent.intent === "bank_operations_by_counterparty" || + detectedIntent.intent === "account_balance_snapshot")) { const preferDocumentsForming = hasDocumentSignal(normalizedMessage) && /(?:раскрой|раскры|формир|документами|по\s+документ)/iu.test(normalizedMessage); return { diff --git a/llm_normalizer/backend/dist/services/address_runtime/predecomposeContract.js b/llm_normalizer/backend/dist/services/address_runtime/predecomposeContract.js new file mode 100644 index 0000000..e16f1ac --- /dev/null +++ b/llm_normalizer/backend/dist/services/address_runtime/predecomposeContract.js @@ -0,0 +1,106 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.buildAddressLlmPredecomposeContractV1 = buildAddressLlmPredecomposeContractV1; +const addressQueryClassifier_1 = require("../addressQueryClassifier"); +const addressQueryShapeClassifier_1 = require("../addressQueryShapeClassifier"); +const addressIntentResolver_1 = require("../addressIntentResolver"); +const addressFilterExtractor_1 = require("../addressFilterExtractor"); +function toNonEmptyString(value) { + if (value === null || value === undefined) { + return null; + } + const normalized = String(value).trim(); + return normalized.length > 0 ? normalized : null; +} +function hasAllTimeHint(text) { + return /(?:за\s+вс[её]\s+время|за\s+весь\s+период|за\s+всю\s+истори(?:ю|и)|for\s+all\s+time|all\s+time|entire\s+period|full\s+history)/iu.test(String(text ?? "")); +} +function inferPeriodScope(filters, canonicalMessage) { + const asOfDate = toNonEmptyString(filters.as_of_date); + const periodFrom = toNonEmptyString(filters.period_from); + const periodTo = toNonEmptyString(filters.period_to); + if (asOfDate) { + return "as_of"; + } + if (periodFrom && periodTo) { + const yearFrom = periodFrom.match(/^(\d{4})-01-01$/); + const yearTo = periodTo.match(/^(\d{4})-12-31$/); + if (yearFrom && yearTo && yearFrom[1] === yearTo[1]) { + return "year"; + } + return "range"; + } + if (hasAllTimeHint(canonicalMessage)) { + return "all_time"; + } + return "unspecified"; +} +function inferAggregationProfile(intent, shape) { + if (intent === "period_coverage_profile" || + intent === "document_type_and_account_section_profile" || + intent === "counterparty_population_and_roles" || + intent === "counterparty_activity_lifecycle" || + intent === "contract_usage_overview") { + return "management_profile"; + } + if (intent === "account_balance_snapshot" || intent === "documents_forming_balance") { + return "balance_snapshot"; + } + if (intent === "open_items_by_counterparty_or_contract" || + intent === "list_open_contracts" || + intent === "list_payables_counterparties" || + intent === "list_receivables_counterparties") { + return "open_items"; + } + if (intent === "list_documents_by_counterparty" || + intent === "bank_operations_by_counterparty" || + intent === "list_contracts_by_counterparty" || + intent === "list_documents_by_contract" || + intent === "bank_operations_by_contract") { + return "list_lookup"; + } + if (shape === "AGGREGATE_LOOKUP") { + return "management_profile"; + } + if (shape === "DOCUMENT_LIST" || shape === "OBJECT_LOOKUP" || shape === "DRILLDOWN_REQUEST") { + return "list_lookup"; + } + return "unknown"; +} +function buildAddressLlmPredecomposeContractV1(input) { + const sourceMessage = String(input.sourceMessage ?? "").trim(); + const canonicalMessage = String(input.canonicalMessage ?? "").trim() || sourceMessage; + const mode = (0, addressQueryClassifier_1.detectAddressQuestionMode)(canonicalMessage); + const shape = (0, addressQueryShapeClassifier_1.classifyAddressQueryShape)(canonicalMessage); + const intent = (0, addressIntentResolver_1.resolveAddressIntent)(canonicalMessage); + const extraction = (0, addressFilterExtractor_1.extractAddressFilters)(canonicalMessage, intent.intent); + const filters = extraction.extracted_filters; + const periodScope = inferPeriodScope(filters, canonicalMessage); + return { + schema_version: "address_llm_predecompose_contract_v1", + source_message: sourceMessage, + canonical_message: canonicalMessage, + mode: mode.mode, + mode_confidence: mode.confidence, + query_shape: shape.shape, + query_shape_confidence: shape.confidence, + intent: intent.intent, + intent_confidence: intent.confidence, + entities: { + account: toNonEmptyString(filters.account), + counterparty: toNonEmptyString(filters.counterparty), + contract: toNonEmptyString(filters.contract), + document_type: toNonEmptyString(filters.document_type), + document_ref: toNonEmptyString(filters.document_ref), + organization: toNonEmptyString(filters.organization) + }, + period: { + scope: periodScope, + period_from: toNonEmptyString(filters.period_from), + period_to: toNonEmptyString(filters.period_to), + as_of_date: toNonEmptyString(filters.as_of_date), + has_explicit_period: Boolean(toNonEmptyString(filters.as_of_date) || toNonEmptyString(filters.period_from) || toNonEmptyString(filters.period_to)) + }, + aggregation_profile: inferAggregationProfile(intent.intent, shape.shape) + }; +} diff --git a/llm_normalizer/backend/dist/services/address_runtime/resolveStage.js b/llm_normalizer/backend/dist/services/address_runtime/resolveStage.js index 339e5f8..f715602 100644 --- a/llm_normalizer/backend/dist/services/address_runtime/resolveStage.js +++ b/llm_normalizer/backend/dist/services/address_runtime/resolveStage.js @@ -72,6 +72,24 @@ function tokenizeAnchor(value) { .map((token) => token.trim()) .filter((token) => token.length >= 2 && !PARTY_ANCHOR_STOPWORDS.has(token)); } +function anchorTokenVariants(token) { + const source = String(token ?? "").trim().toLowerCase(); + if (!source) { + return []; + } + const variants = new Set([source]); + if (/^[а-яё]+$/iu.test(source) && source.length >= 4) { + const withoutEnding = source.replace(/(?:ами|ями|ого|ему|ому|ыми|ими|иях|ях|ах|ей|ой|ом|ем|ам|ям|ую|юю|ая|яя|ое|ее|ые|ие|ов|ев|ий|ый|ой|е|у|ы|а|я|и|ю)$/iu, ""); + if (withoutEnding.length >= 3) { + variants.add(withoutEnding); + } + const withoutTrailingVowel = source.replace(/[аеёиоуыэюя]$/iu, ""); + if (withoutTrailingVowel.length >= 3) { + variants.add(withoutTrailingVowel); + } + } + return Array.from(variants); +} function matchesAnchorText(searchable, anchor) { const searchableNormalized = normalizeSearchText(searchable); const searchableLatin = transliterateCyrillicToLatin(searchableNormalized); @@ -84,8 +102,11 @@ function matchesAnchorText(searchable, anchor) { return searchableNormalized.includes(direct) || searchableLatin.includes(transliterateCyrillicToLatin(direct)); } return tokens.every((token) => { - const tokenLatin = transliterateCyrillicToLatin(token); - return searchableNormalized.includes(token) || searchableLatin.includes(tokenLatin); + const variants = anchorTokenVariants(token); + return variants.some((variant) => { + const tokenLatin = transliterateCyrillicToLatin(variant); + return searchableNormalized.includes(variant) || searchableLatin.includes(tokenLatin); + }); }); } function uniqueStrings(values) { @@ -120,6 +141,17 @@ function resolvePrimaryAnchor(intent, filters) { }; } } + if (intent === "list_contracts_by_counterparty") { + if (counterparty) { + return { + anchor_type: "counterparty", + anchor_value_raw: counterparty, + anchor_value_resolved: counterparty, + resolver_confidence: "medium", + ambiguity_count: 0 + }; + } + } if (counterparty) { return { anchor_type: "counterparty", diff --git a/llm_normalizer/backend/dist/services/assistantService.js b/llm_normalizer/backend/dist/services/assistantService.js index 16ae5a7..9fd2f81 100644 --- a/llm_normalizer/backend/dist/services/assistantService.js +++ b/llm_normalizer/backend/dist/services/assistantService.js @@ -56,6 +56,7 @@ const assistantClaimBoundEvidence_1 = __importStar(require("./assistantClaimBoun const addressQueryService_1 = __importStar(require("./addressQueryService")); const addressQueryClassifier_1 = __importStar(require("./addressQueryClassifier")); const addressIntentResolver_1 = __importStar(require("./addressIntentResolver")); +const predecomposeContract_1 = __importStar(require("./address_runtime/predecomposeContract")); const iconv_lite_1 = __importDefault(require("iconv-lite")); function retrievalSummaryForRoute(route) { if (route === "store_canonical") @@ -1804,6 +1805,8 @@ function buildAddressDebugPayload(addressDebug, llmPreDecomposeMeta = null) { llm_decomposition_trace_id: llmMeta?.traceId ?? null, llm_decomposition_effective_message: llmMeta?.effectiveMessage ?? null, llm_decomposition_reason: llmMeta?.reason ?? null, + llm_canonical_candidate_detected: Boolean(llmMeta?.llmCanonicalCandidateDetected), + llm_predecompose_contract: llmMeta?.predecomposeContract ?? null, fallback_rule_hit: llmMeta?.fallbackRuleHit ?? null, sanitized_user_message: llmMeta?.sanitizedUserMessage ?? null, tool_gate_decision: llmMeta?.toolGateDecision ?? null, @@ -1876,6 +1879,16 @@ const ADDRESS_PREDECOMPOSE_NOISE_TOKENS = new Set([ "которые", "какие", "какой", + "активный", + "активная", + "активное", + "активности", + "месяц", + "месяца", + "месяцев", + "количество", + "количеству", + "количества", "были", "был", "была", @@ -1972,6 +1985,7 @@ const ADDRESS_BANK_SIGNAL_PATTERN = /(?:bank|банк|банков|выписк| 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; +const ADDRESS_MANAGEMENT_PROFILE_PATTERN = /(?:за\s+какие\s+год[а-яё]*|сам(?:ый|ая|ое)\s+(?:актив|пассив)|наименее\s+актив|минимальн|покрыт(?:ие|ия)\s+период|диапазон\s+лет|тип[аы]\s+док(?:умент|ов|и)?|раздел[ыа]\s+уч[её]та|по\s+количеств[аоуе]|редк|реже|(?:сколько|скока|скок)\s+(?:всего\s+)?(?:уникальн(?:ых|ые|ого)?\s+)?контрагент(?:ов|а)?|(?:сколько|скока|скок)\s+(?:у\s+нас\s+)?(?:заказчик(?:ов|а)?|поставщик(?:ов|а)?|клиент(?:ов|а)?|покупател(?:ей|я)|смешан(?:ных|ые)\s+контрагент(?:ов|а)?)|(?:покажи|выведи|список|какие|кто).*(?:заказчик(?:ов|а|и)?|клиент(?:ов|а|ы)?|покупател(?:ей|я|и)?).*(?:за\s+вс[её]\s+время|all\s+time|(?:^|[^\d])(19|20)\d{2}(?:[^\d]|$)|(?:^|[^\d])\d{2}\s*(?:г(?:од|ода)?|г)(?:[^\p{L}\p{N}]|$)|за\s+год|в\s+году)|(?:какие|кто|покажи|выведи|список).*(?:заказчик(?:ов|а|и)?|клиент(?:ов|а|ы)?|покупател(?:ей|я|и)?).*(?:работал(?:и)?|активн(?:ые|ых|а|о)?).*(?:за\s+вс[её]\s+время|(?:19|20)\d{2}|за\s+год|в\s+году)|договорн(?:ая|ой)\s+баз[аы]|total\s+vs\s+used)/iu; function normalizeAddressMonthAliasToken(token) { const source = String(token ?? "").trim().toLowerCase(); if (!source) { @@ -2177,6 +2191,9 @@ function resolveAddressDeterministicFallback(userMessage, sanitizedUserMessage) if (!source) { return null; } + if (ADDRESS_MANAGEMENT_PROFILE_PATTERN.test(source)) { + return null; + } const monthYear = extractAddressFallbackMonthYear(source); const year = extractAddressFallbackYear(source); const allTime = ADDRESS_ALL_TIME_PATTERN.test(source); @@ -2424,13 +2441,25 @@ function hasAddressFollowupContextSignal(userMessage) { if (shortFollowup && hasFollowupMarker(text)) { return true; } + if (shortFollowup && /(?:^|\s)(?:также|тоже|also|same|again|ещ[её]|теперь|then|now)(?=$|[\s,.;:!?])/iu.test(text)) { + return true; + } + if (shortFollowup && + /(?:^|\s)по\s+[a-zа-яё][a-zа-яё0-9._-]{1,}(?=$|[\s,.;:!?])/iu.test(text) && + !/(?:по\s+этому|по\s+тому|по\s+нему|по\s+ней|по\s+ним)/iu.test(text)) { + return true; + } if (shortFollowup && hasPeriodLiteral(text)) { return true; } return false; } -function resolveAddressFollowupCarryoverContext(userMessage, items) { - if (!hasAddressFollowupContextSignal(userMessage)) { +function resolveAddressFollowupCarryoverContext(userMessage, items, alternateMessage = null) { + const hasPrimaryFollowupSignal = hasAddressFollowupContextSignal(userMessage); + const hasAlternateFollowupSignal = toNonEmptyString(alternateMessage) + ? hasAddressFollowupContextSignal(alternateMessage) + : false; + if (!hasPrimaryFollowupSignal && !hasAlternateFollowupSignal) { return null; } const previousAddressDebug = findLastAddressAssistantDebug(items); @@ -2485,7 +2514,6 @@ function extractAddressQuestionFromNormalized(normalized) { if (domainRelevance === "out_of_scope") { continue; } - const readiness = String(fragment.execution_readiness ?? "").trim().toLowerCase(); const normalizedText = toNonEmptyString(fragment.normalized_fragment_text); const rawText = toNonEmptyString(fragment.raw_fragment_text); const candidate = selectPreferredAddressFragmentCandidate(rawText ?? "", normalizedText ?? ""); @@ -2493,9 +2521,6 @@ function extractAddressQuestionFromNormalized(normalized) { continue; } if (candidate.length >= 3 && candidate.length <= 500) { - if (readiness === "no_route" && !isAddressLlmPreDecomposeCandidate(candidate)) { - continue; - } return candidate; } } @@ -2601,7 +2626,6 @@ function extractAddressQuestionFromRawNormalizerOutput(rawModelOutput) { if (domainRelevance === false) { continue; } - const readiness = String(fragment.execution_readiness ?? "").trim().toLowerCase(); const normalizedText = toNonEmptyString(fragment.normalized_fragment_text); const rawText = toNonEmptyString(fragment.raw_fragment_text); const candidate = selectPreferredAddressFragmentCandidate(rawText ?? "", normalizedText ?? ""); @@ -2609,19 +2633,25 @@ function extractAddressQuestionFromRawNormalizerOutput(rawModelOutput) { continue; } if (candidate.length >= 3 && candidate.length <= 500) { - if (readiness === "no_route" && !isAddressLlmPreDecomposeCandidate(candidate)) { - continue; - } return candidate; } } return null; } +function attachAddressPredecomposeContract(meta, sourceMessage) { + const canonicalMessage = toNonEmptyString(meta?.effectiveMessage) ?? String(sourceMessage ?? ""); + return { + ...meta, + predecomposeContract: (0, predecomposeContract_1.buildAddressLlmPredecomposeContractV1)({ + sourceMessage: String(sourceMessage ?? ""), + canonicalMessage + }) + }; +} async function runAddressLlmPreDecompose(normalizerService, payload, userMessage) { const provider = payload?.llmProvider === "local" ? "local" : payload?.llmProvider === "openai" ? "openai" : null; const sanitizedUserMessage = sanitizeAddressMessageForFallback(userMessage); const fallbackCandidate = resolveAddressDeterministicFallback(userMessage, sanitizedUserMessage); - const hasAddressSignal = isAddressLlmPreDecomposeCandidate(userMessage) || isAddressLlmPreDecomposeCandidate(sanitizedUserMessage); const baseMeta = { attempted: false, applied: false, @@ -2629,6 +2659,7 @@ async function runAddressLlmPreDecompose(normalizerService, payload, userMessage traceId: null, effectiveMessage: userMessage, reason: "not_attempted", + llmCanonicalCandidateDetected: false, fallbackRuleHit: null, sanitizedUserMessage, toolGateDecision: null, @@ -2640,39 +2671,19 @@ async function runAddressLlmPreDecompose(normalizerService, payload, userMessage const sourceCompact = compactWhitespace(String(userMessage ?? "").toLowerCase()); const fallbackApplied = fallbackCompact.length > 0 && fallbackCompact !== sourceCompact; if (fallbackApplied) { - return { + return attachAddressPredecomposeContract({ ...baseMeta, applied: true, effectiveMessage: fallbackCandidate.candidate, reason: "fallback_rule_applied_without_llm", fallbackRuleHit: fallbackCandidate.rule - }; + }, userMessage); } } - return { + return attachAddressPredecomposeContract({ ...baseMeta, reason: "skipped_in_mock" - }; - } - if (!hasAddressSignal) { - if (fallbackCandidate) { - const fallbackCompact = compactWhitespace(String(fallbackCandidate.candidate ?? "").toLowerCase()); - const sourceCompact = compactWhitespace(String(userMessage ?? "").toLowerCase()); - const fallbackApplied = fallbackCompact.length > 0 && fallbackCompact !== sourceCompact; - if (fallbackApplied) { - return { - ...baseMeta, - applied: true, - effectiveMessage: fallbackCandidate.candidate, - reason: "fallback_rule_applied_without_llm", - fallbackRuleHit: fallbackCandidate.rule - }; - } - } - return { - ...baseMeta, - reason: "not_address_like" - }; + }, userMessage); } const normalizePayload = { llmProvider: payload?.llmProvider, @@ -2698,7 +2709,7 @@ async function runAddressLlmPreDecompose(normalizerService, payload, userMessage const sourceCompact = compactWhitespace(String(userMessage ?? "").toLowerCase()); const fallbackApplied = fallbackCompact.length > 0 && fallbackCompact !== sourceCompact; if (fallbackApplied) { - return { + return attachAddressPredecomposeContract({ ...baseMeta, attempted: true, applied: true, @@ -2706,15 +2717,15 @@ async function runAddressLlmPreDecompose(normalizerService, payload, userMessage effectiveMessage: fallbackCandidate.candidate, reason: "fallback_rule_applied_after_llm", fallbackRuleHit: fallbackCandidate.rule - }; + }, userMessage); } } - return { + return attachAddressPredecomposeContract({ ...baseMeta, attempted: true, traceId: normalized?.trace_id ?? null, reason: normalized?.ok ? "no_usable_fragment" : "normalize_failed" - }; + }, userMessage); } const repairedSourceMessage = repairAddressMojibake(userMessage); const sourceIntentResolution = (0, addressIntentResolver_1.resolveAddressIntent)(repairedSourceMessage || userMessage); @@ -2729,18 +2740,19 @@ async function runAddressLlmPreDecompose(normalizerService, payload, userMessage (intentConflict && (sourceIntentResolution.confidence === "high" || candidateIntentResolution.confidence !== "high")); if (rejectCandidateForIntentSafety) { - return { + return attachAddressPredecomposeContract({ ...baseMeta, attempted: true, applied: false, traceId: normalized?.trace_id ?? null, + llmCanonicalCandidateDetected: true, effectiveMessage: userMessage, reason: intentDroppedByCandidate ? "normalized_fragment_rejected_intent_drop" : "normalized_fragment_rejected_intent_conflict", fallbackRuleHit: null, sanitizedUserMessage - }; + }, userMessage); } const sourceCompact = compactWhitespace(String(userMessage ?? "").toLowerCase()); const candidateCompact = compactWhitespace(candidate.toLowerCase()); @@ -2757,16 +2769,17 @@ async function runAddressLlmPreDecompose(normalizerService, payload, userMessage : applied ? "raw_fragment_applied_after_normalize_failed" : "raw_fragment_same_after_normalize_failed"; - return { + return attachAddressPredecomposeContract({ attempted: true, applied, provider, traceId: normalized?.trace_id ?? null, effectiveMessage: applied ? candidate : userMessage, reason, + llmCanonicalCandidateDetected: true, fallbackRuleHit: null, sanitizedUserMessage - }; + }, userMessage); } catch (error) { if (fallbackCandidate) { @@ -2774,28 +2787,30 @@ async function runAddressLlmPreDecompose(normalizerService, payload, userMessage const sourceCompact = compactWhitespace(String(userMessage ?? "").toLowerCase()); const fallbackApplied = fallbackCompact.length > 0 && fallbackCompact !== sourceCompact; if (fallbackApplied) { - return { + return attachAddressPredecomposeContract({ ...baseMeta, attempted: true, applied: true, effectiveMessage: fallbackCandidate.candidate, reason: "fallback_rule_applied_after_llm_error", fallbackRuleHit: fallbackCandidate.rule - }; + }, userMessage); } } - return { + return attachAddressPredecomposeContract({ ...baseMeta, attempted: true, reason: `error:${error instanceof Error ? error.message : String(error)}` - }; + }, userMessage); } } -function resolveAddressToolGateDecision(addressInputMessage, followupContext) { +function resolveAddressToolGateDecision(addressInputMessage, followupContext, llmPreDecomposeMeta = null) { const repairedInputMessage = repairAddressMojibake(String(addressInputMessage ?? "")); const modeDetection = (0, addressQueryClassifier_1.detectAddressQuestionMode)(repairedInputMessage || addressInputMessage); const hasClassifierSignal = modeDetection.mode === "address_query"; + const hasLlmCanonicalSignal = Boolean(llmPreDecomposeMeta?.llmCanonicalCandidateDetected); const hasMessageSignal = hasClassifierSignal || + hasLlmCanonicalSignal || isAddressLlmPreDecomposeCandidate(addressInputMessage) || isAddressLlmPreDecomposeCandidate(repairedInputMessage) || hasAccountingSignal(addressInputMessage) || @@ -2804,7 +2819,11 @@ function resolveAddressToolGateDecision(addressInputMessage, followupContext) { return { runAddressLane: true, decision: "run_address_lane", - reason: hasClassifierSignal ? "address_mode_classifier_detected" : "address_signal_detected" + reason: hasClassifierSignal + ? "address_mode_classifier_detected" + : hasLlmCanonicalSignal + ? "llm_canonical_candidate_detected" + : "address_signal_detected" }; } if (followupContext) { @@ -2894,6 +2913,9 @@ class AssistantService { address_sanitized_user_message: llmPreDecomposeMeta?.sanitizedUserMessage ?? null, address_tool_gate_decision: llmPreDecomposeMeta?.toolGateDecision ?? null, address_tool_gate_reason: llmPreDecomposeMeta?.toolGateReason ?? null, + address_llm_predecompose_contract_intent: llmPreDecomposeMeta?.predecomposeContract?.intent ?? null, + address_llm_predecompose_contract_aggregation_profile: llmPreDecomposeMeta?.predecomposeContract?.aggregation_profile ?? null, + address_llm_predecompose_contract_period_scope: llmPreDecomposeMeta?.predecomposeContract?.period?.scope ?? null, detected_mode: addressLane.debug.detected_mode, query_shape: addressLane.debug.query_shape, detected_intent: addressLane.debug.detected_intent, @@ -2938,6 +2960,7 @@ class AssistantService { conversation }; }; + let addressRuntimeMetaForDeep = null; if (config_1.FEATURE_ASSISTANT_ADDRESS_QUERY_V1) { const addressPreDecompose = config_1.FEATURE_ASSISTANT_ADDRESS_QUERY_LLM_PREDECOMPOSE_V1 ? await runAddressLlmPreDecompose(this.normalizerService, payload, userMessage) @@ -2948,19 +2971,25 @@ class AssistantService { traceId: null, effectiveMessage: userMessage, reason: "disabled_by_feature_flag", + llmCanonicalCandidateDetected: false, + predecomposeContract: (0, predecomposeContract_1.buildAddressLlmPredecomposeContractV1)({ + sourceMessage: userMessage, + canonicalMessage: userMessage + }), fallbackRuleHit: null, sanitizedUserMessage: sanitizeAddressMessageForFallback(userMessage), toolGateDecision: null, toolGateReason: null }; const addressInputMessage = toNonEmptyString(addressPreDecompose?.effectiveMessage) ?? userMessage; - const carryover = resolveAddressFollowupCarryoverContext(userMessage, session.items); - const toolGate = resolveAddressToolGateDecision(addressInputMessage, carryover?.followupContext ?? null); + const carryover = resolveAddressFollowupCarryoverContext(userMessage, session.items, addressInputMessage); + const toolGate = resolveAddressToolGateDecision(addressInputMessage, carryover?.followupContext ?? null, addressPreDecompose); const addressRuntimeMeta = { ...addressPreDecompose, toolGateDecision: toolGate.decision, toolGateReason: toolGate.reason }; + addressRuntimeMetaForDeep = addressRuntimeMeta; if (!toolGate.runAddressLane) { (0, log_1.logJson)({ timestamp: new Date().toISOString(), @@ -2978,7 +3007,10 @@ class AssistantService { address_fallback_rule_hit: addressRuntimeMeta?.fallbackRuleHit ?? null, address_sanitized_user_message: addressRuntimeMeta?.sanitizedUserMessage ?? null, address_tool_gate_decision: addressRuntimeMeta?.toolGateDecision ?? null, - address_tool_gate_reason: addressRuntimeMeta?.toolGateReason ?? null + address_tool_gate_reason: addressRuntimeMeta?.toolGateReason ?? null, + address_llm_predecompose_contract_intent: addressRuntimeMeta?.predecomposeContract?.intent ?? null, + address_llm_predecompose_contract_aggregation_profile: addressRuntimeMeta?.predecomposeContract?.aggregation_profile ?? null, + address_llm_predecompose_contract_period_scope: addressRuntimeMeta?.predecomposeContract?.period?.scope ?? null } }); } @@ -3310,6 +3342,14 @@ class AssistantService { problem_unit_ids_used: composition.problem_unit_ids_used } : {}), + address_llm_predecompose_attempted: Boolean(addressRuntimeMetaForDeep?.attempted), + address_llm_predecompose_applied: Boolean(addressRuntimeMetaForDeep?.applied), + address_llm_predecompose_reason: addressRuntimeMetaForDeep?.reason ?? null, + address_llm_predecompose_provider: addressRuntimeMetaForDeep?.provider ?? null, + address_fallback_rule_hit: addressRuntimeMetaForDeep?.fallbackRuleHit ?? null, + address_tool_gate_decision: addressRuntimeMetaForDeep?.toolGateDecision ?? null, + address_tool_gate_reason: addressRuntimeMetaForDeep?.toolGateReason ?? null, + address_llm_predecompose_contract: addressRuntimeMetaForDeep?.predecomposeContract ?? null, answer_structure_v11: answerStructureV11, investigation_state_snapshot: investigationStateSnapshot, normalized: normalized.normalized diff --git a/llm_normalizer/backend/src/services/addressFilterExtractor.ts b/llm_normalizer/backend/src/services/addressFilterExtractor.ts index 48ecc85..155de9f 100644 --- a/llm_normalizer/backend/src/services/addressFilterExtractor.ts +++ b/llm_normalizer/backend/src/services/addressFilterExtractor.ts @@ -19,6 +19,8 @@ const YEAR_PERIOD_PATTERN = const YEAR_PERIOD_SHORT_PATTERN = /(?:^|[\s,.;:!?()\-])(\d{2})\s*(?:г(?:од|ода)?\.?|year|god)(?=$|[\s,.;:!?()\-])/iu; const YEAR_PERIOD_SHORT_ORDINAL_PATTERN = /(?:^|[\s,.;:!?()\-])(?:за|for|на|in)?\s*(\d{2})\s*(?:[-\s]?(?:й|ый|ой|th))(?:\s*(?:г(?:од|ода)?\.?|year|period|период))?(?=$|[\s,.;:!?()\-])/iu; +const YEAR_PERIOD_SHORT_BARE_PATTERN = + /(?:^|[\s,.;:!?()\-])(?:за|for|на|in)\s*(\d{2})(?=$|[\s,.;:!?()\-])/iu; const YEAR_PERIOD_ANY_PATTERN = /(?:^|[\s,.;:!?()\-])((?:19|20)\d{2})(?!\s*(?:[-‐‑‒–—―−]|до|to|по)\s*(?:19|20)\d{2})(?![.\/-]\d)(?:\s*(?:г(?:од|ода)?\.?|year))?(?=$|[\s,.;:!?()\-])/iu; const MONTH_PERIOD_NUMERIC_MONTH_YEAR_PATTERN = @@ -278,6 +280,18 @@ function extractYearPeriod(text: string): { period_from?: string; period_to?: st } } + const shortBareMatch = text.match(YEAR_PERIOD_SHORT_BARE_PATTERN); + if (shortBareMatch) { + const shortYear = Number(shortBareMatch[1]); + if (Number.isFinite(shortYear) && shortYear >= 0 && shortYear <= 99) { + const year = 2000 + shortYear; + return { + period_from: `${year}-01-01`, + period_to: `${year}-12-31` + }; + } + } + return {}; } @@ -380,7 +394,9 @@ function hasAllTimeHint(text: string): boolean { } function extractLooseByAnchorValue(text: string): string | undefined { - const match = String(text ?? "").match(/(?:^|\s)по\s+([\p{L}][\p{L}\p{N}._-]{1,})(?=[\s,.;:!?)]|$)/iu); + const match = String(text ?? "").match( + /(?:^|\s)по\s+([\p{L}][\p{L}\p{N}._-]{1,}(?:\s+\d{1,6})?)(?=[\s,.;:!?)]|$)/iu + ); if (!match) { return undefined; } @@ -757,7 +773,11 @@ function requiredFiltersByIntent(intent: AddressIntent): Array text.includes(item)); } @@ -231,6 +348,162 @@ function hasAccountBalanceSignal(text: string): boolean { return hasAccountLexeme && hasAsOfStyleDate && hasFollowupBalanceVerb; } +function hasPeriodCoverageProfileSignal(text: string): boolean { + if (hasAny(text, PERIOD_COVERAGE_PROFILE_HINTS)) { + return true; + } + if (/(?:за\s+какие\s+год[а-яё]*\s+в\s+баз[еы]\s+есть\s+данн)/iu.test(text)) { + return true; + } + if ( + /(?:какой\s+год[а-яё]*\s+сам(?:ый|ая|ое)\s+(?:актив|пассив)|какой\s+год[а-яё]*\s+наименее\s+актив|год\s+с\s+минимальн)/iu.test(text) && + /(?:документ|doc)/iu.test(text) + ) { + return true; + } + if ( + /(?:какой\s+месяц[а-яё]*\s+сам(?:ый|ая|ое)\s+(?:актив|пассив)|какой\s+месяц[а-яё]*\s+наименее\s+актив|месяц\s+с\s+минимальн)/iu.test(text) && + /(?:операц|operation|ops?)/iu.test(text) + ) { + return true; + } + if (/(?:профил[ья]\s+данн|покрыт(?:ие|ия)\s+период|диапазон\s+лет)/iu.test(text)) { + return true; + } + return false; +} + +function hasDocumentTypeAndAccountSectionProfileSignal(text: string): boolean { + if (hasAny(text, DOCUMENT_TYPE_AND_ACCOUNT_SECTION_PROFILE_HINTS)) { + return true; + } + if (/(?:какие\s+тип[аы]\s+док(?:умент|ов|и)?\s+(?:использ|чаще|больш))/iu.test(text)) { + return true; + } + if (/(?:какие\s+тип[аы]\s+док(?:умент|ов|и)?\s+(?:реже|редк|наименее|миним))/iu.test(text)) { + return true; + } + if (/(?:типы?\s+док(?:умент|ов|и)?\s+и\s+их\s+дол[ья])/iu.test(text)) { + return true; + } + if (/(?:какие\s+раздел[ыа]\s+уч[её]та\s+(?:наибол|наимен|заполн|почти\s+не))/iu.test(text)) { + return true; + } + if (/(?:раздел[ыа]\s+уч[её]та).*(?:жирн|мертв|пуст|использ)/iu.test(text)) { + return true; + } + return false; +} + +function hasCounterpartyPopulationAndRolesSignal(text: string): boolean { + if (hasAny(text, COUNTERPARTY_POPULATION_AND_ROLES_HINTS)) { + return true; + } + if ( + /(?:(?:сколько|скока|скок)\s+(?:всего\s+)?уникальн(?:ых|ые|ого)?\s+контрагент|(?:сколько|скока|скок)\s+(?:всего\s+)?контрагент(?:ов|а)?(?:\s+в\s+баз[еы])?)/iu.test( + text + ) + ) { + return true; + } + if ( + /(?:(?:сколько|скока|скок)\s+(?:у\s+нас\s+)?заказчик(?:ов|а)?|(?:сколько|скока|скок)\s+(?:у\s+нас\s+)?поставщик(?:ов|а)?|(?:сколько|скока|скок)\s+(?:у\s+нас\s+)?клиент(?:ов|а)?|(?:сколько|скока|скок)\s+(?:у\s+нас\s+)?покупател(?:ей|я)|(?:сколько|скока|скок)\s+(?:у\s+нас\s+)?смешан(?:ных|ые)\s+контрагент(?:ов|а)?|заказчик(?:и|ов)\s*,?\s*поставщик(?:и|ов))/iu.test( + text + ) + ) { + return true; + } + if (/(?:разбей|раздели|сформируй\s+сводк).*(?:контрагент|заказчик|поставщик|клиент|покупател)/iu.test(text)) { + return true; + } + return false; +} + +function hasCounterpartyActivityLifecycleSignal(text: string): boolean { + if (hasDocumentSignal(text) || hasBankOperationSignal(text)) { + return false; + } + if (hasAny(text, COUNTERPARTY_ACTIVITY_LIFECYCLE_HINTS)) { + return true; + } + if (/(?:сколько|скока|скок)\s+/iu.test(text)) { + return false; + } + const hasCustomerLexeme = /(?:заказчик(?:ов|а|и)?|клиент(?:ов|а|ы)?|покупател(?:ей|я|и)?|customer(?:s)?|client(?:s)?)/iu.test( + text + ); + const hasActivityLexeme = /(?:работал(?:и)?|активн(?:ые|ых|а|о)?|сотрудничал(?:и)?|были\s+в\s+работе|active)/iu.test(text); + const hasTimeWindowLexeme = + /(?:за\s+вс[её]\s+время|all\s+time|\b(?:19|20)\d{2}\b|(?:^|[^\d])\d{2}\s*(?:г(?:од|ода)?|г)(?:[^\p{L}\p{N}]|$)|в\s+конкретн(?:ом|ый)\s+год|за\s+год|в\s+году)/iu.test( + text + ); + const hasListVerb = /(?:какие|кто|покажи|выведи|список|list|show)/iu.test(text); + const hasRosterQualifier = /(?:у\s+нас|вообще|в\s+баз[еы]|какие\s+есть|кто\s+есть|who\s+are)/iu.test(text); + const hasListWithWindow = hasCustomerLexeme && hasListVerb && hasTimeWindowLexeme; + if (hasListWithWindow) { + return true; + } + if (hasCustomerLexeme && hasListVerb && hasRosterQualifier) { + return true; + } + + return hasCustomerLexeme && hasActivityLexeme && (hasTimeWindowLexeme || hasListVerb); +} + +function hasContractUsageOverviewSignal(text: string): boolean { + if (hasAny(text, CONTRACT_USAGE_OVERVIEW_HINTS)) { + return true; + } + if ( + /(?:сколько\s+(?:всего\s+)?договор(?:ов|а)?(?:\s+заведен[оы])?|договорн(?:ая|ой)\s+баз[аы]).*(?:сколько|used|использ)/iu.test( + text + ) + ) { + return true; + } + if ( + /(?:сколько\s+из\s+договор(?:ов|а)?\s+(?:реально\s+)?использ(?:ован[оы]|овал(?:и|ось)?))/iu.test(text) + ) { + return true; + } + if (/(?:total\s+vs\s+used|used\s+vs\s+total).*(?:договор|contract)?/iu.test(text)) { + return true; + } + return false; +} + +function hasContractListByCounterpartySignal(text: string): boolean { + const hasContractLexeme = /(?:договор(?:а|у|ом|е|ы)?|contracts?|contract)/iu.test(text); + if (!hasContractLexeme) { + return false; + } + + if (hasContractUsageOverviewSignal(text) || hasOpenContractsListSignal(text)) { + return false; + } + + if (hasContractNumberLikeToken(text)) { + return false; + } + + if (hasBankOperationSignal(text)) { + return false; + } + + const hasListVerb = /(?:покажи|выведи|список|какие|show|list)/iu.test(text); + const hasAllQualifier = /(?:\ball\b|\bвсе\b|всё)/iu.test(text); + const hasCounterpartyAnchor = + hasPartyAnchorMention(text) || + hasLooseByAnchorMention(text) || + hasHeuristicCounterpartyAnchor(text); + + if (!hasCounterpartyAnchor) { + return false; + } + + return hasListVerb || hasAllQualifier || hasAny(text, CONTRACT_LIST_BY_COUNTERPARTY_HINTS); +} + function hasDocumentsByAccountDrilldownSignal(text: string): boolean { const hasAccountLexeme = hasAccountNumberAnchor(text) || hasCompactAccountCodeToken(text); const hasDocLexeme = /(?:документ|док(?:и|ам|ах|ов|а)?|docs?|documents?)/iu.test(text); @@ -287,6 +560,21 @@ function isLikelyCounterpartyToken(rawToken: string): boolean { "документах", "докам", "доками", + "количество", + "количеству", + "количества", + "количеством", + "активный", + "активного", + "активности", + "пассивный", + "пассивного", + "пассивности", + "наименее", + "минимальный", + "минимум", + "реже", + "редкий", "банк", "банковские", "операции", @@ -450,7 +738,15 @@ function hasLooseByAnchorMention(text: string): boolean { "периоду", "период", "документам", - "докам" + "докам", + "количество", + "количеству", + "количества", + "количеством", + "активности", + "пассивности", + "наименее", + "минимум" ]); return !stopWords.has(token); } @@ -589,6 +885,76 @@ export function resolveAddressIntent(userMessage: string): AddressIntentResoluti }; } + if ( + hasPeriodCoverageProfileSignal(text) && + !hasPartyAnchorMention(text) && + !hasContractAnchorSignal(text) && + !hasAccountBalanceSignal(text) + ) { + return { + intent: "period_coverage_profile", + confidence: "high", + reasons: ["period_coverage_profile_signal_detected"] + }; + } + + if ( + hasDocumentTypeAndAccountSectionProfileSignal(text) && + !hasPartyAnchorMention(text) && + !hasContractAnchorSignal(text) && + !hasAccountBalanceSignal(text) + ) { + return { + intent: "document_type_and_account_section_profile", + confidence: "high", + reasons: ["document_type_and_account_section_profile_signal_detected"] + }; + } + + if ( + hasCounterpartyPopulationAndRolesSignal(text) && + !hasContractAnchorSignal(text) && + !hasAccountBalanceSignal(text) + ) { + return { + intent: "counterparty_population_and_roles", + confidence: "high", + reasons: ["counterparty_population_and_roles_signal_detected"] + }; + } + + if ( + hasCounterpartyActivityLifecycleSignal(text) && + !hasContractAnchorSignal(text) && + !hasAccountBalanceSignal(text) + ) { + return { + intent: "counterparty_activity_lifecycle", + confidence: "high", + reasons: ["counterparty_activity_lifecycle_signal_detected"] + }; + } + + if ( + hasContractUsageOverviewSignal(text) && + !hasAccountBalanceSignal(text) && + !hasOpenContractsListSignal(text) + ) { + return { + intent: "contract_usage_overview", + confidence: "high", + reasons: ["contract_usage_overview_signal_detected"] + }; + } + + if (hasContractListByCounterpartySignal(text)) { + return { + intent: "list_contracts_by_counterparty", + confidence: "medium", + reasons: ["contracts_by_counterparty_signal_detected"] + }; + } + if ( hasContractAnchorSignal(text) && hasBankOperationSignal(text) diff --git a/llm_normalizer/backend/src/services/addressQueryClassifier.ts b/llm_normalizer/backend/src/services/addressQueryClassifier.ts index b844f99..bd78c36 100644 --- a/llm_normalizer/backend/src/services/addressQueryClassifier.ts +++ b/llm_normalizer/backend/src/services/addressQueryClassifier.ts @@ -62,6 +62,7 @@ const ADDRESS_ENTITY_TOKENS = [ "компан", "организац", "поставщик", + "заказчик", "клиент", "покупател", "партнер", @@ -106,6 +107,62 @@ const DEEP_REASONING_TOKENS = [ "ошибк" ]; +function hasManagementProfileSignal(text: string): boolean { + if (/(?:за\s+какие\s+год[а-яё]*\s+в\s+баз[еы]\s+есть\s+данн)/iu.test(text)) { + return true; + } + if (/(?:какой\s+год[а-яё]*\s+сам(?:ый|ая|ое)\s+актив)/iu.test(text)) { + return true; + } + if (/(?:какой\s+год[а-яё]*\s+сам(?:ый|ая|ое)\s+пассив|какой\s+год[а-яё]*\s+наименее\s+актив|год\s+с\s+минимальн)/iu.test(text)) { + return true; + } + if (/(?:какой\s+месяц[а-яё]*\s+сам(?:ый|ая|ое)\s+актив)/iu.test(text)) { + return true; + } + if (/(?:какой\s+месяц[а-яё]*\s+сам(?:ый|ая|ое)\s+пассив|какой\s+месяц[а-яё]*\s+наименее\s+актив|месяц\s+с\s+минимальн)/iu.test(text)) { + return true; + } + if (/(?:профил[ья]\s+данн|покрыт(?:ие|ия)\s+период|диапазон\s+лет)/iu.test(text)) { + return true; + } + if (/(?:какие\s+тип[аы]\s+док(?:умент|ов|и)?\s+(?:использ|чаще|больш))/iu.test(text)) { + return true; + } + if (/(?:какие\s+тип[аы]\s+док(?:умент|ов|и)?\s+(?:реже|редк|наименее|миним))/iu.test(text)) { + return true; + } + if (/(?:типы?\s+док(?:умент|ов|и)?\s+и\s+их\s+дол[ья])/iu.test(text)) { + return true; + } + if (/(?:какие\s+раздел[ыа]\s+уч[её]та\s+(?:наибол|наимен|заполн|почти\s+не))/iu.test(text)) { + return true; + } + if (/(?:раздел[ыа]\s+уч[её]та).*(?:жирн|мертв|пуст|использ)/iu.test(text)) { + return true; + } + if (/(?:(?:сколько|скока|скок)\s+(?:всего\s+)?(?:уникальн(?:ых|ые|ого)?\s+)?контрагент(?:ов|а)?(?:\s+в\s+баз[еы])?)/iu.test(text)) { + return true; + } + if (/(?:(?:сколько|скока|скок)\s+(?:у\s+нас\s+)?заказчик(?:ов|а)?|(?:сколько|скока|скок)\s+(?:у\s+нас\s+)?поставщик(?:ов|а)?|(?:сколько|скока|скок)\s+(?:у\s+нас\s+)?клиент(?:ов|а)?|(?:сколько|скока|скок)\s+(?:у\s+нас\s+)?покупател(?:ей|я)|(?:сколько|скока|скок)\s+(?:у\s+нас\s+)?смешан(?:ных|ые)\s+контрагент(?:ов|а)?|разбей\s+контр)/iu.test(text)) { + return true; + } + if (/(?:покажи|выведи|список|какие|кто).*(?:заказчик(?:ов|а|и)?|клиент(?:ов|а|ы)?|покупател(?:ей|я|и)?).*(?:за\s+вс[её]\s+время|all\s+time|(?:^|[^\d])(19|20)\d{2}(?:[^\d]|$)|(?:^|[^\d])\d{2}\s*(?:г(?:од|ода)?|г)(?:[^\p{L}\p{N}]|$)|за\s+год|в\s+году)/iu.test(text)) { + return true; + } + if (/(?:какие|кто|покажи|выведи|список).*(?:заказчик(?:ов|а|и)?|клиент(?:ов|а|ы)?|покупател(?:ей|я|и)?).*(?:работал(?:и)?|активн(?:ые|ых|а|о)?).*(?:за\s+вс[её]\s+время|(?:19|20)\d{2}|за\s+год|в\s+году)|(?:active\s+customers?|customer\s+activity)/iu.test(text)) { + return true; + } + if ( + /(?:сколько\s+(?:всего\s+)?договор(?:ов|а)?(?:\s+заведен[оы])?|договорн(?:ая|ой)\s+баз[аы]|total\s+vs\s+used).*(?:использ|used|договор|contract)?/iu.test( + text + ) + ) { + return true; + } + return false; +} + function hasLooseByAnchorMention(text: string): boolean { const match = text.match(/(?:^|\s)по\s+([a-zа-яё][a-zа-яё0-9._-]{1,})(?=[\s,.;:!?)]|$)/iu); if (!match) { @@ -141,7 +198,14 @@ function hasLooseByAnchorMention(text: string): boolean { "документам", "докам", "взаиморасчетам", - "взаиморасчётам" + "взаиморасчётам", + "количество", + "количеству", + "количества", + "активности", + "пассивности", + "наименее", + "минимум" ]); return !stopWords.has(token); } @@ -216,7 +280,15 @@ function hasLikelyCounterpartyToken(text: string): boolean { "list", "please", "all", - "vse" + "vse", + "количество", + "количеству", + "количества", + "активный", + "пассивный", + "наименее", + "минимум", + "реже" ]); const tokens = String(text ?? "") .split(/[^a-zа-яё0-9._-]+/iu) @@ -254,6 +326,7 @@ export function detectAddressQuestionMode(userMessage: string): AddressModeDetec const hasAddressAction = hasAnyToken(text, ADDRESS_ACTION_TOKENS); const hasAddressEntity = hasAnyToken(text, ADDRESS_ENTITY_TOKENS); const hasDeepReasoning = hasAnyToken(text, DEEP_REASONING_TOKENS); + const hasManagementSignal = hasManagementProfileSignal(text); const hasLooseByAnchor = hasLooseByAnchorMention(text); const hasFollowupSignal = hasAddressFollowupSignal(text); const hasAccountCode = hasAccountCodeAnchor(text); @@ -266,6 +339,14 @@ export function detectAddressQuestionMode(userMessage: string): AddressModeDetec }; } + if (hasManagementSignal && !hasDeepReasoning) { + return { + mode: "address_query", + confidence: "medium", + reasons: ["management_profile_signal_detected"] + }; + } + if (hasLooseByAnchor && (hasAddressAction || hasAddressEntity || hasFollowupSignal || hasAccountCode) && !hasDeepReasoning) { return { mode: "address_query", diff --git a/llm_normalizer/backend/src/services/addressQueryService.ts b/llm_normalizer/backend/src/services/addressQueryService.ts index dfc3cc3..5e0e40a 100644 --- a/llm_normalizer/backend/src/services/addressQueryService.ts +++ b/llm_normalizer/backend/src/services/addressQueryService.ts @@ -35,6 +35,8 @@ interface AddressTryHandleOptions { const ACCOUNT_SCOPE_FIELDS_CHECKED = ["account_dt", "account_kt", "registrator", "analytics"] as const; const ACCOUNT_SCOPE_MATCH_STRATEGY = "account_code_regex_plus_alias_map_v1" as const; const ADDRESS_ANCHOR_RECOVERY_LIMIT = 1000; +const COUNTERPARTY_CATALOG_LOOKUP_LIMIT = 1000; +const COUNTERPARTY_CATALOG_CACHE_TTL_MS = 120_000; const PARTY_ANCHOR_STOPWORDS = new Set([ "ооо", "ао", @@ -85,6 +87,26 @@ const ACCOUNT_ALIAS_MAP: Record = { "62": ["покупатель", "покупателями", "расчеты с покупателями"], "76": ["прочие расчеты", "прочими дебиторами и кредиторами"] }; +const COUNTERPARTY_CATALOG_LOOKUP_QUERY_TEMPLATE = ` +ВЫБРАТЬ ПЕРВЫЕ __LIMIT__ + ДАТАВРЕМЯ(2000, 1, 1, 0, 0, 0) КАК Период, + ПРЕДСТАВЛЕНИЕ(Контрагенты.Ссылка) КАК Регистратор, + "" КАК СчетДт, + "" КАК СчетКт, + 0 КАК Сумма, + ПРЕДСТАВЛЕНИЕ(Контрагенты.Ссылка) КАК Контрагент +ИЗ + Справочник.Контрагенты КАК Контрагенты +`; + +interface CounterpartyCatalogResolution { + tried: boolean; + resolvedValue: string | null; + confidence: "high" | "medium" | "low" | null; + ambiguityCount: number; +} + +let counterpartyCatalogCache: { names: string[]; loadedAt: number } | null = null; function parseFiniteNumber(value: unknown): number | null { if (typeof value === "number" && Number.isFinite(value)) { @@ -165,6 +187,28 @@ function tokenizeAnchor(value: string): string[] { .filter((token) => token.length >= 2 && !PARTY_ANCHOR_STOPWORDS.has(token)); } +function anchorTokenVariants(token: string): string[] { + const source = String(token ?? "").trim().toLowerCase(); + if (!source) { + return []; + } + const variants = new Set([source]); + if (/^[а-яё]+$/iu.test(source) && source.length >= 4) { + const withoutEnding = source.replace( + /(?:ами|ями|ого|ему|ому|ыми|ими|иях|ях|ах|ей|ой|ом|ем|ам|ям|ую|юю|ая|яя|ое|ее|ые|ие|ов|ев|ий|ый|ой|е|у|ы|а|я|и|ю)$/iu, + "" + ); + if (withoutEnding.length >= 3) { + variants.add(withoutEnding); + } + const withoutTrailingVowel = source.replace(/[аеёиоуыэюя]$/iu, ""); + if (withoutTrailingVowel.length >= 3) { + variants.add(withoutTrailingVowel); + } + } + return Array.from(variants); +} + function matchesAnchorText(searchable: string, anchor: string): boolean { const searchableNormalized = normalizeSearchText(searchable); const searchableLatin = transliterateCyrillicToLatin(searchableNormalized); @@ -177,8 +221,11 @@ function matchesAnchorText(searchable: string, anchor: string): boolean { return searchableNormalized.includes(direct) || searchableLatin.includes(transliterateCyrillicToLatin(direct)); } return tokens.every((token) => { - const tokenLatin = transliterateCyrillicToLatin(token); - return searchableNormalized.includes(token) || searchableLatin.includes(tokenLatin); + const variants = anchorTokenVariants(token); + return variants.some((variant) => { + const tokenLatin = transliterateCyrillicToLatin(variant); + return searchableNormalized.includes(variant) || searchableLatin.includes(tokenLatin); + }); }); } @@ -260,6 +307,172 @@ function uniqueStrings(values: string[]): string[] { ); } +function normalizeCounterpartyName(value: string): string { + return normalizeSearchText(String(value ?? "")) + .replace(/\s+/g, " ") + .trim(); +} + +function extractCounterpartyCatalogNames(rows: Array>): string[] { + return uniqueStrings( + rows + .map((row) => { + const direct = + valueAsString(row.Контрагент ?? row.counterparty ?? row.Counterparty).trim() || + valueAsString(row.Регистратор ?? row.registrator ?? row.Registrator).trim(); + return direct; + }) + .map((value) => value.trim()) + .filter((value) => value.length >= 2) + ); +} + +function scoreCounterpartyCandidate(name: string, anchor: string): number | null { + if (!matchesAnchorText(name, anchor)) { + return null; + } + const normalizedName = normalizeCounterpartyName(name); + const normalizedAnchor = normalizeCounterpartyName(anchor); + if (!normalizedName || !normalizedAnchor) { + return null; + } + + let score = 0; + if (normalizedName === normalizedAnchor) { + score += 10_000; + } else if (normalizedName.includes(normalizedAnchor)) { + score += 5_000; + } else if (normalizedAnchor.includes(normalizedName) && normalizedName.length >= 4) { + score += 2_000; + } + + const anchorTokens = tokenizeAnchor(anchor); + for (const token of anchorTokens) { + const variants = anchorTokenVariants(token); + let tokenScore = 0; + for (const variant of variants) { + if (normalizedName.includes(variant)) { + tokenScore = Math.max(tokenScore, Math.max(2, variant.length) * 20); + } + } + if (tokenScore === 0) { + return null; + } + score += tokenScore; + } + + const lengthPenalty = Math.abs(normalizedName.length - normalizedAnchor.length); + score -= lengthPenalty; + return score; +} + +function shouldAttemptCounterpartyCatalogResolution(intent: AddressIntent, filters: AddressFilterSet): boolean { + const counterparty = typeof filters.counterparty === "string" ? filters.counterparty.trim() : ""; + if (!counterparty || isLikelyLowQualityPartyAnchor(counterparty)) { + return false; + } + return ( + intent === "list_contracts_by_counterparty" || + intent === "list_documents_by_counterparty" || + intent === "bank_operations_by_counterparty" || + intent === "open_items_by_counterparty_or_contract" || + intent === "list_payables_counterparties" || + intent === "list_receivables_counterparties" + ); +} + +async function resolveCounterpartyViaCatalog(anchorRaw: string): Promise { + const requested = String(anchorRaw ?? "").trim(); + if (!requested || isLikelyLowQualityPartyAnchor(requested)) { + return { + tried: false, + resolvedValue: null, + confidence: null, + ambiguityCount: 0 + }; + } + + const now = Date.now(); + const cacheFresh = + counterpartyCatalogCache !== null && now - counterpartyCatalogCache.loadedAt <= COUNTERPARTY_CATALOG_CACHE_TTL_MS; + let names: string[] = cacheFresh ? [...counterpartyCatalogCache!.names] : []; + + if (!cacheFresh) { + const mcp = await executeAddressMcpQuery({ + query: COUNTERPARTY_CATALOG_LOOKUP_QUERY_TEMPLATE.replaceAll("__LIMIT__", String(COUNTERPARTY_CATALOG_LOOKUP_LIMIT)), + limit: COUNTERPARTY_CATALOG_LOOKUP_LIMIT + }); + if (!mcp.error) { + names = extractCounterpartyCatalogNames(mcp.raw_rows); + if (names.length > 0) { + counterpartyCatalogCache = { + names: [...names], + loadedAt: now + }; + } + } else if (counterpartyCatalogCache && counterpartyCatalogCache.names.length > 0) { + names = [...counterpartyCatalogCache.names]; + } else { + return { + tried: true, + resolvedValue: null, + confidence: null, + ambiguityCount: 0 + }; + } + } + + if (names.length === 0) { + return { + tried: true, + resolvedValue: null, + confidence: null, + ambiguityCount: 0 + }; + } + + const scored = names + .map((name) => { + const score = scoreCounterpartyCandidate(name, requested); + return score === null ? null : { name, score }; + }) + .filter((item): item is { name: string; score: number } => Boolean(item)) + .sort((a, b) => b.score - a.score || a.name.length - b.name.length || a.name.localeCompare(b.name, "ru")); + + if (scored.length === 0) { + return { + tried: true, + resolvedValue: null, + confidence: null, + ambiguityCount: 0 + }; + } + + const topScore = scored[0].score; + const topCandidates = scored.filter((item) => item.score === topScore); + const bestCandidate = topCandidates[0]; + const normalizedRequested = normalizeCounterpartyName(requested); + const normalizedBest = normalizeCounterpartyName(bestCandidate.name); + const isExact = normalizedBest === normalizedRequested; + const isStrongContains = normalizedBest.includes(normalizedRequested); + + if (topCandidates.length > 1 && !isExact && !isStrongContains) { + return { + tried: true, + resolvedValue: null, + confidence: "low", + ambiguityCount: topCandidates.length - 1 + }; + } + + return { + tried: true, + resolvedValue: bestCandidate.name, + confidence: isExact ? "high" : isStrongContains ? "medium" : topCandidates.length === 1 ? "medium" : "low", + ambiguityCount: topCandidates.length - 1 + }; +} + function collectAnalyticsStrings(row: Record): string[] { const fixedKeys = [ "СубконтоДт1", @@ -466,10 +679,15 @@ function canAutoBroadenPeriodWindow(intent: AddressIntent, filters: AddressFilte ); } +function invertSort(sort: AddressFilterSet["sort"]): AddressFilterSet["sort"] { + return sort === "period_asc" ? "period_desc" : "period_asc"; +} + function isAnchorRecoveryIntent(intent: AddressIntent): boolean { return ( intent === "list_documents_by_counterparty" || intent === "bank_operations_by_counterparty" || + intent === "list_contracts_by_counterparty" || intent === "list_documents_by_contract" || intent === "bank_operations_by_contract" || intent === "open_items_by_counterparty_or_contract" || @@ -923,6 +1141,45 @@ export class AddressQueryService { }); } + const rawCounterpartyAnchor = + typeof filters.extracted_filters.counterparty === "string" ? filters.extracted_filters.counterparty.trim() : ""; + if (shouldAttemptCounterpartyCatalogResolution(intent.intent, filters.extracted_filters)) { + const catalogResolution = await resolveCounterpartyViaCatalog(rawCounterpartyAnchor); + if (catalogResolution.resolvedValue) { + if (normalizeCounterpartyName(rawCounterpartyAnchor) !== normalizeCounterpartyName(catalogResolution.resolvedValue)) { + filters.warnings.push("counterparty_anchor_resolved_via_catalog_lookup"); + } + } else if (catalogResolution.tried) { + filters.warnings.push( + catalogResolution.ambiguityCount > 0 + ? "counterparty_anchor_catalog_lookup_ambiguous" + : "counterparty_anchor_catalog_lookup_no_match" + ); + } + + anchor = resolvePrimaryAnchor(intent.intent, filters.extracted_filters); + if (anchor.anchor_type === "counterparty") { + anchor = { + ...anchor, + anchor_value_raw: rawCounterpartyAnchor || anchor.anchor_value_raw + }; + if (catalogResolution.resolvedValue) { + anchor = { + ...anchor, + anchor_value_resolved: catalogResolution.resolvedValue, + resolver_confidence: catalogResolution.confidence ?? anchor.resolver_confidence, + ambiguity_count: Math.max(anchor.ambiguity_count, catalogResolution.ambiguityCount) + }; + } else if (catalogResolution.ambiguityCount > 0) { + anchor = { + ...anchor, + resolver_confidence: "low", + ambiguity_count: Math.max(anchor.ambiguity_count, catalogResolution.ambiguityCount) + }; + } + } + } + const plan = buildAddressRecipePlan(recipeSelection.selected_recipe, filters.extracted_filters); const mcp = await executeAddressMcpQuery({ query: plan.query, @@ -1013,7 +1270,7 @@ export class AddressQueryService { 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 factual = composeFactualReply(intent.intent, recoveredRows, { userMessage }); const recoveryReason = recoveredBankRows.length > 0 ? "contract_docs_recovered_via_bank_fallback" @@ -1132,7 +1389,7 @@ export class AddressQueryService { rowsAnchorMatched: expandedRowsByAnchor.length, rowsMatched: expandedFilteredRows.length }); - const expandedFactual = composeFactualReply(intent.intent, expandedFilteredRows); + const expandedFactual = composeFactualReply(intent.intent, expandedFilteredRows, { userMessage }); const expandedPrefix = `Период сохранен. Глубина live-выборки автоматически расширена до ${expandedPlan.limit} строк.`; const expandedLimitations = [...filters.warnings, "query_limit_auto_expanded_for_anchor_recovery"]; const expandedReasons = [...baseReasons, "query_limit_auto_expanded_for_anchor_recovery"]; @@ -1241,7 +1498,7 @@ export class AddressQueryService { }); const observedWindow = deriveObservedPeriodWindow(broadenedFilteredRows); const broadenedPrefix = composeAutoBroadenedPeriodPrefix(filters.extracted_filters, observedWindow); - const broadenedFactual = composeFactualReply(intent.intent, broadenedFilteredRows); + const broadenedFactual = composeFactualReply(intent.intent, broadenedFilteredRows, { userMessage }); const broadenedLimitations = [...filters.warnings, "period_window_auto_broadened_to_available_data"]; const broadenedReasons = [...baseReasons, "period_window_auto_broadened_to_available_data"]; return { @@ -1295,15 +1552,133 @@ export class AddressQueryService { } } + if ( + filteredRows.length === 0 && + isDocumentOrBankAnchorIntent(intent.intent) && + !hasExplicitPeriodWindow(filters.extracted_filters) && + (anchor.anchor_type === "counterparty" || anchor.anchor_type === "contract") + ) { + const currentLimit = + typeof filters.extracted_filters.limit === "number" && Number.isFinite(filters.extracted_filters.limit) + ? Math.max(1, Math.trunc(filters.extracted_filters.limit)) + : plan.limit; + const historicalFilters: AddressFilterSet = { + ...filters.extracted_filters, + sort: invertSort(filters.extracted_filters.sort), + limit: Math.max(currentLimit, ADDRESS_ANCHOR_RECOVERY_LIMIT) + }; + const historicalSelection = selectAddressRecipe(intent.intent, historicalFilters); + if (historicalSelection.selected_recipe && historicalSelection.missing_required_filters.length === 0) { + const historicalPlan = buildAddressRecipePlan(historicalSelection.selected_recipe, historicalFilters); + const historicalMcp = await executeAddressMcpQuery({ + query: historicalPlan.query, + limit: historicalPlan.limit + }); + if (!historicalMcp.error) { + const historicalRawRows = toNormalizedRows(historicalMcp.raw_rows); + const historicalScopedRows = applyAccountScopeFilter(historicalRawRows, historicalPlan.account_scope); + const historicalAccountScopeFallbackApplied = + historicalPlan.account_scope_mode === "preferred" && + historicalPlan.account_scope.length > 0 && + historicalRawRows.length > 0 && + historicalScopedRows.length === 0; + const historicalNormalizedRows = historicalAccountScopeFallbackApplied ? historicalRawRows : historicalScopedRows; + let historicalAnchor = resolvePrimaryAnchor(intent.intent, historicalFilters); + historicalAnchor = refineAnchorFromRows(historicalAnchor, historicalNormalizedRows); + const historicalFiltersForMatching: AddressFilterSet = + historicalAnchor.anchor_type === "counterparty" && historicalAnchor.anchor_value_resolved + ? { ...historicalFilters, counterparty: historicalAnchor.anchor_value_resolved } + : historicalAnchor.anchor_type === "contract" && historicalAnchor.anchor_value_resolved + ? { ...historicalFilters, contract: historicalAnchor.anchor_value_resolved } + : historicalFilters; + const historicalAccountScopeAudit = buildAccountScopeAudit({ + intent: intent.intent, + filters: historicalFiltersForMatching, + accountScope: historicalPlan.account_scope, + rowsBeforeScope: historicalRawRows.length, + rowsAfterScope: historicalNormalizedRows.length + }); + const historicalAnchorFilter = applyAddressFilters(historicalNormalizedRows, historicalFiltersForMatching); + const historicalRowsByAnchor = historicalAnchorFilter.rows; + const historicalFilteredRows = applyIntentSpecificFilter(intent.intent, historicalRowsByAnchor); + if (historicalFilteredRows.length > 0) { + const historicalRowDiagnostics = deriveRowStageDiagnostics( + historicalMcp.raw_rows, + historicalNormalizedRows.length, + historicalNormalizedRows.length + ); + const historicalStageStatus = deriveMcpStageStatus({ + rawRowsReceived: historicalMcp.raw_rows.length, + rowsMaterialized: historicalNormalizedRows.length, + rowsAnchorMatched: historicalRowsByAnchor.length, + rowsMatched: historicalFilteredRows.length + }); + const historicalFactual = composeFactualReply(intent.intent, historicalFilteredRows, { userMessage }); + const historicalPrefix = + "В последних доступных записях якорь не подтвердился; показаны найденные строки по историческому окну."; + const historicalLimitations = [...filters.warnings, "historical_window_sort_recovery_applied"]; + const historicalReasons = [...baseReasons, "historical_window_sort_recovery_applied"]; + return { + handled: true, + reply_text: `${historicalPrefix}\n${historicalFactual.text}`, + reply_type: inferReplyType(historicalFactual.responseType), + response_type: historicalFactual.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: historicalSelection.selected_recipe.recipe_id, + mcp_call_status_legacy: toLegacyMcpStatus(historicalStageStatus), + account_scope_mode: historicalPlan.account_scope_mode, + account_scope_fallback_applied: historicalAccountScopeFallbackApplied, + anchor_type: historicalAnchor.anchor_type, + anchor_value_raw: historicalAnchor.anchor_value_raw, + anchor_value_resolved: historicalAnchor.anchor_value_resolved, + resolver_confidence: historicalAnchor.resolver_confidence, + ambiguity_count: historicalAnchor.ambiguity_count, + match_failure_stage: "none", + match_failure_reason: null, + mcp_call_status: historicalStageStatus, + rows_fetched: historicalMcp.fetched_rows, + raw_rows_received: historicalMcp.raw_rows.length, + rows_after_account_scope: historicalNormalizedRows.length, + rows_after_recipe_filter: historicalRowsByAnchor.length, + rows_materialized: historicalNormalizedRows.length, + rows_matched: historicalFilteredRows.length, + raw_row_keys_sample: historicalRowDiagnostics.rawRowKeysSample, + materialization_drop_reason: historicalRowDiagnostics.materializationDropReason, + account_token_raw: historicalAccountScopeAudit.accountTokenRaw, + account_token_normalized: historicalAccountScopeAudit.accountTokenNormalized, + account_scope_fields_checked: historicalAccountScopeAudit.accountScopeFieldsChecked, + account_scope_match_strategy: historicalAccountScopeAudit.accountScopeMatchStrategy, + account_scope_drop_reason: historicalAccountScopeAudit.accountScopeDropReason, + runtime_readiness: "LIVE_QUERYABLE_WITH_LIMITS", + limited_reason_category: null, + response_type: historicalFactual.responseType, + limitations: historicalLimitations, + reasons: historicalReasons + } + }; + } + } + } + } + if ( filteredRows.length === 0 && isDocumentOrBankAnchorIntent(intent.intent) && normalizedRows.length > 0 && + filterByAnchors.length > 0 && (stageStatus === "materialized_but_not_anchor_matched" || stageStatus === "materialized_but_filtered_out_by_recipe") ) { const documentBankFallbackRows = applyIntentSpecificFilter(intent.intent, normalizedRows); if (documentBankFallbackRows.length > 0) { - const fallbackFactual = composeFactualReply(intent.intent, documentBankFallbackRows); + const fallbackFactual = composeFactualReply(intent.intent, documentBankFallbackRows, { userMessage }); const fallbackLimitations = [...filters.warnings, "anchor_not_matched_fallback_rows"]; const fallbackReasons = [...baseReasons, "anchor_not_matched_fallback_rows"]; return { @@ -1446,7 +1821,7 @@ export class AddressQueryService { }); } - const factual = composeFactualReply(intent.intent, filteredRows); + const factual = composeFactualReply(intent.intent, filteredRows, { userMessage }); return { handled: true, reply_text: factual.text, diff --git a/llm_normalizer/backend/src/services/addressRecipeCatalog.ts b/llm_normalizer/backend/src/services/addressRecipeCatalog.ts index bbdae1a..188f94e 100644 --- a/llm_normalizer/backend/src/services/addressRecipeCatalog.ts +++ b/llm_normalizer/backend/src/services/addressRecipeCatalog.ts @@ -16,7 +16,7 @@ const MOVEMENTS_QUERY_TEMPLATE = ` РегистрБухгалтерии.Хозрасчетный КАК Движения __WHERE_CLAUSE__ УПОРЯДОЧИТЬ ПО - Движения.Период УБЫВ + Движения.Период __ORDER_DIRECTION__ `; const BANK_DOCS_QUERY_TEMPLATE = ` @@ -42,10 +42,310 @@ __WHERE_OUT__ Документ.ПоступлениеНаРасчетныйСчет КАК БанкПоступление __WHERE_IN__ УПОРЯДОЧИТЬ ПО + Период __ORDER_DIRECTION__ +`; + +const PERIOD_COVERAGE_PROFILE_QUERY_TEMPLATE = ` +ВЫБРАТЬ + МИНИМУМ(Движения.Период) КАК Период, + "MIN_DATE" КАК Регистратор, + "" КАК СчетДт, + "" КАК СчетКт, + 0 КАК Сумма +ИЗ + РегистрБухгалтерии.Хозрасчетный КАК Движения +__WHERE_CLAUSE__ +ОБЪЕДИНИТЬ ВСЕ +ВЫБРАТЬ + МАКСИМУМ(Движения.Период) КАК Период, + "MAX_DATE" КАК Регистратор, + "" КАК СчетДт, + "" КАК СчетКт, + 0 КАК Сумма +ИЗ + РегистрБухгалтерии.Хозрасчетный КАК Движения +__WHERE_CLAUSE__ +ОБЪЕДИНИТЬ ВСЕ +ВЫБРАТЬ + НАЧАЛОПЕРИОДА(Движения.Период, ГОД) КАК Период, + "YEAR_OPS" КАК Регистратор, + "" КАК СчетДт, + "" КАК СчетКт, + КОЛИЧЕСТВО(*) КАК Сумма +ИЗ + РегистрБухгалтерии.Хозрасчетный КАК Движения +__WHERE_CLAUSE__ +СГРУППИРОВАТЬ ПО + НАЧАЛОПЕРИОДА(Движения.Период, ГОД) +ОБЪЕДИНИТЬ ВСЕ +ВЫБРАТЬ + НАЧАЛОПЕРИОДА(Движения.Период, ГОД) КАК Период, + "YEAR_DOCS" КАК Регистратор, + "" КАК СчетДт, + "" КАК СчетКт, + КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Движения.Регистратор) КАК Сумма +ИЗ + РегистрБухгалтерии.Хозрасчетный КАК Движения +__WHERE_CLAUSE__ +СГРУППИРОВАТЬ ПО + НАЧАЛОПЕРИОДА(Движения.Период, ГОД) +ОБЪЕДИНИТЬ ВСЕ +ВЫБРАТЬ + НАЧАЛОПЕРИОДА(Движения.Период, МЕСЯЦ) КАК Период, + "MONTH_OPS" КАК Регистратор, + "" КАК СчетДт, + "" КАК СчетКт, + КОЛИЧЕСТВО(*) КАК Сумма +ИЗ + РегистрБухгалтерии.Хозрасчетный КАК Движения +__WHERE_CLAUSE__ +СГРУППИРОВАТЬ ПО + НАЧАЛОПЕРИОДА(Движения.Период, МЕСЯЦ) +УПОРЯДОЧИТЬ ПО + Регистратор, + Период +`; + +const DOCUMENT_TYPE_AND_SECTION_PROFILE_QUERY_TEMPLATE = ` +ВЫБРАТЬ + ДАТАВРЕМЯ(2000, 1, 1, 0, 0, 0) КАК Период, + "DOC_TYPE_DOCS" КАК Регистратор, + ПРЕДСТАВЛЕНИЕ(ТИПЗНАЧЕНИЯ(Движения.Регистратор)) КАК СчетДт, + "" КАК СчетКт, + КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Движения.Регистратор) КАК Сумма +ИЗ + РегистрБухгалтерии.Хозрасчетный КАК Движения +__WHERE_CLAUSE__ +СГРУППИРОВАТЬ ПО + ПРЕДСТАВЛЕНИЕ(ТИПЗНАЧЕНИЯ(Движения.Регистратор)) +ОБЪЕДИНИТЬ ВСЕ +ВЫБРАТЬ + ДАТАВРЕМЯ(2000, 1, 1, 0, 0, 0) КАК Период, + "SECTION_DT_OPS" КАК Регистратор, + ПРЕДСТАВЛЕНИЕ(Движения.СчетДт) КАК СчетДт, + "DT" КАК СчетКт, + КОЛИЧЕСТВО(*) КАК Сумма +ИЗ + РегистрБухгалтерии.Хозрасчетный КАК Движения +__WHERE_CLAUSE__ +СГРУППИРОВАТЬ ПО + Движения.СчетДт +ОБЪЕДИНИТЬ ВСЕ +ВЫБРАТЬ + ДАТАВРЕМЯ(2000, 1, 1, 0, 0, 0) КАК Период, + "SECTION_KT_OPS" КАК Регистратор, + ПРЕДСТАВЛЕНИЕ(Движения.СчетКт) КАК СчетДт, + "KT" КАК СчетКт, + КОЛИЧЕСТВО(*) КАК Сумма +ИЗ + РегистрБухгалтерии.Хозрасчетный КАК Движения +__WHERE_CLAUSE__ +СГРУППИРОВАТЬ ПО + Движения.СчетКт +УПОРЯДОЧИТЬ ПО + Регистратор, + Сумма УБЫВ +`; + +const COUNTERPARTY_POPULATION_AND_ROLES_QUERY_TEMPLATE = ` +ВЫБРАТЬ + ДАТАВРЕМЯ(2000, 1, 1, 0, 0, 0) КАК Период, + "CP_TOTAL" КАК Регистратор, + "" КАК СчетДт, + "" КАК СчетКт, + КОЛИЧЕСТВО(*) КАК Сумма +ИЗ + Справочник.Контрагенты КАК Контрагенты +ОБЪЕДИНИТЬ ВСЕ +ВЫБРАТЬ + ДАТАВРЕМЯ(2000, 1, 1, 0, 0, 0) КАК Период, + "CP_CUSTOMER_ACTIVE" КАК Регистратор, + "" КАК СчетДт, + "" КАК СчетКт, + КОЛИЧЕСТВО(РАЗЛИЧНЫЕ БанкПоступление.Контрагент) КАК Сумма +ИЗ + Документ.ПоступлениеНаРасчетныйСчет КАК БанкПоступление +__WHERE_IN__ +ОБЪЕДИНИТЬ ВСЕ +ВЫБРАТЬ + ДАТАВРЕМЯ(2000, 1, 1, 0, 0, 0) КАК Период, + "CP_SUPPLIER_ACTIVE" КАК Регистратор, + "" КАК СчетДт, + "" КАК СчетКт, + КОЛИЧЕСТВО(РАЗЛИЧНЫЕ БанкСписание.Контрагент) КАК Сумма +ИЗ + Документ.СписаниеСРасчетногоСчета КАК БанкСписание +__WHERE_OUT__ +ОБЪЕДИНИТЬ ВСЕ +ВЫБРАТЬ + ДАТАВРЕМЯ(2000, 1, 1, 0, 0, 0) КАК Период, + "CP_MIXED_ACTIVE" КАК Регистратор, + "" КАК СчетДт, + "" КАК СчетКт, + КОЛИЧЕСТВО(*) КАК Сумма +ИЗ + (ВЫБРАТЬ РАЗЛИЧНЫЕ + БанкПоступление.Контрагент КАК Контрагент + ИЗ + Документ.ПоступлениеНаРасчетныйСчет КАК БанкПоступление + __WHERE_IN__ + ) КАК Входящие + ВНУТРЕННЕЕ СОЕДИНЕНИЕ + (ВЫБРАТЬ РАЗЛИЧНЫЕ + БанкСписание.Контрагент КАК Контрагент + ИЗ + Документ.СписаниеСРасчетногоСчета КАК БанкСписание + __WHERE_OUT__ + ) КАК Исходящие + ПО Входящие.Контрагент = Исходящие.Контрагент +ОБЪЕДИНИТЬ ВСЕ +ВЫБРАТЬ + ДАТАВРЕМЯ(2000, 1, 1, 0, 0, 0) КАК Период, + "CP_ACTIVE_UNION" КАК Регистратор, + "" КАК СчетДт, + "" КАК СчетКт, + КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Источник.Контрагент) КАК Сумма +ИЗ + (ВЫБРАТЬ + БанкПоступление.Контрагент КАК Контрагент + ИЗ + Документ.ПоступлениеНаРасчетныйСчет КАК БанкПоступление + __WHERE_IN__ + ОБЪЕДИНИТЬ ВСЕ + ВЫБРАТЬ + БанкСписание.Контрагент КАК Контрагент + ИЗ + Документ.СписаниеСРасчетногоСчета КАК БанкСписание + __WHERE_OUT__ + ) КАК Источник +УПОРЯДОЧИТЬ ПО + Регистратор +`; + +const COUNTERPARTY_ACTIVITY_LIFECYCLE_QUERY_TEMPLATE = ` +ВЫБРАТЬ + МАКСИМУМ(БанкПоступление.Дата) КАК Период, + "CP_CUSTOMER_ACTIVITY" КАК Регистратор, + "" КАК СчетДт, + "" КАК СчетКт, + КОЛИЧЕСТВО(*) КАК Сумма, + ПРЕДСТАВЛЕНИЕ(БанкПоступление.Контрагент) КАК Контрагент +ИЗ + Документ.ПоступлениеНаРасчетныйСчет КАК БанкПоступление +__WHERE_IN__ +СГРУППИРОВАТЬ ПО + БанкПоступление.Контрагент +УПОРЯДОЧИТЬ ПО + Сумма УБЫВ, Период УБЫВ `; +const CONTRACT_USAGE_OVERVIEW_QUERY_TEMPLATE = ` +ВЫБРАТЬ + ДАТАВРЕМЯ(2000, 1, 1, 0, 0, 0) КАК Период, + "CT_TOTAL" КАК Регистратор, + "" КАК СчетДт, + "" КАК СчетКт, + КОЛИЧЕСТВО(*) КАК Сумма +ИЗ + Справочник.ДоговорыКонтрагентов КАК Договоры +ОБЪЕДИНИТЬ ВСЕ +ВЫБРАТЬ + ДАТАВРЕМЯ(2000, 1, 1, 0, 0, 0) КАК Период, + "CT_USED" КАК Регистратор, + "" КАК СчетДт, + "" КАК СчетКт, + КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Источник.Договор) КАК Сумма +ИЗ + (ВЫБРАТЬ + БанкПоступление.ДоговорКонтрагента КАК Договор + ИЗ + Документ.ПоступлениеНаРасчетныйСчет КАК БанкПоступление + __WHERE_IN_USED__ + ОБЪЕДИНИТЬ ВСЕ + ВЫБРАТЬ + БанкСписание.ДоговорКонтрагента КАК Договор + ИЗ + Документ.СписаниеСРасчетногоСчета КАК БанкСписание + __WHERE_OUT_USED__ + ) КАК Источник +УПОРЯДОЧИТЬ ПО + Регистратор +`; + +const CONTRACTS_BY_COUNTERPARTY_QUERY_TEMPLATE = ` +ВЫБРАТЬ ПЕРВЫЕ __LIMIT__ + ДАТАВРЕМЯ(2000, 1, 1, 0, 0, 0) КАК Период, + ПРЕДСТАВЛЕНИЕ(Договоры.Ссылка) КАК Регистратор, + "" КАК СчетДт, + "" КАК СчетКт, + 0 КАК Сумма, + ПРЕДСТАВЛЕНИЕ(Договоры.Владелец) КАК Контрагент +ИЗ + Справочник.ДоговорыКонтрагентов КАК Договоры +`; + const BASE_RECIPES: AddressRecipeDefinition[] = [ + { + recipe_id: "address_period_coverage_profile_v1", + intent: "period_coverage_profile", + purpose: "Build period coverage profile and top active year/month metrics from movements", + required_filters: [], + optional_filters: ["period_from", "period_to", "organization", "limit"], + default_limit: 600, + account_scope_mode: "preferred", + query_template: "period_profile" + }, + { + recipe_id: "address_document_type_and_account_section_profile_v1", + intent: "document_type_and_account_section_profile", + purpose: "Build document type usage ranking and account section activity profile", + required_filters: [], + optional_filters: ["period_from", "period_to", "organization", "limit"], + default_limit: 800, + account_scope_mode: "preferred", + query_template: "document_section_profile" + }, + { + recipe_id: "address_counterparty_population_roles_v1", + intent: "counterparty_population_and_roles", + purpose: "Build total counterparties and role split (customer/supplier/mixed) from catalog + bank docs", + required_filters: [], + optional_filters: ["period_from", "period_to", "organization", "limit"], + default_limit: 300, + account_scope_mode: "preferred", + query_template: "counterparty_roles_profile" + }, + { + recipe_id: "address_counterparty_activity_lifecycle_v1", + intent: "counterparty_activity_lifecycle", + purpose: "Build active customer list for requested period/all-time using bank inflow docs", + required_filters: [], + optional_filters: ["period_from", "period_to", "organization", "limit", "sort"], + default_limit: 200, + account_scope_mode: "preferred", + query_template: "counterparty_lifecycle_profile" + }, + { + recipe_id: "address_contract_usage_overview_v1", + intent: "contract_usage_overview", + purpose: "Build total-vs-used contract overview from catalog + bank docs", + required_filters: [], + optional_filters: ["period_from", "period_to", "organization", "limit"], + default_limit: 300, + account_scope_mode: "preferred", + query_template: "contract_usage_profile" + }, + { + recipe_id: "address_contracts_by_counterparty_v1", + intent: "list_contracts_by_counterparty", + purpose: "List contracts by counterparty from contract catalog", + required_filters: ["counterparty"], + optional_filters: ["limit", "sort"], + default_limit: 300, + account_scope_mode: "preferred", + query_template: "contracts_by_counterparty_profile" + }, { recipe_id: "address_movements_payables_v1", intent: "list_payables_counterparties", @@ -213,6 +513,16 @@ function buildWhereClause(filters: AddressFilterSet, fieldPath: string, extraCon return ""; } +function buildManagementWhereClause(filters: AddressFilterSet, fieldPath: string): string { + return buildWhereClause(filters, fieldPath); +} + +function buildUsedContractWhereClause(filters: AddressFilterSet, fieldPath: string, contractFieldPath: string): string { + return buildWhereClause(filters, fieldPath, [ + `${contractFieldPath} <> ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка)` + ]); +} + function normalizeAccountTokenForQuery(value: string): string { const source = String(value ?? "").trim().replace(",", "."); const match = source.match(/^(\d{2})(?:\.(\d{1,2}))?/); @@ -277,6 +587,12 @@ function shouldBoostLimitForAllTimeCounterparty(filters: AddressFilterSet): bool function maxLimitForIntent(intent: AddressIntent): number { if ( + intent === "period_coverage_profile" || + intent === "document_type_and_account_section_profile" || + intent === "counterparty_population_and_roles" || + intent === "counterparty_activity_lifecycle" || + intent === "contract_usage_overview" || + intent === "list_contracts_by_counterparty" || intent === "list_documents_by_counterparty" || intent === "bank_operations_by_counterparty" || intent === "list_documents_by_contract" || @@ -289,6 +605,10 @@ function maxLimitForIntent(intent: AddressIntent): number { return ADDRESS_MAX_LIMIT_DEFAULT; } +function resolveOrderDirection(sort: AddressFilterSet["sort"]): "УБЫВ" | "ВОЗР" { + return sort === "period_asc" ? "ВОЗР" : "УБЫВ"; +} + export function selectAddressRecipe(intent: AddressIntent, filters: AddressFilterSet): AddressRecipeSelection { const recipe = BASE_RECIPES.find((item) => item.intent === intent) ?? null; if (!recipe) { @@ -316,22 +636,30 @@ export function buildAddressRecipePlan( filters: AddressFilterSet ): AddressRecipeExecutionPlan { const maxLimit = maxLimitForIntent(recipe.intent); + const isManagementAggregateRecipe = + recipe.query_template === "period_profile" || + recipe.query_template === "document_section_profile" || + recipe.query_template === "counterparty_roles_profile" || + recipe.query_template === "contract_usage_profile"; const baseLimit = typeof filters.limit === "number" && Number.isFinite(filters.limit) ? Math.max(1, Math.min(maxLimit, Math.trunc(filters.limit))) : recipe.default_limit; + const normalizedBaseLimit = + isManagementAggregateRecipe && baseLimit < recipe.default_limit ? recipe.default_limit : baseLimit; const boostedLimit = (recipe.intent === "list_documents_by_counterparty" || recipe.intent === "bank_operations_by_counterparty" || + recipe.intent === "list_contracts_by_counterparty" || recipe.intent === "list_documents_by_contract" || recipe.intent === "bank_operations_by_contract") && shouldBoostLimitForAllTimeCounterparty(filters) - ? Math.max(baseLimit, maxLimit) + ? Math.max(normalizedBaseLimit, maxLimit) : (recipe.intent === "account_balance_snapshot" || recipe.intent === "documents_forming_balance") && typeof filters.account === "string" && filters.account.trim().length > 0 - ? Math.max(baseLimit, ADDRESS_MAX_LIMIT_DEFAULT) - : baseLimit; + ? Math.max(normalizedBaseLimit, ADDRESS_MAX_LIMIT_DEFAULT) + : normalizedBaseLimit; const resolvedLimit = Math.max(1, Math.min(maxLimit, boostedLimit)); const accountScope = @@ -348,14 +676,49 @@ export function buildAddressRecipePlan( .replaceAll("__LIMIT__", String(resolvedLimit)) .replace("__WHERE_OUT__", buildWhereClause(filters, "БанкСписание.Дата")) .replace("__WHERE_IN__", buildWhereClause(filters, "БанкПоступление.Дата")) - : MOVEMENTS_QUERY_TEMPLATE.replace("__LIMIT__", String(resolvedLimit)).replace("__WHERE_CLAUSE__", (() => { - const extraConditions: string[] = []; - const accountCondition = buildMovementAccountCondition(filters); - if (accountCondition) { - extraConditions.push(accountCondition); - } - return buildWhereClause(filters, "Движения.Период", extraConditions); - })()); + .replaceAll("__ORDER_DIRECTION__", resolveOrderDirection(filters.sort)) + : recipe.query_template === "period_profile" + ? PERIOD_COVERAGE_PROFILE_QUERY_TEMPLATE.replaceAll( + "__WHERE_CLAUSE__", + buildManagementWhereClause(filters, "Движения.Период") + ) + : recipe.query_template === "document_section_profile" + ? DOCUMENT_TYPE_AND_SECTION_PROFILE_QUERY_TEMPLATE.replaceAll( + "__WHERE_CLAUSE__", + buildManagementWhereClause(filters, "Движения.Период") + ) + : recipe.query_template === "counterparty_roles_profile" + ? COUNTERPARTY_POPULATION_AND_ROLES_QUERY_TEMPLATE + .replaceAll("__WHERE_OUT__", buildWhereClause(filters, "БанкСписание.Дата")) + .replaceAll("__WHERE_IN__", buildWhereClause(filters, "БанкПоступление.Дата")) + : recipe.query_template === "counterparty_lifecycle_profile" + ? COUNTERPARTY_ACTIVITY_LIFECYCLE_QUERY_TEMPLATE.replaceAll( + "__WHERE_IN__", + buildWhereClause(filters, "БанкПоступление.Дата") + ) + : recipe.query_template === "contract_usage_profile" + ? CONTRACT_USAGE_OVERVIEW_QUERY_TEMPLATE + .replaceAll( + "__WHERE_OUT_USED__", + buildUsedContractWhereClause(filters, "БанкСписание.Дата", "БанкСписание.ДоговорКонтрагента") + ) + .replaceAll( + "__WHERE_IN_USED__", + buildUsedContractWhereClause(filters, "БанкПоступление.Дата", "БанкПоступление.ДоговорКонтрагента") + ) + : recipe.query_template === "contracts_by_counterparty_profile" + ? CONTRACTS_BY_COUNTERPARTY_QUERY_TEMPLATE.replaceAll("__LIMIT__", String(resolvedLimit)) + : MOVEMENTS_QUERY_TEMPLATE + .replace("__LIMIT__", String(resolvedLimit)) + .replace("__WHERE_CLAUSE__", (() => { + const extraConditions: string[] = []; + const accountCondition = buildMovementAccountCondition(filters); + if (accountCondition) { + extraConditions.push(accountCondition); + } + return buildWhereClause(filters, "Движения.Период", extraConditions); + })()) + .replaceAll("__ORDER_DIRECTION__", resolveOrderDirection(filters.sort)); return { recipe, diff --git a/llm_normalizer/backend/src/services/address_runtime/composeStage.ts b/llm_normalizer/backend/src/services/address_runtime/composeStage.ts index 2a2cb50..d061f49 100644 --- a/llm_normalizer/backend/src/services/address_runtime/composeStage.ts +++ b/llm_normalizer/backend/src/services/address_runtime/composeStage.ts @@ -9,6 +9,37 @@ export interface ComposeStageRow { analytics: string[]; } +interface ComposeFactualReplyOptions { + userMessage?: string; +} + +type PeriodProfileFocus = + | "full_profile" + | "coverage_years" + | "top_year_docs" + | "bottom_year_docs" + | "top_month_ops" + | "bottom_month_ops"; +type DocumentSectionProfileFocus = + | "full_profile" + | "doc_types_only" + | "doc_types_rare_only" + | "sections_only" + | "sections_rare_only"; +type CounterpartyProfileFocus = + | "full_profile" + | "total_only" + | "roles_only" + | "suppliers_only" + | "customers_only" + | "mixed_only"; +type CounterpartyLifecycleFocus = "active_customers_period" | "active_customers_all_time"; + +interface YearAggPoint { + year: number; + count: number; +} + function uniqueStrings(values: string[]): string[] { return Array.from( new Set( @@ -29,6 +60,280 @@ function formatTopRows(rows: ComposeStageRow[], limit = 6): string[] { }); } +function extractYearFromIso(value: string | null): number | null { + const source = String(value ?? ""); + const match = source.match(/^(\d{4})-(\d{2})-(\d{2})/); + if (!match) { + return null; + } + const year = Number(match[1]); + return Number.isFinite(year) ? year : null; +} + +function extractYearMonthFromIso(value: string | null): string | null { + const source = String(value ?? ""); + const match = source.match(/^(\d{4})-(\d{2})-(\d{2})/); + if (!match) { + return null; + } + return `${match[1]}-${match[2]}`; +} + +const ACCOUNT_SECTION_LABELS: Record = { + "01": "Основные средства", + "04": "Нематериальные активы", + "08": "Вложения во внеоборотные активы", + "10": "Материалы", + "19": "НДС по приобретенным ценностям", + "20": "Основное производство", + "23": "Вспомогательные производства", + "25": "Общепроизводственные расходы", + "26": "Общехозяйственные расходы", + "41": "Товары", + "43": "Готовая продукция", + "44": "Расходы на продажу", + "50": "Касса", + "51": "Расчетные счета", + "52": "Валютные счета", + "55": "Специальные счета в банках", + "58": "Финансовые вложения", + "60": "Расчеты с поставщиками и подрядчиками", + "62": "Расчеты с покупателями и заказчиками", + "66": "Краткосрочные кредиты и займы", + "67": "Долгосрочные кредиты и займы", + "68": "Расчеты по налогам и сборам", + "69": "Расчеты по социальному страхованию", + "70": "Расчеты с персоналом по оплате труда", + "71": "Расчеты с подотчетными лицами", + "73": "Расчеты с персоналом по прочим операциям", + "75": "Расчеты с учредителями", + "76": "Расчеты с разными дебиторами и кредиторами", + "80": "Уставный капитал", + "81": "Собственные акции (доли)", + "84": "Нераспределенная прибыль (непокрытый убыток)", + "90": "Продажи", + "91": "Прочие доходы и расходы" +}; + +function formatPercent(value: number, total: number): string | null { + if (!Number.isFinite(value) || !Number.isFinite(total) || total <= 0) { + return null; + } + return `${((value / total) * 100).toFixed(1)}%`; +} + +function extractAccountSectionCode(value: string | null): string | null { + const source = String(value ?? "").trim(); + if (!source) { + return null; + } + const match = source.match(/(^|[^0-9])(\d{2})(?:[.,]\d{1,2})?/); + if (!match) { + return null; + } + return match[2]; +} + +function normalizeQuestionText(value: string | null | undefined): string { + return String(value ?? "") + .toLowerCase() + .replace(/ё/g, "е") + .replace(/\s+/g, " ") + .trim(); +} + +function detectPeriodProfileFocus(userMessage: string | null | undefined): PeriodProfileFocus { + const text = normalizeQuestionText(userMessage); + if (!text) { + return "full_profile"; + } + + const asksYear = /(?:\byear\b|год(?:а|у|ом|е|ы)?)/iu.test(text); + const asksMonth = /(?:\bmonth\b|месяц(?:а|у|ем|е|ы)?)/iu.test(text); + const asksDocs = /(?:\bdocument(?:s)?\b|док(?:умент(?:ы|ов|ам|ами|ах|а)?|и|ов)?)/iu.test(text); + const asksOps = /(?:\bops?\b|\boperation(?:s)?\b|операц)/iu.test(text); + const asksTop = /(?:сам(?:ый|ая|ое)\s+актив|наибол[её]е\s+актив|чаще\s+всего|most\s+active|top)/iu.test(text); + const asksBottom = /(?:сам(?:ый|ая|ое)\s+пассив|наимен[её]е\s+актив|least\s+active|миним(?:ум|альн)|наименьш)/iu.test( + text + ); + + if (asksYear && asksDocs && asksBottom) { + return "bottom_year_docs"; + } + + if (asksYear && asksDocs && asksTop) { + return "top_year_docs"; + } + + if (asksMonth && asksOps && asksBottom) { + return "bottom_month_ops"; + } + + if (asksMonth && asksOps && asksTop) { + return "top_month_ops"; + } + + if (/(?:за\s+какие\s+год[а-яё]*|годы?\s+с\s+данными|покрыт(?:ие|ия)\s+период|диапазон\s+лет|профил[ья]\s+данн|year\s+coverage|data\s+coverage)/iu.test(text)) { + return "coverage_years"; + } + + return "full_profile"; +} + +function detectDocumentSectionProfileFocus(userMessage: string | null | undefined): DocumentSectionProfileFocus { + const text = normalizeQuestionText(userMessage); + if (!text) { + return "full_profile"; + } + + const asksDocTypes = /(?:тип[аы]?\s+док|типы?\s+документ|document\s+types?)/iu.test(text); + const asksSections = /(?:раздел[ыа]?\s+уч[её]та|account\s+section)/iu.test(text); + const asksRare = /(?:реже|редк|наимен[её]е|почти\s+не|least|rare|миним(?:ум|альн))/iu.test(text); + const asksTop = /(?:чаще\s+всего|наибол[её]е|most|top|максим)/iu.test(text); + + if (asksDocTypes && !asksSections) { + if (asksRare && !asksTop) { + return "doc_types_rare_only"; + } + return "doc_types_only"; + } + + if (asksSections && !asksDocTypes) { + if (asksRare && !asksTop) { + return "sections_rare_only"; + } + return "sections_only"; + } + + return "full_profile"; +} + +function detectCounterpartyProfileFocus(userMessage: string | null | undefined): CounterpartyProfileFocus { + const text = normalizeQuestionText(userMessage); + if (!text) { + return "full_profile"; + } + const asksTotal = + /(?:(?:сколько|скока|скок)\s+(?:всего\s+)?(?:уникальн(?:ых|ые|ого)?\s+)?контрагент(?:ов|а)?(?:\s+в\s+баз[еы])?|total\s+counterpart(?:y|ies))/iu.test( + text + ); + const hasSupplierToken = /(?:поставщик(?:ов|а)?|supplier(?:s)?)/iu.test(text); + const hasCustomerToken = /(?:заказчик(?:ов|а)?|клиент(?:ов|а)?|customer(?:s)?|client(?:s)?)/iu.test(text); + const hasMixedToken = /(?:смешан|проч(?:их|ие)|mixed)/iu.test(text); + const asksRoles = + /(?:заказчик(?:ов|а)?|поставщик(?:ов|а)?|смешан|проч(?:их|ие)|типы?\s+контрагент|разбей|раздели|roles?|split)/iu.test( + text + ); + + if (hasSupplierToken && !hasCustomerToken && !hasMixedToken && !asksTotal) { + return "suppliers_only"; + } + if (hasCustomerToken && !hasSupplierToken && !hasMixedToken && !asksTotal) { + return "customers_only"; + } + if (hasMixedToken && !hasSupplierToken && !hasCustomerToken && !asksTotal) { + return "mixed_only"; + } + + if (asksTotal && !asksRoles) { + return "total_only"; + } + if (asksRoles && !asksTotal) { + return "roles_only"; + } + return "full_profile"; +} + +function detectCounterpartyLifecycleFocus(userMessage: string | null | undefined): CounterpartyLifecycleFocus { + const text = normalizeQuestionText(userMessage); + if (!text) { + return "active_customers_period"; + } + if (/(?:за\s+вс[её]\s+время|all\s+time|за\s+всю\s+истори(?:ю|и))/iu.test(text)) { + return "active_customers_all_time"; + } + return "active_customers_period"; +} + +function extractRequestedYearFromQuestion(userMessage: string | null | undefined): number | null { + const text = normalizeQuestionText(userMessage); + if (!text) { + return null; + } + const fullYearMatch = text.match(/\b(19|20)\d{2}\b/); + if (fullYearMatch) { + const parsed = Number(fullYearMatch[0]); + return Number.isFinite(parsed) ? parsed : null; + } + const shortYearMatch = text.match(/(?:^|[^\d])(\d{2})\s*(?:г(?:од|ода)?|г)(?:[^\p{L}\p{N}]|$)/iu); + if (!shortYearMatch) { + return null; + } + const shortYear = Number(shortYearMatch[1]); + if (!Number.isFinite(shortYear) || shortYear < 0 || shortYear > 99) { + return null; + } + return 2000 + shortYear; +} + +function extractCounterpartyName(row: ComposeStageRow): string | null { + for (const token of row.analytics) { + const normalized = String(token ?? "").trim(); + if (!normalized) { + continue; + } + if (/^\d{4}-\d{2}-\d{2}/.test(normalized)) { + continue; + } + return normalized; + } + return null; +} + +function deriveOperationalYearWindow( + yearDocs: YearAggPoint[], + yearOps: YearAggPoint[] +): { + dataFrom: number | null; + dataTo: number | null; + operationalFrom: number | null; + operationalTo: number | null; + tailYears: number[]; +} { + const docsSeries = [...yearDocs].sort((a, b) => a.year - b.year); + const fallbackSeries = [...yearOps].sort((a, b) => a.year - b.year); + const series = docsSeries.length > 0 ? docsSeries : fallbackSeries; + if (series.length === 0) { + return { + dataFrom: null, + dataTo: null, + operationalFrom: null, + operationalTo: null, + tailYears: [] + }; + } + + const dataFrom = series[0]?.year ?? null; + const dataTo = series[series.length - 1]?.year ?? null; + const maxCount = Math.max(...series.map((item) => item.count)); + const significantThreshold = Math.max(20, Math.ceil(maxCount * 0.02)); + const significantYears = series.filter((item) => item.count >= significantThreshold).map((item) => item.year); + + const operationalFrom = significantYears[0] ?? dataFrom; + const operationalTo = significantYears[significantYears.length - 1] ?? dataTo; + const tailYears = series + .filter((item) => operationalTo !== null && item.year > operationalTo) + .map((item) => item.year); + + return { + dataFrom, + dataTo, + operationalFrom, + operationalTo, + tailYears + }; +} + export function contractCandidatesFromRows(rows: ComposeStageRow[]): string[] { const candidates: string[] = []; for (const row of rows) { @@ -47,8 +352,492 @@ export function contractCandidatesFromRows(rows: ComposeStageRow[]): string[] { export function composeFactualReply( intent: AddressIntent, - rows: ComposeStageRow[] + rows: ComposeStageRow[], + options: ComposeFactualReplyOptions = {} ): { responseType: AddressResponseType; text: string } { + if (intent === "document_type_and_account_section_profile") { + const rowsByMarker = new Map(); + for (const row of rows) { + const marker = String(row.registrator ?? "").trim().toUpperCase(); + if (!marker) { + continue; + } + if (!rowsByMarker.has(marker)) { + rowsByMarker.set(marker, []); + } + rowsByMarker.get(marker)!.push(row); + } + + const docTypeRanking = (rowsByMarker.get("DOC_TYPE_DOCS") ?? []) + .map((row) => ({ + docType: String(row.account_dt ?? "").trim(), + count: row.amount ?? 0 + })) + .filter((item) => item.docType.length > 0) + .sort((a, b) => b.count - a.count); + const docTypeRankingLow = [...docTypeRanking] + .sort((a, b) => a.count - b.count || a.docType.localeCompare(b.docType)) + .slice(0, 10); + + const sectionCounter = new Map(); + for (const marker of ["SECTION_DT_OPS", "SECTION_KT_OPS"]) { + for (const row of rowsByMarker.get(marker) ?? []) { + const sectionCode = extractAccountSectionCode(row.account_dt); + if (!sectionCode) { + continue; + } + const nextValue = (sectionCounter.get(sectionCode) ?? 0) + (row.amount ?? 0); + sectionCounter.set(sectionCode, nextValue); + } + } + + const sectionRanking = Array.from(sectionCounter.entries()) + .map(([section, count]) => ({ section, count })) + .sort((a, b) => b.count - a.count || a.section.localeCompare(b.section)); + + const sectionRankingLow = [...sectionRanking] + .sort((a, b) => a.count - b.count || a.section.localeCompare(b.section)) + .slice(0, 10); + + const docTypeTotal = docTypeRanking.reduce((sum, item) => sum + item.count, 0); + const sectionTotal = sectionRanking.reduce((sum, item) => sum + item.count, 0); + const focus = detectDocumentSectionProfileFocus(options.userMessage); + const includeDocTypes = + focus === "full_profile" || focus === "doc_types_only" || focus === "doc_types_rare_only"; + const includeSections = + focus === "full_profile" || focus === "sections_only" || focus === "sections_rare_only"; + const includeDocTypesLowOnly = focus === "doc_types_rare_only"; + const includeSectionsLowOnly = focus === "sections_rare_only"; + + const lines: string[] = [ + "Профиль типов документов и разделов учета собран (movement-based aggregate).", + `Строк агрегата: ${rows.length}.` + ]; + + if (includeDocTypes) { + if (docTypeRanking.length > 0) { + if (includeDocTypesLowOnly) { + lines.push("Наименее используемые типы документов (по числу уникальных регистраторов):"); + lines.push( + ...docTypeRankingLow.map((item, index) => { + const share = formatPercent(item.count, docTypeTotal); + return share + ? `${index + 1}. ${item.docType}: ${item.count} (${share})` + : `${index + 1}. ${item.docType}: ${item.count}`; + }) + ); + } else { + lines.push("Топ типов документов (по числу уникальных регистраторов):"); + lines.push( + ...docTypeRanking.slice(0, 10).map((item, index) => { + const share = formatPercent(item.count, docTypeTotal); + return share + ? `${index + 1}. ${item.docType}: ${item.count} (${share})` + : `${index + 1}. ${item.docType}: ${item.count}`; + }) + ); + } + } else { + lines.push("По типам документов агрегатных строк не найдено."); + } + } + + if (includeSections) { + if (sectionRanking.length > 0) { + if (includeSectionsLowOnly) { + lines.push("Наименее заполненные разделы учета (по операциям Дт+Кт):"); + lines.push( + ...sectionRankingLow.map((item, index) => { + const label = ACCOUNT_SECTION_LABELS[item.section]; + const sectionTitle = label ? `${item.section} (${label})` : item.section; + const share = formatPercent(item.count, sectionTotal); + return share + ? `${index + 1}. ${sectionTitle}: ${item.count} (${share})` + : `${index + 1}. ${sectionTitle}: ${item.count}`; + }) + ); + } else { + lines.push("Наиболее заполненные разделы учета (по операциям Дт+Кт):"); + lines.push( + ...sectionRanking.slice(0, 10).map((item, index) => { + const label = ACCOUNT_SECTION_LABELS[item.section]; + const sectionTitle = label ? `${item.section} (${label})` : item.section; + const share = formatPercent(item.count, sectionTotal); + return share + ? `${index + 1}. ${sectionTitle}: ${item.count} (${share})` + : `${index + 1}. ${sectionTitle}: ${item.count}`; + }) + ); + + lines.push("Разделы с минимальной активностью (среди использованных):"); + lines.push( + ...sectionRankingLow.map((item, index) => { + const label = ACCOUNT_SECTION_LABELS[item.section]; + const sectionTitle = label ? `${item.section} (${label})` : item.section; + return `${index + 1}. ${sectionTitle}: ${item.count}`; + }) + ); + } + } else { + lines.push("По разделам учета агрегатных строк не найдено."); + } + } + + return { + responseType: "FACTUAL_SUMMARY", + text: lines.join("\n") + }; + } + + if (intent === "period_coverage_profile") { + const rowsByMarker = new Map(); + for (const row of rows) { + const marker = String(row.registrator ?? "").trim().toUpperCase(); + if (!marker) { + continue; + } + if (!rowsByMarker.has(marker)) { + rowsByMarker.set(marker, []); + } + rowsByMarker.get(marker)!.push(row); + } + + const minDate = rowsByMarker.get("MIN_DATE")?.[0]?.period ?? null; + const maxDate = rowsByMarker.get("MAX_DATE")?.[0]?.period ?? null; + + const yearOps: YearAggPoint[] = (rowsByMarker.get("YEAR_OPS") ?? []) + .map((row) => ({ + year: extractYearFromIso(row.period), + count: row.amount ?? 0 + })) + .filter((item): item is YearAggPoint => item.year !== null) + .sort((a, b) => b.count - a.count); + + const yearDocs: YearAggPoint[] = (rowsByMarker.get("YEAR_DOCS") ?? []) + .map((row) => ({ + year: extractYearFromIso(row.period), + count: row.amount ?? 0 + })) + .filter((item): item is YearAggPoint => item.year !== null) + .sort((a, b) => b.count - a.count); + + const monthOps = (rowsByMarker.get("MONTH_OPS") ?? []) + .map((row) => ({ + month: extractYearMonthFromIso(row.period), + count: row.amount ?? 0 + })) + .filter((item): item is { month: string; count: number } => item.month !== null) + .sort((a, b) => b.count - a.count); + + const focus = detectPeriodProfileFocus(options.userMessage); + const includeCoverage = focus === "full_profile" || focus === "coverage_years"; + const includeTopYear = focus === "full_profile" || focus === "top_year_docs"; + const includeBottomYear = focus === "bottom_year_docs"; + const includeTopMonth = focus === "full_profile" || focus === "top_month_ops"; + const includeBottomMonth = focus === "bottom_month_ops"; + const operationalWindow = deriveOperationalYearWindow(yearDocs, yearOps); + const yearsCoverage = (yearOps.length > 0 ? yearOps : yearDocs).map((item) => item.year).sort((a, b) => a - b); + const yearDocsWithinOperational = + operationalWindow.operationalFrom !== null && operationalWindow.operationalTo !== null + ? yearDocs.filter( + (item) => item.year >= operationalWindow.operationalFrom! && item.year <= operationalWindow.operationalTo! + ) + : yearDocs; + const yearDocsForRanking = yearDocsWithinOperational.length > 0 ? yearDocsWithinOperational : yearDocs; + const yearDocsTop = [...yearDocsForRanking].sort((a, b) => b.count - a.count || a.year - b.year); + const yearDocsBottom = [...yearDocsForRanking].sort((a, b) => a.count - b.count || a.year - b.year); + + const monthOpsWithinOperational = + operationalWindow.operationalFrom !== null && operationalWindow.operationalTo !== null + ? monthOps.filter((item) => { + const year = Number(item.month.slice(0, 4)); + return ( + Number.isFinite(year) && + year >= operationalWindow.operationalFrom! && + year <= operationalWindow.operationalTo! + ); + }) + : monthOps; + const monthOpsForRanking = monthOpsWithinOperational.length > 0 ? monthOpsWithinOperational : monthOps; + const monthOpsTop = [...monthOpsForRanking].sort((a, b) => b.count - a.count || a.month.localeCompare(b.month)); + const monthOpsBottom = [...monthOpsForRanking].sort((a, b) => a.count - b.count || a.month.localeCompare(b.month)); + const topYearByDocs = yearDocsTop[0] ?? null; + const bottomYearByDocs = yearDocsBottom[0] ?? null; + const topMonthByOps = monthOpsTop[0] ?? null; + const bottomMonthByOps = monthOpsBottom[0] ?? null; + const hasTailYears = + operationalWindow.tailYears.length > 0 && + operationalWindow.operationalTo !== null && + operationalWindow.dataTo !== null && + operationalWindow.operationalTo < operationalWindow.dataTo; + + const lines: string[] = [ + "Профиль периодов базы собран (movement-based aggregate).", + `Строк агрегата: ${rows.length}.` + ]; + + if (includeCoverage) { + if ( + hasTailYears && + operationalWindow.operationalFrom !== null && + operationalWindow.operationalTo !== null + ) { + lines.push( + `Операционный период с выраженной активностью: ${operationalWindow.operationalFrom}..${operationalWindow.operationalTo}.` + ); + lines.push(`Низкоактивный хвост (единичные записи): ${operationalWindow.tailYears.join(", ")}.`); + lines.push(`Полный технический диапазон дат: ${minDate ?? "н/д"} .. ${maxDate ?? "н/д"}.`); + } else { + lines.push(`Покрытие по датам: ${minDate ?? "н/д"} .. ${maxDate ?? "н/д"}.`); + if (yearsCoverage.length > 0) { + lines.push( + `Годы с данными: ${yearsCoverage[0]}..${yearsCoverage[yearsCoverage.length - 1]} (уникальных: ${yearsCoverage.length}).` + ); + } + } + } + + if (includeTopYear && topYearByDocs) { + lines.push(`Самый активный год по документам: ${topYearByDocs.year} (${topYearByDocs.count}).`); + lines.push( + ...yearDocsTop + .slice(0, 5) + .map((item, index) => `${index + 1}. ${item.year}: ${item.count}`) + ); + } + + if (includeBottomYear && bottomYearByDocs) { + lines.push(`Самый пассивный год по документам: ${bottomYearByDocs.year} (${bottomYearByDocs.count}).`); + lines.push( + ...yearDocsBottom + .slice(0, 5) + .map((item, index) => `${index + 1}. ${item.year}: ${item.count}`) + ); + } + + if (includeTopMonth && topMonthByOps) { + lines.push(`Самый активный месяц по операциям: ${topMonthByOps.month} (${topMonthByOps.count}).`); + lines.push( + ...monthOpsTop + .slice(0, 5) + .map((item, index) => `${index + 1}. ${item.month}: ${item.count}`) + ); + } + + if (includeBottomMonth && bottomMonthByOps) { + lines.push(`Самый пассивный месяц по операциям: ${bottomMonthByOps.month} (${bottomMonthByOps.count}).`); + lines.push( + ...monthOpsBottom + .slice(0, 5) + .map((item, index) => `${index + 1}. ${item.month}: ${item.count}`) + ); + } + + return { + responseType: "FACTUAL_SUMMARY", + text: lines.join("\n") + }; + } + + if (intent === "counterparty_population_and_roles") { + const rowsByMarker = new Map(); + for (const row of rows) { + const marker = String(row.registrator ?? "").trim().toUpperCase(); + if (!marker) { + continue; + } + if (!rowsByMarker.has(marker)) { + rowsByMarker.set(marker, []); + } + rowsByMarker.get(marker)!.push(row); + } + + const sumMarker = (marker: string): number => + (rowsByMarker.get(marker) ?? []).reduce((sum, row) => sum + (row.amount ?? 0), 0); + + const totalCounterparties = sumMarker("CP_TOTAL"); + const customerActive = sumMarker("CP_CUSTOMER_ACTIVE"); + const supplierActive = sumMarker("CP_SUPPLIER_ACTIVE"); + const mixedActive = sumMarker("CP_MIXED_ACTIVE"); + const activeUnion = sumMarker("CP_ACTIVE_UNION"); + + const customerOnly = Math.max(0, customerActive - mixedActive); + const supplierOnly = Math.max(0, supplierActive - mixedActive); + const resolvedActive = customerOnly + supplierOnly + mixedActive; + const activeCounterparties = Math.max(activeUnion, resolvedActive); + const otherCounterparties = totalCounterparties > 0 ? Math.max(0, totalCounterparties - resolvedActive) : null; + + const focus = detectCounterpartyProfileFocus(options.userMessage); + const includeTotal = focus === "full_profile" || focus === "total_only"; + const includeRoles = focus === "full_profile" || focus === "roles_only"; + + const lines: string[] = [ + "Профиль контрагентов собран (catalog + bank-doc activity aggregate).", + `Строк агрегата: ${rows.length}.` + ]; + + if (includeTotal) { + if (totalCounterparties > 0) { + lines.push(`Всего уникальных контрагентов в базе: ${totalCounterparties}.`); + } else if (activeCounterparties > 0) { + lines.push( + `Total из справочника не получен, оценка по активности в документах: ${activeCounterparties} контрагентов.` + ); + } else { + lines.push("По количеству контрагентов агрегатных строк не найдено."); + } + } + + if (includeRoles) { + if (resolvedActive > 0 || activeCounterparties > 0) { + lines.push("Роли контрагентов по активности:"); + lines.push(`1. Заказчики (только customer-роль): ${customerOnly}.`); + lines.push(`2. Поставщики (только supplier-роль): ${supplierOnly}.`); + lines.push(`3. Смешанные (и покупатель, и поставщик): ${mixedActive}.`); + lines.push(`4. Активные контрагенты (union ролей): ${activeCounterparties}.`); + if (otherCounterparties !== null) { + lines.push(`5. Прочие/неактивные в выбранном окне: ${otherCounterparties}.`); + } + } else { + lines.push("По role-split контрагентов агрегатных строк не найдено."); + } + } + + if (focus === "suppliers_only") { + lines.push(`Поставщиков (только supplier-роль): ${supplierOnly}.`); + } + if (focus === "customers_only") { + lines.push(`Заказчиков (только customer-роль): ${customerOnly}.`); + } + if (focus === "mixed_only") { + lines.push(`Смешанных контрагентов (и customer, и supplier): ${mixedActive}.`); + } + + return { + responseType: "FACTUAL_SUMMARY", + text: lines.join("\n") + }; + } + + if (intent === "counterparty_activity_lifecycle") { + const activityRows = rows.filter( + (row) => String(row.registrator ?? "").trim().toUpperCase() === "CP_CUSTOMER_ACTIVITY" + ); + const byCounterparty = new Map(); + for (const row of activityRows) { + const name = extractCounterpartyName(row); + if (!name) { + continue; + } + const opsCount = Math.max(0, Math.trunc(row.amount ?? 0)); + const current = byCounterparty.get(name); + if (!current) { + byCounterparty.set(name, { name, opsCount, lastPeriod: row.period }); + continue; + } + if (opsCount > current.opsCount) { + current.opsCount = opsCount; + } + if ((row.period ?? "") > (current.lastPeriod ?? "")) { + current.lastPeriod = row.period; + } + } + + const counterparties = Array.from(byCounterparty.values()).sort((left, right) => { + if (right.opsCount !== left.opsCount) { + return right.opsCount - left.opsCount; + } + return (right.lastPeriod ?? "").localeCompare(left.lastPeriod ?? ""); + }); + + const focus = detectCounterpartyLifecycleFocus(options.userMessage); + const requestedYear = extractRequestedYearFromQuestion(options.userMessage); + const scopeLabel = + focus === "active_customers_all_time" + ? "за все время" + : requestedYear + ? `в ${requestedYear} году` + : "в выбранном периоде"; + + const lines: string[] = [ + "Собран профиль активности заказчиков (bank-doc activity aggregate).", + `Строк агрегата: ${rows.length}.` + ]; + + if (counterparties.length === 0) { + lines.push("Активных заказчиков по выбранному окну не найдено."); + return { + responseType: "FACTUAL_SUMMARY", + text: lines.join("\n") + }; + } + + lines.push(`Активные заказчики ${scopeLabel}: ${counterparties.length}.`); + const visible = counterparties.slice(0, 120); + lines.push( + ...visible.map((item, index) => { + const suffix = item.lastPeriod ? ` | последняя активность: ${item.lastPeriod}` : ""; + return `${index + 1}. ${item.name} | операций: ${item.opsCount}${suffix}`; + }) + ); + if (counterparties.length > visible.length) { + lines.push(`Показаны первые ${visible.length} из ${counterparties.length} заказчиков.`); + } + + return { + responseType: "FACTUAL_LIST", + text: lines.join("\n") + }; + } + + if (intent === "contract_usage_overview") { + const rowsByMarker = new Map(); + for (const row of rows) { + const marker = String(row.registrator ?? "").trim().toUpperCase(); + if (!marker) { + continue; + } + if (!rowsByMarker.has(marker)) { + rowsByMarker.set(marker, []); + } + rowsByMarker.get(marker)!.push(row); + } + + const sumMarker = (marker: string): number => + (rowsByMarker.get(marker) ?? []).reduce((sum, row) => sum + (row.amount ?? 0), 0); + + const totalContracts = sumMarker("CT_TOTAL"); + const usedContracts = sumMarker("CT_USED"); + const unusedContracts = + totalContracts > 0 ? Math.max(0, totalContracts - Math.min(usedContracts, totalContracts)) : null; + const usedShare = totalContracts > 0 ? formatPercent(Math.min(usedContracts, totalContracts), totalContracts) : null; + + const lines: string[] = [ + "Профиль договорной базы собран (catalog + usage aggregate).", + `Строк агрегата: ${rows.length}.` + ]; + + if (totalContracts > 0) { + lines.push(`Всего договоров в базе: ${totalContracts}.`); + } else { + lines.push("Общее количество договоров не получено (пустой/недоступный срез справочника)."); + } + + lines.push(`Использованных договоров (есть factual связь с операциями): ${usedContracts}.`); + + if (unusedContracts !== null) { + lines.push(`Неиспользуемых договоров: ${unusedContracts}.`); + } + if (usedShare) { + lines.push(`Доля используемых договоров: ${usedShare}.`); + } + + return { + responseType: "FACTUAL_SUMMARY", + text: lines.join("\n") + }; + } + if (intent === "account_balance_snapshot") { const movementSum = rows.reduce((sum, row) => sum + (row.amount ?? 0), 0); const lines = [ @@ -109,6 +898,47 @@ export function composeFactualReply( }; } + if (intent === "list_contracts_by_counterparty") { + const contracts = uniqueStrings( + rows + .map((row) => String(row.registrator ?? "").trim()) + .filter((item) => item.length > 0) + ); + const counterparties = uniqueStrings( + rows + .flatMap((row) => row.analytics) + .map((item) => String(item ?? "").trim()) + .filter((item) => item.length > 0) + ); + + const lines: string[] = [ + "Собран список договоров по контрагенту (catalog address lane).", + `Строк отобрано: ${rows.length}.`, + `Уникальных договоров: ${contracts.length}.` + ]; + + if (counterparties.length === 1) { + lines.push(`Контрагент: ${counterparties[0]}.`); + } else if (counterparties.length > 1) { + lines.push(`Контрагенты в выборке: ${counterparties.length}.`); + } + + if (contracts.length > 0) { + const visible = contracts.slice(0, 120); + lines.push(...visible.map((item, index) => `${index + 1}. ${item}`)); + if (contracts.length > visible.length) { + lines.push(`Показаны первые ${visible.length} из ${contracts.length} договоров.`); + } + } else { + lines.push("Договоры по указанному якорю в текущем live-срезе не найдены."); + } + + return { + responseType: "FACTUAL_LIST", + text: lines.join("\n") + }; + } + if (intent === "list_documents_by_counterparty") { const lines = [ "Собран список документов по контрагенту (live address lane).", diff --git a/llm_normalizer/backend/src/services/address_runtime/decomposeStage.ts b/llm_normalizer/backend/src/services/address_runtime/decomposeStage.ts index 54bfa21..fe05d80 100644 --- a/llm_normalizer/backend/src/services/address_runtime/decomposeStage.ts +++ b/llm_normalizer/backend/src/services/address_runtime/decomposeStage.ts @@ -194,7 +194,11 @@ function mergeFollowupFilters( const allTimeRequested = hasAllTimeHint(userMessage); const sameDateRequested = hasSameDateHint(userMessage); - if (intent === "list_documents_by_counterparty" || intent === "bank_operations_by_counterparty") { + if ( + intent === "list_documents_by_counterparty" || + intent === "bank_operations_by_counterparty" || + intent === "list_contracts_by_counterparty" + ) { if (!toNonEmptyString(merged.counterparty)) { const inheritedCounterparty = previousCounterparty ?? @@ -282,6 +286,7 @@ function resolveMissingRequiredFilters(intent: AddressIntent, filters: AddressFi documents_forming_balance: ["account", "as_of_date"], list_documents_by_counterparty: ["counterparty"], bank_operations_by_counterparty: ["counterparty"], + list_contracts_by_counterparty: ["counterparty"], list_documents_by_contract: ["contract"], bank_operations_by_contract: ["contract"] }; diff --git a/llm_normalizer/backend/src/services/address_runtime/predecomposeContract.ts b/llm_normalizer/backend/src/services/address_runtime/predecomposeContract.ts new file mode 100644 index 0000000..9ef5e6e --- /dev/null +++ b/llm_normalizer/backend/src/services/address_runtime/predecomposeContract.ts @@ -0,0 +1,165 @@ +import type { AddressFilterSet, AddressIntent, AddressQuestionMode, AddressQueryShape } from "../../types/addressQuery"; +import { detectAddressQuestionMode } from "../addressQueryClassifier"; +import { classifyAddressQueryShape } from "../addressQueryShapeClassifier"; +import { resolveAddressIntent } from "../addressIntentResolver"; +import { extractAddressFilters } from "../addressFilterExtractor"; + +export type AddressPredecomposePeriodScope = "all_time" | "year" | "range" | "as_of" | "unspecified"; + +export type AddressPredecomposeAggregationProfile = + | "management_profile" + | "list_lookup" + | "balance_snapshot" + | "open_items" + | "unknown"; + +export interface AddressLlmPredecomposeContractV1 { + schema_version: "address_llm_predecompose_contract_v1"; + source_message: string; + canonical_message: string; + mode: AddressQuestionMode; + mode_confidence: "high" | "medium" | "low"; + query_shape: AddressQueryShape; + query_shape_confidence: "high" | "medium" | "low"; + intent: AddressIntent; + intent_confidence: "high" | "medium" | "low"; + entities: { + account: string | null; + counterparty: string | null; + contract: string | null; + document_type: string | null; + document_ref: string | null; + organization: string | null; + }; + period: { + scope: AddressPredecomposePeriodScope; + period_from: string | null; + period_to: string | null; + as_of_date: string | null; + has_explicit_period: boolean; + }; + aggregation_profile: AddressPredecomposeAggregationProfile; +} + +function toNonEmptyString(value: unknown): string | null { + if (value === null || value === undefined) { + return null; + } + const normalized = String(value).trim(); + return normalized.length > 0 ? normalized : null; +} + +function hasAllTimeHint(text: string): boolean { + return /(?:за\s+вс[её]\s+время|за\s+весь\s+период|за\s+всю\s+истори(?:ю|и)|for\s+all\s+time|all\s+time|entire\s+period|full\s+history)/iu.test( + String(text ?? "") + ); +} + +function inferPeriodScope(filters: AddressFilterSet, canonicalMessage: string): AddressPredecomposePeriodScope { + const asOfDate = toNonEmptyString(filters.as_of_date); + const periodFrom = toNonEmptyString(filters.period_from); + const periodTo = toNonEmptyString(filters.period_to); + if (asOfDate) { + return "as_of"; + } + if (periodFrom && periodTo) { + const yearFrom = periodFrom.match(/^(\d{4})-01-01$/); + const yearTo = periodTo.match(/^(\d{4})-12-31$/); + if (yearFrom && yearTo && yearFrom[1] === yearTo[1]) { + return "year"; + } + return "range"; + } + if (hasAllTimeHint(canonicalMessage)) { + return "all_time"; + } + return "unspecified"; +} + +function inferAggregationProfile(intent: AddressIntent, shape: AddressQueryShape): AddressPredecomposeAggregationProfile { + if ( + intent === "period_coverage_profile" || + intent === "document_type_and_account_section_profile" || + intent === "counterparty_population_and_roles" || + intent === "counterparty_activity_lifecycle" || + intent === "contract_usage_overview" + ) { + return "management_profile"; + } + + if (intent === "account_balance_snapshot" || intent === "documents_forming_balance") { + return "balance_snapshot"; + } + + if ( + intent === "open_items_by_counterparty_or_contract" || + intent === "list_open_contracts" || + intent === "list_payables_counterparties" || + intent === "list_receivables_counterparties" + ) { + return "open_items"; + } + + if ( + intent === "list_documents_by_counterparty" || + intent === "bank_operations_by_counterparty" || + intent === "list_contracts_by_counterparty" || + intent === "list_documents_by_contract" || + intent === "bank_operations_by_contract" + ) { + return "list_lookup"; + } + + if (shape === "AGGREGATE_LOOKUP") { + return "management_profile"; + } + if (shape === "DOCUMENT_LIST" || shape === "OBJECT_LOOKUP" || shape === "DRILLDOWN_REQUEST") { + return "list_lookup"; + } + return "unknown"; +} + +export function buildAddressLlmPredecomposeContractV1(input: { + sourceMessage: string; + canonicalMessage: string; +}): AddressLlmPredecomposeContractV1 { + const sourceMessage = String(input.sourceMessage ?? "").trim(); + const canonicalMessage = String(input.canonicalMessage ?? "").trim() || sourceMessage; + + const mode = detectAddressQuestionMode(canonicalMessage); + const shape = classifyAddressQueryShape(canonicalMessage); + const intent = resolveAddressIntent(canonicalMessage); + const extraction = extractAddressFilters(canonicalMessage, intent.intent); + const filters = extraction.extracted_filters; + const periodScope = inferPeriodScope(filters, canonicalMessage); + + return { + schema_version: "address_llm_predecompose_contract_v1", + source_message: sourceMessage, + canonical_message: canonicalMessage, + mode: mode.mode, + mode_confidence: mode.confidence, + query_shape: shape.shape, + query_shape_confidence: shape.confidence, + intent: intent.intent, + intent_confidence: intent.confidence, + entities: { + account: toNonEmptyString(filters.account), + counterparty: toNonEmptyString(filters.counterparty), + contract: toNonEmptyString(filters.contract), + document_type: toNonEmptyString(filters.document_type), + document_ref: toNonEmptyString(filters.document_ref), + organization: toNonEmptyString(filters.organization) + }, + period: { + scope: periodScope, + period_from: toNonEmptyString(filters.period_from), + period_to: toNonEmptyString(filters.period_to), + as_of_date: toNonEmptyString(filters.as_of_date), + has_explicit_period: Boolean( + toNonEmptyString(filters.as_of_date) || toNonEmptyString(filters.period_from) || toNonEmptyString(filters.period_to) + ) + }, + aggregation_profile: inferAggregationProfile(intent.intent, shape.shape) + }; +} diff --git a/llm_normalizer/backend/src/services/address_runtime/resolveStage.ts b/llm_normalizer/backend/src/services/address_runtime/resolveStage.ts index 7fa9648..d430802 100644 --- a/llm_normalizer/backend/src/services/address_runtime/resolveStage.ts +++ b/llm_normalizer/backend/src/services/address_runtime/resolveStage.ts @@ -89,6 +89,28 @@ function tokenizeAnchor(value: string): string[] { .filter((token) => token.length >= 2 && !PARTY_ANCHOR_STOPWORDS.has(token)); } +function anchorTokenVariants(token: string): string[] { + const source = String(token ?? "").trim().toLowerCase(); + if (!source) { + return []; + } + const variants = new Set([source]); + if (/^[а-яё]+$/iu.test(source) && source.length >= 4) { + const withoutEnding = source.replace( + /(?:ами|ями|ого|ему|ому|ыми|ими|иях|ях|ах|ей|ой|ом|ем|ам|ям|ую|юю|ая|яя|ое|ее|ые|ие|ов|ев|ий|ый|ой|е|у|ы|а|я|и|ю)$/iu, + "" + ); + if (withoutEnding.length >= 3) { + variants.add(withoutEnding); + } + const withoutTrailingVowel = source.replace(/[аеёиоуыэюя]$/iu, ""); + if (withoutTrailingVowel.length >= 3) { + variants.add(withoutTrailingVowel); + } + } + return Array.from(variants); +} + function matchesAnchorText(searchable: string, anchor: string): boolean { const searchableNormalized = normalizeSearchText(searchable); const searchableLatin = transliterateCyrillicToLatin(searchableNormalized); @@ -101,8 +123,11 @@ function matchesAnchorText(searchable: string, anchor: string): boolean { return searchableNormalized.includes(direct) || searchableLatin.includes(transliterateCyrillicToLatin(direct)); } return tokens.every((token) => { - const tokenLatin = transliterateCyrillicToLatin(token); - return searchableNormalized.includes(token) || searchableLatin.includes(tokenLatin); + const variants = anchorTokenVariants(token); + return variants.some((variant) => { + const tokenLatin = transliterateCyrillicToLatin(variant); + return searchableNormalized.includes(variant) || searchableLatin.includes(tokenLatin); + }); }); } @@ -146,6 +171,18 @@ export function resolvePrimaryAnchor(intent: AddressIntent, filters: AddressFilt } } + if (intent === "list_contracts_by_counterparty") { + if (counterparty) { + return { + anchor_type: "counterparty", + anchor_value_raw: counterparty, + anchor_value_resolved: counterparty, + resolver_confidence: "medium", + ambiguity_count: 0 + }; + } + } + if (counterparty) { return { anchor_type: "counterparty", diff --git a/llm_normalizer/backend/src/services/assistantService.ts b/llm_normalizer/backend/src/services/assistantService.ts index 69a4c45..af47f64 100644 --- a/llm_normalizer/backend/src/services/assistantService.ts +++ b/llm_normalizer/backend/src/services/assistantService.ts @@ -15,6 +15,7 @@ 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 * as predecomposeContract_1 from "./address_runtime/predecomposeContract"; import iconv from "iconv-lite"; function retrievalSummaryForRoute(route) { if (route === "store_canonical") @@ -1763,6 +1764,8 @@ function buildAddressDebugPayload(addressDebug, llmPreDecomposeMeta = null) { llm_decomposition_trace_id: llmMeta?.traceId ?? null, llm_decomposition_effective_message: llmMeta?.effectiveMessage ?? null, llm_decomposition_reason: llmMeta?.reason ?? null, + llm_canonical_candidate_detected: Boolean(llmMeta?.llmCanonicalCandidateDetected), + llm_predecompose_contract: llmMeta?.predecomposeContract ?? null, fallback_rule_hit: llmMeta?.fallbackRuleHit ?? null, sanitized_user_message: llmMeta?.sanitizedUserMessage ?? null, tool_gate_decision: llmMeta?.toolGateDecision ?? null, @@ -1835,6 +1838,16 @@ const ADDRESS_PREDECOMPOSE_NOISE_TOKENS = new Set([ "которые", "какие", "какой", + "активный", + "активная", + "активное", + "активности", + "месяц", + "месяца", + "месяцев", + "количество", + "количеству", + "количества", "были", "был", "была", @@ -1931,6 +1944,8 @@ const ADDRESS_BANK_SIGNAL_PATTERN = /(?:bank|банк|банков|выписк| 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; +const ADDRESS_MANAGEMENT_PROFILE_PATTERN = + /(?:за\s+какие\s+год[а-яё]*|сам(?:ый|ая|ое)\s+(?:актив|пассив)|наименее\s+актив|минимальн|покрыт(?:ие|ия)\s+период|диапазон\s+лет|тип[аы]\s+док(?:умент|ов|и)?|раздел[ыа]\s+уч[её]та|по\s+количеств[аоуе]|редк|реже|(?:сколько|скока|скок)\s+(?:всего\s+)?(?:уникальн(?:ых|ые|ого)?\s+)?контрагент(?:ов|а)?|(?:сколько|скока|скок)\s+(?:у\s+нас\s+)?(?:заказчик(?:ов|а)?|поставщик(?:ов|а)?|клиент(?:ов|а)?|покупател(?:ей|я)|смешан(?:ных|ые)\s+контрагент(?:ов|а)?)|(?:покажи|выведи|список|какие|кто).*(?:заказчик(?:ов|а|и)?|клиент(?:ов|а|ы)?|покупател(?:ей|я|и)?).*(?:за\s+вс[её]\s+время|all\s+time|(?:^|[^\d])(19|20)\d{2}(?:[^\d]|$)|(?:^|[^\d])\d{2}\s*(?:г(?:од|ода)?|г)(?:[^\p{L}\p{N}]|$)|за\s+год|в\s+году)|(?:какие|кто|покажи|выведи|список).*(?:заказчик(?:ов|а|и)?|клиент(?:ов|а|ы)?|покупател(?:ей|я|и)?).*(?:работал(?:и)?|активн(?:ые|ых|а|о)?).*(?:за\s+вс[её]\s+время|(?:19|20)\d{2}|за\s+год|в\s+году)|договорн(?:ая|ой)\s+баз[аы]|total\s+vs\s+used)/iu; function normalizeAddressMonthAliasToken(token) { const source = String(token ?? "").trim().toLowerCase(); if (!source) { @@ -2136,6 +2151,9 @@ function resolveAddressDeterministicFallback(userMessage, sanitizedUserMessage) if (!source) { return null; } + if (ADDRESS_MANAGEMENT_PROFILE_PATTERN.test(source)) { + return null; + } const monthYear = extractAddressFallbackMonthYear(source); const year = extractAddressFallbackYear(source); const allTime = ADDRESS_ALL_TIME_PATTERN.test(source); @@ -2383,6 +2401,14 @@ function hasAddressFollowupContextSignal(userMessage) { if (shortFollowup && hasFollowupMarker(text)) { return true; } + if (shortFollowup && /(?:^|\s)(?:также|тоже|also|same|again|ещ[её]|теперь|then|now)(?=$|[\s,.;:!?])/iu.test(text)) { + return true; + } + if (shortFollowup && + /(?:^|\s)по\s+[a-zа-яё][a-zа-яё0-9._-]{1,}(?=$|[\s,.;:!?])/iu.test(text) && + !/(?:по\s+этому|по\s+тому|по\s+нему|по\s+ней|по\s+ним)/iu.test(text)) { + return true; + } if (shortFollowup && hasPeriodLiteral(text)) { return true; } @@ -2448,7 +2474,6 @@ function extractAddressQuestionFromNormalized(normalized) { if (domainRelevance === "out_of_scope") { continue; } - const readiness = String(fragment.execution_readiness ?? "").trim().toLowerCase(); const normalizedText = toNonEmptyString(fragment.normalized_fragment_text); const rawText = toNonEmptyString(fragment.raw_fragment_text); const candidate = selectPreferredAddressFragmentCandidate(rawText ?? "", normalizedText ?? ""); @@ -2456,9 +2481,6 @@ function extractAddressQuestionFromNormalized(normalized) { continue; } if (candidate.length >= 3 && candidate.length <= 500) { - if (readiness === "no_route" && !isAddressLlmPreDecomposeCandidate(candidate)) { - continue; - } return candidate; } } @@ -2564,7 +2586,6 @@ function extractAddressQuestionFromRawNormalizerOutput(rawModelOutput) { if (domainRelevance === false) { continue; } - const readiness = String(fragment.execution_readiness ?? "").trim().toLowerCase(); const normalizedText = toNonEmptyString(fragment.normalized_fragment_text); const rawText = toNonEmptyString(fragment.raw_fragment_text); const candidate = selectPreferredAddressFragmentCandidate(rawText ?? "", normalizedText ?? ""); @@ -2572,19 +2593,25 @@ function extractAddressQuestionFromRawNormalizerOutput(rawModelOutput) { continue; } if (candidate.length >= 3 && candidate.length <= 500) { - if (readiness === "no_route" && !isAddressLlmPreDecomposeCandidate(candidate)) { - continue; - } return candidate; } } return null; } +function attachAddressPredecomposeContract(meta, sourceMessage) { + const canonicalMessage = toNonEmptyString(meta?.effectiveMessage) ?? String(sourceMessage ?? ""); + return { + ...meta, + predecomposeContract: (0, predecomposeContract_1.buildAddressLlmPredecomposeContractV1)({ + sourceMessage: String(sourceMessage ?? ""), + canonicalMessage + }) + }; +} async function runAddressLlmPreDecompose(normalizerService, payload, userMessage) { const provider = payload?.llmProvider === "local" ? "local" : payload?.llmProvider === "openai" ? "openai" : null; const sanitizedUserMessage = sanitizeAddressMessageForFallback(userMessage); const fallbackCandidate = resolveAddressDeterministicFallback(userMessage, sanitizedUserMessage); - const hasAddressSignal = isAddressLlmPreDecomposeCandidate(userMessage) || isAddressLlmPreDecomposeCandidate(sanitizedUserMessage); const baseMeta = { attempted: false, applied: false, @@ -2592,6 +2619,7 @@ async function runAddressLlmPreDecompose(normalizerService, payload, userMessage traceId: null, effectiveMessage: userMessage, reason: "not_attempted", + llmCanonicalCandidateDetected: false, fallbackRuleHit: null, sanitizedUserMessage, toolGateDecision: null, @@ -2603,39 +2631,19 @@ async function runAddressLlmPreDecompose(normalizerService, payload, userMessage const sourceCompact = compactWhitespace(String(userMessage ?? "").toLowerCase()); const fallbackApplied = fallbackCompact.length > 0 && fallbackCompact !== sourceCompact; if (fallbackApplied) { - return { + return attachAddressPredecomposeContract({ ...baseMeta, applied: true, effectiveMessage: fallbackCandidate.candidate, reason: "fallback_rule_applied_without_llm", fallbackRuleHit: fallbackCandidate.rule - }; + }, userMessage); } } - return { + return attachAddressPredecomposeContract({ ...baseMeta, reason: "skipped_in_mock" - }; - } - if (!hasAddressSignal) { - if (fallbackCandidate) { - const fallbackCompact = compactWhitespace(String(fallbackCandidate.candidate ?? "").toLowerCase()); - const sourceCompact = compactWhitespace(String(userMessage ?? "").toLowerCase()); - const fallbackApplied = fallbackCompact.length > 0 && fallbackCompact !== sourceCompact; - if (fallbackApplied) { - return { - ...baseMeta, - applied: true, - effectiveMessage: fallbackCandidate.candidate, - reason: "fallback_rule_applied_without_llm", - fallbackRuleHit: fallbackCandidate.rule - }; - } - } - return { - ...baseMeta, - reason: "not_address_like" - }; + }, userMessage); } const normalizePayload = { llmProvider: payload?.llmProvider, @@ -2661,7 +2669,7 @@ async function runAddressLlmPreDecompose(normalizerService, payload, userMessage const sourceCompact = compactWhitespace(String(userMessage ?? "").toLowerCase()); const fallbackApplied = fallbackCompact.length > 0 && fallbackCompact !== sourceCompact; if (fallbackApplied) { - return { + return attachAddressPredecomposeContract({ ...baseMeta, attempted: true, applied: true, @@ -2669,15 +2677,15 @@ async function runAddressLlmPreDecompose(normalizerService, payload, userMessage effectiveMessage: fallbackCandidate.candidate, reason: "fallback_rule_applied_after_llm", fallbackRuleHit: fallbackCandidate.rule - }; + }, userMessage); } } - return { + return attachAddressPredecomposeContract({ ...baseMeta, attempted: true, traceId: normalized?.trace_id ?? null, reason: normalized?.ok ? "no_usable_fragment" : "normalize_failed" - }; + }, userMessage); } const repairedSourceMessage = repairAddressMojibake(userMessage); const sourceIntentResolution = (0, addressIntentResolver_1.resolveAddressIntent)(repairedSourceMessage || userMessage); @@ -2692,18 +2700,19 @@ async function runAddressLlmPreDecompose(normalizerService, payload, userMessage (intentConflict && (sourceIntentResolution.confidence === "high" || candidateIntentResolution.confidence !== "high")); if (rejectCandidateForIntentSafety) { - return { + return attachAddressPredecomposeContract({ ...baseMeta, attempted: true, applied: false, traceId: normalized?.trace_id ?? null, + llmCanonicalCandidateDetected: true, effectiveMessage: userMessage, reason: intentDroppedByCandidate ? "normalized_fragment_rejected_intent_drop" : "normalized_fragment_rejected_intent_conflict", fallbackRuleHit: null, sanitizedUserMessage - }; + }, userMessage); } const sourceCompact = compactWhitespace(String(userMessage ?? "").toLowerCase()); const candidateCompact = compactWhitespace(candidate.toLowerCase()); @@ -2720,16 +2729,17 @@ async function runAddressLlmPreDecompose(normalizerService, payload, userMessage : applied ? "raw_fragment_applied_after_normalize_failed" : "raw_fragment_same_after_normalize_failed"; - return { + return attachAddressPredecomposeContract({ attempted: true, applied, provider, traceId: normalized?.trace_id ?? null, effectiveMessage: applied ? candidate : userMessage, reason, + llmCanonicalCandidateDetected: true, fallbackRuleHit: null, sanitizedUserMessage - }; + }, userMessage); } catch (error) { if (fallbackCandidate) { @@ -2737,28 +2747,30 @@ async function runAddressLlmPreDecompose(normalizerService, payload, userMessage const sourceCompact = compactWhitespace(String(userMessage ?? "").toLowerCase()); const fallbackApplied = fallbackCompact.length > 0 && fallbackCompact !== sourceCompact; if (fallbackApplied) { - return { + return attachAddressPredecomposeContract({ ...baseMeta, attempted: true, applied: true, effectiveMessage: fallbackCandidate.candidate, reason: "fallback_rule_applied_after_llm_error", fallbackRuleHit: fallbackCandidate.rule - }; + }, userMessage); } } - return { + return attachAddressPredecomposeContract({ ...baseMeta, attempted: true, reason: `error:${error instanceof Error ? error.message : String(error)}` - }; + }, userMessage); } } -function resolveAddressToolGateDecision(addressInputMessage, followupContext) { +function resolveAddressToolGateDecision(addressInputMessage, followupContext, llmPreDecomposeMeta = null) { const repairedInputMessage = repairAddressMojibake(String(addressInputMessage ?? "")); const modeDetection = (0, addressQueryClassifier_1.detectAddressQuestionMode)(repairedInputMessage || addressInputMessage); const hasClassifierSignal = modeDetection.mode === "address_query"; + const hasLlmCanonicalSignal = Boolean(llmPreDecomposeMeta?.llmCanonicalCandidateDetected); const hasMessageSignal = hasClassifierSignal || + hasLlmCanonicalSignal || isAddressLlmPreDecomposeCandidate(addressInputMessage) || isAddressLlmPreDecomposeCandidate(repairedInputMessage) || hasAccountingSignal(addressInputMessage) || @@ -2767,7 +2779,11 @@ function resolveAddressToolGateDecision(addressInputMessage, followupContext) { return { runAddressLane: true, decision: "run_address_lane", - reason: hasClassifierSignal ? "address_mode_classifier_detected" : "address_signal_detected" + reason: hasClassifierSignal + ? "address_mode_classifier_detected" + : hasLlmCanonicalSignal + ? "llm_canonical_candidate_detected" + : "address_signal_detected" }; } if (followupContext) { @@ -2857,6 +2873,9 @@ export class AssistantService { address_sanitized_user_message: llmPreDecomposeMeta?.sanitizedUserMessage ?? null, address_tool_gate_decision: llmPreDecomposeMeta?.toolGateDecision ?? null, address_tool_gate_reason: llmPreDecomposeMeta?.toolGateReason ?? null, + address_llm_predecompose_contract_intent: llmPreDecomposeMeta?.predecomposeContract?.intent ?? null, + address_llm_predecompose_contract_aggregation_profile: llmPreDecomposeMeta?.predecomposeContract?.aggregation_profile ?? null, + address_llm_predecompose_contract_period_scope: llmPreDecomposeMeta?.predecomposeContract?.period?.scope ?? null, detected_mode: addressLane.debug.detected_mode, query_shape: addressLane.debug.query_shape, detected_intent: addressLane.debug.detected_intent, @@ -2901,6 +2920,7 @@ export class AssistantService { conversation }; }; + let addressRuntimeMetaForDeep = null; if (config_1.FEATURE_ASSISTANT_ADDRESS_QUERY_V1) { const addressPreDecompose = config_1.FEATURE_ASSISTANT_ADDRESS_QUERY_LLM_PREDECOMPOSE_V1 ? await runAddressLlmPreDecompose(this.normalizerService, payload, userMessage) @@ -2911,6 +2931,11 @@ export class AssistantService { traceId: null, effectiveMessage: userMessage, reason: "disabled_by_feature_flag", + llmCanonicalCandidateDetected: false, + predecomposeContract: (0, predecomposeContract_1.buildAddressLlmPredecomposeContractV1)({ + sourceMessage: userMessage, + canonicalMessage: userMessage + }), fallbackRuleHit: null, sanitizedUserMessage: sanitizeAddressMessageForFallback(userMessage), toolGateDecision: null, @@ -2918,12 +2943,13 @@ export class AssistantService { }; const addressInputMessage = toNonEmptyString(addressPreDecompose?.effectiveMessage) ?? userMessage; const carryover = resolveAddressFollowupCarryoverContext(userMessage, session.items, addressInputMessage); - const toolGate = resolveAddressToolGateDecision(addressInputMessage, carryover?.followupContext ?? null); + const toolGate = resolveAddressToolGateDecision(addressInputMessage, carryover?.followupContext ?? null, addressPreDecompose); const addressRuntimeMeta = { ...addressPreDecompose, toolGateDecision: toolGate.decision, toolGateReason: toolGate.reason }; + addressRuntimeMetaForDeep = addressRuntimeMeta; if (!toolGate.runAddressLane) { (0, log_1.logJson)({ timestamp: new Date().toISOString(), @@ -2941,7 +2967,10 @@ export class AssistantService { address_fallback_rule_hit: addressRuntimeMeta?.fallbackRuleHit ?? null, address_sanitized_user_message: addressRuntimeMeta?.sanitizedUserMessage ?? null, address_tool_gate_decision: addressRuntimeMeta?.toolGateDecision ?? null, - address_tool_gate_reason: addressRuntimeMeta?.toolGateReason ?? null + address_tool_gate_reason: addressRuntimeMeta?.toolGateReason ?? null, + address_llm_predecompose_contract_intent: addressRuntimeMeta?.predecomposeContract?.intent ?? null, + address_llm_predecompose_contract_aggregation_profile: addressRuntimeMeta?.predecomposeContract?.aggregation_profile ?? null, + address_llm_predecompose_contract_period_scope: addressRuntimeMeta?.predecomposeContract?.period?.scope ?? null } }); } @@ -3273,6 +3302,14 @@ export class AssistantService { problem_unit_ids_used: composition.problem_unit_ids_used } : {}), + address_llm_predecompose_attempted: Boolean(addressRuntimeMetaForDeep?.attempted), + address_llm_predecompose_applied: Boolean(addressRuntimeMetaForDeep?.applied), + address_llm_predecompose_reason: addressRuntimeMetaForDeep?.reason ?? null, + address_llm_predecompose_provider: addressRuntimeMetaForDeep?.provider ?? null, + address_fallback_rule_hit: addressRuntimeMetaForDeep?.fallbackRuleHit ?? null, + address_tool_gate_decision: addressRuntimeMetaForDeep?.toolGateDecision ?? null, + address_tool_gate_reason: addressRuntimeMetaForDeep?.toolGateReason ?? null, + address_llm_predecompose_contract: addressRuntimeMetaForDeep?.predecomposeContract ?? null, answer_structure_v11: answerStructureV11, investigation_state_snapshot: investigationStateSnapshot, normalized: normalized.normalized diff --git a/llm_normalizer/backend/src/types/addressQuery.ts b/llm_normalizer/backend/src/types/addressQuery.ts index 41abd5d..8a9f0d0 100644 --- a/llm_normalizer/backend/src/types/addressQuery.ts +++ b/llm_normalizer/backend/src/types/addressQuery.ts @@ -1,6 +1,12 @@ export type AddressQuestionMode = "address_query" | "deep_analysis" | "unsupported"; export type AddressIntent = + | "period_coverage_profile" + | "document_type_and_account_section_profile" + | "counterparty_population_and_roles" + | "counterparty_activity_lifecycle" + | "contract_usage_overview" + | "list_contracts_by_counterparty" | "list_open_contracts" | "list_payables_counterparties" | "list_receivables_counterparties" @@ -99,7 +105,15 @@ export interface AddressRecipeDefinition { recipe_id: string; intent: Exclude; purpose: string; - query_template?: "movements" | "bank_docs"; + query_template?: + | "movements" + | "bank_docs" + | "period_profile" + | "document_section_profile" + | "counterparty_roles_profile" + | "counterparty_lifecycle_profile" + | "contract_usage_profile" + | "contracts_by_counterparty_profile"; required_filters: Array; optional_filters: Array; default_limit: number; diff --git a/llm_normalizer/backend/tests/addressQueryRuntimeM23.test.ts b/llm_normalizer/backend/tests/addressQueryRuntimeM23.test.ts index a438078..f89b8eb 100644 --- a/llm_normalizer/backend/tests/addressQueryRuntimeM23.test.ts +++ b/llm_normalizer/backend/tests/addressQueryRuntimeM23.test.ts @@ -45,6 +45,51 @@ describe("address query shape classifier", () => { expect(result.mode).toBe("address_query"); }); + it("keeps management period profile question in address lane", () => { + const result = detectAddressQuestionMode("За какие годы в базе есть данные?"); + expect(result.mode).toBe("address_query"); + }); + + it("keeps management document/section profile question in address lane", () => { + const result = detectAddressQuestionMode("Какие разделы учета наиболее заполнены и какие почти не используются?"); + expect(result.mode).toBe("address_query"); + }); + + it("keeps management counterparty population question in address lane", () => { + const result = detectAddressQuestionMode("Сколько всего уникальных контрагентов в базе?"); + expect(result.mode).toBe("address_query"); + }); + + it("keeps slang supplier count question in address lane", () => { + const result = detectAddressQuestionMode("скока поставщиков в базе"); + expect(result.mode).toBe("address_query"); + }); + + it("keeps slang client count question in address lane", () => { + const result = detectAddressQuestionMode("скок клиентов"); + expect(result.mode).toBe("address_query"); + }); + + it("keeps customer activity lifecycle question in address lane", () => { + const result = detectAddressQuestionMode("Какие заказчики работали с нами в 2020 году?"); + expect(result.mode).toBe("address_query"); + }); + + it("keeps customer list all-time question in address lane", () => { + const result = detectAddressQuestionMode("выведи список заказчиков за все время"); + expect(result.mode).toBe("address_query"); + }); + + it("keeps customer list short-year question in address lane", () => { + const result = detectAddressQuestionMode("покажи список заказчиков за 20год"); + expect(result.mode).toBe("address_query"); + }); + + it("keeps management contract usage overview question in address lane", () => { + const result = detectAddressQuestionMode("Сколько всего договоров заведено и сколько из них реально использовались?"); + expect(result.mode).toBe("address_query"); + }); + }); describe("address compose stage utf8 headers", () => { @@ -75,6 +120,796 @@ describe("address compose stage utf8 headers", () => { ]); expect(reply.text).toContain("Собран список банковских операций по договору (live address lane)."); }); + + it("renders readable russian header for contracts-by-counterparty list", () => { + const reply = composeFactualReply("list_contracts_by_counterparty", [ + { + period: "2000-01-01T00:00:00Z", + registrator: "Договор №19/15", + account_dt: null, + account_kt: null, + amount: 0, + analytics: ["Жуковка 51"] + } + ]); + expect(reply.text).toContain("Собран список договоров по контрагенту (catalog address lane)."); + expect(reply.text).toContain("Уникальных договоров: 1."); + expect(reply.text).toContain("Договор №19/15"); + }); + + it("renders period coverage summary for management profile intent", () => { + const reply = composeFactualReply("period_coverage_profile", [ + { + period: "2014-05-27T12:00:00Z", + registrator: "MIN_DATE", + account_dt: null, + account_kt: null, + amount: 0, + analytics: [] + }, + { + period: "2030-08-03T12:00:00Z", + registrator: "MAX_DATE", + account_dt: null, + account_kt: null, + amount: 0, + analytics: [] + }, + { + period: "2019-01-01T00:00:00Z", + registrator: "YEAR_DOCS", + account_dt: null, + account_kt: null, + amount: 1004, + analytics: [] + }, + { + period: "2015-02-01T00:00:00Z", + registrator: "MONTH_OPS", + account_dt: null, + account_kt: null, + amount: 1249, + analytics: [] + } + ]); + expect(reply.responseType).toBe("FACTUAL_SUMMARY"); + expect(reply.text).toContain("Профиль периодов базы собран"); + expect(reply.text).toContain("Самый активный год по документам: 2019 (1004)."); + expect(reply.text).toContain("Самый активный месяц по операциям: 2015-02 (1249)."); + }); + + it("renders document type + account section profile summary", () => { + const reply = composeFactualReply("document_type_and_account_section_profile", [ + { + period: "2000-01-01T00:00:00Z", + registrator: "DOC_TYPE_DOCS", + account_dt: "Списание с расчетного счета", + account_kt: "", + amount: 2352, + analytics: [] + }, + { + period: "2000-01-01T00:00:00Z", + registrator: "DOC_TYPE_DOCS", + account_dt: "Поступление товаров и услуг", + account_kt: "", + amount: 486, + analytics: [] + }, + { + period: "2000-01-01T00:00:00Z", + registrator: "SECTION_DT_OPS", + account_dt: "90", + account_kt: "DT", + amount: 1800, + analytics: [] + }, + { + period: "2000-01-01T00:00:00Z", + registrator: "SECTION_KT_OPS", + account_dt: "90", + account_kt: "KT", + amount: 1173, + analytics: [] + }, + { + period: "2000-01-01T00:00:00Z", + registrator: "SECTION_DT_OPS", + account_dt: "58", + account_kt: "DT", + amount: 1, + analytics: [] + }, + { + period: "2000-01-01T00:00:00Z", + registrator: "SECTION_KT_OPS", + account_dt: "58", + account_kt: "KT", + amount: 1, + analytics: [] + } + ]); + expect(reply.responseType).toBe("FACTUAL_SUMMARY"); + expect(reply.text).toContain("Профиль типов документов и разделов учета собран"); + expect(reply.text).toContain("Списание с расчетного счета: 2352"); + expect(reply.text).toContain("90 (Продажи): 2973"); + expect(reply.text).toContain("58 (Финансовые вложения): 2"); + }); + + it("returns focused answer for active year question (without month block)", () => { + const reply = composeFactualReply( + "period_coverage_profile", + [ + { + period: "2014-05-27T12:00:00Z", + registrator: "MIN_DATE", + account_dt: null, + account_kt: null, + amount: 0, + analytics: [] + }, + { + period: "2026-03-31T00:00:00Z", + registrator: "MAX_DATE", + account_dt: null, + account_kt: null, + amount: 0, + analytics: [] + }, + { + period: "2019-01-01T00:00:00Z", + registrator: "YEAR_DOCS", + account_dt: null, + account_kt: null, + amount: 1004, + analytics: [] + }, + { + period: "2026-01-01T00:00:00Z", + registrator: "YEAR_DOCS", + account_dt: null, + account_kt: null, + amount: 3, + analytics: [] + }, + { + period: "2015-02-01T00:00:00Z", + registrator: "MONTH_OPS", + account_dt: null, + account_kt: null, + amount: 1249, + analytics: [] + } + ], + { userMessage: "Какой год самый активный по количеству документов?" } + ); + + expect(reply.text).toContain("Самый активный год по документам: 2019 (1004)."); + expect(reply.text).not.toContain("Самый активный месяц по операциям"); + expect(reply.text).not.toContain("Покрытие по датам"); + }); + + it("returns focused answer for active month question (without year block)", () => { + const reply = composeFactualReply( + "period_coverage_profile", + [ + { + period: "2019-01-01T00:00:00Z", + registrator: "YEAR_DOCS", + account_dt: null, + account_kt: null, + amount: 1004, + analytics: [] + }, + { + period: "2015-02-01T00:00:00Z", + registrator: "MONTH_OPS", + account_dt: null, + account_kt: null, + amount: 1249, + analytics: [] + } + ], + { userMessage: "Какой месяц самый активный по количеству операций?" } + ); + + expect(reply.text).toContain("Самый активный месяц по операциям: 2015-02 (1249)."); + expect(reply.text).not.toContain("Самый активный год по документам"); + }); + + it("returns focused answer for passive year question (and ignores low-activity tail year)", () => { + const reply = composeFactualReply( + "period_coverage_profile", + [ + { + period: "2014-05-27T12:00:00Z", + registrator: "MIN_DATE", + account_dt: null, + account_kt: null, + amount: 0, + analytics: [] + }, + { + period: "2026-03-31T00:00:00Z", + registrator: "MAX_DATE", + account_dt: null, + account_kt: null, + amount: 0, + analytics: [] + }, + { + period: "2019-01-01T00:00:00Z", + registrator: "YEAR_DOCS", + account_dt: null, + account_kt: null, + amount: 1004, + analytics: [] + }, + { + period: "2020-01-01T00:00:00Z", + registrator: "YEAR_DOCS", + account_dt: null, + account_kt: null, + amount: 112, + analytics: [] + }, + { + period: "2026-01-01T00:00:00Z", + registrator: "YEAR_DOCS", + account_dt: null, + account_kt: null, + amount: 3, + analytics: [] + } + ], + { userMessage: "Какой год самый пассивный по количеству документов?" } + ); + + expect(reply.text).toContain("Самый пассивный год по документам: 2020 (112)."); + expect(reply.text).not.toContain("Самый активный год по документам"); + expect(reply.text).not.toContain("Покрытие по датам"); + }); + + it("returns focused answer for passive month question (without year block)", () => { + const reply = composeFactualReply( + "period_coverage_profile", + [ + { + period: "2019-01-01T00:00:00Z", + registrator: "YEAR_DOCS", + account_dt: null, + account_kt: null, + amount: 1004, + analytics: [] + }, + { + period: "2020-01-01T00:00:00Z", + registrator: "YEAR_DOCS", + account_dt: null, + account_kt: null, + amount: 112, + analytics: [] + }, + { + period: "2026-01-01T00:00:00Z", + registrator: "YEAR_DOCS", + account_dt: null, + account_kt: null, + amount: 3, + analytics: [] + }, + { + period: "2019-10-01T00:00:00Z", + registrator: "MONTH_OPS", + account_dt: null, + account_kt: null, + amount: 1400, + analytics: [] + }, + { + period: "2020-05-01T00:00:00Z", + registrator: "MONTH_OPS", + account_dt: null, + account_kt: null, + amount: 44, + analytics: [] + }, + { + period: "2026-01-01T00:00:00Z", + registrator: "MONTH_OPS", + account_dt: null, + account_kt: null, + amount: 2, + analytics: [] + } + ], + { userMessage: "Какой месяц самый пассивный по количеству операций?" } + ); + + expect(reply.text).toContain("Самый пассивный месяц по операциям: 2020-05 (44)."); + expect(reply.text).not.toContain("Самый активный месяц по операциям"); + expect(reply.text).not.toContain("Самый активный год по документам"); + }); + + it("shows operational range and low-activity tail for coverage question", () => { + const reply = composeFactualReply( + "period_coverage_profile", + [ + { + period: "2014-05-27T12:00:00Z", + registrator: "MIN_DATE", + account_dt: null, + account_kt: null, + amount: 0, + analytics: [] + }, + { + period: "2026-03-31T00:00:00Z", + registrator: "MAX_DATE", + account_dt: null, + account_kt: null, + amount: 0, + analytics: [] + }, + { + period: "2019-01-01T00:00:00Z", + registrator: "YEAR_DOCS", + account_dt: null, + account_kt: null, + amount: 1004, + analytics: [] + }, + { + period: "2026-01-01T00:00:00Z", + registrator: "YEAR_DOCS", + account_dt: null, + account_kt: null, + amount: 3, + analytics: [] + } + ], + { userMessage: "За какие годы в базе есть данные?" } + ); + + expect(reply.text).toContain("Операционный период с выраженной активностью: 2019..2019."); + expect(reply.text).toContain("Низкоактивный хвост (единичные записи): 2026."); + }); + + it("returns focused document-type answer without account sections", () => { + const reply = composeFactualReply( + "document_type_and_account_section_profile", + [ + { + period: "2000-01-01T00:00:00Z", + registrator: "DOC_TYPE_DOCS", + account_dt: "Списание с расчетного счета", + account_kt: "", + amount: 2352, + analytics: [] + }, + { + period: "2000-01-01T00:00:00Z", + registrator: "SECTION_DT_OPS", + account_dt: "90", + account_kt: "DT", + amount: 1800, + analytics: [] + } + ], + { userMessage: "Какие типы документов используются чаще всего в базе?" } + ); + + expect(reply.text).toContain("Топ типов документов"); + expect(reply.text).not.toContain("Наиболее заполненные разделы учета"); + }); + + it("returns focused account-sections answer without document types", () => { + const reply = composeFactualReply( + "document_type_and_account_section_profile", + [ + { + period: "2000-01-01T00:00:00Z", + registrator: "DOC_TYPE_DOCS", + account_dt: "Списание с расчетного счета", + account_kt: "", + amount: 2352, + analytics: [] + }, + { + period: "2000-01-01T00:00:00Z", + registrator: "SECTION_DT_OPS", + account_dt: "90", + account_kt: "DT", + amount: 1800, + analytics: [] + }, + { + period: "2000-01-01T00:00:00Z", + registrator: "SECTION_KT_OPS", + account_dt: "58", + account_kt: "KT", + amount: 2, + analytics: [] + } + ], + { userMessage: "Какие разделы учета наиболее заполнены и какие почти не используются?" } + ); + + expect(reply.text).toContain("Наиболее заполненные разделы учета"); + expect(reply.text).not.toContain("Топ типов документов"); + }); + + it("returns focused answer for rare document types question", () => { + const reply = composeFactualReply( + "document_type_and_account_section_profile", + [ + { + period: "2000-01-01T00:00:00Z", + registrator: "DOC_TYPE_DOCS", + account_dt: "Списание с расчетного счета", + account_kt: "", + amount: 2352, + analytics: [] + }, + { + period: "2000-01-01T00:00:00Z", + registrator: "DOC_TYPE_DOCS", + account_dt: "Поступление на расчетный счет", + account_kt: "", + amount: 124, + analytics: [] + }, + { + period: "2000-01-01T00:00:00Z", + registrator: "SECTION_DT_OPS", + account_dt: "90", + account_kt: "DT", + amount: 1800, + analytics: [] + } + ], + { userMessage: "Какие типы документов используются реже всего в базе?" } + ); + + expect(reply.text).toContain("Наименее используемые типы документов"); + expect(reply.text).toContain("Поступление на расчетный счет: 124"); + expect(reply.text).not.toContain("Топ типов документов"); + expect(reply.text).not.toContain("Наиболее заполненные разделы учета"); + }); + + it("returns focused answer for least-filled account sections question", () => { + const reply = composeFactualReply( + "document_type_and_account_section_profile", + [ + { + period: "2000-01-01T00:00:00Z", + registrator: "SECTION_DT_OPS", + account_dt: "90", + account_kt: "DT", + amount: 1800, + analytics: [] + }, + { + period: "2000-01-01T00:00:00Z", + registrator: "SECTION_KT_OPS", + account_dt: "90", + account_kt: "KT", + amount: 1173, + analytics: [] + }, + { + period: "2000-01-01T00:00:00Z", + registrator: "SECTION_DT_OPS", + account_dt: "58", + account_kt: "DT", + amount: 1, + analytics: [] + }, + { + period: "2000-01-01T00:00:00Z", + registrator: "SECTION_KT_OPS", + account_dt: "58", + account_kt: "KT", + amount: 1, + analytics: [] + } + ], + { userMessage: "Какие разделы учета наименее заполнены?" } + ); + + expect(reply.text).toContain("Наименее заполненные разделы учета"); + expect(reply.text).toContain("58 (Финансовые вложения): 2"); + expect(reply.text).not.toContain("Наиболее заполненные разделы учета"); + expect(reply.text).not.toContain("Топ типов документов"); + }); + + it("returns focused answer for total counterparties question", () => { + const reply = composeFactualReply( + "counterparty_population_and_roles", + [ + { + period: "2000-01-01T00:00:00Z", + registrator: "CP_TOTAL", + account_dt: "", + account_kt: "", + amount: 412, + analytics: [] + }, + { + period: "2000-01-01T00:00:00Z", + registrator: "CP_CUSTOMER_ACTIVE", + account_dt: "", + account_kt: "", + amount: 145, + analytics: [] + }, + { + period: "2000-01-01T00:00:00Z", + registrator: "CP_SUPPLIER_ACTIVE", + account_dt: "", + account_kt: "", + amount: 94, + analytics: [] + }, + { + period: "2000-01-01T00:00:00Z", + registrator: "CP_MIXED_ACTIVE", + account_dt: "", + account_kt: "", + amount: 23, + analytics: [] + }, + { + period: "2000-01-01T00:00:00Z", + registrator: "CP_ACTIVE_UNION", + account_dt: "", + account_kt: "", + amount: 216, + analytics: [] + } + ], + { userMessage: "Сколько всего уникальных контрагентов в базе?" } + ); + + expect(reply.text).toContain("Всего уникальных контрагентов в базе: 412."); + expect(reply.text).not.toContain("Роли контрагентов по активности"); + }); + + it("returns focused answer for counterparty roles split question", () => { + const reply = composeFactualReply( + "counterparty_population_and_roles", + [ + { + period: "2000-01-01T00:00:00Z", + registrator: "CP_TOTAL", + account_dt: "", + account_kt: "", + amount: 412, + analytics: [] + }, + { + period: "2000-01-01T00:00:00Z", + registrator: "CP_CUSTOMER_ACTIVE", + account_dt: "", + account_kt: "", + amount: 145, + analytics: [] + }, + { + period: "2000-01-01T00:00:00Z", + registrator: "CP_SUPPLIER_ACTIVE", + account_dt: "", + account_kt: "", + amount: 94, + analytics: [] + }, + { + period: "2000-01-01T00:00:00Z", + registrator: "CP_MIXED_ACTIVE", + account_dt: "", + account_kt: "", + amount: 23, + analytics: [] + }, + { + period: "2000-01-01T00:00:00Z", + registrator: "CP_ACTIVE_UNION", + account_dt: "", + account_kt: "", + amount: 216, + analytics: [] + } + ], + { userMessage: "Сколько у нас заказчиков, поставщиков и смешанных контрагентов?" } + ); + + expect(reply.text).toContain("Роли контрагентов по активности:"); + expect(reply.text).toContain("Заказчики (только customer-роль): 122."); + expect(reply.text).toContain("Поставщики (только supplier-роль): 71."); + expect(reply.text).toContain("Смешанные (и покупатель, и поставщик): 23."); + expect(reply.text).not.toContain("Всего уникальных контрагентов в базе"); + }); + + it("returns focused answer for slang supplier count question", () => { + const reply = composeFactualReply( + "counterparty_population_and_roles", + [ + { + period: "2000-01-01T00:00:00Z", + registrator: "CP_TOTAL", + account_dt: "", + account_kt: "", + amount: 412, + analytics: [] + }, + { + period: "2000-01-01T00:00:00Z", + registrator: "CP_CUSTOMER_ACTIVE", + account_dt: "", + account_kt: "", + amount: 145, + analytics: [] + }, + { + period: "2000-01-01T00:00:00Z", + registrator: "CP_SUPPLIER_ACTIVE", + account_dt: "", + account_kt: "", + amount: 94, + analytics: [] + }, + { + period: "2000-01-01T00:00:00Z", + registrator: "CP_MIXED_ACTIVE", + account_dt: "", + account_kt: "", + amount: 23, + analytics: [] + }, + { + period: "2000-01-01T00:00:00Z", + registrator: "CP_ACTIVE_UNION", + account_dt: "", + account_kt: "", + amount: 216, + analytics: [] + } + ], + { userMessage: "скока поставщиков в базе" } + ); + + expect(reply.text).toContain("Поставщиков (только supplier-роль): 71."); + expect(reply.text).not.toContain("Роли контрагентов по активности:"); + expect(reply.text).not.toContain("Всего уникальных контрагентов в базе"); + }); + + it("returns focused answer for slang client count question", () => { + const reply = composeFactualReply( + "counterparty_population_and_roles", + [ + { + period: "2000-01-01T00:00:00Z", + registrator: "CP_TOTAL", + account_dt: "", + account_kt: "", + amount: 412, + analytics: [] + }, + { + period: "2000-01-01T00:00:00Z", + registrator: "CP_CUSTOMER_ACTIVE", + account_dt: "", + account_kt: "", + amount: 145, + analytics: [] + }, + { + period: "2000-01-01T00:00:00Z", + registrator: "CP_SUPPLIER_ACTIVE", + account_dt: "", + account_kt: "", + amount: 94, + analytics: [] + }, + { + period: "2000-01-01T00:00:00Z", + registrator: "CP_MIXED_ACTIVE", + account_dt: "", + account_kt: "", + amount: 23, + analytics: [] + }, + { + period: "2000-01-01T00:00:00Z", + registrator: "CP_ACTIVE_UNION", + account_dt: "", + account_kt: "", + amount: 216, + analytics: [] + } + ], + { userMessage: "скок клиентов" } + ); + + expect(reply.text).toContain("Заказчиков (только customer-роль): 122."); + expect(reply.text).not.toContain("Роли контрагентов по активности:"); + expect(reply.text).not.toContain("Всего уникальных контрагентов в базе"); + }); + + it("returns customer activity lifecycle list for year question", () => { + const reply = composeFactualReply( + "counterparty_activity_lifecycle", + [ + { + period: "2020-12-16T16:20:52Z", + registrator: "CP_CUSTOMER_ACTIVITY", + account_dt: "", + account_kt: "", + amount: 15, + analytics: ["НОРТОН"] + }, + { + period: "2020-11-19T12:00:04Z", + registrator: "CP_CUSTOMER_ACTIVITY", + account_dt: "", + account_kt: "", + amount: 11, + analytics: ["Группа"] + } + ], + { userMessage: "Какие заказчики работали с нами в 2020 году?" } + ); + + expect(reply.responseType).toBe("FACTUAL_LIST"); + expect(reply.text).toContain("Собран профиль активности заказчиков"); + expect(reply.text).toContain("Активные заказчики в 2020 году: 2."); + expect(reply.text).toContain("НОРТОН"); + expect(reply.text).toContain("Группа"); + }); + + it("returns explicit 2020 year label for short-year lifecycle question", () => { + const reply = composeFactualReply( + "counterparty_activity_lifecycle", + [ + { + period: "2020-12-16T16:20:52Z", + registrator: "CP_CUSTOMER_ACTIVITY", + account_dt: "", + account_kt: "", + amount: 15, + analytics: ["НОРТОН"] + } + ], + { userMessage: "покажи список заказчиков за 20год" } + ); + expect(reply.text).toContain("Активные заказчики в 2020 году: 1."); + }); + + it("returns contract usage overview summary", () => { + const reply = composeFactualReply("contract_usage_overview", [ + { + period: "2000-01-01T00:00:00Z", + registrator: "CT_TOTAL", + account_dt: "", + account_kt: "", + amount: 520, + analytics: [] + }, + { + period: "2000-01-01T00:00:00Z", + registrator: "CT_USED", + account_dt: "", + account_kt: "", + amount: 148, + analytics: [] + } + ]); + + expect(reply.text).toContain("Профиль договорной базы собран"); + expect(reply.text).toContain("Всего договоров в базе: 520."); + expect(reply.text).toContain("Использованных договоров (есть factual связь с операциями): 148."); + expect(reply.text).toContain("Неиспользуемых договоров: 372."); + }); }); describe("address intent resolver expansion (M2.3a)", () => { @@ -209,9 +1044,163 @@ describe("address intent resolver expansion (M2.3a)", () => { const result = resolveAddressIntent("за любой период есть что-то по свк?"); expect(result.intent).toBe("list_documents_by_counterparty"); }); + + it("resolves period coverage profile for years-in-database question", () => { + const result = resolveAddressIntent("За какие годы в базе есть данные?"); + expect(result.intent).toBe("period_coverage_profile"); + }); + + it("resolves period coverage profile for top active year by documents question", () => { + const result = resolveAddressIntent("Какой год самый активный по количеству документов?"); + expect(result.intent).toBe("period_coverage_profile"); + }); + + it("resolves period coverage profile for top active month by operations question", () => { + const result = resolveAddressIntent("Какой месяц самый активный по количеству операций?"); + expect(result.intent).toBe("period_coverage_profile"); + }); + + it("resolves period coverage profile for passive year by documents question", () => { + const result = resolveAddressIntent("Какой год самый пассивный по количеству документов?"); + expect(result.intent).toBe("period_coverage_profile"); + }); + + it("resolves period coverage profile for passive month by operations question", () => { + const result = resolveAddressIntent("Какой месяц самый пассивный по количеству операций?"); + expect(result.intent).toBe("period_coverage_profile"); + }); + + it("resolves document+section profile for document type usage question", () => { + const result = resolveAddressIntent("Какие типы документов используются чаще всего в базе?"); + expect(result.intent).toBe("document_type_and_account_section_profile"); + }); + + it("resolves document+section profile for account section fill question", () => { + const result = resolveAddressIntent("Какие разделы учета наиболее заполнены и какие почти не используются?"); + expect(result.intent).toBe("document_type_and_account_section_profile"); + }); + + it("resolves document+section profile for rare document types question", () => { + const result = resolveAddressIntent("Какие типы документов используются реже всего в базе?"); + expect(result.intent).toBe("document_type_and_account_section_profile"); + }); + + it("resolves document+section profile for least-filled account sections question", () => { + const result = resolveAddressIntent("Какие разделы учета наименее заполнены?"); + expect(result.intent).toBe("document_type_and_account_section_profile"); + }); + + it("resolves counterparty population intent for total unique counterparties question", () => { + const result = resolveAddressIntent("Сколько всего уникальных контрагентов в базе?"); + expect(result.intent).toBe("counterparty_population_and_roles"); + }); + + it("resolves counterparty population intent for roles split question", () => { + const result = resolveAddressIntent("Сколько у нас заказчиков, поставщиков и смешанных контрагентов?"); + expect(result.intent).toBe("counterparty_population_and_roles"); + }); + + it("resolves counterparty population intent for slang supplier count question", () => { + const result = resolveAddressIntent("скока поставщиков"); + expect(result.intent).toBe("counterparty_population_and_roles"); + }); + + it("resolves counterparty population intent for slang supplier count in base question", () => { + const result = resolveAddressIntent("скока поставщиков в базе"); + expect(result.intent).toBe("counterparty_population_and_roles"); + }); + + it("resolves counterparty population intent for slang client count question", () => { + const result = resolveAddressIntent("скок клиентов"); + expect(result.intent).toBe("counterparty_population_and_roles"); + }); + + it("resolves counterparty population intent for slang client count in base question", () => { + const result = resolveAddressIntent("скок клиентов в базе"); + expect(result.intent).toBe("counterparty_population_and_roles"); + }); + + it("resolves counterparty lifecycle intent for active customers in year question", () => { + const result = resolveAddressIntent("Какие заказчики работали с нами в 2020 году?"); + expect(result.intent).toBe("counterparty_activity_lifecycle"); + }); + + it("resolves counterparty lifecycle intent for active customers all-time question", () => { + const result = resolveAddressIntent("Какие клиенты работали с нами за все время?"); + expect(result.intent).toBe("counterparty_activity_lifecycle"); + }); + + it("resolves counterparty lifecycle intent for customer list all-time question", () => { + const result = resolveAddressIntent("выведи список заказчиков за все время"); + expect(result.intent).toBe("counterparty_activity_lifecycle"); + }); + + it("resolves counterparty lifecycle intent for customer list short-year question", () => { + const result = resolveAddressIntent("покажи список заказчиков за 20год"); + expect(result.intent).toBe("counterparty_activity_lifecycle"); + }); + + it("resolves counterparty lifecycle intent for roster wording without explicit period", () => { + const result = resolveAddressIntent("кто у нас заказчики вообще"); + expect(result.intent).toBe("counterparty_activity_lifecycle"); + }); + + it("resolves contract usage overview intent", () => { + const result = resolveAddressIntent("Сколько всего договоров заведено и сколько из них реально использовались?"); + expect(result.intent).toBe("contract_usage_overview"); + }); + + it("resolves contracts-by-counterparty intent from list wording", () => { + const result = resolveAddressIntent("покажи договора все по жуковке 51"); + expect(result.intent).toBe("list_contracts_by_counterparty"); + }); }); describe("address filter extraction for balance drilldown", () => { + it("does not force default limit=20 for management aggregate intents", () => { + const periodProfile = extractAddressFilters("За какие годы в базе есть данные?", "period_coverage_profile"); + const docSectionProfile = extractAddressFilters( + "Какие типы документов используются чаще всего в базе?", + "document_type_and_account_section_profile" + ); + const counterpartyProfile = extractAddressFilters( + "Сколько всего уникальных контрагентов в базе?", + "counterparty_population_and_roles" + ); + const counterpartyLifecycle = extractAddressFilters( + "Какие заказчики работали с нами в 2020 году?", + "counterparty_activity_lifecycle" + ); + const contractOverview = extractAddressFilters( + "Сколько всего договоров заведено и сколько из них реально использовались?", + "contract_usage_overview" + ); + expect(periodProfile.extracted_filters.limit).toBeUndefined(); + expect(docSectionProfile.extracted_filters.limit).toBeUndefined(); + expect(counterpartyProfile.extracted_filters.limit).toBeUndefined(); + expect(counterpartyLifecycle.extracted_filters.limit).toBeUndefined(); + expect(contractOverview.extracted_filters.limit).toBeUndefined(); + expect(periodProfile.extracted_filters.period_to).toBeDefined(); + expect(docSectionProfile.extracted_filters.period_to).toBeDefined(); + expect(counterpartyProfile.extracted_filters.period_to).toBeDefined(); + expect(counterpartyLifecycle.extracted_filters.period_to).toBeDefined(); + expect(contractOverview.extracted_filters.period_to).toBeDefined(); + expect(periodProfile.warnings).toContain("period_to_defaulted_today_for_management_profile"); + expect(docSectionProfile.warnings).toContain("period_to_defaulted_today_for_management_profile"); + expect(counterpartyProfile.warnings).toContain("period_to_defaulted_today_for_management_profile"); + expect(counterpartyLifecycle.warnings).not.toContain("period_to_defaulted_today_for_management_profile"); + expect(contractOverview.warnings).toContain("period_to_defaulted_today_for_management_profile"); + }); + + it("extracts short-year period for lifecycle customer list question", () => { + const lifecycleShortYear = extractAddressFilters( + "покажи список заказчиков за 20год", + "counterparty_activity_lifecycle" + ); + expect(lifecycleShortYear.extracted_filters.period_from).toBe("2020-01-01"); + expect(lifecycleShortYear.extracted_filters.period_to).toBe("2020-12-31"); + }); + it("defaults as_of_date for documents_forming_balance when date is omitted", () => { const result = extractAddressFilters("which documents form balance for account 62", "documents_forming_balance"); expect(result.extracted_filters.account).toBe("62"); @@ -416,6 +1405,13 @@ describe("address filter extraction for balance drilldown", () => { expect(result.warnings).toContain("period_derived_from_year_phrase"); }); + it("extracts short bare year period from follow-up phrase", () => { + const result = extractAddressFilters("теперь за 21", "counterparty_activity_lifecycle"); + expect(result.extracted_filters.period_from).toBe("2021-01-01"); + expect(result.extracted_filters.period_to).toBe("2021-12-31"); + expect(result.warnings).toContain("period_derived_from_year_phrase"); + }); + it("does not use action verb as counterparty when phrase is 'Показать документы '", () => { const result = extractAddressFilters( "Показать документы СВК за 2020 год.", @@ -477,6 +1473,17 @@ describe("address filter extraction for balance drilldown", () => { expect(result.warnings).toContain("period_derived_from_year_phrase"); }); + it("extracts contracts-by-counterparty anchor with numeric suffix from loose 'по ...' phrase", () => { + const result = extractAddressFilters( + "покажи договора все по жуковке 51", + "list_contracts_by_counterparty" + ); + expect(result.extracted_filters.counterparty).toBe("жуковке 51"); + expect(result.extracted_filters.contract).toBeUndefined(); + expect(result.missing_required_filters).toEqual([]); + expect(result.warnings).toContain("counterparty_anchor_derived_from_loose_by_phrase"); + }); + it("cuts trailing as-of date from contract anchor", () => { const result = extractAddressFilters( "Покажи документы по договору 1-ПМ/2020 на дату 31.07.2020", @@ -567,6 +1574,78 @@ describe("address filter extraction for balance drilldown", () => { }); describe("address query limited taxonomy and stage diagnostics", () => { + it("routes period coverage profile question into dedicated aggregate recipe", async () => { + const service = new AddressQueryService(); + const result = await service.tryHandle("За какие годы в базе есть данные?"); + expect(result?.handled).toBe(true); + expect(result?.debug.detected_mode).toBe("address_query"); + expect(result?.debug.detected_intent).toBe("period_coverage_profile"); + expect(result?.debug.selected_recipe).toBe("address_period_coverage_profile_v1"); + expect(result?.debug.mcp_call_status).not.toBe("skipped"); + expect(["FACTUAL_SUMMARY", "LIMITED_WITH_REASON"]).toContain(result?.response_type); + }); + + it("does not rewrite active-month management question into bank-ops counterparty lane", async () => { + const service = new AddressQueryService(); + const result = await service.tryHandle("Какой месяц самый активный по количеству операций?"); + expect(result?.handled).toBe(true); + expect(result?.debug.detected_intent).toBe("period_coverage_profile"); + expect(result?.debug.selected_recipe).toBe("address_period_coverage_profile_v1"); + expect(result?.debug.extracted_filters.counterparty).toBeUndefined(); + expect(["FACTUAL_SUMMARY", "LIMITED_WITH_REASON"]).toContain(result?.response_type); + }); + + it("routes document+section profile question into dedicated aggregate recipe", async () => { + const service = new AddressQueryService(); + const result = await service.tryHandle("Какие типы документов используются чаще всего в базе?"); + expect(result?.handled).toBe(true); + expect(result?.debug.detected_mode).toBe("address_query"); + expect(result?.debug.detected_intent).toBe("document_type_and_account_section_profile"); + expect(result?.debug.selected_recipe).toBe("address_document_type_and_account_section_profile_v1"); + expect(result?.debug.mcp_call_status).not.toBe("skipped"); + expect(["FACTUAL_SUMMARY", "LIMITED_WITH_REASON"]).toContain(result?.response_type); + }); + + it("routes counterparty population question into dedicated aggregate recipe", async () => { + const service = new AddressQueryService(); + const result = await service.tryHandle("Сколько всего уникальных контрагентов в базе?"); + expect(result?.handled).toBe(true); + expect(result?.debug.detected_intent).toBe("counterparty_population_and_roles"); + expect(result?.debug.selected_recipe).toBe("address_counterparty_population_roles_v1"); + expect(result?.debug.mcp_call_status).not.toBe("skipped"); + expect(["FACTUAL_SUMMARY", "LIMITED_WITH_REASON"]).toContain(result?.response_type); + }); + + it("routes contract usage overview question into dedicated aggregate recipe", async () => { + const service = new AddressQueryService(); + const result = await service.tryHandle("Сколько всего договоров заведено и сколько из них реально использовались?"); + expect(result?.handled).toBe(true); + expect(result?.debug.detected_intent).toBe("contract_usage_overview"); + expect(result?.debug.selected_recipe).toBe("address_contract_usage_overview_v1"); + expect(result?.debug.mcp_call_status).not.toBe("skipped"); + expect(["FACTUAL_SUMMARY", "LIMITED_WITH_REASON"]).toContain(result?.response_type); + }); + + it("routes customer lifecycle question into dedicated aggregate recipe", async () => { + const service = new AddressQueryService(); + const result = await service.tryHandle("Какие заказчики работали с нами в 2020 году?"); + expect(result?.handled).toBe(true); + expect(result?.debug.detected_intent).toBe("counterparty_activity_lifecycle"); + expect(result?.debug.selected_recipe).toBe("address_counterparty_activity_lifecycle_v1"); + expect(result?.debug.mcp_call_status).not.toBe("skipped"); + expect(["FACTUAL_LIST", "LIMITED_WITH_REASON", "FACTUAL_SUMMARY"]).toContain(result?.response_type); + }); + + it("routes roster-style customer wording into lifecycle aggregate recipe", async () => { + const service = new AddressQueryService(); + const result = await service.tryHandle("кто у нас заказчики вообще"); + expect(result?.handled).toBe(true); + expect(result?.debug.detected_intent).toBe("counterparty_activity_lifecycle"); + expect(result?.debug.selected_recipe).toBe("address_counterparty_activity_lifecycle_v1"); + expect(result?.debug.mcp_call_status).not.toBe("skipped"); + expect(["FACTUAL_LIST", "LIMITED_WITH_REASON", "FACTUAL_SUMMARY"]).toContain(result?.response_type); + }); + it("returns missing_anchor for open items without concrete counterparty/contract anchor", async () => { const service = new AddressQueryService(); const result = await service.tryHandle("show open items by contract"); @@ -588,6 +1667,16 @@ describe("address query limited taxonomy and stage diagnostics", () => { expect(String(result?.assistant_reply ?? "")).not.toContain("Собраны открытые позиции"); }); + it("does not return broad fallback document list when counterparty anchor is not matched", async () => { + const service = new AddressQueryService(); + const result = await service.tryHandle("покажи документы все по жуковке 51"); + expect(result?.handled).toBe(true); + if (result?.reply_type === "partial_coverage") { + expect(String(result?.assistant_reply ?? "")).not.toContain("Точный якорь не подтвердился"); + expect(result?.debug.rows_matched).toBe(0); + } + }); + it("routes contract document list intent into address recipe", async () => { const service = new AddressQueryService(); const result = await service.tryHandle("show documents by contract 19/15"); @@ -598,6 +1687,16 @@ describe("address query limited taxonomy and stage diagnostics", () => { expect(result?.debug.mcp_call_status).not.toBe("skipped"); }); + it("routes contracts-by-counterparty intent into dedicated catalog recipe", async () => { + const service = new AddressQueryService(); + const result = await service.tryHandle("покажи договора все по жуковке 51"); + expect(result?.handled).toBe(true); + expect(result?.debug.detected_intent).toBe("list_contracts_by_counterparty"); + expect(result?.debug.selected_recipe).toBe("address_contracts_by_counterparty_v1"); + expect(result?.debug.mcp_call_status).not.toBe("skipped"); + expect(["FACTUAL_LIST", "LIMITED_WITH_REASON"]).toContain(result?.response_type); + }); + it("routes bank operations by contract intent into address recipe", async () => { const service = new AddressQueryService(); const result = await service.tryHandle("Покажи банковские операции по договору 19/15"); @@ -689,6 +1788,22 @@ describe("address query limited taxonomy and stage diagnostics", () => { }); describe("address decompose stage follow-up carryover", () => { + it("uses short bare year in follow-up period switch", () => { + const result = runAddressDecomposeStage("теперь за 21", { + previous_intent: "counterparty_activity_lifecycle", + previous_filters: { + period_from: "2020-01-01", + period_to: "2020-12-31" + }, + previous_anchor_type: "unknown", + previous_anchor_value: null + }); + expect(result).not.toBeNull(); + expect(result?.intent.intent).toBe("counterparty_activity_lifecycle"); + expect(result?.filters.extracted_filters.period_from).toBe("2021-01-01"); + expect(result?.filters.extracted_filters.period_to).toBe("2021-12-31"); + }); + it("keeps short period follow-up in address lane and preserves previous counterparty anchor", () => { const result = runAddressDecomposeStage("а теперь только за май 2020", { previous_intent: "list_documents_by_counterparty", @@ -800,6 +1915,81 @@ describe("address decompose stage follow-up carryover", () => { }); describe("address recipe catalog counterparty filtering", () => { + it("selects period coverage profile recipe and keeps aggregate markers", () => { + const selected = selectAddressRecipe("period_coverage_profile", {}); + expect(selected.selected_recipe).toBeTruthy(); + const plan = buildAddressRecipePlan(selected.selected_recipe!, {}); + + expect(plan.recipe.recipe_id).toBe("address_period_coverage_profile_v1"); + expect(plan.limit).toBeGreaterThanOrEqual(600); + expect(plan.query).toContain("MIN_DATE"); + expect(plan.query).toContain("YEAR_DOCS"); + expect(plan.query).toContain("MONTH_OPS"); + expect(plan.query).not.toContain("ТЕКУЩАЯДАТА()"); + }); + + it("selects document+section profile recipe and keeps aggregate markers", () => { + const selected = selectAddressRecipe("document_type_and_account_section_profile", {}); + expect(selected.selected_recipe).toBeTruthy(); + const plan = buildAddressRecipePlan(selected.selected_recipe!, {}); + + expect(plan.recipe.recipe_id).toBe("address_document_type_and_account_section_profile_v1"); + expect(plan.limit).toBeGreaterThanOrEqual(800); + expect(plan.query).toContain("DOC_TYPE_DOCS"); + expect(plan.query).toContain("SECTION_DT_OPS"); + expect(plan.query).toContain("SECTION_KT_OPS"); + expect(plan.query).toContain("СГРУППИРОВАТЬ ПО\n Движения.СчетДт"); + expect(plan.query).not.toContain("ЛЕВ(Движения.СчетДт.Код, 2)"); + }); + + it("selects counterparty population recipe and keeps aggregate markers", () => { + const selected = selectAddressRecipe("counterparty_population_and_roles", {}); + expect(selected.selected_recipe).toBeTruthy(); + const plan = buildAddressRecipePlan(selected.selected_recipe!, {}); + + expect(plan.recipe.recipe_id).toBe("address_counterparty_population_roles_v1"); + expect(plan.query).toContain("CP_TOTAL"); + expect(plan.query).toContain("CP_CUSTOMER_ACTIVE"); + expect(plan.query).toContain("CP_SUPPLIER_ACTIVE"); + expect(plan.query).toContain("CP_MIXED_ACTIVE"); + expect(plan.query).toContain("CP_ACTIVE_UNION"); + }); + + it("selects contract usage overview recipe and keeps aggregate markers", () => { + const selected = selectAddressRecipe("contract_usage_overview", {}); + expect(selected.selected_recipe).toBeTruthy(); + const plan = buildAddressRecipePlan(selected.selected_recipe!, {}); + + expect(plan.recipe.recipe_id).toBe("address_contract_usage_overview_v1"); + expect(plan.query).toContain("CT_TOTAL"); + expect(plan.query).toContain("CT_USED"); + expect(plan.query).toContain("ДоговорКонтрагента"); + }); + + it("selects contracts-by-counterparty recipe from contract catalog", () => { + const selected = selectAddressRecipe("list_contracts_by_counterparty", { + counterparty: "Жуковка 51" + }); + expect(selected.selected_recipe).toBeTruthy(); + const plan = buildAddressRecipePlan(selected.selected_recipe!, { + counterparty: "Жуковка 51" + }); + + expect(plan.recipe.recipe_id).toBe("address_contracts_by_counterparty_v1"); + expect(plan.query).toContain("Справочник.ДоговорыКонтрагентов"); + expect(plan.query).toContain("ПРЕДСТАВЛЕНИЕ(Договоры.Владелец)"); + }); + + it("selects counterparty lifecycle recipe and keeps activity marker", () => { + const selected = selectAddressRecipe("counterparty_activity_lifecycle", {}); + expect(selected.selected_recipe).toBeTruthy(); + const plan = buildAddressRecipePlan(selected.selected_recipe!, {}); + + expect(plan.recipe.recipe_id).toBe("address_counterparty_activity_lifecycle_v1"); + expect(plan.query).toContain("CP_CUSTOMER_ACTIVITY"); + expect(plan.query).toContain("ПоступлениеНаРасчетныйСчет"); + }); + it("boosts limit for all-time counterparty queries", () => { const filters = extractAddressFilters( "Покажи документы по контрагенту тестовый за все время", @@ -812,6 +2002,20 @@ describe("address recipe catalog counterparty filtering", () => { expect(plan.limit).toBe(1000); }); + it("supports ascending order plan for historical counterparty lookup", () => { + const selected = selectAddressRecipe("list_documents_by_counterparty", { + counterparty: "Жуковка 51", + sort: "period_asc" + }); + expect(selected.selected_recipe).toBeTruthy(); + const plan = buildAddressRecipePlan(selected.selected_recipe!, { + counterparty: "Жуковка 51", + sort: "period_asc" + }); + expect(plan.query).toContain("УПОРЯДОЧИТЬ ПО"); + expect(plan.query).toContain("Период ВОЗР"); + }); + it("boosts limit for english all-time counterparty queries", () => { const filters = extractAddressFilters( "show documents by counterparty test_cp for all time", diff --git a/llm_normalizer/backend/tests/assistantAddressFollowupContext.test.ts b/llm_normalizer/backend/tests/assistantAddressFollowupContext.test.ts index 9888abb..732c6e2 100644 --- a/llm_normalizer/backend/tests/assistantAddressFollowupContext.test.ts +++ b/llm_normalizer/backend/tests/assistantAddressFollowupContext.test.ts @@ -126,4 +126,70 @@ describe("assistant address follow-up carryover", () => { expect(calls[1].options?.followupContext?.previous_filters?.counterparty).toBe("свк"); expect(normalizerService.normalize).not.toHaveBeenCalled(); }); + + it("treats short 'по также' phrase as follow-up for address lane", async () => { + const calls: Array<{ message: string; options?: any }> = []; + const firstMessage = "\u043f\u043e\u043a\u0430\u0436\u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u044b \u043f\u043e \u0441\u0432\u043a \u0437\u0430 2020"; + const followupMessage = "\u043f\u043e \u0441\u0432\u043a \u0442\u0430\u043a\u0436\u0435 \u043f\u043b\u0438\u0437"; + + const addressQueryService = { + tryHandle: vi.fn(async (message: string, options?: any) => { + calls.push({ message, options }); + if (message === followupMessage && !options?.followupContext) { + return null; + } + if (message === followupMessage && options?.followupContext) { + return buildAddressLaneResult({ + debug: { + ...buildAddressLaneResult().debug, + reasons: ["address_action_detected", "address_entity_detected", "address_followup_context_applied"] + } + }); + } + return buildAddressLaneResult(); + }) + } as any; + + const normalizerService = { + normalize: vi.fn(async () => ({ + assistant_reply: "normalizer_fallback_should_not_be_used", + reply_type: "partial_coverage", + debug: {} + })) + } as any; + + const sessions = new AssistantSessionStore(); + const service = new AssistantService( + normalizerService, + sessions as any, + {} as any, + { persistSession: vi.fn() } as any, + addressQueryService + ); + + const sessionId = `asst-address-followup-short-${Date.now()}`; + const first = await service.handleMessage({ + session_id: sessionId, + user_message: firstMessage, + useMock: true + } as any); + expect(first.ok).toBe(true); + expect(first.reply_type).toBe("factual"); + + const second = await service.handleMessage({ + session_id: sessionId, + user_message: followupMessage, + useMock: true + } as any); + + expect(second.ok).toBe(true); + expect(second.reply_type).toBe("factual"); + expect(calls).toHaveLength(2); + expect(calls[1].message).toBe(followupMessage); + expect(calls[1].options?.followupContext?.previous_intent).toBe("list_documents_by_counterparty"); + expect(calls[1].options?.followupContext?.previous_anchor_type).toBe("counterparty"); + expect(typeof calls[1].options?.followupContext?.previous_anchor_value).toBe("string"); + expect(String(calls[1].options?.followupContext?.previous_anchor_value ?? "").length).toBeGreaterThan(0); + expect(normalizerService.normalize).not.toHaveBeenCalled(); + }); }); diff --git a/llm_normalizer/backend/tests/assistantAddressLlmPredecompose.test.ts b/llm_normalizer/backend/tests/assistantAddressLlmPredecompose.test.ts index 322bebb..e6741e0 100644 --- a/llm_normalizer/backend/tests/assistantAddressLlmPredecompose.test.ts +++ b/llm_normalizer/backend/tests/assistantAddressLlmPredecompose.test.ts @@ -155,6 +155,8 @@ describe("assistant address llm pre-decompose candidate preference", () => { expect(response.debug?.fallback_rule_hit).toBeNull(); expect(response.debug?.sanitized_user_message).toBeTypeOf("string"); expect(response.debug?.tool_gate_decision).toBe("run_address_lane"); + expect(response.debug?.llm_predecompose_contract?.schema_version).toBe("address_llm_predecompose_contract_v1"); + expect(["unknown", "list_documents_by_counterparty"]).toContain(response.debug?.llm_predecompose_contract?.intent); }); it("applies deterministic fallback rule when llm fragment is unusable", async () => { @@ -214,6 +216,7 @@ describe("assistant address llm pre-decompose candidate preference", () => { expect(response.debug?.fallback_rule_hit).toBe("documents_counterparty_year_rewrite"); expect(response.debug?.sanitized_user_message).toContain("свк"); expect(response.debug?.tool_gate_decision).toBe("run_address_lane"); + expect(response.debug?.llm_predecompose_contract?.period?.scope).toBe("year"); }); it("keeps contract anchor in deterministic fallback when llm output is unusable", async () => { @@ -600,12 +603,81 @@ describe("assistant address llm pre-decompose candidate preference", () => { expect(response.reply_type).toBe("factual"); expect(calls).toHaveLength(1); expect(calls[0].message).toBe("по свк за весь период че есть"); + expect(response.debug?.llm_decomposition_attempted).toBe(true); expect(response.debug?.llm_decomposition_applied).toBe(false); - expect(response.debug?.llm_decomposition_reason).toBe("not_address_like"); + expect(response.debug?.llm_decomposition_reason).toBe("no_usable_fragment"); expect(response.debug?.fallback_rule_hit).toBeNull(); expect(response.debug?.tool_gate_decision).toBe("run_address_lane"); }); + it("uses llm canonical candidate as gate signal when regex path has no address markers", 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-llm-gate-signal", + ok: true, + normalized: { + schema_version: "normalized_query_v2_0_2", + user_message_raw: "svk gib list", + message_in_scope: true, + scope_confidence: "medium", + contains_multiple_tasks: false, + fragments: [ + { + fragment_id: "F1", + raw_fragment_text: "svk gib list", + normalized_fragment_text: "заказчики компании svk", + domain_relevance: "in_scope", + confidence: "medium", + execution_readiness: "no_route", + route_status: "no_route" + } + ] + }, + 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-llm-gate-signal-${Date.now()}`, + user_message: "svk gib list", + 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("заказчики компании svk"); + expect(response.debug?.llm_decomposition_attempted).toBe(true); + expect(response.debug?.llm_decomposition_applied).toBe(true); + expect(response.debug?.llm_canonical_candidate_detected).toBe(true); + expect(response.debug?.tool_gate_decision).toBe("run_address_lane"); + expect(["llm_canonical_candidate_detected", "address_mode_classifier_detected"]).toContain(response.debug?.tool_gate_reason); + }); + it("normalizes short ordinal year like '20й' in noisy docs phrasing", async () => { const calls: Array<{ message: string }> = []; const addressQueryService = { diff --git a/scripts/check_address_wave1_batch1_readiness.py b/scripts/check_address_wave1_batch1_readiness.py new file mode 100644 index 0000000..e959786 --- /dev/null +++ b/scripts/check_address_wave1_batch1_readiness.py @@ -0,0 +1,194 @@ +#!/usr/bin/env python3 +from __future__ import annotations + +import argparse +import datetime as dt +import json +from dataclasses import dataclass +from pathlib import Path +from typing import Any + + +REPO_ROOT = Path(__file__).resolve().parents[1] + + +@dataclass +class CheckItem: + name: str + status: str + details: str + + +def read_json(path: Path) -> dict[str, Any] | list[Any] | None: + try: + return json.loads(path.read_text(encoding="utf-8")) + except Exception: + return None + + +def check_file_exists(path: Path, name: str) -> CheckItem: + if path.exists(): + return CheckItem(name=name, status="PASS", details=str(path)) + return CheckItem(name=name, status="FAIL", details=f"missing: {path}") + + +def check_stress_baseline(path: Path) -> CheckItem: + payload = read_json(path) + if not isinstance(payload, dict): + return CheckItem("baseline_stress_102", "FAIL", f"invalid_json: {path}") + totals = payload.get("totals") + if not isinstance(totals, dict): + return CheckItem("baseline_stress_102", "FAIL", "totals_missing") + total = int(totals.get("questions_total", -1)) + strict = int(totals.get("strict_pass_count", -1)) + route = int(totals.get("route_pass_count", -1)) + if total == 102 and strict == 102 and route == 102: + return CheckItem( + "baseline_stress_102", + "PASS", + f"strict={strict}/{total}, route={route}/{total}", + ) + return CheckItem( + "baseline_stress_102", + "FAIL", + f"expected 102/102, got strict={strict}/{total}, route={route}/{total}", + ) + + +def check_followup_baseline(path: Path) -> CheckItem: + payload = read_json(path) + if not isinstance(payload, dict): + return CheckItem("baseline_followup_25", "FAIL", f"invalid_json: {path}") + totals = payload.get("totals") + if not isinstance(totals, dict): + return CheckItem("baseline_followup_25", "FAIL", "totals_missing") + total = int(totals.get("questions_total", -1)) + strict = int(totals.get("strict_pass_count", -1)) + route = int(totals.get("route_pass_count", -1)) + if total == 25 and strict == 25 and route == 25: + return CheckItem( + "baseline_followup_25", + "PASS", + f"strict={strict}/{total}, route={route}/{total}", + ) + return CheckItem( + "baseline_followup_25", + "FAIL", + f"expected 25/25, got strict={strict}/{total}, route={route}/{total}", + ) + + +def check_nightly(path: Path) -> CheckItem: + payload = read_json(path) + if not isinstance(payload, dict): + return CheckItem("nightly_regression_green", "FAIL", f"invalid_json: {path}") + overall_ok = bool(payload.get("overall_ok")) + packs = payload.get("packs") + if not isinstance(packs, list): + return CheckItem("nightly_regression_green", "FAIL", "packs_missing") + bad = [] + for pack in packs: + if not isinstance(pack, dict): + continue + name = str(pack.get("pack") or "unknown") + if not bool(pack.get("runner_ok")) or not bool(pack.get("validator_ok")) or not bool(pack.get("comparator_ok")): + bad.append(name) + if overall_ok and not bad: + return CheckItem("nightly_regression_green", "PASS", f"overall_ok=true, packs={len(packs)}") + return CheckItem("nightly_regression_green", "FAIL", f"overall_ok={overall_ok}, failed_packs={bad}") + + +def compute_ready(items: list[CheckItem]) -> bool: + return all(item.status == "PASS" for item in items) + + +def write_report(path: Path, items: list[CheckItem], ready: bool) -> None: + now = dt.datetime.now().astimezone().isoformat(timespec="seconds") + lines: list[str] = [] + lines.append("# Wave-1 Batch-1 Readiness Report") + lines.append("") + lines.append(f"- Generated at: `{now}`") + lines.append(f"- Decision: **{'READY_FOR_PHASE_A' if ready else 'NOT_READY'}**") + lines.append("") + lines.append("## Checks") + for item in items: + mark = "PASS" if item.status == "PASS" else "FAIL" + lines.append(f"- `{item.name}`: **{mark}** — {item.details}") + lines.append("") + lines.append("## Next Action") + if ready: + lines.append("- Start/continue Phase A for Batch-1 (domain card + acceptance set + implementation backlog).") + else: + lines.append("- Fix failed items above before coding Batch-1 runtime intents.") + + path.parent.mkdir(parents=True, exist_ok=True) + path.write_text("\n".join(lines) + "\n", encoding="utf-8") + + +def main() -> int: + parser = argparse.ArgumentParser(description="Check readiness for Step-4 Wave-1 Batch-1.") + parser.add_argument( + "--out", + default=str( + REPO_ROOT + / "docs" + / "ADDRESS" + / "address_query" + / "wave1_batch1_readiness_report_2026-04-02.md" + ), + ) + args = parser.parse_args() + + path_global = REPO_ROOT / "docs" / "ADDRESS" / "address_query" / "global_execution_checklist_v1.md" + path_step0 = REPO_ROOT / "docs" / "ADDRESS" / "address_query" / "step0_closeout_2026-04-02.md" + path_plan = REPO_ROOT / "docs" / "ADDRESS" / "address_query" / "domain_expansion_implementation_plan_v1.md" + path_general = REPO_ROOT / "docs" / "ADDRESS" / "address_query" / "general_domain_questions_analysis_plan_v1_2026-04-02.md" + path_probe = REPO_ROOT / "docs" / "ADDRESS" / "address_query" / "management_route_probe_report_g1_2026-04-02.md" + path_complex = REPO_ROOT / "docs" / "ADDRESS" / "address_query" / "complex_questions_status_and_reuse_map_2026-04-02.md" + path_stress = ( + REPO_ROOT + / "docs" + / "ADDRESS" + / "runs" + / "2026-04-02_Address_Slang_Live_Stress_2026-04-02_12-57-27" + / "run_summary.json" + ) + path_followup = ( + REPO_ROOT + / "docs" + / "ADDRESS" + / "runs" + / "2026-04-02_Address_Followup_Context_Chains_2026-04-02_19-15-Run5" + / "run_summary.json" + ) + path_nightly = ( + REPO_ROOT + / "docs" + / "ADDRESS" + / "runs" + / "2026-04-02_Address_Nightly_Regression_2026-04-02_17-35-00" + / "nightly_summary.json" + ) + + checks = [ + check_file_exists(path_global, "master_checklist_exists"), + check_file_exists(path_step0, "step0_closeout_exists"), + check_file_exists(path_plan, "step4_plan_exists"), + check_file_exists(path_general, "general_domain_analysis_exists"), + check_file_exists(path_probe, "group1_probe_report_exists"), + check_file_exists(path_complex, "complex_status_map_exists"), + check_stress_baseline(path_stress), + check_followup_baseline(path_followup), + check_nightly(path_nightly), + ] + + ready = compute_ready(checks) + out_path = Path(args.out) + write_report(out_path, checks, ready) + print(f"[ok] readiness_report={out_path}") + print(f"[ok] decision={'READY_FOR_PHASE_A' if ready else 'NOT_READY'}") + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/scripts/probe_address_general_domain_group1.py b/scripts/probe_address_general_domain_group1.py new file mode 100644 index 0000000..f1b4ace --- /dev/null +++ b/scripts/probe_address_general_domain_group1.py @@ -0,0 +1,510 @@ +#!/usr/bin/env python3 +""" +Batch-0 live probe for GENERAL DOMAIN Group-1 (Q1..Q5). + +Runs deterministic 1C queries against MCP execute endpoint and generates +a markdown report with route-level verdicts. +""" + +from __future__ import annotations + +import argparse +import datetime as dt +import json +import re +from collections import defaultdict +from dataclasses import dataclass +from pathlib import Path +from typing import Any +from urllib import request + + +REPO_ROOT = Path(__file__).resolve().parents[1] + + +def decode_mojibake(value: str) -> str: + text = str(value or "") + if not text: + return text + candidates = [text] + + try: + candidates.append(text.encode("latin1").decode("utf-8")) + except Exception: + pass + + try: + candidates.append(text.encode("cp1251").decode("utf-8")) + except Exception: + pass + + def score(s: str) -> int: + cyr = len(re.findall(r"[А-Яа-яЁё]", s)) + bad = len(re.findall(r"(?:Ð.|Ñ.|Р.|С.)", s)) + return cyr * 2 - bad + + return max(candidates, key=score) + + +def parse_number(cell: str) -> int | float | str: + source = str(cell).strip() + if source == "": + return "" + # Preserve leading-zero codes like "01", "002", "010" for account dictionaries. + if re.fullmatch(r"-?\d+", source) and not re.fullmatch(r"-?0\d+", source): + return int(source) + if re.fullmatch(r"-?\d+[.,]\d+", source): + return float(source.replace(",", ".")) + return source + + +def parse_text_table(data_text: str) -> list[dict[str, Any]]: + text = decode_mojibake(data_text).replace("\r", "").strip() + if not text: + return [] + + header_match = re.search(r"\{([^}]*)\}:", text) + if not header_match: + return [] + + raw_cols = header_match.group(1) + columns = [ + decode_mojibake(part.strip().strip('"')) + for part in raw_cols.split(",") + if part.strip() + ] + body = text[header_match.end() :].strip() + if not body: + return [] + + rows: list[dict[str, Any]] = [] + for line in body.split("\n"): + raw = line.strip() + if not raw: + continue + + parts: list[str] = [] + token = [] + in_quotes = False + i = 0 + while i < len(raw): + ch = raw[i] + if ch == '"': + if in_quotes and i + 1 < len(raw) and raw[i + 1] == '"': + token.append('"') + i += 2 + continue + in_quotes = not in_quotes + i += 1 + continue + if ch == "," and not in_quotes: + parts.append("".join(token).strip()) + token = [] + i += 1 + continue + token.append(ch) + i += 1 + parts.append("".join(token).strip()) + + row: dict[str, Any] = {} + for idx, col in enumerate(columns): + cell = decode_mojibake(parts[idx] if idx < len(parts) else "") + row[col] = parse_number(cell) + rows.append(row) + return rows + + +@dataclass +class QueryResult: + rows: list[dict[str, Any]] + error: str | None + + +def execute_query(endpoint: str, channel: str, query: str, limit: int) -> QueryResult: + url = f"{endpoint.rstrip('/')}/api/execute_query?channel={channel}" + payload = {"query": query, "limit": limit} + body = json.dumps(payload).encode("utf-8") + req = request.Request( + url, + data=body, + headers={"content-type": "application/json; charset=utf-8"}, + method="POST", + ) + try: + with request.urlopen(req, timeout=90) as resp: + content = resp.read().decode("utf-8", errors="replace") + except Exception as exc: + return QueryResult(rows=[], error=f"http_error: {exc}") + + try: + payload_obj = json.loads(content) + except Exception: + return QueryResult(rows=[], error=f"invalid_json_response: {content[:300]}") + + if payload_obj.get("success") is not True: + return QueryResult(rows=[], error=decode_mojibake(str(payload_obj.get("error") or "unknown_error"))) + + data = payload_obj.get("data") + if isinstance(data, list): + rows = [{decode_mojibake(str(k)): v for k, v in row.items()} for row in data if isinstance(row, dict)] + return QueryResult(rows=rows, error=None) + if isinstance(data, str): + return QueryResult(rows=parse_text_table(data), error=None) + if isinstance(data, dict) and isinstance(data.get("rows"), list): + rows = [{decode_mojibake(str(k)): v for k, v in row.items()} for row in data["rows"] if isinstance(row, dict)] + return QueryResult(rows=rows, error=None) + return QueryResult(rows=[], error=None) + + +def pick(row: dict[str, Any], *keys: str) -> Any: + for key in keys: + if key in row: + return row[key] + return None + + +def as_int(value: Any) -> int: + if isinstance(value, bool): + return int(value) + if isinstance(value, int): + return value + if isinstance(value, float): + return int(value) + try: + return int(str(value).replace(",", ".")) + except Exception: + return 0 + + +def normalize_ym(value: Any) -> str: + text = str(value or "").strip() + m = re.match(r"^(\d{4}-\d{2})-\d{2}", text) + if m: + return m.group(1) + return text + + +def normalize_account_code(value: Any) -> str: + code = str(value or "").strip().strip('"') + return code + + +def section_from_code(code: str) -> str | None: + m = re.match(r"^(\d{2})", code) + if not m: + return None + return m.group(1) + + +def top_rows(rows: list[dict[str, Any]], key: str, n: int = 10) -> list[dict[str, Any]]: + return sorted(rows, key=lambda r: as_int(r.get(key)), reverse=True)[:n] + + +def build_report( + out_path: Path, + endpoint: str, + channel: str, + run_ts: str, + q1_minmax: QueryResult, + q1_year_ops: QueryResult, + q2_year_docs: QueryResult, + q3_month_ops: QueryResult, + q4_doc_types: QueryResult, + q5_dt: QueryResult, + q5_kt: QueryResult, + q5_chart: QueryResult, +) -> None: + errors = [ + ("Q1.minmax", q1_minmax.error), + ("Q1.year_ops", q1_year_ops.error), + ("Q2.year_docs", q2_year_docs.error), + ("Q3.month_ops", q3_month_ops.error), + ("Q4.doc_types", q4_doc_types.error), + ("Q5.dt_accounts", q5_dt.error), + ("Q5.kt_accounts", q5_kt.error), + ("Q5.chart", q5_chart.error), + ] + hard_errors = [(name, err) for name, err in errors if err] + + q1_row = q1_minmax.rows[0] if q1_minmax.rows else {} + min_period = pick(q1_row, "МинПериод", "MinPeriod") + max_period = pick(q1_row, "МаксПериод", "MaxPeriod") + total_ops = as_int(pick(q1_row, "КоличествоОпераций", "Количество", "Count")) + + q1_year_top = [] + years_present: list[int] = [] + for row in q1_year_ops.rows: + year = as_int(pick(row, "Год", "Year")) + count = as_int(pick(row, "КоличествоОпераций", "Количество", "Count")) + if year > 0: + years_present.append(year) + q1_year_top.append((year, count)) + q1_year_top = sorted(q1_year_top, key=lambda x: x[1], reverse=True) + + q2_top = [] + for row in q2_year_docs.rows: + year = as_int(pick(row, "Год", "Year")) + docs = as_int(pick(row, "КоличествоДокументов", "Количество", "Count")) + if year > 0: + q2_top.append((year, docs)) + q2_top = sorted(q2_top, key=lambda x: x[1], reverse=True) + + q3_top = [] + for row in q3_month_ops.rows: + ym = normalize_ym(pick(row, "Месяц", "Month")) + ops = as_int(pick(row, "КоличествоОпераций", "Количество", "Count")) + if ym: + q3_top.append((ym, ops)) + q3_top = sorted(q3_top, key=lambda x: x[1], reverse=True) + + q4_top = [] + for row in q4_doc_types.rows: + doc_type = str(pick(row, "ТипДокумента", "DocumentType") or "").strip() + docs = as_int(pick(row, "КоличествоДокументов", "Количество", "Count")) + if doc_type: + q4_top.append((doc_type, docs)) + q4_top = sorted(q4_top, key=lambda x: x[1], reverse=True) + + section_totals: dict[str, int] = defaultdict(int) + for source in (q5_dt.rows, q5_kt.rows): + for row in source: + code = normalize_account_code(pick(row, "КодСчета", "Код", "AccountCode")) + count = as_int(pick(row, "КоличествоПроводок", "Количество", "Count")) + section = section_from_code(code) + if section is None: + continue + section_totals[section] += count + + section_names: dict[str, str] = {} + for row in q5_chart.rows: + code = normalize_account_code(pick(row, "Код", "Code")) + name = str(pick(row, "Наименование", "Name") or "").strip() + if re.fullmatch(r"\d{2}", code): + section_names[code] = name + + section_rows = sorted(section_totals.items(), key=lambda x: x[1], reverse=True) + section_top10 = section_rows[:10] + section_bottom10 = list(reversed(section_rows[-10:])) if section_rows else [] + + q1_verdict = "PASS" if q1_year_top and min_period and max_period else "PARTIAL" + q2_verdict = "PASS" if q2_top else "PARTIAL" + q3_verdict = "PASS" if q3_top else "PARTIAL" + q4_verdict = "PASS" if q4_top else "PARTIAL" + q5_verdict = "PASS" if section_top10 else "PARTIAL" + + lines: list[str] = [] + lines.append("# Management Route Probe Report — General Domain Group 1 (Q1–Q5)") + lines.append("") + lines.append(f"- Дата/время запуска: `{run_ts}`") + lines.append(f"- Endpoint: `{endpoint}`") + lines.append(f"- Channel: `{channel}`") + lines.append("- Контур: `question_mode=address_query`, Batch-0 route probes") + lines.append("") + if hard_errors: + lines.append("## Ошибки probe") + for name, err in hard_errors: + lines.append(f"- `{name}`: {err}") + lines.append("") + lines.append("## Вердикт по вопросам группы 1") + lines.append(f"- Q1 (покрытие периодов): **{q1_verdict}**") + lines.append(f"- Q2 (самый активный год по документам): **{q2_verdict}**") + lines.append(f"- Q3 (самый активный месяц по операциям): **{q3_verdict}**") + lines.append(f"- Q4 (наиболее частые типы документов): **{q4_verdict}**") + lines.append(f"- Q5 (наиболее/наименее заполненные разделы учета): **{q5_verdict}**") + lines.append("") + lines.append("## Q1 — Покрытие базы и активность по годам") + lines.append(f"- Мин период: `{min_period}`") + lines.append(f"- Макс период: `{max_period}`") + lines.append(f"- Всего операций в регистре: `{total_ops}`") + if years_present: + lines.append(f"- Годы с данными: `{min(years_present)}..{max(years_present)}` (уникальных лет: `{len(set(years_present))}`)") + lines.append("- Топ годов по количеству операций:") + for year, cnt in q1_year_top[:8]: + lines.append(f" - `{year}`: `{cnt}`") + lines.append("") + lines.append("## Q2 — Самый активный год по количеству документов") + lines.append("- Метрика: `COUNT(DISTINCT Регистратор)` по годам на `РегистрБухгалтерии.Хозрасчетный`.") + lines.append("- Топ годов:") + for year, cnt in q2_top[:8]: + lines.append(f" - `{year}`: `{cnt}`") + lines.append("- Вывод: route дает корректный ranking по документной активности в контуре движений.") + lines.append("") + lines.append("## Q3 — Самый активный месяц по количеству операций") + lines.append("- Метрика: `COUNT(*)` по `НАЧАЛОПЕРИОДА(Период, МЕСЯЦ)`.") + lines.append("- Топ месяцев:") + for ym, cnt in q3_top[:12]: + lines.append(f" - `{ym}`: `{cnt}`") + lines.append("") + lines.append("## Q4 — Наиболее частые типы документов") + lines.append("- Метрика: `COUNT(DISTINCT Регистратор)` по `ПРЕДСТАВЛЕНИЕ(ТИПЗНАЧЕНИЯ(Регистратор))`.") + lines.append("- Топ типов:") + for doc_type, cnt in q4_top[:12]: + lines.append(f" - `{doc_type}`: `{cnt}`") + lines.append("") + lines.append("## Q5 — Заполненность разделов учета") + lines.append("- Метод: агрегирование по первым двум цифрам кода счета (дебет + кредит).") + lines.append("- Топ разделов:") + for section, cnt in section_top10: + name = section_names.get(section, "(наименование не найдено в плане счетов)") + lines.append(f" - `{section}` `{name}`: `{cnt}`") + lines.append("- Разделы с минимальной активностью (среди использованных):") + for section, cnt in section_bottom10: + name = section_names.get(section, "(наименование не найдено в плане счетов)") + lines.append(f" - `{section}` `{name}`: `{cnt}`") + lines.append("") + lines.append("## Что подтверждено для продуктового плана") + lines.append("- `R01 period_coverage_profile`: подтвержден (Q1/Q3).") + lines.append("- `R02 document_type_usage_profile`: подтвержден (Q2/Q4).") + lines.append("- `Q5` закрывается route-контрактом через account-section aggregation; нужна фиксация правила для \"почти не используются\" (порог/квантиль).") + lines.append("") + lines.append("## Ограничения и требования к точности") + lines.append("- Q2/Q4 измеряются по `Регистратор` в движениях; это нужно явно закрепить как `movement-based document activity`.") + lines.append("- Для Q5 нельзя опираться только на raw счета: обязателен post-processing `section = account_code[:2]`.") + lines.append("- Есть записи с редкими/системными кодами (например off-balance); требуется whitelist/normalization policy для бизнес-отчета.") + lines.append("") + lines.append("## Следующий шаг Batch-0") + lines.append("- Зафиксировать route contracts для `R01` и `R02` в runtime docs.") + lines.append("- Добавить acceptance-вопросы Q1..Q5 в domain pack с жесткой проверкой метрик и сортировки.") + + out_path.parent.mkdir(parents=True, exist_ok=True) + out_path.write_text("\n".join(lines) + "\n", encoding="utf-8") + + +def main() -> int: + parser = argparse.ArgumentParser(description="Probe Group-1 routes for general management domain.") + parser.add_argument("--endpoint", default="http://127.0.0.1:6003") + parser.add_argument("--channel", default="default") + parser.add_argument( + "--out", + default=str( + REPO_ROOT + / "docs" + / "ADDRESS" + / "address_query" + / "management_route_probe_report_g1_2026-04-02.md" + ), + ) + args = parser.parse_args() + + q1_minmax_query = """ +ВЫБРАТЬ + МИНИМУМ(Движения.Период) КАК МинПериод, + МАКСИМУМ(Движения.Период) КАК МаксПериод, + КОЛИЧЕСТВО(*) КАК КоличествоОпераций +ИЗ + РегистрБухгалтерии.Хозрасчетный КАК Движения +""".strip() + + q1_year_ops_query = """ +ВЫБРАТЬ + ГОД(Движения.Период) КАК Год, + КОЛИЧЕСТВО(*) КАК КоличествоОпераций +ИЗ + РегистрБухгалтерии.Хозрасчетный КАК Движения +СГРУППИРОВАТЬ ПО + ГОД(Движения.Период) +УПОРЯДОЧИТЬ ПО + КоличествоОпераций УБЫВ +""".strip() + + q2_year_docs_query = """ +ВЫБРАТЬ + ГОД(Движения.Период) КАК Год, + КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Движения.Регистратор) КАК КоличествоДокументов +ИЗ + РегистрБухгалтерии.Хозрасчетный КАК Движения +СГРУППИРОВАТЬ ПО + ГОД(Движения.Период) +УПОРЯДОЧИТЬ ПО + КоличествоДокументов УБЫВ +""".strip() + + q3_month_ops_query = """ +ВЫБРАТЬ + НАЧАЛОПЕРИОДА(Движения.Период, МЕСЯЦ) КАК Месяц, + КОЛИЧЕСТВО(*) КАК КоличествоОпераций +ИЗ + РегистрБухгалтерии.Хозрасчетный КАК Движения +СГРУППИРОВАТЬ ПО + НАЧАЛОПЕРИОДА(Движения.Период, МЕСЯЦ) +УПОРЯДОЧИТЬ ПО + КоличествоОпераций УБЫВ +""".strip() + + q4_doc_types_query = """ +ВЫБРАТЬ + ПРЕДСТАВЛЕНИЕ(ТИПЗНАЧЕНИЯ(Движения.Регистратор)) КАК ТипДокумента, + КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Движения.Регистратор) КАК КоличествоДокументов +ИЗ + РегистрБухгалтерии.Хозрасчетный КАК Движения +СГРУППИРОВАТЬ ПО + ПРЕДСТАВЛЕНИЕ(ТИПЗНАЧЕНИЯ(Движения.Регистратор)) +УПОРЯДОЧИТЬ ПО + КоличествоДокументов УБЫВ +""".strip() + + q5_dt_query = """ +ВЫБРАТЬ + Движения.СчетДт.Код КАК КодСчета, + КОЛИЧЕСТВО(*) КАК КоличествоПроводок +ИЗ + РегистрБухгалтерии.Хозрасчетный КАК Движения +СГРУППИРОВАТЬ ПО + Движения.СчетДт.Код +УПОРЯДОЧИТЬ ПО + КоличествоПроводок УБЫВ +""".strip() + + q5_kt_query = """ +ВЫБРАТЬ + Движения.СчетКт.Код КАК КодСчета, + КОЛИЧЕСТВО(*) КАК КоличествоПроводок +ИЗ + РегистрБухгалтерии.Хозрасчетный КАК Движения +СГРУППИРОВАТЬ ПО + Движения.СчетКт.Код +УПОРЯДОЧИТЬ ПО + КоличествоПроводок УБЫВ +""".strip() + + q5_chart_query = """ +ВЫБРАТЬ + Счета.Код КАК Код, + Счета.Наименование КАК Наименование +ИЗ + ПланСчетов.Хозрасчетный КАК Счета +УПОРЯДОЧИТЬ ПО + Код +""".strip() + + q1_minmax = execute_query(args.endpoint, args.channel, q1_minmax_query, limit=10) + q1_year_ops = execute_query(args.endpoint, args.channel, q1_year_ops_query, limit=200) + q2_year_docs = execute_query(args.endpoint, args.channel, q2_year_docs_query, limit=200) + q3_month_ops = execute_query(args.endpoint, args.channel, q3_month_ops_query, limit=240) + q4_doc_types = execute_query(args.endpoint, args.channel, q4_doc_types_query, limit=120) + q5_dt = execute_query(args.endpoint, args.channel, q5_dt_query, limit=300) + q5_kt = execute_query(args.endpoint, args.channel, q5_kt_query, limit=300) + q5_chart = execute_query(args.endpoint, args.channel, q5_chart_query, limit=600) + + run_ts = dt.datetime.now(dt.timezone.utc).astimezone().isoformat(timespec="seconds") + out_path = Path(args.out) + build_report( + out_path=out_path, + endpoint=args.endpoint, + channel=args.channel, + run_ts=run_ts, + q1_minmax=q1_minmax, + q1_year_ops=q1_year_ops, + q2_year_docs=q2_year_docs, + q3_month_ops=q3_month_ops, + q4_doc_types=q4_doc_types, + q5_dt=q5_dt, + q5_kt=q5_kt, + q5_chart=q5_chart, + ) + print(f"[ok] report written: {out_path}") + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/scripts/run_address_live_slang_stress.py b/scripts/run_address_live_slang_stress.py index f3d7f6f..90e866d 100644 --- a/scripts/run_address_live_slang_stress.py +++ b/scripts/run_address_live_slang_stress.py @@ -242,6 +242,18 @@ def main() -> None: else: policy_pass = route_pass strict_pass = bool(policy_pass and reply_match) + predecompose_contract = debug.get("llm_predecompose_contract") + if not isinstance(predecompose_contract, dict): + predecompose_contract = {} + tool_gate_decision = debug.get("tool_gate_decision") or debug.get("address_tool_gate_decision") + tool_gate_reason = debug.get("tool_gate_reason") or debug.get("address_tool_gate_reason") + llm_decomposition_reason = debug.get("llm_decomposition_reason") + llm_decomposition_attempted = debug.get("llm_decomposition_attempted") + llm_canonical_candidate_detected = debug.get("llm_canonical_candidate_detected") + if llm_decomposition_attempted is None: + llm_decomposition_attempted = debug.get("address_llm_predecompose_attempted") + if llm_canonical_candidate_detected is None: + llm_canonical_candidate_detected = debug.get("address_llm_canonical_candidate_detected") row = { "index": index, @@ -277,9 +289,16 @@ def main() -> None: "rows_matched": debug.get("rows_matched"), "mcp_call_status": debug.get("mcp_call_status"), "limited_reason_category": debug.get("limited_reason_category"), + "llm_decomposition_attempted": llm_decomposition_attempted, "llm_decomposition_applied": debug.get("llm_decomposition_applied"), - "llm_decomposition_reason": debug.get("llm_decomposition_reason"), + "llm_decomposition_reason": llm_decomposition_reason, + "llm_canonical_candidate_detected": llm_canonical_candidate_detected, "fallback_rule_hit": debug.get("fallback_rule_hit"), + "tool_gate_decision": tool_gate_decision, + "tool_gate_reason": tool_gate_reason, + "predecompose_contract_intent": predecompose_contract.get("intent"), + "predecompose_contract_aggregation_profile": predecompose_contract.get("aggregation_profile"), + "predecompose_contract_period_scope": ((predecompose_contract.get("period") or {}) if isinstance(predecompose_contract.get("period"), dict) else {}).get("scope"), "debug_payload": debug, "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, @@ -297,15 +316,57 @@ def main() -> None: 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) route_health_counter = Counter(str(r.get("route_health")) for r in rows) + tool_gate_counter = Counter(str(r.get("tool_gate_decision")) for r in rows if r.get("tool_gate_decision") is not None) + tool_gate_reason_counter = Counter(str(r.get("tool_gate_reason")) for r in rows if r.get("tool_gate_reason") is not None) semantic_pass_count = sum(1 for r in rows if r.get("semantic_pass")) route_pass_count = sum(1 for r in rows if r.get("route_pass")) strict_pass_count = sum(1 for r in rows if r.get("strict_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_attempted_count = sum(1 for r in rows if r.get("llm_decomposition_attempted") is True) llm_decomposition_applied_count = sum(1 for r in rows if r.get("llm_decomposition_applied") is True) + llm_fallback_count = sum( + 1 for r in rows if str(r.get("llm_decomposition_reason") or "").startswith("fallback_rule_applied") + ) + tool_gate_blocked_count = sum(1 for r in rows if r.get("tool_gate_decision") == "skip_address_lane") avg_elapsed = round(statistics.mean(elapsed_values), 1) if elapsed_values else 0.0 + predecompose_intent_metrics: dict[str, dict[str, Any]] = {} + for row in rows: + intent_key = ( + str(row.get("actual_intent")).strip() + if row.get("actual_intent") not in {None, "", "None"} + else str(row.get("predecompose_contract_intent") or "unknown").strip() + ) + if not intent_key: + intent_key = "unknown" + bucket = predecompose_intent_metrics.setdefault( + intent_key, + { + "total": 0, + "llm_attempted": 0, + "llm_applied": 0, + "fallback_used": 0, + "tool_gate_blocked": 0, + }, + ) + bucket["total"] += 1 + if row.get("llm_decomposition_attempted") is True: + bucket["llm_attempted"] += 1 + if row.get("llm_decomposition_applied") is True: + bucket["llm_applied"] += 1 + if str(row.get("llm_decomposition_reason") or "").startswith("fallback_rule_applied"): + bucket["fallback_used"] += 1 + if row.get("tool_gate_decision") == "skip_address_lane": + bucket["tool_gate_blocked"] += 1 + + for bucket in predecompose_intent_metrics.values(): + attempted = int(bucket["llm_attempted"]) + total = int(bucket["total"]) + bucket["fallback_rate"] = round((bucket["fallback_used"] / attempted), 4) if attempted > 0 else 0.0 + bucket["gate_block_rate"] = round((bucket["tool_gate_blocked"] / total), 4) if total > 0 else 0.0 + summary = { "run_id": run_id, "generated_at": datetime.now().isoformat(timespec="seconds"), @@ -328,7 +389,14 @@ def main() -> None: "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_attempted_count": llm_decomposition_attempted_count, "llm_decomposition_applied_count": llm_decomposition_applied_count, + "llm_fallback_count": llm_fallback_count, + "llm_fallback_rate": round(llm_fallback_count / llm_decomposition_attempted_count, 4) + if llm_decomposition_attempted_count > 0 + else 0.0, + "tool_gate_blocked_count": tool_gate_blocked_count, + "tool_gate_blocked_rate": round(tool_gate_blocked_count / len(rows), 4) if rows else 0.0, "avg_elapsed_ms": avg_elapsed, }, "distributions": { @@ -338,6 +406,21 @@ def main() -> None: "mcp_call_status": dict(mcp_counter), "limited_reason_category": dict(limited_counter), "route_health": dict(route_health_counter), + "tool_gate_decision": dict(tool_gate_counter), + "tool_gate_reason": dict(tool_gate_reason_counter), + }, + "address_llm_predecompose_metrics": { + "overall": { + "llm_attempted": llm_decomposition_attempted_count, + "llm_applied": llm_decomposition_applied_count, + "fallback_used": llm_fallback_count, + "fallback_rate": round(llm_fallback_count / llm_decomposition_attempted_count, 4) + if llm_decomposition_attempted_count > 0 + else 0.0, + "tool_gate_blocked": tool_gate_blocked_count, + "gate_block_rate": round(tool_gate_blocked_count / len(rows), 4) if rows else 0.0, + }, + "by_intent": predecompose_intent_metrics, }, } @@ -379,7 +462,12 @@ def main() -> None: 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_attempted_count: {summary['totals']['llm_decomposition_attempted_count']}", f"- llm_decomposition_applied_count: {summary['totals']['llm_decomposition_applied_count']}", + f"- llm_fallback_count: {summary['totals']['llm_fallback_count']}", + f"- llm_fallback_rate: {summary['totals']['llm_fallback_rate']}", + f"- tool_gate_blocked_count: {summary['totals']['tool_gate_blocked_count']}", + f"- tool_gate_blocked_rate: {summary['totals']['tool_gate_blocked_rate']}", f"- avg_elapsed_ms: {summary['totals']['avg_elapsed_ms']}", "", "## Files",