7.2 KiB
7.2 KiB
Query Recipes V1 (Address Query)
Дата: 2026-04-02
Контур: question_mode=address_query (live-first, whitelist only)
1) Safe Access Contract
Каноническая цепочка исполнения:
intent -> filters -> recipe -> MCP -> materialization -> factual/limited
Ограничения:
- LLM не генерирует свободные SQL/1C-запросы.
- Runtime выбирает только
recipe_idиз статического каталога. - Если фильтры/якоря невалидны или не подтверждены, возвращается
LIMITED_WITH_REASON.
2) Entity Families (runtime focus)
ACCOUNTING_REGISTER(РегистрБухгалтерии.Хозрасчетный)DOCUMENT(СписаниеСРасчетногоСчета,ПоступлениеНаРасчетныйСчет, документные строки)DOCUMENT_JOURNALNSI_CATALOG(договоры, контрагенты)CHART_OF_ACCOUNTS
3) Filter Catalog (runtime)
| filter | type | required_when (runtime) | notes |
|---|---|---|---|
period_from |
date (YYYY-MM-DD) |
периодные выборки | начало окна |
period_to |
date (YYYY-MM-DD) |
периодные выборки | конец окна |
as_of_date |
date (YYYY-MM-DD) |
balance/drilldown/open-items | для account intents defaulted если не задан |
organization |
string | optional | passthrough-filter |
counterparty |
string | by-counterparty intents | допускается heuristic extraction |
contract |
string | by-contract intents | допускается heuristic extraction |
account |
string (60, 62.01, ...) |
account intents | strict token normalization |
document_type |
string | optional (пока ограниченно используется) | runtime V1 не строит отдельный by-type intent |
document_ref |
string | optional | point lookup |
status |
string | optional | reserved |
limit |
int | optional | extractor default: 20 |
sort |
enum | optional | period_desc / period_asc |
4) Runtime Recipe Catalog (actual)
| 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 |
address_open_items_by_party_or_contract_v1 |
open_items_by_counterparty_or_contract |
открытые позиции по party/contract | - (service guard: нужен counterparty OR contract) |
as_of_date, counterparty, contract, limit |
movements |
preferred |
address_documents_by_counterparty_v1 |
list_documents_by_counterparty |
документы по контрагенту | counterparty |
period_from, period_to, as_of_date, organization, limit, sort |
bank_docs |
preferred |
address_bank_operations_by_counterparty_v1 |
bank_operations_by_counterparty |
банковские операции по контрагенту | counterparty |
period_from, period_to, as_of_date, organization, limit, sort |
bank_docs |
preferred |
address_documents_by_contract_v1 |
list_documents_by_contract |
документы по договору | contract |
period_from, period_to, as_of_date, organization, counterparty, limit, sort |
movements |
preferred |
address_bank_operations_by_contract_v1 |
bank_operations_by_contract |
банковские операции по договору | contract |
period_from, period_to, as_of_date, organization, counterparty, limit, sort |
movements |
preferred |
address_documents_forming_balance_v1 |
documents_forming_balance |
drilldown документов, формирующих остаток | account, as_of_date |
organization, counterparty, contract, period_from, period_to, limit, sort |
movements |
strict |
address_movements_account_snapshot_v1 |
account_balance_snapshot |
snapshot движений по счету | account (as_of_date defaulted in extractor) |
as_of_date, period_from, period_to, limit |
movements |
strict |
5) Limit and Scope Policy (actual)
- Базовый 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.
- Для all-time запросов
documents/bank by *runtime поднимает limit до max. - Для account intents при явном
accountlimit поднимается до200.
6) Stage Status Taxonomy (runtime)
skippederrorno_raw_rowsraw_rows_received_but_not_materializedmaterialized_but_not_anchor_matchedmaterialized_but_filtered_out_by_recipematched_non_empty
Legacy совместимость:
mcp_call_status_legacy=materialized_but_not_matchedдля двух split-статусов materialized-*.
7) Runtime Fallback Behaviors (actual)
- При
list_documents_by_contractи пустом документном отборе, но с anchor rows:- fallback на банковские строки по договору или на anchor rows.
- Для
documents/bank by *при пустом заданном периоде:- auto-broaden периода до доступных данных (
period_window_auto_broadened_to_available_data).
- auto-broaden периода до доступных данных (
- Для
documents/bank by *при anchor mismatch:- factual fallback на ближайшие строки (
anchor_not_matched_fallback_rows) вместо silent empty.
- factual fallback на ближайшие строки (
8) Result Modes
FACTUAL_LISTFACTUAL_SUMMARYLIMITED_WITH_REASON
Фактическая реализация composeStage сейчас отдает:
FACTUAL_SUMMARYдляaccount_balance_snapshot,period_coverage_profile,document_type_and_account_section_profile;- для остальных factual intents —
FACTUAL_LIST.
9) Guardrails
- whitelist recipes only
- read-only MCP
- no free-form query generation
- no silent source substitution