# ADDRESS Query Docs Дата: 2026-04-08 Статус синхронизации: актуализировано по текущему коду в `llm_normalizer/backend/src/services/*`. ## Актуальный статус (2026-04-08) - Этап стабилизации закрыт под `strict_policy=route`. - Step-0 pre-prod rails закрыт (reference-domain + nightly automation). - Этап 3 (универсализация value-вопросов общего домена) закрыт на уровне кода и targeted-тестов. - Batch-1 domain live-gate закрыт: `strict 28/28` `docs/ADDRESS/runs/2026-04-03_Address_Domain_General_B1_PhaseC_LiveGate_R3/run_summary.json` - Batch-3 value live-gate закрыт: `strict 33/33` `docs/ADDRESS/runs/2026-04-03_Address_Domain_General_B3_Value_LiveGate_R2/run_summary.json` - Global nightly comparator после фиксов закрыт (`overall_ok=true`, comparator PASS): `docs/ADDRESS/runs/2026-04-03_Address_Nightly_Regression_Post_AnchorHardening_R6/nightly_summary.json` - Ручной контрольный nightly (`2026-04-08 10:29`) зафиксировал точечный flake: - `stress_102`: `101/102` (провал `S019`, `materialized_but_not_anchor_matched`) - `followup_25`: `25/25` - run: `docs/ADDRESS/runs/2026-04-08_Address_Nightly_Regression_2026-04-08_10-29-08/nightly_summary.json` - Повторный контрольный nightly (`2026-04-08 10:51`) закрыт в `PASS`: - `stress_102`: `102/102` - `followup_25`: `25/25` - comparator: `PASS` - run: `docs/ADDRESS/runs/2026-04-08_Address_Nightly_Regression_2026-04-08_10-51-20/nightly_summary.json` - Batch-2 lifecycle закрыт до `Phase C` (domain + global gates PASS): - domain card: `domain_general_batch2_lifecycle_card_v1.md` - backlog closeout: `step4_wave1_batch2_phaseA_backlog_v1.md` - domain live-gate: `docs/ADDRESS/runs/2026-04-08_Address_Batch2_Lifecycle_FullGate_PhaseC_PostFix2/run_summary.json` (`strict 36/36`) - targeted code gate: `addressQueryRuntimeM23.test.ts + assistantAddressFollowupContext.test.ts = 223/223`, `build=PASS` - global non-regression: `docs/ADDRESS/runs/2026-04-08_Address_Nightly_Regression_2026-04-08_13-19-24/nightly_summary.json` (`stress 102/102`, `followup 25/25`, comparator PASS) - Принят `domain scope freeze`: новые домены временно не расширяем; фокус смещен на Step-5 (архитектура + UX + качество ответов). - Step-5 bootstrap (2026-04-08): - UX compose first-line direct-answer patch внедрен; - targeted tests: `220/220 + 3/3`; - live smoke: `docs/ADDRESS/runs/2026-04-08_Address_Step5_UX_Smoke_v2/run_summary.json` (`strict 6/6`). - Step-5 living router increment (2026-04-08): - added `FEATURE_ASSISTANT_LIVING_CHAT_ROUTER_V1` (default `true`); - added chat mode (`chat`) for non-data conversational messages with safe fallback to deep pipeline; - added OpenAI-compatible `chat()` in `OpenAIResponsesClient` (with local `/responses` -> `/chat/completions` fallback). - Финальный stress-pack: `102/102` `docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_12-57-27/run_summary.json` - Финальный follow-up pack: `25/25` `docs/ADDRESS/runs/2026-04-02_Address_Followup_Context_Chains_2026-04-02_19-15-Run5/run_summary.json` - Актуальный nightly regression (green): `docs/ADDRESS/runs/2026-04-08_Address_Nightly_Regression_2026-04-08_13-19-24/nightly_summary.json` - Task Scheduler: `NDC_ADDRESS_Nightly_Regression` временно `Disabled` (ручной режим до стабилизации infra-канала). - Текущий production-контур: `question_mode=address_query`, live-first через MCP. - Следующий этап: `Step-5` Architecture + UX Quality (LLM-first валидация входа, улучшение пользовательского ответа, без расширения domain scope). ## Что реально реализовано в коде (срез 2026-04-08) Поддерживаемые intents в runtime: - `period_coverage_profile` (Wave-1 B1, gate-closed) - `document_type_and_account_section_profile` (Wave-1 B1, pre-gate) - `counterparty_population_and_roles` (Wave-1 B1, pre-gate) - `counterparty_activity_lifecycle` (Wave-1 B2, gate-closed) - `contract_usage_overview` (Wave-1 B1, gate-closed) - `customer_revenue_and_payments` (Wave-1 B3 value, gate-closed) - `supplier_payouts_profile` (Wave-1 B3 value, gate-closed) - `contract_usage_and_value` (Wave-1 B3 value, gate-closed) - `list_open_contracts` - `list_payables_counterparties` - `list_receivables_counterparties` - `account_balance_snapshot` - `open_items_by_counterparty_or_contract` - `list_documents_by_counterparty` - `bank_operations_by_counterparty` - `list_documents_by_contract` - `bank_operations_by_contract` - `documents_forming_balance` Ключевой scope-лимит: - `COMPOUND_FACTUAL_QUERY` пока detection-only (без multi-intent execution). - management/value intents реализованы в коде и закрыты через domain live-gate (Batch-1/Batch-3). - глобальный comparator на `102 + 25` закрыт в `PASS` (nightly R6). - для value-ranking ответов действует дефолт: `top-20` (если пользователь явно не запросил другой лимит). - `account_turnover_snapshot` и `list_documents_by_type` не реализованы в runtime V1. ## Основные документы - `address_scenario_matrix.md` - актуальная матрица сценариев `question -> intent -> recipe_id`. - `query_recipes_v1.md` - фактический каталог runtime recipes и их контрактов. - `runtime_readiness_matrix_v1.md` - статус готовности сценариев по текущему коду. - `address_runtime_contracts.md` - актуальный debug/output контракт address lane. - `runtime_integration_plan.md` - фактическая схема интеграции в `assistantService`. - `address_architecture_contract_v1.md` - guardrails `Decompose -> Resolve -> Execute -> Compose`. - `global_execution_checklist_v1.md` - release-gate и шаги этапа. - `stage_closeout_2026-04-02.md` - закрытие этапа стабилизации. - `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`. - `step5_architecture_ux_quality_plan_v1_2026-04-08.md` - план `Step-5` (LLM-first input validation, UX, качество ответов). - `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. - `stage3_value_universalization_closeout_2026-04-03.md` - закрытие этапа 3 по value-вопросам общего домена (профит, тестовый gate, остаточные риски). - `wave1_batch1_batch3_live_gate_report_2026-04-03.md` - фактический отчет по live-gate Batch-1/Batch-3 и статусу глобального regression/comparator (PASS в R6). - `project_status_rails_graph_2026-04-08.md` - визуальный граф текущего статуса рельсов (закрытые гейты, operational-контур, точка входа в Batch-2). - `domain_general_batch2_lifecycle_card_v1.md` - domain card для Batch-2 lifecycle (`Q8..Q13 + Q26 + Q27 + Q31 + Q32`). - `wave1_batch2_phaseA_probe_report_2026-04-08.md` - baseline probe Batch-2 с фактическими gap-ами перед Phase B. - `step4_wave1_batch2_phaseA_backlog_v1.md` - рабочий backlog Batch-2 (Phase A/B/C). - `wave1_batch2_phaseB_resolver_hotpass_2026-04-08.md` - фиксация закрытия resolver drift на критичных Batch-2 формулировках (`6/6`). - `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-валидации. Исторические и supporting docs: - `entity_map_1c_2020.md` - `address_query_bootstrap_report_2026-03-29.md` - `known_positive_live_suite_v1.md` - `data_aware_positive_acceptance_suite_v1.md` - `curated_positive_live_suite_v1.md` ## Step-0 Automation (rail tools) - `python scripts/validate_address_run_pack.py docs/ADDRESS/runs/` - `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-паки - `docs/ADDRESS/runs/2026-03-29_Address_Query_Entity_Inventory_2020/` - `docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_2_Documents_BankOps_By_Counterparty/` - `docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3_DocumentsFormingBalance_DataAwareAcceptance/` - `docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3A_Stage_Diagnostic_Materialization/` - `docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3B_AccountScope_Mode_Tuning/` - `docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3C_Resolver_Filter_Tuning_And_AccountScope_Audit/` - `docs/ADDRESS/runs/2026-04-01_Address_Query_Runtime_V1_M2_3D_Query_Variants_Expansion/` - `docs/ADDRESS/runs/2026-04-01_Address_Query_Runtime_V1_M2_3E_Stability_Hardening_AccountQueryScope/` - `docs/ADDRESS/runs/2026-04-01_Address_Query_Runtime_V1_M2_3F_LLM_Decompose_Coercion_Layer/` - `docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_12-57-27/` - `docs/ADDRESS/runs/2026-04-02_Address_Followup_Context_Chains_2026-04-02_19-15-Run5/` - `docs/ADDRESS/runs/2026-04-02_Address_Domain_ContractsOpenItems_Reference_Acceptance_2026-04-02_17-00-22/` - `docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_2026-04-02_17-35-00/` - Step-5 follow-up hardening (2026-04-08): - `address_dialog_continuation_contract_v2` for context continuation/switching. - Safe retry on retryable limited outcomes (`missing_anchor` / `empty_match`) using raw user message + preserved context. - Regression confirmation: `246/246` PASS (`assistantAddressFollowupContext`, `addressQueryRuntimeM23`, `assistantAddressLlmPredecompose`). - Step-5 living router validation (2026-04-08): - `assistantLivingRouter.test.ts`: `4/4` PASS - `assistantLivingChatMode.test.ts`: `1/1` PASS - build: PASS