АДРЕСНЫЙ РЕЖИМ - M2.3b тюнинг account-scope и диагностика стадий адресного рантайма
This commit is contained in:
Binary file not shown.
+123
@@ -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.
|
||||
|
||||
+125
@@ -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**
|
||||
|
||||
То есть новый функционал можно внедрить итеративно, не вынося проект в тяжелый рефактор.
|
||||
|
||||
+148
@@ -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/`.
|
||||
+21448
File diff suppressed because it is too large
Load Diff
+5739
File diff suppressed because it is too large
Load Diff
+10430
File diff suppressed because it is too large
Load Diff
+4474
File diff suppressed because it is too large
Load Diff
+5101
File diff suppressed because it is too large
Load Diff
+6466
File diff suppressed because it is too large
Load Diff
+7849
File diff suppressed because it is too large
Load Diff
+34
@@ -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"
|
||||
]
|
||||
}
|
||||
@@ -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`.
|
||||
+20
@@ -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).
|
||||
+11
@@ -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
|
||||
}
|
||||
}
|
||||
+43
@@ -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.
|
||||
+11
@@ -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
|
||||
+18
@@ -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"
|
||||
]
|
||||
}
|
||||
+22
@@ -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.
|
||||
+29
@@ -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 сценариев.
|
||||
+138
@@ -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Что нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
|
||||
}
|
||||
]
|
||||
}
|
||||
+26
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
+14
@@ -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
|
||||
+34
@@ -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"
|
||||
}
|
||||
+35
@@ -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
|
||||
+29
@@ -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.
|
||||
+162
@@ -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Что нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
|
||||
}
|
||||
]
|
||||
}
|
||||
+34
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
+15
@@ -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
|
||||
+35
@@ -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"
|
||||
}
|
||||
+34
@@ -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).
|
||||
+35
@@ -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.
|
||||
+242
@@ -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."
|
||||
}
|
||||
]
|
||||
}
|
||||
+26
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
+28
@@ -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
|
||||
+44
@@ -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.
|
||||
|
||||
+47
@@ -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."
|
||||
}
|
||||
+47
@@ -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."
|
||||
}
|
||||
+47
@@ -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."
|
||||
}
|
||||
+48
@@ -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."
|
||||
}
|
||||
+48
@@ -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."
|
||||
}
|
||||
+72
@@ -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"
|
||||
}
|
||||
]
|
||||
+39
@@ -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"
|
||||
}
|
||||
+36
@@ -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.
|
||||
+7
@@ -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 |
|
||||
+43
@@ -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.
|
||||
+22
@@ -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.
|
||||
+252
@@ -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Что нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
|
||||
}
|
||||
]
|
||||
}
|
||||
+27
@@ -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."
|
||||
}
|
||||
+26
@@ -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
|
||||
+37
@@ -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Что нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.
|
||||
|
||||
+60
@@ -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"
|
||||
]
|
||||
}
|
||||
}
|
||||
+60
@@ -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"
|
||||
]
|
||||
}
|
||||
}
|
||||
+60
@@ -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"
|
||||
]
|
||||
}
|
||||
}
|
||||
+61
@@ -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"
|
||||
]
|
||||
}
|
||||
}
|
||||
+61
@@ -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"
|
||||
]
|
||||
}
|
||||
}
|
||||
+74
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
+47
@@ -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"
|
||||
}
|
||||
+5
@@ -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)
|
||||
+9
@@ -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 |
|
||||
+19
@@ -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.
|
||||
+30
@@ -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.
|
||||
+261
@@ -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Что нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
|
||||
}
|
||||
]
|
||||
}
|
||||
+30
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
+30
@@ -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
|
||||
+68
@@ -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-выборке нет строк.
|
||||
Что нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.
|
||||
|
||||
+19
@@ -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.
|
||||
+34
@@ -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Что нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
|
||||
}
|
||||
+34
@@ -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Что нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
|
||||
}
|
||||
+35
@@ -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Что нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
|
||||
}
|
||||
+35
@@ -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Что нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
|
||||
}
|
||||
+34
@@ -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Что нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
|
||||
}
|
||||
+32
@@ -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Что нужно уточнить: укажите контрагента или номер/название договора."
|
||||
}
|
||||
+33
@@ -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 РїРѕ счету/контрагенту/РґРѕРіРѕРІРѕСЂСѓ."
|
||||
}
|
||||
+33
@@ -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Что нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
|
||||
}
|
||||
+122
@@ -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"
|
||||
}
|
||||
]
|
||||
+44
@@ -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"
|
||||
}
|
||||
+36
@@ -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).
|
||||
+51
@@ -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.
|
||||
+57
@@ -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"
|
||||
}
|
||||
]
|
||||
+4
@@ -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
|
||||
+28
@@ -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
|
||||
}
|
||||
+49
@@ -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
Reference in New Issue
Block a user