# Address Scenario Matrix (V1) Дата: 2026-03-29 Режим: `question_mode=address_query` (отдельно от deep-analysis) ## Scope Этот сценарный слой покрывает только direct factual lookup без тяжелого reasoning-chain: - список объектов; - агрегаты (остатки/долги/хвосты); - drilldown от агрегата к документам. Не покрывается в V1: - "почему так произошло"; - доказательная причинно-следственная бухгалтерская интерпретация; - сложные chain proof-вопросы (должны уходить в deep-analysis path). ## Matrix | scenario_id | Пользовательский вопрос | intent | required_filters | optional_filters | target_entity_family | MCP recipe | expected_response_type | priority | |---|---|---|---|---|---|---|---|---| | AQ-P0-01 | Какие договоры не закрыты на текущую дату? | `list_open_contracts` | `as_of_date` | `organization`, `counterparty`, `limit`, `sort` | `NSI_CATALOG`, `ACCOUNTING_REGISTER`, `DOCUMENT` | `address.open_contracts.by_asof` | `FACTUAL_LIST` | P0 | | AQ-P0-02 | Кому мы должны денег на сегодня? | `list_payables_counterparties` | `as_of_date` | `organization`, `account`, `limit`, `sort` | `ACCOUNTING_REGISTER`, `DOCUMENT`, `DOCUMENT_JOURNAL` | `address.payables.counterparty_totals` | `FACTUAL_SUMMARY` | P0 | | AQ-P0-03 | Кто должен нам денег на сегодня? | `list_receivables_counterparties` | `as_of_date` | `organization`, `account`, `limit`, `sort` | `ACCOUNTING_REGISTER`, `DOCUMENT`, `DOCUMENT_JOURNAL` | `address.receivables.counterparty_totals` | `FACTUAL_SUMMARY` | P0 | | AQ-P0-04 | Какой остаток по счету 60 на дату? | `account_balance_snapshot` | `account`, `as_of_date` | `organization`, `limit`, `sort` | `ACCOUNTING_REGISTER`, `CHART_OF_ACCOUNTS` | `address.account.balance_snapshot` | `FACTUAL_SUMMARY` | P0 | | AQ-P0-05 | Какие хвосты висят по контрагенту X? | `open_items_by_counterparty_or_contract` | `counterparty`, `as_of_date` | `organization`, `contract`, `account`, `limit` | `ACCOUNTING_REGISTER`, `DOCUMENT` | `address.open_items.by_counterparty` | `FACTUAL_LIST` | P0 | | AQ-P0-06 | Какие хвосты висят по договору Y? | `open_items_by_counterparty_or_contract` | `contract`, `as_of_date` | `organization`, `counterparty`, `account`, `limit` | `ACCOUNTING_REGISTER`, `DOCUMENT`, `NSI_CATALOG` | `address.open_items.by_contract` | `FACTUAL_LIST` | P0 | | AQ-P0-07 | Покажи документы по контрагенту X за период | `list_documents_by_counterparty` | `counterparty`, `period_from`, `period_to` | `document_type`, `organization`, `limit`, `sort` | `DOCUMENT`, `DOCUMENT_JOURNAL` | `address.documents.by_counterparty` | `FACTUAL_LIST` | P0 | | AQ-P0-07B | Покажи банковские операции по контрагенту X за период | `bank_operations_by_counterparty` | `counterparty` | `period_from`, `period_to`, `organization`, `limit`, `sort` | `DOCUMENT_JOURNAL`, `ACCOUNTING_REGISTER` | `address.bank_ops.by_counterparty` | `FACTUAL_LIST` | P0 | | AQ-P0-08 | Покажи документы по договору Y за период | `list_documents_by_contract` | `contract`, `period_from`, `period_to` | `document_type`, `organization`, `limit`, `sort` | `DOCUMENT`, `DOCUMENT_JOURNAL`, `NSI_CATALOG` | `address.documents.by_contract` | `FACTUAL_LIST` | P0 | | AQ-P0-09 | Какие документы формируют этот остаток по счету 62? | `documents_forming_balance` | `account`, `as_of_date` | `organization`, `counterparty`, `contract`, `limit` | `ACCOUNTING_REGISTER`, `DOCUMENT` | `address.balance.drilldown_documents` | `FACTUAL_LIST` | P0 | | AQ-P1-10 | Дай обороты по счету 51 за период | `account_turnover_snapshot` | `account`, `period_from`, `period_to` | `organization`, `counterparty`, `limit` | `ACCOUNTING_REGISTER`, `DOCUMENT` | `address.account.turnover_snapshot` | `FACTUAL_SUMMARY` | P1 | | AQ-P1-11 | Дай список документов по типу "СписаниеСРасчетногоСчета" за период | `list_documents_by_type` | `document_type`, `period_from`, `period_to` | `organization`, `counterparty`, `contract`, `limit` | `DOCUMENT`, `DOCUMENT_JOURNAL` | `address.documents.by_type` | `FACTUAL_LIST` | P1 | | AQ-P2-12 | Покажи технические константы конфигурации | `unsupported_for_v1` | - | - | `CONSTANT` | - | `LIMITED_WITH_REASON` | P2 | ## Сценарные правила - Если вопрос распознается как `address_query`, ответ строится только через recipe-based MCP path. - Если обязательные фильтры не извлечены, вернуть `LIMITED_WITH_REASON` с указанием недостающих параметров. - Если вопрос требует causal/proof reasoning, перевести в deep-analysis path. - Для `as_of_date` по умолчанию используется текущая дата runtime (на момент этого документа: 2026-03-29), если пользователь явно не задал дату. ## Runtime status note (M2.3c) Implemented in live runtime now: - `list_documents_by_counterparty` - `bank_operations_by_counterparty` - `documents_forming_balance` Still not implemented in runtime: - `list_documents_by_contract` Stage diagnostic note: - strict account intents still show `raw_rows_received > 0`, but `rows_after_account_scope = 0`; - counterparty intents now have curated `matched_non_empty` cases after resolver/filter tuning; - account family still needs account-scope/materialization fix before first stable non-empty account case.