4.4 KiB
4.4 KiB
Runtime Integration Plan (question_mode=address_query)
Дата среза: 2026-04-13
1) Цель
Поддерживать отдельный runtime-контур для быстрых address-запросов через MCP, без деградации deep-analysis path.
2) Фактический статус интеграции
Address lane уже встроен в AssistantService и включен feature-флагами по умолчанию:
FEATURE_ASSISTANT_ADDRESS_QUERY_V1=trueFEATURE_ASSISTANT_ADDRESS_QUERY_LLM_PREDECOMPOSE_V1=trueFEATURE_ASSISTANT_ADDRESS_QUERY_LIVE_V1=true
Ключевая оркестрация:
assistantService.ts:- L0 pre-decompose (LLM + deterministic fallback)
- tool-gate решение (
run_address_lane/skip_address_lane) - follow-up carryover context (сигнал берется из raw user message и pre-decompose effective message)
- вызов
addressQueryService.tryHandle(...)
3) Canonical Runtime Flow (actual)
- User message.
- L0 layer:
- message sanitization/cleanup;
- optional LLM pre-decompose (
normalizer_v2_0_2); - deterministic fallback rules;
- tool-gate decision.
addressQueryService:decomposeStage(mode/shape/intent/filters + follow-up merge)resolveStage(primary anchor + refinement from rows)execute(recipe select -> MCP query -> materialization/scope/filter)compose(FACTUAL_* или LIMITED_WITH_REASON)
- Unified debug payload в
AssistantService. - Если lane не обработал запрос - возврат в основной deep path.
4) Реализованные компоненты
src/services/address_runtime/decomposeStage.tssrc/services/address_runtime/resolveStage.tssrc/services/address_runtime/composeStage.tssrc/services/addressIntentResolver.tssrc/services/addressFilterExtractor.tssrc/services/addressRecipeCatalog.tssrc/services/addressMcpClient.tssrc/services/addressQueryService.ts
5) Intent Coverage (runtime)
Реализовано:
open_contracts_confirmed_as_of_datelist_open_contracts(diagnostic heuristic)list_payables_counterpartieslist_receivables_counterpartiesaccount_balance_snapshotopen_items_by_counterparty_or_contractlist_documents_by_counterpartybank_operations_by_counterpartylist_documents_by_contractbank_operations_by_contractdocuments_forming_balance
Не реализовано (V1):
account_turnover_snapshotlist_documents_by_type
6) Execution and Debug Guarantees
- whitelist recipes only
- read-only MCP
- no free-form query generation
- explicit stage statuses:
no_raw_rowsraw_rows_received_but_not_materializedmaterialized_but_not_anchor_matchedmaterialized_but_filtered_out_by_recipematched_non_empty
- legacy compatibility field:
mcp_call_status_legacy
7) Runtime Fallbacks (actual)
- Missing required filters ->
LIMITED_WITH_REASON(missing_anchor) - Recipe missing ->
LIMITED_WITH_REASON(recipe_visibility_gap) - MCP error / lane disabled ->
LIMITED_WITH_REASON(execution_error) - Period auto-broaden for by-counterparty/by-contract docs+bank intents
- Anchor mismatch fallback для document/bank intents
- Contract-docs recovery path через bank-like rows
- Для
open_contracts_confirmed_as_of_datesilent degrade вlist_open_contractsзапрещен; при недоступности exact-ответа допускается толькоLIMITED_WITH_REASON.
8) Compound Scope
COMPOUND_FACTUAL_QUERYсейчас detection-only.- Multi-intent decomposition execution не выполняется в runtime V1.
9) Known Gaps for Step-4
- введены шаблоны (
domain_card_template_v1.md,domain_acceptance_question_set_template_v1.md), но domain-specific cards/sets для новых доменов еще не заведены; - P1 intents (
turnover,documents_by_type) в runtime отсутствуют; - CI pipeline интеграция nightly еще не подключена (локальный nightly через Task Scheduler уже работает).
10) Acceptance Baseline (must keep)
- stress pack:
102/102(run2026-04-02_Address_Slang_Live_Stress_2026-04-02_12-57-27) - follow-up pack:
25/25(run2026-04-02_Address_Followup_Context_Chains_2026-04-02_19-15-Run5) strict_policy=routefalse_factual_rate=0