АДРЕСНЫЙ РЕЖИМ -ADDRESS:Шаг 1 - ЛЛМ ФЕРСТ + feat(address): стабилизация wave1 dynamic resolver контрагентов, follow-up carryover и актуализация docs/tests

This commit is contained in:
2026-04-02 23:11:49 +03:00
parent 53716e548e
commit 88094c09f8
243 changed files with 94296 additions and 181 deletions
@@ -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
@@ -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
}
]
}
@@ -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). |
@@ -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
}
}
}