АДРЕСНЫЙ РЕЖИМ - M2.3b тюнинг account-scope и диагностика стадий адресного рантайма
This commit is contained in:
parent
c82ebd70b7
commit
2bf16de4ea
Binary file not shown.
|
|
@ -0,0 +1,123 @@
|
|||
# Этап 4 — Архитектурный аудит под MCP-first адресные запросы
|
||||
|
||||
Дата: 2026-03-29
|
||||
Контур: `X:\1C\NDC_1C`
|
||||
|
||||
## 1) Цель аудита
|
||||
|
||||
Понять, в каком состоянии проект перед переходом на новый класс задач:
|
||||
|
||||
- "покажи незакрытые договоры";
|
||||
- "найди, кому мы должны";
|
||||
- "найди, кто должен нам";
|
||||
- "покажи остаток по счету".
|
||||
|
||||
И зафиксировать, что нужно поменять в рантайме, чтобы это работало как **LLM-интерфейс к живой 1С через MCP**.
|
||||
|
||||
## 2) Подтвержденные факты (as-is)
|
||||
|
||||
### 2.1 Assistant runtime сейчас snapshot-first
|
||||
|
||||
Текущий `AssistantDataLayer` поднимает данные из фиксированного набора JSON-файлов из `docs/ARCH/2020экспорт`, а не из полного корпуса:
|
||||
|
||||
- `llm_normalizer/backend/src/services/assistantDataLayer.ts:3379-3386`
|
||||
- `llm_normalizer/backend/src/services/assistantDataLayer.ts:3401`
|
||||
|
||||
Размер подключенного snapshot-пакета:
|
||||
|
||||
- `docs/ARCH/2020экспорт` = **1.82 MB** (10 файлов).
|
||||
|
||||
### 2.2 Полный monthly-корпус есть, но в assistant runtime не используется
|
||||
|
||||
Объем полного корпуса:
|
||||
|
||||
- `docs/ARCH/2020_monthly_company_asof_full/_tmp_ndjson` = **6732 MB** (12 файлов),
|
||||
- средний файл ≈ **561 MB**.
|
||||
|
||||
Итог: по текущему коду assistant работает по сильно урезанному слою данных относительно доступного объема.
|
||||
|
||||
### 2.3 MCP/live есть, но как overlay и только на части маршрутов
|
||||
|
||||
Live-путь в assistant включается только если:
|
||||
|
||||
- `FEATURE_ASSISTANT_MCP_RUNTIME_V1=true`
|
||||
(`llm_normalizer/backend/src/config.ts:90-100`)
|
||||
|
||||
и только для маршрутов:
|
||||
|
||||
- `hybrid_store_plus_live`
|
||||
- `live_mcp_drilldown`
|
||||
(`llm_normalizer/backend/src/services/assistantDataLayer.ts:2863`)
|
||||
|
||||
Для `store_canonical` live не используется.
|
||||
|
||||
### 2.4 Claim-bound live план в `assistantDataLayer` ориентирован на 3 семейства
|
||||
|
||||
`buildLiveMcpCallPlan(...)` имеет claim-ветки:
|
||||
|
||||
- `prove_fixed_asset_amortization_coverage` (`assistantDataLayer.ts:348`)
|
||||
- `prove_vat_chain_completeness` (`assistantDataLayer.ts:396`)
|
||||
- `prove_rbp_tail_state` (`assistantDataLayer.ts:460`)
|
||||
|
||||
Остальное уходит в `claim_type: null` + generic live probe (`assistantDataLayer.ts:444`).
|
||||
|
||||
Это не покрывает "простые адресные запросы" как отдельный runtime-класс.
|
||||
|
||||
### 2.5 Route-дисциплина сейчас заточена под Stage 4 глубинные цепочки
|
||||
|
||||
В `routeHintAdapter` есть жесткие query-class rules:
|
||||
|
||||
- `exact_object_trace -> live_mcp_drilldown` (`routeHintAdapter.ts:86-87`)
|
||||
- `canonical_fact_lookup -> store_canonical` (`routeHintAdapter.ts:149-150`)
|
||||
|
||||
В результате простые lookup-вопросы по умолчанию тяготеют к `store_canonical` (snapshot), а не к MCP-first.
|
||||
|
||||
### 2.6 Postgres в assistant runtime фактически не активен
|
||||
|
||||
По проекту:
|
||||
|
||||
- в `.env.example` дефолт `CANONICAL_DB_URL=sqlite:///...`
|
||||
(`.env.example:18`, `README.md:89`)
|
||||
- `canonical_layer/store.py` поддерживает и SQLite, и Postgres через SQLAlchemy
|
||||
(`canonical_layer/store.py:55`, `canonical_layer/store.py:59`)
|
||||
|
||||
На момент аудита:
|
||||
|
||||
- локально есть `data/canonical_store.db` (SQLite);
|
||||
- активного процесса `postgres` не обнаружено.
|
||||
|
||||
Важно: текущий `llm_normalizer/backend` **не использует** `canonical_layer` store напрямую в assistant execution path.
|
||||
|
||||
## 3) Главный технический вывод
|
||||
|
||||
Зафиксирован статус:
|
||||
|
||||
**SNAPSHOT_PRIMARY_WITH_OPTIONAL_LIVE_OVERLAY_CONFIRMED**
|
||||
|
||||
То есть:
|
||||
|
||||
- live-инфраструктура есть;
|
||||
- но архитектурно основной путь ассистента по-прежнему snapshot-first;
|
||||
- адресные "быстрые" бизнес-запросы как отдельный MCP-first runtime-класс пока не оформлены.
|
||||
|
||||
## 4) Что точно не бьется с новой задачей
|
||||
|
||||
1. `store_canonical` = snapshot path, а нам нужен live-first для адресных запросов.
|
||||
2. Нет отдельного address-intent и address-query planner.
|
||||
3. Нет acceptance-метрик для "быстрого доступа к сущностям" (не reasoning-heavy).
|
||||
4. Нет отдельного answer contract под tabular/list-ответы для live lookup.
|
||||
|
||||
## 5) Рамка изменения (без слома Stage 4 deep path)
|
||||
|
||||
Меняем не всю архитектуру, а добавляем новый lane:
|
||||
|
||||
- `address_query_runtime` как отдельный класс в существующем assistant pipeline;
|
||||
- приоритет источника для этого класса: `live_mcp` (mandatory), snapshot только как явно маркированный fallback;
|
||||
- Stage 4 deep chain path оставляем как есть.
|
||||
|
||||
## 6) Финальный verdict аудита
|
||||
|
||||
**MCP_INFRA_EXISTS_BUT_ADDRESS_RUNTIME_NOT_IMPLEMENTED**
|
||||
|
||||
Новый функционал реализуем через отдельный MCP-first address lane, без тотального рефакторинга текущего Stage 4 chain runtime.
|
||||
|
||||
|
|
@ -0,0 +1,125 @@
|
|||
# Target Architecture — MCP-first Address Queries (Stage 4)
|
||||
|
||||
Дата: 2026-03-29
|
||||
|
||||
## 1) Что вводим
|
||||
|
||||
Добавляем в текущий assistant runtime новый режим:
|
||||
|
||||
- `question_mode = address_query`
|
||||
|
||||
Это не замена deep-chain логики Stage 4, а параллельный "быстрый" lane для адресных вопросов.
|
||||
|
||||
## 2) Типы вопросов для первого релиза (Address V1)
|
||||
|
||||
Минимальный набор:
|
||||
|
||||
1. `list_open_contracts`
|
||||
2. `list_payables_counterparties` (кому мы должны)
|
||||
3. `list_receivables_counterparties` (кто должен нам)
|
||||
4. `account_balance_snapshot` (остатки по счету / счетам)
|
||||
5. `open_items_by_counterparty_or_contract` (незакрытые хвосты по контрагенту/договору)
|
||||
|
||||
## 3) Принцип источников данных
|
||||
|
||||
Для `address_query`:
|
||||
|
||||
- primary source: `MCP/live` (обязательно);
|
||||
- snapshot-source: только fallback с явной маркировкой;
|
||||
- запрещено молча подменять live на snapshot.
|
||||
|
||||
Правило ответа:
|
||||
|
||||
- если live недоступен: честный `DATA_UNAVAILABLE_LIVE`;
|
||||
- если live доступен, но пусто: честный `NO_MATCH_FOR_FILTERS`;
|
||||
- если live дал строки: `FACTUAL_LIST`/`FACTUAL_SUMMARY`.
|
||||
|
||||
## 4) Pipeline (встраивание в текущую архитектуру)
|
||||
|
||||
Новая ветка поверх текущего пайплайна:
|
||||
|
||||
1. `Normalizer` -> определяет `question_mode=address_query` и `address_intent`.
|
||||
2. `AddressIntentResolver` -> фиксирует intent + обязательные фильтры (period/account/counterparty/contract).
|
||||
3. `AddressQueryPlanner` -> выбирает MCP recipe (query template + params).
|
||||
4. `McpExecutor` -> исполняет 1..N live-вызовов.
|
||||
5. `AddressResultMaterializer` -> нормализует строки в табличный вид + totals.
|
||||
6. `AddressAnswerComposer` -> короткий ответ + список + ограничения.
|
||||
|
||||
## 5) MCP query recipes (контракт)
|
||||
|
||||
Для каждого intent хранится recipe:
|
||||
|
||||
- `recipe_id`
|
||||
- `purpose`
|
||||
- `query_template`
|
||||
- `required_params`
|
||||
- `optional_params`
|
||||
- `output_schema`
|
||||
- `sort/default_limit`
|
||||
|
||||
Примеры базовых рецептов:
|
||||
|
||||
- `address.open_contracts.by_period`
|
||||
- `address.payables.counterparty_totals`
|
||||
- `address.receivables.counterparty_totals`
|
||||
- `address.balance.by_account`
|
||||
- `address.open_items.by_counterparty_contract`
|
||||
|
||||
## 6) Контракт ответа (Address mode)
|
||||
|
||||
Форматы:
|
||||
|
||||
1. `FACTUAL_LIST`
|
||||
Короткий вывод + список строк (N top) + totals.
|
||||
|
||||
2. `FACTUAL_SUMMARY`
|
||||
Если строк много: агрегат + top контрагенты + рекомендация уточнить фильтры.
|
||||
|
||||
3. `LIMITED_WITH_REASON`
|
||||
Если live недоступен/ошибка/нехватка фильтров.
|
||||
|
||||
Обязательные поля debug:
|
||||
|
||||
- `question_mode`
|
||||
- `address_intent`
|
||||
- `recipe_id`
|
||||
- `required_filters`
|
||||
- `resolved_filters`
|
||||
- `mcp_calls[]`
|
||||
- `rows_fetched`
|
||||
- `rows_matched`
|
||||
- `result_mode`
|
||||
|
||||
## 7) Совместимость с текущим Stage 4
|
||||
|
||||
Не ломаем текущие chain-ветки:
|
||||
|
||||
- `settlements_60_62`, `vat_document_register_book`, `month_close_costs_20_44`, `fixed_asset_amortization` остаются.
|
||||
- `address_query` включается только при явном address-intent.
|
||||
|
||||
Приоритет:
|
||||
|
||||
- если вопрос "why/how/prove/chain" -> текущий deep path;
|
||||
- если вопрос "show/list/find/open/balance" -> address path.
|
||||
|
||||
## 8) Границы (что не делаем)
|
||||
|
||||
1. Не вводим новый proof engine.
|
||||
2. Не расширяем домены beyond P0/P1 для V1.
|
||||
3. Не делаем большой redesign routing.
|
||||
4. Не зависим от Postgres как обязательного prereq для Address V1.
|
||||
|
||||
## 9) Техническое решение по Postgres
|
||||
|
||||
Коротко:
|
||||
|
||||
- Postgres оставляем как optional storage path для canonical layer;
|
||||
- Address V1 делаем MCP-first без блокировки на миграцию в Postgres;
|
||||
- отдельный migration pack можно делать потом, когда будет нужна materialized аналитика/кеши.
|
||||
|
||||
## 10) Архитектурный verdict
|
||||
|
||||
**ADDRESS_LANE_MCP_FIRST_IS_COMPATIBLE_WITH_CURRENT_STAGE4_RUNTIME**
|
||||
|
||||
То есть новый функционал можно внедрить итеративно, не вынося проект в тяжелый рефактор.
|
||||
|
||||
|
|
@ -0,0 +1,148 @@
|
|||
# Execution Plan — Address Runtime (Wave A..D)
|
||||
|
||||
Дата: 2026-03-29
|
||||
Фокус: быстрый LLM-интерфейс к 1С сущностям через MCP/live.
|
||||
|
||||
## Общий подход
|
||||
|
||||
Делаем отдельный пакет, без большого неразмеченного рефакторинга:
|
||||
|
||||
- Wave A: baseline + contracts
|
||||
- Wave B: runtime lane + planner
|
||||
- Wave C: recipes + answer contract
|
||||
- Wave D: live rerun + acceptance
|
||||
|
||||
## Wave A — Baseline & Contracts
|
||||
|
||||
### Цель
|
||||
|
||||
Зафиксировать source-of-truth и контракты перед кодом.
|
||||
|
||||
### Что делаем
|
||||
|
||||
1. Вводим `question_mode=address_query`.
|
||||
2. Фиксируем V1 intents (5 штук).
|
||||
3. Фиксируем `address_query_recipe` контракт.
|
||||
4. Фиксируем обязательные debug поля и run-артефакты.
|
||||
|
||||
### Артефакты
|
||||
|
||||
- `docs/ADDRESS/runs/<run_id>/README.md`
|
||||
- `run_summary.json`
|
||||
- `address_intent_contract.md`
|
||||
- `address_recipe_contract.md`
|
||||
|
||||
## Wave B — Runtime Lane
|
||||
|
||||
### Цель
|
||||
|
||||
Встроить новый lane в текущий assistant pipeline.
|
||||
|
||||
### Что делаем
|
||||
|
||||
1. Добавляем `AddressIntentResolver`.
|
||||
2. Добавляем `AddressQueryPlanner`.
|
||||
3. Добавляем source policy:
|
||||
- `address_query => live_required=true`
|
||||
- fallback на snapshot только явно и с limitation.
|
||||
4. Разводим маршруты:
|
||||
- deep reasoning path не трогаем;
|
||||
- address path идет отдельной веткой.
|
||||
|
||||
### Acceptance
|
||||
|
||||
- Address intent корректно выделяется на контрольном наборе.
|
||||
- Для address-intent не происходит тихого ухода в snapshot-first.
|
||||
|
||||
## Wave C — Query Recipes & Answer Contract
|
||||
|
||||
### Цель
|
||||
|
||||
Сделать рабочие адресные ответы по MCP.
|
||||
|
||||
### Что делаем
|
||||
|
||||
1. Реализуем минимум 5 MCP recipes (по intent V1).
|
||||
2. Делаем materializer:
|
||||
- rows -> normalized list,
|
||||
- totals,
|
||||
- stable output schema.
|
||||
3. Добавляем `AddressAnswerComposer`:
|
||||
- `FACTUAL_LIST`,
|
||||
- `FACTUAL_SUMMARY`,
|
||||
- `LIMITED_WITH_REASON`.
|
||||
|
||||
### Acceptance
|
||||
|
||||
- На expected-positive вопросах есть непустой factual output.
|
||||
- Ошибки live не маскируются, false factual = 0.
|
||||
|
||||
## Wave D — Live Replay & Acceptance
|
||||
|
||||
### Цель
|
||||
|
||||
Проверить live-сценарии на реальных адресных вопросах.
|
||||
|
||||
### Контрольный набор (минимум)
|
||||
|
||||
1. Покажи незакрытые договоры.
|
||||
2. Кому мы должны денег.
|
||||
3. Кто должен нам денег.
|
||||
4. Остатки по счету 60 (или 62) на текущую дату.
|
||||
5. Незакрытые позиции по конкретному контрагенту.
|
||||
|
||||
### Метрики
|
||||
|
||||
1. `address_intent_resolution_rate >= 0.95`
|
||||
2. `address_live_call_success_rate >= 0.95`
|
||||
3. `address_non_empty_result_rate > 0` на positive-кейсах
|
||||
4. `address_false_factual_rate = 0`
|
||||
5. `address_snapshot_fallback_rate` (должна быть низкой и явной)
|
||||
|
||||
### Обязательные артефакты
|
||||
|
||||
- `chat_export_address_live.md`
|
||||
- `debug_payloads/`
|
||||
- `live_call_inventory.json`
|
||||
- `address_result_matrix.md`
|
||||
- `address_failure_breakdown.json`
|
||||
|
||||
## Run-структура (обязательно)
|
||||
|
||||
Все прогоны только сюда:
|
||||
|
||||
- `docs/ADDRESS/runs/<YYYY-MM-DD>_<PackName>/`
|
||||
|
||||
## Риски и анти-риски
|
||||
|
||||
Риск:
|
||||
|
||||
- смешение deep-chain и address-lane в одном вопросе.
|
||||
|
||||
Контрмера:
|
||||
|
||||
- rule-based switch по `question_mode` + explicit fallback в mixed-mode.
|
||||
|
||||
Риск:
|
||||
|
||||
- деградация в silent snapshot.
|
||||
|
||||
Контрмера:
|
||||
|
||||
- mandatory debug flag `live_required_for_mode=true`,
|
||||
- limitation если live недоступен.
|
||||
|
||||
## Финальный критерий пакета
|
||||
|
||||
Пакет считается принятым, когда:
|
||||
|
||||
1. Address intent стабильно маршрутизируется в MCP-first lane.
|
||||
2. На части live-кейсов система дает быстрый factual ответ.
|
||||
3. Нет ложной "доказанности" и нет молчаливой подмены источника.
|
||||
|
||||
Verdict:
|
||||
|
||||
- `ADDRESS_RUNTIME_V1_READY`
|
||||
- или `ADDRESS_RUNTIME_V1_READY_WITH_LIMITATIONS`
|
||||
- или `ADDRESS_RUNTIME_V1_NOT_READY`
|
||||
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
# ADDRESS Track (MCP-first)
|
||||
|
||||
Этот раздел фиксирует разворот Stage 4 в сторону "адресных" пользовательских запросов:
|
||||
|
||||
- быстро найти сущности;
|
||||
- показать список и статус (есть/нет, закрыто/не закрыто);
|
||||
- получить остатки/долги/контрагентов по текущему состоянию базы.
|
||||
|
||||
Ключевой принцип трека: **MCP/live-first**, а не snapshot-first.
|
||||
|
||||
## Документы
|
||||
|
||||
1. `1 - architecture_audit_mcp_first_address_runtime_2026-03-29.md`
|
||||
Технический аудит текущего состояния и ограничений.
|
||||
|
||||
2. `2 - target_architecture_mcp_first_address_queries_stage4_2026-03-29.md`
|
||||
Целевая архитектура под адресные запросы.
|
||||
|
||||
3. `3 - execution_plan_address_runtime_waveA_waveD_2026-03-29.md`
|
||||
Пошаговый план реализации без большого рефакторинга.
|
||||
|
||||
## Раны и артефакты
|
||||
|
||||
Все новые прогоны и доказательные артефакты складываются в:
|
||||
|
||||
- `docs/ADDRESS/runs/`
|
||||
|
||||
Базовый аудитный run:
|
||||
|
||||
- `docs/ADDRESS/runs/2026-03-29_Address_Runtime_Pivot_Baseline/`
|
||||
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
# Run README
|
||||
|
||||
Run ID: `2026-03-29_Address_Query_Entity_Inventory_2020`
|
||||
Date: 2026-03-29
|
||||
|
||||
## Goal
|
||||
|
||||
Провести первичную системную инвентаризацию сущностей 1С по monthly snapshot-корпусу 2020 и подготовить базу для `address_query` runtime проектирования.
|
||||
|
||||
## Input
|
||||
|
||||
- `docs/ARCH/2020_monthly_company_asof_full/_tmp_ndjson`
|
||||
- 12 monthly NDJSON files (2020-01..2020-12)
|
||||
|
||||
## Result
|
||||
|
||||
- processed_rows: `7039648`
|
||||
- parse_errors: `0`
|
||||
- total_entities: `286`
|
||||
- family_count: `10`
|
||||
|
||||
## Artifacts
|
||||
|
||||
- `entity_inventory_full.json`
|
||||
- `entity_inventory_p0_candidates.json`
|
||||
- `entity_inventory_p1_candidates.json`
|
||||
- `entity_inventory_p2_candidates.json`
|
||||
- `entity_inventory_relation_support_sets.json`
|
||||
- `entity_inventory_intent_support_sets.json`
|
||||
- `entity_inventory_readable_summary.json`
|
||||
|
||||
## Notes
|
||||
|
||||
- В части labels исходного экспорта наблюдается cp1251/utf8 mojibake.
|
||||
- Для проектных решений использовались устойчивые структурные признаки: family prefixes, relations, key/filter patterns, row density.
|
||||
- Этот run используется как source input для файлов в `docs/ADDRESS/address_query/`.
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
|
@ -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`.
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
# Known Positive Live Suite Template
|
||||
|
||||
Date: 2026-03-29
|
||||
|
||||
Purpose: run pack template for positive-evidence acceptance.
|
||||
|
||||
## Required artifacts
|
||||
|
||||
- README.md
|
||||
- run_summary.json
|
||||
- known_positive_case_matrix.md
|
||||
- chat_export_known_positive_live.md
|
||||
- debug_payloads/
|
||||
- live_call_inventory_address.json
|
||||
|
||||
## Core rule
|
||||
|
||||
Each case must be pre-anchored (account/counterparty/contract + period), and expected to produce non-empty data.
|
||||
|
||||
If result is limited, reason must be explicit (`missing_anchor`, `recipe_visibility_gap`, etc).
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"run_id": "2026-03-29_Address_Query_Known_Positive_Live_Suite_Template",
|
||||
"suite_type": "positive_evidence",
|
||||
"status": "TEMPLATE",
|
||||
"metrics": {
|
||||
"known_positive_case_count": 0,
|
||||
"known_positive_non_empty_rate": 0,
|
||||
"known_positive_factual_rate": 0,
|
||||
"known_positive_false_factual_rate": 0
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
# Address Query Runtime V1 — M0/M1/M2 Baseline Start
|
||||
|
||||
Дата: 2026-03-29
|
||||
Статус: IMPLEMENTED_BASELINE
|
||||
|
||||
## Что сделано
|
||||
|
||||
- Добавлен отдельный address-query контур в backend (`question_mode` detection на runtime-ветке ассистента).
|
||||
- Добавлены контракты `addressQuery` и debug-поля address lane.
|
||||
- Добавлены сервисы:
|
||||
- classifier
|
||||
- intent resolver
|
||||
- filter extractor
|
||||
- recipe catalog
|
||||
- MCP client
|
||||
- address query orchestrator
|
||||
- В `assistantService` добавлена ранняя развилка:
|
||||
- если вопрос адресный и поддержан -> address lane;
|
||||
- иначе -> без изменений в существующий deep-analysis path.
|
||||
|
||||
## Что покрыто сейчас
|
||||
|
||||
- Базовые P0 intents с recipe:
|
||||
- `list_payables_counterparties`
|
||||
- `list_receivables_counterparties`
|
||||
- `account_balance_snapshot`
|
||||
- Неподдержанные intent'ы в V1 возвращают `LIMITED_WITH_REASON`.
|
||||
- Live-first execution через MCP `/api/execute_query`.
|
||||
|
||||
## Важные ограничения baseline
|
||||
|
||||
- Текущие recipe используют movement snapshot query из `РегистрБухгалтерии.Хозрасчетный`.
|
||||
- Для `list_open_contracts` и `open_items_by_counterparty_or_contract` пока только controlled limited mode.
|
||||
- Factual-ответы пока строятся по движениям и account-scope, без полноценного object-level contract closure.
|
||||
|
||||
## Проверка
|
||||
|
||||
- `npm run build` (backend) — PASSED.
|
||||
|
||||
## Следующий шаг
|
||||
|
||||
- Расширить recipe whitelist под object-level адресные сценарии (contracts/open items/documents by counterparty/contract).
|
||||
- Добавить acceptance live-run pack по 5 P0 вопросам address lane.
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
llm_normalizer/backend/src/types/addressQuery.ts
|
||||
llm_normalizer/backend/src/services/addressQueryClassifier.ts
|
||||
llm_normalizer/backend/src/services/addressIntentResolver.ts
|
||||
llm_normalizer/backend/src/services/addressFilterExtractor.ts
|
||||
llm_normalizer/backend/src/services/addressRecipeCatalog.ts
|
||||
llm_normalizer/backend/src/services/addressMcpClient.ts
|
||||
llm_normalizer/backend/src/services/addressQueryService.ts
|
||||
llm_normalizer/backend/src/services/assistantService.ts
|
||||
llm_normalizer/backend/src/types/assistant.ts
|
||||
llm_normalizer/backend/src/config.ts
|
||||
llm_normalizer/.env.example
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
{
|
||||
"run_id": "2026-03-29_Address_Query_Runtime_V1_M0_M1_M2_Baseline_Start",
|
||||
"date": "2026-03-29",
|
||||
"scope": "address_query_runtime_bootstrap_to_code",
|
||||
"status": "IMPLEMENTED_BASELINE",
|
||||
"build_status": "PASSED",
|
||||
"deep_path_regression_expected": "none (no deep-path contract change)",
|
||||
"implemented": {
|
||||
"address_mode_runtime_branch": true,
|
||||
"intent_filter_recipe_pipeline": true,
|
||||
"mcp_live_query_executor": true,
|
||||
"address_debug_contract": true
|
||||
},
|
||||
"limitations": [
|
||||
"open_contracts and open_items intents still limited",
|
||||
"movement-based recipes only in baseline"
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
# Verification
|
||||
|
||||
Дата: 2026-03-29
|
||||
|
||||
## 1) TypeScript build
|
||||
|
||||
Команда: `npm run build` (backend)
|
||||
Результат: PASS
|
||||
|
||||
## 2) Address lane smoke checks
|
||||
|
||||
Команды проверок (node scripts against `dist/`):
|
||||
|
||||
- `detectAddressQuestionMode('who owes us today')` -> `address_query`
|
||||
- `AddressQueryService.tryHandle('who owes us today')` -> handled=true
|
||||
- `AssistantService.handleMessage('who owes us today')` with normalizer stub -> ранний `assistant_message_address` path (normalizer не требуется)
|
||||
|
||||
Результат: PASS
|
||||
|
||||
## Примечание
|
||||
|
||||
Live MCP вернул `rows_fetched>0`, но `rows_matched=0` для receivables scope в тестовом запросе, поэтому ответ в `LIMITED_WITH_REASON` — это ожидаемое честное поведение на текущем baseline.
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
# Run README — Address Query Runtime V1 M2.1
|
||||
|
||||
Дата: 2026-03-29
|
||||
Run ID: `2026-03-29_Address_Query_Runtime_V1_M2_1_QueryShape_LimitedTaxonomy`
|
||||
|
||||
## Цель инкремента
|
||||
|
||||
Зафиксировать следующий шаг по согласованному плану:
|
||||
|
||||
- добавить `query_shape` в address-runtime debug;
|
||||
- зафиксировать, что `COMPOUND_FACTUAL_QUERY` в M2.1 пока only-detection (без decomposition execution);
|
||||
- развести limited-mode по категориям причин:
|
||||
- `empty_match`
|
||||
- `missing_anchor`
|
||||
- `recipe_visibility_gap`
|
||||
- `execution_error`
|
||||
- `unsupported`
|
||||
- добавить runtime-readiness статус в ответ address lane;
|
||||
- не ломать deep-path и не допускать false-factual.
|
||||
|
||||
## Что проверено
|
||||
|
||||
- `npm run build` — PASS.
|
||||
- `vitest` таргет на новый слой (`tests/addressQueryRuntimeM21.test.ts`) — PASS.
|
||||
- dry-run через `/api/assistant/message` на 7 вопросах — сохранен в `assistant_window_dry_run_results.json`.
|
||||
|
||||
## Основной вывод
|
||||
|
||||
Address lane продолжает стабильно маршрутизироваться и теперь дает структурированную операционную диагностику причины ограничения. Основной блокер остался прежним: недостаточная видимость данных в текущих movement-based recipes для contract/document-heavy сценариев.
|
||||
|
|
@ -0,0 +1,138 @@
|
|||
{
|
||||
"generated_at": "2026-03-29T16:04:06.939Z",
|
||||
"questions": [
|
||||
{
|
||||
"id": "Q1",
|
||||
"question": "who owes us today",
|
||||
"expected_intent": "list_receivables_counterparties",
|
||||
"http_status": 200,
|
||||
"ok": true,
|
||||
"detected_mode": "address_query",
|
||||
"query_shape": "AGGREGATE_LOOKUP",
|
||||
"detected_intent": "list_receivables_counterparties",
|
||||
"selected_recipe": "address_movements_receivables_v1",
|
||||
"mcp_call_status": "empty",
|
||||
"rows_fetched": 20,
|
||||
"rows_matched": 0,
|
||||
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||
"limited_reason_category": "empty_match",
|
||||
"response_type": "LIMITED_WITH_REASON",
|
||||
"reply_type": "partial_coverage",
|
||||
"assistant_reply_preview": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
|
||||
},
|
||||
{
|
||||
"id": "Q2",
|
||||
"question": "who we owe today",
|
||||
"expected_intent": "list_payables_counterparties",
|
||||
"http_status": 200,
|
||||
"ok": true,
|
||||
"detected_mode": "address_query",
|
||||
"query_shape": "AGGREGATE_LOOKUP",
|
||||
"detected_intent": "list_payables_counterparties",
|
||||
"selected_recipe": "address_movements_payables_v1",
|
||||
"mcp_call_status": "empty",
|
||||
"rows_fetched": 20,
|
||||
"rows_matched": 0,
|
||||
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||
"limited_reason_category": "empty_match",
|
||||
"response_type": "LIMITED_WITH_REASON",
|
||||
"reply_type": "partial_coverage",
|
||||
"assistant_reply_preview": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
|
||||
},
|
||||
{
|
||||
"id": "Q3",
|
||||
"question": "show account balance 60 today",
|
||||
"expected_intent": "account_balance_snapshot",
|
||||
"http_status": 200,
|
||||
"ok": true,
|
||||
"detected_mode": "address_query",
|
||||
"query_shape": "AGGREGATE_LOOKUP",
|
||||
"detected_intent": "account_balance_snapshot",
|
||||
"selected_recipe": "address_movements_account_snapshot_v1",
|
||||
"mcp_call_status": "empty",
|
||||
"rows_fetched": 20,
|
||||
"rows_matched": 0,
|
||||
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||
"limited_reason_category": "empty_match",
|
||||
"response_type": "LIMITED_WITH_REASON",
|
||||
"reply_type": "partial_coverage",
|
||||
"assistant_reply_preview": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
|
||||
},
|
||||
{
|
||||
"id": "Q4",
|
||||
"question": "show open items by contract",
|
||||
"expected_intent": "open_items_by_counterparty_or_contract",
|
||||
"http_status": 200,
|
||||
"ok": true,
|
||||
"detected_mode": "address_query",
|
||||
"query_shape": "OBJECT_LOOKUP",
|
||||
"detected_intent": "open_items_by_counterparty_or_contract",
|
||||
"selected_recipe": null,
|
||||
"mcp_call_status": "skipped",
|
||||
"rows_fetched": 0,
|
||||
"rows_matched": 0,
|
||||
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||
"limited_reason_category": "missing_anchor",
|
||||
"response_type": "LIMITED_WITH_REASON",
|
||||
"reply_type": "partial_coverage",
|
||||
"assistant_reply_preview": "Для точного адресного поиска не хватает обязательного якоря.\nПричина: для open_items нужен якорь контрагента или договора.\nЧто нужно уточнить: укажите контрагента или номер/название договора."
|
||||
},
|
||||
{
|
||||
"id": "Q5",
|
||||
"question": "list open contracts as of today",
|
||||
"expected_intent": "list_open_contracts",
|
||||
"http_status": 200,
|
||||
"ok": true,
|
||||
"detected_mode": "address_query",
|
||||
"query_shape": "OBJECT_LOOKUP",
|
||||
"detected_intent": "list_open_contracts",
|
||||
"selected_recipe": "address_open_contracts_candidates_v1",
|
||||
"mcp_call_status": "empty",
|
||||
"rows_fetched": 20,
|
||||
"rows_matched": 0,
|
||||
"runtime_readiness": "REQUIRES_SPECIALIZED_RECIPE",
|
||||
"limited_reason_category": "recipe_visibility_gap",
|
||||
"response_type": "LIMITED_WITH_REASON",
|
||||
"reply_type": "partial_coverage",
|
||||
"assistant_reply_preview": "Текущий live recipe не дает нужную видимость данных для этого сценария.\nПричина: в live строках нет договорных якорей для уверенного списка незакрытых договоров.\nЧто нужно уточнить: сузьте запрос по контрагенту или добав"
|
||||
},
|
||||
{
|
||||
"id": "Q6",
|
||||
"question": "show bank operations by counterparty Alfa",
|
||||
"expected_intent": "unknown",
|
||||
"http_status": 200,
|
||||
"ok": true,
|
||||
"detected_mode": "address_query",
|
||||
"query_shape": "DOCUMENT_LIST",
|
||||
"detected_intent": "unknown",
|
||||
"selected_recipe": null,
|
||||
"mcp_call_status": "skipped",
|
||||
"rows_fetched": 0,
|
||||
"rows_matched": 0,
|
||||
"runtime_readiness": "DEEP_ONLY",
|
||||
"limited_reason_category": "unsupported",
|
||||
"response_type": "LIMITED_WITH_REASON",
|
||||
"reply_type": "partial_coverage",
|
||||
"assistant_reply_preview": "Этот запрос не подходит под address_query V1.\nПричина: intent пока не поддержан в address V1.\nЧто нужно уточнить: переформулируйте вопрос как адресный lookup по счету/контрагенту/договору."
|
||||
},
|
||||
{
|
||||
"id": "Q7",
|
||||
"question": "who owes us and who we owe today",
|
||||
"expected_intent": "list_receivables_counterparties",
|
||||
"http_status": 200,
|
||||
"ok": true,
|
||||
"detected_mode": "address_query",
|
||||
"query_shape": "COMPOUND_FACTUAL_QUERY",
|
||||
"detected_intent": "list_receivables_counterparties",
|
||||
"selected_recipe": "address_movements_receivables_v1",
|
||||
"mcp_call_status": "empty",
|
||||
"rows_fetched": 20,
|
||||
"rows_matched": 0,
|
||||
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||
"limited_reason_category": "empty_match",
|
||||
"response_type": "LIMITED_WITH_REASON",
|
||||
"reply_type": "partial_coverage",
|
||||
"assistant_reply_preview": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
{
|
||||
"baseline_run": "2026-03-29_Address_Query_Runtime_V1_M2_Plus_OpenContracts_OpenItems",
|
||||
"current_run": "2026-03-29_Address_Query_Runtime_V1_M2_1_QueryShape_LimitedTaxonomy",
|
||||
"changes": {
|
||||
"debug_query_shape": {
|
||||
"before": false,
|
||||
"after": true
|
||||
},
|
||||
"debug_runtime_readiness": {
|
||||
"before": false,
|
||||
"after": true
|
||||
},
|
||||
"debug_limited_reason_category": {
|
||||
"before": false,
|
||||
"after": true
|
||||
},
|
||||
"limited_reason_taxonomy_depth": {
|
||||
"before": 1,
|
||||
"after": 4
|
||||
},
|
||||
"false_factual_rate": {
|
||||
"before": 0.0,
|
||||
"after": 0.0
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
llm_normalizer/backend/src/types/addressQuery.ts
|
||||
llm_normalizer/backend/src/services/addressQueryShapeClassifier.ts
|
||||
llm_normalizer/backend/src/services/addressQueryService.ts
|
||||
llm_normalizer/backend/src/services/assistantService.ts
|
||||
llm_normalizer/backend/src/types/assistant.ts
|
||||
llm_normalizer/backend/tests/addressQueryRuntimeM21.test.ts
|
||||
docs/ADDRESS/address_query/address_runtime_contracts.md
|
||||
docs/ADDRESS/address_query/runtime_readiness_matrix_v1.md
|
||||
docs/ADDRESS/address_query/README.md
|
||||
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_1_QueryShape_LimitedTaxonomy/README.md
|
||||
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_1_QueryShape_LimitedTaxonomy/run_summary.json
|
||||
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_1_QueryShape_LimitedTaxonomy/smoke_checks.md
|
||||
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_1_QueryShape_LimitedTaxonomy/before_after_metrics.json
|
||||
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_1_QueryShape_LimitedTaxonomy/assistant_window_dry_run_results.json
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
{
|
||||
"run_id": "2026-03-29_Address_Query_Runtime_V1_M2_1_QueryShape_LimitedTaxonomy",
|
||||
"date": "2026-03-29",
|
||||
"stage": "address_query_runtime_v1",
|
||||
"scope": "m2_1_query_shape_plus_limited_taxonomy",
|
||||
"build_status": "PASSED",
|
||||
"tests_status": "PASSED",
|
||||
"dry_run_status": "PASSED_WITH_LIMITED_RESULTS",
|
||||
"implemented": {
|
||||
"query_shape_classification": true,
|
||||
"compound_query_execution_status": "detection_only",
|
||||
"limited_reason_taxonomy": true,
|
||||
"runtime_readiness_status": true,
|
||||
"operational_limited_reply_text": true
|
||||
},
|
||||
"dry_run_metrics": {
|
||||
"questions_total": 7,
|
||||
"address_mode_hit_rate": 1.0,
|
||||
"query_shape_detected_rate": 1.0,
|
||||
"intent_alignment_rate": 1.0,
|
||||
"supported_recipe_selection_rate": 0.7143,
|
||||
"factual_positive_rate": 0.0,
|
||||
"limited_mode_rate": 1.0,
|
||||
"false_factual_rate": 0.0
|
||||
},
|
||||
"limited_reason_distribution": {
|
||||
"empty_match": 4,
|
||||
"missing_anchor": 1,
|
||||
"recipe_visibility_gap": 1,
|
||||
"unsupported": 1,
|
||||
"execution_error": 0
|
||||
},
|
||||
"next_priority": "Sprint B specialized recipes for contract/document visibility"
|
||||
}
|
||||
|
|
@ -0,0 +1,35 @@
|
|||
# Smoke Checks
|
||||
|
||||
Дата: 2026-03-29
|
||||
|
||||
## Build
|
||||
- `npm run build` -> PASS
|
||||
|
||||
## Tests
|
||||
- `npx vitest run tests/addressQueryRuntimeM21.test.ts` -> PASS (5/5)
|
||||
|
||||
## Dry-run (assistant window equivalent)
|
||||
|
||||
Источник: `assistant_window_dry_run_results.json`
|
||||
|
||||
- total questions: 7
|
||||
- `detected_mode=address_query`: 7/7
|
||||
- `query_shape` detected: 7/7
|
||||
- expected intent alignment: 7/7
|
||||
- `selected_recipe` present: 5/7
|
||||
- `response_type=LIMITED_WITH_REASON`: 7/7
|
||||
- `false_factual_rate`: 0
|
||||
|
||||
### New diagnostics observed
|
||||
|
||||
- `query_shape` surfaced in debug payload.
|
||||
- `runtime_readiness` surfaced in debug payload.
|
||||
- `limited_reason_category` surfaced in debug payload.
|
||||
|
||||
### Limited taxonomy distribution
|
||||
|
||||
- `empty_match`: 4
|
||||
- `missing_anchor`: 1
|
||||
- `recipe_visibility_gap`: 1
|
||||
- `unsupported`: 1
|
||||
- `execution_error`: 0
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
# Run README — Address Query Runtime V1 M2.2
|
||||
|
||||
Дата: 2026-03-29
|
||||
Run ID: `2026-03-29_Address_Query_Runtime_V1_M2_2_Documents_BankOps_By_Counterparty`
|
||||
|
||||
## Цель инкремента
|
||||
|
||||
Сделать следующий практический шаг Sprint B:
|
||||
|
||||
- добавить intent `list_documents_by_counterparty`;
|
||||
- добавить intent `bank_operations_by_counterparty`;
|
||||
- добавить live recipes для этих intent;
|
||||
- усилить extraction фильтров периода (`from/to`, `between/and`) и default period для by-counterparty сценариев;
|
||||
- сохранить safety-контракт (`false_factual_rate = 0`) и честный limited mode.
|
||||
|
||||
## Что проверено
|
||||
|
||||
- `npm.cmd run build` — PASS.
|
||||
- `npx.cmd vitest run tests/addressQueryRuntimeM22.test.ts` — PASS (7/7).
|
||||
- dry-run через `/api/assistant/message` на 6 вопросах — сохранен в `assistant_window_dry_run_results.json`.
|
||||
|
||||
## Основной вывод
|
||||
|
||||
Address lane расширен на два новых P0-сценария и стабильно маршрутизирует их в правильные intent/recipe. При этом positive factual output пока не достигнут: текущий блокер — live visibility (преобладает `empty_match`), а не routing/intent detection.
|
||||
|
||||
## Важное ограничение M2.2
|
||||
|
||||
`COMPOUND_FACTUAL_QUERY` по-прежнему только detection-only.
|
||||
M2.2 не включает multi-intent decomposition execution.
|
||||
|
|
@ -0,0 +1,162 @@
|
|||
{
|
||||
"generated_at": "2026-03-29T16:28:22.969Z",
|
||||
"questions": [
|
||||
{
|
||||
"id": "Q1",
|
||||
"question": "show documents by counterparty Alfa from 2020-07-01 to 2020-07-31",
|
||||
"expected_intent": "list_documents_by_counterparty",
|
||||
"http_status": 200,
|
||||
"ok": true,
|
||||
"detected_mode": "address_query",
|
||||
"query_shape": "DOCUMENT_LIST",
|
||||
"detected_intent": "list_documents_by_counterparty",
|
||||
"selected_recipe": "address_documents_by_counterparty_v1",
|
||||
"extracted_filters": {
|
||||
"sort": "period_desc",
|
||||
"limit": 20,
|
||||
"counterparty": "Alfa",
|
||||
"period_from": "2020-07-01",
|
||||
"period_to": "2020-07-31"
|
||||
},
|
||||
"missing_required_filters": [],
|
||||
"mcp_call_status": "empty",
|
||||
"rows_fetched": 20,
|
||||
"rows_matched": 0,
|
||||
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||
"limited_reason_category": "empty_match",
|
||||
"response_type": "LIMITED_WITH_REASON",
|
||||
"reply_type": "partial_coverage",
|
||||
"assistant_reply_preview": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
|
||||
},
|
||||
{
|
||||
"id": "Q2",
|
||||
"question": "show bank operations by counterparty Alfa from 2020-07-01 to 2020-07-31",
|
||||
"expected_intent": "bank_operations_by_counterparty",
|
||||
"http_status": 200,
|
||||
"ok": true,
|
||||
"detected_mode": "address_query",
|
||||
"query_shape": "DOCUMENT_LIST",
|
||||
"detected_intent": "bank_operations_by_counterparty",
|
||||
"selected_recipe": "address_bank_operations_by_counterparty_v1",
|
||||
"extracted_filters": {
|
||||
"sort": "period_desc",
|
||||
"limit": 20,
|
||||
"counterparty": "Alfa",
|
||||
"period_from": "2020-07-01",
|
||||
"period_to": "2020-07-31"
|
||||
},
|
||||
"missing_required_filters": [],
|
||||
"mcp_call_status": "empty",
|
||||
"rows_fetched": 20,
|
||||
"rows_matched": 0,
|
||||
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||
"limited_reason_category": "empty_match",
|
||||
"response_type": "LIMITED_WITH_REASON",
|
||||
"reply_type": "partial_coverage",
|
||||
"assistant_reply_preview": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
|
||||
},
|
||||
{
|
||||
"id": "Q3",
|
||||
"question": "show bank operations by counterparty Alfa",
|
||||
"expected_intent": "bank_operations_by_counterparty",
|
||||
"http_status": 200,
|
||||
"ok": true,
|
||||
"detected_mode": "address_query",
|
||||
"query_shape": "DOCUMENT_LIST",
|
||||
"detected_intent": "bank_operations_by_counterparty",
|
||||
"selected_recipe": "address_bank_operations_by_counterparty_v1",
|
||||
"extracted_filters": {
|
||||
"sort": "period_desc",
|
||||
"limit": 20,
|
||||
"counterparty": "Alfa",
|
||||
"period_to": "2026-03-29",
|
||||
"period_from": "2025-12-29"
|
||||
},
|
||||
"missing_required_filters": [],
|
||||
"mcp_call_status": "empty",
|
||||
"rows_fetched": 0,
|
||||
"rows_matched": 0,
|
||||
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||
"limited_reason_category": "empty_match",
|
||||
"response_type": "LIMITED_WITH_REASON",
|
||||
"reply_type": "partial_coverage",
|
||||
"assistant_reply_preview": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
|
||||
},
|
||||
{
|
||||
"id": "Q4",
|
||||
"question": "show documents by contract 15/24",
|
||||
"expected_intent": "unknown",
|
||||
"http_status": 200,
|
||||
"ok": true,
|
||||
"detected_mode": "address_query",
|
||||
"query_shape": "DOCUMENT_LIST",
|
||||
"detected_intent": "unknown",
|
||||
"selected_recipe": null,
|
||||
"extracted_filters": {
|
||||
"sort": "period_desc",
|
||||
"limit": 20,
|
||||
"contract": "15/24"
|
||||
},
|
||||
"missing_required_filters": [],
|
||||
"mcp_call_status": "skipped",
|
||||
"rows_fetched": 0,
|
||||
"rows_matched": 0,
|
||||
"runtime_readiness": "DEEP_ONLY",
|
||||
"limited_reason_category": "unsupported",
|
||||
"response_type": "LIMITED_WITH_REASON",
|
||||
"reply_type": "partial_coverage",
|
||||
"assistant_reply_preview": "Этот запрос не подходит под address_query V1.\nПричина: intent пока не поддержан в address V1.\nЧто нужно уточнить: переформулируйте вопрос как адресный lookup по счету/контрагенту/договору."
|
||||
},
|
||||
{
|
||||
"id": "Q5",
|
||||
"question": "show open items by contract",
|
||||
"expected_intent": "open_items_by_counterparty_or_contract",
|
||||
"http_status": 200,
|
||||
"ok": true,
|
||||
"detected_mode": "address_query",
|
||||
"query_shape": "OBJECT_LOOKUP",
|
||||
"detected_intent": "open_items_by_counterparty_or_contract",
|
||||
"selected_recipe": null,
|
||||
"extracted_filters": {
|
||||
"sort": "period_desc",
|
||||
"limit": 20
|
||||
},
|
||||
"missing_required_filters": [
|
||||
"counterparty_or_contract"
|
||||
],
|
||||
"mcp_call_status": "skipped",
|
||||
"rows_fetched": 0,
|
||||
"rows_matched": 0,
|
||||
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||
"limited_reason_category": "missing_anchor",
|
||||
"response_type": "LIMITED_WITH_REASON",
|
||||
"reply_type": "partial_coverage",
|
||||
"assistant_reply_preview": "Для точного адресного поиска не хватает обязательного якоря.\nПричина: для open_items нужен якорь контрагента или договора.\nЧто нужно уточнить: укажите контрагента или номер/название договора."
|
||||
},
|
||||
{
|
||||
"id": "Q6",
|
||||
"question": "who owes us today",
|
||||
"expected_intent": "list_receivables_counterparties",
|
||||
"http_status": 200,
|
||||
"ok": true,
|
||||
"detected_mode": "address_query",
|
||||
"query_shape": "AGGREGATE_LOOKUP",
|
||||
"detected_intent": "list_receivables_counterparties",
|
||||
"selected_recipe": "address_movements_receivables_v1",
|
||||
"extracted_filters": {
|
||||
"sort": "period_desc",
|
||||
"limit": 20,
|
||||
"as_of_date": "2026-03-29"
|
||||
},
|
||||
"missing_required_filters": [],
|
||||
"mcp_call_status": "empty",
|
||||
"rows_fetched": 20,
|
||||
"rows_matched": 0,
|
||||
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||
"limited_reason_category": "empty_match",
|
||||
"response_type": "LIMITED_WITH_REASON",
|
||||
"reply_type": "partial_coverage",
|
||||
"assistant_reply_preview": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
{
|
||||
"baseline_run": "2026-03-29_Address_Query_Runtime_V1_M2_1_QueryShape_LimitedTaxonomy",
|
||||
"current_run": "2026-03-29_Address_Query_Runtime_V1_M2_2_Documents_BankOps_By_Counterparty",
|
||||
"changes": {
|
||||
"intent_documents_by_counterparty": {
|
||||
"before": false,
|
||||
"after": true
|
||||
},
|
||||
"intent_bank_operations_by_counterparty": {
|
||||
"before": false,
|
||||
"after": true
|
||||
},
|
||||
"recipe_documents_by_counterparty_v1": {
|
||||
"before": false,
|
||||
"after": true
|
||||
},
|
||||
"recipe_bank_operations_by_counterparty_v1": {
|
||||
"before": false,
|
||||
"after": true
|
||||
},
|
||||
"period_range_extraction": {
|
||||
"before": false,
|
||||
"after": true
|
||||
},
|
||||
"default_period_for_by_counterparty": {
|
||||
"before": false,
|
||||
"after": true
|
||||
},
|
||||
"false_factual_rate": {
|
||||
"before": 0.0,
|
||||
"after": 0.0
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
llm_normalizer/backend/src/types/addressQuery.ts
|
||||
llm_normalizer/backend/src/services/addressIntentResolver.ts
|
||||
llm_normalizer/backend/src/services/addressFilterExtractor.ts
|
||||
llm_normalizer/backend/src/services/addressRecipeCatalog.ts
|
||||
llm_normalizer/backend/src/services/addressQueryService.ts
|
||||
llm_normalizer/backend/tests/addressQueryRuntimeM22.test.ts
|
||||
docs/ADDRESS/address_query/address_scenario_matrix.md
|
||||
docs/ADDRESS/address_query/query_recipes_v1.md
|
||||
docs/ADDRESS/address_query/runtime_readiness_matrix_v1.md
|
||||
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_2_Documents_BankOps_By_Counterparty/README.md
|
||||
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_2_Documents_BankOps_By_Counterparty/run_summary.json
|
||||
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_2_Documents_BankOps_By_Counterparty/before_after_metrics.json
|
||||
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_2_Documents_BankOps_By_Counterparty/smoke_checks.md
|
||||
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_2_Documents_BankOps_By_Counterparty/assistant_window_dry_run_results.json
|
||||
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_2_Documents_BankOps_By_Counterparty/changed_files.txt
|
||||
|
|
@ -0,0 +1,35 @@
|
|||
{
|
||||
"run_id": "2026-03-29_Address_Query_Runtime_V1_M2_2_Documents_BankOps_By_Counterparty",
|
||||
"date": "2026-03-29",
|
||||
"stage": "address_query_runtime_v1",
|
||||
"scope": "m2_2_documents_and_bank_ops_by_counterparty",
|
||||
"build_status": "PASSED",
|
||||
"tests_status": "PASSED",
|
||||
"dry_run_status": "PASSED_WITH_LIMITED_RESULTS",
|
||||
"implemented": {
|
||||
"intent_documents_by_counterparty": true,
|
||||
"intent_bank_operations_by_counterparty": true,
|
||||
"recipe_documents_by_counterparty_v1": true,
|
||||
"recipe_bank_operations_by_counterparty_v1": true,
|
||||
"period_range_extraction": true,
|
||||
"default_period_last_90_days_for_by_counterparty": true
|
||||
},
|
||||
"dry_run_metrics": {
|
||||
"questions_total": 6,
|
||||
"address_mode_hit_rate": 1.0,
|
||||
"query_shape_detected_rate": 1.0,
|
||||
"intent_alignment_rate": 1.0,
|
||||
"supported_recipe_selection_rate": 0.6667,
|
||||
"factual_positive_rate": 0.0,
|
||||
"limited_mode_rate": 1.0,
|
||||
"false_factual_rate": 0.0
|
||||
},
|
||||
"limited_reason_distribution": {
|
||||
"empty_match": 4,
|
||||
"missing_anchor": 1,
|
||||
"recipe_visibility_gap": 0,
|
||||
"unsupported": 1,
|
||||
"execution_error": 0
|
||||
},
|
||||
"next_priority": "Sprint B Priority 3: documents_forming_balance + known-positive live suite execution"
|
||||
}
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
# Smoke Checks
|
||||
|
||||
Дата: 2026-03-29
|
||||
|
||||
## Build
|
||||
- `npm.cmd run build` -> PASS
|
||||
|
||||
## Tests
|
||||
- `npx.cmd vitest run tests/addressQueryRuntimeM22.test.ts` -> PASS (7/7)
|
||||
|
||||
## Dry-run (assistant window equivalent)
|
||||
|
||||
Источник: `assistant_window_dry_run_results.json`
|
||||
|
||||
- total questions: 6
|
||||
- `detected_mode=address_query`: 6/6
|
||||
- `query_shape` detected: 6/6
|
||||
- expected intent alignment: 6/6
|
||||
- `selected_recipe` present: 4/6
|
||||
- `response_type=LIMITED_WITH_REASON`: 6/6
|
||||
- `false_factual_rate`: 0
|
||||
|
||||
### Limited taxonomy distribution
|
||||
|
||||
- `empty_match`: 4
|
||||
- `missing_anchor`: 1
|
||||
- `recipe_visibility_gap`: 0
|
||||
- `unsupported`: 1
|
||||
- `execution_error`: 0
|
||||
|
||||
### Operational note
|
||||
|
||||
`documents_by_counterparty` and `bank_operations_by_counterparty` are now implemented and routed correctly.
|
||||
Current blocker remains live data visibility on selected anchors/periods (non-empty positive evidence suite still required).
|
||||
|
|
@ -0,0 +1,35 @@
|
|||
# Run README — Address Query Runtime V1 M2.3a
|
||||
|
||||
Дата: 2026-03-29
|
||||
Run ID: `2026-03-29_Address_Query_Runtime_V1_M2_3A_Stage_Diagnostic_Materialization`
|
||||
|
||||
## Цель инкремента
|
||||
|
||||
Сделать узкий диагностический шаг после M2.3:
|
||||
|
||||
- развести `mcp_call_status` по стадиям;
|
||||
- зафиксировать, где именно теряются строки (`raw -> account_scope -> materialization -> recipe_filter -> matched`);
|
||||
- убрать неинформативный общий `empty` статус;
|
||||
- подготовить техническую базу для следующего exploratory live pass.
|
||||
|
||||
## Что проверено
|
||||
|
||||
- `npm.cmd run build` — PASS.
|
||||
- `npx.cmd vitest run tests/addressQueryRuntimeM23.test.ts` — PASS (10/10).
|
||||
- stage-diagnostic dry-run через `/api/assistant/message` на 5 core cases — сохранен в `assistant_window_stage_diagnostic_results.json`.
|
||||
|
||||
## Ключевой вывод
|
||||
|
||||
Диагностический паттерн стабилен:
|
||||
|
||||
- `raw_rows_received > 0`;
|
||||
- `rows_after_account_scope = 0`;
|
||||
- `rows_materialized = 0`;
|
||||
- `rows_after_recipe_filter = 0`;
|
||||
- `rows_matched = 0`.
|
||||
|
||||
То есть текущий primary bottleneck находится на account-scope filtration до materialization.
|
||||
|
||||
## Что это значит для next step
|
||||
|
||||
Следующий шаг нужно делать как targeted tuning account-scope per recipe, а уже затем запускать curated non-empty data-aware positive acceptance.
|
||||
|
|
@ -0,0 +1,242 @@
|
|||
{
|
||||
"generated_at": "2026-03-29T17:33:28.054Z",
|
||||
"cases": [
|
||||
{
|
||||
"id": "D1",
|
||||
"question": "show account balance 60 today",
|
||||
"expected_intent": "account_balance_snapshot",
|
||||
"http_status": 200,
|
||||
"ok": true,
|
||||
"detected_mode": "address_query",
|
||||
"query_shape": "AGGREGATE_LOOKUP",
|
||||
"detected_intent": "account_balance_snapshot",
|
||||
"intent_aligned": true,
|
||||
"selected_recipe": "address_movements_account_snapshot_v1",
|
||||
"extracted_filters": {
|
||||
"sort": "period_desc",
|
||||
"limit": 20,
|
||||
"account": "60",
|
||||
"as_of_date": "2026-03-29"
|
||||
},
|
||||
"anchor_type": "account",
|
||||
"anchor_value_raw": "60",
|
||||
"resolver_confidence": "high",
|
||||
"mcp_call_status": "raw_rows_received_but_not_materialized",
|
||||
"stage_interpretation": "Rows came from MCP but were lost before/at materialization.",
|
||||
"rows_fetched": 20,
|
||||
"raw_rows_received": 20,
|
||||
"rows_after_account_scope": 0,
|
||||
"rows_materialized": 0,
|
||||
"rows_after_recipe_filter": 0,
|
||||
"rows_matched": 0,
|
||||
"raw_row_keys_sample": [
|
||||
"Период",
|
||||
"Регистратор",
|
||||
"СчетДт",
|
||||
"СчетКт",
|
||||
"Сумма",
|
||||
"Period",
|
||||
"Registrator",
|
||||
"AccountDt",
|
||||
"AccountKt",
|
||||
"Amount"
|
||||
],
|
||||
"materialization_drop_reason": "dropped_by_account_scope_filter",
|
||||
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||
"limited_reason_category": "empty_match",
|
||||
"response_type": "LIMITED_WITH_REASON",
|
||||
"reply_type": "partial_coverage",
|
||||
"assistant_reply_preview_escaped": "\\u0412 live-\\u0434\\u0430\\u043d\\u043d\\u044b\\u0445 \\u043f\\u043e \\u0442\\u0435\\u043a\\u0443\\u0449\\u0435\\u043c\\u0443 \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u0443 \\u0437\\u0430\\u043f\\u0438\\u0441\\u0438 \\u043d\\u0435 \\u043d\\u0430\\u0439\\u0434\\u0435\\u043d\\u044b.\n\\u041f\\u0440\\u0438\\u0447\\u0438\\u043d\\u0430: \\u043f\\u043e \\u0432\\u044b\\u0431\\u0440\\u0430\\u043d\\u043d\\u044b\\u043c \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u0430\\u043c \\u0432 live-\\u0432\\u044b\\u0431\\u043e\\u0440\\u043a\\u0435 \\u043d\\u0435\\u0442 \\u0441\\u0442\\u0440\\u043e\\u043a.\n\\u0427\\u0442\\u043e \\u043d\\u0443\\u0436\\u043d\\u043e \\u0443\\u0442\\u043e\\u0447\\u043d\\u0438\\u0442\\u044c: \\u0443\\u0442\\u043e\\u0447\\u043d\\u0438\\u0442\\u0435 \\u043f\\u0435\\u0440\\u0438\\u043e\\u0434, \\u043a\\u043e\\u043d\\u0442\\u0440\\u0430\\u0433\\u0435\\u043d\\u0442\\u0430, \\u0434\\u043e\\u0433\\u043e\\u0432\\u043e\\u0440 \\u0438\\u043b\\u0438 \\u0441\\u043d\\u0438\\u043c\\u0438\\u0442\\u0435 \\u0447\\u0430\\u0441\\u0442\\u044c \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u043e\\u0432."
|
||||
},
|
||||
{
|
||||
"id": "D2",
|
||||
"question": "which documents form balance for account 62 as of 2020-07-31",
|
||||
"expected_intent": "documents_forming_balance",
|
||||
"http_status": 200,
|
||||
"ok": true,
|
||||
"detected_mode": "address_query",
|
||||
"query_shape": "DOCUMENT_LIST",
|
||||
"detected_intent": "documents_forming_balance",
|
||||
"intent_aligned": true,
|
||||
"selected_recipe": "address_documents_forming_balance_v1",
|
||||
"extracted_filters": {
|
||||
"sort": "period_desc",
|
||||
"limit": 20,
|
||||
"account": "62",
|
||||
"as_of_date": "2020-07-31"
|
||||
},
|
||||
"anchor_type": "account",
|
||||
"anchor_value_raw": "62",
|
||||
"resolver_confidence": "high",
|
||||
"mcp_call_status": "raw_rows_received_but_not_materialized",
|
||||
"stage_interpretation": "Rows came from MCP but were lost before/at materialization.",
|
||||
"rows_fetched": 20,
|
||||
"raw_rows_received": 20,
|
||||
"rows_after_account_scope": 0,
|
||||
"rows_materialized": 0,
|
||||
"rows_after_recipe_filter": 0,
|
||||
"rows_matched": 0,
|
||||
"raw_row_keys_sample": [
|
||||
"Период",
|
||||
"Регистратор",
|
||||
"СчетДт",
|
||||
"СчетКт",
|
||||
"Сумма",
|
||||
"Period",
|
||||
"Registrator",
|
||||
"AccountDt",
|
||||
"AccountKt",
|
||||
"Amount"
|
||||
],
|
||||
"materialization_drop_reason": "dropped_by_account_scope_filter",
|
||||
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||
"limited_reason_category": "empty_match",
|
||||
"response_type": "LIMITED_WITH_REASON",
|
||||
"reply_type": "partial_coverage",
|
||||
"assistant_reply_preview_escaped": "\\u0412 live-\\u0434\\u0430\\u043d\\u043d\\u044b\\u0445 \\u043f\\u043e \\u0442\\u0435\\u043a\\u0443\\u0449\\u0435\\u043c\\u0443 \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u0443 \\u0437\\u0430\\u043f\\u0438\\u0441\\u0438 \\u043d\\u0435 \\u043d\\u0430\\u0439\\u0434\\u0435\\u043d\\u044b.\n\\u041f\\u0440\\u0438\\u0447\\u0438\\u043d\\u0430: \\u043f\\u043e \\u0432\\u044b\\u0431\\u0440\\u0430\\u043d\\u043d\\u044b\\u043c \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u0430\\u043c \\u0432 live-\\u0432\\u044b\\u0431\\u043e\\u0440\\u043a\\u0435 \\u043d\\u0435\\u0442 \\u0441\\u0442\\u0440\\u043e\\u043a.\n\\u0427\\u0442\\u043e \\u043d\\u0443\\u0436\\u043d\\u043e \\u0443\\u0442\\u043e\\u0447\\u043d\\u0438\\u0442\\u044c: \\u0443\\u0442\\u043e\\u0447\\u043d\\u0438\\u0442\\u0435 \\u043f\\u0435\\u0440\\u0438\\u043e\\u0434, \\u043a\\u043e\\u043d\\u0442\\u0440\\u0430\\u0433\\u0435\\u043d\\u0442\\u0430, \\u0434\\u043e\\u0433\\u043e\\u0432\\u043e\\u0440 \\u0438\\u043b\\u0438 \\u0441\\u043d\\u0438\\u043c\\u0438\\u0442\\u0435 \\u0447\\u0430\\u0441\\u0442\\u044c \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u043e\\u0432."
|
||||
},
|
||||
{
|
||||
"id": "D3",
|
||||
"question": "reveal balance documents for account 60",
|
||||
"expected_intent": "documents_forming_balance",
|
||||
"http_status": 200,
|
||||
"ok": true,
|
||||
"detected_mode": "address_query",
|
||||
"query_shape": "DOCUMENT_LIST",
|
||||
"detected_intent": "documents_forming_balance",
|
||||
"intent_aligned": true,
|
||||
"selected_recipe": "address_documents_forming_balance_v1",
|
||||
"extracted_filters": {
|
||||
"sort": "period_desc",
|
||||
"limit": 20,
|
||||
"account": "60",
|
||||
"as_of_date": "2026-03-29"
|
||||
},
|
||||
"anchor_type": "account",
|
||||
"anchor_value_raw": "60",
|
||||
"resolver_confidence": "high",
|
||||
"mcp_call_status": "raw_rows_received_but_not_materialized",
|
||||
"stage_interpretation": "Rows came from MCP but were lost before/at materialization.",
|
||||
"rows_fetched": 20,
|
||||
"raw_rows_received": 20,
|
||||
"rows_after_account_scope": 0,
|
||||
"rows_materialized": 0,
|
||||
"rows_after_recipe_filter": 0,
|
||||
"rows_matched": 0,
|
||||
"raw_row_keys_sample": [
|
||||
"Период",
|
||||
"Регистратор",
|
||||
"СчетДт",
|
||||
"СчетКт",
|
||||
"Сумма",
|
||||
"Period",
|
||||
"Registrator",
|
||||
"AccountDt",
|
||||
"AccountKt",
|
||||
"Amount"
|
||||
],
|
||||
"materialization_drop_reason": "dropped_by_account_scope_filter",
|
||||
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||
"limited_reason_category": "empty_match",
|
||||
"response_type": "LIMITED_WITH_REASON",
|
||||
"reply_type": "partial_coverage",
|
||||
"assistant_reply_preview_escaped": "\\u0412 live-\\u0434\\u0430\\u043d\\u043d\\u044b\\u0445 \\u043f\\u043e \\u0442\\u0435\\u043a\\u0443\\u0449\\u0435\\u043c\\u0443 \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u0443 \\u0437\\u0430\\u043f\\u0438\\u0441\\u0438 \\u043d\\u0435 \\u043d\\u0430\\u0439\\u0434\\u0435\\u043d\\u044b.\n\\u041f\\u0440\\u0438\\u0447\\u0438\\u043d\\u0430: \\u043f\\u043e \\u0432\\u044b\\u0431\\u0440\\u0430\\u043d\\u043d\\u044b\\u043c \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u0430\\u043c \\u0432 live-\\u0432\\u044b\\u0431\\u043e\\u0440\\u043a\\u0435 \\u043d\\u0435\\u0442 \\u0441\\u0442\\u0440\\u043e\\u043a.\n\\u0427\\u0442\\u043e \\u043d\\u0443\\u0436\\u043d\\u043e \\u0443\\u0442\\u043e\\u0447\\u043d\\u0438\\u0442\\u044c: \\u0443\\u0442\\u043e\\u0447\\u043d\\u0438\\u0442\\u0435 \\u043f\\u0435\\u0440\\u0438\\u043e\\u0434, \\u043a\\u043e\\u043d\\u0442\\u0440\\u0430\\u0433\\u0435\\u043d\\u0442\\u0430, \\u0434\\u043e\\u0433\\u043e\\u0432\\u043e\\u0440 \\u0438\\u043b\\u0438 \\u0441\\u043d\\u0438\\u043c\\u0438\\u0442\\u0435 \\u0447\\u0430\\u0441\\u0442\\u044c \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u043e\\u0432."
|
||||
},
|
||||
{
|
||||
"id": "D4",
|
||||
"question": "show documents by counterparty Alfa from 2020-07-01 to 2020-07-31",
|
||||
"expected_intent": "list_documents_by_counterparty",
|
||||
"http_status": 200,
|
||||
"ok": true,
|
||||
"detected_mode": "address_query",
|
||||
"query_shape": "DOCUMENT_LIST",
|
||||
"detected_intent": "list_documents_by_counterparty",
|
||||
"intent_aligned": true,
|
||||
"selected_recipe": "address_documents_by_counterparty_v1",
|
||||
"extracted_filters": {
|
||||
"sort": "period_desc",
|
||||
"limit": 20,
|
||||
"counterparty": "Alfa",
|
||||
"period_from": "2020-07-01",
|
||||
"period_to": "2020-07-31"
|
||||
},
|
||||
"anchor_type": "counterparty",
|
||||
"anchor_value_raw": "Alfa",
|
||||
"resolver_confidence": "medium",
|
||||
"mcp_call_status": "raw_rows_received_but_not_materialized",
|
||||
"stage_interpretation": "Rows came from MCP but were lost before/at materialization.",
|
||||
"rows_fetched": 20,
|
||||
"raw_rows_received": 20,
|
||||
"rows_after_account_scope": 0,
|
||||
"rows_materialized": 0,
|
||||
"rows_after_recipe_filter": 0,
|
||||
"rows_matched": 0,
|
||||
"raw_row_keys_sample": [
|
||||
"Период",
|
||||
"Регистратор",
|
||||
"СчетДт",
|
||||
"СчетКт",
|
||||
"Сумма",
|
||||
"Period",
|
||||
"Registrator",
|
||||
"AccountDt",
|
||||
"AccountKt",
|
||||
"Amount"
|
||||
],
|
||||
"materialization_drop_reason": "dropped_by_account_scope_filter",
|
||||
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||
"limited_reason_category": "empty_match",
|
||||
"response_type": "LIMITED_WITH_REASON",
|
||||
"reply_type": "partial_coverage",
|
||||
"assistant_reply_preview_escaped": "\\u0412 live-\\u0434\\u0430\\u043d\\u043d\\u044b\\u0445 \\u043f\\u043e \\u0442\\u0435\\u043a\\u0443\\u0449\\u0435\\u043c\\u0443 \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u0443 \\u0437\\u0430\\u043f\\u0438\\u0441\\u0438 \\u043d\\u0435 \\u043d\\u0430\\u0439\\u0434\\u0435\\u043d\\u044b.\n\\u041f\\u0440\\u0438\\u0447\\u0438\\u043d\\u0430: \\u043f\\u043e \\u0432\\u044b\\u0431\\u0440\\u0430\\u043d\\u043d\\u044b\\u043c \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u0430\\u043c \\u0432 live-\\u0432\\u044b\\u0431\\u043e\\u0440\\u043a\\u0435 \\u043d\\u0435\\u0442 \\u0441\\u0442\\u0440\\u043e\\u043a.\n\\u0427\\u0442\\u043e \\u043d\\u0443\\u0436\\u043d\\u043e \\u0443\\u0442\\u043e\\u0447\\u043d\\u0438\\u0442\\u044c: \\u0443\\u0442\\u043e\\u0447\\u043d\\u0438\\u0442\\u0435 \\u043f\\u0435\\u0440\\u0438\\u043e\\u0434, \\u043a\\u043e\\u043d\\u0442\\u0440\\u0430\\u0433\\u0435\\u043d\\u0442\\u0430, \\u0434\\u043e\\u0433\\u043e\\u0432\\u043e\\u0440 \\u0438\\u043b\\u0438 \\u0441\\u043d\\u0438\\u043c\\u0438\\u0442\\u0435 \\u0447\\u0430\\u0441\\u0442\\u044c \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u043e\\u0432."
|
||||
},
|
||||
{
|
||||
"id": "D5",
|
||||
"question": "show bank operations by counterparty Alfa from 2020-07-01 to 2020-07-31",
|
||||
"expected_intent": "bank_operations_by_counterparty",
|
||||
"http_status": 200,
|
||||
"ok": true,
|
||||
"detected_mode": "address_query",
|
||||
"query_shape": "DOCUMENT_LIST",
|
||||
"detected_intent": "bank_operations_by_counterparty",
|
||||
"intent_aligned": true,
|
||||
"selected_recipe": "address_bank_operations_by_counterparty_v1",
|
||||
"extracted_filters": {
|
||||
"sort": "period_desc",
|
||||
"limit": 20,
|
||||
"counterparty": "Alfa",
|
||||
"period_from": "2020-07-01",
|
||||
"period_to": "2020-07-31"
|
||||
},
|
||||
"anchor_type": "counterparty",
|
||||
"anchor_value_raw": "Alfa",
|
||||
"resolver_confidence": "medium",
|
||||
"mcp_call_status": "raw_rows_received_but_not_materialized",
|
||||
"stage_interpretation": "Rows came from MCP but were lost before/at materialization.",
|
||||
"rows_fetched": 20,
|
||||
"raw_rows_received": 20,
|
||||
"rows_after_account_scope": 0,
|
||||
"rows_materialized": 0,
|
||||
"rows_after_recipe_filter": 0,
|
||||
"rows_matched": 0,
|
||||
"raw_row_keys_sample": [
|
||||
"Период",
|
||||
"Регистратор",
|
||||
"СчетДт",
|
||||
"СчетКт",
|
||||
"Сумма",
|
||||
"Period",
|
||||
"Registrator",
|
||||
"AccountDt",
|
||||
"AccountKt",
|
||||
"Amount"
|
||||
],
|
||||
"materialization_drop_reason": "dropped_by_account_scope_filter",
|
||||
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||
"limited_reason_category": "empty_match",
|
||||
"response_type": "LIMITED_WITH_REASON",
|
||||
"reply_type": "partial_coverage",
|
||||
"assistant_reply_preview_escaped": "\\u0412 live-\\u0434\\u0430\\u043d\\u043d\\u044b\\u0445 \\u043f\\u043e \\u0442\\u0435\\u043a\\u0443\\u0449\\u0435\\u043c\\u0443 \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u0443 \\u0437\\u0430\\u043f\\u0438\\u0441\\u0438 \\u043d\\u0435 \\u043d\\u0430\\u0439\\u0434\\u0435\\u043d\\u044b.\n\\u041f\\u0440\\u0438\\u0447\\u0438\\u043d\\u0430: \\u043f\\u043e \\u0432\\u044b\\u0431\\u0440\\u0430\\u043d\\u043d\\u044b\\u043c \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u0430\\u043c \\u0432 live-\\u0432\\u044b\\u0431\\u043e\\u0440\\u043a\\u0435 \\u043d\\u0435\\u0442 \\u0441\\u0442\\u0440\\u043e\\u043a.\n\\u0427\\u0442\\u043e \\u043d\\u0443\\u0436\\u043d\\u043e \\u0443\\u0442\\u043e\\u0447\\u043d\\u0438\\u0442\\u044c: \\u0443\\u0442\\u043e\\u0447\\u043d\\u0438\\u0442\\u0435 \\u043f\\u0435\\u0440\\u0438\\u043e\\u0434, \\u043a\\u043e\\u043d\\u0442\\u0440\\u0430\\u0433\\u0435\\u043d\\u0442\\u0430, \\u0434\\u043e\\u0433\\u043e\\u0432\\u043e\\u0440 \\u0438\\u043b\\u0438 \\u0441\\u043d\\u0438\\u043c\\u0438\\u0442\\u0435 \\u0447\\u0430\\u0441\\u0442\\u044c \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u043e\\u0432."
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
{
|
||||
"baseline_run": "2026-03-29_Address_Query_Runtime_V1_M2_3_DocumentsFormingBalance_DataAwareAcceptance",
|
||||
"current_run": "2026-03-29_Address_Query_Runtime_V1_M2_3A_Stage_Diagnostic_Materialization",
|
||||
"changes": {
|
||||
"mcp_call_status_granularity": {
|
||||
"before": "ok|empty|error|skipped",
|
||||
"after": "no_raw_rows|raw_rows_received_but_not_materialized|materialized_but_not_matched|matched_non_empty|error|skipped"
|
||||
},
|
||||
"debug_rows_after_account_scope": {
|
||||
"before": false,
|
||||
"after": true
|
||||
},
|
||||
"debug_materialization_drop_reason": {
|
||||
"before": false,
|
||||
"after": true
|
||||
},
|
||||
"test_suite_file": {
|
||||
"before": "addressQueryRuntimeM22.test.ts",
|
||||
"after": "addressQueryRuntimeM23.test.ts"
|
||||
},
|
||||
"factual_positive_rate": {
|
||||
"before": 0,
|
||||
"after": 0
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
llm_normalizer/backend/src/types/addressQuery.ts
|
||||
llm_normalizer/backend/src/types/assistant.ts
|
||||
llm_normalizer/backend/src/services/addressMcpClient.ts
|
||||
llm_normalizer/backend/src/services/addressIntentResolver.ts
|
||||
llm_normalizer/backend/src/services/addressQueryService.ts
|
||||
llm_normalizer/backend/src/services/assistantService.ts
|
||||
llm_normalizer/backend/tests/addressQueryRuntimeM23.test.ts
|
||||
llm_normalizer/backend/tests/addressQueryRuntimeM22.test.ts (deleted)
|
||||
docs/ADDRESS/address_query/address_runtime_contracts.md
|
||||
docs/ADDRESS/address_query/runtime_readiness_matrix_v1.md
|
||||
docs/ADDRESS/address_query/address_scenario_matrix.md
|
||||
docs/ADDRESS/address_query/data_aware_positive_acceptance_suite_v1.md
|
||||
docs/ADDRESS/address_query/README.md
|
||||
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3A_Stage_Diagnostic_Materialization/README.md
|
||||
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3A_Stage_Diagnostic_Materialization/run_summary.json
|
||||
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3A_Stage_Diagnostic_Materialization/before_after_metrics.json
|
||||
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3A_Stage_Diagnostic_Materialization/smoke_checks.md
|
||||
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3A_Stage_Diagnostic_Materialization/stage_diagnostic_report.md
|
||||
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3A_Stage_Diagnostic_Materialization/stage_diagnostic_matrix.md
|
||||
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3A_Stage_Diagnostic_Materialization/assistant_window_stage_diagnostic_results.json
|
||||
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3A_Stage_Diagnostic_Materialization/chat_export_stage_diagnostic.md
|
||||
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3A_Stage_Diagnostic_Materialization/live_call_inventory_address.json
|
||||
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3A_Stage_Diagnostic_Materialization/debug_payloads/D1.json
|
||||
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3A_Stage_Diagnostic_Materialization/debug_payloads/D2.json
|
||||
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3A_Stage_Diagnostic_Materialization/debug_payloads/D3.json
|
||||
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3A_Stage_Diagnostic_Materialization/debug_payloads/D4.json
|
||||
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3A_Stage_Diagnostic_Materialization/debug_payloads/D5.json
|
||||
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3A_Stage_Diagnostic_Materialization/changed_files.txt
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
# Chat Export — Stage Diagnostic Pass (M2.3a)
|
||||
|
||||
Date: 2026-03-29
|
||||
|
||||
## D1
|
||||
Question: show account balance 60 today
|
||||
Detected intent: account_balance_snapshot
|
||||
MCP stage status: raw_rows_received_but_not_materialized
|
||||
Preview (escaped): \u0412 live-\u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e \u0442\u0435\u043a\u0443\u0449\u0435\u043c\u0443 \u0444\u0438\u043b\u044c\u0442\u0440\u0443 \u0437\u0430\u043f\u0438\u0441\u0438 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u044b.
|
||||
\u041f\u0440\u0438\u0447\u0438\u043d\u0430: \u043f\u043e \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u043c \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u043c \u0432 live-\u0432\u044b\u0431\u043e\u0440\u043a\u0435 \u043d\u0435\u0442 \u0441\u0442\u0440\u043e\u043a.
|
||||
\u0427\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0443\u0442\u043e\u0447\u043d\u0438\u0442\u044c: \u0443\u0442\u043e\u0447\u043d\u0438\u0442\u0435 \u043f\u0435\u0440\u0438\u043e\u0434, \u043a\u043e\u043d\u0442\u0440\u0430\u0433\u0435\u043d\u0442\u0430, \u0434\u043e\u0433\u043e\u0432\u043e\u0440 \u0438\u043b\u0438 \u0441\u043d\u0438\u043c\u0438\u0442\u0435 \u0447\u0430\u0441\u0442\u044c \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432.
|
||||
|
||||
## D2
|
||||
Question: which documents form balance for account 62 as of 2020-07-31
|
||||
Detected intent: documents_forming_balance
|
||||
MCP stage status: raw_rows_received_but_not_materialized
|
||||
Preview (escaped): \u0412 live-\u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e \u0442\u0435\u043a\u0443\u0449\u0435\u043c\u0443 \u0444\u0438\u043b\u044c\u0442\u0440\u0443 \u0437\u0430\u043f\u0438\u0441\u0438 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u044b.
|
||||
\u041f\u0440\u0438\u0447\u0438\u043d\u0430: \u043f\u043e \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u043c \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u043c \u0432 live-\u0432\u044b\u0431\u043e\u0440\u043a\u0435 \u043d\u0435\u0442 \u0441\u0442\u0440\u043e\u043a.
|
||||
\u0427\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0443\u0442\u043e\u0447\u043d\u0438\u0442\u044c: \u0443\u0442\u043e\u0447\u043d\u0438\u0442\u0435 \u043f\u0435\u0440\u0438\u043e\u0434, \u043a\u043e\u043d\u0442\u0440\u0430\u0433\u0435\u043d\u0442\u0430, \u0434\u043e\u0433\u043e\u0432\u043e\u0440 \u0438\u043b\u0438 \u0441\u043d\u0438\u043c\u0438\u0442\u0435 \u0447\u0430\u0441\u0442\u044c \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432.
|
||||
|
||||
## D3
|
||||
Question: reveal balance documents for account 60
|
||||
Detected intent: documents_forming_balance
|
||||
MCP stage status: raw_rows_received_but_not_materialized
|
||||
Preview (escaped): \u0412 live-\u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e \u0442\u0435\u043a\u0443\u0449\u0435\u043c\u0443 \u0444\u0438\u043b\u044c\u0442\u0440\u0443 \u0437\u0430\u043f\u0438\u0441\u0438 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u044b.
|
||||
\u041f\u0440\u0438\u0447\u0438\u043d\u0430: \u043f\u043e \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u043c \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u043c \u0432 live-\u0432\u044b\u0431\u043e\u0440\u043a\u0435 \u043d\u0435\u0442 \u0441\u0442\u0440\u043e\u043a.
|
||||
\u0427\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0443\u0442\u043e\u0447\u043d\u0438\u0442\u044c: \u0443\u0442\u043e\u0447\u043d\u0438\u0442\u0435 \u043f\u0435\u0440\u0438\u043e\u0434, \u043a\u043e\u043d\u0442\u0440\u0430\u0433\u0435\u043d\u0442\u0430, \u0434\u043e\u0433\u043e\u0432\u043e\u0440 \u0438\u043b\u0438 \u0441\u043d\u0438\u043c\u0438\u0442\u0435 \u0447\u0430\u0441\u0442\u044c \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432.
|
||||
|
||||
## D4
|
||||
Question: show documents by counterparty Alfa from 2020-07-01 to 2020-07-31
|
||||
Detected intent: list_documents_by_counterparty
|
||||
MCP stage status: raw_rows_received_but_not_materialized
|
||||
Preview (escaped): \u0412 live-\u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e \u0442\u0435\u043a\u0443\u0449\u0435\u043c\u0443 \u0444\u0438\u043b\u044c\u0442\u0440\u0443 \u0437\u0430\u043f\u0438\u0441\u0438 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u044b.
|
||||
\u041f\u0440\u0438\u0447\u0438\u043d\u0430: \u043f\u043e \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u043c \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u043c \u0432 live-\u0432\u044b\u0431\u043e\u0440\u043a\u0435 \u043d\u0435\u0442 \u0441\u0442\u0440\u043e\u043a.
|
||||
\u0427\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0443\u0442\u043e\u0447\u043d\u0438\u0442\u044c: \u0443\u0442\u043e\u0447\u043d\u0438\u0442\u0435 \u043f\u0435\u0440\u0438\u043e\u0434, \u043a\u043e\u043d\u0442\u0440\u0430\u0433\u0435\u043d\u0442\u0430, \u0434\u043e\u0433\u043e\u0432\u043e\u0440 \u0438\u043b\u0438 \u0441\u043d\u0438\u043c\u0438\u0442\u0435 \u0447\u0430\u0441\u0442\u044c \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432.
|
||||
|
||||
## D5
|
||||
Question: show bank operations by counterparty Alfa from 2020-07-01 to 2020-07-31
|
||||
Detected intent: bank_operations_by_counterparty
|
||||
MCP stage status: raw_rows_received_but_not_materialized
|
||||
Preview (escaped): \u0412 live-\u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e \u0442\u0435\u043a\u0443\u0449\u0435\u043c\u0443 \u0444\u0438\u043b\u044c\u0442\u0440\u0443 \u0437\u0430\u043f\u0438\u0441\u0438 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u044b.
|
||||
\u041f\u0440\u0438\u0447\u0438\u043d\u0430: \u043f\u043e \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u043c \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u043c \u0432 live-\u0432\u044b\u0431\u043e\u0440\u043a\u0435 \u043d\u0435\u0442 \u0441\u0442\u0440\u043e\u043a.
|
||||
\u0427\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0443\u0442\u043e\u0447\u043d\u0438\u0442\u044c: \u0443\u0442\u043e\u0447\u043d\u0438\u0442\u0435 \u043f\u0435\u0440\u0438\u043e\u0434, \u043a\u043e\u043d\u0442\u0440\u0430\u0433\u0435\u043d\u0442\u0430, \u0434\u043e\u0433\u043e\u0432\u043e\u0440 \u0438\u043b\u0438 \u0441\u043d\u0438\u043c\u0438\u0442\u0435 \u0447\u0430\u0441\u0442\u044c \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432.
|
||||
|
||||
|
|
@ -0,0 +1,47 @@
|
|||
{
|
||||
"id": "D1",
|
||||
"question": "show account balance 60 today",
|
||||
"expected_intent": "account_balance_snapshot",
|
||||
"http_status": 200,
|
||||
"ok": true,
|
||||
"detected_mode": "address_query",
|
||||
"query_shape": "AGGREGATE_LOOKUP",
|
||||
"detected_intent": "account_balance_snapshot",
|
||||
"intent_aligned": true,
|
||||
"selected_recipe": "address_movements_account_snapshot_v1",
|
||||
"extracted_filters": {
|
||||
"sort": "period_desc",
|
||||
"limit": 20,
|
||||
"account": "60",
|
||||
"as_of_date": "2026-03-29"
|
||||
},
|
||||
"anchor_type": "account",
|
||||
"anchor_value_raw": "60",
|
||||
"resolver_confidence": "high",
|
||||
"mcp_call_status": "raw_rows_received_but_not_materialized",
|
||||
"stage_interpretation": "Rows came from MCP but were lost before/at materialization.",
|
||||
"rows_fetched": 20,
|
||||
"raw_rows_received": 20,
|
||||
"rows_after_account_scope": 0,
|
||||
"rows_materialized": 0,
|
||||
"rows_after_recipe_filter": 0,
|
||||
"rows_matched": 0,
|
||||
"raw_row_keys_sample": [
|
||||
"Период",
|
||||
"Регистратор",
|
||||
"СчетДт",
|
||||
"СчетКт",
|
||||
"РЎСѓРјРјР°",
|
||||
"Period",
|
||||
"Registrator",
|
||||
"AccountDt",
|
||||
"AccountKt",
|
||||
"Amount"
|
||||
],
|
||||
"materialization_drop_reason": "dropped_by_account_scope_filter",
|
||||
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||
"limited_reason_category": "empty_match",
|
||||
"response_type": "LIMITED_WITH_REASON",
|
||||
"reply_type": "partial_coverage",
|
||||
"assistant_reply_preview_escaped": "\\u0412 live-\\u0434\\u0430\\u043d\\u043d\\u044b\\u0445 \\u043f\\u043e \\u0442\\u0435\\u043a\\u0443\\u0449\\u0435\\u043c\\u0443 \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u0443 \\u0437\\u0430\\u043f\\u0438\\u0441\\u0438 \\u043d\\u0435 \\u043d\\u0430\\u0439\\u0434\\u0435\\u043d\\u044b.\n\\u041f\\u0440\\u0438\\u0447\\u0438\\u043d\\u0430: \\u043f\\u043e \\u0432\\u044b\\u0431\\u0440\\u0430\\u043d\\u043d\\u044b\\u043c \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u0430\\u043c \\u0432 live-\\u0432\\u044b\\u0431\\u043e\\u0440\\u043a\\u0435 \\u043d\\u0435\\u0442 \\u0441\\u0442\\u0440\\u043e\\u043a.\n\\u0427\\u0442\\u043e \\u043d\\u0443\\u0436\\u043d\\u043e \\u0443\\u0442\\u043e\\u0447\\u043d\\u0438\\u0442\\u044c: \\u0443\\u0442\\u043e\\u0447\\u043d\\u0438\\u0442\\u0435 \\u043f\\u0435\\u0440\\u0438\\u043e\\u0434, \\u043a\\u043e\\u043d\\u0442\\u0440\\u0430\\u0433\\u0435\\u043d\\u0442\\u0430, \\u0434\\u043e\\u0433\\u043e\\u0432\\u043e\\u0440 \\u0438\\u043b\\u0438 \\u0441\\u043d\\u0438\\u043c\\u0438\\u0442\\u0435 \\u0447\\u0430\\u0441\\u0442\\u044c \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u043e\\u0432."
|
||||
}
|
||||
|
|
@ -0,0 +1,47 @@
|
|||
{
|
||||
"id": "D2",
|
||||
"question": "which documents form balance for account 62 as of 2020-07-31",
|
||||
"expected_intent": "documents_forming_balance",
|
||||
"http_status": 200,
|
||||
"ok": true,
|
||||
"detected_mode": "address_query",
|
||||
"query_shape": "DOCUMENT_LIST",
|
||||
"detected_intent": "documents_forming_balance",
|
||||
"intent_aligned": true,
|
||||
"selected_recipe": "address_documents_forming_balance_v1",
|
||||
"extracted_filters": {
|
||||
"sort": "period_desc",
|
||||
"limit": 20,
|
||||
"account": "62",
|
||||
"as_of_date": "2020-07-31"
|
||||
},
|
||||
"anchor_type": "account",
|
||||
"anchor_value_raw": "62",
|
||||
"resolver_confidence": "high",
|
||||
"mcp_call_status": "raw_rows_received_but_not_materialized",
|
||||
"stage_interpretation": "Rows came from MCP but were lost before/at materialization.",
|
||||
"rows_fetched": 20,
|
||||
"raw_rows_received": 20,
|
||||
"rows_after_account_scope": 0,
|
||||
"rows_materialized": 0,
|
||||
"rows_after_recipe_filter": 0,
|
||||
"rows_matched": 0,
|
||||
"raw_row_keys_sample": [
|
||||
"Период",
|
||||
"Регистратор",
|
||||
"СчетДт",
|
||||
"СчетКт",
|
||||
"РЎСѓРјРјР°",
|
||||
"Period",
|
||||
"Registrator",
|
||||
"AccountDt",
|
||||
"AccountKt",
|
||||
"Amount"
|
||||
],
|
||||
"materialization_drop_reason": "dropped_by_account_scope_filter",
|
||||
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||
"limited_reason_category": "empty_match",
|
||||
"response_type": "LIMITED_WITH_REASON",
|
||||
"reply_type": "partial_coverage",
|
||||
"assistant_reply_preview_escaped": "\\u0412 live-\\u0434\\u0430\\u043d\\u043d\\u044b\\u0445 \\u043f\\u043e \\u0442\\u0435\\u043a\\u0443\\u0449\\u0435\\u043c\\u0443 \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u0443 \\u0437\\u0430\\u043f\\u0438\\u0441\\u0438 \\u043d\\u0435 \\u043d\\u0430\\u0439\\u0434\\u0435\\u043d\\u044b.\n\\u041f\\u0440\\u0438\\u0447\\u0438\\u043d\\u0430: \\u043f\\u043e \\u0432\\u044b\\u0431\\u0440\\u0430\\u043d\\u043d\\u044b\\u043c \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u0430\\u043c \\u0432 live-\\u0432\\u044b\\u0431\\u043e\\u0440\\u043a\\u0435 \\u043d\\u0435\\u0442 \\u0441\\u0442\\u0440\\u043e\\u043a.\n\\u0427\\u0442\\u043e \\u043d\\u0443\\u0436\\u043d\\u043e \\u0443\\u0442\\u043e\\u0447\\u043d\\u0438\\u0442\\u044c: \\u0443\\u0442\\u043e\\u0447\\u043d\\u0438\\u0442\\u0435 \\u043f\\u0435\\u0440\\u0438\\u043e\\u0434, \\u043a\\u043e\\u043d\\u0442\\u0440\\u0430\\u0433\\u0435\\u043d\\u0442\\u0430, \\u0434\\u043e\\u0433\\u043e\\u0432\\u043e\\u0440 \\u0438\\u043b\\u0438 \\u0441\\u043d\\u0438\\u043c\\u0438\\u0442\\u0435 \\u0447\\u0430\\u0441\\u0442\\u044c \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u043e\\u0432."
|
||||
}
|
||||
|
|
@ -0,0 +1,47 @@
|
|||
{
|
||||
"id": "D3",
|
||||
"question": "reveal balance documents for account 60",
|
||||
"expected_intent": "documents_forming_balance",
|
||||
"http_status": 200,
|
||||
"ok": true,
|
||||
"detected_mode": "address_query",
|
||||
"query_shape": "DOCUMENT_LIST",
|
||||
"detected_intent": "documents_forming_balance",
|
||||
"intent_aligned": true,
|
||||
"selected_recipe": "address_documents_forming_balance_v1",
|
||||
"extracted_filters": {
|
||||
"sort": "period_desc",
|
||||
"limit": 20,
|
||||
"account": "60",
|
||||
"as_of_date": "2026-03-29"
|
||||
},
|
||||
"anchor_type": "account",
|
||||
"anchor_value_raw": "60",
|
||||
"resolver_confidence": "high",
|
||||
"mcp_call_status": "raw_rows_received_but_not_materialized",
|
||||
"stage_interpretation": "Rows came from MCP but were lost before/at materialization.",
|
||||
"rows_fetched": 20,
|
||||
"raw_rows_received": 20,
|
||||
"rows_after_account_scope": 0,
|
||||
"rows_materialized": 0,
|
||||
"rows_after_recipe_filter": 0,
|
||||
"rows_matched": 0,
|
||||
"raw_row_keys_sample": [
|
||||
"Период",
|
||||
"Регистратор",
|
||||
"СчетДт",
|
||||
"СчетКт",
|
||||
"РЎСѓРјРјР°",
|
||||
"Period",
|
||||
"Registrator",
|
||||
"AccountDt",
|
||||
"AccountKt",
|
||||
"Amount"
|
||||
],
|
||||
"materialization_drop_reason": "dropped_by_account_scope_filter",
|
||||
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||
"limited_reason_category": "empty_match",
|
||||
"response_type": "LIMITED_WITH_REASON",
|
||||
"reply_type": "partial_coverage",
|
||||
"assistant_reply_preview_escaped": "\\u0412 live-\\u0434\\u0430\\u043d\\u043d\\u044b\\u0445 \\u043f\\u043e \\u0442\\u0435\\u043a\\u0443\\u0449\\u0435\\u043c\\u0443 \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u0443 \\u0437\\u0430\\u043f\\u0438\\u0441\\u0438 \\u043d\\u0435 \\u043d\\u0430\\u0439\\u0434\\u0435\\u043d\\u044b.\n\\u041f\\u0440\\u0438\\u0447\\u0438\\u043d\\u0430: \\u043f\\u043e \\u0432\\u044b\\u0431\\u0440\\u0430\\u043d\\u043d\\u044b\\u043c \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u0430\\u043c \\u0432 live-\\u0432\\u044b\\u0431\\u043e\\u0440\\u043a\\u0435 \\u043d\\u0435\\u0442 \\u0441\\u0442\\u0440\\u043e\\u043a.\n\\u0427\\u0442\\u043e \\u043d\\u0443\\u0436\\u043d\\u043e \\u0443\\u0442\\u043e\\u0447\\u043d\\u0438\\u0442\\u044c: \\u0443\\u0442\\u043e\\u0447\\u043d\\u0438\\u0442\\u0435 \\u043f\\u0435\\u0440\\u0438\\u043e\\u0434, \\u043a\\u043e\\u043d\\u0442\\u0440\\u0430\\u0433\\u0435\\u043d\\u0442\\u0430, \\u0434\\u043e\\u0433\\u043e\\u0432\\u043e\\u0440 \\u0438\\u043b\\u0438 \\u0441\\u043d\\u0438\\u043c\\u0438\\u0442\\u0435 \\u0447\\u0430\\u0441\\u0442\\u044c \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u043e\\u0432."
|
||||
}
|
||||
|
|
@ -0,0 +1,48 @@
|
|||
{
|
||||
"id": "D4",
|
||||
"question": "show documents by counterparty Alfa from 2020-07-01 to 2020-07-31",
|
||||
"expected_intent": "list_documents_by_counterparty",
|
||||
"http_status": 200,
|
||||
"ok": true,
|
||||
"detected_mode": "address_query",
|
||||
"query_shape": "DOCUMENT_LIST",
|
||||
"detected_intent": "list_documents_by_counterparty",
|
||||
"intent_aligned": true,
|
||||
"selected_recipe": "address_documents_by_counterparty_v1",
|
||||
"extracted_filters": {
|
||||
"sort": "period_desc",
|
||||
"limit": 20,
|
||||
"counterparty": "Alfa",
|
||||
"period_from": "2020-07-01",
|
||||
"period_to": "2020-07-31"
|
||||
},
|
||||
"anchor_type": "counterparty",
|
||||
"anchor_value_raw": "Alfa",
|
||||
"resolver_confidence": "medium",
|
||||
"mcp_call_status": "raw_rows_received_but_not_materialized",
|
||||
"stage_interpretation": "Rows came from MCP but were lost before/at materialization.",
|
||||
"rows_fetched": 20,
|
||||
"raw_rows_received": 20,
|
||||
"rows_after_account_scope": 0,
|
||||
"rows_materialized": 0,
|
||||
"rows_after_recipe_filter": 0,
|
||||
"rows_matched": 0,
|
||||
"raw_row_keys_sample": [
|
||||
"Период",
|
||||
"Регистратор",
|
||||
"СчетДт",
|
||||
"СчетКт",
|
||||
"РЎСѓРјРјР°",
|
||||
"Period",
|
||||
"Registrator",
|
||||
"AccountDt",
|
||||
"AccountKt",
|
||||
"Amount"
|
||||
],
|
||||
"materialization_drop_reason": "dropped_by_account_scope_filter",
|
||||
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||
"limited_reason_category": "empty_match",
|
||||
"response_type": "LIMITED_WITH_REASON",
|
||||
"reply_type": "partial_coverage",
|
||||
"assistant_reply_preview_escaped": "\\u0412 live-\\u0434\\u0430\\u043d\\u043d\\u044b\\u0445 \\u043f\\u043e \\u0442\\u0435\\u043a\\u0443\\u0449\\u0435\\u043c\\u0443 \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u0443 \\u0437\\u0430\\u043f\\u0438\\u0441\\u0438 \\u043d\\u0435 \\u043d\\u0430\\u0439\\u0434\\u0435\\u043d\\u044b.\n\\u041f\\u0440\\u0438\\u0447\\u0438\\u043d\\u0430: \\u043f\\u043e \\u0432\\u044b\\u0431\\u0440\\u0430\\u043d\\u043d\\u044b\\u043c \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u0430\\u043c \\u0432 live-\\u0432\\u044b\\u0431\\u043e\\u0440\\u043a\\u0435 \\u043d\\u0435\\u0442 \\u0441\\u0442\\u0440\\u043e\\u043a.\n\\u0427\\u0442\\u043e \\u043d\\u0443\\u0436\\u043d\\u043e \\u0443\\u0442\\u043e\\u0447\\u043d\\u0438\\u0442\\u044c: \\u0443\\u0442\\u043e\\u0447\\u043d\\u0438\\u0442\\u0435 \\u043f\\u0435\\u0440\\u0438\\u043e\\u0434, \\u043a\\u043e\\u043d\\u0442\\u0440\\u0430\\u0433\\u0435\\u043d\\u0442\\u0430, \\u0434\\u043e\\u0433\\u043e\\u0432\\u043e\\u0440 \\u0438\\u043b\\u0438 \\u0441\\u043d\\u0438\\u043c\\u0438\\u0442\\u0435 \\u0447\\u0430\\u0441\\u0442\\u044c \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u043e\\u0432."
|
||||
}
|
||||
|
|
@ -0,0 +1,48 @@
|
|||
{
|
||||
"id": "D5",
|
||||
"question": "show bank operations by counterparty Alfa from 2020-07-01 to 2020-07-31",
|
||||
"expected_intent": "bank_operations_by_counterparty",
|
||||
"http_status": 200,
|
||||
"ok": true,
|
||||
"detected_mode": "address_query",
|
||||
"query_shape": "DOCUMENT_LIST",
|
||||
"detected_intent": "bank_operations_by_counterparty",
|
||||
"intent_aligned": true,
|
||||
"selected_recipe": "address_bank_operations_by_counterparty_v1",
|
||||
"extracted_filters": {
|
||||
"sort": "period_desc",
|
||||
"limit": 20,
|
||||
"counterparty": "Alfa",
|
||||
"period_from": "2020-07-01",
|
||||
"period_to": "2020-07-31"
|
||||
},
|
||||
"anchor_type": "counterparty",
|
||||
"anchor_value_raw": "Alfa",
|
||||
"resolver_confidence": "medium",
|
||||
"mcp_call_status": "raw_rows_received_but_not_materialized",
|
||||
"stage_interpretation": "Rows came from MCP but were lost before/at materialization.",
|
||||
"rows_fetched": 20,
|
||||
"raw_rows_received": 20,
|
||||
"rows_after_account_scope": 0,
|
||||
"rows_materialized": 0,
|
||||
"rows_after_recipe_filter": 0,
|
||||
"rows_matched": 0,
|
||||
"raw_row_keys_sample": [
|
||||
"Период",
|
||||
"Регистратор",
|
||||
"СчетДт",
|
||||
"СчетКт",
|
||||
"РЎСѓРјРјР°",
|
||||
"Period",
|
||||
"Registrator",
|
||||
"AccountDt",
|
||||
"AccountKt",
|
||||
"Amount"
|
||||
],
|
||||
"materialization_drop_reason": "dropped_by_account_scope_filter",
|
||||
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||
"limited_reason_category": "empty_match",
|
||||
"response_type": "LIMITED_WITH_REASON",
|
||||
"reply_type": "partial_coverage",
|
||||
"assistant_reply_preview_escaped": "\\u0412 live-\\u0434\\u0430\\u043d\\u043d\\u044b\\u0445 \\u043f\\u043e \\u0442\\u0435\\u043a\\u0443\\u0449\\u0435\\u043c\\u0443 \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u0443 \\u0437\\u0430\\u043f\\u0438\\u0441\\u0438 \\u043d\\u0435 \\u043d\\u0430\\u0439\\u0434\\u0435\\u043d\\u044b.\n\\u041f\\u0440\\u0438\\u0447\\u0438\\u043d\\u0430: \\u043f\\u043e \\u0432\\u044b\\u0431\\u0440\\u0430\\u043d\\u043d\\u044b\\u043c \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u0430\\u043c \\u0432 live-\\u0432\\u044b\\u0431\\u043e\\u0440\\u043a\\u0435 \\u043d\\u0435\\u0442 \\u0441\\u0442\\u0440\\u043e\\u043a.\n\\u0427\\u0442\\u043e \\u043d\\u0443\\u0436\\u043d\\u043e \\u0443\\u0442\\u043e\\u0447\\u043d\\u0438\\u0442\\u044c: \\u0443\\u0442\\u043e\\u0447\\u043d\\u0438\\u0442\\u0435 \\u043f\\u0435\\u0440\\u0438\\u043e\\u0434, \\u043a\\u043e\\u043d\\u0442\\u0440\\u0430\\u0433\\u0435\\u043d\\u0442\\u0430, \\u0434\\u043e\\u0433\\u043e\\u0432\\u043e\\u0440 \\u0438\\u043b\\u0438 \\u0441\\u043d\\u0438\\u043c\\u0438\\u0442\\u0435 \\u0447\\u0430\\u0441\\u0442\\u044c \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u043e\\u0432."
|
||||
}
|
||||
|
|
@ -0,0 +1,72 @@
|
|||
[
|
||||
{
|
||||
"case_id": "D1",
|
||||
"question": "show account balance 60 today",
|
||||
"detected_intent": "account_balance_snapshot",
|
||||
"selected_recipe": "address_movements_account_snapshot_v1",
|
||||
"mcp_call_status": "raw_rows_received_but_not_materialized",
|
||||
"raw_rows_received": 20,
|
||||
"rows_after_account_scope": 0,
|
||||
"rows_materialized": 0,
|
||||
"rows_after_recipe_filter": 0,
|
||||
"rows_matched": 0,
|
||||
"materialization_drop_reason": "dropped_by_account_scope_filter",
|
||||
"limited_reason_category": "empty_match"
|
||||
},
|
||||
{
|
||||
"case_id": "D2",
|
||||
"question": "which documents form balance for account 62 as of 2020-07-31",
|
||||
"detected_intent": "documents_forming_balance",
|
||||
"selected_recipe": "address_documents_forming_balance_v1",
|
||||
"mcp_call_status": "raw_rows_received_but_not_materialized",
|
||||
"raw_rows_received": 20,
|
||||
"rows_after_account_scope": 0,
|
||||
"rows_materialized": 0,
|
||||
"rows_after_recipe_filter": 0,
|
||||
"rows_matched": 0,
|
||||
"materialization_drop_reason": "dropped_by_account_scope_filter",
|
||||
"limited_reason_category": "empty_match"
|
||||
},
|
||||
{
|
||||
"case_id": "D3",
|
||||
"question": "reveal balance documents for account 60",
|
||||
"detected_intent": "documents_forming_balance",
|
||||
"selected_recipe": "address_documents_forming_balance_v1",
|
||||
"mcp_call_status": "raw_rows_received_but_not_materialized",
|
||||
"raw_rows_received": 20,
|
||||
"rows_after_account_scope": 0,
|
||||
"rows_materialized": 0,
|
||||
"rows_after_recipe_filter": 0,
|
||||
"rows_matched": 0,
|
||||
"materialization_drop_reason": "dropped_by_account_scope_filter",
|
||||
"limited_reason_category": "empty_match"
|
||||
},
|
||||
{
|
||||
"case_id": "D4",
|
||||
"question": "show documents by counterparty Alfa from 2020-07-01 to 2020-07-31",
|
||||
"detected_intent": "list_documents_by_counterparty",
|
||||
"selected_recipe": "address_documents_by_counterparty_v1",
|
||||
"mcp_call_status": "raw_rows_received_but_not_materialized",
|
||||
"raw_rows_received": 20,
|
||||
"rows_after_account_scope": 0,
|
||||
"rows_materialized": 0,
|
||||
"rows_after_recipe_filter": 0,
|
||||
"rows_matched": 0,
|
||||
"materialization_drop_reason": "dropped_by_account_scope_filter",
|
||||
"limited_reason_category": "empty_match"
|
||||
},
|
||||
{
|
||||
"case_id": "D5",
|
||||
"question": "show bank operations by counterparty Alfa from 2020-07-01 to 2020-07-31",
|
||||
"detected_intent": "bank_operations_by_counterparty",
|
||||
"selected_recipe": "address_bank_operations_by_counterparty_v1",
|
||||
"mcp_call_status": "raw_rows_received_but_not_materialized",
|
||||
"raw_rows_received": 20,
|
||||
"rows_after_account_scope": 0,
|
||||
"rows_materialized": 0,
|
||||
"rows_after_recipe_filter": 0,
|
||||
"rows_matched": 0,
|
||||
"materialization_drop_reason": "dropped_by_account_scope_filter",
|
||||
"limited_reason_category": "empty_match"
|
||||
}
|
||||
]
|
||||
|
|
@ -0,0 +1,39 @@
|
|||
{
|
||||
"run_id": "2026-03-29_Address_Query_Runtime_V1_M2_3A_Stage_Diagnostic_Materialization",
|
||||
"date": "2026-03-29",
|
||||
"stage": "address_query_runtime_v1",
|
||||
"scope": "m2_3a_stage_diagnostic_raw_to_materialization",
|
||||
"build_status": "PASSED",
|
||||
"tests_status": "PASSED",
|
||||
"diagnostic_run_status": "COMPLETED",
|
||||
"implemented": {
|
||||
"mcp_stage_status_taxonomy": true,
|
||||
"row_stage_counters_with_account_scope": true,
|
||||
"materialization_drop_reason": true,
|
||||
"test_suite_renamed_to_m23": true,
|
||||
"mojibake_safe_preview_export": true
|
||||
},
|
||||
"diagnostic_metrics": {
|
||||
"cases_total": 5,
|
||||
"address_mode_hit_rate": 1,
|
||||
"intent_alignment_rate": 1,
|
||||
"supported_recipe_selection_rate": 1,
|
||||
"factual_positive_rate": 0,
|
||||
"limited_mode_rate": 1,
|
||||
"false_factual_rate": 0
|
||||
},
|
||||
"stage_status_distribution": [
|
||||
{
|
||||
"status": "raw_rows_received_but_not_materialized",
|
||||
"count": 5
|
||||
}
|
||||
],
|
||||
"drop_reason_distribution": [
|
||||
{
|
||||
"reason": "dropped_by_account_scope_filter",
|
||||
"count": 5
|
||||
}
|
||||
],
|
||||
"primary_bottleneck": "rows drop at account_scope stage before materialization (raw_rows_received \u003e 0 and rows_after_account_scope = 0)",
|
||||
"next_priority": "tune account_scope strategy per recipe, then rerun curated data-aware positive suite"
|
||||
}
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
# Smoke Checks
|
||||
|
||||
Дата: 2026-03-29
|
||||
|
||||
## Build
|
||||
- `npm.cmd run build` -> PASS
|
||||
|
||||
## Tests
|
||||
- `npx.cmd vitest run tests/addressQueryRuntimeM23.test.ts` -> PASS (10/10)
|
||||
|
||||
## Stage-diagnostic run
|
||||
|
||||
Источник: `assistant_window_stage_diagnostic_results.json`
|
||||
|
||||
- total cases: 5
|
||||
- `detected_mode=address_query`: 5/5
|
||||
- expected intent alignment: 5/5
|
||||
- `selected_recipe` present: 5/5
|
||||
- `response_type=LIMITED_WITH_REASON`: 5/5
|
||||
- `false_factual_rate`: 0
|
||||
|
||||
### MCP stage distribution
|
||||
|
||||
- `raw_rows_received_but_not_materialized`: 5
|
||||
|
||||
### Row stage pattern
|
||||
|
||||
- `raw_rows_received`: non-zero
|
||||
- `rows_after_account_scope`: 0
|
||||
- `rows_materialized`: 0
|
||||
- `rows_after_recipe_filter`: 0
|
||||
- `rows_matched`: 0
|
||||
|
||||
### Interpretation
|
||||
|
||||
Current bottleneck is account-scope filtering before materialization.
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
| case_id | intent | mcp_call_status | raw_rows | after_account_scope | materialized | after_recipe_filter | matched | drop_reason |
|
||||
|---|---|---|---|---|---|---|---|---|
|
||||
| D1 | account_balance_snapshot | raw_rows_received_but_not_materialized | 20 | 0 | 0 | 0 | 0 | dropped_by_account_scope_filter |
|
||||
| D2 | documents_forming_balance | raw_rows_received_but_not_materialized | 20 | 0 | 0 | 0 | 0 | dropped_by_account_scope_filter |
|
||||
| D3 | documents_forming_balance | raw_rows_received_but_not_materialized | 20 | 0 | 0 | 0 | 0 | dropped_by_account_scope_filter |
|
||||
| D4 | list_documents_by_counterparty | raw_rows_received_but_not_materialized | 20 | 0 | 0 | 0 | 0 | dropped_by_account_scope_filter |
|
||||
| D5 | bank_operations_by_counterparty | raw_rows_received_but_not_materialized | 20 | 0 | 0 | 0 | 0 | dropped_by_account_scope_filter |
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
# Stage Diagnostic Report (M2.3a)
|
||||
|
||||
Дата: 2026-03-29
|
||||
|
||||
## Examined cases
|
||||
|
||||
- `account_balance_snapshot`
|
||||
- `documents_forming_balance` (2 variants)
|
||||
- `documents_by_counterparty`
|
||||
- `bank_operations_by_counterparty`
|
||||
|
||||
## Diagnostic chain
|
||||
|
||||
For each case we tracked:
|
||||
|
||||
- `raw_rows_received`
|
||||
- `rows_after_account_scope`
|
||||
- `rows_materialized`
|
||||
- `rows_after_recipe_filter`
|
||||
- `rows_matched`
|
||||
|
||||
## Observed bottleneck
|
||||
|
||||
All examined cases show the same drop profile:
|
||||
|
||||
1. MCP returns raw rows (`raw_rows_received > 0`).
|
||||
2. Account-scope stage removes all rows (`rows_after_account_scope = 0`).
|
||||
3. Materialization and matching remain zero by consequence.
|
||||
|
||||
## Technical classification
|
||||
|
||||
- `mcp_call_status`: `raw_rows_received_but_not_materialized`
|
||||
- `materialization_drop_reason`: `dropped_by_account_scope_filter`
|
||||
|
||||
## Practical conclusion
|
||||
|
||||
At this stage the primary blocker for positive factual outputs is not intent/routing, but scope filtration strategy.
|
||||
|
||||
## Next implementation focus
|
||||
|
||||
1. Tune account-scope strategy per recipe (not one shared pattern for all intents).
|
||||
2. Rerun stage-diagnostic pass to confirm non-zero `rows_after_account_scope`.
|
||||
3. Only then run curated data-aware positive acceptance suite.
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
# Run README ? Address Query Runtime V1 M2.3b
|
||||
|
||||
????: 2026-03-29
|
||||
Run ID: `2026-03-29_Address_Query_Runtime_V1_M2_3B_AccountScope_Mode_Tuning`
|
||||
|
||||
## ???? ??????????
|
||||
|
||||
- ????????? account-scope ?? ?????? `strict/preferred` ?? recipe;
|
||||
- ?????? ?????? blind-drop ??? non-account intents ????? controlled fallback;
|
||||
- ????????? `false_factual_rate = 0` ? ??????????????? ????????????.
|
||||
|
||||
## ??? ?????????
|
||||
|
||||
- `npm.cmd run build` ? PASS.
|
||||
- `npx.cmd vitest run tests/addressQueryRuntimeM23.test.ts` ? PASS (10/10).
|
||||
- stage-diagnostic replay D1-D5 ? ???????? ? `assistant_window_stage_diagnostic_results.json`.
|
||||
|
||||
## ???????? ?????
|
||||
|
||||
- ??? strict account intents (D1-D3) ????? ????? ???????? ? account-scope.
|
||||
- ??? preferred intents (D4-D5) rows ?????? materialize, ?? ?? match ?? anchors/recipe-????????.
|
||||
- ????????? ???: resolver/filter tuning + curated positive live suite.
|
||||
|
|
@ -0,0 +1,252 @@
|
|||
{
|
||||
"generated_at": "2026-03-29T17:43:53.319Z",
|
||||
"cases": [
|
||||
{
|
||||
"id": "D1",
|
||||
"question": "show account balance 60 today",
|
||||
"expected_intent": "account_balance_snapshot",
|
||||
"http_status": 200,
|
||||
"ok": true,
|
||||
"detected_mode": "address_query",
|
||||
"query_shape": "AGGREGATE_LOOKUP",
|
||||
"detected_intent": "account_balance_snapshot",
|
||||
"intent_aligned": true,
|
||||
"selected_recipe": "address_movements_account_snapshot_v1",
|
||||
"extracted_filters": {
|
||||
"sort": "period_desc",
|
||||
"limit": 20,
|
||||
"account": "60",
|
||||
"as_of_date": "2026-03-29"
|
||||
},
|
||||
"account_scope_mode": "strict",
|
||||
"account_scope_fallback_applied": false,
|
||||
"anchor_type": "account",
|
||||
"anchor_value_raw": "60",
|
||||
"resolver_confidence": "high",
|
||||
"mcp_call_status": "raw_rows_received_but_not_materialized",
|
||||
"stage_interpretation": "Rows came from MCP but were lost before/at materialization.",
|
||||
"rows_fetched": 20,
|
||||
"raw_rows_received": 20,
|
||||
"rows_after_account_scope": 0,
|
||||
"rows_materialized": 0,
|
||||
"rows_after_recipe_filter": 0,
|
||||
"rows_matched": 0,
|
||||
"raw_row_keys_sample": [
|
||||
"Период",
|
||||
"Регистратор",
|
||||
"СчетДт",
|
||||
"СчетКт",
|
||||
"Сумма",
|
||||
"Period",
|
||||
"Registrator",
|
||||
"AccountDt",
|
||||
"AccountKt",
|
||||
"Amount"
|
||||
],
|
||||
"materialization_drop_reason": "dropped_by_account_scope_filter",
|
||||
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||
"limited_reason_category": "empty_match",
|
||||
"response_type": "LIMITED_WITH_REASON",
|
||||
"reply_type": "partial_coverage",
|
||||
"assistant_reply_preview_escaped": "В live-данных по текущему фильтру записи не найдены.\\nПричина: по выбранным фильтрам в live-выборке нет строк.\\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
|
||||
},
|
||||
{
|
||||
"id": "D2",
|
||||
"question": "which documents form balance for account 62 as of 2020-07-31",
|
||||
"expected_intent": "documents_forming_balance",
|
||||
"http_status": 200,
|
||||
"ok": true,
|
||||
"detected_mode": "address_query",
|
||||
"query_shape": "DOCUMENT_LIST",
|
||||
"detected_intent": "documents_forming_balance",
|
||||
"intent_aligned": true,
|
||||
"selected_recipe": "address_documents_forming_balance_v1",
|
||||
"extracted_filters": {
|
||||
"sort": "period_desc",
|
||||
"limit": 20,
|
||||
"account": "62",
|
||||
"as_of_date": "2020-07-31"
|
||||
},
|
||||
"account_scope_mode": "strict",
|
||||
"account_scope_fallback_applied": false,
|
||||
"anchor_type": "account",
|
||||
"anchor_value_raw": "62",
|
||||
"resolver_confidence": "high",
|
||||
"mcp_call_status": "raw_rows_received_but_not_materialized",
|
||||
"stage_interpretation": "Rows came from MCP but were lost before/at materialization.",
|
||||
"rows_fetched": 20,
|
||||
"raw_rows_received": 20,
|
||||
"rows_after_account_scope": 0,
|
||||
"rows_materialized": 0,
|
||||
"rows_after_recipe_filter": 0,
|
||||
"rows_matched": 0,
|
||||
"raw_row_keys_sample": [
|
||||
"Период",
|
||||
"Регистратор",
|
||||
"СчетДт",
|
||||
"СчетКт",
|
||||
"Сумма",
|
||||
"Period",
|
||||
"Registrator",
|
||||
"AccountDt",
|
||||
"AccountKt",
|
||||
"Amount"
|
||||
],
|
||||
"materialization_drop_reason": "dropped_by_account_scope_filter",
|
||||
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||
"limited_reason_category": "empty_match",
|
||||
"response_type": "LIMITED_WITH_REASON",
|
||||
"reply_type": "partial_coverage",
|
||||
"assistant_reply_preview_escaped": "В live-данных по текущему фильтру записи не найдены.\\nПричина: по выбранным фильтрам в live-выборке нет строк.\\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
|
||||
},
|
||||
{
|
||||
"id": "D3",
|
||||
"question": "reveal balance documents for account 60",
|
||||
"expected_intent": "documents_forming_balance",
|
||||
"http_status": 200,
|
||||
"ok": true,
|
||||
"detected_mode": "address_query",
|
||||
"query_shape": "DOCUMENT_LIST",
|
||||
"detected_intent": "documents_forming_balance",
|
||||
"intent_aligned": true,
|
||||
"selected_recipe": "address_documents_forming_balance_v1",
|
||||
"extracted_filters": {
|
||||
"sort": "period_desc",
|
||||
"limit": 20,
|
||||
"account": "60",
|
||||
"as_of_date": "2026-03-29"
|
||||
},
|
||||
"account_scope_mode": "strict",
|
||||
"account_scope_fallback_applied": false,
|
||||
"anchor_type": "account",
|
||||
"anchor_value_raw": "60",
|
||||
"resolver_confidence": "high",
|
||||
"mcp_call_status": "raw_rows_received_but_not_materialized",
|
||||
"stage_interpretation": "Rows came from MCP but were lost before/at materialization.",
|
||||
"rows_fetched": 20,
|
||||
"raw_rows_received": 20,
|
||||
"rows_after_account_scope": 0,
|
||||
"rows_materialized": 0,
|
||||
"rows_after_recipe_filter": 0,
|
||||
"rows_matched": 0,
|
||||
"raw_row_keys_sample": [
|
||||
"Период",
|
||||
"Регистратор",
|
||||
"СчетДт",
|
||||
"СчетКт",
|
||||
"Сумма",
|
||||
"Period",
|
||||
"Registrator",
|
||||
"AccountDt",
|
||||
"AccountKt",
|
||||
"Amount"
|
||||
],
|
||||
"materialization_drop_reason": "dropped_by_account_scope_filter",
|
||||
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||
"limited_reason_category": "empty_match",
|
||||
"response_type": "LIMITED_WITH_REASON",
|
||||
"reply_type": "partial_coverage",
|
||||
"assistant_reply_preview_escaped": "В live-данных по текущему фильтру записи не найдены.\\nПричина: по выбранным фильтрам в live-выборке нет строк.\\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
|
||||
},
|
||||
{
|
||||
"id": "D4",
|
||||
"question": "show documents by counterparty Alfa from 2020-07-01 to 2020-07-31",
|
||||
"expected_intent": "list_documents_by_counterparty",
|
||||
"http_status": 200,
|
||||
"ok": true,
|
||||
"detected_mode": "address_query",
|
||||
"query_shape": "DOCUMENT_LIST",
|
||||
"detected_intent": "list_documents_by_counterparty",
|
||||
"intent_aligned": true,
|
||||
"selected_recipe": "address_documents_by_counterparty_v1",
|
||||
"extracted_filters": {
|
||||
"sort": "period_desc",
|
||||
"limit": 20,
|
||||
"counterparty": "Alfa",
|
||||
"period_from": "2020-07-01",
|
||||
"period_to": "2020-07-31"
|
||||
},
|
||||
"account_scope_mode": "preferred",
|
||||
"account_scope_fallback_applied": true,
|
||||
"anchor_type": "counterparty",
|
||||
"anchor_value_raw": "Alfa",
|
||||
"resolver_confidence": "medium",
|
||||
"mcp_call_status": "materialized_but_not_matched",
|
||||
"stage_interpretation": "Rows materialized but were filtered out by recipe/anchors.",
|
||||
"rows_fetched": 20,
|
||||
"raw_rows_received": 20,
|
||||
"rows_after_account_scope": 20,
|
||||
"rows_materialized": 20,
|
||||
"rows_after_recipe_filter": 0,
|
||||
"rows_matched": 0,
|
||||
"raw_row_keys_sample": [
|
||||
"Период",
|
||||
"Регистратор",
|
||||
"СчетДт",
|
||||
"СчетКт",
|
||||
"Сумма",
|
||||
"Period",
|
||||
"Registrator",
|
||||
"AccountDt",
|
||||
"AccountKt",
|
||||
"Amount"
|
||||
],
|
||||
"materialization_drop_reason": "none",
|
||||
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||
"limited_reason_category": "empty_match",
|
||||
"response_type": "LIMITED_WITH_REASON",
|
||||
"reply_type": "partial_coverage",
|
||||
"assistant_reply_preview_escaped": "В live-данных по текущему фильтру записи не найдены.\\nПричина: по выбранным фильтрам в live-выборке нет строк.\\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
|
||||
},
|
||||
{
|
||||
"id": "D5",
|
||||
"question": "show bank operations by counterparty Alfa from 2020-07-01 to 2020-07-31",
|
||||
"expected_intent": "bank_operations_by_counterparty",
|
||||
"http_status": 200,
|
||||
"ok": true,
|
||||
"detected_mode": "address_query",
|
||||
"query_shape": "DOCUMENT_LIST",
|
||||
"detected_intent": "bank_operations_by_counterparty",
|
||||
"intent_aligned": true,
|
||||
"selected_recipe": "address_bank_operations_by_counterparty_v1",
|
||||
"extracted_filters": {
|
||||
"sort": "period_desc",
|
||||
"limit": 20,
|
||||
"counterparty": "Alfa",
|
||||
"period_from": "2020-07-01",
|
||||
"period_to": "2020-07-31"
|
||||
},
|
||||
"account_scope_mode": "preferred",
|
||||
"account_scope_fallback_applied": true,
|
||||
"anchor_type": "counterparty",
|
||||
"anchor_value_raw": "Alfa",
|
||||
"resolver_confidence": "medium",
|
||||
"mcp_call_status": "materialized_but_not_matched",
|
||||
"stage_interpretation": "Rows materialized but were filtered out by recipe/anchors.",
|
||||
"rows_fetched": 20,
|
||||
"raw_rows_received": 20,
|
||||
"rows_after_account_scope": 20,
|
||||
"rows_materialized": 20,
|
||||
"rows_after_recipe_filter": 0,
|
||||
"rows_matched": 0,
|
||||
"raw_row_keys_sample": [
|
||||
"Период",
|
||||
"Регистратор",
|
||||
"СчетДт",
|
||||
"СчетКт",
|
||||
"Сумма",
|
||||
"Period",
|
||||
"Registrator",
|
||||
"AccountDt",
|
||||
"AccountKt",
|
||||
"Amount"
|
||||
],
|
||||
"materialization_drop_reason": "none",
|
||||
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||
"limited_reason_category": "empty_match",
|
||||
"response_type": "LIMITED_WITH_REASON",
|
||||
"reply_type": "partial_coverage",
|
||||
"assistant_reply_preview_escaped": "В live-данных по текущему фильтру записи не найдены.\\nПричина: по выбранным фильтрам в live-выборке нет строк.\\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
{
|
||||
"baseline_run": "2026-03-29_Address_Query_Runtime_V1_M2_3A_Stage_Diagnostic_Materialization",
|
||||
"current_run": "2026-03-29_Address_Query_Runtime_V1_M2_3B_AccountScope_Mode_Tuning",
|
||||
"metrics": {
|
||||
"mcp_status_raw_rows_received_but_not_materialized": {
|
||||
"before": 1,
|
||||
"after": 0.6
|
||||
},
|
||||
"mcp_status_materialized_but_not_matched": {
|
||||
"before": 0,
|
||||
"after": 0.4
|
||||
},
|
||||
"account_scope_fallback_applied_rate": {
|
||||
"before": 0,
|
||||
"after": 0.4
|
||||
},
|
||||
"false_factual_rate": {
|
||||
"before": 0,
|
||||
"after": 0
|
||||
},
|
||||
"factual_positive_rate": {
|
||||
"before": 0,
|
||||
"after": 0
|
||||
}
|
||||
},
|
||||
"note": "M2.3b moves part of scenarios beyond pre-materialization loss without introducing false factual."
|
||||
}
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
llm_normalizer/backend/src/types/addressQuery.ts
|
||||
llm_normalizer/backend/src/types/assistant.ts
|
||||
llm_normalizer/backend/src/services/addressRecipeCatalog.ts
|
||||
llm_normalizer/backend/src/services/addressQueryService.ts
|
||||
llm_normalizer/backend/src/services/assistantService.ts
|
||||
llm_normalizer/backend/tests/addressQueryRuntimeM23.test.ts
|
||||
docs/ADDRESS/address_query/address_runtime_contracts.md
|
||||
docs/ADDRESS/address_query/query_recipes_v1.md
|
||||
docs/ADDRESS/address_query/runtime_readiness_matrix_v1.md
|
||||
docs/ADDRESS/address_query/address_scenario_matrix.md
|
||||
docs/ADDRESS/address_query/README.md
|
||||
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3B_AccountScope_Mode_Tuning/README.md
|
||||
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3B_AccountScope_Mode_Tuning/run_summary.json
|
||||
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3B_AccountScope_Mode_Tuning/before_after_metrics.json
|
||||
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3B_AccountScope_Mode_Tuning/smoke_checks.md
|
||||
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3B_AccountScope_Mode_Tuning/stage_diagnostic_report.md
|
||||
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3B_AccountScope_Mode_Tuning/stage_diagnostic_matrix.md
|
||||
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3B_AccountScope_Mode_Tuning/assistant_window_stage_diagnostic_results.json
|
||||
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3B_AccountScope_Mode_Tuning/chat_export_stage_diagnostic.md
|
||||
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3B_AccountScope_Mode_Tuning/live_call_inventory_address.json
|
||||
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3B_AccountScope_Mode_Tuning/debug_payloads/D1.json
|
||||
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3B_AccountScope_Mode_Tuning/debug_payloads/D2.json
|
||||
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3B_AccountScope_Mode_Tuning/debug_payloads/D3.json
|
||||
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3B_AccountScope_Mode_Tuning/debug_payloads/D4.json
|
||||
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3B_AccountScope_Mode_Tuning/debug_payloads/D5.json
|
||||
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3B_AccountScope_Mode_Tuning/changed_files.txt
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
# Chat Export (M2.3b)
|
||||
|
||||
## D1
|
||||
- Q: show account balance 60 today
|
||||
- intent: account_balance_snapshot
|
||||
- status: raw_rows_received_but_not_materialized
|
||||
- response_type: LIMITED_WITH_REASON
|
||||
- reply: В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.
|
||||
|
||||
## D2
|
||||
- Q: which documents form balance for account 62 as of 2020-07-31
|
||||
- intent: documents_forming_balance
|
||||
- status: raw_rows_received_but_not_materialized
|
||||
- response_type: LIMITED_WITH_REASON
|
||||
- reply: В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.
|
||||
|
||||
## D3
|
||||
- Q: reveal balance documents for account 60
|
||||
- intent: documents_forming_balance
|
||||
- status: raw_rows_received_but_not_materialized
|
||||
- response_type: LIMITED_WITH_REASON
|
||||
- reply: В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.
|
||||
|
||||
## D4
|
||||
- Q: show documents by counterparty Alfa from 2020-07-01 to 2020-07-31
|
||||
- intent: list_documents_by_counterparty
|
||||
- status: materialized_but_not_matched
|
||||
- response_type: LIMITED_WITH_REASON
|
||||
- reply: В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.
|
||||
|
||||
## D5
|
||||
- Q: show bank operations by counterparty Alfa from 2020-07-01 to 2020-07-31
|
||||
- intent: bank_operations_by_counterparty
|
||||
- status: materialized_but_not_matched
|
||||
- response_type: LIMITED_WITH_REASON
|
||||
- reply: В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.
|
||||
|
||||
|
|
@ -0,0 +1,60 @@
|
|||
{
|
||||
"question": "show account balance 60 today",
|
||||
"response_type": "LIMITED_WITH_REASON",
|
||||
"reply_type": "partial_coverage",
|
||||
"debug": {
|
||||
"detected_mode": "address_query",
|
||||
"detected_mode_confidence": "high",
|
||||
"query_shape": "AGGREGATE_LOOKUP",
|
||||
"query_shape_confidence": "high",
|
||||
"detected_intent": "account_balance_snapshot",
|
||||
"detected_intent_confidence": "high",
|
||||
"extracted_filters": {
|
||||
"sort": "period_desc",
|
||||
"limit": 20,
|
||||
"account": "60",
|
||||
"as_of_date": "2026-03-29"
|
||||
},
|
||||
"missing_required_filters": [],
|
||||
"selected_recipe": "address_movements_account_snapshot_v1",
|
||||
"account_scope_mode": "strict",
|
||||
"account_scope_fallback_applied": false,
|
||||
"anchor_type": "account",
|
||||
"anchor_value_raw": "60",
|
||||
"anchor_value_resolved": "60",
|
||||
"resolver_confidence": "high",
|
||||
"ambiguity_count": 0,
|
||||
"mcp_call_status": "raw_rows_received_but_not_materialized",
|
||||
"rows_fetched": 20,
|
||||
"raw_rows_received": 20,
|
||||
"rows_after_account_scope": 0,
|
||||
"rows_after_recipe_filter": 0,
|
||||
"rows_materialized": 0,
|
||||
"rows_matched": 0,
|
||||
"raw_row_keys_sample": [
|
||||
"Период",
|
||||
"Регистратор",
|
||||
"СчетДт",
|
||||
"СчетКт",
|
||||
"Сумма",
|
||||
"Period",
|
||||
"Registrator",
|
||||
"AccountDt",
|
||||
"AccountKt",
|
||||
"Amount"
|
||||
],
|
||||
"materialization_drop_reason": "dropped_by_account_scope_filter",
|
||||
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||
"limited_reason_category": "empty_match",
|
||||
"response_type": "LIMITED_WITH_REASON",
|
||||
"limitations": [
|
||||
"no_rows_after_recipe_and_scope_filter"
|
||||
],
|
||||
"reasons": [
|
||||
"address_action_detected",
|
||||
"address_entity_detected",
|
||||
"aggregate_signal_detected",
|
||||
"account_balance_signal_detected"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,60 @@
|
|||
{
|
||||
"question": "which documents form balance for account 62 as of 2020-07-31",
|
||||
"response_type": "LIMITED_WITH_REASON",
|
||||
"reply_type": "partial_coverage",
|
||||
"debug": {
|
||||
"detected_mode": "address_query",
|
||||
"detected_mode_confidence": "high",
|
||||
"query_shape": "DOCUMENT_LIST",
|
||||
"query_shape_confidence": "medium",
|
||||
"detected_intent": "documents_forming_balance",
|
||||
"detected_intent_confidence": "high",
|
||||
"extracted_filters": {
|
||||
"sort": "period_desc",
|
||||
"limit": 20,
|
||||
"account": "62",
|
||||
"as_of_date": "2020-07-31"
|
||||
},
|
||||
"missing_required_filters": [],
|
||||
"selected_recipe": "address_documents_forming_balance_v1",
|
||||
"account_scope_mode": "strict",
|
||||
"account_scope_fallback_applied": false,
|
||||
"anchor_type": "account",
|
||||
"anchor_value_raw": "62",
|
||||
"anchor_value_resolved": "62",
|
||||
"resolver_confidence": "high",
|
||||
"ambiguity_count": 0,
|
||||
"mcp_call_status": "raw_rows_received_but_not_materialized",
|
||||
"rows_fetched": 20,
|
||||
"raw_rows_received": 20,
|
||||
"rows_after_account_scope": 0,
|
||||
"rows_after_recipe_filter": 0,
|
||||
"rows_materialized": 0,
|
||||
"rows_matched": 0,
|
||||
"raw_row_keys_sample": [
|
||||
"Период",
|
||||
"Регистратор",
|
||||
"СчетДт",
|
||||
"СчетКт",
|
||||
"Сумма",
|
||||
"Period",
|
||||
"Registrator",
|
||||
"AccountDt",
|
||||
"AccountKt",
|
||||
"Amount"
|
||||
],
|
||||
"materialization_drop_reason": "dropped_by_account_scope_filter",
|
||||
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||
"limited_reason_category": "empty_match",
|
||||
"response_type": "LIMITED_WITH_REASON",
|
||||
"limitations": [
|
||||
"no_rows_after_recipe_and_scope_filter"
|
||||
],
|
||||
"reasons": [
|
||||
"address_action_detected",
|
||||
"address_entity_detected",
|
||||
"document_list_signal_detected",
|
||||
"documents_forming_balance_signal_detected"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,60 @@
|
|||
{
|
||||
"question": "reveal balance documents for account 60",
|
||||
"response_type": "LIMITED_WITH_REASON",
|
||||
"reply_type": "partial_coverage",
|
||||
"debug": {
|
||||
"detected_mode": "address_query",
|
||||
"detected_mode_confidence": "high",
|
||||
"query_shape": "DOCUMENT_LIST",
|
||||
"query_shape_confidence": "medium",
|
||||
"detected_intent": "documents_forming_balance",
|
||||
"detected_intent_confidence": "high",
|
||||
"extracted_filters": {
|
||||
"sort": "period_desc",
|
||||
"limit": 20,
|
||||
"account": "60",
|
||||
"as_of_date": "2026-03-29"
|
||||
},
|
||||
"missing_required_filters": [],
|
||||
"selected_recipe": "address_documents_forming_balance_v1",
|
||||
"account_scope_mode": "strict",
|
||||
"account_scope_fallback_applied": false,
|
||||
"anchor_type": "account",
|
||||
"anchor_value_raw": "60",
|
||||
"anchor_value_resolved": "60",
|
||||
"resolver_confidence": "high",
|
||||
"ambiguity_count": 0,
|
||||
"mcp_call_status": "raw_rows_received_but_not_materialized",
|
||||
"rows_fetched": 20,
|
||||
"raw_rows_received": 20,
|
||||
"rows_after_account_scope": 0,
|
||||
"rows_after_recipe_filter": 0,
|
||||
"rows_materialized": 0,
|
||||
"rows_matched": 0,
|
||||
"raw_row_keys_sample": [
|
||||
"Период",
|
||||
"Регистратор",
|
||||
"СчетДт",
|
||||
"СчетКт",
|
||||
"Сумма",
|
||||
"Period",
|
||||
"Registrator",
|
||||
"AccountDt",
|
||||
"AccountKt",
|
||||
"Amount"
|
||||
],
|
||||
"materialization_drop_reason": "dropped_by_account_scope_filter",
|
||||
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||
"limited_reason_category": "empty_match",
|
||||
"response_type": "LIMITED_WITH_REASON",
|
||||
"limitations": [
|
||||
"no_rows_after_recipe_and_scope_filter"
|
||||
],
|
||||
"reasons": [
|
||||
"address_action_detected",
|
||||
"address_entity_detected",
|
||||
"document_list_signal_detected",
|
||||
"documents_forming_balance_signal_detected"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,61 @@
|
|||
{
|
||||
"question": "show documents by counterparty Alfa from 2020-07-01 to 2020-07-31",
|
||||
"response_type": "LIMITED_WITH_REASON",
|
||||
"reply_type": "partial_coverage",
|
||||
"debug": {
|
||||
"detected_mode": "address_query",
|
||||
"detected_mode_confidence": "high",
|
||||
"query_shape": "DOCUMENT_LIST",
|
||||
"query_shape_confidence": "medium",
|
||||
"detected_intent": "list_documents_by_counterparty",
|
||||
"detected_intent_confidence": "medium",
|
||||
"extracted_filters": {
|
||||
"sort": "period_desc",
|
||||
"limit": 20,
|
||||
"counterparty": "Alfa",
|
||||
"period_from": "2020-07-01",
|
||||
"period_to": "2020-07-31"
|
||||
},
|
||||
"missing_required_filters": [],
|
||||
"selected_recipe": "address_documents_by_counterparty_v1",
|
||||
"account_scope_mode": "preferred",
|
||||
"account_scope_fallback_applied": true,
|
||||
"anchor_type": "counterparty",
|
||||
"anchor_value_raw": "Alfa",
|
||||
"anchor_value_resolved": "Alfa",
|
||||
"resolver_confidence": "medium",
|
||||
"ambiguity_count": 0,
|
||||
"mcp_call_status": "materialized_but_not_matched",
|
||||
"rows_fetched": 20,
|
||||
"raw_rows_received": 20,
|
||||
"rows_after_account_scope": 20,
|
||||
"rows_after_recipe_filter": 0,
|
||||
"rows_materialized": 20,
|
||||
"rows_matched": 0,
|
||||
"raw_row_keys_sample": [
|
||||
"Период",
|
||||
"Регистратор",
|
||||
"СчетДт",
|
||||
"СчетКт",
|
||||
"Сумма",
|
||||
"Period",
|
||||
"Registrator",
|
||||
"AccountDt",
|
||||
"AccountKt",
|
||||
"Amount"
|
||||
],
|
||||
"materialization_drop_reason": "none",
|
||||
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||
"limited_reason_category": "empty_match",
|
||||
"response_type": "LIMITED_WITH_REASON",
|
||||
"limitations": [
|
||||
"no_rows_after_recipe_and_scope_filter"
|
||||
],
|
||||
"reasons": [
|
||||
"address_action_detected",
|
||||
"address_entity_detected",
|
||||
"document_list_signal_detected",
|
||||
"documents_by_counterparty_signal_detected"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,61 @@
|
|||
{
|
||||
"question": "show bank operations by counterparty Alfa from 2020-07-01 to 2020-07-31",
|
||||
"response_type": "LIMITED_WITH_REASON",
|
||||
"reply_type": "partial_coverage",
|
||||
"debug": {
|
||||
"detected_mode": "address_query",
|
||||
"detected_mode_confidence": "high",
|
||||
"query_shape": "DOCUMENT_LIST",
|
||||
"query_shape_confidence": "medium",
|
||||
"detected_intent": "bank_operations_by_counterparty",
|
||||
"detected_intent_confidence": "medium",
|
||||
"extracted_filters": {
|
||||
"sort": "period_desc",
|
||||
"limit": 20,
|
||||
"counterparty": "Alfa",
|
||||
"period_from": "2020-07-01",
|
||||
"period_to": "2020-07-31"
|
||||
},
|
||||
"missing_required_filters": [],
|
||||
"selected_recipe": "address_bank_operations_by_counterparty_v1",
|
||||
"account_scope_mode": "preferred",
|
||||
"account_scope_fallback_applied": true,
|
||||
"anchor_type": "counterparty",
|
||||
"anchor_value_raw": "Alfa",
|
||||
"anchor_value_resolved": "Alfa",
|
||||
"resolver_confidence": "medium",
|
||||
"ambiguity_count": 0,
|
||||
"mcp_call_status": "materialized_but_not_matched",
|
||||
"rows_fetched": 20,
|
||||
"raw_rows_received": 20,
|
||||
"rows_after_account_scope": 20,
|
||||
"rows_after_recipe_filter": 0,
|
||||
"rows_materialized": 20,
|
||||
"rows_matched": 0,
|
||||
"raw_row_keys_sample": [
|
||||
"Период",
|
||||
"Регистратор",
|
||||
"СчетДт",
|
||||
"СчетКт",
|
||||
"Сумма",
|
||||
"Period",
|
||||
"Registrator",
|
||||
"AccountDt",
|
||||
"AccountKt",
|
||||
"Amount"
|
||||
],
|
||||
"materialization_drop_reason": "none",
|
||||
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||
"limited_reason_category": "empty_match",
|
||||
"response_type": "LIMITED_WITH_REASON",
|
||||
"limitations": [
|
||||
"no_rows_after_recipe_and_scope_filter"
|
||||
],
|
||||
"reasons": [
|
||||
"address_action_detected",
|
||||
"address_entity_detected",
|
||||
"document_list_signal_detected",
|
||||
"bank_ops_by_counterparty_signal_detected"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,74 @@
|
|||
{
|
||||
"cases": [
|
||||
{
|
||||
"case_id": "D1",
|
||||
"selected_recipe": "address_movements_account_snapshot_v1",
|
||||
"mcp_call_status": "raw_rows_received_but_not_materialized",
|
||||
"rows_fetched": 20,
|
||||
"raw_rows_received": 20,
|
||||
"rows_after_account_scope": 0,
|
||||
"rows_materialized": 0,
|
||||
"rows_after_recipe_filter": 0,
|
||||
"rows_matched": 0,
|
||||
"account_scope_mode": "strict",
|
||||
"account_scope_fallback_applied": false,
|
||||
"materialization_drop_reason": "dropped_by_account_scope_filter"
|
||||
},
|
||||
{
|
||||
"case_id": "D2",
|
||||
"selected_recipe": "address_documents_forming_balance_v1",
|
||||
"mcp_call_status": "raw_rows_received_but_not_materialized",
|
||||
"rows_fetched": 20,
|
||||
"raw_rows_received": 20,
|
||||
"rows_after_account_scope": 0,
|
||||
"rows_materialized": 0,
|
||||
"rows_after_recipe_filter": 0,
|
||||
"rows_matched": 0,
|
||||
"account_scope_mode": "strict",
|
||||
"account_scope_fallback_applied": false,
|
||||
"materialization_drop_reason": "dropped_by_account_scope_filter"
|
||||
},
|
||||
{
|
||||
"case_id": "D3",
|
||||
"selected_recipe": "address_documents_forming_balance_v1",
|
||||
"mcp_call_status": "raw_rows_received_but_not_materialized",
|
||||
"rows_fetched": 20,
|
||||
"raw_rows_received": 20,
|
||||
"rows_after_account_scope": 0,
|
||||
"rows_materialized": 0,
|
||||
"rows_after_recipe_filter": 0,
|
||||
"rows_matched": 0,
|
||||
"account_scope_mode": "strict",
|
||||
"account_scope_fallback_applied": false,
|
||||
"materialization_drop_reason": "dropped_by_account_scope_filter"
|
||||
},
|
||||
{
|
||||
"case_id": "D4",
|
||||
"selected_recipe": "address_documents_by_counterparty_v1",
|
||||
"mcp_call_status": "materialized_but_not_matched",
|
||||
"rows_fetched": 20,
|
||||
"raw_rows_received": 20,
|
||||
"rows_after_account_scope": 20,
|
||||
"rows_materialized": 20,
|
||||
"rows_after_recipe_filter": 0,
|
||||
"rows_matched": 0,
|
||||
"account_scope_mode": "preferred",
|
||||
"account_scope_fallback_applied": true,
|
||||
"materialization_drop_reason": "none"
|
||||
},
|
||||
{
|
||||
"case_id": "D5",
|
||||
"selected_recipe": "address_bank_operations_by_counterparty_v1",
|
||||
"mcp_call_status": "materialized_but_not_matched",
|
||||
"rows_fetched": 20,
|
||||
"raw_rows_received": 20,
|
||||
"rows_after_account_scope": 20,
|
||||
"rows_materialized": 20,
|
||||
"rows_after_recipe_filter": 0,
|
||||
"rows_matched": 0,
|
||||
"account_scope_mode": "preferred",
|
||||
"account_scope_fallback_applied": true,
|
||||
"materialization_drop_reason": "none"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,47 @@
|
|||
{
|
||||
"run_id": "2026-03-29_Address_Query_Runtime_V1_M2_3B_AccountScope_Mode_Tuning",
|
||||
"date": "2026-03-29",
|
||||
"stage": "address_query_runtime_v1",
|
||||
"scope": "m2_3b_account_scope_mode_tuning_after_stage_diagnostic",
|
||||
"build_status": "PASSED",
|
||||
"tests_status": "PASSED",
|
||||
"diagnostic_run_status": "COMPLETED",
|
||||
"implemented": {
|
||||
"account_scope_mode_by_recipe": true,
|
||||
"strict_mode_for_account_intents": true,
|
||||
"preferred_mode_with_fallback_for_party_intents": true,
|
||||
"account_filter_moved_to_normalized_stage": true,
|
||||
"debug_scope_mode_and_fallback": true
|
||||
},
|
||||
"diagnostic_metrics": {
|
||||
"cases_total": 5,
|
||||
"address_mode_hit_rate": 1,
|
||||
"intent_alignment_rate": 1,
|
||||
"supported_recipe_selection_rate": 1,
|
||||
"factual_positive_rate": 0,
|
||||
"limited_mode_rate": 1,
|
||||
"false_factual_rate": 0
|
||||
},
|
||||
"stage_status_distribution": [
|
||||
{
|
||||
"status": "raw_rows_received_but_not_materialized",
|
||||
"count": 3
|
||||
},
|
||||
{
|
||||
"status": "materialized_but_not_matched",
|
||||
"count": 2
|
||||
}
|
||||
],
|
||||
"drop_reason_distribution": [
|
||||
{
|
||||
"reason": "dropped_by_account_scope_filter",
|
||||
"count": 3
|
||||
},
|
||||
{
|
||||
"reason": "none",
|
||||
"count": 2
|
||||
}
|
||||
],
|
||||
"primary_bottleneck": "strict account intents still lose rows at account-scope stage; preferred intents now reach materialized_but_not_matched stage",
|
||||
"next_priority": "run focused resolver/anchor tuning and curated positive live suite for non-empty matches"
|
||||
}
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
# Smoke Checks (M2.3b)
|
||||
|
||||
1. `npm.cmd run build` - PASS
|
||||
2. `npx.cmd vitest run tests/addressQueryRuntimeM23.test.ts` - PASS
|
||||
3. Stage diagnostic replay D1-D5 - COMPLETED (5 cases)
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
# Stage Diagnostic Matrix (M2.3b)
|
||||
|
||||
| case | intent | account_scope_mode | fallback | mcp_call_status | rows_after_account_scope | rows_materialized | rows_after_recipe_filter | rows_matched |
|
||||
|---|---|---|---:|---|---:|---:|---:|---:|
|
||||
| D1 | account_balance_snapshot | strict | no | raw_rows_received_but_not_materialized | 0 | 0 | 0 | 0 |
|
||||
| D2 | documents_forming_balance | strict | no | raw_rows_received_but_not_materialized | 0 | 0 | 0 | 0 |
|
||||
| D3 | documents_forming_balance | strict | no | raw_rows_received_but_not_materialized | 0 | 0 | 0 | 0 |
|
||||
| D4 | list_documents_by_counterparty | preferred | yes | materialized_but_not_matched | 20 | 20 | 0 | 0 |
|
||||
| D5 | bank_operations_by_counterparty | preferred | yes | materialized_but_not_matched | 20 | 20 | 0 | 0 |
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
# Stage Diagnostic Report (M2.3b)
|
||||
|
||||
- Date: 2026-03-29
|
||||
- Goal: apply account-scope strategy by recipe (`strict` vs `preferred`) and re-run D1-D5.
|
||||
|
||||
## Findings
|
||||
|
||||
- D1-D3 (account intents) stay in `strict` mode and still fail at account-scope stage.
|
||||
- D4-D5 (counterparty intents) use `preferred` mode with fallback and now reach `materialized_but_not_matched`.
|
||||
- This confirms the bottleneck moved forward for non-account intents: now main loss is at anchor/recipe matching, not at pre-materialization scope cut.
|
||||
|
||||
## Decision
|
||||
|
||||
- Keep `strict` for explicit account intents (`account_balance_snapshot`, `documents_forming_balance`).
|
||||
- Keep `preferred` for counterparty/contract-oriented intents to avoid blind early row loss.
|
||||
|
||||
## Next Step
|
||||
|
||||
- Launch focused resolver and filter tuning for counterparty anchors, then run curated positive live suite.
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
# Run README — Address Query Runtime V1 M2.3
|
||||
|
||||
Дата: 2026-03-29
|
||||
Run ID: `2026-03-29_Address_Query_Runtime_V1_M2_3_DocumentsFormingBalance_DataAwareAcceptance`
|
||||
|
||||
## Цель инкремента
|
||||
|
||||
- синхронизировать docs и runtime policy: `runtime=data-agnostic`, `acceptance=data-aware`;
|
||||
- добавить новый intent `documents_forming_balance`;
|
||||
- добавить drilldown recipe `address_documents_forming_balance_v1`;
|
||||
- расширить debug-контракт: resolver block + row-stage flow block;
|
||||
- собрать отдельный M2.3 dry-run пакет для следующего live-positive прохода.
|
||||
|
||||
## Что проверено
|
||||
|
||||
- `npm.cmd run build` - PASS.
|
||||
- `npx.cmd vitest run tests/addressQueryRuntimeM23.test.ts` - PASS (10/10).
|
||||
- dry-run через `/api/assistant/message` на 8 вопросах - сохранен в `assistant_window_dry_run_results.json`.
|
||||
|
||||
## Ключевой вывод
|
||||
|
||||
Routing/intent/shape остаются стабильными, `documents_forming_balance` корректно маршрутизируется и получает recipe.
|
||||
Новый debug-блок по anchor/resolver/row-stages присутствует в 100% кейсов.
|
||||
|
||||
При этом positive factual в этом пакете еще не получен (`factual_positive_rate = 0`), поэтому следующий обязательный шаг — отдельный data-aware exploratory pass по live для curated non-empty acceptance cases.
|
||||
|
||||
## Ограничение текущего пакета
|
||||
|
||||
- Это dry-run safety + instrumentation пакет.
|
||||
- Data-aware positive acceptance в этом run только подготовлен структурно, но не закрыт по non-empty factual.
|
||||
|
|
@ -0,0 +1,261 @@
|
|||
{
|
||||
"generated_at": "2026-03-29T17:00:07.144Z",
|
||||
"questions": [
|
||||
{
|
||||
"id": "Q1",
|
||||
"question": "which documents form balance for account 62 as of 2020-07-31",
|
||||
"expected_intent": "documents_forming_balance",
|
||||
"http_status": 200,
|
||||
"ok": true,
|
||||
"detected_mode": "address_query",
|
||||
"query_shape": "DOCUMENT_LIST",
|
||||
"detected_intent": "documents_forming_balance",
|
||||
"selected_recipe": "address_documents_forming_balance_v1",
|
||||
"extracted_filters": {
|
||||
"sort": "period_desc",
|
||||
"limit": 20,
|
||||
"account": "62",
|
||||
"as_of_date": "2020-07-31"
|
||||
},
|
||||
"missing_required_filters": [],
|
||||
"anchor_type": "account",
|
||||
"anchor_value_raw": "62",
|
||||
"resolver_confidence": "high",
|
||||
"mcp_call_status": "empty",
|
||||
"rows_fetched": 20,
|
||||
"raw_rows_received": 20,
|
||||
"rows_materialized": 0,
|
||||
"rows_after_recipe_filter": 0,
|
||||
"rows_matched": 0,
|
||||
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||
"limited_reason_category": "empty_match",
|
||||
"response_type": "LIMITED_WITH_REASON",
|
||||
"reply_type": "partial_coverage",
|
||||
"assistant_reply_preview": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
|
||||
},
|
||||
{
|
||||
"id": "Q2",
|
||||
"question": "reveal balance documents for account 60",
|
||||
"expected_intent": "documents_forming_balance",
|
||||
"http_status": 200,
|
||||
"ok": true,
|
||||
"detected_mode": "address_query",
|
||||
"query_shape": "DOCUMENT_LIST",
|
||||
"detected_intent": "documents_forming_balance",
|
||||
"selected_recipe": "address_documents_forming_balance_v1",
|
||||
"extracted_filters": {
|
||||
"sort": "period_desc",
|
||||
"limit": 20,
|
||||
"account": "60",
|
||||
"as_of_date": "2026-03-29"
|
||||
},
|
||||
"missing_required_filters": [],
|
||||
"anchor_type": "account",
|
||||
"anchor_value_raw": "60",
|
||||
"resolver_confidence": "high",
|
||||
"mcp_call_status": "empty",
|
||||
"rows_fetched": 20,
|
||||
"raw_rows_received": 20,
|
||||
"rows_materialized": 0,
|
||||
"rows_after_recipe_filter": 0,
|
||||
"rows_matched": 0,
|
||||
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||
"limited_reason_category": "empty_match",
|
||||
"response_type": "LIMITED_WITH_REASON",
|
||||
"reply_type": "partial_coverage",
|
||||
"assistant_reply_preview": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
|
||||
},
|
||||
{
|
||||
"id": "Q3",
|
||||
"question": "show documents by counterparty Alfa from 2020-07-01 to 2020-07-31",
|
||||
"expected_intent": "list_documents_by_counterparty",
|
||||
"http_status": 200,
|
||||
"ok": true,
|
||||
"detected_mode": "address_query",
|
||||
"query_shape": "DOCUMENT_LIST",
|
||||
"detected_intent": "list_documents_by_counterparty",
|
||||
"selected_recipe": "address_documents_by_counterparty_v1",
|
||||
"extracted_filters": {
|
||||
"sort": "period_desc",
|
||||
"limit": 20,
|
||||
"counterparty": "Alfa",
|
||||
"period_from": "2020-07-01",
|
||||
"period_to": "2020-07-31"
|
||||
},
|
||||
"missing_required_filters": [],
|
||||
"anchor_type": "counterparty",
|
||||
"anchor_value_raw": "Alfa",
|
||||
"resolver_confidence": "medium",
|
||||
"mcp_call_status": "empty",
|
||||
"rows_fetched": 20,
|
||||
"raw_rows_received": 20,
|
||||
"rows_materialized": 0,
|
||||
"rows_after_recipe_filter": 0,
|
||||
"rows_matched": 0,
|
||||
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||
"limited_reason_category": "empty_match",
|
||||
"response_type": "LIMITED_WITH_REASON",
|
||||
"reply_type": "partial_coverage",
|
||||
"assistant_reply_preview": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
|
||||
},
|
||||
{
|
||||
"id": "Q4",
|
||||
"question": "show bank operations by counterparty Alfa from 2020-07-01 to 2020-07-31",
|
||||
"expected_intent": "bank_operations_by_counterparty",
|
||||
"http_status": 200,
|
||||
"ok": true,
|
||||
"detected_mode": "address_query",
|
||||
"query_shape": "DOCUMENT_LIST",
|
||||
"detected_intent": "bank_operations_by_counterparty",
|
||||
"selected_recipe": "address_bank_operations_by_counterparty_v1",
|
||||
"extracted_filters": {
|
||||
"sort": "period_desc",
|
||||
"limit": 20,
|
||||
"counterparty": "Alfa",
|
||||
"period_from": "2020-07-01",
|
||||
"period_to": "2020-07-31"
|
||||
},
|
||||
"missing_required_filters": [],
|
||||
"anchor_type": "counterparty",
|
||||
"anchor_value_raw": "Alfa",
|
||||
"resolver_confidence": "medium",
|
||||
"mcp_call_status": "empty",
|
||||
"rows_fetched": 20,
|
||||
"raw_rows_received": 20,
|
||||
"rows_materialized": 0,
|
||||
"rows_after_recipe_filter": 0,
|
||||
"rows_matched": 0,
|
||||
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||
"limited_reason_category": "empty_match",
|
||||
"response_type": "LIMITED_WITH_REASON",
|
||||
"reply_type": "partial_coverage",
|
||||
"assistant_reply_preview": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
|
||||
},
|
||||
{
|
||||
"id": "Q5",
|
||||
"question": "show account balance 60 today",
|
||||
"expected_intent": "account_balance_snapshot",
|
||||
"http_status": 200,
|
||||
"ok": true,
|
||||
"detected_mode": "address_query",
|
||||
"query_shape": "AGGREGATE_LOOKUP",
|
||||
"detected_intent": "account_balance_snapshot",
|
||||
"selected_recipe": "address_movements_account_snapshot_v1",
|
||||
"extracted_filters": {
|
||||
"sort": "period_desc",
|
||||
"limit": 20,
|
||||
"account": "60",
|
||||
"as_of_date": "2026-03-29"
|
||||
},
|
||||
"missing_required_filters": [],
|
||||
"anchor_type": "account",
|
||||
"anchor_value_raw": "60",
|
||||
"resolver_confidence": "high",
|
||||
"mcp_call_status": "empty",
|
||||
"rows_fetched": 20,
|
||||
"raw_rows_received": 20,
|
||||
"rows_materialized": 0,
|
||||
"rows_after_recipe_filter": 0,
|
||||
"rows_matched": 0,
|
||||
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||
"limited_reason_category": "empty_match",
|
||||
"response_type": "LIMITED_WITH_REASON",
|
||||
"reply_type": "partial_coverage",
|
||||
"assistant_reply_preview": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
|
||||
},
|
||||
{
|
||||
"id": "Q6",
|
||||
"question": "show open items by contract",
|
||||
"expected_intent": "open_items_by_counterparty_or_contract",
|
||||
"http_status": 200,
|
||||
"ok": true,
|
||||
"detected_mode": "address_query",
|
||||
"query_shape": "OBJECT_LOOKUP",
|
||||
"detected_intent": "open_items_by_counterparty_or_contract",
|
||||
"selected_recipe": null,
|
||||
"extracted_filters": {
|
||||
"sort": "period_desc",
|
||||
"limit": 20
|
||||
},
|
||||
"missing_required_filters": [
|
||||
"counterparty_or_contract"
|
||||
],
|
||||
"anchor_type": "unknown",
|
||||
"anchor_value_raw": null,
|
||||
"resolver_confidence": "low",
|
||||
"mcp_call_status": "skipped",
|
||||
"rows_fetched": 0,
|
||||
"raw_rows_received": 0,
|
||||
"rows_materialized": 0,
|
||||
"rows_after_recipe_filter": 0,
|
||||
"rows_matched": 0,
|
||||
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||
"limited_reason_category": "missing_anchor",
|
||||
"response_type": "LIMITED_WITH_REASON",
|
||||
"reply_type": "partial_coverage",
|
||||
"assistant_reply_preview": "Для точного адресного поиска не хватает обязательного якоря.\nПричина: для open_items нужен якорь контрагента или договора.\nЧто нужно уточнить: укажите контрагента или номер/название договора."
|
||||
},
|
||||
{
|
||||
"id": "Q7",
|
||||
"question": "show documents by contract 15/24",
|
||||
"expected_intent": "unknown",
|
||||
"http_status": 200,
|
||||
"ok": true,
|
||||
"detected_mode": "address_query",
|
||||
"query_shape": "DOCUMENT_LIST",
|
||||
"detected_intent": "unknown",
|
||||
"selected_recipe": null,
|
||||
"extracted_filters": {
|
||||
"sort": "period_desc",
|
||||
"limit": 20,
|
||||
"contract": "15/24"
|
||||
},
|
||||
"missing_required_filters": [],
|
||||
"anchor_type": "contract",
|
||||
"anchor_value_raw": "15/24",
|
||||
"resolver_confidence": "medium",
|
||||
"mcp_call_status": "skipped",
|
||||
"rows_fetched": 0,
|
||||
"raw_rows_received": 0,
|
||||
"rows_materialized": 0,
|
||||
"rows_after_recipe_filter": 0,
|
||||
"rows_matched": 0,
|
||||
"runtime_readiness": "DEEP_ONLY",
|
||||
"limited_reason_category": "unsupported",
|
||||
"response_type": "LIMITED_WITH_REASON",
|
||||
"reply_type": "partial_coverage",
|
||||
"assistant_reply_preview": "Этот запрос не подходит под address_query V1.\nПричина: intent пока не поддержан в address V1.\nЧто нужно уточнить: переформулируйте вопрос как адресный lookup по счету/контрагенту/договору."
|
||||
},
|
||||
{
|
||||
"id": "Q8",
|
||||
"question": "who owes us and who we owe today",
|
||||
"expected_intent": "list_receivables_counterparties",
|
||||
"http_status": 200,
|
||||
"ok": true,
|
||||
"detected_mode": "address_query",
|
||||
"query_shape": "COMPOUND_FACTUAL_QUERY",
|
||||
"detected_intent": "list_receivables_counterparties",
|
||||
"selected_recipe": "address_movements_receivables_v1",
|
||||
"extracted_filters": {
|
||||
"sort": "period_desc",
|
||||
"limit": 20,
|
||||
"as_of_date": "2026-03-29"
|
||||
},
|
||||
"missing_required_filters": [],
|
||||
"anchor_type": "unknown",
|
||||
"anchor_value_raw": null,
|
||||
"resolver_confidence": "low",
|
||||
"mcp_call_status": "empty",
|
||||
"rows_fetched": 20,
|
||||
"raw_rows_received": 20,
|
||||
"rows_materialized": 0,
|
||||
"rows_after_recipe_filter": 0,
|
||||
"rows_matched": 0,
|
||||
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||
"limited_reason_category": "empty_match",
|
||||
"response_type": "LIMITED_WITH_REASON",
|
||||
"reply_type": "partial_coverage",
|
||||
"assistant_reply_preview": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
{
|
||||
"baseline_run": "2026-03-29_Address_Query_Runtime_V1_M2_2_Documents_BankOps_By_Counterparty",
|
||||
"current_run": "2026-03-29_Address_Query_Runtime_V1_M2_3_DocumentsFormingBalance_DataAwareAcceptance",
|
||||
"changes": {
|
||||
"intent_documents_forming_balance": {
|
||||
"before": false,
|
||||
"after": true
|
||||
},
|
||||
"recipe_documents_forming_balance_v1": {
|
||||
"before": false,
|
||||
"after": true
|
||||
},
|
||||
"debug_anchor_resolution_block": {
|
||||
"before": false,
|
||||
"after": true
|
||||
},
|
||||
"debug_row_stage_flow_block": {
|
||||
"before": false,
|
||||
"after": true
|
||||
},
|
||||
"supported_recipe_selection_rate": {
|
||||
"before": 0.6667,
|
||||
"after": 0.75
|
||||
},
|
||||
"false_factual_rate": {
|
||||
"before": 0.0,
|
||||
"after": 0.0
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
llm_normalizer/backend/src/types/addressQuery.ts
|
||||
llm_normalizer/backend/src/services/addressIntentResolver.ts
|
||||
llm_normalizer/backend/src/services/addressFilterExtractor.ts
|
||||
llm_normalizer/backend/src/services/addressRecipeCatalog.ts
|
||||
llm_normalizer/backend/src/services/addressQueryService.ts
|
||||
llm_normalizer/backend/src/services/assistantService.ts
|
||||
llm_normalizer/backend/src/types/assistant.ts
|
||||
llm_normalizer/backend/tests/addressQueryRuntimeM23.test.ts
|
||||
docs/ADDRESS/address_query/address_runtime_contracts.md
|
||||
docs/ADDRESS/address_query/runtime_readiness_matrix_v1.md
|
||||
docs/ADDRESS/address_query/address_scenario_matrix.md
|
||||
docs/ADDRESS/address_query/README.md
|
||||
docs/ADDRESS/address_query/data_aware_positive_acceptance_suite_v1.md
|
||||
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3_DocumentsFormingBalance_DataAwareAcceptance/README.md
|
||||
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3_DocumentsFormingBalance_DataAwareAcceptance/run_summary.json
|
||||
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3_DocumentsFormingBalance_DataAwareAcceptance/before_after_metrics.json
|
||||
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3_DocumentsFormingBalance_DataAwareAcceptance/data_aware_acceptance_case_matrix.md
|
||||
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3_DocumentsFormingBalance_DataAwareAcceptance/assistant_window_dry_run_results.json
|
||||
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3_DocumentsFormingBalance_DataAwareAcceptance/chat_export_data_aware_live.md
|
||||
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3_DocumentsFormingBalance_DataAwareAcceptance/live_call_inventory_address.json
|
||||
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3_DocumentsFormingBalance_DataAwareAcceptance/smoke_checks.md
|
||||
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3_DocumentsFormingBalance_DataAwareAcceptance/debug_payloads/Q1.json
|
||||
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3_DocumentsFormingBalance_DataAwareAcceptance/debug_payloads/Q2.json
|
||||
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3_DocumentsFormingBalance_DataAwareAcceptance/debug_payloads/Q3.json
|
||||
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3_DocumentsFormingBalance_DataAwareAcceptance/debug_payloads/Q4.json
|
||||
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3_DocumentsFormingBalance_DataAwareAcceptance/debug_payloads/Q5.json
|
||||
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3_DocumentsFormingBalance_DataAwareAcceptance/debug_payloads/Q6.json
|
||||
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3_DocumentsFormingBalance_DataAwareAcceptance/debug_payloads/Q7.json
|
||||
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3_DocumentsFormingBalance_DataAwareAcceptance/debug_payloads/Q8.json
|
||||
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3_DocumentsFormingBalance_DataAwareAcceptance/changed_files.txt
|
||||
|
|
@ -0,0 +1,68 @@
|
|||
# Chat Export — Data-Aware Live (Dry-Run Proxy)
|
||||
|
||||
Date: 2026-03-29
|
||||
|
||||
## Q1
|
||||
Question: which documents form balance for account 62 as of 2020-07-31
|
||||
Detected intent: documents_forming_balance
|
||||
Reply type: partial_coverage
|
||||
Preview: В live-данных по текущему фильтру записи не найдены.
|
||||
Причина: по выбранным фильтрам в live-выборке нет строк.
|
||||
Что нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.
|
||||
|
||||
## Q2
|
||||
Question: reveal balance documents for account 60
|
||||
Detected intent: documents_forming_balance
|
||||
Reply type: partial_coverage
|
||||
Preview: В live-данных по текущему фильтру записи не найдены.
|
||||
Причина: по выбранным фильтрам в live-выборке нет строк.
|
||||
Что нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.
|
||||
|
||||
## Q3
|
||||
Question: show documents by counterparty Alfa from 2020-07-01 to 2020-07-31
|
||||
Detected intent: list_documents_by_counterparty
|
||||
Reply type: partial_coverage
|
||||
Preview: В live-данных по текущему фильтру записи не найдены.
|
||||
Причина: по выбранным фильтрам в live-выборке нет строк.
|
||||
Что нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.
|
||||
|
||||
## Q4
|
||||
Question: show bank operations by counterparty Alfa from 2020-07-01 to 2020-07-31
|
||||
Detected intent: bank_operations_by_counterparty
|
||||
Reply type: partial_coverage
|
||||
Preview: В live-данных по текущему фильтру записи не найдены.
|
||||
Причина: по выбранным фильтрам в live-выборке нет строк.
|
||||
Что нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.
|
||||
|
||||
## Q5
|
||||
Question: show account balance 60 today
|
||||
Detected intent: account_balance_snapshot
|
||||
Reply type: partial_coverage
|
||||
Preview: В live-данных по текущему фильтру записи не найдены.
|
||||
Причина: по выбранным фильтрам в live-выборке нет строк.
|
||||
Что нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.
|
||||
|
||||
## Q6
|
||||
Question: show open items by contract
|
||||
Detected intent: open_items_by_counterparty_or_contract
|
||||
Reply type: partial_coverage
|
||||
Preview: Для точного адресного поиска не хватает обязательного якоря.
|
||||
Причина: для open_items нужен якорь контрагента или договора.
|
||||
Что нужно уточнить: укажите контрагента или номер/название договора.
|
||||
|
||||
## Q7
|
||||
Question: show documents by contract 15/24
|
||||
Detected intent: unknown
|
||||
Reply type: partial_coverage
|
||||
Preview: Ртот запрос РЅРµ РїРѕРґС…РѕРґРёС‚ РїРѕРґ address_query V1.
|
||||
Причина: intent пока не поддержан в address V1.
|
||||
Что нужно уточнить: переформулируйте вопрос как адресный lookup по счету/контрагенту/договору.
|
||||
|
||||
## Q8
|
||||
Question: who owes us and who we owe today
|
||||
Detected intent: list_receivables_counterparties
|
||||
Reply type: partial_coverage
|
||||
Preview: В live-данных по текущему фильтру записи не найдены.
|
||||
Причина: по выбранным фильтрам в live-выборке нет строк.
|
||||
Что нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.
|
||||
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
# Data-Aware Acceptance Case Matrix (M2.3 Dry-Run)
|
||||
|
||||
Дата: 2026-03-29
|
||||
|
||||
| case_id | question | expected_intent | selected_recipe | expected_non_empty | actual_non_empty | result | notes |
|
||||
|---|---|---|---|---|---|---|---|
|
||||
| Q1 | which documents form balance for account 62 as of 2020-07-31 | documents_forming_balance | address_documents_forming_balance_v1 | TBD (positive candidate) | no | limited(empty_match) | intent+recipe path correct |
|
||||
| Q2 | reveal balance documents for account 60 | documents_forming_balance | address_documents_forming_balance_v1 | TBD (positive candidate) | no | limited(empty_match) | as_of defaulted to today |
|
||||
| Q3 | show documents by counterparty Alfa from 2020-07-01 to 2020-07-31 | list_documents_by_counterparty | address_documents_by_counterparty_v1 | TBD (positive candidate) | no | limited(empty_match) | counterparty anchor resolved |
|
||||
| Q4 | show bank operations by counterparty Alfa from 2020-07-01 to 2020-07-31 | bank_operations_by_counterparty | address_bank_operations_by_counterparty_v1 | TBD (positive candidate) | no | limited(empty_match) | bank recipe path correct |
|
||||
| Q5 | show account balance 60 today | account_balance_snapshot | address_movements_account_snapshot_v1 | TBD (positive candidate) | no | limited(empty_match) | aggregate lane stable |
|
||||
| Q6 | show open items by contract | open_items_by_counterparty_or_contract | - | no | no | limited(missing_anchor) | expected safety behavior |
|
||||
| Q7 | show documents by contract 15/24 | unknown | - | no | no | limited(unsupported) | expected until M2.4 |
|
||||
| Q8 | who owes us and who we owe today | list_receivables_counterparties | address_movements_receivables_v1 | no (compound detect-only) | no | limited(empty_match) | decomposition still not implemented |
|
||||
|
||||
## Matrix note
|
||||
|
||||
Этот файл фиксирует dry-run safety/reliability состояние.
|
||||
Для фактического `data_aware_positive_non_empty_rate` нужен отдельный exploratory live pass с подбором non-empty anchors.
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
{
|
||||
"id": "Q1",
|
||||
"question": "which documents form balance for account 62 as of 2020-07-31",
|
||||
"expected_intent": "documents_forming_balance",
|
||||
"http_status": 200,
|
||||
"ok": true,
|
||||
"detected_mode": "address_query",
|
||||
"query_shape": "DOCUMENT_LIST",
|
||||
"detected_intent": "documents_forming_balance",
|
||||
"selected_recipe": "address_documents_forming_balance_v1",
|
||||
"extracted_filters": {
|
||||
"sort": "period_desc",
|
||||
"limit": 20,
|
||||
"account": "62",
|
||||
"as_of_date": "2020-07-31"
|
||||
},
|
||||
"missing_required_filters": [
|
||||
|
||||
],
|
||||
"anchor_type": "account",
|
||||
"anchor_value_raw": "62",
|
||||
"resolver_confidence": "high",
|
||||
"mcp_call_status": "empty",
|
||||
"rows_fetched": 20,
|
||||
"raw_rows_received": 20,
|
||||
"rows_materialized": 0,
|
||||
"rows_after_recipe_filter": 0,
|
||||
"rows_matched": 0,
|
||||
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||
"limited_reason_category": "empty_match",
|
||||
"response_type": "LIMITED_WITH_REASON",
|
||||
"reply_type": "partial_coverage",
|
||||
"assistant_reply_preview": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
|
||||
}
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
{
|
||||
"id": "Q2",
|
||||
"question": "reveal balance documents for account 60",
|
||||
"expected_intent": "documents_forming_balance",
|
||||
"http_status": 200,
|
||||
"ok": true,
|
||||
"detected_mode": "address_query",
|
||||
"query_shape": "DOCUMENT_LIST",
|
||||
"detected_intent": "documents_forming_balance",
|
||||
"selected_recipe": "address_documents_forming_balance_v1",
|
||||
"extracted_filters": {
|
||||
"sort": "period_desc",
|
||||
"limit": 20,
|
||||
"account": "60",
|
||||
"as_of_date": "2026-03-29"
|
||||
},
|
||||
"missing_required_filters": [
|
||||
|
||||
],
|
||||
"anchor_type": "account",
|
||||
"anchor_value_raw": "60",
|
||||
"resolver_confidence": "high",
|
||||
"mcp_call_status": "empty",
|
||||
"rows_fetched": 20,
|
||||
"raw_rows_received": 20,
|
||||
"rows_materialized": 0,
|
||||
"rows_after_recipe_filter": 0,
|
||||
"rows_matched": 0,
|
||||
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||
"limited_reason_category": "empty_match",
|
||||
"response_type": "LIMITED_WITH_REASON",
|
||||
"reply_type": "partial_coverage",
|
||||
"assistant_reply_preview": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
|
||||
}
|
||||
|
|
@ -0,0 +1,35 @@
|
|||
{
|
||||
"id": "Q3",
|
||||
"question": "show documents by counterparty Alfa from 2020-07-01 to 2020-07-31",
|
||||
"expected_intent": "list_documents_by_counterparty",
|
||||
"http_status": 200,
|
||||
"ok": true,
|
||||
"detected_mode": "address_query",
|
||||
"query_shape": "DOCUMENT_LIST",
|
||||
"detected_intent": "list_documents_by_counterparty",
|
||||
"selected_recipe": "address_documents_by_counterparty_v1",
|
||||
"extracted_filters": {
|
||||
"sort": "period_desc",
|
||||
"limit": 20,
|
||||
"counterparty": "Alfa",
|
||||
"period_from": "2020-07-01",
|
||||
"period_to": "2020-07-31"
|
||||
},
|
||||
"missing_required_filters": [
|
||||
|
||||
],
|
||||
"anchor_type": "counterparty",
|
||||
"anchor_value_raw": "Alfa",
|
||||
"resolver_confidence": "medium",
|
||||
"mcp_call_status": "empty",
|
||||
"rows_fetched": 20,
|
||||
"raw_rows_received": 20,
|
||||
"rows_materialized": 0,
|
||||
"rows_after_recipe_filter": 0,
|
||||
"rows_matched": 0,
|
||||
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||
"limited_reason_category": "empty_match",
|
||||
"response_type": "LIMITED_WITH_REASON",
|
||||
"reply_type": "partial_coverage",
|
||||
"assistant_reply_preview": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
|
||||
}
|
||||
|
|
@ -0,0 +1,35 @@
|
|||
{
|
||||
"id": "Q4",
|
||||
"question": "show bank operations by counterparty Alfa from 2020-07-01 to 2020-07-31",
|
||||
"expected_intent": "bank_operations_by_counterparty",
|
||||
"http_status": 200,
|
||||
"ok": true,
|
||||
"detected_mode": "address_query",
|
||||
"query_shape": "DOCUMENT_LIST",
|
||||
"detected_intent": "bank_operations_by_counterparty",
|
||||
"selected_recipe": "address_bank_operations_by_counterparty_v1",
|
||||
"extracted_filters": {
|
||||
"sort": "period_desc",
|
||||
"limit": 20,
|
||||
"counterparty": "Alfa",
|
||||
"period_from": "2020-07-01",
|
||||
"period_to": "2020-07-31"
|
||||
},
|
||||
"missing_required_filters": [
|
||||
|
||||
],
|
||||
"anchor_type": "counterparty",
|
||||
"anchor_value_raw": "Alfa",
|
||||
"resolver_confidence": "medium",
|
||||
"mcp_call_status": "empty",
|
||||
"rows_fetched": 20,
|
||||
"raw_rows_received": 20,
|
||||
"rows_materialized": 0,
|
||||
"rows_after_recipe_filter": 0,
|
||||
"rows_matched": 0,
|
||||
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||
"limited_reason_category": "empty_match",
|
||||
"response_type": "LIMITED_WITH_REASON",
|
||||
"reply_type": "partial_coverage",
|
||||
"assistant_reply_preview": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
|
||||
}
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
{
|
||||
"id": "Q5",
|
||||
"question": "show account balance 60 today",
|
||||
"expected_intent": "account_balance_snapshot",
|
||||
"http_status": 200,
|
||||
"ok": true,
|
||||
"detected_mode": "address_query",
|
||||
"query_shape": "AGGREGATE_LOOKUP",
|
||||
"detected_intent": "account_balance_snapshot",
|
||||
"selected_recipe": "address_movements_account_snapshot_v1",
|
||||
"extracted_filters": {
|
||||
"sort": "period_desc",
|
||||
"limit": 20,
|
||||
"account": "60",
|
||||
"as_of_date": "2026-03-29"
|
||||
},
|
||||
"missing_required_filters": [
|
||||
|
||||
],
|
||||
"anchor_type": "account",
|
||||
"anchor_value_raw": "60",
|
||||
"resolver_confidence": "high",
|
||||
"mcp_call_status": "empty",
|
||||
"rows_fetched": 20,
|
||||
"raw_rows_received": 20,
|
||||
"rows_materialized": 0,
|
||||
"rows_after_recipe_filter": 0,
|
||||
"rows_matched": 0,
|
||||
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||
"limited_reason_category": "empty_match",
|
||||
"response_type": "LIMITED_WITH_REASON",
|
||||
"reply_type": "partial_coverage",
|
||||
"assistant_reply_preview": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
|
||||
}
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
{
|
||||
"id": "Q6",
|
||||
"question": "show open items by contract",
|
||||
"expected_intent": "open_items_by_counterparty_or_contract",
|
||||
"http_status": 200,
|
||||
"ok": true,
|
||||
"detected_mode": "address_query",
|
||||
"query_shape": "OBJECT_LOOKUP",
|
||||
"detected_intent": "open_items_by_counterparty_or_contract",
|
||||
"selected_recipe": null,
|
||||
"extracted_filters": {
|
||||
"sort": "period_desc",
|
||||
"limit": 20
|
||||
},
|
||||
"missing_required_filters": [
|
||||
"counterparty_or_contract"
|
||||
],
|
||||
"anchor_type": "unknown",
|
||||
"anchor_value_raw": null,
|
||||
"resolver_confidence": "low",
|
||||
"mcp_call_status": "skipped",
|
||||
"rows_fetched": 0,
|
||||
"raw_rows_received": 0,
|
||||
"rows_materialized": 0,
|
||||
"rows_after_recipe_filter": 0,
|
||||
"rows_matched": 0,
|
||||
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||
"limited_reason_category": "missing_anchor",
|
||||
"response_type": "LIMITED_WITH_REASON",
|
||||
"reply_type": "partial_coverage",
|
||||
"assistant_reply_preview": "Для точного адресного поиска не хватает обязательного якоря.\nПричина: для open_items нужен якорь контрагента или договора.\nЧто нужно уточнить: укажите контрагента или номер/название договора."
|
||||
}
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
{
|
||||
"id": "Q7",
|
||||
"question": "show documents by contract 15/24",
|
||||
"expected_intent": "unknown",
|
||||
"http_status": 200,
|
||||
"ok": true,
|
||||
"detected_mode": "address_query",
|
||||
"query_shape": "DOCUMENT_LIST",
|
||||
"detected_intent": "unknown",
|
||||
"selected_recipe": null,
|
||||
"extracted_filters": {
|
||||
"sort": "period_desc",
|
||||
"limit": 20,
|
||||
"contract": "15/24"
|
||||
},
|
||||
"missing_required_filters": [
|
||||
|
||||
],
|
||||
"anchor_type": "contract",
|
||||
"anchor_value_raw": "15/24",
|
||||
"resolver_confidence": "medium",
|
||||
"mcp_call_status": "skipped",
|
||||
"rows_fetched": 0,
|
||||
"raw_rows_received": 0,
|
||||
"rows_materialized": 0,
|
||||
"rows_after_recipe_filter": 0,
|
||||
"rows_matched": 0,
|
||||
"runtime_readiness": "DEEP_ONLY",
|
||||
"limited_reason_category": "unsupported",
|
||||
"response_type": "LIMITED_WITH_REASON",
|
||||
"reply_type": "partial_coverage",
|
||||
"assistant_reply_preview": "Ртот запрос РЅРµ РїРѕРґС…РѕРґРёС‚ РїРѕРґ address_query V1.\nПричина: intent РїРѕРєР° РЅРµ поддержан РІ address V1.\nЧто РЅСѓР¶РЅРѕ уточнить: переформулируйте РІРѕРїСЂРѕСЃ как адресный lookup РїРѕ счету/контрагенту/РґРѕРіРѕРІРѕСЂСѓ."
|
||||
}
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
{
|
||||
"id": "Q8",
|
||||
"question": "who owes us and who we owe today",
|
||||
"expected_intent": "list_receivables_counterparties",
|
||||
"http_status": 200,
|
||||
"ok": true,
|
||||
"detected_mode": "address_query",
|
||||
"query_shape": "COMPOUND_FACTUAL_QUERY",
|
||||
"detected_intent": "list_receivables_counterparties",
|
||||
"selected_recipe": "address_movements_receivables_v1",
|
||||
"extracted_filters": {
|
||||
"sort": "period_desc",
|
||||
"limit": 20,
|
||||
"as_of_date": "2026-03-29"
|
||||
},
|
||||
"missing_required_filters": [
|
||||
|
||||
],
|
||||
"anchor_type": "unknown",
|
||||
"anchor_value_raw": null,
|
||||
"resolver_confidence": "low",
|
||||
"mcp_call_status": "empty",
|
||||
"rows_fetched": 20,
|
||||
"raw_rows_received": 20,
|
||||
"rows_materialized": 0,
|
||||
"rows_after_recipe_filter": 0,
|
||||
"rows_matched": 0,
|
||||
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||
"limited_reason_category": "empty_match",
|
||||
"response_type": "LIMITED_WITH_REASON",
|
||||
"reply_type": "partial_coverage",
|
||||
"assistant_reply_preview": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
|
||||
}
|
||||
|
|
@ -0,0 +1,122 @@
|
|||
[
|
||||
{
|
||||
"case_id": "Q1",
|
||||
"question": "which documents form balance for account 62 as of 2020-07-31",
|
||||
"detected_intent": "documents_forming_balance",
|
||||
"selected_recipe": "address_documents_forming_balance_v1",
|
||||
"mcp_call_status": "empty",
|
||||
"rows_fetched": 20,
|
||||
"raw_rows_received": 20,
|
||||
"rows_materialized": 0,
|
||||
"rows_after_recipe_filter": 0,
|
||||
"rows_matched": 0,
|
||||
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||
"limited_reason_category": "empty_match",
|
||||
"response_type": "LIMITED_WITH_REASON"
|
||||
},
|
||||
{
|
||||
"case_id": "Q2",
|
||||
"question": "reveal balance documents for account 60",
|
||||
"detected_intent": "documents_forming_balance",
|
||||
"selected_recipe": "address_documents_forming_balance_v1",
|
||||
"mcp_call_status": "empty",
|
||||
"rows_fetched": 20,
|
||||
"raw_rows_received": 20,
|
||||
"rows_materialized": 0,
|
||||
"rows_after_recipe_filter": 0,
|
||||
"rows_matched": 0,
|
||||
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||
"limited_reason_category": "empty_match",
|
||||
"response_type": "LIMITED_WITH_REASON"
|
||||
},
|
||||
{
|
||||
"case_id": "Q3",
|
||||
"question": "show documents by counterparty Alfa from 2020-07-01 to 2020-07-31",
|
||||
"detected_intent": "list_documents_by_counterparty",
|
||||
"selected_recipe": "address_documents_by_counterparty_v1",
|
||||
"mcp_call_status": "empty",
|
||||
"rows_fetched": 20,
|
||||
"raw_rows_received": 20,
|
||||
"rows_materialized": 0,
|
||||
"rows_after_recipe_filter": 0,
|
||||
"rows_matched": 0,
|
||||
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||
"limited_reason_category": "empty_match",
|
||||
"response_type": "LIMITED_WITH_REASON"
|
||||
},
|
||||
{
|
||||
"case_id": "Q4",
|
||||
"question": "show bank operations by counterparty Alfa from 2020-07-01 to 2020-07-31",
|
||||
"detected_intent": "bank_operations_by_counterparty",
|
||||
"selected_recipe": "address_bank_operations_by_counterparty_v1",
|
||||
"mcp_call_status": "empty",
|
||||
"rows_fetched": 20,
|
||||
"raw_rows_received": 20,
|
||||
"rows_materialized": 0,
|
||||
"rows_after_recipe_filter": 0,
|
||||
"rows_matched": 0,
|
||||
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||
"limited_reason_category": "empty_match",
|
||||
"response_type": "LIMITED_WITH_REASON"
|
||||
},
|
||||
{
|
||||
"case_id": "Q5",
|
||||
"question": "show account balance 60 today",
|
||||
"detected_intent": "account_balance_snapshot",
|
||||
"selected_recipe": "address_movements_account_snapshot_v1",
|
||||
"mcp_call_status": "empty",
|
||||
"rows_fetched": 20,
|
||||
"raw_rows_received": 20,
|
||||
"rows_materialized": 0,
|
||||
"rows_after_recipe_filter": 0,
|
||||
"rows_matched": 0,
|
||||
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||
"limited_reason_category": "empty_match",
|
||||
"response_type": "LIMITED_WITH_REASON"
|
||||
},
|
||||
{
|
||||
"case_id": "Q6",
|
||||
"question": "show open items by contract",
|
||||
"detected_intent": "open_items_by_counterparty_or_contract",
|
||||
"selected_recipe": null,
|
||||
"mcp_call_status": "skipped",
|
||||
"rows_fetched": 0,
|
||||
"raw_rows_received": 0,
|
||||
"rows_materialized": 0,
|
||||
"rows_after_recipe_filter": 0,
|
||||
"rows_matched": 0,
|
||||
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||
"limited_reason_category": "missing_anchor",
|
||||
"response_type": "LIMITED_WITH_REASON"
|
||||
},
|
||||
{
|
||||
"case_id": "Q7",
|
||||
"question": "show documents by contract 15/24",
|
||||
"detected_intent": "unknown",
|
||||
"selected_recipe": null,
|
||||
"mcp_call_status": "skipped",
|
||||
"rows_fetched": 0,
|
||||
"raw_rows_received": 0,
|
||||
"rows_materialized": 0,
|
||||
"rows_after_recipe_filter": 0,
|
||||
"rows_matched": 0,
|
||||
"runtime_readiness": "DEEP_ONLY",
|
||||
"limited_reason_category": "unsupported",
|
||||
"response_type": "LIMITED_WITH_REASON"
|
||||
},
|
||||
{
|
||||
"case_id": "Q8",
|
||||
"question": "who owes us and who we owe today",
|
||||
"detected_intent": "list_receivables_counterparties",
|
||||
"selected_recipe": "address_movements_receivables_v1",
|
||||
"mcp_call_status": "empty",
|
||||
"rows_fetched": 20,
|
||||
"raw_rows_received": 20,
|
||||
"rows_materialized": 0,
|
||||
"rows_after_recipe_filter": 0,
|
||||
"rows_matched": 0,
|
||||
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||
"limited_reason_category": "empty_match",
|
||||
"response_type": "LIMITED_WITH_REASON"
|
||||
}
|
||||
]
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
{
|
||||
"run_id": "2026-03-29_Address_Query_Runtime_V1_M2_3_DocumentsFormingBalance_DataAwareAcceptance",
|
||||
"date": "2026-03-29",
|
||||
"stage": "address_query_runtime_v1",
|
||||
"scope": "m2_3_documents_forming_balance_plus_data_aware_acceptance_sync",
|
||||
"build_status": "PASSED",
|
||||
"tests_status": "PASSED",
|
||||
"dry_run_status": "PASSED_WITH_LIMITED_RESULTS",
|
||||
"implemented": {
|
||||
"intent_documents_forming_balance": true,
|
||||
"recipe_documents_forming_balance_v1": true,
|
||||
"required_filters_account_as_of_for_balance_intents": true,
|
||||
"as_of_defaulting_for_balance_intents": true,
|
||||
"resolver_debug_block": true,
|
||||
"row_stage_debug_block": true,
|
||||
"docs_sync_data_aware_policy": true
|
||||
},
|
||||
"dry_run_metrics": {
|
||||
"questions_total": 8,
|
||||
"address_mode_hit_rate": 1.0,
|
||||
"query_shape_detected_rate": 1.0,
|
||||
"intent_alignment_rate": 1.0,
|
||||
"supported_recipe_selection_rate": 0.75,
|
||||
"factual_positive_rate": 0.0,
|
||||
"limited_mode_rate": 1.0,
|
||||
"false_factual_rate": 0.0,
|
||||
"anchor_debug_coverage_rate": 1.0,
|
||||
"row_stage_debug_coverage_rate": 1.0
|
||||
},
|
||||
"limited_reason_distribution": {
|
||||
"empty_match": 6,
|
||||
"missing_anchor": 1,
|
||||
"unsupported": 1,
|
||||
"recipe_visibility_gap": 0,
|
||||
"execution_error": 0
|
||||
},
|
||||
"data_aware_acceptance_status": {
|
||||
"suite_defined": true,
|
||||
"exploratory_live_pass_completed": false,
|
||||
"known_positive_non_empty_rate": 0.0,
|
||||
"status": "prepared_for_next_live_iteration"
|
||||
},
|
||||
"next_priority": "Run exploratory live pass and curate non-empty data-aware positive acceptance cases"
|
||||
}
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
# Smoke Checks
|
||||
|
||||
Дата: 2026-03-29
|
||||
|
||||
## Build
|
||||
- `npm.cmd run build` -> PASS
|
||||
|
||||
## Tests
|
||||
- `npx.cmd vitest run tests/addressQueryRuntimeM23.test.ts` -> PASS (10/10)
|
||||
|
||||
## Dry-run (assistant window equivalent)
|
||||
|
||||
Источник: `assistant_window_dry_run_results.json`
|
||||
|
||||
- total questions: 8
|
||||
- `detected_mode=address_query`: 8/8
|
||||
- `query_shape` detected: 8/8
|
||||
- expected intent alignment: 8/8
|
||||
- `selected_recipe` present: 6/8
|
||||
- `response_type=LIMITED_WITH_REASON`: 8/8
|
||||
- `false_factual_rate`: 0
|
||||
- `anchor_debug_coverage_rate`: 1.0
|
||||
- `row_stage_debug_coverage_rate`: 1.0
|
||||
|
||||
### Limited taxonomy distribution
|
||||
|
||||
- `empty_match`: 6
|
||||
- `missing_anchor`: 1
|
||||
- `unsupported`: 1
|
||||
- `recipe_visibility_gap`: 0
|
||||
- `execution_error`: 0
|
||||
|
||||
### Operational note
|
||||
|
||||
`documents_forming_balance` routing is now implemented and stable by intent/recipe.
|
||||
The next hard gate remains data-aware positive live pass (non-empty factual evidence).
|
||||
|
|
@ -0,0 +1,51 @@
|
|||
# Address Query Runtime V1 — M2+ (Open Contracts / Open Items)
|
||||
|
||||
Дата: 2026-03-29
|
||||
Статус: IMPLEMENTED_WITH_LIMITED_MODE
|
||||
|
||||
## Что расширено
|
||||
|
||||
1. Расширены P0 intent/recipe маршруты:
|
||||
- `list_open_contracts`
|
||||
- `open_items_by_counterparty_or_contract`
|
||||
|
||||
2. Расширен recipe-catalog:
|
||||
- единый movement-query с period filters (`as_of_date`, `period_from`, `period_to`)
|
||||
- account scopes для family-веток:
|
||||
- receivables: `62/76`
|
||||
- payables: `60/76`
|
||||
- open contracts/open items: `60/62/76`
|
||||
|
||||
3. Усилен intent/filter слой:
|
||||
- intent resolver переписан на token-based (более стабильно для коротких формулировок);
|
||||
- filter extractor поддерживает `by contract` / `by counterparty` и русские варианты.
|
||||
|
||||
4. Усилен answer contract:
|
||||
- для `open_items` обязателен anchor (`counterparty` или `contract`), иначе controlled limited mode;
|
||||
- для `open_contracts` при отсутствии явных договорных аналитик в live-строках возвращается честный limited mode;
|
||||
- false factual не генерируется.
|
||||
|
||||
## Что подтверждено smoke-проверкой
|
||||
|
||||
- Address lane срабатывает через `AssistantService` ранней веткой (без normalizer вызова).
|
||||
- Новые intents распознаются и маршрутизируются в recipe path.
|
||||
- При отсутствии релевантных live-строк система остается в `LIMITED_WITH_REASON` с конкретной причиной.
|
||||
|
||||
## Параллельно добавлено для следующего этапа
|
||||
|
||||
- Набор вопросов для dry-run через окно ассистента:
|
||||
- `docs/ADDRESS/address_query/ui_dry_run_question_set_v1.md`
|
||||
- Чек-лист проверки:
|
||||
- `docs/ADDRESS/address_query/ui_dry_run_checklist_v1.md`
|
||||
- Результаты dry-run набора (5 вопросов):
|
||||
- `assistant_window_dry_run_results.json`
|
||||
|
||||
## Ограничения текущего шага
|
||||
|
||||
- MCP текущего рецепта не возвращает явные договорные аналитики в достаточном объеме для устойчивого `FACTUAL_LIST` по open contracts.
|
||||
- Поэтому `list_open_contracts` и часть `open_items` работают в honest-limited режиме, что соответствует safety policy.
|
||||
|
||||
## Следующий шаг
|
||||
|
||||
- Добавить специализированные live recipes на уровне документов/регистров (контрагент/договор) вместо только movement-среза,
|
||||
чтобы перевести `open_contracts` и `open_items` из `LIMITED_WITH_REASON` в стабильный factual mode на positive-cases.
|
||||
|
|
@ -0,0 +1,57 @@
|
|||
[
|
||||
{
|
||||
"query": "кто должен нам на сегодня",
|
||||
"expected_intent": "list_receivables_counterparties",
|
||||
"detected_mode": "address_query",
|
||||
"detected_intent": "list_receivables_counterparties",
|
||||
"selected_recipe": "address_movements_receivables_v1",
|
||||
"mcp_call_status": "empty",
|
||||
"rows_fetched": 20,
|
||||
"rows_matched": 0,
|
||||
"response_type": "LIMITED_WITH_REASON"
|
||||
},
|
||||
{
|
||||
"query": "кому должны мы на сегодня",
|
||||
"expected_intent": "list_payables_counterparties",
|
||||
"detected_mode": "address_query",
|
||||
"detected_intent": "list_payables_counterparties",
|
||||
"selected_recipe": "address_movements_payables_v1",
|
||||
"mcp_call_status": "empty",
|
||||
"rows_fetched": 20,
|
||||
"rows_matched": 0,
|
||||
"response_type": "LIMITED_WITH_REASON"
|
||||
},
|
||||
{
|
||||
"query": "покажи остаток по счету 60 на сегодня",
|
||||
"expected_intent": "account_balance_snapshot",
|
||||
"detected_mode": "address_query",
|
||||
"detected_intent": "account_balance_snapshot",
|
||||
"selected_recipe": "address_movements_account_snapshot_v1",
|
||||
"mcp_call_status": "empty",
|
||||
"rows_fetched": 20,
|
||||
"rows_matched": 0,
|
||||
"response_type": "LIMITED_WITH_REASON"
|
||||
},
|
||||
{
|
||||
"query": "какие договоры не закрыты",
|
||||
"expected_intent": "list_open_contracts",
|
||||
"detected_mode": "address_query",
|
||||
"detected_intent": "list_open_contracts",
|
||||
"selected_recipe": "address_open_contracts_candidates_v1",
|
||||
"mcp_call_status": "empty",
|
||||
"rows_fetched": 20,
|
||||
"rows_matched": 0,
|
||||
"response_type": "LIMITED_WITH_REASON"
|
||||
},
|
||||
{
|
||||
"query": "покажи открытые позиции по договору 01/19-ПТ",
|
||||
"expected_intent": "open_items_by_counterparty_or_contract",
|
||||
"detected_mode": "address_query",
|
||||
"detected_intent": "open_items_by_counterparty_or_contract",
|
||||
"selected_recipe": "address_open_items_by_party_or_contract_v1",
|
||||
"mcp_call_status": "empty",
|
||||
"rows_fetched": 20,
|
||||
"rows_matched": 0,
|
||||
"response_type": "LIMITED_WITH_REASON"
|
||||
}
|
||||
]
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
llm_normalizer/backend/src/services/addressIntentResolver.ts
|
||||
llm_normalizer/backend/src/services/addressRecipeCatalog.ts
|
||||
llm_normalizer/backend/src/services/addressQueryService.ts
|
||||
llm_normalizer/backend/src/services/addressFilterExtractor.ts
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
{
|
||||
"run_id": "2026-03-29_Address_Query_Runtime_V1_M2_Plus_OpenContracts_OpenItems",
|
||||
"date": "2026-03-29",
|
||||
"stage": "address_query_runtime_v1",
|
||||
"scope": "m2_plus_intent_recipe_expansion",
|
||||
"build_status": "PASSED",
|
||||
"smoke_status": "PASSED",
|
||||
"ui_dry_run_status": "PASSED_INTENT_ROUTING",
|
||||
"implemented": {
|
||||
"intent_open_contracts": true,
|
||||
"intent_open_items_by_counterparty_or_contract": true,
|
||||
"period_filterable_query_recipe": true,
|
||||
"token_based_intent_resolution": true
|
||||
},
|
||||
"current_answer_mode": {
|
||||
"receivables_payables_account_snapshot": "operational (may be limited on empty matches)",
|
||||
"open_contracts": "honest_limited_when_no_contract_anchors",
|
||||
"open_items": "honest_limited_without_anchor_or_no_rows"
|
||||
},
|
||||
"ui_dry_run_5q": {
|
||||
"mode_routing_pass_rate": 1.0,
|
||||
"intent_alignment_pass_rate": 1.0,
|
||||
"selected_recipe_non_empty_rate": 1.0,
|
||||
"factual_positive_rate": 0.0,
|
||||
"limited_mode_rate": 1.0
|
||||
},
|
||||
"false_factual_rate": 0
|
||||
}
|
||||
|
|
@ -0,0 +1,49 @@
|
|||
# Smoke Checks
|
||||
|
||||
Дата: 2026-03-29
|
||||
|
||||
## Build
|
||||
- `npm run build` -> PASS
|
||||
|
||||
## Address service checks (dist)
|
||||
|
||||
1. `who owes us today`
|
||||
- detected_intent: `list_receivables_counterparties`
|
||||
- selected_recipe: `address_movements_receivables_v1`
|
||||
- result: `LIMITED_WITH_REASON` (mcp_call_status=`empty`)
|
||||
|
||||
2. `who we owe today`
|
||||
- detected_intent: `list_payables_counterparties`
|
||||
- selected_recipe: `address_movements_payables_v1`
|
||||
- result: `LIMITED_WITH_REASON` (mcp_call_status=`empty`)
|
||||
|
||||
3. `show account balance 60`
|
||||
- detected_intent: `account_balance_snapshot`
|
||||
- selected_recipe: `address_movements_account_snapshot_v1`
|
||||
- result: `LIMITED_WITH_REASON` (mcp_call_status=`empty`)
|
||||
|
||||
4. `list open contracts`
|
||||
- detected_intent: `list_open_contracts`
|
||||
- selected_recipe: `address_open_contracts_candidates_v1`
|
||||
- result: `LIMITED_WITH_REASON` (`no_contract_anchors_in_live_rows`)
|
||||
|
||||
5. `open items by contract 01/19-PT`
|
||||
- detected_intent: `open_items_by_counterparty_or_contract`
|
||||
- selected_recipe: `address_open_items_by_party_or_contract_v1`
|
||||
- result: `LIMITED_WITH_REASON` (mcp_call_status=`empty`)
|
||||
|
||||
## AssistantService early-lane checks
|
||||
|
||||
`AssistantService.handleMessage(...)` с normalizer stub:
|
||||
- для address запросов идет в `assistant_message_address` event;
|
||||
- deep normalizer path не вызывается.
|
||||
|
||||
## UI dry-run через окно ассистента (RU set)
|
||||
|
||||
- Прогнан набор из 5 русскоязычных вопросов из `docs/ADDRESS/address_query/ui_dry_run_question_set_v1.md`.
|
||||
- Результаты сохранены в `assistant_window_dry_run_results.json`.
|
||||
- Все 5 кейсов:
|
||||
- `detected_mode=address_query`;
|
||||
- `detected_intent` совпал с `expected_intent`;
|
||||
- `selected_recipe` не пустой.
|
||||
- Текущий answer mode: `LIMITED_WITH_REASON` по причине `mcp_call_status=empty` (matched rows = 0).
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue