АДРЕСНЫЙ РЕЖИМ - M2.3b тюнинг account-scope и диагностика стадий адресного рантайма

This commit is contained in:
2026-03-29 20:57:55 +03:00
parent c82ebd70b7
commit 2bf16de4ea
498 changed files with 2619075 additions and 3 deletions
BIN
View File
Binary file not shown.
@@ -0,0 +1,123 @@
# Этап 4 — Архитектурный аудит под MCP-first адресные запросы
Дата: 2026-03-29
Контур: `X:\1C\NDC_1C`
## 1) Цель аудита
Понять, в каком состоянии проект перед переходом на новый класс задач:
- "покажи незакрытые договоры";
- "найди, кому мы должны";
- "найди, кто должен нам";
- "покажи остаток по счету".
И зафиксировать, что нужно поменять в рантайме, чтобы это работало как **LLM-интерфейс к живой 1С через MCP**.
## 2) Подтвержденные факты (as-is)
### 2.1 Assistant runtime сейчас snapshot-first
Текущий `AssistantDataLayer` поднимает данные из фиксированного набора JSON-файлов из `docs/ARCH/2020экспорт`, а не из полного корпуса:
- `llm_normalizer/backend/src/services/assistantDataLayer.ts:3379-3386`
- `llm_normalizer/backend/src/services/assistantDataLayer.ts:3401`
Размер подключенного snapshot-пакета:
- `docs/ARCH/2020экспорт` = **1.82 MB** (10 файлов).
### 2.2 Полный monthly-корпус есть, но в assistant runtime не используется
Объем полного корпуса:
- `docs/ARCH/2020_monthly_company_asof_full/_tmp_ndjson` = **6732 MB** (12 файлов),
- средний файл ≈ **561 MB**.
Итог: по текущему коду assistant работает по сильно урезанному слою данных относительно доступного объема.
### 2.3 MCP/live есть, но как overlay и только на части маршрутов
Live-путь в assistant включается только если:
- `FEATURE_ASSISTANT_MCP_RUNTIME_V1=true`
(`llm_normalizer/backend/src/config.ts:90-100`)
и только для маршрутов:
- `hybrid_store_plus_live`
- `live_mcp_drilldown`
(`llm_normalizer/backend/src/services/assistantDataLayer.ts:2863`)
Для `store_canonical` live не используется.
### 2.4 Claim-bound live план в `assistantDataLayer` ориентирован на 3 семейства
`buildLiveMcpCallPlan(...)` имеет claim-ветки:
- `prove_fixed_asset_amortization_coverage` (`assistantDataLayer.ts:348`)
- `prove_vat_chain_completeness` (`assistantDataLayer.ts:396`)
- `prove_rbp_tail_state` (`assistantDataLayer.ts:460`)
Остальное уходит в `claim_type: null` + generic live probe (`assistantDataLayer.ts:444`).
Это не покрывает "простые адресные запросы" как отдельный runtime-класс.
### 2.5 Route-дисциплина сейчас заточена под Stage 4 глубинные цепочки
В `routeHintAdapter` есть жесткие query-class rules:
- `exact_object_trace -> live_mcp_drilldown` (`routeHintAdapter.ts:86-87`)
- `canonical_fact_lookup -> store_canonical` (`routeHintAdapter.ts:149-150`)
В результате простые lookup-вопросы по умолчанию тяготеют к `store_canonical` (snapshot), а не к MCP-first.
### 2.6 Postgres в assistant runtime фактически не активен
По проекту:
- в `.env.example` дефолт `CANONICAL_DB_URL=sqlite:///...`
(`.env.example:18`, `README.md:89`)
- `canonical_layer/store.py` поддерживает и SQLite, и Postgres через SQLAlchemy
(`canonical_layer/store.py:55`, `canonical_layer/store.py:59`)
На момент аудита:
- локально есть `data/canonical_store.db` (SQLite);
- активного процесса `postgres` не обнаружено.
Важно: текущий `llm_normalizer/backend` **не использует** `canonical_layer` store напрямую в assistant execution path.
## 3) Главный технический вывод
Зафиксирован статус:
**SNAPSHOT_PRIMARY_WITH_OPTIONAL_LIVE_OVERLAY_CONFIRMED**
То есть:
- live-инфраструктура есть;
- но архитектурно основной путь ассистента по-прежнему snapshot-first;
- адресные "быстрые" бизнес-запросы как отдельный MCP-first runtime-класс пока не оформлены.
## 4) Что точно не бьется с новой задачей
1. `store_canonical` = snapshot path, а нам нужен live-first для адресных запросов.
2. Нет отдельного address-intent и address-query planner.
3. Нет acceptance-метрик для "быстрого доступа к сущностям" (не reasoning-heavy).
4. Нет отдельного answer contract под tabular/list-ответы для live lookup.
## 5) Рамка изменения (без слома Stage 4 deep path)
Меняем не всю архитектуру, а добавляем новый lane:
- `address_query_runtime` как отдельный класс в существующем assistant pipeline;
- приоритет источника для этого класса: `live_mcp` (mandatory), snapshot только как явно маркированный fallback;
- Stage 4 deep chain path оставляем как есть.
## 6) Финальный verdict аудита
**MCP_INFRA_EXISTS_BUT_ADDRESS_RUNTIME_NOT_IMPLEMENTED**
Новый функционал реализуем через отдельный MCP-first address lane, без тотального рефакторинга текущего Stage 4 chain runtime.
@@ -0,0 +1,125 @@
# Target Architecture — MCP-first Address Queries (Stage 4)
Дата: 2026-03-29
## 1) Что вводим
Добавляем в текущий assistant runtime новый режим:
- `question_mode = address_query`
Это не замена deep-chain логики Stage 4, а параллельный "быстрый" lane для адресных вопросов.
## 2) Типы вопросов для первого релиза (Address V1)
Минимальный набор:
1. `list_open_contracts`
2. `list_payables_counterparties` (кому мы должны)
3. `list_receivables_counterparties` (кто должен нам)
4. `account_balance_snapshot` (остатки по счету / счетам)
5. `open_items_by_counterparty_or_contract` (незакрытые хвосты по контрагенту/договору)
## 3) Принцип источников данных
Для `address_query`:
- primary source: `MCP/live` (обязательно);
- snapshot-source: только fallback с явной маркировкой;
- запрещено молча подменять live на snapshot.
Правило ответа:
- если live недоступен: честный `DATA_UNAVAILABLE_LIVE`;
- если live доступен, но пусто: честный `NO_MATCH_FOR_FILTERS`;
- если live дал строки: `FACTUAL_LIST`/`FACTUAL_SUMMARY`.
## 4) Pipeline (встраивание в текущую архитектуру)
Новая ветка поверх текущего пайплайна:
1. `Normalizer` -> определяет `question_mode=address_query` и `address_intent`.
2. `AddressIntentResolver` -> фиксирует intent + обязательные фильтры (period/account/counterparty/contract).
3. `AddressQueryPlanner` -> выбирает MCP recipe (query template + params).
4. `McpExecutor` -> исполняет 1..N live-вызовов.
5. `AddressResultMaterializer` -> нормализует строки в табличный вид + totals.
6. `AddressAnswerComposer` -> короткий ответ + список + ограничения.
## 5) MCP query recipes (контракт)
Для каждого intent хранится recipe:
- `recipe_id`
- `purpose`
- `query_template`
- `required_params`
- `optional_params`
- `output_schema`
- `sort/default_limit`
Примеры базовых рецептов:
- `address.open_contracts.by_period`
- `address.payables.counterparty_totals`
- `address.receivables.counterparty_totals`
- `address.balance.by_account`
- `address.open_items.by_counterparty_contract`
## 6) Контракт ответа (Address mode)
Форматы:
1. `FACTUAL_LIST`
Короткий вывод + список строк (N top) + totals.
2. `FACTUAL_SUMMARY`
Если строк много: агрегат + top контрагенты + рекомендация уточнить фильтры.
3. `LIMITED_WITH_REASON`
Если live недоступен/ошибка/нехватка фильтров.
Обязательные поля debug:
- `question_mode`
- `address_intent`
- `recipe_id`
- `required_filters`
- `resolved_filters`
- `mcp_calls[]`
- `rows_fetched`
- `rows_matched`
- `result_mode`
## 7) Совместимость с текущим Stage 4
Не ломаем текущие chain-ветки:
- `settlements_60_62`, `vat_document_register_book`, `month_close_costs_20_44`, `fixed_asset_amortization` остаются.
- `address_query` включается только при явном address-intent.
Приоритет:
- если вопрос "why/how/prove/chain" -> текущий deep path;
- если вопрос "show/list/find/open/balance" -> address path.
## 8) Границы (что не делаем)
1. Не вводим новый proof engine.
2. Не расширяем домены beyond P0/P1 для V1.
3. Не делаем большой redesign routing.
4. Не зависим от Postgres как обязательного prereq для Address V1.
## 9) Техническое решение по Postgres
Коротко:
- Postgres оставляем как optional storage path для canonical layer;
- Address V1 делаем MCP-first без блокировки на миграцию в Postgres;
- отдельный migration pack можно делать потом, когда будет нужна materialized аналитика/кеши.
## 10) Архитектурный verdict
**ADDRESS_LANE_MCP_FIRST_IS_COMPATIBLE_WITH_CURRENT_STAGE4_RUNTIME**
То есть новый функционал можно внедрить итеративно, не вынося проект в тяжелый рефактор.
@@ -0,0 +1,148 @@
# Execution Plan — Address Runtime (Wave A..D)
Дата: 2026-03-29
Фокус: быстрый LLM-интерфейс к 1С сущностям через MCP/live.
## Общий подход
Делаем отдельный пакет, без большого неразмеченного рефакторинга:
- Wave A: baseline + contracts
- Wave B: runtime lane + planner
- Wave C: recipes + answer contract
- Wave D: live rerun + acceptance
## Wave A — Baseline & Contracts
### Цель
Зафиксировать source-of-truth и контракты перед кодом.
### Что делаем
1. Вводим `question_mode=address_query`.
2. Фиксируем V1 intents (5 штук).
3. Фиксируем `address_query_recipe` контракт.
4. Фиксируем обязательные debug поля и run-артефакты.
### Артефакты
- `docs/ADDRESS/runs/<run_id>/README.md`
- `run_summary.json`
- `address_intent_contract.md`
- `address_recipe_contract.md`
## Wave B — Runtime Lane
### Цель
Встроить новый lane в текущий assistant pipeline.
### Что делаем
1. Добавляем `AddressIntentResolver`.
2. Добавляем `AddressQueryPlanner`.
3. Добавляем source policy:
- `address_query => live_required=true`
- fallback на snapshot только явно и с limitation.
4. Разводим маршруты:
- deep reasoning path не трогаем;
- address path идет отдельной веткой.
### Acceptance
- Address intent корректно выделяется на контрольном наборе.
- Для address-intent не происходит тихого ухода в snapshot-first.
## Wave C — Query Recipes & Answer Contract
### Цель
Сделать рабочие адресные ответы по MCP.
### Что делаем
1. Реализуем минимум 5 MCP recipes (по intent V1).
2. Делаем materializer:
- rows -> normalized list,
- totals,
- stable output schema.
3. Добавляем `AddressAnswerComposer`:
- `FACTUAL_LIST`,
- `FACTUAL_SUMMARY`,
- `LIMITED_WITH_REASON`.
### Acceptance
- На expected-positive вопросах есть непустой factual output.
- Ошибки live не маскируются, false factual = 0.
## Wave D — Live Replay & Acceptance
### Цель
Проверить live-сценарии на реальных адресных вопросах.
### Контрольный набор (минимум)
1. Покажи незакрытые договоры.
2. Кому мы должны денег.
3. Кто должен нам денег.
4. Остатки по счету 60 (или 62) на текущую дату.
5. Незакрытые позиции по конкретному контрагенту.
### Метрики
1. `address_intent_resolution_rate >= 0.95`
2. `address_live_call_success_rate >= 0.95`
3. `address_non_empty_result_rate > 0` на positive-кейсах
4. `address_false_factual_rate = 0`
5. `address_snapshot_fallback_rate` (должна быть низкой и явной)
### Обязательные артефакты
- `chat_export_address_live.md`
- `debug_payloads/`
- `live_call_inventory.json`
- `address_result_matrix.md`
- `address_failure_breakdown.json`
## Run-структура (обязательно)
Все прогоны только сюда:
- `docs/ADDRESS/runs/<YYYY-MM-DD>_<PackName>/`
## Риски и анти-риски
Риск:
- смешение deep-chain и address-lane в одном вопросе.
Контрмера:
- rule-based switch по `question_mode` + explicit fallback в mixed-mode.
Риск:
- деградация в silent snapshot.
Контрмера:
- mandatory debug flag `live_required_for_mode=true`,
- limitation если live недоступен.
## Финальный критерий пакета
Пакет считается принятым, когда:
1. Address intent стабильно маршрутизируется в MCP-first lane.
2. На части live-кейсов система дает быстрый factual ответ.
3. Нет ложной "доказанности" и нет молчаливой подмены источника.
Verdict:
- `ADDRESS_RUNTIME_V1_READY`
- или `ADDRESS_RUNTIME_V1_READY_WITH_LIMITATIONS`
- или `ADDRESS_RUNTIME_V1_NOT_READY`
@@ -0,0 +1,31 @@
# ADDRESS Track (MCP-first)
Этот раздел фиксирует разворот Stage 4 в сторону "адресных" пользовательских запросов:
- быстро найти сущности;
- показать список и статус (есть/нет, закрыто/не закрыто);
- получить остатки/долги/контрагентов по текущему состоянию базы.
Ключевой принцип трека: **MCP/live-first**, а не snapshot-first.
## Документы
1. `1 - architecture_audit_mcp_first_address_runtime_2026-03-29.md`
Технический аудит текущего состояния и ограничений.
2. `2 - target_architecture_mcp_first_address_queries_stage4_2026-03-29.md`
Целевая архитектура под адресные запросы.
3. `3 - execution_plan_address_runtime_waveA_waveD_2026-03-29.md`
Пошаговый план реализации без большого рефакторинга.
## Раны и артефакты
Все новые прогоны и доказательные артефакты складываются в:
- `docs/ADDRESS/runs/`
Базовый аудитный run:
- `docs/ADDRESS/runs/2026-03-29_Address_Runtime_Pivot_Baseline/`
@@ -0,0 +1,36 @@
# Run README
Run ID: `2026-03-29_Address_Query_Entity_Inventory_2020`
Date: 2026-03-29
## Goal
Провести первичную системную инвентаризацию сущностей 1С по monthly snapshot-корпусу 2020 и подготовить базу для `address_query` runtime проектирования.
## Input
- `docs/ARCH/2020_monthly_company_asof_full/_tmp_ndjson`
- 12 monthly NDJSON files (2020-01..2020-12)
## Result
- processed_rows: `7039648`
- parse_errors: `0`
- total_entities: `286`
- family_count: `10`
## Artifacts
- `entity_inventory_full.json`
- `entity_inventory_p0_candidates.json`
- `entity_inventory_p1_candidates.json`
- `entity_inventory_p2_candidates.json`
- `entity_inventory_relation_support_sets.json`
- `entity_inventory_intent_support_sets.json`
- `entity_inventory_readable_summary.json`
## Notes
- В части labels исходного экспорта наблюдается cp1251/utf8 mojibake.
- Для проектных решений использовались устойчивые структурные признаки: family prefixes, relations, key/filter patterns, row density.
- Этот run используется как source input для файлов в `docs/ADDRESS/address_query/`.
@@ -0,0 +1,34 @@
{
"run_id": "2026-03-29_Address_Query_Entity_Inventory_2020",
"generated_at": "2026-03-29T14:40:00+03:00",
"status": "completed",
"scope": "entity_inventory_for_address_query_runtime_design",
"input": {
"source_dir": "docs/ARCH/2020_monthly_company_asof_full/_tmp_ndjson",
"files_count": 12,
"year": 2020
},
"metrics": {
"processed_rows": 7039648,
"parse_errors": 0,
"total_entities": 286,
"families": 10,
"p0_candidates": 118,
"p1_candidates": 61,
"p2_candidates": 107
},
"limits": [
"cp1251_utf8_mojibake_labels_present_in_source_exports",
"semantic_label_cleanup_required_before_production_recipe_binding"
],
"artifacts": [
"README.md",
"entity_inventory_full.json",
"entity_inventory_p0_candidates.json",
"entity_inventory_p1_candidates.json",
"entity_inventory_p2_candidates.json",
"entity_inventory_relation_support_sets.json",
"entity_inventory_intent_support_sets.json",
"entity_inventory_readable_summary.json"
]
}
+24
View File
@@ -0,0 +1,24 @@
# ADDRESS Query Docs
Дата: 2026-03-29
## Документы
- `entity_map_1c_2020.md` - полная карта сущностей по snapshot 2020.
- `address_scenario_matrix.md` - матрица сценариев (question -> intent -> recipe).
- `query_recipes_v1.md` - каталог фильтров и recipe-контракты.
- `runtime_integration_plan.md` - план встраивания `question_mode=address_query`.
- `address_runtime_contracts.md` - контракты runtime/debug/result для address lane.
- `runtime_readiness_matrix_v1.md` - матрица structural vs runtime readiness.
- `known_positive_live_suite_v1.md` - базовый template positive-evidence suite.
- `data_aware_positive_acceptance_suite_v1.md` - M2.3 canonical guide для curated live acceptance.
- `address_query_bootstrap_report_2026-03-29.md` - итоговая сводка bootstrap этапа.
## Связанные 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/`
@@ -0,0 +1,72 @@
# Address Query Bootstrap Report (Stage 4)
Дата: 2026-03-29
## 1) Что сделано в этом пакете
Подготовлен проектный комплект для перехода к отдельному runtime режиму `question_mode=address_query`:
- `entity_map_1c_2020.md` — полная карта сущностей по 12 snapshot 2020.
- `address_scenario_matrix.md` — матрица адресных сценариев и intent mapping.
- `query_recipes_v1.md` — draft рецептов, фильтров, result/answer контракт.
- `runtime_integration_plan.md` — схема интеграции в текущую архитектуру.
## 2) P0 сущности (для Address V1)
P0 ядро (direct factual lookup):
- `AccountingRegister_Хозрасчетный_RecordType`
- `AccountingRegister_Хозрасчетный`
- `Document_СписаниеСРасчетногоСчета`
- `Document_СписаниеСРасчетногоСчета_РасшифровкаПлатежа`
- `Document_ПоступлениеНаРасчетныйСчет`
- `Document_ПоступлениеНаРасчетныйСчет_РасшифровкаПлатежа`
- `Document_АктСверкиВзаиморасчетов*`
- `Catalog_ДоговорыКонтрагентов`
- `DocumentJournal_ДокументыПоставщиков`
- `DocumentJournal_ДокументыПокупателей`
- `DocumentJournal_БанковскиеВыписки`
- `ChartOfAccounts_Хозрасчетный`
Важно: `Catalog_Контрагенты`, `Catalog_Организации`, `Catalog_БанковскиеСчета` остаются обязательными измерениями для фильтров, хотя в auto-triage они помечены как P1.
## 3) P0 address-intents
- `list_open_contracts`
- `list_payables_counterparties`
- `list_receivables_counterparties`
- `account_balance_snapshot`
- `open_items_by_counterparty_or_contract`
Дополнительно в v1.1 (готово к быстрому включению):
- `list_documents_by_counterparty`
- `list_documents_by_contract`
- `documents_forming_balance`
## 4) Предлагаемый runtime flow
`incoming question -> mode classifier -> address intent -> filter extraction -> recipe selection -> MCP call -> result materialization -> factual composer`
Где:
- address lane работает `MCP/live-first`;
- deep-analysis lane остается отдельным и неизмененным;
- fallback всегда явный, без silent подмены источника.
## 5) Риски и ограничения (зафиксированы)
- В snapshot встречается cp1251/utf8 mojibake для части labels (требуется декодирование labels-map на этапе реализации).
- Для части сущностей нужен business resolver (name->id для контрагента/договора).
- Без whitelist recipe нельзя безопасно открывать свободный query builder.
## 6) Что идет в следующую итерацию (с бизнес-проработкой)
1. Утвердить final white-list P0 recipe (с бухгалтером/аналитиком).
2. Зафиксировать справочники нормализации фильтров (контрагент/договор/счет).
3. Включить `question_mode=address_query` в контракт normalizer и debug.
4. Сделать первый live rerun pack по 5 P0 вопросам.
## 7) Финальный вывод этого этапа
Архитектура проекта готова к добавлению отдельного address-query runtime без ломки deep-analysis. Основной технический вектор корректный: переход на `MCP/live-first` для простых адресных запросов с recipe-ограничениями.
@@ -0,0 +1,123 @@
# Address Runtime Contracts V1 (M2.3b)
Дата: 2026-03-29
## Runtime Policy
- Runtime lane is `data-agnostic`: no hardcoded counterparties/contracts/accounts from one concrete base.
- Acceptance lane is `data-aware`: positive cases are curated after exploratory live pass.
- Address lane remains MCP/live-first, whitelist-only, read-only.
## Input Contract
- `question_mode`: `address_query | deep_analysis | unsupported`
- `address_intent`: nullable enum
- `resolved_filters`: object
- `missing_filters`: string[]
## Debug Contract
- `detected_mode`
- `query_shape`
- `detected_intent`
- `runtime_readiness`
- `is_compound_query`
- `subqueries_count`
- `resolved_entities`
- `resolved_filters`
- `missing_filters`
- `selected_recipe_ids`
- `selected_recipe`
- `account_scope_mode`
- `account_scope_fallback_applied`
- resolver block:
- `anchor_type`
- `anchor_value_raw`
- `anchor_value_resolved`
- `resolver_confidence`
- `ambiguity_count`
- MCP/evidence flow block:
- `mcp_call_status`
- `rows_fetched`
- `raw_rows_received`
- `rows_after_account_scope`
- `rows_materialized`
- `rows_after_recipe_filter`
- `rows_matched`
- `raw_row_keys_sample`
- `materialization_drop_reason`
- `response_type`
- `limited_reason_category`
- `fallback_reason`
## Output Contract
### FACTUAL_LIST
- short summary
- rows[]
- totals
### FACTUAL_SUMMARY
- aggregate summary
- top rows
- optional drilldown hints
### LIMITED_WITH_REASON
- explicit reason code
- missing filters / data availability note
## Limited Reason Taxonomy
- `empty_match` - live-запрос выполнен, но по фильтру нет строк.
- `missing_anchor` - не хватает обязательного якоря (контрагент/договор/счет/период).
- `recipe_visibility_gap` - текущий recipe не материализует нужную аналитику.
- `execution_error` - ошибка MCP/инфраструктуры/feature-flag.
- `unsupported` - вопрос не покрыт address-intent V1.
## Runtime Readiness Status
- `LIVE_QUERYABLE`
- `LIVE_QUERYABLE_WITH_LIMITS`
- `REQUIRES_SPECIALIZED_RECIPE`
- `DEEP_ONLY`
- `UNKNOWN`
## MCP Stage Status Taxonomy (M2.3a)
- `skipped`
- `error`
- `no_raw_rows`
- `raw_rows_received_but_not_materialized`
- `materialized_but_not_matched`
- `matched_non_empty`
## Materialization Drop Reasons (M2.3a)
- `none`
- `dropped_by_account_scope_filter`
- `missing_period_and_registrator_fields`
- `missing_period_field`
- `missing_registrator_field`
- `unknown_row_shape`
## Account Scope Strategy (M2.3b)
- `strict` - account scope is mandatory and applied as a hard filter.
- `preferred` - account scope is applied first; if it yields zero rows while raw rows exist, runtime falls back to raw rows and continues matching.
## Compound Query Note
- `COMPOUND_FACTUAL_QUERY` currently remains detection-only.
- Multi-intent decomposition execution is planned for next increment.
## Guardrails
- whitelist recipes only
- read-only MCP
- no free-form query generation
- no silent source substitution
@@ -0,0 +1,58 @@
# 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.3b)
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`;
- preferred counterparty intents now reach `rows_materialized > 0`, but rows still drop at recipe/anchor filter stage;
- non-empty factual acceptance now requires resolver/filter tuning after materialization.
@@ -0,0 +1,51 @@
# Address V1 Acceptance Pack (Draft)
Дата: 2026-03-29
## Required files in run folder
- `README.md`
- `run_summary.json`
- `address_case_matrix.md`
- `chat_export_address_live.md`
- `debug_payloads/`
- `live_call_inventory_address.json`
- `before_after_metrics.json`
- `limitations_register.md`
## Minimal metrics
- `address_mode_routing_accuracy`
- `address_intent_resolution_rate`
- `required_filter_resolution_rate`
- `live_call_success_rate`
- `factual_non_empty_rate`
- `false_factual_rate`
## Two mandatory suites
### A) Runtime/Routing suite
Checks:
- mode routing;
- intent resolution;
- query shape detection;
- limited reason taxonomy;
- no false factual.
### B) Positive Evidence suite
Checks:
- non-empty factual responses on pre-selected known-positive live cases;
- recipe-level positive yield;
- anchor resolution quality for counterparty/contract/account.
## Acceptance targets (V1)
- `address_intent_resolution_rate >= 0.9`
- `live_call_success_rate >= 0.9`
- `false_factual_rate = 0`
- no deep-analysis regression
- known-positive factual hit-rate must be tracked separately from broad dry-run prompts
@@ -0,0 +1,89 @@
# Data-Aware Positive Acceptance Suite V1 (M2.3)
Date: 2026-03-29
## Purpose
Prove practical usefulness of address runtime on the current live base without introducing runtime hardcoding.
Policy:
- Runtime is data-agnostic.
- Acceptance is data-aware.
## How cases are selected
Phase A (mandatory): stage-diagnostic pass
1. Run 3-5 core scenarios and record row-stage counters:
- `raw_rows_received`
- `rows_after_account_scope`
- `rows_materialized`
- `rows_after_recipe_filter`
- `rows_matched`
2. Classify the first drop stage (`mcp_call_status` taxonomy).
3. Fix or narrow the dominant bottleneck before positive curation.
Phase B: curated positive pass
1. Run exploratory live pass by scenario groups.
2. Detect routes that return non-empty rows.
3. Curate acceptance cases from those routes.
4. Keep paired negative twins for safety checks.
No case values should be embedded into runtime rules.
## Required case matrix fields
- `case_id`
- `question`
- `intent`
- `query_shape`
- `filters`
- `resolver_path`
- `expected_recipe`
- `expected_response_type`
- `expected_non_empty`
- `notes`
## Mandatory scenario groups (M2.3)
- `account_balance_snapshot`
- `documents_by_counterparty`
- `bank_operations_by_counterparty`
- `documents_forming_balance`
## Metrics
- `data_aware_positive_case_count`
- `data_aware_positive_non_empty_rate`
- `data_aware_positive_factual_rate`
- `data_aware_positive_limited_rate`
- `data_aware_positive_false_factual_rate`
Hard rule:
- `data_aware_positive_false_factual_rate = 0`
Target (not hard gate across all bases):
- `data_aware_positive_non_empty_rate >= 0.60`
## Debug minimum for every case
- `detected_mode`
- `query_shape`
- `detected_intent`
- `selected_recipe`
- resolver block (`anchor_*`, `resolver_confidence`, `ambiguity_count`)
- flow block (`raw_rows_received`, `rows_materialized`, `rows_after_recipe_filter`, `rows_matched`)
- `runtime_readiness`
- `limited_reason_category`
## Output files in run-pack
- `data_aware_acceptance_case_matrix.md`
- `chat_export_data_aware_live.md`
- `live_call_inventory_address.json`
- `debug_payloads/`
- `run_summary.json`
@@ -0,0 +1,363 @@
# Entity Map 1C 2020 (Address Query baseline)
Generated at: 2026-03-29T14:18:09.325Z
Source: `docs/ARCH/2020_monthly_company_asof_full/_tmp_ndjson` (12 months, year 2020).
Processed rows: **7039648**, parse errors: **0**, unique entities: **286**.
## Family Summary
| entity_family | entity_count | rows_total | P0 | P1 | P2 |
|---|---:|---:|---:|---:|---:|
| INFORMATION_REGISTER | 1 | 6300000 | 0 | 1 | 0 |
| DOCUMENT | 77 | 202636 | 77 | 0 | 0 |
| ACCOUNTING_REGISTER | 2 | 190244 | 2 | 0 | 0 |
| NSI_CATALOG | 50 | 140050 | 3 | 47 | 0 |
| DOCUMENT_JOURNAL | 12 | 126868 | 0 | 12 | 0 |
| ACCUMULATION_REGISTER | 36 | 73022 | 36 | 0 | 0 |
| CHART_OF_ACCOUNTS | 1 | 4452 | 0 | 1 | 0 |
| CONSTANT | 95 | 1140 | 0 | 0 | 95 |
| CHART_OF_CHARACTERISTIC_TYPES | 3 | 1128 | 0 | 0 | 3 |
| OTHER | 9 | 108 | 0 | 0 | 9 |
## Readability and Data Quality Notes
- Snapshot corpus is complete for 2020 (12 files, ~6.7 GB NDJSON) and processed without parse errors.
- Some `entity_name` and field labels in raw export are in cp1251/utf8 mojibake (for example `Р РЋР С—Р С‘...`).
- For design decisions we use family/type prefixes and relation structure as source of truth; exact RU labels require final decoding pass during implementation.
## Address-Query Readiness (By Result)
### Ready for P0 address-query (MCP/live-first target)
- `AccountingRegister_Хозрасчетный_RecordType`
- `AccountingRegister_Хозрасчетный`
- `Document_СписаниеСРасчетногоСчета`
- `Document_СписаниеСРасчетногоСчета_РасшифровкаПлатежа`
- `Document_ПоступлениеНаРасчетныйСчет`
- `Document_ПоступлениеНаРасчетныйСчет_РасшифровкаПлатежа`
- `Document_АктСверкиВзаиморасчетов`
- `Document_АктСверкиВзаиморасчетов_ПоДаннымОрганизации`
- `Document_АктСверкиВзаиморасчетов_СписокСчетов`
- `Catalog_ДоговорыКонтрагентов` (technically high value for filters and grouping)
- `DocumentJournal_ДокументыПоставщиков` / `DocumentJournal_ДокументыПокупателей` / `DocumentJournal_БанковскиеВыписки` (fast drilldown index)
### Visible but needs additional interpretation before production address-query
- `Catalog_Контрагенты`
- `Catalog_Организации`
- `Catalog_БанковскиеСчета`
- `ChartOfAccounts_Хозрасчетный`
- `Catalog_СтатьиДвиженияДенежныхСредств`
- `Catalog_ПодразделенияОрганизаций`
- `Catalog_ОсновныеСредства`
- `Catalog_РасходыБудущихПериодов`
### Not suitable for direct address-query without deeper reasoning
- `CONSTANT_*` entities (configuration constants)
- `CHART_OF_CHARACTERISTIC_TYPES_*`
- `ExchangePlan_*` / auxiliary `OTHER` entities
- Narrow technical service entities without stable business lookup semantics
## Full Entity Catalog
Fields match requested contract: `entity_family`, `entity_name`, `source_snapshot`, `description`, `key_fields`, `filterable_fields`, `relations`, `query_suitability`, `priority`.
| entity_family | entity_name | source_snapshot | description | key_fields | filterable_fields | relations | query_suitability | priority |
|---|---|---|---|---|---|---|---|---|
| INFORMATION_REGISTER | InformationRegister_АдресныйКлассификатор | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Information register layer (classification/support data) | ТипАдресногоЭлемента, КодРегионаВКоде, Код, КодРайонаВКоде, КодГородаВКоде, КодНаселенногоПунктаВКоде, КодУлицыВКоде, Наименование (+3) | | | MEDIUM | P1 |
| ACCOUNTING_REGISTER | AccountingRegister_Хозрасчетный_RecordType | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accounting register layer (postings and movement facts). linked to account dimension; linked to document chain; linked to organization dimension | Period, Recorder, Recorder_Type, LineNumber, Active, AccountDr_Key, AccountCr_Key, Организация_Key (+22) | AccountCr@navigationLinkUrl, AccountCr_Key, AccountDr@navigationLinkUrl, AccountDr_Key, Active, LineNumber, Period, Recorder (+6) | register_relates_to_account -> Account:268564, register_recorded_by_document -> Document:136616, register_relates_to_organization -> Organization:136616, register_relates_to_department -> Department:12636 | HIGH | P0 |
| NSI_CATALOG | Catalog_Банки | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection. linked to account dimension | Ref_Key, DataVersion, DeletionMark, Predefined, Parent_Key, IsFolder, Code, Description (+5) | Code, Description, Parent@navigationLinkUrl, Parent_Key, Ref_Key | reference -> Unknown:59136, reference -> Account:39072 | MEDIUM | P1 |
| ACCOUNTING_REGISTER | AccountingRegister_Хозрасчетный | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accounting register layer (postings and movement facts). linked to document chain | Recorder, Recorder_Type, RecordSet | Recorder, Recorder_Type | register_recorded_by_document -> Document:53628 | HIGH | P0 |
| DOCUMENT_JOURNAL | DocumentJournal_ЖурналОпераций | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Document journal layer for document indexing and timeline access. linked to counterparties; linked to document chain; linked to organization dimension; linked to bank account dimension | Ref, Ref_Type, Date, DeletionMark, Number, Posted, Организация_Key, Информация (+4) | Date, Number, Posted, Ref, Ref_Type, Type, Информация_Type, Организация_Key | journal_refers_to_document -> Document:47105, journal_organization -> Organization:47105, reference -> Counterparty:31918, reference -> Unknown:9474, reference -> Warehouse:540, reference -> BankAccount:250 | MEDIUM | P1 |
| DOCUMENT_JOURNAL | DocumentJournal_ДокументыПоставщиков | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Document journal layer for document indexing and timeline access. linked to counterparties; linked to document chain; linked to organization dimension | Ref, Ref_Type, Date, DeletionMark, Number, Posted, Контрагент, Контрагент_Type (+14) | Date, Number, Posted, Ref, Ref_Type, Type, ВалютаДокумента_Key, ДоговорКонтрагента_Key (+3) | journal_counterparty -> Counterparty:45410, journal_refers_to_document -> Document:33666, journal_organization -> Organization:33666, journal_has_currency -> Currency:33666, journal_responsible -> ResponsiblePerson:24442 | MEDIUM | P1 |
| DOCUMENT | Document_СписаниеСРасчетногоСчета_РасшифровкаПлатежа | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to counterparties; linked to account dimension | Ref_Key, LineNumber, ДоговорКонтрагента_Key, Сделка, Сделка_Type, КурсВзаиморасчетов, СуммаПлатежа, КратностьВзаиморасчетов (+11) | LineNumber, Ref_Key, ДоговорКонтрагента_Key, Сделка_Type, СтатьяДвиженияДенежныхСредств_Key, СчетУчетаРасчетовПоАвансам_Key, СчетУчетаРасчетовСКонтрагентом_Key | document_line_has_account -> Account:110580, document_has_counterparty -> Counterparty:35928, document_has_cashflow_article -> CashflowArticle:23148 | HIGH | P0 |
| DOCUMENT_JOURNAL | DocumentJournal_БанковскиеВыписки | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Document journal layer for document indexing and timeline access. linked to counterparties; linked to document chain; linked to organization dimension; linked to bank account dimension | Ref, Ref_Type, Date, DeletionMark, Number, Posted, Организация_Key, БанковскийСчет_Key (+18) | Date, Number, Posted, Ref, Ref_Type, Type, БанковскийСчет_Key, Валюта_Key (+4) | journal_refers_to_document -> Document:27723, journal_organization -> Organization:27723, journal_bank_account -> BankAccount:27723, journal_has_currency -> Currency:27723, reference -> Unknown:27723, journal_counterparty -> Counterparty:24247 (+1) | MEDIUM | P1 |
| NSI_CATALOG | Catalog_КорреспонденцииСчетов | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection. linked to account dimension | Ref_Key, DataVersion, DeletionMark, Predefined, Code, Description, Содержание, СчетДт_Key (+8) | Code, Description, Ref_Key, СчетДт_Key, СчетКт_Key | reference -> Account:51096 | MEDIUM | P1 |
| DOCUMENT | Document_СписаниеСРасчетногоСчета | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to counterparties; linked to account dimension; linked to organization dimension | Ref_Key, DataVersion, DeletionMark, Number, Date, Posted, ДокументОснование, ДокументОснование_Type (+32) | Date, Number, Posted, Ref_Key, ВалютаВзаиморасчетовРаботника_Key, ВалютаДокумента_Key, ДоговорКонтрагента_Key, ДокументОснование_Type (+13) | document_belongs_to_organization -> Organization:48522, document_has_counterparty -> Counterparty:46736, document_has_currency -> Currency:24261, document_line_has_account -> Account:24261, reference -> Unknown:20912, document_has_responsible -> ResponsiblePerson:15587 (+1) | HIGH | P0 |
| ACCUMULATION_REGISTER | AccumulationRegister_НДСПредъявленный_RecordType | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accumulation register layer (balances/turnovers/tax movements). linked to counterparties; linked to account dimension; linked to document chain; linked to organization dimension | Period, Recorder, Recorder_Type, LineNumber, Active, RecordType, Организация_Key, СчетФактура (+16) | Active, LineNumber, Period, RecordType, Recorder, Recorder_Type, ДоговорКонтрагента_Key, ИсправленныйСчетФактура_Type (+4) | register_recorded_by_document -> Document:20874, register_relates_to_organization -> Organization:20874, register_relates_to_invoice -> Document:20874, register_relates_to_supplier -> Counterparty:20766, register_relates_to_account -> Account:18078 | HIGH | P0 |
| DOCUMENT | Document_ПоступлениеТоваровУслуг_Товары | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to account dimension | Ref_Key, LineNumber, ЕдиницаИзмерения_Key, КоличествоМест, Количество, Коэффициент, Номенклатура_Key, СтавкаНДС (+28) | LineNumber, Ref_Key, ДоговорКонтрагента_Key, ЕдиницаИзмерения_Key, Контрагент_Key, Номенклатура_Key, НомерГТД_Key, ПодразделениеЗатрат_Key (+10) | document_line_has_account -> Account:26016, reference -> Unknown:13008, document_line_has_item -> Item:13008 | HIGH | P0 |
| DOCUMENT | Document_АктСверкиВзаиморасчетов_ПоДаннымОрганизации | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to contracts; linked to document chain | Ref_Key, LineNumber, Дата, Документ, Документ_Type, Представление, Дебет, Кредит (+2) | LineNumber, Ref_Key, Договор_Key, Документ_Type | reference -> Document:12994, document_has_contract -> Contract:12994 | HIGH | P0 |
| NSI_CATALOG | Catalog_Номенклатура | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Parent_Key, IsFolder, Code, Description (+19) | Code, Description, Parent@navigationLinkUrl, Parent_Key, Ref_Key, БазоваяЕдиницаИзмерения_Key, Импортер_Key, КодРаздел7ДекларацииНДС_Key (+7) | reference -> Unknown:27780, reference -> Item:9732 | MEDIUM | P1 |
| DOCUMENT | Document_ОтражениеЗарплатыВРеглУчете_ОтражениеВУчете | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to account dimension | Ref_Key, LineNumber, СчетДт_Key, СубконтоДт1, СубконтоДт1_Type, СубконтоДт2, СубконтоДт2_Type, СубконтоДт3 (+23) | LineNumber, Ref_Key, ВидРасчета_Key, ПодразделениеДт_Key, ПодразделениеКт_Key, СубконтоДт1_Type, СубконтоДт2_Type, СубконтоДт3_Type (+6) | reference -> Unknown:23796, document_line_has_account -> Account:21096, document_relates_to_individual -> Individual:1404, document_has_department -> Department:792 | HIGH | P0 |
| ACCUMULATION_REGISTER | AccumulationRegister_НДСПредъявленный | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accumulation register layer (balances/turnovers/tax movements). linked to document chain | Recorder, Recorder_Type, RecordSet | Recorder, Recorder_Type | register_recorded_by_document -> Document:9420 | HIGH | P0 |
| DOCUMENT_JOURNAL | DocumentJournal_ДокументыПокупателей | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Document journal layer for document indexing and timeline access. linked to counterparties; linked to document chain; linked to organization dimension; linked to bank account dimension | Ref, Ref_Type, Date, DeletionMark, Number, Posted, Контрагент, Контрагент_Type (+12) | Date, Number, Posted, Ref, Ref_Type, Type, ВалютаДокумента_Key, ДоговорКонтрагента_Key (+3) | journal_counterparty -> Counterparty:16361, journal_refers_to_document -> Document:9011, journal_organization -> Organization:9011, journal_has_currency -> Currency:9011, journal_responsible -> ResponsiblePerson:7424, journal_counterparty -> BankAccount:250 | MEDIUM | P1 |
| DOCUMENT | Document_АктСверкиВзаиморасчетов_СписокСчетов | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to account dimension | Ref_Key, LineNumber, Счет_Key, УчаствуетВРасчетах, Счет@navigationLinkUrl | LineNumber, Ref_Key, Счет_Key | document_line_has_account -> Account:16248 | HIGH | P0 |
| DOCUMENT | Document_РеализацияТоваровУслуг_Товары | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to account dimension | Ref_Key, LineNumber, ЕдиницаИзмерения_Key, Количество, КоличествоМест, Коэффициент, Номенклатура_Key, СтавкаНДС (+24) | LineNumber, Ref_Key, ДокументОприходования_Type, ЕдиницаИзмерения_Key, КодТНВЭД_Key, Номенклатура_Key, НомерГТД_Key, ПереданныеСчетУчета_Key (+7) | document_line_has_account -> Account:39852, reference -> Unknown:7980, document_line_has_item -> Item:7980, reference -> Item:7980 | HIGH | P0 |
| NSI_CATALOG | Catalog_КлассификаторЗанятий | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Parent_Key, IsFolder, Code, КонтрольноеЧисло (+2) | Code, Parent@navigationLinkUrl, Parent_Key, Ref_Key | reference -> Unknown:7272 | MEDIUM | P1 |
| NSI_CATALOG | Catalog_ВидыОтправляемыхДокументов | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Parent_Key, IsFolder, Code, Description (+5) | Code, Description, Parent@navigationLinkUrl, Parent_Key, Ref_Key | reference -> Unknown:6828 | MEDIUM | P1 |
| DOCUMENT | Document_РегламентнаяОперация | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to organization dimension | Ref_Key, DataVersion, DeletionMark, Number, Date, Posted, Организация_Key, ВидОперации (+7) | Date, Number, Posted, Ref_Key, Организация_Key, Ответственный_Key | document_belongs_to_organization -> Organization:6469, document_has_responsible -> ResponsiblePerson:6469 | HIGH | P0 |
| ACCUMULATION_REGISTER | AccumulationRegister_НДФЛРасчетыСБюджетом_RecordType | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accumulation register layer (balances/turnovers/tax movements). linked to document chain; linked to organization dimension | Period, Recorder, Recorder_Type, LineNumber, Active, RecordType, ФизЛицо_Key, Организация_Key (+23) | Active, LineNumber, Period, RecordType, Recorder, Recorder_Type, КодДохода_Key, ОбособленноеПодразделение_Key (+3) | register_recorded_by_document -> Document:5567, register_relates_to_individual -> Individual:5567, register_relates_to_organization -> Organization:5567, register_relates_to_department -> Department:5567 | HIGH | P0 |
| DOCUMENT | Document_ПоступлениеТоваровУслуг | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to counterparties; linked to account dimension; linked to organization dimension; linked to invoice documents | Ref_Key, DataVersion, DeletionMark, Number, Date, Posted, Комментарий, Контрагент_Key (+32) | Date, Number, Posted, Ref_Key, ВалютаДокумента_Key, Грузоотправитель_Key, Грузополучатель_Key, ДоговорКонтрагента_Key (+8) | document_line_has_account -> Account:27441, document_has_counterparty -> Counterparty:16443, document_has_currency -> Currency:5481, document_belongs_to_organization -> Organization:5481, document_has_responsible -> ResponsiblePerson:5397, document_has_warehouse -> Warehouse:3190 (+2) | HIGH | P0 |
| DOCUMENT | Document_ЗарплатаКВыплатеОрганизаций_Зарплата | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events | Ref_Key, LineNumber, Физлицо_Key, Сумма, КомпенсацияЗаЗадержкуЗарплаты, ВыплаченностьЗарплаты, ВзысканнаяСумма, Физлицо@navigationLinkUrl | LineNumber, Ref_Key, Физлицо_Key | document_relates_to_individual -> Individual:4872 | HIGH | P0 |
| NSI_CATALOG | Catalog_ДоговорыКонтрагентов | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection. linked to contracts; linked to organization dimension | Ref_Key, DataVersion, DeletionMark, Predefined, Owner_Key, Parent_Key, IsFolder, Code (+26) | Code, Description, Owner@navigationLinkUrl, Owner_Key, Parent_Key, Ref_Key, ВалютаВзаиморасчетов_Key, ВидВзаиморасчетов_Key (+4) | reference -> Unknown:4696, reference -> Currency:4696, reference -> Organization:4696, reference -> Contract:4696 | HIGH | P0 |
| DOCUMENT | Document_СписаниеСРасчетногоСчета_ПеречислениеЗаработнойПлаты | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events | Ref_Key, LineNumber, Ведомость_Key, СуммаПлатежа, Физлицо_Key, СтатьяДвиженияДенежныхСредств_Key, Ведомость@navigationLinkUrl, Физлицо@navigationLinkUrl (+1) | LineNumber, Ref_Key, Ведомость_Key, СтатьяДвиженияДенежныхСредств_Key, Физлицо_Key | reference -> Unknown:4584, document_relates_to_individual -> Individual:4584, document_has_cashflow_article -> CashflowArticle:4584 | HIGH | P0 |
| CHART_OF_ACCOUNTS | ChartOfAccounts_Хозрасчетный | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Chart of accounts reference layer | Ref_Key, DataVersion, DeletionMark, Predefined, Parent_Key, Code, Description, Order (+10) | Code, Description, ExtDimensionTypes, OffBalance, Parent@navigationLinkUrl, Parent_Key, Ref_Key, Type | reference -> Unknown:3468, reference -> Currency:444, reference -> Department:240 | MEDIUM | P1 |
| DOCUMENT | Document_ПоступлениеТоваровУслуг_Услуги | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to account dimension | Ref_Key, LineNumber, Количество, Содержание, Номенклатура_Key, СтавкаНДС, Сумма, СуммаНДС (+23) | LineNumber, Ref_Key, Номенклатура_Key, ПодразделениеЗатрат_Key, Субконто1_Type, Субконто2_Type, Субконто3_Type, СубконтоНУ1_Type (+5) | document_line_has_account -> Account:10716, reference -> Unknown:8568, document_has_department -> Department:876, document_line_has_item -> Item:324 | HIGH | P0 |
| DOCUMENT | Document_ПоступлениеНаРасчетныйСчет_РасшифровкаПлатежа | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to counterparties; linked to account dimension | Ref_Key, LineNumber, ДоговорКонтрагента_Key, Сделка, Сделка_Type, КурсВзаиморасчетов, СуммаПлатежа, КратностьВзаиморасчетов (+20) | LineNumber, Ref_Key, ДоговорКонтрагента_Key, ПодразделениеКт_Key, Сделка_Type, СтатьяДвиженияДенежныхСредств_Key, СубконтоКт1_Type, СубконтоКт2_Type (+4) | document_line_has_account -> Account:16152, document_has_counterparty -> Counterparty:7128, document_has_cashflow_article -> CashflowArticle:3300 | HIGH | P0 |
| ACCUMULATION_REGISTER | AccumulationRegister_НДСЗаписиКнигиПокупок_RecordType | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accumulation register layer (balances/turnovers/tax movements). linked to counterparties; linked to account dimension; linked to document chain; linked to organization dimension | Period, Recorder, Recorder_Type, LineNumber, Active, Организация_Key, Поставщик_Key, СчетФактура (+23) | Active, LineNumber, Period, Recorder, Recorder_Type, ДоговорКонтрагента_Key, ДокументОплаты_Type, ИсправленныйСчетФактура_Type (+4) | register_recorded_by_document -> Document:3617, register_relates_to_organization -> Organization:3617, register_relates_to_supplier -> Counterparty:3617, register_relates_to_invoice -> Document:3617, register_relates_to_account -> Account:3533, register_relates_to_counterparty -> Counterparty:60 | HIGH | P0 |
| DOCUMENT | Document_ПередачаТоваров_Товары | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to account dimension | Ref_Key, LineNumber, Номенклатура_Key, Количество, СчетУчета_Key, СчетПередачи_Key, Номенклатура@navigationLinkUrl, СчетУчета@navigationLinkUrl (+1) | LineNumber, Ref_Key, Номенклатура_Key, СчетПередачи_Key, СчетУчета_Key | document_line_has_account -> Account:7128, document_line_has_item -> Item:3564 | HIGH | P0 |
| DOCUMENT | Document_СчетФактураПолученный_ДокументыОснования | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to document chain | Ref_Key, LineNumber, ДокументОснование, ДокументОснование_Type, НомерИсходногоДокумента, ДатаИсходногоДокумента, УчитыватьИсправлениеИсходногоДокумента, НомерИсправленияИсходногоДокумента (+5) | LineNumber, Ref_Key, ДокументОснование_Type | reference -> Document:3528 | HIGH | P0 |
| NSI_CATALOG | Catalog_РегламентированныеОтчеты | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Parent_Key, IsFolder, Code, Description (+10) | Code, Description, Parent@navigationLinkUrl, Parent_Key, Ref_Key, ВнешнийОтчетХранилище_Type, Периоды_Type | reference -> Unknown:3336 | MEDIUM | P1 |
| DOCUMENT | Document_ПоступлениеНаРасчетныйСчет | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to counterparties; linked to account dimension; linked to organization dimension | Ref_Key, DataVersion, DeletionMark, Number, Date, Posted, ВалютаДокумента_Key, ВидОперации (+32) | Date, Number, Posted, Ref_Key, ВалютаДокумента_Key, ДоговорКонтрагента_Key, ДокументОснование_Type, Контрагент_Key (+13) | document_has_counterparty -> Counterparty:8970, document_belongs_to_organization -> Organization:6924, document_has_currency -> Currency:3462, document_line_has_account -> Account:3462, document_has_responsible -> ResponsiblePerson:2276, reference -> Counterparty:1704 (+1) | HIGH | P0 |
| DOCUMENT_JOURNAL | DocumentJournal_ДокументыПоУчетуЗарплаты | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Document journal layer for document indexing and timeline access. linked to document chain; linked to organization dimension | Ref, Ref_Type, Date, DeletionMark, Number, Posted, Организация_Key, Месяц (+7) | Date, Number, Posted, Ref, Ref_Type, Type, Организация_Key, Ответственный_Key | journal_refers_to_document -> Document:3362, journal_organization -> Organization:3362, journal_responsible -> ResponsiblePerson:3350 | MEDIUM | P1 |
| DOCUMENT | Document_ПоступлениеИзПереработки_ИспользованныеМатериалы | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to account dimension | Ref_Key, LineNumber, Номенклатура_Key, Количество, СчетУчета_Key, СтатьяЗатрат_Key, ОтражениеВУСН, Номенклатура@navigationLinkUrl (+2) | LineNumber, Ref_Key, Номенклатура_Key, СтатьяЗатрат_Key, СчетУчета_Key | document_line_has_item -> Item:3324, document_line_has_account -> Account:3324, reference -> Unknown:3324 | HIGH | P0 |
| ACCUMULATION_REGISTER | AccumulationRegister_НДСЗаписиКнигиПокупок | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accumulation register layer (balances/turnovers/tax movements). linked to document chain | Recorder, Recorder_Type, RecordSet | Recorder, Recorder_Type | register_recorded_by_document -> Document:3312 | HIGH | P0 |
| DOCUMENT | Document_НДФЛиЕСНДоходыИНалоги_НДФЛИсчисленный13 | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events | Ref_Key, LineNumber, ФизЛицо_Key, ПериодРегистрации, МесяцНалоговогоПериода, Налог, КодПоОКАТО, КПП (+4) | LineNumber, Ref_Key, ФизЛицо_Key | document_relates_to_individual -> Individual:3283 | HIGH | P0 |
| DOCUMENT | Document_СчетНаОплатуПокупателю_Товары | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events | Ref_Key, LineNumber, Номенклатура_Key, Цена, Сумма, СтавкаНДС, СуммаНДС, Количество (+1) | LineNumber, Ref_Key, Номенклатура_Key | document_line_has_item -> Item:3180 | HIGH | P0 |
| DOCUMENT | Document_СчетФактураПолученный | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to counterparties; linked to account dimension; linked to document chain; linked to organization dimension; linked to invoice documents | Ref_Key, DataVersion, DeletionMark, Number, Date, Posted, ДатаИсправления, ВидСчетаФактуры (+32) | Date, Number, Posted, Ref_Key, ВалютаДокумента_Key, ДоговорКомитента_Key, ДоговорКонтрагента_Key, ДокументОснование_Type (+8) | document_has_counterparty -> Counterparty:6234, document_line_has_account -> Account:3117, reference -> Document:3117, document_belongs_to_organization -> Organization:3117, document_has_currency -> Currency:3117, document_has_responsible -> ResponsiblePerson:3105 (+1) | HIGH | P0 |
| ACCUMULATION_REGISTER | AccumulationRegister_СтраховыеВзносыСведенияОДоходах_RecordType | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accumulation register layer (balances/turnovers/tax movements). linked to document chain; linked to organization dimension | Period, Recorder, Recorder_Type, LineNumber, Active, ФизЛицо_Key, Организация_Key, ВидДохода_Key (+20) | Active, LineNumber, Period, Recorder, Recorder_Type, ВидДохода_Key, ВидРасчета_Key, ОбособленноеПодразделение_Key (+2) | register_recorded_by_document -> Document:3041, register_relates_to_individual -> Individual:3041, register_relates_to_organization -> Organization:3041, reference -> Unknown:3041, register_relates_to_department -> Department:3041 | HIGH | P0 |
| DOCUMENT | Document_НДФЛиЕСНДоходыИНалоги_СтраховыеВзносыСведенияОДоходах | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to account dimension | Ref_Key, LineNumber, ФизЛицо_Key, МесяцРасчетногоПериода, ВидДохода_Key, Результат, Скидка, ОблагаетсяЕНВД (+9) | LineNumber, Ref_Key, ВидДохода_Key, ФизЛицо_Key | document_relates_to_individual -> Individual:3041, document_line_has_account -> Account:3041, reference -> Unknown:3041 | HIGH | P0 |
| DOCUMENT | Document_КорректировкаРеализации_Товары | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to account dimension | Ref_Key, LineNumber, Номенклатура, Номенклатура_Type, Количество, Цена, Сумма, СтавкаНДС (+29) | LineNumber, Ref_Key, КодТНВЭД_Key, КодТНВЭДДоИзменения_Key, Номенклатура_Type, НомерГТД_Key, НомерГТДДоИзменения_Key, РНПТ_Key (+8) | document_line_has_account -> Account:9888, document_line_has_item -> Item:2472, reference -> Item:2472 | HIGH | P0 |
| DOCUMENT | Document_ЗарплатаКВыплатеОрганизаций | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to organization dimension | Ref_Key, DataVersion, DeletionMark, Number, Date, Posted, Организация_Key, ПериодРегистрации (+10) | Date, Number, Posted, Ref_Key, Организация_Key, Ответственный_Key, ПодразделениеОрганизации_Key | document_belongs_to_organization -> Organization:2444, document_has_responsible -> ResponsiblePerson:2432 | HIGH | P0 |
| ACCUMULATION_REGISTER | AccumulationRegister_НДФЛСведенияОДоходах_RecordType | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accumulation register layer (balances/turnovers/tax movements). linked to document chain; linked to organization dimension | Period, Recorder, Recorder_Type, LineNumber, Active, Организация_Key, ФизЛицо_Key, КодДохода_Key (+20) | Active, LineNumber, Period, Recorder, Recorder_Type, ВидРасчета_Key, КодВычета_Key, КодДохода_Key (+4) | register_recorded_by_document -> Document:2284, register_relates_to_organization -> Organization:2284, register_relates_to_individual -> Individual:2284, reference -> Unknown:2284, register_relates_to_department -> Department:2284 | HIGH | P0 |
| ACCUMULATION_REGISTER | AccumulationRegister_РасчетыНалоговыхАгентовСБюджетомПоНДФЛ_RecordType | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accumulation register layer (balances/turnovers/tax movements). linked to document chain; linked to organization dimension | Period, Recorder, Recorder_Type, LineNumber, Active, RecordType, ФизЛицо_Key, Организация_Key (+9) | Active, LineNumber, Period, RecordType, Recorder, Recorder_Type, Организация_Key, ФизЛицо_Key | register_recorded_by_document -> Document:2284, register_relates_to_individual -> Individual:2284, register_relates_to_organization -> Organization:2284 | HIGH | P0 |
| DOCUMENT | Document_НДФЛиЕСНДоходыИНалоги_НДФЛСведенияОДоходах | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events | Ref_Key, LineNumber, ФизЛицо_Key, ДатаДохода, МесяцНалоговогоПериода, ПериодРегистрации, КодДохода_Key, СуммаДохода (+12) | LineNumber, Ref_Key, КодВычета_Key, КодДохода_Key, ФизЛицо_Key | document_relates_to_individual -> Individual:2284, reference -> Unknown:2284 | HIGH | P0 |
| DOCUMENT | Document_НДФЛиЕСНДоходыИНалоги_НДФЛУдержанный | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events | Ref_Key, LineNumber, ФизЛицо_Key, ПериодРегистрации, МесяцНалоговогоПериода, СтавкаНалогообложения, Налог, КодПоОКАТО (+8) | LineNumber, Ref_Key, КодДохода_Key, ФизЛицо_Key | document_relates_to_individual -> Individual:2284 | HIGH | P0 |
| DOCUMENT | Document_ВыгрузкаРегламентированныхОтчетов_Выгрузки | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events | Ref_Key, LineNumber, Тип, ИмяФайла, Текст | LineNumber, Ref_Key | | HIGH | P0 |
| ACCUMULATION_REGISTER | AccumulationRegister_СтраховыеВзносыИсчисленные_RecordType | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accumulation register layer (balances/turnovers/tax movements). linked to document chain; linked to organization dimension | Period, Recorder, Recorder_Type, LineNumber, Active, ФизЛицо_Key, Организация_Key, ОбособленноеПодразделение_Key (+32) | Active, LineNumber, Period, Recorder, Recorder_Type, ОбособленноеПодразделение_Key, Организация_Key, ФизЛицо_Key | register_recorded_by_document -> Document:2039, register_relates_to_individual -> Individual:2039, register_relates_to_organization -> Organization:2039, register_relates_to_department -> Department:2039 | HIGH | P0 |
| DOCUMENT | Document_НДФЛиЕСНДоходыИНалоги_СтраховыеВзносы | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to account dimension | Ref_Key, LineNumber, ФизЛицо_Key, МесяцРасчетногоПериода, ФСС, ФФОМС, ТФОМС, ПФРДоПредельнойВеличины (+28) | LineNumber, Ref_Key, ФизЛицо_Key | document_relates_to_individual -> Individual:2039, document_line_has_account -> Account:2039 | HIGH | P0 |
| DOCUMENT | Document_ТребованиеНакладная_Материалы | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to account dimension | Ref_Key, LineNumber, Номенклатура_Key, Счет_Key, КоличествоМест, ЕдиницаИзмерения_Key, Коэффициент, Количество (+14) | LineNumber, Ref_Key, ДокументОприходования_Type, ЕдиницаИзмерения_Key, Номенклатура_Key, НоменклатурнаяГруппа_Key, НомерГТД_Key, ПодразделениеЗатрат_Key (+4) | reference -> Unknown:2388, document_line_has_item -> Item:1980, document_line_has_account -> Account:1980 | HIGH | P0 |
| NSI_CATALOG | Catalog_АдресныеСокращения | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Code, Description, Уровень, Сокращение | Code, Description, Ref_Key | | MEDIUM | P1 |
| ACCUMULATION_REGISTER | AccumulationRegister_НДСЗаписиКнигиПродаж_RecordType | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accumulation register layer (balances/turnovers/tax movements). linked to counterparties; linked to document chain; linked to organization dimension | Period, Recorder, Recorder_Type, LineNumber, Active, Организация_Key, Покупатель_Key, СчетФактура (+22) | Active, LineNumber, Period, Recorder, Recorder_Type, ДоговорКонтрагента_Key, ДокументОплаты_Type, ИсправленныйСчетФактура_Type (+3) | register_recorded_by_document -> Document:1791, register_relates_to_organization -> Organization:1791, register_relates_to_buyer -> Counterparty:1791, register_relates_to_invoice -> Document:1791, reference -> Document:84, register_relates_to_counterparty -> Counterparty:84 | HIGH | P0 |
| NSI_CATALOG | Catalog_Контрагенты | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection. linked to counterparties; linked to bank account dimension | Ref_Key, DataVersion, DeletionMark, Predefined, Parent_Key, IsFolder, Code, Description (+18) | Code, Description, Parent_Key, Ref_Key, ГоловнойКонтрагент_Key, ОсновноеКонтактноеЛицо_Key, ОсновнойБанковскийСчет_Key, ОсновнойДоговорКонтрагента_Key (+1) | reference -> Counterparty:2892, reference -> Individual:1668, reference -> BankAccount:372 | MEDIUM | P1 |
| DOCUMENT | Document_СчетФактураВыданный_ДокументыОснования | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to document chain | Ref_Key, LineNumber, ДокументОснование, ДокументОснование_Type, НомерИсходногоДокумента, ДатаИсходногоДокумента, УчитыватьИсправлениеИсходногоДокумента, НомерИсправленияИсходногоДокумента (+5) | LineNumber, Ref_Key, ДокументОснование_Type | reference -> Document:1668 | HIGH | P0 |
| DOCUMENT_JOURNAL | DocumentJournal_КассовыеДокументы | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Document journal layer for document indexing and timeline access. linked to counterparties; linked to account dimension; linked to document chain; linked to organization dimension; linked to bank account dimension | Ref, Ref_Type, Date, DeletionMark, Number, Posted, Организация_Key, Приход (+15) | Date, Number, Posted, Ref, Ref_Type, Type, Валюта_Key, ВидОперации_Type (+4) | journal_refers_to_document -> Document:1655, journal_organization -> Organization:1655, journal_has_currency -> Currency:1655, reference -> Unknown:1655, journal_account -> Account:1655, journal_counterparty -> Counterparty:841 (+2) | MEDIUM | P1 |
| DOCUMENT | Document_СчетНаОплатуПокупателю | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to counterparties; linked to account dimension; linked to organization dimension | Ref_Key, DataVersion, DeletionMark, Number, Date, Posted, АдресДоставки, СтруктурнаяЕдиница_Key (+26) | Date, Number, Posted, Ref_Key, ВалютаДокумента_Key, ДоговорКонтрагента_Key, Контрагент_Key, Организация_Key (+5) | document_has_counterparty -> Counterparty:3178, document_line_has_account -> Account:3178, document_belongs_to_organization -> Organization:3178, reference -> Unknown:1841, document_has_currency -> Currency:1589, document_has_responsible -> ResponsiblePerson:1577 (+1) | HIGH | P0 |
| DOCUMENT | Document_СчетФактураВыданный | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to counterparties; linked to account dimension; linked to document chain; linked to organization dimension; linked to invoice documents | Ref_Key, DataVersion, DeletionMark, Number, Date, Posted, ДатаВыставления, ВидСчетаФактуры (+32) | Date, Number, Posted, Ref_Key, ВалютаДокумента_Key, ГлавныйБухгалтер_Key, ДоговорКомитента_Key, ДоговорКонтрагента_Key (+10) | document_line_has_account -> Account:3104, document_has_counterparty -> Counterparty:3092, reference -> Unknown:3078, reference -> Document:1546, document_belongs_to_organization -> Organization:1546, document_has_currency -> Currency:1546 (+2) | HIGH | P0 |
| DOCUMENT | Document_ОперацияБух | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to organization dimension | Ref_Key, DataVersion, DeletionMark, Number, Date, Posted, Организация_Key, СуммаОперации (+13) | Date, Number, Posted, Ref_Key, Организация_Key, Ответственный_Key, СпособЗаполнения_Type, ТиповаяОперация_Type | document_belongs_to_organization -> Organization:1503, document_has_responsible -> ResponsiblePerson:1503, reference -> Unknown:1503 | HIGH | P0 |
| ACCUMULATION_REGISTER | AccumulationRegister_НДСЗаписиКнигиПродаж | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accumulation register layer (balances/turnovers/tax movements). linked to document chain | Recorder, Recorder_Type, RecordSet | Recorder, Recorder_Type | register_recorded_by_document -> Document:1488 | HIGH | P0 |
| ACCUMULATION_REGISTER | AccumulationRegister_РасходыПриУСН_RecordType | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accumulation register layer (balances/turnovers/tax movements). linked to counterparties; linked to account dimension; linked to document chain; linked to organization dimension | Period, Recorder, Recorder_Type, LineNumber, Active, RecordType, Организация_Key, СтатусыОплатыРасходовУСН (+24) | Active, LineNumber, Period, RecordType, Recorder, Recorder_Type, Валюта_Key, ДоговорКонтрагента_Type (+6) | register_recorded_by_document -> Document:1476, register_relates_to_organization -> Organization:1476, register_relates_to_account -> Document:1476, register_relates_to_currency -> Currency:1476, register_relates_to_account -> Account:1164, register_relates_to_counterparty -> Counterparty:972 (+3) | HIGH | P0 |
| DOCUMENT | Document_РеализацияТоваровУслуг | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to counterparties; linked to account dimension; linked to organization dimension | Ref_Key, DataVersion, DeletionMark, Number, Date, Posted, ВидОперации, БанковскийСчетОрганизации_Key (+32) | Date, Number, Posted, Ref_Key, БанковскийСчетОрганизации_Key, ВалютаДокумента_Key, ГлавныйБухгалтер_Key, Грузоотправитель_Key (+19) | document_line_has_account -> Account:9178, reference -> Unknown:5321, document_has_counterparty -> Counterparty:4290, document_belongs_to_organization -> Organization:1850, document_has_currency -> Currency:1430, document_has_responsible -> ResponsiblePerson:1411 (+1) | HIGH | P0 |
| DOCUMENT | Document_НДФЛиЕСНДоходыИНалоги_НДФЛПредоставленныеВычеты | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events | Ref_Key, LineNumber, ФизЛицо_Key, ПериодРегистрации, МесяцНалоговогоПериода, КодВычета_Key, ПримененныйВычет, КодПоОКАТО (+5) | LineNumber, Ref_Key, КодВычета_Key, ФизЛицо_Key | document_relates_to_individual -> Individual:1421, reference -> Unknown:1421 | HIGH | P0 |
| ACCUMULATION_REGISTER | AccumulationRegister_НДФЛПредоставленныеСтандартныеВычетыФизЛиц_RecordType | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accumulation register layer (balances/turnovers/tax movements). linked to document chain; linked to organization dimension | Period, Recorder, Recorder_Type, LineNumber, Active, ФизЛицо_Key, Организация_Key, МесяцНалоговогоПериода (+12) | Active, LineNumber, Period, Recorder, Recorder_Type, КодВычета_Key, ОбособленноеПодразделение_Key, Организация_Key (+2) | register_recorded_by_document -> Document:1405, register_relates_to_individual -> Individual:1405, register_relates_to_organization -> Organization:1405, reference -> Unknown:1405, register_relates_to_department -> Department:1405 | HIGH | P0 |
| DOCUMENT | Document_АктСверкиВзаиморасчетов | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to counterparties; linked to organization dimension | Ref_Key, DataVersion, DeletionMark, Number, Date, Posted, Организация_Key, Контрагент_Key (+22) | Date, Number, Posted, Ref_Key, ВалютаДокумента_Key, ДоговорКонтрагента_Key, Контрагент_Key, Организация_Key (+3) | document_has_counterparty -> Counterparty:2145, document_belongs_to_organization -> Organization:1456, document_has_currency -> Currency:1384, document_has_responsible -> ResponsiblePerson:996 | HIGH | P0 |
| ACCUMULATION_REGISTER | AccumulationRegister_РасчетыПоСтраховымВзносам | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accumulation register layer (balances/turnovers/tax movements). linked to document chain | Recorder, Recorder_Type, RecordSet | Recorder, Recorder_Type | register_recorded_by_document -> Document:1272 | HIGH | P0 |
| NSI_CATALOG | Catalog_ВычетыНДФЛ | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Code, Description, КодДляОтчетности2007, КодДляОтчетности2008 (+13) | Code, Description, Ref_Key | | MEDIUM | P1 |
| DOCUMENT | Document_ВыгрузкаРегламентированныхОтчетов_Основная | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events | Ref_Key, LineNumber, Основание_Key, НомерСтрокиТекстаВыгрузки, Основание@navigationLinkUrl | LineNumber, Ref_Key, Основание_Key | reference -> Unknown:1272 | HIGH | P0 |
| ACCUMULATION_REGISTER | AccumulationRegister_РасчетыПоСтраховымВзносам_RecordType | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accumulation register layer (balances/turnovers/tax movements). linked to account dimension; linked to document chain; linked to organization dimension | Period, Recorder, Recorder_Type, LineNumber, Active, RecordType, Организация_Key, ВидПлатежа (+16) | Active, LineNumber, Period, RecordType, Recorder, Recorder_Type, Организация_Key | register_recorded_by_document -> Document:1271, register_relates_to_organization -> Organization:1271, register_relates_to_account -> Account:1271 | HIGH | P0 |
| DOCUMENT_JOURNAL | DocumentJournal_УчетНДФЛиЕСН | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Document journal layer for document indexing and timeline access. linked to document chain; linked to organization dimension | Ref, Ref_Type, Date, DeletionMark, Number, Posted, Организация_Key, НалоговыйПериод (+7) | Date, Number, Posted, Ref, Ref_Type, Type, НалоговыйПериод_Type, Организация_Key (+1) | journal_refers_to_document -> Document:1242, journal_organization -> Organization:1242, journal_responsible -> ResponsiblePerson:1242 | MEDIUM | P1 |
| DOCUMENT | Document_НДФЛиЕСНДоходыИНалоги | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to organization dimension | Ref_Key, DataVersion, DeletionMark, Number, Date, Posted, Организация_Key, Комментарий (+16) | Date, Number, Posted, Ref_Key, Организация_Key, Ответственный_Key | document_belongs_to_organization -> Organization:1242, document_has_responsible -> ResponsiblePerson:1242 | HIGH | P0 |
| NSI_CATALOG | Catalog_ДоходыНДФЛ | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Code, Description, СтавкаНалогообложенияРезидента, КодДляОтчетности (+2) | Code, Description, Ref_Key | | MEDIUM | P1 |
| ACCUMULATION_REGISTER | AccumulationRegister_КнигаУчетаДоходовИРасходов_RecordType | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accumulation register layer (balances/turnovers/tax movements). linked to document chain; linked to organization dimension | Period, Recorder, Recorder_Type, LineNumber, Active, Организация_Key, Графа4, Графа5 (+11) | Active, LineNumber, Period, Recorder, Recorder_Type, Организация_Key | register_recorded_by_document -> Document:996, register_relates_to_organization -> Organization:996 | HIGH | P0 |
| DOCUMENT | Document_РегламентированныйОтчет | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to organization dimension | Ref_Key, DataVersion, DeletionMark, Date, Posted, ИсточникОтчета, НаименованиеОтчета, Организация_Key (+23) | Date, Posted, Ref_Key, ДанныеОтчета_Type, ДеревоНастройкиСтраниц_Type, ДокументОснование_Type, Организация_Key | document_belongs_to_organization -> Organization:957 | HIGH | P0 |
| ACCUMULATION_REGISTER | AccumulationRegister_НДФЛРасчетыСБюджетом | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accumulation register layer (balances/turnovers/tax movements). linked to document chain | Recorder, Recorder_Type, RecordSet | Recorder, Recorder_Type | register_recorded_by_document -> Document:924 | HIGH | P0 |
| ACCUMULATION_REGISTER | AccumulationRegister_СтраховыеВзносыСведенияОДоходах | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accumulation register layer (balances/turnovers/tax movements). linked to document chain | Recorder, Recorder_Type, RecordSet | Recorder, Recorder_Type | register_recorded_by_document -> Document:924 | HIGH | P0 |
| DOCUMENT | Document_ВыгрузкаРегламентированныхОтчетов | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to organization dimension | Ref_Key, DataVersion, DeletionMark, Number, Date, Posted, ПериодПо, Организация_Key (+6) | Date, Number, Posted, Ref_Key, Организация_Key | document_belongs_to_organization -> Organization:920 | HIGH | P0 |
| NSI_CATALOG | Catalog_РасходыБудущихПериодов | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection. linked to account dimension | Ref_Key, DataVersion, DeletionMark, Predefined, Parent_Key, IsFolder, Code, Description (+15) | Code, Description, Parent_Key, Ref_Key, СубконтоЗатрат1_Type, СубконтоЗатрат2_Type, СубконтоЗатрат3_Type, СчетЗатрат_Key | reference -> Account:858, reference -> Unknown:858 | MEDIUM | P1 |
| DOCUMENT_JOURNAL | DocumentJournal_РегламентныеДокументы | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Document journal layer for document indexing and timeline access. linked to document chain; linked to organization dimension | Ref, Ref_Type, Date, DeletionMark, Number, Posted, Организация_Key, Месяц (+5) | Date, Number, Posted, Ref, Ref_Type, Type, Организация_Key, Ответственный_Key | journal_refers_to_document -> Document:918, journal_organization -> Organization:918, journal_responsible -> ResponsiblePerson:918 | MEDIUM | P1 |
| DOCUMENT | Document_ОтражениеЗарплатыВРеглУчете | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to organization dimension | Ref_Key, DataVersion, DeletionMark, Number, Date, Posted, Организация_Key, ПериодРегистрации (+5) | Date, Number, Posted, Ref_Key, Организация_Key, Ответственный_Key | document_belongs_to_organization -> Organization:918, document_has_responsible -> ResponsiblePerson:918 | HIGH | P0 |
| NSI_CATALOG | Catalog_СохраненныеНастройки | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Description, ТипНастройки, НастраиваемыйОбъект, НастраиваемыйОбъект_Type (+8) | Description, Ref_Key, НастраиваемыйОбъект_Type, ХранилищеНастроек_Type | reference -> Unknown:900 | MEDIUM | P1 |
| DOCUMENT_JOURNAL | DocumentJournal_ПроизводственныеДокументы | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Document journal layer for document indexing and timeline access. linked to counterparties; linked to document chain; linked to organization dimension | Ref, Ref_Type, Date, DeletionMark, Number, Posted, Склад_Key, Контрагент_Key (+16) | Date, Number, Posted, Ref, Ref_Type, Type, ВалютаДокумента_Key, ДоговорКонтрагента_Key (+5) | journal_organization -> Organization:1092, journal_refers_to_document -> Document:912, journal_warehouse -> Warehouse:912, journal_responsible -> ResponsiblePerson:912, journal_counterparty -> Counterparty:744, journal_has_currency -> Currency:372 | MEDIUM | P1 |
| DOCUMENT | Document_ПриходныйКассовыйОрдер_РасшифровкаПлатежа | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to counterparties; linked to account dimension | Ref_Key, LineNumber, ДоговорКонтрагента_Key, Сделка, Сделка_Type, КурсВзаиморасчетов, СуммаПлатежа, КратностьВзаиморасчетов (+12) | LineNumber, Ref_Key, ДоговорКонтрагента_Key, Сделка_Type, СтатьяДвиженияДенежныхСредств_Key, СчетНаОплату_Key, СчетУчетаРасчетовПоАвансам_Key, СчетУчетаРасчетовСКонтрагентом_Key | document_line_has_account -> Account:3468, document_has_counterparty -> Counterparty:1092, document_has_cashflow_article -> CashflowArticle:828 | HIGH | P0 |
| NSI_CATALOG | Catalog_СохраненныеНастройки_Пользователи | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, LineNumber, Пользователь, Пользователь_Type, ПравоИзменения | LineNumber, Ref_Key, Пользователь_Type | reference -> ResponsiblePerson:900 | MEDIUM | P1 |
| ACCUMULATION_REGISTER | AccumulationRegister_НДФЛСведенияОДоходах | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accumulation register layer (balances/turnovers/tax movements). linked to document chain | Recorder, Recorder_Type, RecordSet | Recorder, Recorder_Type | register_recorded_by_document -> Document:888 | HIGH | P0 |
| ACCUMULATION_REGISTER | AccumulationRegister_СтраховыеВзносыИсчисленные | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accumulation register layer (balances/turnovers/tax movements). linked to document chain | Recorder, Recorder_Type, RecordSet | Recorder, Recorder_Type | register_recorded_by_document -> Document:888 | HIGH | P0 |
| ACCUMULATION_REGISTER | AccumulationRegister_КнигаУчетаДоходовИРасходов | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accumulation register layer (balances/turnovers/tax movements). linked to document chain | Recorder, Recorder_Type, RecordSet | Recorder, Recorder_Type | register_recorded_by_document -> Document:876 | HIGH | P0 |
| DOCUMENT | Document_РасходныйКассовыйОрдер_РасшифровкаПлатежа | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to counterparties; linked to account dimension | Ref_Key, LineNumber, ДоговорКонтрагента_Key, КурсВзаиморасчетов, СуммаПлатежа, КратностьВзаиморасчетов, СуммаВзаиморасчетов, СтавкаНДС (+11) | LineNumber, Ref_Key, ДоговорКонтрагента_Key, Сделка_Type, СтатьяДвиженияДенежныхСредств_Key, СчетУчетаРасчетовПоАвансам_Key, СчетУчетаРасчетовСКонтрагентом_Key | document_line_has_account -> Account:3168, document_has_counterparty -> Counterparty:948, document_has_cashflow_article -> CashflowArticle:780 | HIGH | P0 |
| ACCUMULATION_REGISTER | AccumulationRegister_РасчетыНалоговыхАгентовСБюджетомПоНДФЛ | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accumulation register layer (balances/turnovers/tax movements). linked to document chain | Recorder, Recorder_Type, RecordSet | Recorder, Recorder_Type | register_recorded_by_document -> Document:864 | HIGH | P0 |
| DOCUMENT | Document_ПриходныйКассовыйОрдер | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to counterparties; linked to account dimension; linked to organization dimension; linked to bank account dimension | Ref_Key, DataVersion, DeletionMark, Number, Date, Posted, Организация_Key, СчетКасса_Key (+32) | Date, Number, Posted, Ref_Key, ВалютаДокумента_Key, ДоговорКонтрагента_Key, ДокументОснование_Type, Контрагент_Type (+10) | document_has_counterparty -> Counterparty:1028, document_belongs_to_organization -> Organization:848, document_line_has_account -> Account:848, document_has_currency -> Currency:848, document_has_responsible -> ResponsiblePerson:485, document_has_counterparty -> BankAccount:250 (+2) | HIGH | P0 |
| DOCUMENT | Document_РеализацияТоваровУслуг_Услуги | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to account dimension | Ref_Key, LineNumber, Содержание, Количество, Номенклатура_Key, СтавкаНДС, Сумма, СуммаНДС (+10) | LineNumber, Ref_Key, Номенклатура_Key, Субконто_Type, СчетДоходов_Key, СчетРасходов_Key, СчетУчетаНДСПоРеализации_Key | document_line_has_account -> Account:2520, reference -> Item:840, document_line_has_item -> Item:816 | HIGH | P0 |
| ACCUMULATION_REGISTER | AccumulationRegister_РеализацияУслуг_RecordType | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accumulation register layer (balances/turnovers/tax movements). linked to account dimension; linked to document chain; linked to organization dimension | Period, Recorder, Recorder_Type, LineNumber, Active, Организация_Key, СчетРасходов_Key, НоменклатурнаяГруппа_Key (+4) | Active, LineNumber, Period, Recorder, Recorder_Type, НоменклатурнаяГруппа_Key, Организация_Key, СчетРасходов_Key | register_recorded_by_document -> Document:835, register_relates_to_organization -> Organization:835, register_relates_to_account -> Account:835, register_relates_to_item -> Item:835 | HIGH | P0 |
| DOCUMENT | Document_РасходныйКассовыйОрдер | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to counterparties; linked to account dimension; linked to organization dimension | Ref_Key, DataVersion, DeletionMark, Number, Date, Posted, Организация_Key, ВидОперации (+32) | Date, Number, Posted, Ref_Key, ВалютаДокумента_Key, ДоговорКонтрагента_Key, ДокументОснование_Type, Контрагент_Type (+11) | document_belongs_to_organization -> Organization:1095, document_has_counterparty -> Counterparty:891, document_line_has_account -> Account:807, document_has_currency -> Currency:807, reference -> Unknown:468, document_has_responsible -> ResponsiblePerson:353 (+1) | HIGH | P0 |
| ACCUMULATION_REGISTER | AccumulationRegister_НДФЛПредоставленныеСтандартныеВычетыФизЛиц | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accumulation register layer (balances/turnovers/tax movements). linked to document chain | Recorder, Recorder_Type, RecordSet | Recorder, Recorder_Type | register_recorded_by_document -> Document:792 | HIGH | P0 |
| DOCUMENT | Document_СчетНаОплатуПокупателю_Услуги | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events | Ref_Key, LineNumber, Содержание, Количество, Цена, Сумма, СтавкаНДС, СуммаНДС (+2) | LineNumber, Ref_Key, Номенклатура_Key | document_line_has_item -> Item:672 | HIGH | P0 |
| DOCUMENT_JOURNAL | DocumentJournal_СкладскиеДокументы | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Document journal layer for document indexing and timeline access. linked to document chain; linked to organization dimension | Ref, Ref_Type, Date, DeletionMark, Number, Posted, Склад_Key, Организация_Key (+7) | Date, Number, Posted, Ref, Ref_Type, Type, Организация_Key, Ответственный_Key (+1) | journal_refers_to_document -> Document:666, journal_warehouse -> Warehouse:666, journal_organization -> Organization:666, journal_responsible -> ResponsiblePerson:666 | MEDIUM | P1 |
| NSI_CATALOG | Catalog_ПрочиеДоходыИРасходы | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Parent_Key, IsFolder, Code, Description (+3) | Code, Description, Parent_Key, Ref_Key | | MEDIUM | P1 |
| CHART_OF_CHARACTERISTIC_TYPES | ChartOfCharacteristicTypes_ВидыСубконтоХозрасчетные | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Auxiliary entity layer | Ref_Key, DataVersion, DeletionMark, Predefined, Code, Description, ValueType | Code, Description, Ref_Key, ValueType | | LOW | P2 |
| DOCUMENT_JOURNAL | DocumentJournal_РегламентныеДокументыНДС | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Document journal layer for document indexing and timeline access. linked to document chain; linked to organization dimension | Ref, Ref_Type, Date, DeletionMark, Number, Posted, Организация_Key, Ответственный_Key (+4) | Date, Number, Posted, Ref, Ref_Type, Type, Организация_Key, Ответственный_Key | journal_refers_to_document -> Document:572, journal_organization -> Organization:572, journal_responsible -> ResponsiblePerson:572 | MEDIUM | P1 |
| DOCUMENT | Document_ТребованиеНакладная | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to account dimension; linked to organization dimension | Ref_Key, DataVersion, DeletionMark, Number, Date, Posted, Организация_Key, Склад_Key (+29) | Date, Number, Posted, Ref_Key, Контрагент_Key, Организация_Key, Ответственный_Key, ПодразделениеЗатрат_Key (+9) | document_belongs_to_organization -> Organization:540, document_has_warehouse -> Warehouse:540, document_has_responsible -> ResponsiblePerson:540, document_line_has_account -> Account:540, reference -> Unknown:540, document_line_has_item -> Item:540 | HIGH | P0 |
| ACCUMULATION_REGISTER | AccumulationRegister_НДСВключенныйВСтоимость_RecordType | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accumulation register layer (balances/turnovers/tax movements). linked to counterparties; linked to account dimension; linked to document chain; linked to organization dimension | Period, Recorder, Recorder_Type, LineNumber, Active, Организация_Key, СчетФактура, СчетФактура_Type (+10) | Active, LineNumber, Period, Recorder, Recorder_Type, Организация_Key, Поставщик_Key, СчетУчетаНДС_Key (+1) | register_recorded_by_document -> Document:534, register_relates_to_organization -> Organization:534, register_relates_to_invoice -> Document:534, register_relates_to_supplier -> Counterparty:534, register_relates_to_account -> Account:84 | HIGH | P0 |
| ACCUMULATION_REGISTER | AccumulationRegister_ПрочиеРасчеты_RecordType | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accumulation register layer (balances/turnovers/tax movements). linked to counterparties; linked to account dimension; linked to document chain; linked to organization dimension | Period, Recorder, Recorder_Type, LineNumber, Active, RecordType, Организация_Key, СчетУчета_Key (+9) | Active, LineNumber, Period, RecordType, Recorder, Recorder_Type, ДоговорКонтрагента_Key, Контрагент_Type (+3) | register_recorded_by_document -> Document:528, register_relates_to_organization -> Organization:528, register_relates_to_account -> Account:528, register_relates_to_account -> Document:528, register_relates_to_counterparty -> Counterparty:168 | HIGH | P0 |
| NSI_CATALOG | Catalog_ОснованияВыслугиЛет | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Code, Description, КодДляОтчетности2010 | Code, Description, Ref_Key | | MEDIUM | P1 |
| NSI_CATALOG | Catalog_СтатьиЗатрат | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Parent_Key, IsFolder, Code, Description (+2) | Code, Description, Parent_Key, Ref_Key | | MEDIUM | P1 |
| NSI_CATALOG | Catalog_БанковскиеСчета | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection. linked to counterparties; linked to account dimension; linked to organization dimension | Ref_Key, DataVersion, DeletionMark, Predefined, Owner, Owner_Type, Code, Description (+15) | Code, Description, Owner, Owner_Type, Ref_Key, Банк_Key, БанкДляРасчетов_Key, ВалютаДенежныхСредств_Key | reference -> Account:960, reference -> Unknown:480, reference -> Currency:480, reference -> Counterparty:408, reference -> Organization:72 | MEDIUM | P1 |
| ACCUMULATION_REGISTER | AccumulationRegister_НДСВключенныйВСтоимость | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accumulation register layer (balances/turnovers/tax movements). linked to document chain | Recorder, Recorder_Type, RecordSet | Recorder, Recorder_Type | register_recorded_by_document -> Document:468 | HIGH | P0 |
| ACCUMULATION_REGISTER | AccumulationRegister_РеализацияУслуг | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accumulation register layer (balances/turnovers/tax movements). linked to document chain | Recorder, Recorder_Type, RecordSet | Recorder, Recorder_Type | register_recorded_by_document -> Document:468 | HIGH | P0 |
| NSI_CATALOG | Catalog_ДоходыПоСтраховымВзносам | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Description, ВходитВБазуФОМС, ВходитВБазуФСС, ВходитВБазуПФР (+1) | Description, Ref_Key | | MEDIUM | P1 |
| ACCUMULATION_REGISTER | AccumulationRegister_ПособияПоУходуЗаРебенкомДоПолутораЛет_RecordType | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accumulation register layer (balances/turnovers/tax movements). linked to document chain; linked to organization dimension | Period, Recorder, Recorder_Type, LineNumber, Active, Организация_Key, УдалитьФизЛицо_Key, ОблагаетсяЕНВД (+12) | Active, LineNumber, Period, Recorder, Recorder_Type, Организация_Key, Сотрудник_Key, УдалитьФизЛицо_Key (+1) | register_recorded_by_document -> Document:384, register_relates_to_organization -> Organization:384, register_relates_to_individual -> Individual:384, reference -> Unknown:384 | HIGH | P0 |
| NSI_CATALOG | Catalog_ВидыКонтактнойИнформации | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Code, Description, Тип, ВидОбъектаКонтактнойИнформации (+4) | Code, Description, Ref_Key | | MEDIUM | P1 |
| DOCUMENT | Document_НДФЛиЕСНДоходыИНалоги_ПособияПоУходуЗаРебенкомДоПолутораЛет | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events | Ref_Key, LineNumber, Сотрудник_Key, ОблагаетсяЕНВД, СреднийДневнойЗаработок, ПособиеПоУходуЗаПервымРебенком, ПособиеПоУходуЗаВторымРебенком, ПериодДействияНачало (+8) | LineNumber, Ref_Key, Сотрудник_Key, ФизЛицо_Key | reference -> Unknown:384, document_relates_to_individual -> Individual:384 | HIGH | P0 |
| DOCUMENT | Document_КомплектацияНоменклатуры_Комплектующие | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to account dimension | Ref_Key, LineNumber, ДоляСтоимости, Количество, Номенклатура_Key, Сумма, СчетУчета_Key, НомерГТД_Key (+6) | LineNumber, Ref_Key, ДокументОприходования_Type, Номенклатура_Key, НомерГТД_Key, СтранаПроисхождения_Key, СчетУчета_Key | document_line_has_item -> Item:372, document_line_has_account -> Account:372 | HIGH | P0 |
| ACCUMULATION_REGISTER | AccumulationRegister_ПособияПоУходуЗаРебенкомДоПолутораЛет | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accumulation register layer (balances/turnovers/tax movements). linked to document chain | Recorder, Recorder_Type, RecordSet | Recorder, Recorder_Type | register_recorded_by_document -> Document:360 | HIGH | P0 |
| NSI_CATALOG | Catalog_ОсобыеУсловияТруда | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Code, Description, КодДляОтчетности2010 | Code, Description, Ref_Key | | MEDIUM | P1 |
| CHART_OF_CHARACTERISTIC_TYPES | ChartOfCharacteristicTypes_НастройкиПользователей | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Auxiliary entity layer | Ref_Key, DataVersion, DeletionMark, Predefined, Parent_Key, IsFolder, Code, Description (+2) | Code, Description, Parent@navigationLinkUrl, Parent_Key, Ref_Key, ValueType | reference -> Unknown:132 | LOW | P2 |
| ACCUMULATION_REGISTER | AccumulationRegister_РасходыПриУСН | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accumulation register layer (balances/turnovers/tax movements). linked to document chain | Recorder, Recorder_Type, RecordSet | Recorder, Recorder_Type | register_recorded_by_document -> Document:312 | HIGH | P0 |
| DOCUMENT | Document_Доверенность_Товары | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events | Ref_Key, LineNumber, НаименованиеТовара, ЕдиницаПоКлассификатору_Key, Количество, ЕдиницаПоКлассификатору@navigationLinkUrl | LineNumber, Ref_Key, ЕдиницаПоКлассификатору_Key | document_line_has_item -> Item:312, reference -> Unknown:312 | HIGH | P0 |
| ACCUMULATION_REGISTER | AccumulationRegister_ПрочиеРасчеты | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accumulation register layer (balances/turnovers/tax movements). linked to document chain | Recorder, Recorder_Type, RecordSet | Recorder, Recorder_Type | register_recorded_by_document -> Document:300 | HIGH | P0 |
| NSI_CATALOG | Catalog_ФизическиеЛица | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Parent_Key, IsFolder, Code, Description (+7) | Code, Description, Parent_Key, Ref_Key | | MEDIUM | P1 |
| DOCUMENT | Document_ФормированиеЗаписейКнигиПокупок_ВычетПоПриобретеннымЦенностям | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to counterparties; linked to account dimension; linked to document chain | Ref_Key, LineNumber, ВидЦенности, Поставщик_Key, СчетФактура, СчетФактура_Type, СтавкаНДС, СуммаБезНДС (+18) | LineNumber, Ref_Key, ДокументОплаты_Type, ДокументОтгрузки_Type, ИсправленныйСчетФактура_Type, Поставщик_Key, СчетУчетаНДС_Key, СчетФактура_Type | document_line_has_account -> Account:566, document_has_supplier -> Counterparty:283, document_relates_to_invoice -> Document:283 | HIGH | P0 |
| DOCUMENT | Document_ФормированиеЗаписейКнигиПокупок | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to organization dimension | Ref_Key, DataVersion, DeletionMark, Number, Date, Posted, Организация_Key, Ответственный_Key (+10) | Date, Number, Posted, Ref_Key, Организация_Key, Ответственный_Key | document_belongs_to_organization -> Organization:274, document_has_responsible -> ResponsiblePerson:274 | HIGH | P0 |
| DOCUMENT | Document_ФормированиеЗаписейКнигиПродаж | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to organization dimension | Ref_Key, DataVersion, DeletionMark, Number, Date, Posted, Организация_Key, Ответственный_Key (+12) | Date, Number, Posted, Ref_Key, Организация_Key, Ответственный_Key | document_belongs_to_organization -> Organization:274, document_has_responsible -> ResponsiblePerson:274 | HIGH | P0 |
| NSI_CATALOG | Catalog_ПараметрыИсчисляемогоСтраховогоСтажа2014 | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Code, Description | Code, Description, Ref_Key | | MEDIUM | P1 |
| NSI_CATALOG | Catalog_ДокументыУдостоверяющиеЛичность | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Description, КодИМНС, КодПФР | Description, Ref_Key | | MEDIUM | P1 |
| DOCUMENT | Document_РасходныйКассовыйОрдер_ВыплатаЗаработнойПлаты | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events | Ref_Key, LineNumber, Ведомость_Key, СуммаКВыплате, Ведомость@navigationLinkUrl | LineNumber, Ref_Key, Ведомость_Key | reference -> Unknown:240 | HIGH | P0 |
| NSI_CATALOG | Catalog_СобытияОС | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Code, Description, Комментарий, ВидСобытияОС | Code, Description, Ref_Key | | MEDIUM | P1 |
| CHART_OF_CHARACTERISTIC_TYPES | ChartOfCharacteristicTypes_НазначенияСвойствКатегорийОбъектов | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Auxiliary entity layer | Ref_Key, DataVersion, DeletionMark, Predefined, Parent_Key, IsFolder, Code, Description (+2) | Code, Description, Parent@navigationLinkUrl, Parent_Key, Ref_Key, ValueType | reference -> Unknown:192 | LOW | P2 |
| NSI_CATALOG | Catalog_СтатьиДвиженияДенежныхСредств | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Parent_Key, IsFolder, Code, Description (+1) | Code, Description, Parent_Key, Ref_Key | | MEDIUM | P1 |
| ACCUMULATION_REGISTER | AccumulationRegister_ВыпускПродукцииУслуг_RecordType | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accumulation register layer (balances/turnovers/tax movements). linked to account dimension; linked to document chain; linked to organization dimension | Period, Recorder, Recorder_Type, LineNumber, Active, Организация_Key, Продукция_Key, СчетЗатрат_Key (+19) | Active, LineNumber, Period, Recorder, Recorder_Type, НоменклатурнаяГруппа_Key, Организация_Key, Подразделение_Key (+7) | register_relates_to_account -> Account:384, register_recorded_by_document -> Document:192, register_relates_to_organization -> Organization:192, reference -> Unknown:192, register_relates_to_department -> Department:192, register_relates_to_item -> Item:192 (+2) | HIGH | P0 |
| DOCUMENT | Document_ПередачаТоваров | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to counterparties; linked to account dimension; linked to organization dimension | Ref_Key, DataVersion, DeletionMark, Number, Date, Posted, ВалютаДокумента_Key, ВидОперации (+27) | Date, Number, Posted, Ref_Key, ВалютаДокумента_Key, Грузоотправитель_Key, Грузополучатель_Key, ДоговорКонтрагента_Key (+8) | document_line_has_account -> Account:576, reference -> Unknown:576, document_has_counterparty -> Counterparty:384, document_has_currency -> Currency:192, document_belongs_to_organization -> Organization:192, document_has_responsible -> ResponsiblePerson:192 (+1) | HIGH | P0 |
| DOCUMENT | Document_ПоступлениеИзПереработки_Продукция | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to account dimension | Ref_Key, LineNumber, Количество, Номенклатура_Key, СуммаПлановая, ПлановаяСтоимость, Счет_Key, Спецификация_Key (+2) | LineNumber, Ref_Key, Номенклатура_Key, Спецификация_Key, Счет_Key | document_line_has_item -> Item:192, document_line_has_account -> Account:192 | HIGH | P0 |
| DOCUMENT | Document_Доверенность | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to counterparties; linked to organization dimension | Ref_Key, DataVersion, DeletionMark, Number, Date, Posted, Организация_Key, ФизЛицо_Key (+17) | Date, Number, Posted, Ref_Key, БанковскийСчетОрганизации_Key, ДоговорКонтрагента_Key, Контрагент_Key, Организация_Key (+3) | document_belongs_to_organization -> Organization:374, document_has_counterparty -> Counterparty:374, document_relates_to_individual -> Individual:175, document_has_responsible -> ResponsiblePerson:127 | HIGH | P0 |
| ACCUMULATION_REGISTER | AccumulationRegister_ВыпускПродукцииУслуг | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accumulation register layer (balances/turnovers/tax movements). linked to document chain | Recorder, Recorder_Type, RecordSet | Recorder, Recorder_Type | register_recorded_by_document -> Document:180 | HIGH | P0 |
| DOCUMENT | Document_ПоступлениеИзПереработки | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to counterparties; linked to account dimension; linked to organization dimension; linked to invoice documents | Ref_Key, DataVersion, DeletionMark, Number, Date, Posted, ВалютаДокумента_Key, Контрагент_Key (+32) | Date, Number, Posted, Ref_Key, ВалютаДокумента_Key, ДоговорКонтрагента_Key, Контрагент_Key, НоменклатурнаяГруппа_Key (+9) | document_line_has_account -> Account:1092, document_has_counterparty -> Counterparty:540, document_has_currency -> Currency:180, document_belongs_to_organization -> Organization:180, document_has_responsible -> ResponsiblePerson:180, document_line_has_item -> Item:180 (+3) | HIGH | P0 |
| DOCUMENT | Document_ПоступлениеИзПереработки_Услуги | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to account dimension | Ref_Key, LineNumber, Номенклатура_Key, Количество, Цена, Сумма, СтавкаНДС, СчетУчетаНДС_Key (+7) | LineNumber, Ref_Key, Номенклатура_Key, СтатьяЗатрат_Key, СчетУчетаНДС_Key | document_line_has_item -> Item:180, document_line_has_account -> Account:180, reference -> Unknown:180 | HIGH | P0 |
| DOCUMENT | Document_АвансовыйОтчет | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to organization dimension | Ref_Key, DataVersion, DeletionMark, Number, Date, Posted, ВалютаДокумента_Key, Комментарий (+25) | Date, Number, Posted, Ref_Key, ВалютаДокумента_Key, Организация_Key, Ответственный_Key, Склад_Key (+2) | document_has_currency -> Currency:144, document_belongs_to_organization -> Organization:144, document_relates_to_individual -> Individual:144, document_has_responsible -> ResponsiblePerson:144, document_has_warehouse -> Warehouse:132 | HIGH | P0 |
| NSI_CATALOG | Catalog_Пользователи | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Parent_Key, IsFolder, Code, Description (+2) | Code, Description, Parent_Key, Ref_Key, ФизЛицо_Key | reference -> Unknown:96 | MEDIUM | P1 |
| DOCUMENT | Document_АвансовыйОтчет_Товары | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to counterparties; linked to account dimension | Ref_Key, LineNumber, ВидДокВходящий, НомерВходящегоДокумента, ДатаВходящегоДокумента, Поставщик_Key, СчетФактура_Key, Номенклатура_Key (+17) | LineNumber, Ref_Key, Номенклатура_Key, НомерГТД_Key, Поставщик_Key, СтранаПроисхождения_Key, СчетУчета_Key, СчетУчетаНДС_Key (+1) | document_line_has_account -> Account:264, document_has_supplier -> Counterparty:132, document_line_has_item -> Item:132 | HIGH | P0 |
| DOCUMENT | Document_ФормированиеЗаписейКнигиПокупок_ВычетПриИзмененииСтоимостиВСторонуУменьшения | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to counterparties; linked to account dimension; linked to invoice documents | Ref_Key, LineNumber, ВидЦенности, Поставщик_Key, СчетФактура_Key, СтавкаНДС, СуммаБезНДС, НДС (+5) | LineNumber, Ref_Key, ИсправленныйСчетФактура_Key, Поставщик_Key, СчетУчетаНДС_Key, СчетФактура_Key | document_has_supplier -> Counterparty:132, document_relates_to_invoice -> InvoiceDocument:132, document_line_has_account -> Account:132 | HIGH | P0 |
| DOCUMENT | Document_КомплектацияНоменклатуры | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to account dimension; linked to organization dimension | Ref_Key, DataVersion, DeletionMark, Number, Date, Posted, ВидОперации, Количество (+22) | Date, Number, Posted, Ref_Key, Номенклатура_Key, Организация_Key, Ответственный_Key, Склад_Key (+5) | document_line_has_item -> Item:252, document_belongs_to_organization -> Organization:126, document_has_responsible -> ResponsiblePerson:126, document_has_warehouse -> Warehouse:126, document_line_has_account -> Account:126 | HIGH | P0 |
| DOCUMENT | Document_КорректировкаРеализации | snapshot_2020-03.ndjson, snapshot_2020-04.ndjson, snapshot_2020-05.ndjson, snapshot_2020-06.ndjson (+6) | Primary document fact entity for operational accounting events. linked to counterparties; linked to document chain; linked to organization dimension | Ref_Key, DataVersion, DeletionMark, Number, Date, Posted, АдресДоставки, БанковскийСчетОрганизации_Key (+32) | Date, Number, Posted, Ref_Key, БанковскийСчетОрганизации_Key, ВалютаДокумента_Key, Грузоотправитель_Key, Грузополучатель_Key (+12) | reference -> Document:248, document_has_counterparty -> Counterparty:248, document_belongs_to_organization -> Organization:124, document_has_responsible -> ResponsiblePerson:124, document_has_warehouse -> Warehouse:124, document_has_currency -> Currency:124 (+1) | HIGH | P0 |
| NSI_CATALOG | Catalog_ДоходыЕСН | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Code, Description, ВходитВБазуФОМС, ВходитВБазуФСС (+1) | Code, Description, Ref_Key | | MEDIUM | P1 |
| DOCUMENT | Document_АвансовыйОтчет_ВыданныеАвансы | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to document chain | Ref_Key, LineNumber, ДокументАванса, ДокументАванса_Type, Сумма | LineNumber, Ref_Key, ДокументАванса_Type | reference -> Document:120 | HIGH | P0 |
| NSI_CATALOG | Catalog_ТерриториальныеУсловия | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Code, Description | Code, Description, Ref_Key | | MEDIUM | P1 |
| DOCUMENT | Document_АвансовыйОтчет_Прочее | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to account dimension | Ref_Key, LineNumber, ВидДокВходящий, НомерВходящегоДокумента, ДатаВходящегоДокумента, Поставщик_Key, СчетФактура_Key, Номенклатура_Key (+27) | LineNumber, Ref_Key, Номенклатура_Key, ПодразделениеЗатрат_Key, Поставщик_Key, Субконто1_Type, Субконто2_Type, Субконто3_Type (+7) | document_line_has_account -> Account:216, reference -> Unknown:216 | HIGH | P0 |
| ACCUMULATION_REGISTER | AccumulationRegister_ПособияСоциальномуСтрахованию_RecordType | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accumulation register layer (balances/turnovers/tax movements). linked to document chain; linked to organization dimension | Period, Recorder, Recorder_Type, LineNumber, Active, Организация_Key, ВидПособияСоциальногоСтрахования, ОблагаетсяЕНВД (+11) | Active, LineNumber, Period, Recorder, Recorder_Type, ДокументОснование_Key, Организация_Key, Сотрудник_Key | register_recorded_by_document -> Document:96, register_relates_to_organization -> Organization:96, reference -> Unknown:96 | HIGH | P0 |
| NSI_CATALOG | Catalog_КлассификаторЕдиницИзмерения | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Code, Description, НаименованиеПолное | Code, Description, Ref_Key | | MEDIUM | P1 |
| DOCUMENT | Document_НДФЛиЕСНДоходыИНалоги_ПособияСоциальномуСтрахованию | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events | Ref_Key, LineNumber, ОплаченныеДни, СуммаВсего, СуммаСверхНорм, Сотрудник_Key, ОблагаетсяЕНВД, ВидПособияСоциальногоСтрахования (+7) | LineNumber, Ref_Key, Сотрудник_Key, ФизЛицо_Key | reference -> Unknown:96, document_relates_to_individual -> Individual:96 | HIGH | P0 |
| DOCUMENT | Document_ФормированиеЗаписейКнигиПродаж_ВосстановленПоАвансам | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to counterparties; linked to document chain | Ref_Key, LineNumber, Поставщик_Key, ДоговорКонтрагента_Key, СчетФактура, СчетФактура_Type, СтавкаНДС, СуммаБезНДС (+7) | LineNumber, Ref_Key, ДоговорКонтрагента_Key, ИсправленныйСчетФактура_Key, Поставщик_Key, СчетФактура_Type | document_has_supplier -> Counterparty:84, document_has_counterparty -> Counterparty:84, document_relates_to_invoice -> Document:84 | HIGH | P0 |
| ACCUMULATION_REGISTER | AccumulationRegister_ПособияСоциальномуСтрахованию | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accumulation register layer (balances/turnovers/tax movements). linked to document chain | Recorder, Recorder_Type, RecordSet | Recorder, Recorder_Type | register_recorded_by_document -> Document:72 | HIGH | P0 |
| NSI_CATALOG | Catalog_ОснованияИсчисляемогоТрудовогоСтажа | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Code, Description | Code, Description, Ref_Key | | MEDIUM | P1 |
| NSI_CATALOG | Catalog_НоменклатурныеГруппы | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Parent_Key, IsFolder, Code, Description | Code, Description, Parent_Key, Ref_Key | | MEDIUM | P1 |
| DOCUMENT | Document_СчетФактураПолученный_Авансы | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events | Ref_Key, LineNumber, Сумма, СуммаНДС, СтавкаНДС, СуммаДоКорректировки, СтавкаНДСДоКорректировки, СуммаНДСДоКорректировки (+1) | LineNumber, Ref_Key, КорректируемыйСчетФактура_Key | | HIGH | P0 |
| NSI_CATALOG | Catalog_Валюты | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Code, Description, НаименованиеПолное, ПараметрыПрописиНаРусском | Code, Description, Ref_Key | | MEDIUM | P1 |
| NSI_CATALOG | Catalog_ВнешниеОбработки | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Parent_Key, IsFolder, Code, Description (+6) | Code, Description, Parent_Key, Ref_Key, ХранилищеВнешнейОбработки_Type | | MEDIUM | P1 |
| NSI_CATALOG | Catalog_ДолжностиОрганизаций | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Code, Description, ЯвляетсяФармацевтическойДолжностью, ТрудоваяФункция_Key | Code, Description, Ref_Key, ТрудоваяФункция_Key | | MEDIUM | P1 |
| NSI_CATALOG | Catalog_Организации | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection. linked to bank account dimension | Ref_Key, DataVersion, DeletionMark, Predefined, Code, Description, Префикс, ИНН (+32) | Code, Description, Ref_Key, ГоловнаяОрганизация_Key, ИндивидуальныйПредприниматель_Key, ОсновнойБанковскийСчет_Key, РегистрацияВИФНС_Key, СтранаПостоянногоМестонахождения_Key (+3) | reference -> Individual:36, reference -> BankAccount:12, reference -> Unknown:12 | MEDIUM | P1 |
| NSI_CATALOG | Catalog_ОсновныеСредства | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Parent_Key, IsFolder, Code, Description (+18) | Code, Description, Parent_Key, Ref_Key, КодПоОКОФ_Key, ШифрПоЕНАОФ_Key | | MEDIUM | P1 |
| NSI_CATALOG | Catalog_СотрудникиОрганизаций | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection. linked to organization dimension | Ref_Key, DataVersion, DeletionMark, Predefined, Parent_Key, IsFolder, Code, Description (+11) | Code, Description, Parent_Key, Ref_Key, Организация_Key, ТекущаяДолжностьОрганизации_Key, ТекущееПодразделениеОрганизации_Key, Физлицо_Key | reference -> Individual:36, reference -> Organization:36 | MEDIUM | P1 |
| NSI_CATALOG | Catalog_СпособыОтраженияЗарплатыВРеглУчете | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection. linked to account dimension | Ref_Key, DataVersion, DeletionMark, Predefined, Description, СчетДт_Key, СубконтоДт1, СубконтоДт1_Type (+22) | Description, Ref_Key, СубконтоДт1_Type, СубконтоДт2_Type, СубконтоДт3_Type, СубконтоДтНУ1_Type, СубконтоДтНУ2_Type, СубконтоДтНУ3_Type (+6) | reference -> Account:48, reference -> Unknown:24 | MEDIUM | P1 |
| NSI_CATALOG | Catalog_СпособыОтраженияРасходовПоАмортизации | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Code, Description, Комментарий, Организация_Key (+1) | Code, Description, Ref_Key, Организация_Key | | MEDIUM | P1 |
| NSI_CATALOG | Catalog_СпособыОтраженияРасходовПоАмортизации_Способы | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection. linked to account dimension | Ref_Key, LineNumber, Субконто1, Субконто1_Type, ПодразделениеОрганизации_Key, Субконто2, Субконто2_Type, Субконто3 (+4) | LineNumber, Ref_Key, ПодразделениеОрганизации_Key, Субконто1_Type, Субконто2_Type, Субконто3_Type, СчетЗатрат_Key | reference -> Unknown:36, reference -> Account:36, reference -> Item:12 | MEDIUM | P1 |
| NSI_CATALOG | Catalog_ТипыЦенНоменклатуры | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Code, Description, ВалютаЦены_Key, ЦенаВключаетНДС (+4) | Code, Description, Ref_Key, ВалютаЦены_Key | reference -> Currency:36 | MEDIUM | P1 |
| DOCUMENT_JOURNAL | DocumentJournal_ДокументыПоОС | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Document journal layer for document indexing and timeline access. linked to document chain; linked to organization dimension | Ref, Ref_Type, Date, DeletionMark, Number, Posted, Организация_Key, ОбъектСтроительства_Key (+7) | Date, Number, Posted, Ref, Ref_Type, Type, ОбъектСтроительства_Key, Организация_Key (+2) | journal_refers_to_document -> Document:36, journal_organization -> Organization:36, journal_responsible -> ResponsiblePerson:36 | MEDIUM | P1 |
| DOCUMENT | Document_ПринятиеКУчетуОС | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to account dimension; linked to organization dimension | Ref_Key, DataVersion, DeletionMark, Number, Date, Posted, ВидОперации, ГодоваяНормаАмортизацииБУ (+32) | Date, Number, Posted, Ref_Key, ГрафикАмортизацииПоГодуБУ_Key, МОЛБУ_Key, МестонахождениеОС_Key, Номенклатура_Key (+20) | reference -> Unknown:120, document_line_has_account -> Account:108, document_line_has_item -> Item:36, document_belongs_to_organization -> Organization:36, document_has_responsible -> ResponsiblePerson:36, document_has_warehouse -> Warehouse:36 | HIGH | P0 |
| DOCUMENT | Document_ПринятиеКУчетуОС_ОсновныеСредства | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events | Ref_Key, LineNumber, ОсновноеСредство_Key, ИнвентарныйНомер, ОсновноеСредство@navigationLinkUrl | LineNumber, Ref_Key, ОсновноеСредство_Key | reference -> Unknown:36 | HIGH | P0 |
| NSI_CATALOG | Catalog_КлассификаторСтранМира | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Code, Description, НаименованиеПолное, КодАльфа2 (+2) | Code, Description, Ref_Key | | MEDIUM | P1 |
| NSI_CATALOG | Catalog_ПодразделенияОрганизаций | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Owner_Key, Parent_Key, Code, Description (+5) | Code, Description, Owner@navigationLinkUrl, Owner_Key, Parent_Key, Ref_Key | reference -> Unknown:24 | HIGH | P0 |
| DOCUMENT | Document_АвансовыйОтчет_ОплатаПоставщикам | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to counterparties; linked to account dimension | Ref_Key, LineNumber, ВидДокВходящий, ДатаВходящегоДокумента, НомерВходящегоДокумента, Сумма, Контрагент_Key, ДоговорКонтрагента_Key (+13) | LineNumber, Ref_Key, ДоговорКонтрагента_Key, Контрагент_Key, Сделка_Type, СчетУчетаРасчетовПоАвансам_Key, СчетУчетаРасчетовСКонтрагентом_Key | document_line_has_account -> Account:96, document_has_counterparty -> Counterparty:72 | HIGH | P0 |
| DOCUMENT | Document_СписаниеНДС | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to counterparties; linked to account dimension; linked to document chain; linked to organization dimension | Ref_Key, DataVersion, DeletionMark, Number, Date, Posted, Организация_Key, Ответственный_Key (+14) | Date, Number, Posted, Ref_Key, Организация_Key, Ответственный_Key, ПодразделениеОрганизации_Key, СубконтоСписанияНДС1_Type (+3) | document_belongs_to_organization -> Organization:24, document_has_responsible -> ResponsiblePerson:24, document_line_has_account -> Account:24, reference -> Counterparty:12, reference -> Document:12 | HIGH | P0 |
| NSI_CATALOG | Catalog_ГруппыПользователей | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Parent_Key, Code, Description, АдминистраторГруппы_Key (+1) | Code, Description, Parent_Key, Ref_Key, АдминистраторГруппы_Key | | MEDIUM | P1 |
| NSI_CATALOG | Catalog_КонвертацииИзИнформационныхБазПредыдущихВерсий | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Code, Description, ИдентификаторКонфигурации, Конфигурация (+8) | Code, Description, Ref_Key, ХранилищеОбработка_Type, ХранилищеПравила_Type | | MEDIUM | P1 |
| NSI_CATALOG | Catalog_КонтактныеЛица | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Code, Description, Фамилия, Имя (+10) | Code, Description, Ref_Key, ОбъектВладелец_Type, ПользовательЛичногоКонтакта_Key, Роль_Key | reference -> ResponsiblePerson:12, reference -> Unknown:12 | MEDIUM | P1 |
| NSI_CATALOG | Catalog_РегистрацияВИФНС | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Owner_Key, Code, Description, КПП (+10) | Code, Description, Owner@navigationLinkUrl, Owner_Key, Ref_Key, Доверенность_Key, Представитель_Type | reference -> Unknown:12 | HIGH | P0 |
| NSI_CATALOG | Catalog_Склады | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Parent_Key, IsFolder, Code, Description (+4) | Code, Description, Parent_Key, Ref_Key, НоменклатурнаяГруппа_Key, ТипЦенРозничнойТорговли_Key | reference -> Warehouse:12 | MEDIUM | P1 |
| NSI_CATALOG | Catalog_УчетныеЗаписиЭлектроннойПочты | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Description, ИмяПользователя, АдресЭлектроннойПочты, СерверИсходящейПочтыSMTP (+19) | Description, Ref_Key, УдалитьОтветственныйЗаОбработкуПисем_Key | | MEDIUM | P1 |
| OTHER | ChartOfCalculationTypes_ОсновныеНачисленияОрганизаций | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Auxiliary entity layer | Ref_Key, DataVersion, DeletionMark, Predefined, Code, Description, LeadingCalculationTypes, СпособОтраженияВБухучете_Key (+10) | Code, Description, LeadingCalculationTypes, Ref_Key, КодДоходаЕСН_Key, КодДоходаНДФЛ_Key, КодДоходаСтраховыеВзносы_Key, СпособОтраженияВБухучете_Key | reference -> Unknown:48 | LOW | P2 |
| CONSTANT | Constant_АлгоритмПодписи | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
| CONSTANT | Constant_АлгоритмХеширования | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
| CONSTANT | Constant_АлгоритмШифрования | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
| CONSTANT | Constant_ВалютаРегламентированногоУчета | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value_Key, SurrogateKey, Value@navigationLinkUrl | Value_Key | reference -> Unknown:12 | LOW | P2 |
| CONSTANT | Constant_ВестиУчетПрослеживаемыхТоваров | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
| CONSTANT | Constant_ВыполнитьЗагрузкуПараметровРаботыПрограммы | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
| CONSTANT | Constant_ВыполнятьПроверкуЭЦПНаСервере | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
| CONSTANT | Constant_ГотовностьПрограммыКРаботе | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value_Type, Value_Base64Data, SurrogateKey | Value_Type | | LOW | P2 |
| CONSTANT | Constant_ДатаЗагрузкиОписанияФорматовДляПреобразования | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
| CONSTANT | Constant_ДатаНачалаАвтоматическогоОтраженияВУчетеНДС | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
| CONSTANT | Constant_ДатаНачалаАвтоматическогоОтраженияВУчетеУСН | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
| CONSTANT | Constant_ДатаНачалаУчетаПрослеживаемыхИмпортныхТоваров | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
| CONSTANT | Constant_ДатаОбновленияПовторноИспользуемыхЗначенийМРО | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
| CONSTANT | Constant_ДатаТекущейВерсии | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
| CONSTANT | Constant_ДетализироватьОбновлениеИБВЖурналеРегистрации | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
| CONSTANT | Constant_ДокументооборотСКонтролирующимиОрганами_АлгоритмГенерацииСессионногоКлюча | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
| CONSTANT | Constant_ДокументооборотСКонтролирующимиОрганами_АлгоритмПодписания | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
| CONSTANT | Constant_ДокументооборотСКонтролирующимиОрганами_АлгоритмХешФункции | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
| CONSTANT | Constant_ДокументооборотСКонтролирующимиОрганами_АлгоритмШифрования | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
| CONSTANT | Constant_ДокументооборотСКонтролирующимиОрганами_ВерсияВнешнегоМодуля | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
| CONSTANT | Constant_ДокументооборотСКонтролирующимиОрганами_ВнешнийМодуль | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value_Type, Value_Base64Data, SurrogateKey | Value_Type | | LOW | P2 |
| CONSTANT | Constant_ДокументооборотСКонтролирующимиОрганами_ИмяКриптопровайдера | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
| CONSTANT | Constant_ДокументооборотСКонтролирующимиОрганами_ИспользоватьВнешнийМодуль | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
| CONSTANT | Constant_ДокументооборотСКонтролирующимиОрганами_ОтпечатокСертификатаСервераОнлайнПроверки | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
| CONSTANT | Constant_ДокументооборотСКонтролирующимиОрганами_СертификатСервераОнлайнПроверки | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value_Type, Value_Base64Data, SurrogateKey | Value_Type | | LOW | P2 |
| CONSTANT | Constant_ДокументооборотСКонтролирующимиОрганами_ТипКриптопровайдера | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
| CONSTANT | Constant_ДополнительнаяКолонкаПечатныхФормДокументов | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
| CONSTANT | Constant_ЕстьПроизводственнаяДеятельность | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
| CONSTANT | Constant_ЕстьРозничнаяТорговля | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
| CONSTANT | Constant_ЗаголовокСистемы | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
| CONSTANT | Constant_ЗапрещатьЗагрузкуФайловПоРасширению | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
| CONSTANT | Constant_ЗапуститьОбновлениеИнформационнойБазы | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
| CONSTANT | Constant_ИдентификаторИнформационнойБазы | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
| CONSTANT | Constant_ИзвлекатьТекстыФайловНаСервере | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
| CONSTANT | Constant_ИнтервалДляОпросаРегламентныхЗаданийВФайловомВарианте | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
| CONSTANT | Constant_ИспользоватьВозвратнуюТару | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
| CONSTANT | Constant_ИспользоватьМеханизмОнлайнСервисовРО | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
| CONSTANT | Constant_ИспользоватьОбменЭД | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
| CONSTANT | Constant_ИспользоватьОбменЭДМеждуОрганизациями | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
| CONSTANT | Constant_ИспользоватьОбменЭДСБанками | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
| CONSTANT | Constant_ИспользоватьОграниченияПравДоступаНаУровнеЗаписей | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
| CONSTANT | Constant_ИспользоватьОзнакомлениеСЭлектроннымиДокументами | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
| CONSTANT | Constant_ИспользоватьОтложеннуюОтправкуЭлектронныхДокументов | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
| CONSTANT | Constant_ИспользоватьСинхронизациюДанных | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
| CONSTANT | Constant_ИспользоватьСинхронизациюДанныхВЛокальномРежиме | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
| CONSTANT | Constant_ИспользоватьЭлектронныеЦифровыеПодписи | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
| CONSTANT | Constant_ИспользуетсяТрудФармацевтов | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
| CONSTANT | Constant_ИсточникДанныхАдресногоКлассификатора | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
| CONSTANT | Constant_КаталогВременныхФайловДляLinux | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
| CONSTANT | Constant_КаталогВременныхФайловДляWindows | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
| CONSTANT | Constant_КаталогДополнительнойИнформации | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
| CONSTANT | Constant_КонтекстАвторизации | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
| CONSTANT | Constant_КонтекстКриптографии | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
| CONSTANT | Constant_КонтролироватьПоследовательностьПроведения | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
| CONSTANT | Constant_МаксимальныйРазмерФайла | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
| CONSTANT | Constant_НастройкаОбновленияКонфигурации | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value_Type, Value_Base64Data, SurrogateKey | Value_Type | | LOW | P2 |
| CONSTANT | Constant_НастройкаФайлаОбновленияКонфигурации | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value_Type, Value_Base64Data, SurrogateKey | Value_Type | | LOW | P2 |
| CONSTANT | Constant_НастройкиВыполненияРегламентныхЗаданий | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value_Type, Value_Base64Data, SurrogateKey | Value_Type | | LOW | P2 |
| CONSTANT | Constant_НастройкиКолонтитуловПоУмолчанию | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value_Type, Value_Base64Data, SurrogateKey | Value_Type | | LOW | P2 |
| CONSTANT | Constant_НачалоОценкиДоходовИРасходовВНУПоКурсуАвансов | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
| CONSTANT | Constant_НачалоПримененияИсправленныхСчетовФактур | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
| CONSTANT | Constant_НомерВерсииКонфигурации | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
| CONSTANT | Constant_ОписаниеФайлаКонфигурацииДляОбновления | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
| CONSTANT | Constant_ОтдельнаяНумерацияСчетовФактурНаАванс | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
| CONSTANT | Constant_ОтключитьКонтрольОтрицательныхОстатков | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
| CONSTANT | Constant_ПараметрыАдминистрированияИБ | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value_Type, Value_Base64Data, SurrogateKey | Value_Type | | LOW | P2 |
| CONSTANT | Constant_ПараметрыАдресногоКлассификатора | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value_Type, Value_Base64Data, SurrogateKey | Value_Type | | LOW | P2 |
| CONSTANT | Constant_ПараметрыРаботыПользователей | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value_Type, Value_Base64Data, SurrogateKey | Value_Type | | LOW | P2 |
| CONSTANT | Constant_ПараметрыСлужебныхСобытий | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value_Type, Value_Base64Data, SurrogateKey | Value_Type | | LOW | P2 |
| CONSTANT | Constant_ПараметрыСообщенияПриОбращенииВОтделТехническойПоддержки | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value_Type, Value_Base64Data, SurrogateKey | Value_Type | | LOW | P2 |
| CONSTANT | Constant_ПользовательДляВыполненияРегламентныхЗаданийВФайловомВарианте | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value_Key, SurrogateKey | Value_Key | | LOW | P2 |
| CONSTANT | Constant_ПредельноеКоличествоЗаписейВРазделеДекларацииПоНДС | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
| CONSTANT | Constant_ПрефиксУзлаРаспределеннойИнформационнойБазы | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
| CONSTANT | Constant_ПрименяемыеСистемыНалогообложения | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
| CONSTANT | Constant_ПрименятьДатуЗапретаДляПолныхПрав | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
| CONSTANT | Constant_ПрименяютсяРазныеСтавкиНалогаНаПрибыль | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
| CONSTANT | Constant_ПровайдерЭЦП | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
| CONSTANT | Constant_ПроверятьРазницуВоВремениССервером | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
| CONSTANT | Constant_СведенияОбОбновленииИБ | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value_Type, Value_Base64Data, SurrogateKey | Value_Type | | LOW | P2 |
| CONSTANT | Constant_СкладДляОбменаДаннымиСУТ | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value_Key, SurrogateKey | Value_Key | | LOW | P2 |
| CONSTANT | Constant_СохранятьИнформациюОМестеСозданияОбъектов | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
| CONSTANT | Constant_СписокЗапрещенныхРасширений | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
| CONSTANT | Constant_СрокОплатыПокупателей | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
| CONSTANT | Constant_СрокОплатыПоставщикам | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
| CONSTANT | Constant_СтатусОбновленияКонфигурации | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value_Type, Value_Base64Data, SurrogateKey | Value_Type | | LOW | P2 |
| CONSTANT | Constant_ТаймаутПодключенияКСервисуИнтернетПоддержки | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
| CONSTANT | Constant_ТипПровайдераЭЦП | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
| CONSTANT | Constant_ТипЦенПлановойСебестоимостиНоменклатуры | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value_Key, SurrogateKey, Value@navigationLinkUrl | Value_Key | reference -> Unknown:12 | LOW | P2 |
| CONSTANT | Constant_УведомлятьОбОшибкахМеханизмаОнлайнСервисовРО | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
| CONSTANT | Constant_УдалитьИспользоватьОзнакомлениеСЭлектроннымиДокументами | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
| CONSTANT | Constant_УчетЗарплатыИКадровВоВнешнейПрограмме | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
| CONSTANT | Constant_ФайлКонфигурацииДляОбновления | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value_Type, Value_Base64Data, SurrogateKey | Value_Type | | LOW | P2 |
| CONSTANT | Constant_ФайлОбработкиИнтернетПоддержкиПользователей | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value_Type, Value_Base64Data, SurrogateKey | Value_Type | | LOW | P2 |
| CONSTANT | Constant_ХранитьФайлыВТомахНаДиске | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
| CONSTANT | Constant_ШаблоныТелефонныхНомеров | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value_Type, Value_Base64Data, SurrogateKey | Value_Type | | LOW | P2 |
| DOCUMENT | Document_АктОбОказанииПроизводственныхУслуг | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to counterparties; linked to account dimension; linked to organization dimension | Ref_Key, DataVersion, DeletionMark, Number, Date, Posted, Организация_Key, Контрагент_Key (+32) | Date, Number, Posted, Ref_Key, ВалютаДокумента_Key, ДоговорКонтрагента_Key, Исполнитель_Key, Контрагент_Key (+9) | document_line_has_account -> Account:48, document_has_counterparty -> Counterparty:36, document_belongs_to_organization -> Organization:12, document_has_currency -> Currency:12, document_has_responsible -> ResponsiblePerson:12, reference -> Unknown:12 | HIGH | P0 |
| DOCUMENT | Document_АктОбОказанииПроизводственныхУслуг_Услуги | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to account dimension | Ref_Key, LineNumber, Количество, Номенклатура_Key, Цена, Сумма, СтавкаНДС, СуммаНДС (+14) | LineNumber, Ref_Key, Номенклатура_Key, НоменклатурнаяГруппа_Key, Спецификация_Key, Субконто_Type, СчетДоходов_Key, СчетЗатрат_Key (+2) | document_line_has_account -> Account:36, document_line_has_item -> Item:12 | HIGH | P0 |
| DOCUMENT | Document_РегламентнаяОперация_Ошибки | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events | Ref_Key, LineNumber, Описание | LineNumber, Ref_Key | | HIGH | P0 |
| DOCUMENT | Document_СчетФактураВыданный_ДатаНомерДокументовОплаты | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to account dimension | Ref_Key, LineNumber, ДатаПлатежноРасчетногоДокумента, НомерПлатежноРасчетногоДокумента | LineNumber, Ref_Key | document_line_has_account -> Account:24 | HIGH | P0 |
| OTHER | ExchangePlan_ОбменРозницаБухгалтерия20 | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Auxiliary entity layer | Ref_Key, DataVersion, DeletionMark, Code, Description, SentNo, ReceivedNo, ИспользоватьИнформациюОМестеСозданияОбъектовПриВыгрузкеИЗагрузкеДанных | Code, Description, Ref_Key | | LOW | P2 |
| OTHER | ExchangePlan_ОбменРозницаБухгалтерияПредприятия | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Auxiliary entity layer | Ref_Key, DataVersion, DeletionMark, Code, Description, SentNo, ReceivedNo, ИспользоватьОтборПоОрганизациям (+8) | Code, Description, Ref_Key | | LOW | P2 |
| OTHER | ExchangePlan_ОбменУправлениеНебольшойФирмойБухгалтерия20 | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Auxiliary entity layer | Ref_Key, DataVersion, DeletionMark, Code, Description, SentNo, ReceivedNo, ДатаНачалаВыгрузкиДокументов (+11) | Code, Description, Ref_Key, Контрагент_Key, Подразделение_Key, Склад_Key, СпособОтраженияРасходов_Key, СтатьяЗатрат_Key (+1) | | LOW | P2 |
| OTHER | ExchangePlan_ОбменУправлениеТорговлейБухгалтерияКОРП | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Auxiliary entity layer | Ref_Key, DataVersion, DeletionMark, Code, Description, SentNo, ReceivedNo, ДатаНачалаВыгрузкиДокументов (+3) | Code, Description, Ref_Key | | LOW | P2 |
| OTHER | ExchangePlan_ОбменУправлениеТорговлейБухгалтерияКОРПФоновый | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Auxiliary entity layer | Ref_Key, DataVersion, DeletionMark, Code, Description, SentNo, ReceivedNo | Code, Description, Ref_Key | | LOW | P2 |
| OTHER | ExchangePlan_ОбменУправлениеТорговлейБухгалтерияПредприятия | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Auxiliary entity layer | Ref_Key, DataVersion, DeletionMark, Code, Description, SentNo, ReceivedNo, ДатаНачалаВыгрузкиДокументов (+11) | Code, Description, Ref_Key, НоменклатурнаяГруппаПоУмолчанию_Key, СтатьяПрочихДоходовРасходов_ОприходованиеТоваров_Key | | LOW | P2 |
| OTHER | ExchangePlan_ПоОрганизации | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Auxiliary entity layer | Ref_Key, DataVersion, DeletionMark, Code, Description, SentNo, ReceivedNo, Организации | Code, Description, Ref_Key | | LOW | P2 |
| OTHER | ExchangePlan_Полный | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Auxiliary entity layer | Ref_Key, DataVersion, DeletionMark, Code, Description, SentNo, ReceivedNo | Code, Description, Ref_Key | | LOW | P2 |
## P0 Ready (address-query first pass)
P0 candidates were assigned automatically based on entity family and observable filter/relationship signals.
Detailed machine-readable list:
- `docs/ADDRESS/runs/2026-03-29_Address_Query_Entity_Inventory_2020/entity_inventory_p0_candidates.json`
Total P0 candidates: **118**.
@@ -0,0 +1,93 @@
# Address Query — Execution Lineup V1 (Project Sync)
Дата: 2026-03-29
## Принцип выполнения
Один пакет, последовательные subwave, без большого неразмеченного рефакторинга.
## Subwave M0 — Contracts and Foundations (No behavior change)
Цель: добавить контракты и каркас без переключения runtime.
- `question_mode/address_intent` contracts;
- address debug contract;
- base recipe schema;
- semantic registry skeleton (P0 entities only).
Артефакты:
- `docs/ADDRESS/runs/<run_id>/M0_contracts_report.md`
- `contracts_diff.md`
## Subwave M1 — Classifier + Intent + Filter Pipeline
Цель: научить runtime распознавать address mode и извлекать фильтры.
- mode classifier;
- P0 intent resolver;
- filter extractor + validator;
- resolver subset (counterparty/contract/account/document_type/organization).
Артефакты:
- `intent_resolution_matrix.md`
- `filter_extraction_audit.json`
- `resolver_ambiguity_cases.md`
## Subwave M2 — Recipe + MCP Execution (Live-first)
Цель: связать intents с whitelist recipes и реальным MCP execution.
- recipe selector;
- address MCP executor;
- live-first policy;
- controlled fallback (no silent snapshot).
Артефакты:
- `recipe_selection_report.md`
- `live_call_inventory_address.json`
- `fallback_policy_audit.md`
## Subwave M3 — Factual Answer Composer + Debug
Цель: стабильный factual output в едином контракте.
- `FACTUAL_LIST` / `FACTUAL_SUMMARY` / `LIMITED_WITH_REASON`;
- compact output для текущей оболочки диалога;
- debug payload fields finalized.
Артефакты:
- `answer_contract_examples.md`
- `debug_payload_samples/`
## Subwave M4 — Live Acceptance Rerun
Контрольный набор:
1. кто должен нам на сегодня;
2. кому должны мы;
3. какие договоры не закрыты;
4. остаток по 60 на дату;
5. какие документы формируют остаток.
Acceptance gates:
- correct mode routing for P0 queries;
- non-empty factual outputs on expected-positive live cases;
- `false_factual_rate = 0`;
- no regression in deep-analysis path.
Артефакты:
- `chat_export_address_live.md`
- `address_case_matrix.md`
- `before_after_metrics.json`
- `run_summary.json`
## Что делаем сразу
- Сегодня стартуем с `M0` и `M1` (контракты + классификация/фильтры).
- После этого сразу поднимаем `M2` для 2 первых intents (`payables/receivables`).
@@ -0,0 +1,74 @@
# Known Positive Live Suite V1
Date: 2026-03-29
Purpose: separate usefulness acceptance from safety-only dry runs.
## Why this suite exists
Broad prompts like `who owes us today` are useful for routing checks, but they often end with `empty_match`.
This is expected in early V1 and does not prove factual usefulness.
So V1 acceptance must include a dedicated known-positive suite where data is expected to exist.
## Suite design
For each case, pre-lock:
- organization (if needed);
- period (`as_of_date` or `period_from` + `period_to`);
- one concrete anchor (`counterparty` / `contract` / `account`);
- expected recipe;
- minimum expected evidence (`rows_matched > 0`).
## Required case groups (V1)
1. `account_balance_snapshot` positive
- Question example: `show account balance 60 as of 2020-07-31`
- Expected: non-empty or explicit account-level totals.
2. `documents_by_counterparty` positive
- Question example: `show documents by counterparty <known_name> from 2020-07-01 to 2020-07-31`
- Expected: factual list, non-empty.
3. `bank_operations_by_counterparty` positive
- Question example: `show bank operations by counterparty <known_name> from 2020-07-01 to 2020-07-31`
- Expected: factual list, non-empty.
4. `documents_forming_balance` positive
- Question example: `which documents form balance for account 62 as of 2020-07-31`
- Expected: drilldown list, non-empty.
5. `open_items_by_contract` positive (after resolver/recipe upgrade)
- Question example: `show open items by contract <known_contract> as of 2020-07-31`
- Expected: non-empty or explicit limited with resolver ambiguity reason.
## Debug fields to require
- `detected_mode`
- `query_shape`
- `detected_intent`
- `selected_recipe`
- `mcp_call_status`
- `rows_fetched`
- `rows_matched`
- `runtime_readiness`
- `limited_reason_category`
- resolver block (planned):
- `anchor_type`
- `anchor_value_raw`
- `anchor_value_resolved`
- `resolver_confidence`
- `ambiguity_count`
## Metrics for known-positive suite
- `known_positive_case_count`
- `known_positive_non_empty_rate`
- `known_positive_factual_rate`
- `known_positive_limited_rate`
- `known_positive_false_factual_rate` (must stay 0)
## Acceptance note
This suite is mandatory starting from Sprint B.
Without it, runs measure safety only (`LIMITED_WITH_REASON`) and cannot prove practical value.
@@ -0,0 +1,105 @@
# Query Recipes V1 (Address Query)
Дата: 2026-03-29
Контур: Stage 4, отдельная ветка `question_mode=address_query`
## 1) Safe Access Contract
Цепочка должна быть строго управляемой:
`intent -> filters -> recipe -> MCP -> factual result`
Ограничения:
- LLM не генерирует произвольный SQL/1C-запрос.
- LLM выбирает только `recipe_id` из каталога и заполняет параметры.
- Любой нераспознанный или рискованный случай возвращается как `LIMITED_WITH_REASON` или уходит в deep-analysis.
## 2) Entity Catalog (P0 for address-query)
Базовые семейства для V1:
- `ACCOUNTING_REGISTER` (`AccountingRegister_Хозрасчетный*`)
- `DOCUMENT` (`СписаниеСРасчетногоСчета`, `ПоступлениеНаРасчетныйСчет`, `АктСверкиВзаиморасчетов`, документные линии)
- `DOCUMENT_JOURNAL` (`ДокументыПоставщиков`, `ДокументыПокупателей`, `БанковскиеВыписки`)
- `NSI_CATALOG` (`ДоговорыКонтрагентов`, плюс фильтровые справочники)
- `CHART_OF_ACCOUNTS` (`Хозрасчетный`)
## 3) Filter Catalog
| filter | type | required_when | notes |
|---|---|---|---|
| `period_from` | date (`YYYY-MM-DD`) | turnover/list-by-period intents | начало периода |
| `period_to` | date (`YYYY-MM-DD`) | turnover/list-by-period intents | конец периода |
| `as_of_date` | date (`YYYY-MM-DD`) | balance/open-items intents | срез на дату |
| `organization` | string/guid | optional | если не задано, берется default company scope |
| `counterparty` | string/guid | required for by-counterparty intents | допускается name->id resolver |
| `contract` | string/guid | required for by-contract intents | допускается number/name->id resolver |
| `account` | string (`60`, `62.01`, ...) | required for account intents | только validated account tokens |
| `document_type` | enum/string | required for list-by-type | белый список типов |
| `document_ref` | guid/string | required for document drilldown | точечный lookup |
| `status` | enum (`open`, `closed`, `all`) | optional | для open/closed срезов |
| `limit` | int (1..200) | optional | default 50 |
| `sort` | enum (`date_desc`, `amount_desc`, `name_asc`) | optional | default recipe-specific |
## 4) Query Recipe Catalog V1
| recipe_id | purpose | required_params | optional_params | expected_output_schema | sort/limit rules | drilldown_targets |
|---|---|---|---|---|---|---|
| `address.open_contracts.by_asof` | Незакрытые договоры на дату | `as_of_date` | `organization`, `counterparty`, `limit`, `sort` | `contract_ref`, `contract_name`, `counterparty_ref`, `debit`, `credit`, `saldo`, `as_of_date` | default `saldo_desc`, `limit=50` | `address.open_items.by_contract` |
| `address.payables.counterparty_totals` | Кому должны мы | `as_of_date` | `organization`, `account`, `limit` | `counterparty_ref`, `counterparty_name`, `payable_amount`, `doc_count`, `as_of_date` | default `payable_amount_desc`, `limit=50` | `address.open_items.by_counterparty` |
| `address.receivables.counterparty_totals` | Кто должен нам | `as_of_date` | `organization`, `account`, `limit` | `counterparty_ref`, `counterparty_name`, `receivable_amount`, `doc_count`, `as_of_date` | default `receivable_amount_desc`, `limit=50` | `address.open_items.by_counterparty` |
| `address.account.balance_snapshot` | Остаток по счету на дату | `account`, `as_of_date` | `organization`, `limit` | `account`, `debit_balance`, `credit_balance`, `net_balance`, `as_of_date` | default `account_asc`, `limit=20` | `address.balance.drilldown_documents` |
| `address.open_items.by_counterparty` | Открытые позиции по контрагенту | `counterparty`, `as_of_date` | `organization`, `contract`, `account`, `limit` | `document_ref`, `document_type`, `document_date`, `contract_ref`, `debit`, `credit`, `open_amount` | default `document_date_desc`, `limit=100` | `address.documents.by_contract` |
| `address.open_items.by_contract` | Открытые позиции по договору | `contract`, `as_of_date` | `organization`, `counterparty`, `account`, `limit` | `document_ref`, `document_type`, `document_date`, `counterparty_ref`, `debit`, `credit`, `open_amount` | default `document_date_desc`, `limit=100` | `address.documents.by_contract` |
| `address.documents.by_counterparty` | Документы контрагента за период | `counterparty`, `period_from`, `period_to` | `organization`, `document_type`, `limit`, `sort` | `document_ref`, `document_type`, `number`, `date`, `amount`, `posted` | default `date_desc`, `limit=100` | `address.documents.by_contract` |
| `address.bank_ops.by_counterparty` | Банковские операции по контрагенту | `counterparty` | `period_from`, `period_to`, `organization`, `limit`, `sort` | `document_ref`, `document_type`, `number`, `date`, `amount`, `posted`, `bank_account_hint` | default `date_desc`, `limit=100` | `address.documents.by_counterparty` |
| `address.documents.by_contract` | Документы договора за период | `contract`, `period_from`, `period_to` | `organization`, `document_type`, `limit`, `sort` | `document_ref`, `document_type`, `number`, `date`, `amount`, `posted` | default `date_desc`, `limit=100` | `address.balance.drilldown_documents` |
| `address.balance.drilldown_documents` | Расшифровка остатка до документов | `account`, `as_of_date` | `organization`, `counterparty`, `contract`, `limit` | `document_ref`, `document_type`, `number`, `date`, `debit`, `credit`, `delta` | default `date_desc`, `limit=150` | `address.documents.by_counterparty` |
## 5) Result Schema (Unified)
```json
{
"question_mode": "address_query",
"intent": "list_payables_counterparties",
"recipe_id": "address.payables.counterparty_totals",
"filters": {
"as_of_date": "2026-03-29",
"organization": "<optional>",
"limit": 50
},
"result_mode": "FACTUAL_SUMMARY",
"summary": {
"rows": 12,
"total_amount": 1543200.50,
"currency": "RUB"
},
"rows": [
{
"counterparty_name": "ООО Альфа",
"payable_amount": 450000.00,
"doc_count": 7
}
],
"limitations": []
}
```
## 6) Answer Contract
- `FACTUAL_LIST`: короткий вывод + список строк + totals.
- `FACTUAL_SUMMARY`: агрегат + top строки + предложение уточнить фильтр при большом объеме.
- `LIMITED_WITH_REASON`: честная причина ограничения (`missing_required_filters`, `live_unavailable`, `no_matches_for_filters`, `unsupported_for_address_query_v1`).
## 7) MCP Execution Notes
- Runtime вызывает MCP proxy (`/api/execute_query`) только с query-template из recipe и параметрами после валидации.
- Для V1 все recipe выполняются в `read-only` режиме.
- Ограничения на выборку (`limit`) и сортировки фиксируются recipe-контрактом, а не свободным текстом вопроса.
## 8) Account Scope Strategy (M2.3b)
- `account_balance_snapshot` and `documents_forming_balance` use `strict` account scope.
- counterparty-oriented recipes use `preferred` account scope with runtime fallback to raw rows when scope gives zero rows.
- this keeps account-intent precision while preventing blind row loss on party intents.
@@ -0,0 +1,64 @@
# Question Bank V1 — Address Query
Дата: 2026-03-29
## A. Задолженность и хвосты
- кто должен нам на сегодня
- кому должны мы на сегодня
- какие хвосты висят по контрагенту
- какие хвосты висят по договору
- у кого самый большой долг перед нами
- кому больше всего должны мы
## B. Счета и остатки
- какой остаток по 60 на дату
- какой остаток по 62 на дату
- что висит на 60 счете
- какие документы формируют остаток по 62
- оборот по 60 за период
## C. Договоры
- какие договоры не закрыты
- что по договору 15/24
- есть ли долг по договору с Альфой
- какие документы связаны с этим договором
## D. Документы
- покажи документы по контрагенту Альфа за период
- покажи документы по договору за период
- найди документ по номеру и дате
- покажи проведенные документы по организации
## E. Bank/Payment lookup
- какие платежи были по Альфе
- были ли поступления от Беты
- покажи списания с расчетного счета по договору
- найди оплату на сумму 150000
## F. Drilldown
- кто должен нам и какие документы это формируют
- что висит по Альфе и раскрой по документам
- по 60 счету что висит и раскрой по контрагентам
## G. Составные factual вопросы
- покажи хвосты по Альфе и отдельно по Бете
- кто должен нам и отдельно кому должны мы
- найди долг по договору и покажи документы
## H. Check/verify (still factual)
- проверь, есть ли долг по Альфе
- проверь, есть ли незакрытые документы
- проверь, что висит на 60 счете
## Правило маршрутизации
- если вопрос = factual lookup -> `address_query`
- если вопрос = why/prove/causal diagnosis -> `deep_analysis`
@@ -0,0 +1,181 @@
# Runtime Integration Plan (question_mode=address_query)
Дата: 2026-03-29
## 1) Цель интеграции
Добавить отдельный runtime-контур для быстрых адресных запросов к 1С через MCP, не ломая существующий Stage 4 deep-analysis path.
## 2) As-Is (подтверждено кодом)
Текущий assistant pipeline:
1. normalizer -> route summary
2. execution plan по deep-routes
3. `assistantDataLayer.executeRouteRuntime(...)`
4. admissibility / eligibility guards
5. answer composer
Ключевые точки в текущем коде:
- `llm_normalizer/backend/src/services/assistantService.ts`
- `llm_normalizer/backend/src/services/routeHintAdapter.ts`
- `llm_normalizer/backend/src/services/assistantDataLayer.ts`
- `llm_normalizer/backend/src/services/assistantRuntimeGuards.ts`
- `llm_normalizer/backend/src/services/answerComposer.ts`
## 3) To-Be: Separate Address Lane
Новый high-level flow:
1. Входящий вопрос.
2. Mode-classifier: `address_query` | `deep_analysis` | `unsupported`.
3. Если `address_query`:
- resolve `address_intent`;
- extract+validate filters;
- select recipe;
- execute MCP (live-first);
- normalize result schema;
- return factual answer.
4. Если не `address_query`: текущий deep path без изменений.
## 4) Встраивание по слоям
### 4.1 Normalizer / Routing Layer
Изменения:
- добавить `question_mode` и `address_intent` в normalizer contract;
- в `routeHintAdapter` добавить address-query rule set до deep route discipline.
Рекомендуемые файлы:
- `llm_normalizer/backend/src/types/normalizer.ts`
- `llm_normalizer/backend/src/services/routeHintAdapter.ts`
### 4.2 Assistant Service Orchestration
Изменения:
- в `AssistantService.processMessage(...)` добавить раннюю развилку по `question_mode`;
- для `address_query` запускать отдельный pipeline (без claim-bound deep-chain).
Рекомендуемый новый сервис:
- `llm_normalizer/backend/src/services/addressQueryService.ts`
### 4.3 Intent + Filter Extraction
Новые компоненты:
- `addressIntentResolver.ts`
- `addressFilterExtractor.ts`
- `addressFilterValidator.ts`
Выход контракта:
- `detected_mode`
- `detected_intent`
- `required_filters`
- `resolved_filters`
- `missing_filters`
### 4.4 Recipe Selection + MCP Execution
Новые компоненты:
- `addressRecipeCatalog.ts` (статический whitelist recipes)
- `addressRecipeSelector.ts`
- `addressMcpExecutor.ts`
Правила:
- только whitelist `recipe_id`;
- live-first; snapshot только explicit fallback;
- hard limit на строки и fixed sorting profile.
### 4.5 Result Materialization + Answer Composer
Новые компоненты:
- `addressResultMaterializer.ts`
- `addressAnswerComposer.ts`
Режимы ответа:
- `FACTUAL_LIST`
- `FACTUAL_SUMMARY`
- `LIMITED_WITH_REASON`
### 4.6 Debug/Trace Contract
Минимальный debug блок для address lane:
- `detected_mode`
- `detected_intent`
- `extracted_filters`
- `selected_recipe`
- `mcp_call_status`
- `rows_fetched`
- `rows_matched`
- `response_type`
## 5) Fallback Rules
- Если mode=`address_query`, но `missing_required_filters` -> `LIMITED_WITH_REASON` (без silent fallback в deep).
- Если mode=`address_query`, но `intent` не поддержан -> `LIMITED_WITH_REASON` или controlled handoff в deep-path с явной пометкой.
- Если live недоступен -> `LIMITED_WITH_REASON: live_unavailable`.
## 5.1) Compound factual scope (M2.1 real status)
- `COMPOUND_FACTUAL_QUERY` is currently **detection-only**.
- Runtime does **not** execute multi-intent decomposition yet.
- Current behavior for compound prompts:
- one selected intent;
- one selected recipe;
- one factual/limited output block.
- Multi-step decomposition (`subquery planning -> per-subquery execution -> stitched composer`) is planned for V1.1.
## 6) Safety Guardrails
- Никакого free-form query generation от LLM.
- Query только через recipe whitelist.
- Все параметры проходят типовую и value-валидацию.
- Account anchors — только validated account tokens (исключая date/amount pollution).
- Read-only MCP profile для address lane.
## 7) Minimal Implementation Queue
1. `M0`: контракты (`question_mode`, `address_intent`, filter schema, recipe schema).
2. `M1`: classifier + resolver + validator (без MCP execution).
3. `M2`: MCP executor + 5 P0 recipe.
4. `M3`: factual composer + debug payload + basic tests.
5. `M4`: live rerun pack в `docs/ADDRESS/runs/...`.
## 7.1) Sprint B priority order (adapted to current reality)
1. `documents_by_counterparty`
2. `bank_operations_by_counterparty`
3. `documents_forming_balance`
4. `documents_by_contract`
5. `bank_operations_by_contract`
Rationale:
- start from anchors with higher resolver stability (counterparty first);
- unlock early positive evidence before contract-heavy variants;
- keep contract scenarios behind anchor-resolution hardening.
## 8) Out of Scope for V1
- Новый proof engine.
- Расширение доменов beyond P0 address intents.
- Полный redesign deep-stage routing.
- Автоматический свободный доступ к произвольным сущностям 1С.
## 9) Expected Acceptance (V1)
- Deep-analysis path не деградировал.
- Address intents из P0 стабильно маршрутизируются в MCP/live-first lane.
- Factual-ответы по P0 сценариям возвращаются в предсказуемом формате.
- `false_factual_rate = 0`.
@@ -0,0 +1,51 @@
# Runtime Readiness Matrix V1 (M2.3b)
Дата: 2026-03-29
Формат: `scenario -> structural_readiness -> runtime_readiness -> blocker`
## Статусы
- `STRUCTURALLY_VISIBLE` - сущность подтверждена в snapshot/inventory.
- `LIVE_QUERYABLE` - в текущем live path можно дать factual без натяжек.
- `LIVE_QUERYABLE_WITH_LIMITS` - live path работает, но часто нужен дополнительный anchor.
- `REQUIRES_SPECIALIZED_RECIPE` - базовый movement recipe недостаточен для materialization.
- `DEEP_ONLY` - сценарий не относится к address V1.
## Матрица (P0/P1)
| scenario_id | scenario | structural_readiness | runtime_readiness | current_blocker | next_action |
|---|---|---|---|---|---|
| AQ-P0-01 | list_open_contracts | STRUCTURALLY_VISIBLE | REQUIRES_SPECIALIZED_RECIPE | weak contract anchors in movement rows | добавить object-aware recipe (`documents/contracts`) |
| AQ-P0-02 | list_payables_counterparties | STRUCTURALLY_VISIBLE | LIVE_QUERYABLE_WITH_LIMITS | empty matches on narrow filters | расширить live evidence pack по контрагентам |
| AQ-P0-03 | list_receivables_counterparties | STRUCTURALLY_VISIBLE | LIVE_QUERYABLE_WITH_LIMITS | empty matches on narrow filters | улучшить фильтрацию и fallback hints |
| AQ-P0-04 | account_balance_snapshot | STRUCTURALLY_VISIBLE | LIVE_QUERYABLE_WITH_LIMITS | dry-run frequently returns `empty_match` on broad `today` filters | lock data-aware positive account/date fixtures |
| AQ-P0-05 | open_items_by_counterparty_or_contract (counterparty) | STRUCTURALLY_VISIBLE | LIVE_QUERYABLE_WITH_LIMITS | missing counterparty anchor in short phrases | усилить anchor-first extraction |
| AQ-P0-06 | open_items_by_counterparty_or_contract (contract) | STRUCTURALLY_VISIBLE | REQUIRES_SPECIALIZED_RECIPE | movement rows often miss contract linkage | двухшаговый path: anchor resolution -> focused recipe |
| AQ-P0-07 | documents_by_counterparty | STRUCTURALLY_VISIBLE | LIVE_QUERYABLE_WITH_LIMITS | implemented path, but dry-run still often `empty_match` on current anchors/period | expand data-aware positive fixtures and improve resolver targeting |
| AQ-P0-07B | bank_operations_by_counterparty | STRUCTURALLY_VISIBLE | LIVE_QUERYABLE_WITH_LIMITS | implemented path, but dry-run still often `empty_match` on current anchors/period | expand data-aware positive fixtures and tighten bank-doc targeting |
| AQ-P0-08 | documents_by_contract | STRUCTURALLY_VISIBLE | REQUIRES_SPECIALIZED_RECIPE | by-contract live recipe not implemented in runtime V1 | add contract-aware document-list recipe with resolver confidence gate |
| AQ-P0-09 | documents_forming_balance | STRUCTURALLY_VISIBLE | LIVE_QUERYABLE_WITH_LIMITS | implemented, but stage diagnostic shows loss before materialization | diagnose and tune account-scope filtering for live recipes |
| AQ-P1-10 | account_turnover_snapshot | STRUCTURALLY_VISIBLE | LIVE_QUERYABLE_WITH_LIMITS | not in current intent set | расширение intents V1.1 |
## Примечание
Матрица разделяет "видимость сущности в inventory" и "операционную готовность live-runtime".
Это обязательная опора для приоритезации Sprint B, чтобы не путать structural coverage и runtime proofability.
### Sync note (M2.3b -> live dry-run)
`account_balance_snapshot` intentionally remains `LIVE_QUERYABLE_WITH_LIMITS`.
Reason: dry-run still shows repeatable `empty_match` on broad `as_of=today` prompts.
Promote to `LIVE_QUERYABLE` only after data-aware positive live cases are stable.
`documents_forming_balance` is implemented with strict account-scope path.
Validation should be based on data-aware acceptance suite, not only safety dry-run.
Stage-diagnostic replay (M2.3b) shows split-stage behavior:
`D1-D3`: `raw_rows_received > 0` with `rows_after_account_scope = 0` (strict account intents).
`D4-D5`: `rows_after_account_scope > 0` and `rows_materialized > 0`, but `rows_after_recipe_filter = 0` (preferred mode progressed to matching stage).
Current bottleneck moved forward for non-account intents: resolver/filter matching after materialization.
`COMPOUND_FACTUAL_QUERY` currently remains detection-only.
Multi-intent decomposition execution is not part of M2.3b and tracked for next increment.
@@ -0,0 +1,76 @@
# Semantic Layer Design (Address Query Foundation V1)
Дата: 2026-03-29
## 1) Layer components
- `semanticEntityRegistry`
- `semanticAliasMap`
- `semanticResolvers`
- `semanticFilterCatalog`
- `addressRecipeCatalog`
## 2) Entity registry (V1)
Источник: `entity_map_1c_2020.md` + run inventories.
P0 families:
- ACCOUNTING_REGISTER
- DOCUMENT
- DOCUMENT_JOURNAL
- NSI_CATALOG (contracts)
- CHART_OF_ACCOUNTS
## 3) Alias normalization
Задача: приводить бытовые формулировки к канонике.
Примеры:
- "дебиторка" -> receivables scope
- "кредиторка" -> payables scope
- "платежка" -> bank/payment docs
- "хвост" -> open items / residual balances
## 4) Resolver contracts
Каждый resolver возвращает:
- `resolved_value`
- `resolved_ref`
- `confidence`
- `ambiguous_candidates[]`
## 5) Filter catalog
Базовые фильтры:
- as_of_date
- period_from/period_to
- organization
- counterparty
- contract
- account
- document_type
- document_ref
- status
- limit/sort
## 6) Recipe binding
LLM выбирает только `recipe_id` из whitelist.
Никаких произвольных query generation.
## 7) Evolution path
V1:
- P0 entities + P0 intents
V1.1:
- расширенный resolver coverage
- richer decomposition
- P1 intents
@@ -0,0 +1,43 @@
# UI Dry Run Checklist V1
Дата: 2026-03-29
## Перед стартом
1. Backend health: `GET /api/health` == RUNNING.
2. MCP execute endpoint доступен: `POST /api/execute_query?channel=...`.
3. Флаги:
- `FEATURE_ASSISTANT_ADDRESS_QUERY_V1=1`
- `FEATURE_ASSISTANT_ADDRESS_QUERY_LIVE_V1=1`
## На каждый вопрос фиксируем
- `detected_mode`
- `detected_intent`
- `selected_recipe`
- `mcp_call_status`
- `rows_fetched`
- `rows_matched`
- `response_type`
## PASS критерии dry-run
1. Mode routing:
- все 5 вопросов -> `detected_mode=address_query`.
2. Intent routing:
- intent совпадает с ожидаемым для каждого вопроса.
3. Recipe selection:
- `selected_recipe` не пустой для поддержанных intents.
4. Safety:
- `false factual` отсутствует;
- при нехватке данных — `LIMITED_WITH_REASON` с конкретной причиной.
## FAIL признаки
- вопрос уходит в deep-path при явной address формулировке;
- `intent=unknown` для базовых 5 вопросов;
- `selected_recipe=null` для поддержанного intent;
- фактический ответ при пустых matched rows без limitation.
@@ -0,0 +1,39 @@
# UI Dry Run Question Set V1
Дата: 2026-03-29
## Цель
Быстрый dry-run через окно ассистента для проверки `address_query` lane (MCP-first).
## Набор из 5 запросов
1. `кто должен нам на сегодня`
- intent target: `list_receivables_counterparties`
2. `кому должны мы на сегодня`
- intent target: `list_payables_counterparties`
3. `покажи остаток по счету 60 на сегодня`
- intent target: `account_balance_snapshot`
4. `какие договоры не закрыты`
- intent target: `list_open_contracts`
5. `покажи открытые позиции по договору 01/19-ПТ`
- intent target: `open_items_by_counterparty_or_contract`
## Дополнительные позитивные вариации
- `who owes us today`
- `who we owe today`
- `show account balance 60`
- `list open contracts`
- `open items by contract 01/19-PT`
## Правило оценки
- `detected_mode` должен быть `address_query`.
- `detected_intent` должен совпасть с target.
- `selected_recipe` должен быть не `null` (кроме явно unsupported кейсов).
- `response_type` допустим как `FACTUAL_*` или честный `LIMITED_WITH_REASON`.
@@ -0,0 +1,20 @@
# Known Positive Live Suite Template
Date: 2026-03-29
Purpose: run pack template for positive-evidence acceptance.
## Required artifacts
- README.md
- run_summary.json
- known_positive_case_matrix.md
- chat_export_known_positive_live.md
- debug_payloads/
- live_call_inventory_address.json
## Core rule
Each case must be pre-anchored (account/counterparty/contract + period), and expected to produce non-empty data.
If result is limited, reason must be explicit (`missing_anchor`, `recipe_visibility_gap`, etc).
@@ -0,0 +1,11 @@
{
"run_id": "2026-03-29_Address_Query_Known_Positive_Live_Suite_Template",
"suite_type": "positive_evidence",
"status": "TEMPLATE",
"metrics": {
"known_positive_case_count": 0,
"known_positive_non_empty_rate": 0,
"known_positive_factual_rate": 0,
"known_positive_false_factual_rate": 0
}
}
@@ -0,0 +1,43 @@
# Address Query Runtime V1 — M0/M1/M2 Baseline Start
Дата: 2026-03-29
Статус: IMPLEMENTED_BASELINE
## Что сделано
- Добавлен отдельный address-query контур в backend (`question_mode` detection на runtime-ветке ассистента).
- Добавлены контракты `addressQuery` и debug-поля address lane.
- Добавлены сервисы:
- classifier
- intent resolver
- filter extractor
- recipe catalog
- MCP client
- address query orchestrator
- В `assistantService` добавлена ранняя развилка:
- если вопрос адресный и поддержан -> address lane;
- иначе -> без изменений в существующий deep-analysis path.
## Что покрыто сейчас
- Базовые P0 intents с recipe:
- `list_payables_counterparties`
- `list_receivables_counterparties`
- `account_balance_snapshot`
- Неподдержанные intent'ы в V1 возвращают `LIMITED_WITH_REASON`.
- Live-first execution через MCP `/api/execute_query`.
## Важные ограничения baseline
- Текущие recipe используют movement snapshot query из `РегистрБухгалтерии.Хозрасчетный`.
- Для `list_open_contracts` и `open_items_by_counterparty_or_contract` пока только controlled limited mode.
- Factual-ответы пока строятся по движениям и account-scope, без полноценного object-level contract closure.
## Проверка
- `npm run build` (backend) — PASSED.
## Следующий шаг
- Расширить recipe whitelist под object-level адресные сценарии (contracts/open items/documents by counterparty/contract).
- Добавить acceptance live-run pack по 5 P0 вопросам address lane.
@@ -0,0 +1,11 @@
llm_normalizer/backend/src/types/addressQuery.ts
llm_normalizer/backend/src/services/addressQueryClassifier.ts
llm_normalizer/backend/src/services/addressIntentResolver.ts
llm_normalizer/backend/src/services/addressFilterExtractor.ts
llm_normalizer/backend/src/services/addressRecipeCatalog.ts
llm_normalizer/backend/src/services/addressMcpClient.ts
llm_normalizer/backend/src/services/addressQueryService.ts
llm_normalizer/backend/src/services/assistantService.ts
llm_normalizer/backend/src/types/assistant.ts
llm_normalizer/backend/src/config.ts
llm_normalizer/.env.example
@@ -0,0 +1,18 @@
{
"run_id": "2026-03-29_Address_Query_Runtime_V1_M0_M1_M2_Baseline_Start",
"date": "2026-03-29",
"scope": "address_query_runtime_bootstrap_to_code",
"status": "IMPLEMENTED_BASELINE",
"build_status": "PASSED",
"deep_path_regression_expected": "none (no deep-path contract change)",
"implemented": {
"address_mode_runtime_branch": true,
"intent_filter_recipe_pipeline": true,
"mcp_live_query_executor": true,
"address_debug_contract": true
},
"limitations": [
"open_contracts and open_items intents still limited",
"movement-based recipes only in baseline"
]
}
@@ -0,0 +1,22 @@
# Verification
Дата: 2026-03-29
## 1) TypeScript build
Команда: `npm run build` (backend)
Результат: PASS
## 2) Address lane smoke checks
Команды проверок (node scripts against `dist/`):
- `detectAddressQuestionMode('who owes us today')` -> `address_query`
- `AddressQueryService.tryHandle('who owes us today')` -> handled=true
- `AssistantService.handleMessage('who owes us today')` with normalizer stub -> ранний `assistant_message_address` path (normalizer не требуется)
Результат: PASS
## Примечание
Live MCP вернул `rows_fetched>0`, но `rows_matched=0` для receivables scope в тестовом запросе, поэтому ответ в `LIMITED_WITH_REASON` — это ожидаемое честное поведение на текущем baseline.
@@ -0,0 +1,29 @@
# Run README — Address Query Runtime V1 M2.1
Дата: 2026-03-29
Run ID: `2026-03-29_Address_Query_Runtime_V1_M2_1_QueryShape_LimitedTaxonomy`
## Цель инкремента
Зафиксировать следующий шаг по согласованному плану:
- добавить `query_shape` в address-runtime debug;
- зафиксировать, что `COMPOUND_FACTUAL_QUERY` в M2.1 пока only-detection (без decomposition execution);
- развести limited-mode по категориям причин:
- `empty_match`
- `missing_anchor`
- `recipe_visibility_gap`
- `execution_error`
- `unsupported`
- добавить runtime-readiness статус в ответ address lane;
- не ломать deep-path и не допускать false-factual.
## Что проверено
- `npm run build` — PASS.
- `vitest` таргет на новый слой (`tests/addressQueryRuntimeM21.test.ts`) — PASS.
- dry-run через `/api/assistant/message` на 7 вопросах — сохранен в `assistant_window_dry_run_results.json`.
## Основной вывод
Address lane продолжает стабильно маршрутизироваться и теперь дает структурированную операционную диагностику причины ограничения. Основной блокер остался прежним: недостаточная видимость данных в текущих movement-based recipes для contract/document-heavy сценариев.
@@ -0,0 +1,138 @@
{
"generated_at": "2026-03-29T16:04:06.939Z",
"questions": [
{
"id": "Q1",
"question": "who owes us today",
"expected_intent": "list_receivables_counterparties",
"http_status": 200,
"ok": true,
"detected_mode": "address_query",
"query_shape": "AGGREGATE_LOOKUP",
"detected_intent": "list_receivables_counterparties",
"selected_recipe": "address_movements_receivables_v1",
"mcp_call_status": "empty",
"rows_fetched": 20,
"rows_matched": 0,
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
"limited_reason_category": "empty_match",
"response_type": "LIMITED_WITH_REASON",
"reply_type": "partial_coverage",
"assistant_reply_preview": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
},
{
"id": "Q2",
"question": "who we owe today",
"expected_intent": "list_payables_counterparties",
"http_status": 200,
"ok": true,
"detected_mode": "address_query",
"query_shape": "AGGREGATE_LOOKUP",
"detected_intent": "list_payables_counterparties",
"selected_recipe": "address_movements_payables_v1",
"mcp_call_status": "empty",
"rows_fetched": 20,
"rows_matched": 0,
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
"limited_reason_category": "empty_match",
"response_type": "LIMITED_WITH_REASON",
"reply_type": "partial_coverage",
"assistant_reply_preview": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
},
{
"id": "Q3",
"question": "show account balance 60 today",
"expected_intent": "account_balance_snapshot",
"http_status": 200,
"ok": true,
"detected_mode": "address_query",
"query_shape": "AGGREGATE_LOOKUP",
"detected_intent": "account_balance_snapshot",
"selected_recipe": "address_movements_account_snapshot_v1",
"mcp_call_status": "empty",
"rows_fetched": 20,
"rows_matched": 0,
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
"limited_reason_category": "empty_match",
"response_type": "LIMITED_WITH_REASON",
"reply_type": "partial_coverage",
"assistant_reply_preview": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
},
{
"id": "Q4",
"question": "show open items by contract",
"expected_intent": "open_items_by_counterparty_or_contract",
"http_status": 200,
"ok": true,
"detected_mode": "address_query",
"query_shape": "OBJECT_LOOKUP",
"detected_intent": "open_items_by_counterparty_or_contract",
"selected_recipe": null,
"mcp_call_status": "skipped",
"rows_fetched": 0,
"rows_matched": 0,
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
"limited_reason_category": "missing_anchor",
"response_type": "LIMITED_WITH_REASON",
"reply_type": "partial_coverage",
"assistant_reply_preview": "Для точного адресного поиска не хватает обязательного якоря.\nПричина: для open_items нужен якорь контрагента или договора.\nЧто нужно уточнить: укажите контрагента или номер/название договора."
},
{
"id": "Q5",
"question": "list open contracts as of today",
"expected_intent": "list_open_contracts",
"http_status": 200,
"ok": true,
"detected_mode": "address_query",
"query_shape": "OBJECT_LOOKUP",
"detected_intent": "list_open_contracts",
"selected_recipe": "address_open_contracts_candidates_v1",
"mcp_call_status": "empty",
"rows_fetched": 20,
"rows_matched": 0,
"runtime_readiness": "REQUIRES_SPECIALIZED_RECIPE",
"limited_reason_category": "recipe_visibility_gap",
"response_type": "LIMITED_WITH_REASON",
"reply_type": "partial_coverage",
"assistant_reply_preview": "Текущий live recipe не дает нужную видимость данных для этого сценария.\nПричина: в live строках нет договорных якорей для уверенного списка незакрытых договоров.\nЧто нужно уточнить: сузьте запрос по контрагенту или добав"
},
{
"id": "Q6",
"question": "show bank operations by counterparty Alfa",
"expected_intent": "unknown",
"http_status": 200,
"ok": true,
"detected_mode": "address_query",
"query_shape": "DOCUMENT_LIST",
"detected_intent": "unknown",
"selected_recipe": null,
"mcp_call_status": "skipped",
"rows_fetched": 0,
"rows_matched": 0,
"runtime_readiness": "DEEP_ONLY",
"limited_reason_category": "unsupported",
"response_type": "LIMITED_WITH_REASON",
"reply_type": "partial_coverage",
"assistant_reply_preview": "Этот запрос не подходит под address_query V1.\nПричина: intent пока не поддержан в address V1.\nЧто нужно уточнить: переформулируйте вопрос как адресный lookup по счету/контрагенту/договору."
},
{
"id": "Q7",
"question": "who owes us and who we owe today",
"expected_intent": "list_receivables_counterparties",
"http_status": 200,
"ok": true,
"detected_mode": "address_query",
"query_shape": "COMPOUND_FACTUAL_QUERY",
"detected_intent": "list_receivables_counterparties",
"selected_recipe": "address_movements_receivables_v1",
"mcp_call_status": "empty",
"rows_fetched": 20,
"rows_matched": 0,
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
"limited_reason_category": "empty_match",
"response_type": "LIMITED_WITH_REASON",
"reply_type": "partial_coverage",
"assistant_reply_preview": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
}
]
}
@@ -0,0 +1,26 @@
{
"baseline_run": "2026-03-29_Address_Query_Runtime_V1_M2_Plus_OpenContracts_OpenItems",
"current_run": "2026-03-29_Address_Query_Runtime_V1_M2_1_QueryShape_LimitedTaxonomy",
"changes": {
"debug_query_shape": {
"before": false,
"after": true
},
"debug_runtime_readiness": {
"before": false,
"after": true
},
"debug_limited_reason_category": {
"before": false,
"after": true
},
"limited_reason_taxonomy_depth": {
"before": 1,
"after": 4
},
"false_factual_rate": {
"before": 0.0,
"after": 0.0
}
}
}
@@ -0,0 +1,14 @@
llm_normalizer/backend/src/types/addressQuery.ts
llm_normalizer/backend/src/services/addressQueryShapeClassifier.ts
llm_normalizer/backend/src/services/addressQueryService.ts
llm_normalizer/backend/src/services/assistantService.ts
llm_normalizer/backend/src/types/assistant.ts
llm_normalizer/backend/tests/addressQueryRuntimeM21.test.ts
docs/ADDRESS/address_query/address_runtime_contracts.md
docs/ADDRESS/address_query/runtime_readiness_matrix_v1.md
docs/ADDRESS/address_query/README.md
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_1_QueryShape_LimitedTaxonomy/README.md
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_1_QueryShape_LimitedTaxonomy/run_summary.json
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_1_QueryShape_LimitedTaxonomy/smoke_checks.md
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_1_QueryShape_LimitedTaxonomy/before_after_metrics.json
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_1_QueryShape_LimitedTaxonomy/assistant_window_dry_run_results.json
@@ -0,0 +1,34 @@
{
"run_id": "2026-03-29_Address_Query_Runtime_V1_M2_1_QueryShape_LimitedTaxonomy",
"date": "2026-03-29",
"stage": "address_query_runtime_v1",
"scope": "m2_1_query_shape_plus_limited_taxonomy",
"build_status": "PASSED",
"tests_status": "PASSED",
"dry_run_status": "PASSED_WITH_LIMITED_RESULTS",
"implemented": {
"query_shape_classification": true,
"compound_query_execution_status": "detection_only",
"limited_reason_taxonomy": true,
"runtime_readiness_status": true,
"operational_limited_reply_text": true
},
"dry_run_metrics": {
"questions_total": 7,
"address_mode_hit_rate": 1.0,
"query_shape_detected_rate": 1.0,
"intent_alignment_rate": 1.0,
"supported_recipe_selection_rate": 0.7143,
"factual_positive_rate": 0.0,
"limited_mode_rate": 1.0,
"false_factual_rate": 0.0
},
"limited_reason_distribution": {
"empty_match": 4,
"missing_anchor": 1,
"recipe_visibility_gap": 1,
"unsupported": 1,
"execution_error": 0
},
"next_priority": "Sprint B specialized recipes for contract/document visibility"
}
@@ -0,0 +1,35 @@
# Smoke Checks
Дата: 2026-03-29
## Build
- `npm run build` -> PASS
## Tests
- `npx vitest run tests/addressQueryRuntimeM21.test.ts` -> PASS (5/5)
## Dry-run (assistant window equivalent)
Источник: `assistant_window_dry_run_results.json`
- total questions: 7
- `detected_mode=address_query`: 7/7
- `query_shape` detected: 7/7
- expected intent alignment: 7/7
- `selected_recipe` present: 5/7
- `response_type=LIMITED_WITH_REASON`: 7/7
- `false_factual_rate`: 0
### New diagnostics observed
- `query_shape` surfaced in debug payload.
- `runtime_readiness` surfaced in debug payload.
- `limited_reason_category` surfaced in debug payload.
### Limited taxonomy distribution
- `empty_match`: 4
- `missing_anchor`: 1
- `recipe_visibility_gap`: 1
- `unsupported`: 1
- `execution_error`: 0
@@ -0,0 +1,29 @@
# Run README — Address Query Runtime V1 M2.2
Дата: 2026-03-29
Run ID: `2026-03-29_Address_Query_Runtime_V1_M2_2_Documents_BankOps_By_Counterparty`
## Цель инкремента
Сделать следующий практический шаг Sprint B:
- добавить intent `list_documents_by_counterparty`;
- добавить intent `bank_operations_by_counterparty`;
- добавить live recipes для этих intent;
- усилить extraction фильтров периода (`from/to`, `between/and`) и default period для by-counterparty сценариев;
- сохранить safety-контракт (`false_factual_rate = 0`) и честный limited mode.
## Что проверено
- `npm.cmd run build` — PASS.
- `npx.cmd vitest run tests/addressQueryRuntimeM22.test.ts` — PASS (7/7).
- dry-run через `/api/assistant/message` на 6 вопросах — сохранен в `assistant_window_dry_run_results.json`.
## Основной вывод
Address lane расширен на два новых P0-сценария и стабильно маршрутизирует их в правильные intent/recipe. При этом positive factual output пока не достигнут: текущий блокер — live visibility (преобладает `empty_match`), а не routing/intent detection.
## Важное ограничение M2.2
`COMPOUND_FACTUAL_QUERY` по-прежнему только detection-only.
M2.2 не включает multi-intent decomposition execution.
@@ -0,0 +1,162 @@
{
"generated_at": "2026-03-29T16:28:22.969Z",
"questions": [
{
"id": "Q1",
"question": "show documents by counterparty Alfa from 2020-07-01 to 2020-07-31",
"expected_intent": "list_documents_by_counterparty",
"http_status": 200,
"ok": true,
"detected_mode": "address_query",
"query_shape": "DOCUMENT_LIST",
"detected_intent": "list_documents_by_counterparty",
"selected_recipe": "address_documents_by_counterparty_v1",
"extracted_filters": {
"sort": "period_desc",
"limit": 20,
"counterparty": "Alfa",
"period_from": "2020-07-01",
"period_to": "2020-07-31"
},
"missing_required_filters": [],
"mcp_call_status": "empty",
"rows_fetched": 20,
"rows_matched": 0,
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
"limited_reason_category": "empty_match",
"response_type": "LIMITED_WITH_REASON",
"reply_type": "partial_coverage",
"assistant_reply_preview": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
},
{
"id": "Q2",
"question": "show bank operations by counterparty Alfa from 2020-07-01 to 2020-07-31",
"expected_intent": "bank_operations_by_counterparty",
"http_status": 200,
"ok": true,
"detected_mode": "address_query",
"query_shape": "DOCUMENT_LIST",
"detected_intent": "bank_operations_by_counterparty",
"selected_recipe": "address_bank_operations_by_counterparty_v1",
"extracted_filters": {
"sort": "period_desc",
"limit": 20,
"counterparty": "Alfa",
"period_from": "2020-07-01",
"period_to": "2020-07-31"
},
"missing_required_filters": [],
"mcp_call_status": "empty",
"rows_fetched": 20,
"rows_matched": 0,
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
"limited_reason_category": "empty_match",
"response_type": "LIMITED_WITH_REASON",
"reply_type": "partial_coverage",
"assistant_reply_preview": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
},
{
"id": "Q3",
"question": "show bank operations by counterparty Alfa",
"expected_intent": "bank_operations_by_counterparty",
"http_status": 200,
"ok": true,
"detected_mode": "address_query",
"query_shape": "DOCUMENT_LIST",
"detected_intent": "bank_operations_by_counterparty",
"selected_recipe": "address_bank_operations_by_counterparty_v1",
"extracted_filters": {
"sort": "period_desc",
"limit": 20,
"counterparty": "Alfa",
"period_to": "2026-03-29",
"period_from": "2025-12-29"
},
"missing_required_filters": [],
"mcp_call_status": "empty",
"rows_fetched": 0,
"rows_matched": 0,
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
"limited_reason_category": "empty_match",
"response_type": "LIMITED_WITH_REASON",
"reply_type": "partial_coverage",
"assistant_reply_preview": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
},
{
"id": "Q4",
"question": "show documents by contract 15/24",
"expected_intent": "unknown",
"http_status": 200,
"ok": true,
"detected_mode": "address_query",
"query_shape": "DOCUMENT_LIST",
"detected_intent": "unknown",
"selected_recipe": null,
"extracted_filters": {
"sort": "period_desc",
"limit": 20,
"contract": "15/24"
},
"missing_required_filters": [],
"mcp_call_status": "skipped",
"rows_fetched": 0,
"rows_matched": 0,
"runtime_readiness": "DEEP_ONLY",
"limited_reason_category": "unsupported",
"response_type": "LIMITED_WITH_REASON",
"reply_type": "partial_coverage",
"assistant_reply_preview": "Этот запрос не подходит под address_query V1.\nПричина: intent пока не поддержан в address V1.\nЧто нужно уточнить: переформулируйте вопрос как адресный lookup по счету/контрагенту/договору."
},
{
"id": "Q5",
"question": "show open items by contract",
"expected_intent": "open_items_by_counterparty_or_contract",
"http_status": 200,
"ok": true,
"detected_mode": "address_query",
"query_shape": "OBJECT_LOOKUP",
"detected_intent": "open_items_by_counterparty_or_contract",
"selected_recipe": null,
"extracted_filters": {
"sort": "period_desc",
"limit": 20
},
"missing_required_filters": [
"counterparty_or_contract"
],
"mcp_call_status": "skipped",
"rows_fetched": 0,
"rows_matched": 0,
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
"limited_reason_category": "missing_anchor",
"response_type": "LIMITED_WITH_REASON",
"reply_type": "partial_coverage",
"assistant_reply_preview": "Для точного адресного поиска не хватает обязательного якоря.\nПричина: для open_items нужен якорь контрагента или договора.\nЧто нужно уточнить: укажите контрагента или номер/название договора."
},
{
"id": "Q6",
"question": "who owes us today",
"expected_intent": "list_receivables_counterparties",
"http_status": 200,
"ok": true,
"detected_mode": "address_query",
"query_shape": "AGGREGATE_LOOKUP",
"detected_intent": "list_receivables_counterparties",
"selected_recipe": "address_movements_receivables_v1",
"extracted_filters": {
"sort": "period_desc",
"limit": 20,
"as_of_date": "2026-03-29"
},
"missing_required_filters": [],
"mcp_call_status": "empty",
"rows_fetched": 20,
"rows_matched": 0,
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
"limited_reason_category": "empty_match",
"response_type": "LIMITED_WITH_REASON",
"reply_type": "partial_coverage",
"assistant_reply_preview": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
}
]
}
@@ -0,0 +1,34 @@
{
"baseline_run": "2026-03-29_Address_Query_Runtime_V1_M2_1_QueryShape_LimitedTaxonomy",
"current_run": "2026-03-29_Address_Query_Runtime_V1_M2_2_Documents_BankOps_By_Counterparty",
"changes": {
"intent_documents_by_counterparty": {
"before": false,
"after": true
},
"intent_bank_operations_by_counterparty": {
"before": false,
"after": true
},
"recipe_documents_by_counterparty_v1": {
"before": false,
"after": true
},
"recipe_bank_operations_by_counterparty_v1": {
"before": false,
"after": true
},
"period_range_extraction": {
"before": false,
"after": true
},
"default_period_for_by_counterparty": {
"before": false,
"after": true
},
"false_factual_rate": {
"before": 0.0,
"after": 0.0
}
}
}
@@ -0,0 +1,15 @@
llm_normalizer/backend/src/types/addressQuery.ts
llm_normalizer/backend/src/services/addressIntentResolver.ts
llm_normalizer/backend/src/services/addressFilterExtractor.ts
llm_normalizer/backend/src/services/addressRecipeCatalog.ts
llm_normalizer/backend/src/services/addressQueryService.ts
llm_normalizer/backend/tests/addressQueryRuntimeM22.test.ts
docs/ADDRESS/address_query/address_scenario_matrix.md
docs/ADDRESS/address_query/query_recipes_v1.md
docs/ADDRESS/address_query/runtime_readiness_matrix_v1.md
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_2_Documents_BankOps_By_Counterparty/README.md
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_2_Documents_BankOps_By_Counterparty/run_summary.json
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_2_Documents_BankOps_By_Counterparty/before_after_metrics.json
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_2_Documents_BankOps_By_Counterparty/smoke_checks.md
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_2_Documents_BankOps_By_Counterparty/assistant_window_dry_run_results.json
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_2_Documents_BankOps_By_Counterparty/changed_files.txt
@@ -0,0 +1,35 @@
{
"run_id": "2026-03-29_Address_Query_Runtime_V1_M2_2_Documents_BankOps_By_Counterparty",
"date": "2026-03-29",
"stage": "address_query_runtime_v1",
"scope": "m2_2_documents_and_bank_ops_by_counterparty",
"build_status": "PASSED",
"tests_status": "PASSED",
"dry_run_status": "PASSED_WITH_LIMITED_RESULTS",
"implemented": {
"intent_documents_by_counterparty": true,
"intent_bank_operations_by_counterparty": true,
"recipe_documents_by_counterparty_v1": true,
"recipe_bank_operations_by_counterparty_v1": true,
"period_range_extraction": true,
"default_period_last_90_days_for_by_counterparty": true
},
"dry_run_metrics": {
"questions_total": 6,
"address_mode_hit_rate": 1.0,
"query_shape_detected_rate": 1.0,
"intent_alignment_rate": 1.0,
"supported_recipe_selection_rate": 0.6667,
"factual_positive_rate": 0.0,
"limited_mode_rate": 1.0,
"false_factual_rate": 0.0
},
"limited_reason_distribution": {
"empty_match": 4,
"missing_anchor": 1,
"recipe_visibility_gap": 0,
"unsupported": 1,
"execution_error": 0
},
"next_priority": "Sprint B Priority 3: documents_forming_balance + known-positive live suite execution"
}
@@ -0,0 +1,34 @@
# Smoke Checks
Дата: 2026-03-29
## Build
- `npm.cmd run build` -> PASS
## Tests
- `npx.cmd vitest run tests/addressQueryRuntimeM22.test.ts` -> PASS (7/7)
## Dry-run (assistant window equivalent)
Источник: `assistant_window_dry_run_results.json`
- total questions: 6
- `detected_mode=address_query`: 6/6
- `query_shape` detected: 6/6
- expected intent alignment: 6/6
- `selected_recipe` present: 4/6
- `response_type=LIMITED_WITH_REASON`: 6/6
- `false_factual_rate`: 0
### Limited taxonomy distribution
- `empty_match`: 4
- `missing_anchor`: 1
- `recipe_visibility_gap`: 0
- `unsupported`: 1
- `execution_error`: 0
### Operational note
`documents_by_counterparty` and `bank_operations_by_counterparty` are now implemented and routed correctly.
Current blocker remains live data visibility on selected anchors/periods (non-empty positive evidence suite still required).
@@ -0,0 +1,35 @@
# Run README — Address Query Runtime V1 M2.3a
Дата: 2026-03-29
Run ID: `2026-03-29_Address_Query_Runtime_V1_M2_3A_Stage_Diagnostic_Materialization`
## Цель инкремента
Сделать узкий диагностический шаг после M2.3:
- развести `mcp_call_status` по стадиям;
- зафиксировать, где именно теряются строки (`raw -> account_scope -> materialization -> recipe_filter -> matched`);
- убрать неинформативный общий `empty` статус;
- подготовить техническую базу для следующего exploratory live pass.
## Что проверено
- `npm.cmd run build` — PASS.
- `npx.cmd vitest run tests/addressQueryRuntimeM23.test.ts` — PASS (10/10).
- stage-diagnostic dry-run через `/api/assistant/message` на 5 core cases — сохранен в `assistant_window_stage_diagnostic_results.json`.
## Ключевой вывод
Диагностический паттерн стабилен:
- `raw_rows_received > 0`;
- `rows_after_account_scope = 0`;
- `rows_materialized = 0`;
- `rows_after_recipe_filter = 0`;
- `rows_matched = 0`.
То есть текущий primary bottleneck находится на account-scope filtration до materialization.
## Что это значит для next step
Следующий шаг нужно делать как targeted tuning account-scope per recipe, а уже затем запускать curated non-empty data-aware positive acceptance.
@@ -0,0 +1,242 @@
{
"generated_at": "2026-03-29T17:33:28.054Z",
"cases": [
{
"id": "D1",
"question": "show account balance 60 today",
"expected_intent": "account_balance_snapshot",
"http_status": 200,
"ok": true,
"detected_mode": "address_query",
"query_shape": "AGGREGATE_LOOKUP",
"detected_intent": "account_balance_snapshot",
"intent_aligned": true,
"selected_recipe": "address_movements_account_snapshot_v1",
"extracted_filters": {
"sort": "period_desc",
"limit": 20,
"account": "60",
"as_of_date": "2026-03-29"
},
"anchor_type": "account",
"anchor_value_raw": "60",
"resolver_confidence": "high",
"mcp_call_status": "raw_rows_received_but_not_materialized",
"stage_interpretation": "Rows came from MCP but were lost before/at materialization.",
"rows_fetched": 20,
"raw_rows_received": 20,
"rows_after_account_scope": 0,
"rows_materialized": 0,
"rows_after_recipe_filter": 0,
"rows_matched": 0,
"raw_row_keys_sample": [
"Период",
"Регистратор",
"СчетДт",
"СчетКт",
"Сумма",
"Period",
"Registrator",
"AccountDt",
"AccountKt",
"Amount"
],
"materialization_drop_reason": "dropped_by_account_scope_filter",
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
"limited_reason_category": "empty_match",
"response_type": "LIMITED_WITH_REASON",
"reply_type": "partial_coverage",
"assistant_reply_preview_escaped": "\\u0412 live-\\u0434\\u0430\\u043d\\u043d\\u044b\\u0445 \\u043f\\u043e \\u0442\\u0435\\u043a\\u0443\\u0449\\u0435\\u043c\\u0443 \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u0443 \\u0437\\u0430\\u043f\\u0438\\u0441\\u0438 \\u043d\\u0435 \\u043d\\u0430\\u0439\\u0434\\u0435\\u043d\\u044b.\n\\u041f\\u0440\\u0438\\u0447\\u0438\\u043d\\u0430: \\u043f\\u043e \\u0432\\u044b\\u0431\\u0440\\u0430\\u043d\\u043d\\u044b\\u043c \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u0430\\u043c \\u0432 live-\\u0432\\u044b\\u0431\\u043e\\u0440\\u043a\\u0435 \\u043d\\u0435\\u0442 \\u0441\\u0442\\u0440\\u043e\\u043a.\n\\u0427\\u0442\\u043e \\u043d\\u0443\\u0436\\u043d\\u043e \\u0443\\u0442\\u043e\\u0447\\u043d\\u0438\\u0442\\u044c: \\u0443\\u0442\\u043e\\u0447\\u043d\\u0438\\u0442\\u0435 \\u043f\\u0435\\u0440\\u0438\\u043e\\u0434, \\u043a\\u043e\\u043d\\u0442\\u0440\\u0430\\u0433\\u0435\\u043d\\u0442\\u0430, \\u0434\\u043e\\u0433\\u043e\\u0432\\u043e\\u0440 \\u0438\\u043b\\u0438 \\u0441\\u043d\\u0438\\u043c\\u0438\\u0442\\u0435 \\u0447\\u0430\\u0441\\u0442\\u044c \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u043e\\u0432."
},
{
"id": "D2",
"question": "which documents form balance for account 62 as of 2020-07-31",
"expected_intent": "documents_forming_balance",
"http_status": 200,
"ok": true,
"detected_mode": "address_query",
"query_shape": "DOCUMENT_LIST",
"detected_intent": "documents_forming_balance",
"intent_aligned": true,
"selected_recipe": "address_documents_forming_balance_v1",
"extracted_filters": {
"sort": "period_desc",
"limit": 20,
"account": "62",
"as_of_date": "2020-07-31"
},
"anchor_type": "account",
"anchor_value_raw": "62",
"resolver_confidence": "high",
"mcp_call_status": "raw_rows_received_but_not_materialized",
"stage_interpretation": "Rows came from MCP but were lost before/at materialization.",
"rows_fetched": 20,
"raw_rows_received": 20,
"rows_after_account_scope": 0,
"rows_materialized": 0,
"rows_after_recipe_filter": 0,
"rows_matched": 0,
"raw_row_keys_sample": [
"Период",
"Регистратор",
"СчетДт",
"СчетКт",
"Сумма",
"Period",
"Registrator",
"AccountDt",
"AccountKt",
"Amount"
],
"materialization_drop_reason": "dropped_by_account_scope_filter",
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
"limited_reason_category": "empty_match",
"response_type": "LIMITED_WITH_REASON",
"reply_type": "partial_coverage",
"assistant_reply_preview_escaped": "\\u0412 live-\\u0434\\u0430\\u043d\\u043d\\u044b\\u0445 \\u043f\\u043e \\u0442\\u0435\\u043a\\u0443\\u0449\\u0435\\u043c\\u0443 \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u0443 \\u0437\\u0430\\u043f\\u0438\\u0441\\u0438 \\u043d\\u0435 \\u043d\\u0430\\u0439\\u0434\\u0435\\u043d\\u044b.\n\\u041f\\u0440\\u0438\\u0447\\u0438\\u043d\\u0430: \\u043f\\u043e \\u0432\\u044b\\u0431\\u0440\\u0430\\u043d\\u043d\\u044b\\u043c \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u0430\\u043c \\u0432 live-\\u0432\\u044b\\u0431\\u043e\\u0440\\u043a\\u0435 \\u043d\\u0435\\u0442 \\u0441\\u0442\\u0440\\u043e\\u043a.\n\\u0427\\u0442\\u043e \\u043d\\u0443\\u0436\\u043d\\u043e \\u0443\\u0442\\u043e\\u0447\\u043d\\u0438\\u0442\\u044c: \\u0443\\u0442\\u043e\\u0447\\u043d\\u0438\\u0442\\u0435 \\u043f\\u0435\\u0440\\u0438\\u043e\\u0434, \\u043a\\u043e\\u043d\\u0442\\u0440\\u0430\\u0433\\u0435\\u043d\\u0442\\u0430, \\u0434\\u043e\\u0433\\u043e\\u0432\\u043e\\u0440 \\u0438\\u043b\\u0438 \\u0441\\u043d\\u0438\\u043c\\u0438\\u0442\\u0435 \\u0447\\u0430\\u0441\\u0442\\u044c \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u043e\\u0432."
},
{
"id": "D3",
"question": "reveal balance documents for account 60",
"expected_intent": "documents_forming_balance",
"http_status": 200,
"ok": true,
"detected_mode": "address_query",
"query_shape": "DOCUMENT_LIST",
"detected_intent": "documents_forming_balance",
"intent_aligned": true,
"selected_recipe": "address_documents_forming_balance_v1",
"extracted_filters": {
"sort": "period_desc",
"limit": 20,
"account": "60",
"as_of_date": "2026-03-29"
},
"anchor_type": "account",
"anchor_value_raw": "60",
"resolver_confidence": "high",
"mcp_call_status": "raw_rows_received_but_not_materialized",
"stage_interpretation": "Rows came from MCP but were lost before/at materialization.",
"rows_fetched": 20,
"raw_rows_received": 20,
"rows_after_account_scope": 0,
"rows_materialized": 0,
"rows_after_recipe_filter": 0,
"rows_matched": 0,
"raw_row_keys_sample": [
"Период",
"Регистратор",
"СчетДт",
"СчетКт",
"Сумма",
"Period",
"Registrator",
"AccountDt",
"AccountKt",
"Amount"
],
"materialization_drop_reason": "dropped_by_account_scope_filter",
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
"limited_reason_category": "empty_match",
"response_type": "LIMITED_WITH_REASON",
"reply_type": "partial_coverage",
"assistant_reply_preview_escaped": "\\u0412 live-\\u0434\\u0430\\u043d\\u043d\\u044b\\u0445 \\u043f\\u043e \\u0442\\u0435\\u043a\\u0443\\u0449\\u0435\\u043c\\u0443 \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u0443 \\u0437\\u0430\\u043f\\u0438\\u0441\\u0438 \\u043d\\u0435 \\u043d\\u0430\\u0439\\u0434\\u0435\\u043d\\u044b.\n\\u041f\\u0440\\u0438\\u0447\\u0438\\u043d\\u0430: \\u043f\\u043e \\u0432\\u044b\\u0431\\u0440\\u0430\\u043d\\u043d\\u044b\\u043c \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u0430\\u043c \\u0432 live-\\u0432\\u044b\\u0431\\u043e\\u0440\\u043a\\u0435 \\u043d\\u0435\\u0442 \\u0441\\u0442\\u0440\\u043e\\u043a.\n\\u0427\\u0442\\u043e \\u043d\\u0443\\u0436\\u043d\\u043e \\u0443\\u0442\\u043e\\u0447\\u043d\\u0438\\u0442\\u044c: \\u0443\\u0442\\u043e\\u0447\\u043d\\u0438\\u0442\\u0435 \\u043f\\u0435\\u0440\\u0438\\u043e\\u0434, \\u043a\\u043e\\u043d\\u0442\\u0440\\u0430\\u0433\\u0435\\u043d\\u0442\\u0430, \\u0434\\u043e\\u0433\\u043e\\u0432\\u043e\\u0440 \\u0438\\u043b\\u0438 \\u0441\\u043d\\u0438\\u043c\\u0438\\u0442\\u0435 \\u0447\\u0430\\u0441\\u0442\\u044c \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u043e\\u0432."
},
{
"id": "D4",
"question": "show documents by counterparty Alfa from 2020-07-01 to 2020-07-31",
"expected_intent": "list_documents_by_counterparty",
"http_status": 200,
"ok": true,
"detected_mode": "address_query",
"query_shape": "DOCUMENT_LIST",
"detected_intent": "list_documents_by_counterparty",
"intent_aligned": true,
"selected_recipe": "address_documents_by_counterparty_v1",
"extracted_filters": {
"sort": "period_desc",
"limit": 20,
"counterparty": "Alfa",
"period_from": "2020-07-01",
"period_to": "2020-07-31"
},
"anchor_type": "counterparty",
"anchor_value_raw": "Alfa",
"resolver_confidence": "medium",
"mcp_call_status": "raw_rows_received_but_not_materialized",
"stage_interpretation": "Rows came from MCP but were lost before/at materialization.",
"rows_fetched": 20,
"raw_rows_received": 20,
"rows_after_account_scope": 0,
"rows_materialized": 0,
"rows_after_recipe_filter": 0,
"rows_matched": 0,
"raw_row_keys_sample": [
"Период",
"Регистратор",
"СчетДт",
"СчетКт",
"Сумма",
"Period",
"Registrator",
"AccountDt",
"AccountKt",
"Amount"
],
"materialization_drop_reason": "dropped_by_account_scope_filter",
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
"limited_reason_category": "empty_match",
"response_type": "LIMITED_WITH_REASON",
"reply_type": "partial_coverage",
"assistant_reply_preview_escaped": "\\u0412 live-\\u0434\\u0430\\u043d\\u043d\\u044b\\u0445 \\u043f\\u043e \\u0442\\u0435\\u043a\\u0443\\u0449\\u0435\\u043c\\u0443 \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u0443 \\u0437\\u0430\\u043f\\u0438\\u0441\\u0438 \\u043d\\u0435 \\u043d\\u0430\\u0439\\u0434\\u0435\\u043d\\u044b.\n\\u041f\\u0440\\u0438\\u0447\\u0438\\u043d\\u0430: \\u043f\\u043e \\u0432\\u044b\\u0431\\u0440\\u0430\\u043d\\u043d\\u044b\\u043c \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u0430\\u043c \\u0432 live-\\u0432\\u044b\\u0431\\u043e\\u0440\\u043a\\u0435 \\u043d\\u0435\\u0442 \\u0441\\u0442\\u0440\\u043e\\u043a.\n\\u0427\\u0442\\u043e \\u043d\\u0443\\u0436\\u043d\\u043e \\u0443\\u0442\\u043e\\u0447\\u043d\\u0438\\u0442\\u044c: \\u0443\\u0442\\u043e\\u0447\\u043d\\u0438\\u0442\\u0435 \\u043f\\u0435\\u0440\\u0438\\u043e\\u0434, \\u043a\\u043e\\u043d\\u0442\\u0440\\u0430\\u0433\\u0435\\u043d\\u0442\\u0430, \\u0434\\u043e\\u0433\\u043e\\u0432\\u043e\\u0440 \\u0438\\u043b\\u0438 \\u0441\\u043d\\u0438\\u043c\\u0438\\u0442\\u0435 \\u0447\\u0430\\u0441\\u0442\\u044c \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u043e\\u0432."
},
{
"id": "D5",
"question": "show bank operations by counterparty Alfa from 2020-07-01 to 2020-07-31",
"expected_intent": "bank_operations_by_counterparty",
"http_status": 200,
"ok": true,
"detected_mode": "address_query",
"query_shape": "DOCUMENT_LIST",
"detected_intent": "bank_operations_by_counterparty",
"intent_aligned": true,
"selected_recipe": "address_bank_operations_by_counterparty_v1",
"extracted_filters": {
"sort": "period_desc",
"limit": 20,
"counterparty": "Alfa",
"period_from": "2020-07-01",
"period_to": "2020-07-31"
},
"anchor_type": "counterparty",
"anchor_value_raw": "Alfa",
"resolver_confidence": "medium",
"mcp_call_status": "raw_rows_received_but_not_materialized",
"stage_interpretation": "Rows came from MCP but were lost before/at materialization.",
"rows_fetched": 20,
"raw_rows_received": 20,
"rows_after_account_scope": 0,
"rows_materialized": 0,
"rows_after_recipe_filter": 0,
"rows_matched": 0,
"raw_row_keys_sample": [
"Период",
"Регистратор",
"СчетДт",
"СчетКт",
"Сумма",
"Period",
"Registrator",
"AccountDt",
"AccountKt",
"Amount"
],
"materialization_drop_reason": "dropped_by_account_scope_filter",
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
"limited_reason_category": "empty_match",
"response_type": "LIMITED_WITH_REASON",
"reply_type": "partial_coverage",
"assistant_reply_preview_escaped": "\\u0412 live-\\u0434\\u0430\\u043d\\u043d\\u044b\\u0445 \\u043f\\u043e \\u0442\\u0435\\u043a\\u0443\\u0449\\u0435\\u043c\\u0443 \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u0443 \\u0437\\u0430\\u043f\\u0438\\u0441\\u0438 \\u043d\\u0435 \\u043d\\u0430\\u0439\\u0434\\u0435\\u043d\\u044b.\n\\u041f\\u0440\\u0438\\u0447\\u0438\\u043d\\u0430: \\u043f\\u043e \\u0432\\u044b\\u0431\\u0440\\u0430\\u043d\\u043d\\u044b\\u043c \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u0430\\u043c \\u0432 live-\\u0432\\u044b\\u0431\\u043e\\u0440\\u043a\\u0435 \\u043d\\u0435\\u0442 \\u0441\\u0442\\u0440\\u043e\\u043a.\n\\u0427\\u0442\\u043e \\u043d\\u0443\\u0436\\u043d\\u043e \\u0443\\u0442\\u043e\\u0447\\u043d\\u0438\\u0442\\u044c: \\u0443\\u0442\\u043e\\u0447\\u043d\\u0438\\u0442\\u0435 \\u043f\\u0435\\u0440\\u0438\\u043e\\u0434, \\u043a\\u043e\\u043d\\u0442\\u0440\\u0430\\u0433\\u0435\\u043d\\u0442\\u0430, \\u0434\\u043e\\u0433\\u043e\\u0432\\u043e\\u0440 \\u0438\\u043b\\u0438 \\u0441\\u043d\\u0438\\u043c\\u0438\\u0442\\u0435 \\u0447\\u0430\\u0441\\u0442\\u044c \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u043e\\u0432."
}
]
}
@@ -0,0 +1,26 @@
{
"baseline_run": "2026-03-29_Address_Query_Runtime_V1_M2_3_DocumentsFormingBalance_DataAwareAcceptance",
"current_run": "2026-03-29_Address_Query_Runtime_V1_M2_3A_Stage_Diagnostic_Materialization",
"changes": {
"mcp_call_status_granularity": {
"before": "ok|empty|error|skipped",
"after": "no_raw_rows|raw_rows_received_but_not_materialized|materialized_but_not_matched|matched_non_empty|error|skipped"
},
"debug_rows_after_account_scope": {
"before": false,
"after": true
},
"debug_materialization_drop_reason": {
"before": false,
"after": true
},
"test_suite_file": {
"before": "addressQueryRuntimeM22.test.ts",
"after": "addressQueryRuntimeM23.test.ts"
},
"factual_positive_rate": {
"before": 0,
"after": 0
}
}
}
@@ -0,0 +1,28 @@
llm_normalizer/backend/src/types/addressQuery.ts
llm_normalizer/backend/src/types/assistant.ts
llm_normalizer/backend/src/services/addressMcpClient.ts
llm_normalizer/backend/src/services/addressIntentResolver.ts
llm_normalizer/backend/src/services/addressQueryService.ts
llm_normalizer/backend/src/services/assistantService.ts
llm_normalizer/backend/tests/addressQueryRuntimeM23.test.ts
llm_normalizer/backend/tests/addressQueryRuntimeM22.test.ts (deleted)
docs/ADDRESS/address_query/address_runtime_contracts.md
docs/ADDRESS/address_query/runtime_readiness_matrix_v1.md
docs/ADDRESS/address_query/address_scenario_matrix.md
docs/ADDRESS/address_query/data_aware_positive_acceptance_suite_v1.md
docs/ADDRESS/address_query/README.md
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3A_Stage_Diagnostic_Materialization/README.md
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3A_Stage_Diagnostic_Materialization/run_summary.json
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3A_Stage_Diagnostic_Materialization/before_after_metrics.json
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3A_Stage_Diagnostic_Materialization/smoke_checks.md
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3A_Stage_Diagnostic_Materialization/stage_diagnostic_report.md
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3A_Stage_Diagnostic_Materialization/stage_diagnostic_matrix.md
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3A_Stage_Diagnostic_Materialization/assistant_window_stage_diagnostic_results.json
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3A_Stage_Diagnostic_Materialization/chat_export_stage_diagnostic.md
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3A_Stage_Diagnostic_Materialization/live_call_inventory_address.json
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3A_Stage_Diagnostic_Materialization/debug_payloads/D1.json
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3A_Stage_Diagnostic_Materialization/debug_payloads/D2.json
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3A_Stage_Diagnostic_Materialization/debug_payloads/D3.json
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3A_Stage_Diagnostic_Materialization/debug_payloads/D4.json
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3A_Stage_Diagnostic_Materialization/debug_payloads/D5.json
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3A_Stage_Diagnostic_Materialization/changed_files.txt
@@ -0,0 +1,44 @@
# Chat Export — Stage Diagnostic Pass (M2.3a)
Date: 2026-03-29
## D1
Question: show account balance 60 today
Detected intent: account_balance_snapshot
MCP stage status: raw_rows_received_but_not_materialized
Preview (escaped): \u0412 live-\u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e \u0442\u0435\u043a\u0443\u0449\u0435\u043c\u0443 \u0444\u0438\u043b\u044c\u0442\u0440\u0443 \u0437\u0430\u043f\u0438\u0441\u0438 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u044b.
\u041f\u0440\u0438\u0447\u0438\u043d\u0430: \u043f\u043e \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u043c \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u043c \u0432 live-\u0432\u044b\u0431\u043e\u0440\u043a\u0435 \u043d\u0435\u0442 \u0441\u0442\u0440\u043e\u043a.
\u0427\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0443\u0442\u043e\u0447\u043d\u0438\u0442\u044c: \u0443\u0442\u043e\u0447\u043d\u0438\u0442\u0435 \u043f\u0435\u0440\u0438\u043e\u0434, \u043a\u043e\u043d\u0442\u0440\u0430\u0433\u0435\u043d\u0442\u0430, \u0434\u043e\u0433\u043e\u0432\u043e\u0440 \u0438\u043b\u0438 \u0441\u043d\u0438\u043c\u0438\u0442\u0435 \u0447\u0430\u0441\u0442\u044c \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432.
## D2
Question: which documents form balance for account 62 as of 2020-07-31
Detected intent: documents_forming_balance
MCP stage status: raw_rows_received_but_not_materialized
Preview (escaped): \u0412 live-\u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e \u0442\u0435\u043a\u0443\u0449\u0435\u043c\u0443 \u0444\u0438\u043b\u044c\u0442\u0440\u0443 \u0437\u0430\u043f\u0438\u0441\u0438 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u044b.
\u041f\u0440\u0438\u0447\u0438\u043d\u0430: \u043f\u043e \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u043c \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u043c \u0432 live-\u0432\u044b\u0431\u043e\u0440\u043a\u0435 \u043d\u0435\u0442 \u0441\u0442\u0440\u043e\u043a.
\u0427\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0443\u0442\u043e\u0447\u043d\u0438\u0442\u044c: \u0443\u0442\u043e\u0447\u043d\u0438\u0442\u0435 \u043f\u0435\u0440\u0438\u043e\u0434, \u043a\u043e\u043d\u0442\u0440\u0430\u0433\u0435\u043d\u0442\u0430, \u0434\u043e\u0433\u043e\u0432\u043e\u0440 \u0438\u043b\u0438 \u0441\u043d\u0438\u043c\u0438\u0442\u0435 \u0447\u0430\u0441\u0442\u044c \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432.
## D3
Question: reveal balance documents for account 60
Detected intent: documents_forming_balance
MCP stage status: raw_rows_received_but_not_materialized
Preview (escaped): \u0412 live-\u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e \u0442\u0435\u043a\u0443\u0449\u0435\u043c\u0443 \u0444\u0438\u043b\u044c\u0442\u0440\u0443 \u0437\u0430\u043f\u0438\u0441\u0438 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u044b.
\u041f\u0440\u0438\u0447\u0438\u043d\u0430: \u043f\u043e \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u043c \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u043c \u0432 live-\u0432\u044b\u0431\u043e\u0440\u043a\u0435 \u043d\u0435\u0442 \u0441\u0442\u0440\u043e\u043a.
\u0427\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0443\u0442\u043e\u0447\u043d\u0438\u0442\u044c: \u0443\u0442\u043e\u0447\u043d\u0438\u0442\u0435 \u043f\u0435\u0440\u0438\u043e\u0434, \u043a\u043e\u043d\u0442\u0440\u0430\u0433\u0435\u043d\u0442\u0430, \u0434\u043e\u0433\u043e\u0432\u043e\u0440 \u0438\u043b\u0438 \u0441\u043d\u0438\u043c\u0438\u0442\u0435 \u0447\u0430\u0441\u0442\u044c \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432.
## D4
Question: show documents by counterparty Alfa from 2020-07-01 to 2020-07-31
Detected intent: list_documents_by_counterparty
MCP stage status: raw_rows_received_but_not_materialized
Preview (escaped): \u0412 live-\u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e \u0442\u0435\u043a\u0443\u0449\u0435\u043c\u0443 \u0444\u0438\u043b\u044c\u0442\u0440\u0443 \u0437\u0430\u043f\u0438\u0441\u0438 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u044b.
\u041f\u0440\u0438\u0447\u0438\u043d\u0430: \u043f\u043e \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u043c \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u043c \u0432 live-\u0432\u044b\u0431\u043e\u0440\u043a\u0435 \u043d\u0435\u0442 \u0441\u0442\u0440\u043e\u043a.
\u0427\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0443\u0442\u043e\u0447\u043d\u0438\u0442\u044c: \u0443\u0442\u043e\u0447\u043d\u0438\u0442\u0435 \u043f\u0435\u0440\u0438\u043e\u0434, \u043a\u043e\u043d\u0442\u0440\u0430\u0433\u0435\u043d\u0442\u0430, \u0434\u043e\u0433\u043e\u0432\u043e\u0440 \u0438\u043b\u0438 \u0441\u043d\u0438\u043c\u0438\u0442\u0435 \u0447\u0430\u0441\u0442\u044c \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432.
## D5
Question: show bank operations by counterparty Alfa from 2020-07-01 to 2020-07-31
Detected intent: bank_operations_by_counterparty
MCP stage status: raw_rows_received_but_not_materialized
Preview (escaped): \u0412 live-\u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e \u0442\u0435\u043a\u0443\u0449\u0435\u043c\u0443 \u0444\u0438\u043b\u044c\u0442\u0440\u0443 \u0437\u0430\u043f\u0438\u0441\u0438 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u044b.
\u041f\u0440\u0438\u0447\u0438\u043d\u0430: \u043f\u043e \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u043c \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u043c \u0432 live-\u0432\u044b\u0431\u043e\u0440\u043a\u0435 \u043d\u0435\u0442 \u0441\u0442\u0440\u043e\u043a.
\u0427\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0443\u0442\u043e\u0447\u043d\u0438\u0442\u044c: \u0443\u0442\u043e\u0447\u043d\u0438\u0442\u0435 \u043f\u0435\u0440\u0438\u043e\u0434, \u043a\u043e\u043d\u0442\u0440\u0430\u0433\u0435\u043d\u0442\u0430, \u0434\u043e\u0433\u043e\u0432\u043e\u0440 \u0438\u043b\u0438 \u0441\u043d\u0438\u043c\u0438\u0442\u0435 \u0447\u0430\u0441\u0442\u044c \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432.
@@ -0,0 +1,47 @@
{
"id": "D1",
"question": "show account balance 60 today",
"expected_intent": "account_balance_snapshot",
"http_status": 200,
"ok": true,
"detected_mode": "address_query",
"query_shape": "AGGREGATE_LOOKUP",
"detected_intent": "account_balance_snapshot",
"intent_aligned": true,
"selected_recipe": "address_movements_account_snapshot_v1",
"extracted_filters": {
"sort": "period_desc",
"limit": 20,
"account": "60",
"as_of_date": "2026-03-29"
},
"anchor_type": "account",
"anchor_value_raw": "60",
"resolver_confidence": "high",
"mcp_call_status": "raw_rows_received_but_not_materialized",
"stage_interpretation": "Rows came from MCP but were lost before/at materialization.",
"rows_fetched": 20,
"raw_rows_received": 20,
"rows_after_account_scope": 0,
"rows_materialized": 0,
"rows_after_recipe_filter": 0,
"rows_matched": 0,
"raw_row_keys_sample": [
"Период",
"Регистратор",
"СчетДт",
"СчетКт",
"РЎСѓРјРјР°",
"Period",
"Registrator",
"AccountDt",
"AccountKt",
"Amount"
],
"materialization_drop_reason": "dropped_by_account_scope_filter",
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
"limited_reason_category": "empty_match",
"response_type": "LIMITED_WITH_REASON",
"reply_type": "partial_coverage",
"assistant_reply_preview_escaped": "\\u0412 live-\\u0434\\u0430\\u043d\\u043d\\u044b\\u0445 \\u043f\\u043e \\u0442\\u0435\\u043a\\u0443\\u0449\\u0435\\u043c\\u0443 \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u0443 \\u0437\\u0430\\u043f\\u0438\\u0441\\u0438 \\u043d\\u0435 \\u043d\\u0430\\u0439\\u0434\\u0435\\u043d\\u044b.\n\\u041f\\u0440\\u0438\\u0447\\u0438\\u043d\\u0430: \\u043f\\u043e \\u0432\\u044b\\u0431\\u0440\\u0430\\u043d\\u043d\\u044b\\u043c \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u0430\\u043c \\u0432 live-\\u0432\\u044b\\u0431\\u043e\\u0440\\u043a\\u0435 \\u043d\\u0435\\u0442 \\u0441\\u0442\\u0440\\u043e\\u043a.\n\\u0427\\u0442\\u043e \\u043d\\u0443\\u0436\\u043d\\u043e \\u0443\\u0442\\u043e\\u0447\\u043d\\u0438\\u0442\\u044c: \\u0443\\u0442\\u043e\\u0447\\u043d\\u0438\\u0442\\u0435 \\u043f\\u0435\\u0440\\u0438\\u043e\\u0434, \\u043a\\u043e\\u043d\\u0442\\u0440\\u0430\\u0433\\u0435\\u043d\\u0442\\u0430, \\u0434\\u043e\\u0433\\u043e\\u0432\\u043e\\u0440 \\u0438\\u043b\\u0438 \\u0441\\u043d\\u0438\\u043c\\u0438\\u0442\\u0435 \\u0447\\u0430\\u0441\\u0442\\u044c \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u043e\\u0432."
}
@@ -0,0 +1,47 @@
{
"id": "D2",
"question": "which documents form balance for account 62 as of 2020-07-31",
"expected_intent": "documents_forming_balance",
"http_status": 200,
"ok": true,
"detected_mode": "address_query",
"query_shape": "DOCUMENT_LIST",
"detected_intent": "documents_forming_balance",
"intent_aligned": true,
"selected_recipe": "address_documents_forming_balance_v1",
"extracted_filters": {
"sort": "period_desc",
"limit": 20,
"account": "62",
"as_of_date": "2020-07-31"
},
"anchor_type": "account",
"anchor_value_raw": "62",
"resolver_confidence": "high",
"mcp_call_status": "raw_rows_received_but_not_materialized",
"stage_interpretation": "Rows came from MCP but were lost before/at materialization.",
"rows_fetched": 20,
"raw_rows_received": 20,
"rows_after_account_scope": 0,
"rows_materialized": 0,
"rows_after_recipe_filter": 0,
"rows_matched": 0,
"raw_row_keys_sample": [
"Период",
"Регистратор",
"СчетДт",
"СчетКт",
"РЎСѓРјРјР°",
"Period",
"Registrator",
"AccountDt",
"AccountKt",
"Amount"
],
"materialization_drop_reason": "dropped_by_account_scope_filter",
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
"limited_reason_category": "empty_match",
"response_type": "LIMITED_WITH_REASON",
"reply_type": "partial_coverage",
"assistant_reply_preview_escaped": "\\u0412 live-\\u0434\\u0430\\u043d\\u043d\\u044b\\u0445 \\u043f\\u043e \\u0442\\u0435\\u043a\\u0443\\u0449\\u0435\\u043c\\u0443 \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u0443 \\u0437\\u0430\\u043f\\u0438\\u0441\\u0438 \\u043d\\u0435 \\u043d\\u0430\\u0439\\u0434\\u0435\\u043d\\u044b.\n\\u041f\\u0440\\u0438\\u0447\\u0438\\u043d\\u0430: \\u043f\\u043e \\u0432\\u044b\\u0431\\u0440\\u0430\\u043d\\u043d\\u044b\\u043c \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u0430\\u043c \\u0432 live-\\u0432\\u044b\\u0431\\u043e\\u0440\\u043a\\u0435 \\u043d\\u0435\\u0442 \\u0441\\u0442\\u0440\\u043e\\u043a.\n\\u0427\\u0442\\u043e \\u043d\\u0443\\u0436\\u043d\\u043e \\u0443\\u0442\\u043e\\u0447\\u043d\\u0438\\u0442\\u044c: \\u0443\\u0442\\u043e\\u0447\\u043d\\u0438\\u0442\\u0435 \\u043f\\u0435\\u0440\\u0438\\u043e\\u0434, \\u043a\\u043e\\u043d\\u0442\\u0440\\u0430\\u0433\\u0435\\u043d\\u0442\\u0430, \\u0434\\u043e\\u0433\\u043e\\u0432\\u043e\\u0440 \\u0438\\u043b\\u0438 \\u0441\\u043d\\u0438\\u043c\\u0438\\u0442\\u0435 \\u0447\\u0430\\u0441\\u0442\\u044c \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u043e\\u0432."
}
@@ -0,0 +1,47 @@
{
"id": "D3",
"question": "reveal balance documents for account 60",
"expected_intent": "documents_forming_balance",
"http_status": 200,
"ok": true,
"detected_mode": "address_query",
"query_shape": "DOCUMENT_LIST",
"detected_intent": "documents_forming_balance",
"intent_aligned": true,
"selected_recipe": "address_documents_forming_balance_v1",
"extracted_filters": {
"sort": "period_desc",
"limit": 20,
"account": "60",
"as_of_date": "2026-03-29"
},
"anchor_type": "account",
"anchor_value_raw": "60",
"resolver_confidence": "high",
"mcp_call_status": "raw_rows_received_but_not_materialized",
"stage_interpretation": "Rows came from MCP but were lost before/at materialization.",
"rows_fetched": 20,
"raw_rows_received": 20,
"rows_after_account_scope": 0,
"rows_materialized": 0,
"rows_after_recipe_filter": 0,
"rows_matched": 0,
"raw_row_keys_sample": [
"Период",
"Регистратор",
"СчетДт",
"СчетКт",
"РЎСѓРјРјР°",
"Period",
"Registrator",
"AccountDt",
"AccountKt",
"Amount"
],
"materialization_drop_reason": "dropped_by_account_scope_filter",
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
"limited_reason_category": "empty_match",
"response_type": "LIMITED_WITH_REASON",
"reply_type": "partial_coverage",
"assistant_reply_preview_escaped": "\\u0412 live-\\u0434\\u0430\\u043d\\u043d\\u044b\\u0445 \\u043f\\u043e \\u0442\\u0435\\u043a\\u0443\\u0449\\u0435\\u043c\\u0443 \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u0443 \\u0437\\u0430\\u043f\\u0438\\u0441\\u0438 \\u043d\\u0435 \\u043d\\u0430\\u0439\\u0434\\u0435\\u043d\\u044b.\n\\u041f\\u0440\\u0438\\u0447\\u0438\\u043d\\u0430: \\u043f\\u043e \\u0432\\u044b\\u0431\\u0440\\u0430\\u043d\\u043d\\u044b\\u043c \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u0430\\u043c \\u0432 live-\\u0432\\u044b\\u0431\\u043e\\u0440\\u043a\\u0435 \\u043d\\u0435\\u0442 \\u0441\\u0442\\u0440\\u043e\\u043a.\n\\u0427\\u0442\\u043e \\u043d\\u0443\\u0436\\u043d\\u043e \\u0443\\u0442\\u043e\\u0447\\u043d\\u0438\\u0442\\u044c: \\u0443\\u0442\\u043e\\u0447\\u043d\\u0438\\u0442\\u0435 \\u043f\\u0435\\u0440\\u0438\\u043e\\u0434, \\u043a\\u043e\\u043d\\u0442\\u0440\\u0430\\u0433\\u0435\\u043d\\u0442\\u0430, \\u0434\\u043e\\u0433\\u043e\\u0432\\u043e\\u0440 \\u0438\\u043b\\u0438 \\u0441\\u043d\\u0438\\u043c\\u0438\\u0442\\u0435 \\u0447\\u0430\\u0441\\u0442\\u044c \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u043e\\u0432."
}
@@ -0,0 +1,48 @@
{
"id": "D4",
"question": "show documents by counterparty Alfa from 2020-07-01 to 2020-07-31",
"expected_intent": "list_documents_by_counterparty",
"http_status": 200,
"ok": true,
"detected_mode": "address_query",
"query_shape": "DOCUMENT_LIST",
"detected_intent": "list_documents_by_counterparty",
"intent_aligned": true,
"selected_recipe": "address_documents_by_counterparty_v1",
"extracted_filters": {
"sort": "period_desc",
"limit": 20,
"counterparty": "Alfa",
"period_from": "2020-07-01",
"period_to": "2020-07-31"
},
"anchor_type": "counterparty",
"anchor_value_raw": "Alfa",
"resolver_confidence": "medium",
"mcp_call_status": "raw_rows_received_but_not_materialized",
"stage_interpretation": "Rows came from MCP but were lost before/at materialization.",
"rows_fetched": 20,
"raw_rows_received": 20,
"rows_after_account_scope": 0,
"rows_materialized": 0,
"rows_after_recipe_filter": 0,
"rows_matched": 0,
"raw_row_keys_sample": [
"Период",
"Регистратор",
"СчетДт",
"СчетКт",
"РЎСѓРјРјР°",
"Period",
"Registrator",
"AccountDt",
"AccountKt",
"Amount"
],
"materialization_drop_reason": "dropped_by_account_scope_filter",
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
"limited_reason_category": "empty_match",
"response_type": "LIMITED_WITH_REASON",
"reply_type": "partial_coverage",
"assistant_reply_preview_escaped": "\\u0412 live-\\u0434\\u0430\\u043d\\u043d\\u044b\\u0445 \\u043f\\u043e \\u0442\\u0435\\u043a\\u0443\\u0449\\u0435\\u043c\\u0443 \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u0443 \\u0437\\u0430\\u043f\\u0438\\u0441\\u0438 \\u043d\\u0435 \\u043d\\u0430\\u0439\\u0434\\u0435\\u043d\\u044b.\n\\u041f\\u0440\\u0438\\u0447\\u0438\\u043d\\u0430: \\u043f\\u043e \\u0432\\u044b\\u0431\\u0440\\u0430\\u043d\\u043d\\u044b\\u043c \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u0430\\u043c \\u0432 live-\\u0432\\u044b\\u0431\\u043e\\u0440\\u043a\\u0435 \\u043d\\u0435\\u0442 \\u0441\\u0442\\u0440\\u043e\\u043a.\n\\u0427\\u0442\\u043e \\u043d\\u0443\\u0436\\u043d\\u043e \\u0443\\u0442\\u043e\\u0447\\u043d\\u0438\\u0442\\u044c: \\u0443\\u0442\\u043e\\u0447\\u043d\\u0438\\u0442\\u0435 \\u043f\\u0435\\u0440\\u0438\\u043e\\u0434, \\u043a\\u043e\\u043d\\u0442\\u0440\\u0430\\u0433\\u0435\\u043d\\u0442\\u0430, \\u0434\\u043e\\u0433\\u043e\\u0432\\u043e\\u0440 \\u0438\\u043b\\u0438 \\u0441\\u043d\\u0438\\u043c\\u0438\\u0442\\u0435 \\u0447\\u0430\\u0441\\u0442\\u044c \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u043e\\u0432."
}
@@ -0,0 +1,48 @@
{
"id": "D5",
"question": "show bank operations by counterparty Alfa from 2020-07-01 to 2020-07-31",
"expected_intent": "bank_operations_by_counterparty",
"http_status": 200,
"ok": true,
"detected_mode": "address_query",
"query_shape": "DOCUMENT_LIST",
"detected_intent": "bank_operations_by_counterparty",
"intent_aligned": true,
"selected_recipe": "address_bank_operations_by_counterparty_v1",
"extracted_filters": {
"sort": "period_desc",
"limit": 20,
"counterparty": "Alfa",
"period_from": "2020-07-01",
"period_to": "2020-07-31"
},
"anchor_type": "counterparty",
"anchor_value_raw": "Alfa",
"resolver_confidence": "medium",
"mcp_call_status": "raw_rows_received_but_not_materialized",
"stage_interpretation": "Rows came from MCP but were lost before/at materialization.",
"rows_fetched": 20,
"raw_rows_received": 20,
"rows_after_account_scope": 0,
"rows_materialized": 0,
"rows_after_recipe_filter": 0,
"rows_matched": 0,
"raw_row_keys_sample": [
"Период",
"Регистратор",
"СчетДт",
"СчетКт",
"РЎСѓРјРјР°",
"Period",
"Registrator",
"AccountDt",
"AccountKt",
"Amount"
],
"materialization_drop_reason": "dropped_by_account_scope_filter",
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
"limited_reason_category": "empty_match",
"response_type": "LIMITED_WITH_REASON",
"reply_type": "partial_coverage",
"assistant_reply_preview_escaped": "\\u0412 live-\\u0434\\u0430\\u043d\\u043d\\u044b\\u0445 \\u043f\\u043e \\u0442\\u0435\\u043a\\u0443\\u0449\\u0435\\u043c\\u0443 \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u0443 \\u0437\\u0430\\u043f\\u0438\\u0441\\u0438 \\u043d\\u0435 \\u043d\\u0430\\u0439\\u0434\\u0435\\u043d\\u044b.\n\\u041f\\u0440\\u0438\\u0447\\u0438\\u043d\\u0430: \\u043f\\u043e \\u0432\\u044b\\u0431\\u0440\\u0430\\u043d\\u043d\\u044b\\u043c \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u0430\\u043c \\u0432 live-\\u0432\\u044b\\u0431\\u043e\\u0440\\u043a\\u0435 \\u043d\\u0435\\u0442 \\u0441\\u0442\\u0440\\u043e\\u043a.\n\\u0427\\u0442\\u043e \\u043d\\u0443\\u0436\\u043d\\u043e \\u0443\\u0442\\u043e\\u0447\\u043d\\u0438\\u0442\\u044c: \\u0443\\u0442\\u043e\\u0447\\u043d\\u0438\\u0442\\u0435 \\u043f\\u0435\\u0440\\u0438\\u043e\\u0434, \\u043a\\u043e\\u043d\\u0442\\u0440\\u0430\\u0433\\u0435\\u043d\\u0442\\u0430, \\u0434\\u043e\\u0433\\u043e\\u0432\\u043e\\u0440 \\u0438\\u043b\\u0438 \\u0441\\u043d\\u0438\\u043c\\u0438\\u0442\\u0435 \\u0447\\u0430\\u0441\\u0442\\u044c \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u043e\\u0432."
}
@@ -0,0 +1,72 @@
[
{
"case_id": "D1",
"question": "show account balance 60 today",
"detected_intent": "account_balance_snapshot",
"selected_recipe": "address_movements_account_snapshot_v1",
"mcp_call_status": "raw_rows_received_but_not_materialized",
"raw_rows_received": 20,
"rows_after_account_scope": 0,
"rows_materialized": 0,
"rows_after_recipe_filter": 0,
"rows_matched": 0,
"materialization_drop_reason": "dropped_by_account_scope_filter",
"limited_reason_category": "empty_match"
},
{
"case_id": "D2",
"question": "which documents form balance for account 62 as of 2020-07-31",
"detected_intent": "documents_forming_balance",
"selected_recipe": "address_documents_forming_balance_v1",
"mcp_call_status": "raw_rows_received_but_not_materialized",
"raw_rows_received": 20,
"rows_after_account_scope": 0,
"rows_materialized": 0,
"rows_after_recipe_filter": 0,
"rows_matched": 0,
"materialization_drop_reason": "dropped_by_account_scope_filter",
"limited_reason_category": "empty_match"
},
{
"case_id": "D3",
"question": "reveal balance documents for account 60",
"detected_intent": "documents_forming_balance",
"selected_recipe": "address_documents_forming_balance_v1",
"mcp_call_status": "raw_rows_received_but_not_materialized",
"raw_rows_received": 20,
"rows_after_account_scope": 0,
"rows_materialized": 0,
"rows_after_recipe_filter": 0,
"rows_matched": 0,
"materialization_drop_reason": "dropped_by_account_scope_filter",
"limited_reason_category": "empty_match"
},
{
"case_id": "D4",
"question": "show documents by counterparty Alfa from 2020-07-01 to 2020-07-31",
"detected_intent": "list_documents_by_counterparty",
"selected_recipe": "address_documents_by_counterparty_v1",
"mcp_call_status": "raw_rows_received_but_not_materialized",
"raw_rows_received": 20,
"rows_after_account_scope": 0,
"rows_materialized": 0,
"rows_after_recipe_filter": 0,
"rows_matched": 0,
"materialization_drop_reason": "dropped_by_account_scope_filter",
"limited_reason_category": "empty_match"
},
{
"case_id": "D5",
"question": "show bank operations by counterparty Alfa from 2020-07-01 to 2020-07-31",
"detected_intent": "bank_operations_by_counterparty",
"selected_recipe": "address_bank_operations_by_counterparty_v1",
"mcp_call_status": "raw_rows_received_but_not_materialized",
"raw_rows_received": 20,
"rows_after_account_scope": 0,
"rows_materialized": 0,
"rows_after_recipe_filter": 0,
"rows_matched": 0,
"materialization_drop_reason": "dropped_by_account_scope_filter",
"limited_reason_category": "empty_match"
}
]
@@ -0,0 +1,39 @@
{
"run_id": "2026-03-29_Address_Query_Runtime_V1_M2_3A_Stage_Diagnostic_Materialization",
"date": "2026-03-29",
"stage": "address_query_runtime_v1",
"scope": "m2_3a_stage_diagnostic_raw_to_materialization",
"build_status": "PASSED",
"tests_status": "PASSED",
"diagnostic_run_status": "COMPLETED",
"implemented": {
"mcp_stage_status_taxonomy": true,
"row_stage_counters_with_account_scope": true,
"materialization_drop_reason": true,
"test_suite_renamed_to_m23": true,
"mojibake_safe_preview_export": true
},
"diagnostic_metrics": {
"cases_total": 5,
"address_mode_hit_rate": 1,
"intent_alignment_rate": 1,
"supported_recipe_selection_rate": 1,
"factual_positive_rate": 0,
"limited_mode_rate": 1,
"false_factual_rate": 0
},
"stage_status_distribution": [
{
"status": "raw_rows_received_but_not_materialized",
"count": 5
}
],
"drop_reason_distribution": [
{
"reason": "dropped_by_account_scope_filter",
"count": 5
}
],
"primary_bottleneck": "rows drop at account_scope stage before materialization (raw_rows_received \u003e 0 and rows_after_account_scope = 0)",
"next_priority": "tune account_scope strategy per recipe, then rerun curated data-aware positive suite"
}
@@ -0,0 +1,36 @@
# Smoke Checks
Дата: 2026-03-29
## Build
- `npm.cmd run build` -> PASS
## Tests
- `npx.cmd vitest run tests/addressQueryRuntimeM23.test.ts` -> PASS (10/10)
## Stage-diagnostic run
Источник: `assistant_window_stage_diagnostic_results.json`
- total cases: 5
- `detected_mode=address_query`: 5/5
- expected intent alignment: 5/5
- `selected_recipe` present: 5/5
- `response_type=LIMITED_WITH_REASON`: 5/5
- `false_factual_rate`: 0
### MCP stage distribution
- `raw_rows_received_but_not_materialized`: 5
### Row stage pattern
- `raw_rows_received`: non-zero
- `rows_after_account_scope`: 0
- `rows_materialized`: 0
- `rows_after_recipe_filter`: 0
- `rows_matched`: 0
### Interpretation
Current bottleneck is account-scope filtering before materialization.
@@ -0,0 +1,7 @@
| case_id | intent | mcp_call_status | raw_rows | after_account_scope | materialized | after_recipe_filter | matched | drop_reason |
|---|---|---|---|---|---|---|---|---|
| D1 | account_balance_snapshot | raw_rows_received_but_not_materialized | 20 | 0 | 0 | 0 | 0 | dropped_by_account_scope_filter |
| D2 | documents_forming_balance | raw_rows_received_but_not_materialized | 20 | 0 | 0 | 0 | 0 | dropped_by_account_scope_filter |
| D3 | documents_forming_balance | raw_rows_received_but_not_materialized | 20 | 0 | 0 | 0 | 0 | dropped_by_account_scope_filter |
| D4 | list_documents_by_counterparty | raw_rows_received_but_not_materialized | 20 | 0 | 0 | 0 | 0 | dropped_by_account_scope_filter |
| D5 | bank_operations_by_counterparty | raw_rows_received_but_not_materialized | 20 | 0 | 0 | 0 | 0 | dropped_by_account_scope_filter |
@@ -0,0 +1,43 @@
# Stage Diagnostic Report (M2.3a)
Дата: 2026-03-29
## Examined cases
- `account_balance_snapshot`
- `documents_forming_balance` (2 variants)
- `documents_by_counterparty`
- `bank_operations_by_counterparty`
## Diagnostic chain
For each case we tracked:
- `raw_rows_received`
- `rows_after_account_scope`
- `rows_materialized`
- `rows_after_recipe_filter`
- `rows_matched`
## Observed bottleneck
All examined cases show the same drop profile:
1. MCP returns raw rows (`raw_rows_received > 0`).
2. Account-scope stage removes all rows (`rows_after_account_scope = 0`).
3. Materialization and matching remain zero by consequence.
## Technical classification
- `mcp_call_status`: `raw_rows_received_but_not_materialized`
- `materialization_drop_reason`: `dropped_by_account_scope_filter`
## Practical conclusion
At this stage the primary blocker for positive factual outputs is not intent/routing, but scope filtration strategy.
## Next implementation focus
1. Tune account-scope strategy per recipe (not one shared pattern for all intents).
2. Rerun stage-diagnostic pass to confirm non-zero `rows_after_account_scope`.
3. Only then run curated data-aware positive acceptance suite.
@@ -0,0 +1,22 @@
# Run README ? Address Query Runtime V1 M2.3b
????: 2026-03-29
Run ID: `2026-03-29_Address_Query_Runtime_V1_M2_3B_AccountScope_Mode_Tuning`
## ???? ??????????
- ????????? account-scope ?? ?????? `strict/preferred` ?? recipe;
- ?????? ?????? blind-drop ??? non-account intents ????? controlled fallback;
- ????????? `false_factual_rate = 0` ? ??????????????? ????????????.
## ??? ?????????
- `npm.cmd run build` ? PASS.
- `npx.cmd vitest run tests/addressQueryRuntimeM23.test.ts` ? PASS (10/10).
- stage-diagnostic replay D1-D5 ? ???????? ? `assistant_window_stage_diagnostic_results.json`.
## ???????? ?????
- ??? strict account intents (D1-D3) ????? ????? ???????? ? account-scope.
- ??? preferred intents (D4-D5) rows ?????? materialize, ?? ?? match ?? anchors/recipe-????????.
- ????????? ???: resolver/filter tuning + curated positive live suite.
@@ -0,0 +1,252 @@
{
"generated_at": "2026-03-29T17:43:53.319Z",
"cases": [
{
"id": "D1",
"question": "show account balance 60 today",
"expected_intent": "account_balance_snapshot",
"http_status": 200,
"ok": true,
"detected_mode": "address_query",
"query_shape": "AGGREGATE_LOOKUP",
"detected_intent": "account_balance_snapshot",
"intent_aligned": true,
"selected_recipe": "address_movements_account_snapshot_v1",
"extracted_filters": {
"sort": "period_desc",
"limit": 20,
"account": "60",
"as_of_date": "2026-03-29"
},
"account_scope_mode": "strict",
"account_scope_fallback_applied": false,
"anchor_type": "account",
"anchor_value_raw": "60",
"resolver_confidence": "high",
"mcp_call_status": "raw_rows_received_but_not_materialized",
"stage_interpretation": "Rows came from MCP but were lost before/at materialization.",
"rows_fetched": 20,
"raw_rows_received": 20,
"rows_after_account_scope": 0,
"rows_materialized": 0,
"rows_after_recipe_filter": 0,
"rows_matched": 0,
"raw_row_keys_sample": [
"Период",
"Регистратор",
"СчетДт",
"СчетКт",
"Сумма",
"Period",
"Registrator",
"AccountDt",
"AccountKt",
"Amount"
],
"materialization_drop_reason": "dropped_by_account_scope_filter",
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
"limited_reason_category": "empty_match",
"response_type": "LIMITED_WITH_REASON",
"reply_type": "partial_coverage",
"assistant_reply_preview_escaped": "В live-данных по текущему фильтру записи не найдены.\\nПричина: по выбранным фильтрам в live-выборке нет строк.\\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
},
{
"id": "D2",
"question": "which documents form balance for account 62 as of 2020-07-31",
"expected_intent": "documents_forming_balance",
"http_status": 200,
"ok": true,
"detected_mode": "address_query",
"query_shape": "DOCUMENT_LIST",
"detected_intent": "documents_forming_balance",
"intent_aligned": true,
"selected_recipe": "address_documents_forming_balance_v1",
"extracted_filters": {
"sort": "period_desc",
"limit": 20,
"account": "62",
"as_of_date": "2020-07-31"
},
"account_scope_mode": "strict",
"account_scope_fallback_applied": false,
"anchor_type": "account",
"anchor_value_raw": "62",
"resolver_confidence": "high",
"mcp_call_status": "raw_rows_received_but_not_materialized",
"stage_interpretation": "Rows came from MCP but were lost before/at materialization.",
"rows_fetched": 20,
"raw_rows_received": 20,
"rows_after_account_scope": 0,
"rows_materialized": 0,
"rows_after_recipe_filter": 0,
"rows_matched": 0,
"raw_row_keys_sample": [
"Период",
"Регистратор",
"СчетДт",
"СчетКт",
"Сумма",
"Period",
"Registrator",
"AccountDt",
"AccountKt",
"Amount"
],
"materialization_drop_reason": "dropped_by_account_scope_filter",
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
"limited_reason_category": "empty_match",
"response_type": "LIMITED_WITH_REASON",
"reply_type": "partial_coverage",
"assistant_reply_preview_escaped": "В live-данных по текущему фильтру записи не найдены.\\nПричина: по выбранным фильтрам в live-выборке нет строк.\\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
},
{
"id": "D3",
"question": "reveal balance documents for account 60",
"expected_intent": "documents_forming_balance",
"http_status": 200,
"ok": true,
"detected_mode": "address_query",
"query_shape": "DOCUMENT_LIST",
"detected_intent": "documents_forming_balance",
"intent_aligned": true,
"selected_recipe": "address_documents_forming_balance_v1",
"extracted_filters": {
"sort": "period_desc",
"limit": 20,
"account": "60",
"as_of_date": "2026-03-29"
},
"account_scope_mode": "strict",
"account_scope_fallback_applied": false,
"anchor_type": "account",
"anchor_value_raw": "60",
"resolver_confidence": "high",
"mcp_call_status": "raw_rows_received_but_not_materialized",
"stage_interpretation": "Rows came from MCP but were lost before/at materialization.",
"rows_fetched": 20,
"raw_rows_received": 20,
"rows_after_account_scope": 0,
"rows_materialized": 0,
"rows_after_recipe_filter": 0,
"rows_matched": 0,
"raw_row_keys_sample": [
"Период",
"Регистратор",
"СчетДт",
"СчетКт",
"Сумма",
"Period",
"Registrator",
"AccountDt",
"AccountKt",
"Amount"
],
"materialization_drop_reason": "dropped_by_account_scope_filter",
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
"limited_reason_category": "empty_match",
"response_type": "LIMITED_WITH_REASON",
"reply_type": "partial_coverage",
"assistant_reply_preview_escaped": "В live-данных по текущему фильтру записи не найдены.\\nПричина: по выбранным фильтрам в live-выборке нет строк.\\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
},
{
"id": "D4",
"question": "show documents by counterparty Alfa from 2020-07-01 to 2020-07-31",
"expected_intent": "list_documents_by_counterparty",
"http_status": 200,
"ok": true,
"detected_mode": "address_query",
"query_shape": "DOCUMENT_LIST",
"detected_intent": "list_documents_by_counterparty",
"intent_aligned": true,
"selected_recipe": "address_documents_by_counterparty_v1",
"extracted_filters": {
"sort": "period_desc",
"limit": 20,
"counterparty": "Alfa",
"period_from": "2020-07-01",
"period_to": "2020-07-31"
},
"account_scope_mode": "preferred",
"account_scope_fallback_applied": true,
"anchor_type": "counterparty",
"anchor_value_raw": "Alfa",
"resolver_confidence": "medium",
"mcp_call_status": "materialized_but_not_matched",
"stage_interpretation": "Rows materialized but were filtered out by recipe/anchors.",
"rows_fetched": 20,
"raw_rows_received": 20,
"rows_after_account_scope": 20,
"rows_materialized": 20,
"rows_after_recipe_filter": 0,
"rows_matched": 0,
"raw_row_keys_sample": [
"Период",
"Регистратор",
"СчетДт",
"СчетКт",
"Сумма",
"Period",
"Registrator",
"AccountDt",
"AccountKt",
"Amount"
],
"materialization_drop_reason": "none",
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
"limited_reason_category": "empty_match",
"response_type": "LIMITED_WITH_REASON",
"reply_type": "partial_coverage",
"assistant_reply_preview_escaped": "В live-данных по текущему фильтру записи не найдены.\\nПричина: по выбранным фильтрам в live-выборке нет строк.\\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
},
{
"id": "D5",
"question": "show bank operations by counterparty Alfa from 2020-07-01 to 2020-07-31",
"expected_intent": "bank_operations_by_counterparty",
"http_status": 200,
"ok": true,
"detected_mode": "address_query",
"query_shape": "DOCUMENT_LIST",
"detected_intent": "bank_operations_by_counterparty",
"intent_aligned": true,
"selected_recipe": "address_bank_operations_by_counterparty_v1",
"extracted_filters": {
"sort": "period_desc",
"limit": 20,
"counterparty": "Alfa",
"period_from": "2020-07-01",
"period_to": "2020-07-31"
},
"account_scope_mode": "preferred",
"account_scope_fallback_applied": true,
"anchor_type": "counterparty",
"anchor_value_raw": "Alfa",
"resolver_confidence": "medium",
"mcp_call_status": "materialized_but_not_matched",
"stage_interpretation": "Rows materialized but were filtered out by recipe/anchors.",
"rows_fetched": 20,
"raw_rows_received": 20,
"rows_after_account_scope": 20,
"rows_materialized": 20,
"rows_after_recipe_filter": 0,
"rows_matched": 0,
"raw_row_keys_sample": [
"Период",
"Регистратор",
"СчетДт",
"СчетКт",
"Сумма",
"Period",
"Registrator",
"AccountDt",
"AccountKt",
"Amount"
],
"materialization_drop_reason": "none",
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
"limited_reason_category": "empty_match",
"response_type": "LIMITED_WITH_REASON",
"reply_type": "partial_coverage",
"assistant_reply_preview_escaped": "В live-данных по текущему фильтру записи не найдены.\\nПричина: по выбранным фильтрам в live-выборке нет строк.\\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
}
]
}
@@ -0,0 +1,27 @@
{
"baseline_run": "2026-03-29_Address_Query_Runtime_V1_M2_3A_Stage_Diagnostic_Materialization",
"current_run": "2026-03-29_Address_Query_Runtime_V1_M2_3B_AccountScope_Mode_Tuning",
"metrics": {
"mcp_status_raw_rows_received_but_not_materialized": {
"before": 1,
"after": 0.6
},
"mcp_status_materialized_but_not_matched": {
"before": 0,
"after": 0.4
},
"account_scope_fallback_applied_rate": {
"before": 0,
"after": 0.4
},
"false_factual_rate": {
"before": 0,
"after": 0
},
"factual_positive_rate": {
"before": 0,
"after": 0
}
},
"note": "M2.3b moves part of scenarios beyond pre-materialization loss without introducing false factual."
}
@@ -0,0 +1,26 @@
llm_normalizer/backend/src/types/addressQuery.ts
llm_normalizer/backend/src/types/assistant.ts
llm_normalizer/backend/src/services/addressRecipeCatalog.ts
llm_normalizer/backend/src/services/addressQueryService.ts
llm_normalizer/backend/src/services/assistantService.ts
llm_normalizer/backend/tests/addressQueryRuntimeM23.test.ts
docs/ADDRESS/address_query/address_runtime_contracts.md
docs/ADDRESS/address_query/query_recipes_v1.md
docs/ADDRESS/address_query/runtime_readiness_matrix_v1.md
docs/ADDRESS/address_query/address_scenario_matrix.md
docs/ADDRESS/address_query/README.md
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3B_AccountScope_Mode_Tuning/README.md
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3B_AccountScope_Mode_Tuning/run_summary.json
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3B_AccountScope_Mode_Tuning/before_after_metrics.json
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3B_AccountScope_Mode_Tuning/smoke_checks.md
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3B_AccountScope_Mode_Tuning/stage_diagnostic_report.md
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3B_AccountScope_Mode_Tuning/stage_diagnostic_matrix.md
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3B_AccountScope_Mode_Tuning/assistant_window_stage_diagnostic_results.json
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3B_AccountScope_Mode_Tuning/chat_export_stage_diagnostic.md
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3B_AccountScope_Mode_Tuning/live_call_inventory_address.json
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3B_AccountScope_Mode_Tuning/debug_payloads/D1.json
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3B_AccountScope_Mode_Tuning/debug_payloads/D2.json
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3B_AccountScope_Mode_Tuning/debug_payloads/D3.json
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3B_AccountScope_Mode_Tuning/debug_payloads/D4.json
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3B_AccountScope_Mode_Tuning/debug_payloads/D5.json
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3B_AccountScope_Mode_Tuning/changed_files.txt
@@ -0,0 +1,37 @@
# Chat Export (M2.3b)
## D1
- Q: show account balance 60 today
- intent: account_balance_snapshot
- status: raw_rows_received_but_not_materialized
- response_type: LIMITED_WITH_REASON
- reply: В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.
## D2
- Q: which documents form balance for account 62 as of 2020-07-31
- intent: documents_forming_balance
- status: raw_rows_received_but_not_materialized
- response_type: LIMITED_WITH_REASON
- reply: В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.
## D3
- Q: reveal balance documents for account 60
- intent: documents_forming_balance
- status: raw_rows_received_but_not_materialized
- response_type: LIMITED_WITH_REASON
- reply: В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.
## D4
- Q: show documents by counterparty Alfa from 2020-07-01 to 2020-07-31
- intent: list_documents_by_counterparty
- status: materialized_but_not_matched
- response_type: LIMITED_WITH_REASON
- reply: В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.
## D5
- Q: show bank operations by counterparty Alfa from 2020-07-01 to 2020-07-31
- intent: bank_operations_by_counterparty
- status: materialized_but_not_matched
- response_type: LIMITED_WITH_REASON
- reply: В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.
@@ -0,0 +1,60 @@
{
"question": "show account balance 60 today",
"response_type": "LIMITED_WITH_REASON",
"reply_type": "partial_coverage",
"debug": {
"detected_mode": "address_query",
"detected_mode_confidence": "high",
"query_shape": "AGGREGATE_LOOKUP",
"query_shape_confidence": "high",
"detected_intent": "account_balance_snapshot",
"detected_intent_confidence": "high",
"extracted_filters": {
"sort": "period_desc",
"limit": 20,
"account": "60",
"as_of_date": "2026-03-29"
},
"missing_required_filters": [],
"selected_recipe": "address_movements_account_snapshot_v1",
"account_scope_mode": "strict",
"account_scope_fallback_applied": false,
"anchor_type": "account",
"anchor_value_raw": "60",
"anchor_value_resolved": "60",
"resolver_confidence": "high",
"ambiguity_count": 0,
"mcp_call_status": "raw_rows_received_but_not_materialized",
"rows_fetched": 20,
"raw_rows_received": 20,
"rows_after_account_scope": 0,
"rows_after_recipe_filter": 0,
"rows_materialized": 0,
"rows_matched": 0,
"raw_row_keys_sample": [
"Период",
"Регистратор",
"СчетДт",
"СчетКт",
"Сумма",
"Period",
"Registrator",
"AccountDt",
"AccountKt",
"Amount"
],
"materialization_drop_reason": "dropped_by_account_scope_filter",
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
"limited_reason_category": "empty_match",
"response_type": "LIMITED_WITH_REASON",
"limitations": [
"no_rows_after_recipe_and_scope_filter"
],
"reasons": [
"address_action_detected",
"address_entity_detected",
"aggregate_signal_detected",
"account_balance_signal_detected"
]
}
}
@@ -0,0 +1,60 @@
{
"question": "which documents form balance for account 62 as of 2020-07-31",
"response_type": "LIMITED_WITH_REASON",
"reply_type": "partial_coverage",
"debug": {
"detected_mode": "address_query",
"detected_mode_confidence": "high",
"query_shape": "DOCUMENT_LIST",
"query_shape_confidence": "medium",
"detected_intent": "documents_forming_balance",
"detected_intent_confidence": "high",
"extracted_filters": {
"sort": "period_desc",
"limit": 20,
"account": "62",
"as_of_date": "2020-07-31"
},
"missing_required_filters": [],
"selected_recipe": "address_documents_forming_balance_v1",
"account_scope_mode": "strict",
"account_scope_fallback_applied": false,
"anchor_type": "account",
"anchor_value_raw": "62",
"anchor_value_resolved": "62",
"resolver_confidence": "high",
"ambiguity_count": 0,
"mcp_call_status": "raw_rows_received_but_not_materialized",
"rows_fetched": 20,
"raw_rows_received": 20,
"rows_after_account_scope": 0,
"rows_after_recipe_filter": 0,
"rows_materialized": 0,
"rows_matched": 0,
"raw_row_keys_sample": [
"Период",
"Регистратор",
"СчетДт",
"СчетКт",
"Сумма",
"Period",
"Registrator",
"AccountDt",
"AccountKt",
"Amount"
],
"materialization_drop_reason": "dropped_by_account_scope_filter",
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
"limited_reason_category": "empty_match",
"response_type": "LIMITED_WITH_REASON",
"limitations": [
"no_rows_after_recipe_and_scope_filter"
],
"reasons": [
"address_action_detected",
"address_entity_detected",
"document_list_signal_detected",
"documents_forming_balance_signal_detected"
]
}
}
@@ -0,0 +1,60 @@
{
"question": "reveal balance documents for account 60",
"response_type": "LIMITED_WITH_REASON",
"reply_type": "partial_coverage",
"debug": {
"detected_mode": "address_query",
"detected_mode_confidence": "high",
"query_shape": "DOCUMENT_LIST",
"query_shape_confidence": "medium",
"detected_intent": "documents_forming_balance",
"detected_intent_confidence": "high",
"extracted_filters": {
"sort": "period_desc",
"limit": 20,
"account": "60",
"as_of_date": "2026-03-29"
},
"missing_required_filters": [],
"selected_recipe": "address_documents_forming_balance_v1",
"account_scope_mode": "strict",
"account_scope_fallback_applied": false,
"anchor_type": "account",
"anchor_value_raw": "60",
"anchor_value_resolved": "60",
"resolver_confidence": "high",
"ambiguity_count": 0,
"mcp_call_status": "raw_rows_received_but_not_materialized",
"rows_fetched": 20,
"raw_rows_received": 20,
"rows_after_account_scope": 0,
"rows_after_recipe_filter": 0,
"rows_materialized": 0,
"rows_matched": 0,
"raw_row_keys_sample": [
"Период",
"Регистратор",
"СчетДт",
"СчетКт",
"Сумма",
"Period",
"Registrator",
"AccountDt",
"AccountKt",
"Amount"
],
"materialization_drop_reason": "dropped_by_account_scope_filter",
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
"limited_reason_category": "empty_match",
"response_type": "LIMITED_WITH_REASON",
"limitations": [
"no_rows_after_recipe_and_scope_filter"
],
"reasons": [
"address_action_detected",
"address_entity_detected",
"document_list_signal_detected",
"documents_forming_balance_signal_detected"
]
}
}
@@ -0,0 +1,61 @@
{
"question": "show documents by counterparty Alfa from 2020-07-01 to 2020-07-31",
"response_type": "LIMITED_WITH_REASON",
"reply_type": "partial_coverage",
"debug": {
"detected_mode": "address_query",
"detected_mode_confidence": "high",
"query_shape": "DOCUMENT_LIST",
"query_shape_confidence": "medium",
"detected_intent": "list_documents_by_counterparty",
"detected_intent_confidence": "medium",
"extracted_filters": {
"sort": "period_desc",
"limit": 20,
"counterparty": "Alfa",
"period_from": "2020-07-01",
"period_to": "2020-07-31"
},
"missing_required_filters": [],
"selected_recipe": "address_documents_by_counterparty_v1",
"account_scope_mode": "preferred",
"account_scope_fallback_applied": true,
"anchor_type": "counterparty",
"anchor_value_raw": "Alfa",
"anchor_value_resolved": "Alfa",
"resolver_confidence": "medium",
"ambiguity_count": 0,
"mcp_call_status": "materialized_but_not_matched",
"rows_fetched": 20,
"raw_rows_received": 20,
"rows_after_account_scope": 20,
"rows_after_recipe_filter": 0,
"rows_materialized": 20,
"rows_matched": 0,
"raw_row_keys_sample": [
"Период",
"Регистратор",
"СчетДт",
"СчетКт",
"Сумма",
"Period",
"Registrator",
"AccountDt",
"AccountKt",
"Amount"
],
"materialization_drop_reason": "none",
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
"limited_reason_category": "empty_match",
"response_type": "LIMITED_WITH_REASON",
"limitations": [
"no_rows_after_recipe_and_scope_filter"
],
"reasons": [
"address_action_detected",
"address_entity_detected",
"document_list_signal_detected",
"documents_by_counterparty_signal_detected"
]
}
}
@@ -0,0 +1,61 @@
{
"question": "show bank operations by counterparty Alfa from 2020-07-01 to 2020-07-31",
"response_type": "LIMITED_WITH_REASON",
"reply_type": "partial_coverage",
"debug": {
"detected_mode": "address_query",
"detected_mode_confidence": "high",
"query_shape": "DOCUMENT_LIST",
"query_shape_confidence": "medium",
"detected_intent": "bank_operations_by_counterparty",
"detected_intent_confidence": "medium",
"extracted_filters": {
"sort": "period_desc",
"limit": 20,
"counterparty": "Alfa",
"period_from": "2020-07-01",
"period_to": "2020-07-31"
},
"missing_required_filters": [],
"selected_recipe": "address_bank_operations_by_counterparty_v1",
"account_scope_mode": "preferred",
"account_scope_fallback_applied": true,
"anchor_type": "counterparty",
"anchor_value_raw": "Alfa",
"anchor_value_resolved": "Alfa",
"resolver_confidence": "medium",
"ambiguity_count": 0,
"mcp_call_status": "materialized_but_not_matched",
"rows_fetched": 20,
"raw_rows_received": 20,
"rows_after_account_scope": 20,
"rows_after_recipe_filter": 0,
"rows_materialized": 20,
"rows_matched": 0,
"raw_row_keys_sample": [
"Период",
"Регистратор",
"СчетДт",
"СчетКт",
"Сумма",
"Period",
"Registrator",
"AccountDt",
"AccountKt",
"Amount"
],
"materialization_drop_reason": "none",
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
"limited_reason_category": "empty_match",
"response_type": "LIMITED_WITH_REASON",
"limitations": [
"no_rows_after_recipe_and_scope_filter"
],
"reasons": [
"address_action_detected",
"address_entity_detected",
"document_list_signal_detected",
"bank_ops_by_counterparty_signal_detected"
]
}
}
@@ -0,0 +1,74 @@
{
"cases": [
{
"case_id": "D1",
"selected_recipe": "address_movements_account_snapshot_v1",
"mcp_call_status": "raw_rows_received_but_not_materialized",
"rows_fetched": 20,
"raw_rows_received": 20,
"rows_after_account_scope": 0,
"rows_materialized": 0,
"rows_after_recipe_filter": 0,
"rows_matched": 0,
"account_scope_mode": "strict",
"account_scope_fallback_applied": false,
"materialization_drop_reason": "dropped_by_account_scope_filter"
},
{
"case_id": "D2",
"selected_recipe": "address_documents_forming_balance_v1",
"mcp_call_status": "raw_rows_received_but_not_materialized",
"rows_fetched": 20,
"raw_rows_received": 20,
"rows_after_account_scope": 0,
"rows_materialized": 0,
"rows_after_recipe_filter": 0,
"rows_matched": 0,
"account_scope_mode": "strict",
"account_scope_fallback_applied": false,
"materialization_drop_reason": "dropped_by_account_scope_filter"
},
{
"case_id": "D3",
"selected_recipe": "address_documents_forming_balance_v1",
"mcp_call_status": "raw_rows_received_but_not_materialized",
"rows_fetched": 20,
"raw_rows_received": 20,
"rows_after_account_scope": 0,
"rows_materialized": 0,
"rows_after_recipe_filter": 0,
"rows_matched": 0,
"account_scope_mode": "strict",
"account_scope_fallback_applied": false,
"materialization_drop_reason": "dropped_by_account_scope_filter"
},
{
"case_id": "D4",
"selected_recipe": "address_documents_by_counterparty_v1",
"mcp_call_status": "materialized_but_not_matched",
"rows_fetched": 20,
"raw_rows_received": 20,
"rows_after_account_scope": 20,
"rows_materialized": 20,
"rows_after_recipe_filter": 0,
"rows_matched": 0,
"account_scope_mode": "preferred",
"account_scope_fallback_applied": true,
"materialization_drop_reason": "none"
},
{
"case_id": "D5",
"selected_recipe": "address_bank_operations_by_counterparty_v1",
"mcp_call_status": "materialized_but_not_matched",
"rows_fetched": 20,
"raw_rows_received": 20,
"rows_after_account_scope": 20,
"rows_materialized": 20,
"rows_after_recipe_filter": 0,
"rows_matched": 0,
"account_scope_mode": "preferred",
"account_scope_fallback_applied": true,
"materialization_drop_reason": "none"
}
]
}
@@ -0,0 +1,47 @@
{
"run_id": "2026-03-29_Address_Query_Runtime_V1_M2_3B_AccountScope_Mode_Tuning",
"date": "2026-03-29",
"stage": "address_query_runtime_v1",
"scope": "m2_3b_account_scope_mode_tuning_after_stage_diagnostic",
"build_status": "PASSED",
"tests_status": "PASSED",
"diagnostic_run_status": "COMPLETED",
"implemented": {
"account_scope_mode_by_recipe": true,
"strict_mode_for_account_intents": true,
"preferred_mode_with_fallback_for_party_intents": true,
"account_filter_moved_to_normalized_stage": true,
"debug_scope_mode_and_fallback": true
},
"diagnostic_metrics": {
"cases_total": 5,
"address_mode_hit_rate": 1,
"intent_alignment_rate": 1,
"supported_recipe_selection_rate": 1,
"factual_positive_rate": 0,
"limited_mode_rate": 1,
"false_factual_rate": 0
},
"stage_status_distribution": [
{
"status": "raw_rows_received_but_not_materialized",
"count": 3
},
{
"status": "materialized_but_not_matched",
"count": 2
}
],
"drop_reason_distribution": [
{
"reason": "dropped_by_account_scope_filter",
"count": 3
},
{
"reason": "none",
"count": 2
}
],
"primary_bottleneck": "strict account intents still lose rows at account-scope stage; preferred intents now reach materialized_but_not_matched stage",
"next_priority": "run focused resolver/anchor tuning and curated positive live suite for non-empty matches"
}
@@ -0,0 +1,5 @@
# Smoke Checks (M2.3b)
1. `npm.cmd run build` - PASS
2. `npx.cmd vitest run tests/addressQueryRuntimeM23.test.ts` - PASS
3. Stage diagnostic replay D1-D5 - COMPLETED (5 cases)
@@ -0,0 +1,9 @@
# Stage Diagnostic Matrix (M2.3b)
| case | intent | account_scope_mode | fallback | mcp_call_status | rows_after_account_scope | rows_materialized | rows_after_recipe_filter | rows_matched |
|---|---|---|---:|---|---:|---:|---:|---:|
| D1 | account_balance_snapshot | strict | no | raw_rows_received_but_not_materialized | 0 | 0 | 0 | 0 |
| D2 | documents_forming_balance | strict | no | raw_rows_received_but_not_materialized | 0 | 0 | 0 | 0 |
| D3 | documents_forming_balance | strict | no | raw_rows_received_but_not_materialized | 0 | 0 | 0 | 0 |
| D4 | list_documents_by_counterparty | preferred | yes | materialized_but_not_matched | 20 | 20 | 0 | 0 |
| D5 | bank_operations_by_counterparty | preferred | yes | materialized_but_not_matched | 20 | 20 | 0 | 0 |
@@ -0,0 +1,19 @@
# Stage Diagnostic Report (M2.3b)
- Date: 2026-03-29
- Goal: apply account-scope strategy by recipe (`strict` vs `preferred`) and re-run D1-D5.
## Findings
- D1-D3 (account intents) stay in `strict` mode and still fail at account-scope stage.
- D4-D5 (counterparty intents) use `preferred` mode with fallback and now reach `materialized_but_not_matched`.
- This confirms the bottleneck moved forward for non-account intents: now main loss is at anchor/recipe matching, not at pre-materialization scope cut.
## Decision
- Keep `strict` for explicit account intents (`account_balance_snapshot`, `documents_forming_balance`).
- Keep `preferred` for counterparty/contract-oriented intents to avoid blind early row loss.
## Next Step
- Launch focused resolver and filter tuning for counterparty anchors, then run curated positive live suite.
@@ -0,0 +1,30 @@
# Run README — Address Query Runtime V1 M2.3
Дата: 2026-03-29
Run ID: `2026-03-29_Address_Query_Runtime_V1_M2_3_DocumentsFormingBalance_DataAwareAcceptance`
## Цель инкремента
- синхронизировать docs и runtime policy: `runtime=data-agnostic`, `acceptance=data-aware`;
- добавить новый intent `documents_forming_balance`;
- добавить drilldown recipe `address_documents_forming_balance_v1`;
- расширить debug-контракт: resolver block + row-stage flow block;
- собрать отдельный M2.3 dry-run пакет для следующего live-positive прохода.
## Что проверено
- `npm.cmd run build` - PASS.
- `npx.cmd vitest run tests/addressQueryRuntimeM23.test.ts` - PASS (10/10).
- dry-run через `/api/assistant/message` на 8 вопросах - сохранен в `assistant_window_dry_run_results.json`.
## Ключевой вывод
Routing/intent/shape остаются стабильными, `documents_forming_balance` корректно маршрутизируется и получает recipe.
Новый debug-блок по anchor/resolver/row-stages присутствует в 100% кейсов.
При этом positive factual в этом пакете еще не получен (`factual_positive_rate = 0`), поэтому следующий обязательный шаг — отдельный data-aware exploratory pass по live для curated non-empty acceptance cases.
## Ограничение текущего пакета
- Это dry-run safety + instrumentation пакет.
- Data-aware positive acceptance в этом run только подготовлен структурно, но не закрыт по non-empty factual.
@@ -0,0 +1,261 @@
{
"generated_at": "2026-03-29T17:00:07.144Z",
"questions": [
{
"id": "Q1",
"question": "which documents form balance for account 62 as of 2020-07-31",
"expected_intent": "documents_forming_balance",
"http_status": 200,
"ok": true,
"detected_mode": "address_query",
"query_shape": "DOCUMENT_LIST",
"detected_intent": "documents_forming_balance",
"selected_recipe": "address_documents_forming_balance_v1",
"extracted_filters": {
"sort": "period_desc",
"limit": 20,
"account": "62",
"as_of_date": "2020-07-31"
},
"missing_required_filters": [],
"anchor_type": "account",
"anchor_value_raw": "62",
"resolver_confidence": "high",
"mcp_call_status": "empty",
"rows_fetched": 20,
"raw_rows_received": 20,
"rows_materialized": 0,
"rows_after_recipe_filter": 0,
"rows_matched": 0,
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
"limited_reason_category": "empty_match",
"response_type": "LIMITED_WITH_REASON",
"reply_type": "partial_coverage",
"assistant_reply_preview": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
},
{
"id": "Q2",
"question": "reveal balance documents for account 60",
"expected_intent": "documents_forming_balance",
"http_status": 200,
"ok": true,
"detected_mode": "address_query",
"query_shape": "DOCUMENT_LIST",
"detected_intent": "documents_forming_balance",
"selected_recipe": "address_documents_forming_balance_v1",
"extracted_filters": {
"sort": "period_desc",
"limit": 20,
"account": "60",
"as_of_date": "2026-03-29"
},
"missing_required_filters": [],
"anchor_type": "account",
"anchor_value_raw": "60",
"resolver_confidence": "high",
"mcp_call_status": "empty",
"rows_fetched": 20,
"raw_rows_received": 20,
"rows_materialized": 0,
"rows_after_recipe_filter": 0,
"rows_matched": 0,
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
"limited_reason_category": "empty_match",
"response_type": "LIMITED_WITH_REASON",
"reply_type": "partial_coverage",
"assistant_reply_preview": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
},
{
"id": "Q3",
"question": "show documents by counterparty Alfa from 2020-07-01 to 2020-07-31",
"expected_intent": "list_documents_by_counterparty",
"http_status": 200,
"ok": true,
"detected_mode": "address_query",
"query_shape": "DOCUMENT_LIST",
"detected_intent": "list_documents_by_counterparty",
"selected_recipe": "address_documents_by_counterparty_v1",
"extracted_filters": {
"sort": "period_desc",
"limit": 20,
"counterparty": "Alfa",
"period_from": "2020-07-01",
"period_to": "2020-07-31"
},
"missing_required_filters": [],
"anchor_type": "counterparty",
"anchor_value_raw": "Alfa",
"resolver_confidence": "medium",
"mcp_call_status": "empty",
"rows_fetched": 20,
"raw_rows_received": 20,
"rows_materialized": 0,
"rows_after_recipe_filter": 0,
"rows_matched": 0,
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
"limited_reason_category": "empty_match",
"response_type": "LIMITED_WITH_REASON",
"reply_type": "partial_coverage",
"assistant_reply_preview": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
},
{
"id": "Q4",
"question": "show bank operations by counterparty Alfa from 2020-07-01 to 2020-07-31",
"expected_intent": "bank_operations_by_counterparty",
"http_status": 200,
"ok": true,
"detected_mode": "address_query",
"query_shape": "DOCUMENT_LIST",
"detected_intent": "bank_operations_by_counterparty",
"selected_recipe": "address_bank_operations_by_counterparty_v1",
"extracted_filters": {
"sort": "period_desc",
"limit": 20,
"counterparty": "Alfa",
"period_from": "2020-07-01",
"period_to": "2020-07-31"
},
"missing_required_filters": [],
"anchor_type": "counterparty",
"anchor_value_raw": "Alfa",
"resolver_confidence": "medium",
"mcp_call_status": "empty",
"rows_fetched": 20,
"raw_rows_received": 20,
"rows_materialized": 0,
"rows_after_recipe_filter": 0,
"rows_matched": 0,
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
"limited_reason_category": "empty_match",
"response_type": "LIMITED_WITH_REASON",
"reply_type": "partial_coverage",
"assistant_reply_preview": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
},
{
"id": "Q5",
"question": "show account balance 60 today",
"expected_intent": "account_balance_snapshot",
"http_status": 200,
"ok": true,
"detected_mode": "address_query",
"query_shape": "AGGREGATE_LOOKUP",
"detected_intent": "account_balance_snapshot",
"selected_recipe": "address_movements_account_snapshot_v1",
"extracted_filters": {
"sort": "period_desc",
"limit": 20,
"account": "60",
"as_of_date": "2026-03-29"
},
"missing_required_filters": [],
"anchor_type": "account",
"anchor_value_raw": "60",
"resolver_confidence": "high",
"mcp_call_status": "empty",
"rows_fetched": 20,
"raw_rows_received": 20,
"rows_materialized": 0,
"rows_after_recipe_filter": 0,
"rows_matched": 0,
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
"limited_reason_category": "empty_match",
"response_type": "LIMITED_WITH_REASON",
"reply_type": "partial_coverage",
"assistant_reply_preview": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
},
{
"id": "Q6",
"question": "show open items by contract",
"expected_intent": "open_items_by_counterparty_or_contract",
"http_status": 200,
"ok": true,
"detected_mode": "address_query",
"query_shape": "OBJECT_LOOKUP",
"detected_intent": "open_items_by_counterparty_or_contract",
"selected_recipe": null,
"extracted_filters": {
"sort": "period_desc",
"limit": 20
},
"missing_required_filters": [
"counterparty_or_contract"
],
"anchor_type": "unknown",
"anchor_value_raw": null,
"resolver_confidence": "low",
"mcp_call_status": "skipped",
"rows_fetched": 0,
"raw_rows_received": 0,
"rows_materialized": 0,
"rows_after_recipe_filter": 0,
"rows_matched": 0,
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
"limited_reason_category": "missing_anchor",
"response_type": "LIMITED_WITH_REASON",
"reply_type": "partial_coverage",
"assistant_reply_preview": "Для точного адресного поиска не хватает обязательного якоря.\nПричина: для open_items нужен якорь контрагента или договора.\nЧто нужно уточнить: укажите контрагента или номер/название договора."
},
{
"id": "Q7",
"question": "show documents by contract 15/24",
"expected_intent": "unknown",
"http_status": 200,
"ok": true,
"detected_mode": "address_query",
"query_shape": "DOCUMENT_LIST",
"detected_intent": "unknown",
"selected_recipe": null,
"extracted_filters": {
"sort": "period_desc",
"limit": 20,
"contract": "15/24"
},
"missing_required_filters": [],
"anchor_type": "contract",
"anchor_value_raw": "15/24",
"resolver_confidence": "medium",
"mcp_call_status": "skipped",
"rows_fetched": 0,
"raw_rows_received": 0,
"rows_materialized": 0,
"rows_after_recipe_filter": 0,
"rows_matched": 0,
"runtime_readiness": "DEEP_ONLY",
"limited_reason_category": "unsupported",
"response_type": "LIMITED_WITH_REASON",
"reply_type": "partial_coverage",
"assistant_reply_preview": "Этот запрос не подходит под address_query V1.\nПричина: intent пока не поддержан в address V1.\nЧто нужно уточнить: переформулируйте вопрос как адресный lookup по счету/контрагенту/договору."
},
{
"id": "Q8",
"question": "who owes us and who we owe today",
"expected_intent": "list_receivables_counterparties",
"http_status": 200,
"ok": true,
"detected_mode": "address_query",
"query_shape": "COMPOUND_FACTUAL_QUERY",
"detected_intent": "list_receivables_counterparties",
"selected_recipe": "address_movements_receivables_v1",
"extracted_filters": {
"sort": "period_desc",
"limit": 20,
"as_of_date": "2026-03-29"
},
"missing_required_filters": [],
"anchor_type": "unknown",
"anchor_value_raw": null,
"resolver_confidence": "low",
"mcp_call_status": "empty",
"rows_fetched": 20,
"raw_rows_received": 20,
"rows_materialized": 0,
"rows_after_recipe_filter": 0,
"rows_matched": 0,
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
"limited_reason_category": "empty_match",
"response_type": "LIMITED_WITH_REASON",
"reply_type": "partial_coverage",
"assistant_reply_preview": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
}
]
}
@@ -0,0 +1,30 @@
{
"baseline_run": "2026-03-29_Address_Query_Runtime_V1_M2_2_Documents_BankOps_By_Counterparty",
"current_run": "2026-03-29_Address_Query_Runtime_V1_M2_3_DocumentsFormingBalance_DataAwareAcceptance",
"changes": {
"intent_documents_forming_balance": {
"before": false,
"after": true
},
"recipe_documents_forming_balance_v1": {
"before": false,
"after": true
},
"debug_anchor_resolution_block": {
"before": false,
"after": true
},
"debug_row_stage_flow_block": {
"before": false,
"after": true
},
"supported_recipe_selection_rate": {
"before": 0.6667,
"after": 0.75
},
"false_factual_rate": {
"before": 0.0,
"after": 0.0
}
}
}
@@ -0,0 +1,30 @@
llm_normalizer/backend/src/types/addressQuery.ts
llm_normalizer/backend/src/services/addressIntentResolver.ts
llm_normalizer/backend/src/services/addressFilterExtractor.ts
llm_normalizer/backend/src/services/addressRecipeCatalog.ts
llm_normalizer/backend/src/services/addressQueryService.ts
llm_normalizer/backend/src/services/assistantService.ts
llm_normalizer/backend/src/types/assistant.ts
llm_normalizer/backend/tests/addressQueryRuntimeM23.test.ts
docs/ADDRESS/address_query/address_runtime_contracts.md
docs/ADDRESS/address_query/runtime_readiness_matrix_v1.md
docs/ADDRESS/address_query/address_scenario_matrix.md
docs/ADDRESS/address_query/README.md
docs/ADDRESS/address_query/data_aware_positive_acceptance_suite_v1.md
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3_DocumentsFormingBalance_DataAwareAcceptance/README.md
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3_DocumentsFormingBalance_DataAwareAcceptance/run_summary.json
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3_DocumentsFormingBalance_DataAwareAcceptance/before_after_metrics.json
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3_DocumentsFormingBalance_DataAwareAcceptance/data_aware_acceptance_case_matrix.md
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3_DocumentsFormingBalance_DataAwareAcceptance/assistant_window_dry_run_results.json
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3_DocumentsFormingBalance_DataAwareAcceptance/chat_export_data_aware_live.md
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3_DocumentsFormingBalance_DataAwareAcceptance/live_call_inventory_address.json
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3_DocumentsFormingBalance_DataAwareAcceptance/smoke_checks.md
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3_DocumentsFormingBalance_DataAwareAcceptance/debug_payloads/Q1.json
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3_DocumentsFormingBalance_DataAwareAcceptance/debug_payloads/Q2.json
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3_DocumentsFormingBalance_DataAwareAcceptance/debug_payloads/Q3.json
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3_DocumentsFormingBalance_DataAwareAcceptance/debug_payloads/Q4.json
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3_DocumentsFormingBalance_DataAwareAcceptance/debug_payloads/Q5.json
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3_DocumentsFormingBalance_DataAwareAcceptance/debug_payloads/Q6.json
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3_DocumentsFormingBalance_DataAwareAcceptance/debug_payloads/Q7.json
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3_DocumentsFormingBalance_DataAwareAcceptance/debug_payloads/Q8.json
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3_DocumentsFormingBalance_DataAwareAcceptance/changed_files.txt
@@ -0,0 +1,68 @@
# Chat Export — Data-Aware Live (Dry-Run Proxy)
Date: 2026-03-29
## Q1
Question: which documents form balance for account 62 as of 2020-07-31
Detected intent: documents_forming_balance
Reply type: partial_coverage
Preview: В live-данных по текущему фильтру записи не найдены.
Причина: по выбранным фильтрам в live-выборке нет строк.
Что нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.
## Q2
Question: reveal balance documents for account 60
Detected intent: documents_forming_balance
Reply type: partial_coverage
Preview: В live-данных по текущему фильтру записи не найдены.
Причина: по выбранным фильтрам в live-выборке нет строк.
Что нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.
## Q3
Question: show documents by counterparty Alfa from 2020-07-01 to 2020-07-31
Detected intent: list_documents_by_counterparty
Reply type: partial_coverage
Preview: В live-данных по текущему фильтру записи не найдены.
Причина: по выбранным фильтрам в live-выборке нет строк.
Что нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.
## Q4
Question: show bank operations by counterparty Alfa from 2020-07-01 to 2020-07-31
Detected intent: bank_operations_by_counterparty
Reply type: partial_coverage
Preview: В live-данных по текущему фильтру записи не найдены.
Причина: по выбранным фильтрам в live-выборке нет строк.
Что нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.
## Q5
Question: show account balance 60 today
Detected intent: account_balance_snapshot
Reply type: partial_coverage
Preview: В live-данных по текущему фильтру записи не найдены.
Причина: по выбранным фильтрам в live-выборке нет строк.
Что нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.
## Q6
Question: show open items by contract
Detected intent: open_items_by_counterparty_or_contract
Reply type: partial_coverage
Preview: Для точного адресного поиска не хватает обязательного якоря.
Причина: для open_items нужен якорь контрагента или договора.
Что нужно уточнить: укажите контрагента или номер/название договора.
## Q7
Question: show documents by contract 15/24
Detected intent: unknown
Reply type: partial_coverage
Preview: Этот запрос не подходит под address_query V1.
Причина: intent пока не поддержан в address V1.
Что нужно уточнить: переформулируйте вопрос как адресный lookup по счету/контрагенту/договору.
## Q8
Question: who owes us and who we owe today
Detected intent: list_receivables_counterparties
Reply type: partial_coverage
Preview: В live-данных по текущему фильтру записи не найдены.
Причина: по выбранным фильтрам в live-выборке нет строк.
Что нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.
@@ -0,0 +1,19 @@
# Data-Aware Acceptance Case Matrix (M2.3 Dry-Run)
Дата: 2026-03-29
| case_id | question | expected_intent | selected_recipe | expected_non_empty | actual_non_empty | result | notes |
|---|---|---|---|---|---|---|---|
| Q1 | which documents form balance for account 62 as of 2020-07-31 | documents_forming_balance | address_documents_forming_balance_v1 | TBD (positive candidate) | no | limited(empty_match) | intent+recipe path correct |
| Q2 | reveal balance documents for account 60 | documents_forming_balance | address_documents_forming_balance_v1 | TBD (positive candidate) | no | limited(empty_match) | as_of defaulted to today |
| Q3 | show documents by counterparty Alfa from 2020-07-01 to 2020-07-31 | list_documents_by_counterparty | address_documents_by_counterparty_v1 | TBD (positive candidate) | no | limited(empty_match) | counterparty anchor resolved |
| Q4 | show bank operations by counterparty Alfa from 2020-07-01 to 2020-07-31 | bank_operations_by_counterparty | address_bank_operations_by_counterparty_v1 | TBD (positive candidate) | no | limited(empty_match) | bank recipe path correct |
| Q5 | show account balance 60 today | account_balance_snapshot | address_movements_account_snapshot_v1 | TBD (positive candidate) | no | limited(empty_match) | aggregate lane stable |
| Q6 | show open items by contract | open_items_by_counterparty_or_contract | - | no | no | limited(missing_anchor) | expected safety behavior |
| Q7 | show documents by contract 15/24 | unknown | - | no | no | limited(unsupported) | expected until M2.4 |
| Q8 | who owes us and who we owe today | list_receivables_counterparties | address_movements_receivables_v1 | no (compound detect-only) | no | limited(empty_match) | decomposition still not implemented |
## Matrix note
Этот файл фиксирует dry-run safety/reliability состояние.
Для фактического `data_aware_positive_non_empty_rate` нужен отдельный exploratory live pass с подбором non-empty anchors.
@@ -0,0 +1,34 @@
{
"id": "Q1",
"question": "which documents form balance for account 62 as of 2020-07-31",
"expected_intent": "documents_forming_balance",
"http_status": 200,
"ok": true,
"detected_mode": "address_query",
"query_shape": "DOCUMENT_LIST",
"detected_intent": "documents_forming_balance",
"selected_recipe": "address_documents_forming_balance_v1",
"extracted_filters": {
"sort": "period_desc",
"limit": 20,
"account": "62",
"as_of_date": "2020-07-31"
},
"missing_required_filters": [
],
"anchor_type": "account",
"anchor_value_raw": "62",
"resolver_confidence": "high",
"mcp_call_status": "empty",
"rows_fetched": 20,
"raw_rows_received": 20,
"rows_materialized": 0,
"rows_after_recipe_filter": 0,
"rows_matched": 0,
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
"limited_reason_category": "empty_match",
"response_type": "LIMITED_WITH_REASON",
"reply_type": "partial_coverage",
"assistant_reply_preview": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
}
@@ -0,0 +1,34 @@
{
"id": "Q2",
"question": "reveal balance documents for account 60",
"expected_intent": "documents_forming_balance",
"http_status": 200,
"ok": true,
"detected_mode": "address_query",
"query_shape": "DOCUMENT_LIST",
"detected_intent": "documents_forming_balance",
"selected_recipe": "address_documents_forming_balance_v1",
"extracted_filters": {
"sort": "period_desc",
"limit": 20,
"account": "60",
"as_of_date": "2026-03-29"
},
"missing_required_filters": [
],
"anchor_type": "account",
"anchor_value_raw": "60",
"resolver_confidence": "high",
"mcp_call_status": "empty",
"rows_fetched": 20,
"raw_rows_received": 20,
"rows_materialized": 0,
"rows_after_recipe_filter": 0,
"rows_matched": 0,
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
"limited_reason_category": "empty_match",
"response_type": "LIMITED_WITH_REASON",
"reply_type": "partial_coverage",
"assistant_reply_preview": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
}
@@ -0,0 +1,35 @@
{
"id": "Q3",
"question": "show documents by counterparty Alfa from 2020-07-01 to 2020-07-31",
"expected_intent": "list_documents_by_counterparty",
"http_status": 200,
"ok": true,
"detected_mode": "address_query",
"query_shape": "DOCUMENT_LIST",
"detected_intent": "list_documents_by_counterparty",
"selected_recipe": "address_documents_by_counterparty_v1",
"extracted_filters": {
"sort": "period_desc",
"limit": 20,
"counterparty": "Alfa",
"period_from": "2020-07-01",
"period_to": "2020-07-31"
},
"missing_required_filters": [
],
"anchor_type": "counterparty",
"anchor_value_raw": "Alfa",
"resolver_confidence": "medium",
"mcp_call_status": "empty",
"rows_fetched": 20,
"raw_rows_received": 20,
"rows_materialized": 0,
"rows_after_recipe_filter": 0,
"rows_matched": 0,
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
"limited_reason_category": "empty_match",
"response_type": "LIMITED_WITH_REASON",
"reply_type": "partial_coverage",
"assistant_reply_preview": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
}
@@ -0,0 +1,35 @@
{
"id": "Q4",
"question": "show bank operations by counterparty Alfa from 2020-07-01 to 2020-07-31",
"expected_intent": "bank_operations_by_counterparty",
"http_status": 200,
"ok": true,
"detected_mode": "address_query",
"query_shape": "DOCUMENT_LIST",
"detected_intent": "bank_operations_by_counterparty",
"selected_recipe": "address_bank_operations_by_counterparty_v1",
"extracted_filters": {
"sort": "period_desc",
"limit": 20,
"counterparty": "Alfa",
"period_from": "2020-07-01",
"period_to": "2020-07-31"
},
"missing_required_filters": [
],
"anchor_type": "counterparty",
"anchor_value_raw": "Alfa",
"resolver_confidence": "medium",
"mcp_call_status": "empty",
"rows_fetched": 20,
"raw_rows_received": 20,
"rows_materialized": 0,
"rows_after_recipe_filter": 0,
"rows_matched": 0,
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
"limited_reason_category": "empty_match",
"response_type": "LIMITED_WITH_REASON",
"reply_type": "partial_coverage",
"assistant_reply_preview": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
}
@@ -0,0 +1,34 @@
{
"id": "Q5",
"question": "show account balance 60 today",
"expected_intent": "account_balance_snapshot",
"http_status": 200,
"ok": true,
"detected_mode": "address_query",
"query_shape": "AGGREGATE_LOOKUP",
"detected_intent": "account_balance_snapshot",
"selected_recipe": "address_movements_account_snapshot_v1",
"extracted_filters": {
"sort": "period_desc",
"limit": 20,
"account": "60",
"as_of_date": "2026-03-29"
},
"missing_required_filters": [
],
"anchor_type": "account",
"anchor_value_raw": "60",
"resolver_confidence": "high",
"mcp_call_status": "empty",
"rows_fetched": 20,
"raw_rows_received": 20,
"rows_materialized": 0,
"rows_after_recipe_filter": 0,
"rows_matched": 0,
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
"limited_reason_category": "empty_match",
"response_type": "LIMITED_WITH_REASON",
"reply_type": "partial_coverage",
"assistant_reply_preview": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
}
@@ -0,0 +1,32 @@
{
"id": "Q6",
"question": "show open items by contract",
"expected_intent": "open_items_by_counterparty_or_contract",
"http_status": 200,
"ok": true,
"detected_mode": "address_query",
"query_shape": "OBJECT_LOOKUP",
"detected_intent": "open_items_by_counterparty_or_contract",
"selected_recipe": null,
"extracted_filters": {
"sort": "period_desc",
"limit": 20
},
"missing_required_filters": [
"counterparty_or_contract"
],
"anchor_type": "unknown",
"anchor_value_raw": null,
"resolver_confidence": "low",
"mcp_call_status": "skipped",
"rows_fetched": 0,
"raw_rows_received": 0,
"rows_materialized": 0,
"rows_after_recipe_filter": 0,
"rows_matched": 0,
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
"limited_reason_category": "missing_anchor",
"response_type": "LIMITED_WITH_REASON",
"reply_type": "partial_coverage",
"assistant_reply_preview": "Для точного адресного поиска не хватает обязательного якоря.\nПричина: для open_items нужен якорь контрагента или договора.\nЧто нужно уточнить: укажите контрагента или номер/название договора."
}
@@ -0,0 +1,33 @@
{
"id": "Q7",
"question": "show documents by contract 15/24",
"expected_intent": "unknown",
"http_status": 200,
"ok": true,
"detected_mode": "address_query",
"query_shape": "DOCUMENT_LIST",
"detected_intent": "unknown",
"selected_recipe": null,
"extracted_filters": {
"sort": "period_desc",
"limit": 20,
"contract": "15/24"
},
"missing_required_filters": [
],
"anchor_type": "contract",
"anchor_value_raw": "15/24",
"resolver_confidence": "medium",
"mcp_call_status": "skipped",
"rows_fetched": 0,
"raw_rows_received": 0,
"rows_materialized": 0,
"rows_after_recipe_filter": 0,
"rows_matched": 0,
"runtime_readiness": "DEEP_ONLY",
"limited_reason_category": "unsupported",
"response_type": "LIMITED_WITH_REASON",
"reply_type": "partial_coverage",
"assistant_reply_preview": "Этот запрос не подходит под address_query V1.\nПричина: intent пока не поддержан в address V1.\nЧто нужно уточнить: переформулируйте вопрос как адресный lookup по счету/контрагенту/договору."
}
@@ -0,0 +1,33 @@
{
"id": "Q8",
"question": "who owes us and who we owe today",
"expected_intent": "list_receivables_counterparties",
"http_status": 200,
"ok": true,
"detected_mode": "address_query",
"query_shape": "COMPOUND_FACTUAL_QUERY",
"detected_intent": "list_receivables_counterparties",
"selected_recipe": "address_movements_receivables_v1",
"extracted_filters": {
"sort": "period_desc",
"limit": 20,
"as_of_date": "2026-03-29"
},
"missing_required_filters": [
],
"anchor_type": "unknown",
"anchor_value_raw": null,
"resolver_confidence": "low",
"mcp_call_status": "empty",
"rows_fetched": 20,
"raw_rows_received": 20,
"rows_materialized": 0,
"rows_after_recipe_filter": 0,
"rows_matched": 0,
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
"limited_reason_category": "empty_match",
"response_type": "LIMITED_WITH_REASON",
"reply_type": "partial_coverage",
"assistant_reply_preview": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
}
@@ -0,0 +1,122 @@
[
{
"case_id": "Q1",
"question": "which documents form balance for account 62 as of 2020-07-31",
"detected_intent": "documents_forming_balance",
"selected_recipe": "address_documents_forming_balance_v1",
"mcp_call_status": "empty",
"rows_fetched": 20,
"raw_rows_received": 20,
"rows_materialized": 0,
"rows_after_recipe_filter": 0,
"rows_matched": 0,
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
"limited_reason_category": "empty_match",
"response_type": "LIMITED_WITH_REASON"
},
{
"case_id": "Q2",
"question": "reveal balance documents for account 60",
"detected_intent": "documents_forming_balance",
"selected_recipe": "address_documents_forming_balance_v1",
"mcp_call_status": "empty",
"rows_fetched": 20,
"raw_rows_received": 20,
"rows_materialized": 0,
"rows_after_recipe_filter": 0,
"rows_matched": 0,
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
"limited_reason_category": "empty_match",
"response_type": "LIMITED_WITH_REASON"
},
{
"case_id": "Q3",
"question": "show documents by counterparty Alfa from 2020-07-01 to 2020-07-31",
"detected_intent": "list_documents_by_counterparty",
"selected_recipe": "address_documents_by_counterparty_v1",
"mcp_call_status": "empty",
"rows_fetched": 20,
"raw_rows_received": 20,
"rows_materialized": 0,
"rows_after_recipe_filter": 0,
"rows_matched": 0,
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
"limited_reason_category": "empty_match",
"response_type": "LIMITED_WITH_REASON"
},
{
"case_id": "Q4",
"question": "show bank operations by counterparty Alfa from 2020-07-01 to 2020-07-31",
"detected_intent": "bank_operations_by_counterparty",
"selected_recipe": "address_bank_operations_by_counterparty_v1",
"mcp_call_status": "empty",
"rows_fetched": 20,
"raw_rows_received": 20,
"rows_materialized": 0,
"rows_after_recipe_filter": 0,
"rows_matched": 0,
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
"limited_reason_category": "empty_match",
"response_type": "LIMITED_WITH_REASON"
},
{
"case_id": "Q5",
"question": "show account balance 60 today",
"detected_intent": "account_balance_snapshot",
"selected_recipe": "address_movements_account_snapshot_v1",
"mcp_call_status": "empty",
"rows_fetched": 20,
"raw_rows_received": 20,
"rows_materialized": 0,
"rows_after_recipe_filter": 0,
"rows_matched": 0,
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
"limited_reason_category": "empty_match",
"response_type": "LIMITED_WITH_REASON"
},
{
"case_id": "Q6",
"question": "show open items by contract",
"detected_intent": "open_items_by_counterparty_or_contract",
"selected_recipe": null,
"mcp_call_status": "skipped",
"rows_fetched": 0,
"raw_rows_received": 0,
"rows_materialized": 0,
"rows_after_recipe_filter": 0,
"rows_matched": 0,
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
"limited_reason_category": "missing_anchor",
"response_type": "LIMITED_WITH_REASON"
},
{
"case_id": "Q7",
"question": "show documents by contract 15/24",
"detected_intent": "unknown",
"selected_recipe": null,
"mcp_call_status": "skipped",
"rows_fetched": 0,
"raw_rows_received": 0,
"rows_materialized": 0,
"rows_after_recipe_filter": 0,
"rows_matched": 0,
"runtime_readiness": "DEEP_ONLY",
"limited_reason_category": "unsupported",
"response_type": "LIMITED_WITH_REASON"
},
{
"case_id": "Q8",
"question": "who owes us and who we owe today",
"detected_intent": "list_receivables_counterparties",
"selected_recipe": "address_movements_receivables_v1",
"mcp_call_status": "empty",
"rows_fetched": 20,
"raw_rows_received": 20,
"rows_materialized": 0,
"rows_after_recipe_filter": 0,
"rows_matched": 0,
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
"limited_reason_category": "empty_match",
"response_type": "LIMITED_WITH_REASON"
}
]
@@ -0,0 +1,44 @@
{
"run_id": "2026-03-29_Address_Query_Runtime_V1_M2_3_DocumentsFormingBalance_DataAwareAcceptance",
"date": "2026-03-29",
"stage": "address_query_runtime_v1",
"scope": "m2_3_documents_forming_balance_plus_data_aware_acceptance_sync",
"build_status": "PASSED",
"tests_status": "PASSED",
"dry_run_status": "PASSED_WITH_LIMITED_RESULTS",
"implemented": {
"intent_documents_forming_balance": true,
"recipe_documents_forming_balance_v1": true,
"required_filters_account_as_of_for_balance_intents": true,
"as_of_defaulting_for_balance_intents": true,
"resolver_debug_block": true,
"row_stage_debug_block": true,
"docs_sync_data_aware_policy": true
},
"dry_run_metrics": {
"questions_total": 8,
"address_mode_hit_rate": 1.0,
"query_shape_detected_rate": 1.0,
"intent_alignment_rate": 1.0,
"supported_recipe_selection_rate": 0.75,
"factual_positive_rate": 0.0,
"limited_mode_rate": 1.0,
"false_factual_rate": 0.0,
"anchor_debug_coverage_rate": 1.0,
"row_stage_debug_coverage_rate": 1.0
},
"limited_reason_distribution": {
"empty_match": 6,
"missing_anchor": 1,
"unsupported": 1,
"recipe_visibility_gap": 0,
"execution_error": 0
},
"data_aware_acceptance_status": {
"suite_defined": true,
"exploratory_live_pass_completed": false,
"known_positive_non_empty_rate": 0.0,
"status": "prepared_for_next_live_iteration"
},
"next_priority": "Run exploratory live pass and curate non-empty data-aware positive acceptance cases"
}
@@ -0,0 +1,36 @@
# Smoke Checks
Дата: 2026-03-29
## Build
- `npm.cmd run build` -> PASS
## Tests
- `npx.cmd vitest run tests/addressQueryRuntimeM23.test.ts` -> PASS (10/10)
## Dry-run (assistant window equivalent)
Источник: `assistant_window_dry_run_results.json`
- total questions: 8
- `detected_mode=address_query`: 8/8
- `query_shape` detected: 8/8
- expected intent alignment: 8/8
- `selected_recipe` present: 6/8
- `response_type=LIMITED_WITH_REASON`: 8/8
- `false_factual_rate`: 0
- `anchor_debug_coverage_rate`: 1.0
- `row_stage_debug_coverage_rate`: 1.0
### Limited taxonomy distribution
- `empty_match`: 6
- `missing_anchor`: 1
- `unsupported`: 1
- `recipe_visibility_gap`: 0
- `execution_error`: 0
### Operational note
`documents_forming_balance` routing is now implemented and stable by intent/recipe.
The next hard gate remains data-aware positive live pass (non-empty factual evidence).
@@ -0,0 +1,51 @@
# Address Query Runtime V1 — M2+ (Open Contracts / Open Items)
Дата: 2026-03-29
Статус: IMPLEMENTED_WITH_LIMITED_MODE
## Что расширено
1. Расширены P0 intent/recipe маршруты:
- `list_open_contracts`
- `open_items_by_counterparty_or_contract`
2. Расширен recipe-catalog:
- единый movement-query с period filters (`as_of_date`, `period_from`, `period_to`)
- account scopes для family-веток:
- receivables: `62/76`
- payables: `60/76`
- open contracts/open items: `60/62/76`
3. Усилен intent/filter слой:
- intent resolver переписан на token-based (более стабильно для коротких формулировок);
- filter extractor поддерживает `by contract` / `by counterparty` и русские варианты.
4. Усилен answer contract:
- для `open_items` обязателен anchor (`counterparty` или `contract`), иначе controlled limited mode;
- для `open_contracts` при отсутствии явных договорных аналитик в live-строках возвращается честный limited mode;
- false factual не генерируется.
## Что подтверждено smoke-проверкой
- Address lane срабатывает через `AssistantService` ранней веткой (без normalizer вызова).
- Новые intents распознаются и маршрутизируются в recipe path.
- При отсутствии релевантных live-строк система остается в `LIMITED_WITH_REASON` с конкретной причиной.
## Параллельно добавлено для следующего этапа
- Набор вопросов для dry-run через окно ассистента:
- `docs/ADDRESS/address_query/ui_dry_run_question_set_v1.md`
- Чек-лист проверки:
- `docs/ADDRESS/address_query/ui_dry_run_checklist_v1.md`
- Результаты dry-run набора (5 вопросов):
- `assistant_window_dry_run_results.json`
## Ограничения текущего шага
- MCP текущего рецепта не возвращает явные договорные аналитики в достаточном объеме для устойчивого `FACTUAL_LIST` по open contracts.
- Поэтому `list_open_contracts` и часть `open_items` работают в honest-limited режиме, что соответствует safety policy.
## Следующий шаг
- Добавить специализированные live recipes на уровне документов/регистров (контрагент/договор) вместо только movement-среза,
чтобы перевести `open_contracts` и `open_items` из `LIMITED_WITH_REASON` в стабильный factual mode на positive-cases.
@@ -0,0 +1,57 @@
[
{
"query": "кто должен нам на сегодня",
"expected_intent": "list_receivables_counterparties",
"detected_mode": "address_query",
"detected_intent": "list_receivables_counterparties",
"selected_recipe": "address_movements_receivables_v1",
"mcp_call_status": "empty",
"rows_fetched": 20,
"rows_matched": 0,
"response_type": "LIMITED_WITH_REASON"
},
{
"query": "кому должны мы на сегодня",
"expected_intent": "list_payables_counterparties",
"detected_mode": "address_query",
"detected_intent": "list_payables_counterparties",
"selected_recipe": "address_movements_payables_v1",
"mcp_call_status": "empty",
"rows_fetched": 20,
"rows_matched": 0,
"response_type": "LIMITED_WITH_REASON"
},
{
"query": "покажи остаток по счету 60 на сегодня",
"expected_intent": "account_balance_snapshot",
"detected_mode": "address_query",
"detected_intent": "account_balance_snapshot",
"selected_recipe": "address_movements_account_snapshot_v1",
"mcp_call_status": "empty",
"rows_fetched": 20,
"rows_matched": 0,
"response_type": "LIMITED_WITH_REASON"
},
{
"query": "какие договоры не закрыты",
"expected_intent": "list_open_contracts",
"detected_mode": "address_query",
"detected_intent": "list_open_contracts",
"selected_recipe": "address_open_contracts_candidates_v1",
"mcp_call_status": "empty",
"rows_fetched": 20,
"rows_matched": 0,
"response_type": "LIMITED_WITH_REASON"
},
{
"query": "покажи открытые позиции по договору 01/19-ПТ",
"expected_intent": "open_items_by_counterparty_or_contract",
"detected_mode": "address_query",
"detected_intent": "open_items_by_counterparty_or_contract",
"selected_recipe": "address_open_items_by_party_or_contract_v1",
"mcp_call_status": "empty",
"rows_fetched": 20,
"rows_matched": 0,
"response_type": "LIMITED_WITH_REASON"
}
]
@@ -0,0 +1,4 @@
llm_normalizer/backend/src/services/addressIntentResolver.ts
llm_normalizer/backend/src/services/addressRecipeCatalog.ts
llm_normalizer/backend/src/services/addressQueryService.ts
llm_normalizer/backend/src/services/addressFilterExtractor.ts
@@ -0,0 +1,28 @@
{
"run_id": "2026-03-29_Address_Query_Runtime_V1_M2_Plus_OpenContracts_OpenItems",
"date": "2026-03-29",
"stage": "address_query_runtime_v1",
"scope": "m2_plus_intent_recipe_expansion",
"build_status": "PASSED",
"smoke_status": "PASSED",
"ui_dry_run_status": "PASSED_INTENT_ROUTING",
"implemented": {
"intent_open_contracts": true,
"intent_open_items_by_counterparty_or_contract": true,
"period_filterable_query_recipe": true,
"token_based_intent_resolution": true
},
"current_answer_mode": {
"receivables_payables_account_snapshot": "operational (may be limited on empty matches)",
"open_contracts": "honest_limited_when_no_contract_anchors",
"open_items": "honest_limited_without_anchor_or_no_rows"
},
"ui_dry_run_5q": {
"mode_routing_pass_rate": 1.0,
"intent_alignment_pass_rate": 1.0,
"selected_recipe_non_empty_rate": 1.0,
"factual_positive_rate": 0.0,
"limited_mode_rate": 1.0
},
"false_factual_rate": 0
}
@@ -0,0 +1,49 @@
# Smoke Checks
Дата: 2026-03-29
## Build
- `npm run build` -> PASS
## Address service checks (dist)
1. `who owes us today`
- detected_intent: `list_receivables_counterparties`
- selected_recipe: `address_movements_receivables_v1`
- result: `LIMITED_WITH_REASON` (mcp_call_status=`empty`)
2. `who we owe today`
- detected_intent: `list_payables_counterparties`
- selected_recipe: `address_movements_payables_v1`
- result: `LIMITED_WITH_REASON` (mcp_call_status=`empty`)
3. `show account balance 60`
- detected_intent: `account_balance_snapshot`
- selected_recipe: `address_movements_account_snapshot_v1`
- result: `LIMITED_WITH_REASON` (mcp_call_status=`empty`)
4. `list open contracts`
- detected_intent: `list_open_contracts`
- selected_recipe: `address_open_contracts_candidates_v1`
- result: `LIMITED_WITH_REASON` (`no_contract_anchors_in_live_rows`)
5. `open items by contract 01/19-PT`
- detected_intent: `open_items_by_counterparty_or_contract`
- selected_recipe: `address_open_items_by_party_or_contract_v1`
- result: `LIMITED_WITH_REASON` (mcp_call_status=`empty`)
## AssistantService early-lane checks
`AssistantService.handleMessage(...)` с normalizer stub:
- для address запросов идет в `assistant_message_address` event;
- deep normalizer path не вызывается.
## UI dry-run через окно ассистента (RU set)
- Прогнан набор из 5 русскоязычных вопросов из `docs/ADDRESS/address_query/ui_dry_run_question_set_v1.md`.
- Результаты сохранены в `assistant_window_dry_run_results.json`.
- Все 5 кейсов:
- `detected_mode=address_query`;
- `detected_intent` совпал с `expected_intent`;
- `selected_recipe` не пустой.
- Текущий answer mode: `LIMITED_WITH_REASON` по причине `mcp_call_status=empty` (matched rows = 0).

Some files were not shown because too many files have changed in this diff Show More