АДРЕСНЫЙ РЕЖИМ - M2.3b тюнинг account-scope и диагностика стадий адресного рантайма
This commit is contained in:
Binary file not shown.
+123
@@ -0,0 +1,123 @@
|
|||||||
|
# Этап 4 — Архитектурный аудит под MCP-first адресные запросы
|
||||||
|
|
||||||
|
Дата: 2026-03-29
|
||||||
|
Контур: `X:\1C\NDC_1C`
|
||||||
|
|
||||||
|
## 1) Цель аудита
|
||||||
|
|
||||||
|
Понять, в каком состоянии проект перед переходом на новый класс задач:
|
||||||
|
|
||||||
|
- "покажи незакрытые договоры";
|
||||||
|
- "найди, кому мы должны";
|
||||||
|
- "найди, кто должен нам";
|
||||||
|
- "покажи остаток по счету".
|
||||||
|
|
||||||
|
И зафиксировать, что нужно поменять в рантайме, чтобы это работало как **LLM-интерфейс к живой 1С через MCP**.
|
||||||
|
|
||||||
|
## 2) Подтвержденные факты (as-is)
|
||||||
|
|
||||||
|
### 2.1 Assistant runtime сейчас snapshot-first
|
||||||
|
|
||||||
|
Текущий `AssistantDataLayer` поднимает данные из фиксированного набора JSON-файлов из `docs/ARCH/2020экспорт`, а не из полного корпуса:
|
||||||
|
|
||||||
|
- `llm_normalizer/backend/src/services/assistantDataLayer.ts:3379-3386`
|
||||||
|
- `llm_normalizer/backend/src/services/assistantDataLayer.ts:3401`
|
||||||
|
|
||||||
|
Размер подключенного snapshot-пакета:
|
||||||
|
|
||||||
|
- `docs/ARCH/2020экспорт` = **1.82 MB** (10 файлов).
|
||||||
|
|
||||||
|
### 2.2 Полный monthly-корпус есть, но в assistant runtime не используется
|
||||||
|
|
||||||
|
Объем полного корпуса:
|
||||||
|
|
||||||
|
- `docs/ARCH/2020_monthly_company_asof_full/_tmp_ndjson` = **6732 MB** (12 файлов),
|
||||||
|
- средний файл ≈ **561 MB**.
|
||||||
|
|
||||||
|
Итог: по текущему коду assistant работает по сильно урезанному слою данных относительно доступного объема.
|
||||||
|
|
||||||
|
### 2.3 MCP/live есть, но как overlay и только на части маршрутов
|
||||||
|
|
||||||
|
Live-путь в assistant включается только если:
|
||||||
|
|
||||||
|
- `FEATURE_ASSISTANT_MCP_RUNTIME_V1=true`
|
||||||
|
(`llm_normalizer/backend/src/config.ts:90-100`)
|
||||||
|
|
||||||
|
и только для маршрутов:
|
||||||
|
|
||||||
|
- `hybrid_store_plus_live`
|
||||||
|
- `live_mcp_drilldown`
|
||||||
|
(`llm_normalizer/backend/src/services/assistantDataLayer.ts:2863`)
|
||||||
|
|
||||||
|
Для `store_canonical` live не используется.
|
||||||
|
|
||||||
|
### 2.4 Claim-bound live план в `assistantDataLayer` ориентирован на 3 семейства
|
||||||
|
|
||||||
|
`buildLiveMcpCallPlan(...)` имеет claim-ветки:
|
||||||
|
|
||||||
|
- `prove_fixed_asset_amortization_coverage` (`assistantDataLayer.ts:348`)
|
||||||
|
- `prove_vat_chain_completeness` (`assistantDataLayer.ts:396`)
|
||||||
|
- `prove_rbp_tail_state` (`assistantDataLayer.ts:460`)
|
||||||
|
|
||||||
|
Остальное уходит в `claim_type: null` + generic live probe (`assistantDataLayer.ts:444`).
|
||||||
|
|
||||||
|
Это не покрывает "простые адресные запросы" как отдельный runtime-класс.
|
||||||
|
|
||||||
|
### 2.5 Route-дисциплина сейчас заточена под Stage 4 глубинные цепочки
|
||||||
|
|
||||||
|
В `routeHintAdapter` есть жесткие query-class rules:
|
||||||
|
|
||||||
|
- `exact_object_trace -> live_mcp_drilldown` (`routeHintAdapter.ts:86-87`)
|
||||||
|
- `canonical_fact_lookup -> store_canonical` (`routeHintAdapter.ts:149-150`)
|
||||||
|
|
||||||
|
В результате простые lookup-вопросы по умолчанию тяготеют к `store_canonical` (snapshot), а не к MCP-first.
|
||||||
|
|
||||||
|
### 2.6 Postgres в assistant runtime фактически не активен
|
||||||
|
|
||||||
|
По проекту:
|
||||||
|
|
||||||
|
- в `.env.example` дефолт `CANONICAL_DB_URL=sqlite:///...`
|
||||||
|
(`.env.example:18`, `README.md:89`)
|
||||||
|
- `canonical_layer/store.py` поддерживает и SQLite, и Postgres через SQLAlchemy
|
||||||
|
(`canonical_layer/store.py:55`, `canonical_layer/store.py:59`)
|
||||||
|
|
||||||
|
На момент аудита:
|
||||||
|
|
||||||
|
- локально есть `data/canonical_store.db` (SQLite);
|
||||||
|
- активного процесса `postgres` не обнаружено.
|
||||||
|
|
||||||
|
Важно: текущий `llm_normalizer/backend` **не использует** `canonical_layer` store напрямую в assistant execution path.
|
||||||
|
|
||||||
|
## 3) Главный технический вывод
|
||||||
|
|
||||||
|
Зафиксирован статус:
|
||||||
|
|
||||||
|
**SNAPSHOT_PRIMARY_WITH_OPTIONAL_LIVE_OVERLAY_CONFIRMED**
|
||||||
|
|
||||||
|
То есть:
|
||||||
|
|
||||||
|
- live-инфраструктура есть;
|
||||||
|
- но архитектурно основной путь ассистента по-прежнему snapshot-first;
|
||||||
|
- адресные "быстрые" бизнес-запросы как отдельный MCP-first runtime-класс пока не оформлены.
|
||||||
|
|
||||||
|
## 4) Что точно не бьется с новой задачей
|
||||||
|
|
||||||
|
1. `store_canonical` = snapshot path, а нам нужен live-first для адресных запросов.
|
||||||
|
2. Нет отдельного address-intent и address-query planner.
|
||||||
|
3. Нет acceptance-метрик для "быстрого доступа к сущностям" (не reasoning-heavy).
|
||||||
|
4. Нет отдельного answer contract под tabular/list-ответы для live lookup.
|
||||||
|
|
||||||
|
## 5) Рамка изменения (без слома Stage 4 deep path)
|
||||||
|
|
||||||
|
Меняем не всю архитектуру, а добавляем новый lane:
|
||||||
|
|
||||||
|
- `address_query_runtime` как отдельный класс в существующем assistant pipeline;
|
||||||
|
- приоритет источника для этого класса: `live_mcp` (mandatory), snapshot только как явно маркированный fallback;
|
||||||
|
- Stage 4 deep chain path оставляем как есть.
|
||||||
|
|
||||||
|
## 6) Финальный verdict аудита
|
||||||
|
|
||||||
|
**MCP_INFRA_EXISTS_BUT_ADDRESS_RUNTIME_NOT_IMPLEMENTED**
|
||||||
|
|
||||||
|
Новый функционал реализуем через отдельный MCP-first address lane, без тотального рефакторинга текущего Stage 4 chain runtime.
|
||||||
|
|
||||||
+125
@@ -0,0 +1,125 @@
|
|||||||
|
# Target Architecture — MCP-first Address Queries (Stage 4)
|
||||||
|
|
||||||
|
Дата: 2026-03-29
|
||||||
|
|
||||||
|
## 1) Что вводим
|
||||||
|
|
||||||
|
Добавляем в текущий assistant runtime новый режим:
|
||||||
|
|
||||||
|
- `question_mode = address_query`
|
||||||
|
|
||||||
|
Это не замена deep-chain логики Stage 4, а параллельный "быстрый" lane для адресных вопросов.
|
||||||
|
|
||||||
|
## 2) Типы вопросов для первого релиза (Address V1)
|
||||||
|
|
||||||
|
Минимальный набор:
|
||||||
|
|
||||||
|
1. `list_open_contracts`
|
||||||
|
2. `list_payables_counterparties` (кому мы должны)
|
||||||
|
3. `list_receivables_counterparties` (кто должен нам)
|
||||||
|
4. `account_balance_snapshot` (остатки по счету / счетам)
|
||||||
|
5. `open_items_by_counterparty_or_contract` (незакрытые хвосты по контрагенту/договору)
|
||||||
|
|
||||||
|
## 3) Принцип источников данных
|
||||||
|
|
||||||
|
Для `address_query`:
|
||||||
|
|
||||||
|
- primary source: `MCP/live` (обязательно);
|
||||||
|
- snapshot-source: только fallback с явной маркировкой;
|
||||||
|
- запрещено молча подменять live на snapshot.
|
||||||
|
|
||||||
|
Правило ответа:
|
||||||
|
|
||||||
|
- если live недоступен: честный `DATA_UNAVAILABLE_LIVE`;
|
||||||
|
- если live доступен, но пусто: честный `NO_MATCH_FOR_FILTERS`;
|
||||||
|
- если live дал строки: `FACTUAL_LIST`/`FACTUAL_SUMMARY`.
|
||||||
|
|
||||||
|
## 4) Pipeline (встраивание в текущую архитектуру)
|
||||||
|
|
||||||
|
Новая ветка поверх текущего пайплайна:
|
||||||
|
|
||||||
|
1. `Normalizer` -> определяет `question_mode=address_query` и `address_intent`.
|
||||||
|
2. `AddressIntentResolver` -> фиксирует intent + обязательные фильтры (period/account/counterparty/contract).
|
||||||
|
3. `AddressQueryPlanner` -> выбирает MCP recipe (query template + params).
|
||||||
|
4. `McpExecutor` -> исполняет 1..N live-вызовов.
|
||||||
|
5. `AddressResultMaterializer` -> нормализует строки в табличный вид + totals.
|
||||||
|
6. `AddressAnswerComposer` -> короткий ответ + список + ограничения.
|
||||||
|
|
||||||
|
## 5) MCP query recipes (контракт)
|
||||||
|
|
||||||
|
Для каждого intent хранится recipe:
|
||||||
|
|
||||||
|
- `recipe_id`
|
||||||
|
- `purpose`
|
||||||
|
- `query_template`
|
||||||
|
- `required_params`
|
||||||
|
- `optional_params`
|
||||||
|
- `output_schema`
|
||||||
|
- `sort/default_limit`
|
||||||
|
|
||||||
|
Примеры базовых рецептов:
|
||||||
|
|
||||||
|
- `address.open_contracts.by_period`
|
||||||
|
- `address.payables.counterparty_totals`
|
||||||
|
- `address.receivables.counterparty_totals`
|
||||||
|
- `address.balance.by_account`
|
||||||
|
- `address.open_items.by_counterparty_contract`
|
||||||
|
|
||||||
|
## 6) Контракт ответа (Address mode)
|
||||||
|
|
||||||
|
Форматы:
|
||||||
|
|
||||||
|
1. `FACTUAL_LIST`
|
||||||
|
Короткий вывод + список строк (N top) + totals.
|
||||||
|
|
||||||
|
2. `FACTUAL_SUMMARY`
|
||||||
|
Если строк много: агрегат + top контрагенты + рекомендация уточнить фильтры.
|
||||||
|
|
||||||
|
3. `LIMITED_WITH_REASON`
|
||||||
|
Если live недоступен/ошибка/нехватка фильтров.
|
||||||
|
|
||||||
|
Обязательные поля debug:
|
||||||
|
|
||||||
|
- `question_mode`
|
||||||
|
- `address_intent`
|
||||||
|
- `recipe_id`
|
||||||
|
- `required_filters`
|
||||||
|
- `resolved_filters`
|
||||||
|
- `mcp_calls[]`
|
||||||
|
- `rows_fetched`
|
||||||
|
- `rows_matched`
|
||||||
|
- `result_mode`
|
||||||
|
|
||||||
|
## 7) Совместимость с текущим Stage 4
|
||||||
|
|
||||||
|
Не ломаем текущие chain-ветки:
|
||||||
|
|
||||||
|
- `settlements_60_62`, `vat_document_register_book`, `month_close_costs_20_44`, `fixed_asset_amortization` остаются.
|
||||||
|
- `address_query` включается только при явном address-intent.
|
||||||
|
|
||||||
|
Приоритет:
|
||||||
|
|
||||||
|
- если вопрос "why/how/prove/chain" -> текущий deep path;
|
||||||
|
- если вопрос "show/list/find/open/balance" -> address path.
|
||||||
|
|
||||||
|
## 8) Границы (что не делаем)
|
||||||
|
|
||||||
|
1. Не вводим новый proof engine.
|
||||||
|
2. Не расширяем домены beyond P0/P1 для V1.
|
||||||
|
3. Не делаем большой redesign routing.
|
||||||
|
4. Не зависим от Postgres как обязательного prereq для Address V1.
|
||||||
|
|
||||||
|
## 9) Техническое решение по Postgres
|
||||||
|
|
||||||
|
Коротко:
|
||||||
|
|
||||||
|
- Postgres оставляем как optional storage path для canonical layer;
|
||||||
|
- Address V1 делаем MCP-first без блокировки на миграцию в Postgres;
|
||||||
|
- отдельный migration pack можно делать потом, когда будет нужна materialized аналитика/кеши.
|
||||||
|
|
||||||
|
## 10) Архитектурный verdict
|
||||||
|
|
||||||
|
**ADDRESS_LANE_MCP_FIRST_IS_COMPATIBLE_WITH_CURRENT_STAGE4_RUNTIME**
|
||||||
|
|
||||||
|
То есть новый функционал можно внедрить итеративно, не вынося проект в тяжелый рефактор.
|
||||||
|
|
||||||
+148
@@ -0,0 +1,148 @@
|
|||||||
|
# Execution Plan — Address Runtime (Wave A..D)
|
||||||
|
|
||||||
|
Дата: 2026-03-29
|
||||||
|
Фокус: быстрый LLM-интерфейс к 1С сущностям через MCP/live.
|
||||||
|
|
||||||
|
## Общий подход
|
||||||
|
|
||||||
|
Делаем отдельный пакет, без большого неразмеченного рефакторинга:
|
||||||
|
|
||||||
|
- Wave A: baseline + contracts
|
||||||
|
- Wave B: runtime lane + planner
|
||||||
|
- Wave C: recipes + answer contract
|
||||||
|
- Wave D: live rerun + acceptance
|
||||||
|
|
||||||
|
## Wave A — Baseline & Contracts
|
||||||
|
|
||||||
|
### Цель
|
||||||
|
|
||||||
|
Зафиксировать source-of-truth и контракты перед кодом.
|
||||||
|
|
||||||
|
### Что делаем
|
||||||
|
|
||||||
|
1. Вводим `question_mode=address_query`.
|
||||||
|
2. Фиксируем V1 intents (5 штук).
|
||||||
|
3. Фиксируем `address_query_recipe` контракт.
|
||||||
|
4. Фиксируем обязательные debug поля и run-артефакты.
|
||||||
|
|
||||||
|
### Артефакты
|
||||||
|
|
||||||
|
- `docs/ADDRESS/runs/<run_id>/README.md`
|
||||||
|
- `run_summary.json`
|
||||||
|
- `address_intent_contract.md`
|
||||||
|
- `address_recipe_contract.md`
|
||||||
|
|
||||||
|
## Wave B — Runtime Lane
|
||||||
|
|
||||||
|
### Цель
|
||||||
|
|
||||||
|
Встроить новый lane в текущий assistant pipeline.
|
||||||
|
|
||||||
|
### Что делаем
|
||||||
|
|
||||||
|
1. Добавляем `AddressIntentResolver`.
|
||||||
|
2. Добавляем `AddressQueryPlanner`.
|
||||||
|
3. Добавляем source policy:
|
||||||
|
- `address_query => live_required=true`
|
||||||
|
- fallback на snapshot только явно и с limitation.
|
||||||
|
4. Разводим маршруты:
|
||||||
|
- deep reasoning path не трогаем;
|
||||||
|
- address path идет отдельной веткой.
|
||||||
|
|
||||||
|
### Acceptance
|
||||||
|
|
||||||
|
- Address intent корректно выделяется на контрольном наборе.
|
||||||
|
- Для address-intent не происходит тихого ухода в snapshot-first.
|
||||||
|
|
||||||
|
## Wave C — Query Recipes & Answer Contract
|
||||||
|
|
||||||
|
### Цель
|
||||||
|
|
||||||
|
Сделать рабочие адресные ответы по MCP.
|
||||||
|
|
||||||
|
### Что делаем
|
||||||
|
|
||||||
|
1. Реализуем минимум 5 MCP recipes (по intent V1).
|
||||||
|
2. Делаем materializer:
|
||||||
|
- rows -> normalized list,
|
||||||
|
- totals,
|
||||||
|
- stable output schema.
|
||||||
|
3. Добавляем `AddressAnswerComposer`:
|
||||||
|
- `FACTUAL_LIST`,
|
||||||
|
- `FACTUAL_SUMMARY`,
|
||||||
|
- `LIMITED_WITH_REASON`.
|
||||||
|
|
||||||
|
### Acceptance
|
||||||
|
|
||||||
|
- На expected-positive вопросах есть непустой factual output.
|
||||||
|
- Ошибки live не маскируются, false factual = 0.
|
||||||
|
|
||||||
|
## Wave D — Live Replay & Acceptance
|
||||||
|
|
||||||
|
### Цель
|
||||||
|
|
||||||
|
Проверить live-сценарии на реальных адресных вопросах.
|
||||||
|
|
||||||
|
### Контрольный набор (минимум)
|
||||||
|
|
||||||
|
1. Покажи незакрытые договоры.
|
||||||
|
2. Кому мы должны денег.
|
||||||
|
3. Кто должен нам денег.
|
||||||
|
4. Остатки по счету 60 (или 62) на текущую дату.
|
||||||
|
5. Незакрытые позиции по конкретному контрагенту.
|
||||||
|
|
||||||
|
### Метрики
|
||||||
|
|
||||||
|
1. `address_intent_resolution_rate >= 0.95`
|
||||||
|
2. `address_live_call_success_rate >= 0.95`
|
||||||
|
3. `address_non_empty_result_rate > 0` на positive-кейсах
|
||||||
|
4. `address_false_factual_rate = 0`
|
||||||
|
5. `address_snapshot_fallback_rate` (должна быть низкой и явной)
|
||||||
|
|
||||||
|
### Обязательные артефакты
|
||||||
|
|
||||||
|
- `chat_export_address_live.md`
|
||||||
|
- `debug_payloads/`
|
||||||
|
- `live_call_inventory.json`
|
||||||
|
- `address_result_matrix.md`
|
||||||
|
- `address_failure_breakdown.json`
|
||||||
|
|
||||||
|
## Run-структура (обязательно)
|
||||||
|
|
||||||
|
Все прогоны только сюда:
|
||||||
|
|
||||||
|
- `docs/ADDRESS/runs/<YYYY-MM-DD>_<PackName>/`
|
||||||
|
|
||||||
|
## Риски и анти-риски
|
||||||
|
|
||||||
|
Риск:
|
||||||
|
|
||||||
|
- смешение deep-chain и address-lane в одном вопросе.
|
||||||
|
|
||||||
|
Контрмера:
|
||||||
|
|
||||||
|
- rule-based switch по `question_mode` + explicit fallback в mixed-mode.
|
||||||
|
|
||||||
|
Риск:
|
||||||
|
|
||||||
|
- деградация в silent snapshot.
|
||||||
|
|
||||||
|
Контрмера:
|
||||||
|
|
||||||
|
- mandatory debug flag `live_required_for_mode=true`,
|
||||||
|
- limitation если live недоступен.
|
||||||
|
|
||||||
|
## Финальный критерий пакета
|
||||||
|
|
||||||
|
Пакет считается принятым, когда:
|
||||||
|
|
||||||
|
1. Address intent стабильно маршрутизируется в MCP-first lane.
|
||||||
|
2. На части live-кейсов система дает быстрый factual ответ.
|
||||||
|
3. Нет ложной "доказанности" и нет молчаливой подмены источника.
|
||||||
|
|
||||||
|
Verdict:
|
||||||
|
|
||||||
|
- `ADDRESS_RUNTIME_V1_READY`
|
||||||
|
- или `ADDRESS_RUNTIME_V1_READY_WITH_LIMITATIONS`
|
||||||
|
- или `ADDRESS_RUNTIME_V1_NOT_READY`
|
||||||
|
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
# ADDRESS Track (MCP-first)
|
||||||
|
|
||||||
|
Этот раздел фиксирует разворот Stage 4 в сторону "адресных" пользовательских запросов:
|
||||||
|
|
||||||
|
- быстро найти сущности;
|
||||||
|
- показать список и статус (есть/нет, закрыто/не закрыто);
|
||||||
|
- получить остатки/долги/контрагентов по текущему состоянию базы.
|
||||||
|
|
||||||
|
Ключевой принцип трека: **MCP/live-first**, а не snapshot-first.
|
||||||
|
|
||||||
|
## Документы
|
||||||
|
|
||||||
|
1. `1 - architecture_audit_mcp_first_address_runtime_2026-03-29.md`
|
||||||
|
Технический аудит текущего состояния и ограничений.
|
||||||
|
|
||||||
|
2. `2 - target_architecture_mcp_first_address_queries_stage4_2026-03-29.md`
|
||||||
|
Целевая архитектура под адресные запросы.
|
||||||
|
|
||||||
|
3. `3 - execution_plan_address_runtime_waveA_waveD_2026-03-29.md`
|
||||||
|
Пошаговый план реализации без большого рефакторинга.
|
||||||
|
|
||||||
|
## Раны и артефакты
|
||||||
|
|
||||||
|
Все новые прогоны и доказательные артефакты складываются в:
|
||||||
|
|
||||||
|
- `docs/ADDRESS/runs/`
|
||||||
|
|
||||||
|
Базовый аудитный run:
|
||||||
|
|
||||||
|
- `docs/ADDRESS/runs/2026-03-29_Address_Runtime_Pivot_Baseline/`
|
||||||
|
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
# Run README
|
||||||
|
|
||||||
|
Run ID: `2026-03-29_Address_Query_Entity_Inventory_2020`
|
||||||
|
Date: 2026-03-29
|
||||||
|
|
||||||
|
## Goal
|
||||||
|
|
||||||
|
Провести первичную системную инвентаризацию сущностей 1С по monthly snapshot-корпусу 2020 и подготовить базу для `address_query` runtime проектирования.
|
||||||
|
|
||||||
|
## Input
|
||||||
|
|
||||||
|
- `docs/ARCH/2020_monthly_company_asof_full/_tmp_ndjson`
|
||||||
|
- 12 monthly NDJSON files (2020-01..2020-12)
|
||||||
|
|
||||||
|
## Result
|
||||||
|
|
||||||
|
- processed_rows: `7039648`
|
||||||
|
- parse_errors: `0`
|
||||||
|
- total_entities: `286`
|
||||||
|
- family_count: `10`
|
||||||
|
|
||||||
|
## Artifacts
|
||||||
|
|
||||||
|
- `entity_inventory_full.json`
|
||||||
|
- `entity_inventory_p0_candidates.json`
|
||||||
|
- `entity_inventory_p1_candidates.json`
|
||||||
|
- `entity_inventory_p2_candidates.json`
|
||||||
|
- `entity_inventory_relation_support_sets.json`
|
||||||
|
- `entity_inventory_intent_support_sets.json`
|
||||||
|
- `entity_inventory_readable_summary.json`
|
||||||
|
|
||||||
|
## Notes
|
||||||
|
|
||||||
|
- В части labels исходного экспорта наблюдается cp1251/utf8 mojibake.
|
||||||
|
- Для проектных решений использовались устойчивые структурные признаки: family prefixes, relations, key/filter patterns, row density.
|
||||||
|
- Этот run используется как source input для файлов в `docs/ADDRESS/address_query/`.
|
||||||
+21448
File diff suppressed because it is too large
Load Diff
+5739
File diff suppressed because it is too large
Load Diff
+10430
File diff suppressed because it is too large
Load Diff
+4474
File diff suppressed because it is too large
Load Diff
+5101
File diff suppressed because it is too large
Load Diff
+6466
File diff suppressed because it is too large
Load Diff
+7849
File diff suppressed because it is too large
Load Diff
+34
@@ -0,0 +1,34 @@
|
|||||||
|
{
|
||||||
|
"run_id": "2026-03-29_Address_Query_Entity_Inventory_2020",
|
||||||
|
"generated_at": "2026-03-29T14:40:00+03:00",
|
||||||
|
"status": "completed",
|
||||||
|
"scope": "entity_inventory_for_address_query_runtime_design",
|
||||||
|
"input": {
|
||||||
|
"source_dir": "docs/ARCH/2020_monthly_company_asof_full/_tmp_ndjson",
|
||||||
|
"files_count": 12,
|
||||||
|
"year": 2020
|
||||||
|
},
|
||||||
|
"metrics": {
|
||||||
|
"processed_rows": 7039648,
|
||||||
|
"parse_errors": 0,
|
||||||
|
"total_entities": 286,
|
||||||
|
"families": 10,
|
||||||
|
"p0_candidates": 118,
|
||||||
|
"p1_candidates": 61,
|
||||||
|
"p2_candidates": 107
|
||||||
|
},
|
||||||
|
"limits": [
|
||||||
|
"cp1251_utf8_mojibake_labels_present_in_source_exports",
|
||||||
|
"semantic_label_cleanup_required_before_production_recipe_binding"
|
||||||
|
],
|
||||||
|
"artifacts": [
|
||||||
|
"README.md",
|
||||||
|
"entity_inventory_full.json",
|
||||||
|
"entity_inventory_p0_candidates.json",
|
||||||
|
"entity_inventory_p1_candidates.json",
|
||||||
|
"entity_inventory_p2_candidates.json",
|
||||||
|
"entity_inventory_relation_support_sets.json",
|
||||||
|
"entity_inventory_intent_support_sets.json",
|
||||||
|
"entity_inventory_readable_summary.json"
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
# ADDRESS Query Docs
|
||||||
|
|
||||||
|
Дата: 2026-03-29
|
||||||
|
|
||||||
|
## Документы
|
||||||
|
|
||||||
|
- `entity_map_1c_2020.md` - полная карта сущностей по snapshot 2020.
|
||||||
|
- `address_scenario_matrix.md` - матрица сценариев (question -> intent -> recipe).
|
||||||
|
- `query_recipes_v1.md` - каталог фильтров и recipe-контракты.
|
||||||
|
- `runtime_integration_plan.md` - план встраивания `question_mode=address_query`.
|
||||||
|
- `address_runtime_contracts.md` - контракты runtime/debug/result для address lane.
|
||||||
|
- `runtime_readiness_matrix_v1.md` - матрица structural vs runtime readiness.
|
||||||
|
- `known_positive_live_suite_v1.md` - базовый template positive-evidence suite.
|
||||||
|
- `data_aware_positive_acceptance_suite_v1.md` - M2.3 canonical guide для curated live acceptance.
|
||||||
|
- `address_query_bootstrap_report_2026-03-29.md` - итоговая сводка bootstrap этапа.
|
||||||
|
|
||||||
|
## Связанные run-паки
|
||||||
|
|
||||||
|
- `docs/ADDRESS/runs/2026-03-29_Address_Query_Entity_Inventory_2020/`
|
||||||
|
- `docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_2_Documents_BankOps_By_Counterparty/`
|
||||||
|
- `docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3_DocumentsFormingBalance_DataAwareAcceptance/`
|
||||||
|
- `docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3A_Stage_Diagnostic_Materialization/`
|
||||||
|
- `docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3B_AccountScope_Mode_Tuning/`
|
||||||
|
|
||||||
@@ -0,0 +1,72 @@
|
|||||||
|
# Address Query Bootstrap Report (Stage 4)
|
||||||
|
|
||||||
|
Дата: 2026-03-29
|
||||||
|
|
||||||
|
## 1) Что сделано в этом пакете
|
||||||
|
|
||||||
|
Подготовлен проектный комплект для перехода к отдельному runtime режиму `question_mode=address_query`:
|
||||||
|
|
||||||
|
- `entity_map_1c_2020.md` — полная карта сущностей по 12 snapshot 2020.
|
||||||
|
- `address_scenario_matrix.md` — матрица адресных сценариев и intent mapping.
|
||||||
|
- `query_recipes_v1.md` — draft рецептов, фильтров, result/answer контракт.
|
||||||
|
- `runtime_integration_plan.md` — схема интеграции в текущую архитектуру.
|
||||||
|
|
||||||
|
## 2) P0 сущности (для Address V1)
|
||||||
|
|
||||||
|
P0 ядро (direct factual lookup):
|
||||||
|
|
||||||
|
- `AccountingRegister_Хозрасчетный_RecordType`
|
||||||
|
- `AccountingRegister_Хозрасчетный`
|
||||||
|
- `Document_СписаниеСРасчетногоСчета`
|
||||||
|
- `Document_СписаниеСРасчетногоСчета_РасшифровкаПлатежа`
|
||||||
|
- `Document_ПоступлениеНаРасчетныйСчет`
|
||||||
|
- `Document_ПоступлениеНаРасчетныйСчет_РасшифровкаПлатежа`
|
||||||
|
- `Document_АктСверкиВзаиморасчетов*`
|
||||||
|
- `Catalog_ДоговорыКонтрагентов`
|
||||||
|
- `DocumentJournal_ДокументыПоставщиков`
|
||||||
|
- `DocumentJournal_ДокументыПокупателей`
|
||||||
|
- `DocumentJournal_БанковскиеВыписки`
|
||||||
|
- `ChartOfAccounts_Хозрасчетный`
|
||||||
|
|
||||||
|
Важно: `Catalog_Контрагенты`, `Catalog_Организации`, `Catalog_БанковскиеСчета` остаются обязательными измерениями для фильтров, хотя в auto-triage они помечены как P1.
|
||||||
|
|
||||||
|
## 3) P0 address-intents
|
||||||
|
|
||||||
|
- `list_open_contracts`
|
||||||
|
- `list_payables_counterparties`
|
||||||
|
- `list_receivables_counterparties`
|
||||||
|
- `account_balance_snapshot`
|
||||||
|
- `open_items_by_counterparty_or_contract`
|
||||||
|
|
||||||
|
Дополнительно в v1.1 (готово к быстрому включению):
|
||||||
|
|
||||||
|
- `list_documents_by_counterparty`
|
||||||
|
- `list_documents_by_contract`
|
||||||
|
- `documents_forming_balance`
|
||||||
|
|
||||||
|
## 4) Предлагаемый runtime flow
|
||||||
|
|
||||||
|
`incoming question -> mode classifier -> address intent -> filter extraction -> recipe selection -> MCP call -> result materialization -> factual composer`
|
||||||
|
|
||||||
|
Где:
|
||||||
|
|
||||||
|
- address lane работает `MCP/live-first`;
|
||||||
|
- deep-analysis lane остается отдельным и неизмененным;
|
||||||
|
- fallback всегда явный, без silent подмены источника.
|
||||||
|
|
||||||
|
## 5) Риски и ограничения (зафиксированы)
|
||||||
|
|
||||||
|
- В snapshot встречается cp1251/utf8 mojibake для части labels (требуется декодирование labels-map на этапе реализации).
|
||||||
|
- Для части сущностей нужен business resolver (name->id для контрагента/договора).
|
||||||
|
- Без whitelist recipe нельзя безопасно открывать свободный query builder.
|
||||||
|
|
||||||
|
## 6) Что идет в следующую итерацию (с бизнес-проработкой)
|
||||||
|
|
||||||
|
1. Утвердить final white-list P0 recipe (с бухгалтером/аналитиком).
|
||||||
|
2. Зафиксировать справочники нормализации фильтров (контрагент/договор/счет).
|
||||||
|
3. Включить `question_mode=address_query` в контракт normalizer и debug.
|
||||||
|
4. Сделать первый live rerun pack по 5 P0 вопросам.
|
||||||
|
|
||||||
|
## 7) Финальный вывод этого этапа
|
||||||
|
|
||||||
|
Архитектура проекта готова к добавлению отдельного address-query runtime без ломки deep-analysis. Основной технический вектор корректный: переход на `MCP/live-first` для простых адресных запросов с recipe-ограничениями.
|
||||||
@@ -0,0 +1,123 @@
|
|||||||
|
# Address Runtime Contracts V1 (M2.3b)
|
||||||
|
|
||||||
|
Дата: 2026-03-29
|
||||||
|
|
||||||
|
## Runtime Policy
|
||||||
|
|
||||||
|
- Runtime lane is `data-agnostic`: no hardcoded counterparties/contracts/accounts from one concrete base.
|
||||||
|
- Acceptance lane is `data-aware`: positive cases are curated after exploratory live pass.
|
||||||
|
- Address lane remains MCP/live-first, whitelist-only, read-only.
|
||||||
|
|
||||||
|
## Input Contract
|
||||||
|
|
||||||
|
- `question_mode`: `address_query | deep_analysis | unsupported`
|
||||||
|
- `address_intent`: nullable enum
|
||||||
|
- `resolved_filters`: object
|
||||||
|
- `missing_filters`: string[]
|
||||||
|
|
||||||
|
## Debug Contract
|
||||||
|
|
||||||
|
- `detected_mode`
|
||||||
|
- `query_shape`
|
||||||
|
- `detected_intent`
|
||||||
|
- `runtime_readiness`
|
||||||
|
- `is_compound_query`
|
||||||
|
- `subqueries_count`
|
||||||
|
- `resolved_entities`
|
||||||
|
- `resolved_filters`
|
||||||
|
- `missing_filters`
|
||||||
|
- `selected_recipe_ids`
|
||||||
|
- `selected_recipe`
|
||||||
|
- `account_scope_mode`
|
||||||
|
- `account_scope_fallback_applied`
|
||||||
|
- resolver block:
|
||||||
|
- `anchor_type`
|
||||||
|
- `anchor_value_raw`
|
||||||
|
- `anchor_value_resolved`
|
||||||
|
- `resolver_confidence`
|
||||||
|
- `ambiguity_count`
|
||||||
|
- MCP/evidence flow block:
|
||||||
|
- `mcp_call_status`
|
||||||
|
- `rows_fetched`
|
||||||
|
- `raw_rows_received`
|
||||||
|
- `rows_after_account_scope`
|
||||||
|
- `rows_materialized`
|
||||||
|
- `rows_after_recipe_filter`
|
||||||
|
- `rows_matched`
|
||||||
|
- `raw_row_keys_sample`
|
||||||
|
- `materialization_drop_reason`
|
||||||
|
- `response_type`
|
||||||
|
- `limited_reason_category`
|
||||||
|
- `fallback_reason`
|
||||||
|
|
||||||
|
## Output Contract
|
||||||
|
|
||||||
|
### FACTUAL_LIST
|
||||||
|
|
||||||
|
- short summary
|
||||||
|
- rows[]
|
||||||
|
- totals
|
||||||
|
|
||||||
|
### FACTUAL_SUMMARY
|
||||||
|
|
||||||
|
- aggregate summary
|
||||||
|
- top rows
|
||||||
|
- optional drilldown hints
|
||||||
|
|
||||||
|
### LIMITED_WITH_REASON
|
||||||
|
|
||||||
|
- explicit reason code
|
||||||
|
- missing filters / data availability note
|
||||||
|
|
||||||
|
## Limited Reason Taxonomy
|
||||||
|
|
||||||
|
- `empty_match` - live-запрос выполнен, но по фильтру нет строк.
|
||||||
|
- `missing_anchor` - не хватает обязательного якоря (контрагент/договор/счет/период).
|
||||||
|
- `recipe_visibility_gap` - текущий recipe не материализует нужную аналитику.
|
||||||
|
- `execution_error` - ошибка MCP/инфраструктуры/feature-flag.
|
||||||
|
- `unsupported` - вопрос не покрыт address-intent V1.
|
||||||
|
|
||||||
|
## Runtime Readiness Status
|
||||||
|
|
||||||
|
- `LIVE_QUERYABLE`
|
||||||
|
- `LIVE_QUERYABLE_WITH_LIMITS`
|
||||||
|
- `REQUIRES_SPECIALIZED_RECIPE`
|
||||||
|
- `DEEP_ONLY`
|
||||||
|
- `UNKNOWN`
|
||||||
|
|
||||||
|
## MCP Stage Status Taxonomy (M2.3a)
|
||||||
|
|
||||||
|
- `skipped`
|
||||||
|
- `error`
|
||||||
|
- `no_raw_rows`
|
||||||
|
- `raw_rows_received_but_not_materialized`
|
||||||
|
- `materialized_but_not_matched`
|
||||||
|
- `matched_non_empty`
|
||||||
|
|
||||||
|
## Materialization Drop Reasons (M2.3a)
|
||||||
|
|
||||||
|
- `none`
|
||||||
|
- `dropped_by_account_scope_filter`
|
||||||
|
- `missing_period_and_registrator_fields`
|
||||||
|
- `missing_period_field`
|
||||||
|
- `missing_registrator_field`
|
||||||
|
- `unknown_row_shape`
|
||||||
|
|
||||||
|
## Account Scope Strategy (M2.3b)
|
||||||
|
|
||||||
|
- `strict` - account scope is mandatory and applied as a hard filter.
|
||||||
|
- `preferred` - account scope is applied first; if it yields zero rows while raw rows exist, runtime falls back to raw rows and continues matching.
|
||||||
|
|
||||||
|
## Compound Query Note
|
||||||
|
|
||||||
|
- `COMPOUND_FACTUAL_QUERY` currently remains detection-only.
|
||||||
|
- Multi-intent decomposition execution is planned for next increment.
|
||||||
|
|
||||||
|
## Guardrails
|
||||||
|
|
||||||
|
- whitelist recipes only
|
||||||
|
- read-only MCP
|
||||||
|
- no free-form query generation
|
||||||
|
- no silent source substitution
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,58 @@
|
|||||||
|
# Address Scenario Matrix (V1)
|
||||||
|
|
||||||
|
Дата: 2026-03-29
|
||||||
|
Режим: `question_mode=address_query` (отдельно от deep-analysis)
|
||||||
|
|
||||||
|
## Scope
|
||||||
|
|
||||||
|
Этот сценарный слой покрывает только direct factual lookup без тяжелого reasoning-chain:
|
||||||
|
|
||||||
|
- список объектов;
|
||||||
|
- агрегаты (остатки/долги/хвосты);
|
||||||
|
- drilldown от агрегата к документам.
|
||||||
|
|
||||||
|
Не покрывается в V1:
|
||||||
|
|
||||||
|
- "почему так произошло";
|
||||||
|
- доказательная причинно-следственная бухгалтерская интерпретация;
|
||||||
|
- сложные chain proof-вопросы (должны уходить в deep-analysis path).
|
||||||
|
|
||||||
|
## Matrix
|
||||||
|
|
||||||
|
| scenario_id | Пользовательский вопрос | intent | required_filters | optional_filters | target_entity_family | MCP recipe | expected_response_type | priority |
|
||||||
|
|---|---|---|---|---|---|---|---|---|
|
||||||
|
| AQ-P0-01 | Какие договоры не закрыты на текущую дату? | `list_open_contracts` | `as_of_date` | `organization`, `counterparty`, `limit`, `sort` | `NSI_CATALOG`, `ACCOUNTING_REGISTER`, `DOCUMENT` | `address.open_contracts.by_asof` | `FACTUAL_LIST` | P0 |
|
||||||
|
| AQ-P0-02 | Кому мы должны денег на сегодня? | `list_payables_counterparties` | `as_of_date` | `organization`, `account`, `limit`, `sort` | `ACCOUNTING_REGISTER`, `DOCUMENT`, `DOCUMENT_JOURNAL` | `address.payables.counterparty_totals` | `FACTUAL_SUMMARY` | P0 |
|
||||||
|
| AQ-P0-03 | Кто должен нам денег на сегодня? | `list_receivables_counterparties` | `as_of_date` | `organization`, `account`, `limit`, `sort` | `ACCOUNTING_REGISTER`, `DOCUMENT`, `DOCUMENT_JOURNAL` | `address.receivables.counterparty_totals` | `FACTUAL_SUMMARY` | P0 |
|
||||||
|
| AQ-P0-04 | Какой остаток по счету 60 на дату? | `account_balance_snapshot` | `account`, `as_of_date` | `organization`, `limit`, `sort` | `ACCOUNTING_REGISTER`, `CHART_OF_ACCOUNTS` | `address.account.balance_snapshot` | `FACTUAL_SUMMARY` | P0 |
|
||||||
|
| AQ-P0-05 | Какие хвосты висят по контрагенту X? | `open_items_by_counterparty_or_contract` | `counterparty`, `as_of_date` | `organization`, `contract`, `account`, `limit` | `ACCOUNTING_REGISTER`, `DOCUMENT` | `address.open_items.by_counterparty` | `FACTUAL_LIST` | P0 |
|
||||||
|
| AQ-P0-06 | Какие хвосты висят по договору Y? | `open_items_by_counterparty_or_contract` | `contract`, `as_of_date` | `organization`, `counterparty`, `account`, `limit` | `ACCOUNTING_REGISTER`, `DOCUMENT`, `NSI_CATALOG` | `address.open_items.by_contract` | `FACTUAL_LIST` | P0 |
|
||||||
|
| AQ-P0-07 | Покажи документы по контрагенту X за период | `list_documents_by_counterparty` | `counterparty`, `period_from`, `period_to` | `document_type`, `organization`, `limit`, `sort` | `DOCUMENT`, `DOCUMENT_JOURNAL` | `address.documents.by_counterparty` | `FACTUAL_LIST` | P0 |
|
||||||
|
| AQ-P0-07B | Покажи банковские операции по контрагенту X за период | `bank_operations_by_counterparty` | `counterparty` | `period_from`, `period_to`, `organization`, `limit`, `sort` | `DOCUMENT_JOURNAL`, `ACCOUNTING_REGISTER` | `address.bank_ops.by_counterparty` | `FACTUAL_LIST` | P0 |
|
||||||
|
| AQ-P0-08 | Покажи документы по договору Y за период | `list_documents_by_contract` | `contract`, `period_from`, `period_to` | `document_type`, `organization`, `limit`, `sort` | `DOCUMENT`, `DOCUMENT_JOURNAL`, `NSI_CATALOG` | `address.documents.by_contract` | `FACTUAL_LIST` | P0 |
|
||||||
|
| AQ-P0-09 | Какие документы формируют этот остаток по счету 62? | `documents_forming_balance` | `account`, `as_of_date` | `organization`, `counterparty`, `contract`, `limit` | `ACCOUNTING_REGISTER`, `DOCUMENT` | `address.balance.drilldown_documents` | `FACTUAL_LIST` | P0 |
|
||||||
|
| AQ-P1-10 | Дай обороты по счету 51 за период | `account_turnover_snapshot` | `account`, `period_from`, `period_to` | `organization`, `counterparty`, `limit` | `ACCOUNTING_REGISTER`, `DOCUMENT` | `address.account.turnover_snapshot` | `FACTUAL_SUMMARY` | P1 |
|
||||||
|
| AQ-P1-11 | Дай список документов по типу "СписаниеСРасчетногоСчета" за период | `list_documents_by_type` | `document_type`, `period_from`, `period_to` | `organization`, `counterparty`, `contract`, `limit` | `DOCUMENT`, `DOCUMENT_JOURNAL` | `address.documents.by_type` | `FACTUAL_LIST` | P1 |
|
||||||
|
| AQ-P2-12 | Покажи технические константы конфигурации | `unsupported_for_v1` | - | - | `CONSTANT` | - | `LIMITED_WITH_REASON` | P2 |
|
||||||
|
|
||||||
|
## Сценарные правила
|
||||||
|
|
||||||
|
- Если вопрос распознается как `address_query`, ответ строится только через recipe-based MCP path.
|
||||||
|
- Если обязательные фильтры не извлечены, вернуть `LIMITED_WITH_REASON` с указанием недостающих параметров.
|
||||||
|
- Если вопрос требует causal/proof reasoning, перевести в deep-analysis path.
|
||||||
|
- Для `as_of_date` по умолчанию используется текущая дата runtime (на момент этого документа: 2026-03-29), если пользователь явно не задал дату.
|
||||||
|
## Runtime status note (M2.3b)
|
||||||
|
|
||||||
|
Implemented in live runtime now:
|
||||||
|
- `list_documents_by_counterparty`
|
||||||
|
- `bank_operations_by_counterparty`
|
||||||
|
- `documents_forming_balance`
|
||||||
|
|
||||||
|
Still not implemented in runtime:
|
||||||
|
- `list_documents_by_contract`
|
||||||
|
|
||||||
|
Stage diagnostic note:
|
||||||
|
- strict account intents still show `raw_rows_received > 0`, but `rows_after_account_scope = 0`;
|
||||||
|
- preferred counterparty intents now reach `rows_materialized > 0`, but rows still drop at recipe/anchor filter stage;
|
||||||
|
- non-empty factual acceptance now requires resolver/filter tuning after materialization.
|
||||||
|
|
||||||
@@ -0,0 +1,51 @@
|
|||||||
|
# Address V1 Acceptance Pack (Draft)
|
||||||
|
|
||||||
|
Дата: 2026-03-29
|
||||||
|
|
||||||
|
## Required files in run folder
|
||||||
|
|
||||||
|
- `README.md`
|
||||||
|
- `run_summary.json`
|
||||||
|
- `address_case_matrix.md`
|
||||||
|
- `chat_export_address_live.md`
|
||||||
|
- `debug_payloads/`
|
||||||
|
- `live_call_inventory_address.json`
|
||||||
|
- `before_after_metrics.json`
|
||||||
|
- `limitations_register.md`
|
||||||
|
|
||||||
|
## Minimal metrics
|
||||||
|
|
||||||
|
- `address_mode_routing_accuracy`
|
||||||
|
- `address_intent_resolution_rate`
|
||||||
|
- `required_filter_resolution_rate`
|
||||||
|
- `live_call_success_rate`
|
||||||
|
- `factual_non_empty_rate`
|
||||||
|
- `false_factual_rate`
|
||||||
|
|
||||||
|
## Two mandatory suites
|
||||||
|
|
||||||
|
### A) Runtime/Routing suite
|
||||||
|
|
||||||
|
Checks:
|
||||||
|
|
||||||
|
- mode routing;
|
||||||
|
- intent resolution;
|
||||||
|
- query shape detection;
|
||||||
|
- limited reason taxonomy;
|
||||||
|
- no false factual.
|
||||||
|
|
||||||
|
### B) Positive Evidence suite
|
||||||
|
|
||||||
|
Checks:
|
||||||
|
|
||||||
|
- non-empty factual responses on pre-selected known-positive live cases;
|
||||||
|
- recipe-level positive yield;
|
||||||
|
- anchor resolution quality for counterparty/contract/account.
|
||||||
|
|
||||||
|
## Acceptance targets (V1)
|
||||||
|
|
||||||
|
- `address_intent_resolution_rate >= 0.9`
|
||||||
|
- `live_call_success_rate >= 0.9`
|
||||||
|
- `false_factual_rate = 0`
|
||||||
|
- no deep-analysis regression
|
||||||
|
- known-positive factual hit-rate must be tracked separately from broad dry-run prompts
|
||||||
@@ -0,0 +1,89 @@
|
|||||||
|
# Data-Aware Positive Acceptance Suite V1 (M2.3)
|
||||||
|
|
||||||
|
Date: 2026-03-29
|
||||||
|
|
||||||
|
## Purpose
|
||||||
|
|
||||||
|
Prove practical usefulness of address runtime on the current live base without introducing runtime hardcoding.
|
||||||
|
|
||||||
|
Policy:
|
||||||
|
|
||||||
|
- Runtime is data-agnostic.
|
||||||
|
- Acceptance is data-aware.
|
||||||
|
|
||||||
|
## How cases are selected
|
||||||
|
|
||||||
|
Phase A (mandatory): stage-diagnostic pass
|
||||||
|
|
||||||
|
1. Run 3-5 core scenarios and record row-stage counters:
|
||||||
|
- `raw_rows_received`
|
||||||
|
- `rows_after_account_scope`
|
||||||
|
- `rows_materialized`
|
||||||
|
- `rows_after_recipe_filter`
|
||||||
|
- `rows_matched`
|
||||||
|
2. Classify the first drop stage (`mcp_call_status` taxonomy).
|
||||||
|
3. Fix or narrow the dominant bottleneck before positive curation.
|
||||||
|
|
||||||
|
Phase B: curated positive pass
|
||||||
|
|
||||||
|
1. Run exploratory live pass by scenario groups.
|
||||||
|
2. Detect routes that return non-empty rows.
|
||||||
|
3. Curate acceptance cases from those routes.
|
||||||
|
4. Keep paired negative twins for safety checks.
|
||||||
|
|
||||||
|
No case values should be embedded into runtime rules.
|
||||||
|
|
||||||
|
## Required case matrix fields
|
||||||
|
|
||||||
|
- `case_id`
|
||||||
|
- `question`
|
||||||
|
- `intent`
|
||||||
|
- `query_shape`
|
||||||
|
- `filters`
|
||||||
|
- `resolver_path`
|
||||||
|
- `expected_recipe`
|
||||||
|
- `expected_response_type`
|
||||||
|
- `expected_non_empty`
|
||||||
|
- `notes`
|
||||||
|
|
||||||
|
## Mandatory scenario groups (M2.3)
|
||||||
|
|
||||||
|
- `account_balance_snapshot`
|
||||||
|
- `documents_by_counterparty`
|
||||||
|
- `bank_operations_by_counterparty`
|
||||||
|
- `documents_forming_balance`
|
||||||
|
|
||||||
|
## Metrics
|
||||||
|
|
||||||
|
- `data_aware_positive_case_count`
|
||||||
|
- `data_aware_positive_non_empty_rate`
|
||||||
|
- `data_aware_positive_factual_rate`
|
||||||
|
- `data_aware_positive_limited_rate`
|
||||||
|
- `data_aware_positive_false_factual_rate`
|
||||||
|
|
||||||
|
Hard rule:
|
||||||
|
|
||||||
|
- `data_aware_positive_false_factual_rate = 0`
|
||||||
|
|
||||||
|
Target (not hard gate across all bases):
|
||||||
|
|
||||||
|
- `data_aware_positive_non_empty_rate >= 0.60`
|
||||||
|
|
||||||
|
## Debug minimum for every case
|
||||||
|
|
||||||
|
- `detected_mode`
|
||||||
|
- `query_shape`
|
||||||
|
- `detected_intent`
|
||||||
|
- `selected_recipe`
|
||||||
|
- resolver block (`anchor_*`, `resolver_confidence`, `ambiguity_count`)
|
||||||
|
- flow block (`raw_rows_received`, `rows_materialized`, `rows_after_recipe_filter`, `rows_matched`)
|
||||||
|
- `runtime_readiness`
|
||||||
|
- `limited_reason_category`
|
||||||
|
|
||||||
|
## Output files in run-pack
|
||||||
|
|
||||||
|
- `data_aware_acceptance_case_matrix.md`
|
||||||
|
- `chat_export_data_aware_live.md`
|
||||||
|
- `live_call_inventory_address.json`
|
||||||
|
- `debug_payloads/`
|
||||||
|
- `run_summary.json`
|
||||||
@@ -0,0 +1,363 @@
|
|||||||
|
# Entity Map 1C 2020 (Address Query baseline)
|
||||||
|
|
||||||
|
Generated at: 2026-03-29T14:18:09.325Z
|
||||||
|
|
||||||
|
Source: `docs/ARCH/2020_monthly_company_asof_full/_tmp_ndjson` (12 months, year 2020).
|
||||||
|
|
||||||
|
Processed rows: **7039648**, parse errors: **0**, unique entities: **286**.
|
||||||
|
|
||||||
|
## Family Summary
|
||||||
|
|
||||||
|
| entity_family | entity_count | rows_total | P0 | P1 | P2 |
|
||||||
|
|---|---:|---:|---:|---:|---:|
|
||||||
|
| INFORMATION_REGISTER | 1 | 6300000 | 0 | 1 | 0 |
|
||||||
|
| DOCUMENT | 77 | 202636 | 77 | 0 | 0 |
|
||||||
|
| ACCOUNTING_REGISTER | 2 | 190244 | 2 | 0 | 0 |
|
||||||
|
| NSI_CATALOG | 50 | 140050 | 3 | 47 | 0 |
|
||||||
|
| DOCUMENT_JOURNAL | 12 | 126868 | 0 | 12 | 0 |
|
||||||
|
| ACCUMULATION_REGISTER | 36 | 73022 | 36 | 0 | 0 |
|
||||||
|
| CHART_OF_ACCOUNTS | 1 | 4452 | 0 | 1 | 0 |
|
||||||
|
| CONSTANT | 95 | 1140 | 0 | 0 | 95 |
|
||||||
|
| CHART_OF_CHARACTERISTIC_TYPES | 3 | 1128 | 0 | 0 | 3 |
|
||||||
|
| OTHER | 9 | 108 | 0 | 0 | 9 |
|
||||||
|
|
||||||
|
## Readability and Data Quality Notes
|
||||||
|
|
||||||
|
- Snapshot corpus is complete for 2020 (12 files, ~6.7 GB NDJSON) and processed without parse errors.
|
||||||
|
- Some `entity_name` and field labels in raw export are in cp1251/utf8 mojibake (for example `Р РЋР С—Р С‘...`).
|
||||||
|
- For design decisions we use family/type prefixes and relation structure as source of truth; exact RU labels require final decoding pass during implementation.
|
||||||
|
|
||||||
|
## Address-Query Readiness (By Result)
|
||||||
|
|
||||||
|
### Ready for P0 address-query (MCP/live-first target)
|
||||||
|
|
||||||
|
- `AccountingRegister_Хозрасчетный_RecordType`
|
||||||
|
- `AccountingRegister_Хозрасчетный`
|
||||||
|
- `Document_СписаниеСРасчетногоСчета`
|
||||||
|
- `Document_СписаниеСРасчетногоСчета_РасшифровкаПлатежа`
|
||||||
|
- `Document_ПоступлениеНаРасчетныйСчет`
|
||||||
|
- `Document_ПоступлениеНаРасчетныйСчет_РасшифровкаПлатежа`
|
||||||
|
- `Document_АктСверкиВзаиморасчетов`
|
||||||
|
- `Document_АктСверкиВзаиморасчетов_ПоДаннымОрганизации`
|
||||||
|
- `Document_АктСверкиВзаиморасчетов_СписокСчетов`
|
||||||
|
- `Catalog_ДоговорыКонтрагентов` (technically high value for filters and grouping)
|
||||||
|
- `DocumentJournal_ДокументыПоставщиков` / `DocumentJournal_ДокументыПокупателей` / `DocumentJournal_БанковскиеВыписки` (fast drilldown index)
|
||||||
|
|
||||||
|
### Visible but needs additional interpretation before production address-query
|
||||||
|
|
||||||
|
- `Catalog_Контрагенты`
|
||||||
|
- `Catalog_Организации`
|
||||||
|
- `Catalog_БанковскиеСчета`
|
||||||
|
- `ChartOfAccounts_Хозрасчетный`
|
||||||
|
- `Catalog_СтатьиДвиженияДенежныхСредств`
|
||||||
|
- `Catalog_ПодразделенияОрганизаций`
|
||||||
|
- `Catalog_ОсновныеСредства`
|
||||||
|
- `Catalog_РасходыБудущихПериодов`
|
||||||
|
### Not suitable for direct address-query without deeper reasoning
|
||||||
|
|
||||||
|
- `CONSTANT_*` entities (configuration constants)
|
||||||
|
- `CHART_OF_CHARACTERISTIC_TYPES_*`
|
||||||
|
- `ExchangePlan_*` / auxiliary `OTHER` entities
|
||||||
|
- Narrow technical service entities without stable business lookup semantics
|
||||||
|
|
||||||
|
## Full Entity Catalog
|
||||||
|
|
||||||
|
Fields match requested contract: `entity_family`, `entity_name`, `source_snapshot`, `description`, `key_fields`, `filterable_fields`, `relations`, `query_suitability`, `priority`.
|
||||||
|
|
||||||
|
| entity_family | entity_name | source_snapshot | description | key_fields | filterable_fields | relations | query_suitability | priority |
|
||||||
|
|---|---|---|---|---|---|---|---|---|
|
||||||
|
| INFORMATION_REGISTER | InformationRegister_АдресныйКлассификатор | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Information register layer (classification/support data) | ТипАдресногоРлемента, КодРегионаВКоде, РљРѕРґ, КодРайонаВКоде, КодГородаВКоде, КодНаселенногоПунктаВКоде, КодУлицыВКоде, Наименование (+3) | | | MEDIUM | P1 |
|
||||||
|
| ACCOUNTING_REGISTER | AccountingRegister_Хозрасчетный_RecordType | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accounting register layer (postings and movement facts). linked to account dimension; linked to document chain; linked to organization dimension | Period, Recorder, Recorder_Type, LineNumber, Active, AccountDr_Key, AccountCr_Key, Организация_Key (+22) | AccountCr@navigationLinkUrl, AccountCr_Key, AccountDr@navigationLinkUrl, AccountDr_Key, Active, LineNumber, Period, Recorder (+6) | register_relates_to_account -> Account:268564, register_recorded_by_document -> Document:136616, register_relates_to_organization -> Organization:136616, register_relates_to_department -> Department:12636 | HIGH | P0 |
|
||||||
|
| NSI_CATALOG | Catalog_Банки | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection. linked to account dimension | Ref_Key, DataVersion, DeletionMark, Predefined, Parent_Key, IsFolder, Code, Description (+5) | Code, Description, Parent@navigationLinkUrl, Parent_Key, Ref_Key | reference -> Unknown:59136, reference -> Account:39072 | MEDIUM | P1 |
|
||||||
|
| ACCOUNTING_REGISTER | AccountingRegister_Хозрасчетный | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accounting register layer (postings and movement facts). linked to document chain | Recorder, Recorder_Type, RecordSet | Recorder, Recorder_Type | register_recorded_by_document -> Document:53628 | HIGH | P0 |
|
||||||
|
| DOCUMENT_JOURNAL | DocumentJournal_ЖурналОпераций | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Document journal layer for document indexing and timeline access. linked to counterparties; linked to document chain; linked to organization dimension; linked to bank account dimension | Ref, Ref_Type, Date, DeletionMark, Number, Posted, Организация_Key, Рнформация (+4) | Date, Number, Posted, Ref, Ref_Type, Type, Рнформация_Type, Организация_Key | journal_refers_to_document -> Document:47105, journal_organization -> Organization:47105, reference -> Counterparty:31918, reference -> Unknown:9474, reference -> Warehouse:540, reference -> BankAccount:250 | MEDIUM | P1 |
|
||||||
|
| DOCUMENT_JOURNAL | DocumentJournal_ДокументыПоставщиков | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Document journal layer for document indexing and timeline access. linked to counterparties; linked to document chain; linked to organization dimension | Ref, Ref_Type, Date, DeletionMark, Number, Posted, Контрагент, Контрагент_Type (+14) | Date, Number, Posted, Ref, Ref_Type, Type, ВалютаДокумента_Key, ДоговорКонтрагента_Key (+3) | journal_counterparty -> Counterparty:45410, journal_refers_to_document -> Document:33666, journal_organization -> Organization:33666, journal_has_currency -> Currency:33666, journal_responsible -> ResponsiblePerson:24442 | MEDIUM | P1 |
|
||||||
|
| DOCUMENT | Document_СписаниеСРасчетногоСчета_РасшифровкаПлатежа | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to counterparties; linked to account dimension | Ref_Key, LineNumber, ДоговорКонтрагента_Key, Сделка, Сделка_Type, КурсВзаиморасчетов, СуммаПлатежа, КратностьВзаиморасчетов (+11) | LineNumber, Ref_Key, ДоговорКонтрагента_Key, Сделка_Type, СтатьяДвиженияДенежныхСредств_Key, СчетУчетаРасчетовПоАвансам_Key, СчетУчетаРасчетовСКонтрагентом_Key | document_line_has_account -> Account:110580, document_has_counterparty -> Counterparty:35928, document_has_cashflow_article -> CashflowArticle:23148 | HIGH | P0 |
|
||||||
|
| DOCUMENT_JOURNAL | DocumentJournal_БанковскиеВыписки | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Document journal layer for document indexing and timeline access. linked to counterparties; linked to document chain; linked to organization dimension; linked to bank account dimension | Ref, Ref_Type, Date, DeletionMark, Number, Posted, Организация_Key, БанковскийСчет_Key (+18) | Date, Number, Posted, Ref, Ref_Type, Type, БанковскийСчет_Key, Валюта_Key (+4) | journal_refers_to_document -> Document:27723, journal_organization -> Organization:27723, journal_bank_account -> BankAccount:27723, journal_has_currency -> Currency:27723, reference -> Unknown:27723, journal_counterparty -> Counterparty:24247 (+1) | MEDIUM | P1 |
|
||||||
|
| NSI_CATALOG | Catalog_КорреспонденцииСчетов | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection. linked to account dimension | Ref_Key, DataVersion, DeletionMark, Predefined, Code, Description, Содержание, СчетДт_Key (+8) | Code, Description, Ref_Key, СчетДт_Key, СчетКт_Key | reference -> Account:51096 | MEDIUM | P1 |
|
||||||
|
| DOCUMENT | Document_СписаниеСРасчетногоСчета | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to counterparties; linked to account dimension; linked to organization dimension | Ref_Key, DataVersion, DeletionMark, Number, Date, Posted, ДокументОснование, ДокументОснование_Type (+32) | Date, Number, Posted, Ref_Key, ВалютаВзаиморасчетовРаботника_Key, ВалютаДокумента_Key, ДоговорКонтрагента_Key, ДокументОснование_Type (+13) | document_belongs_to_organization -> Organization:48522, document_has_counterparty -> Counterparty:46736, document_has_currency -> Currency:24261, document_line_has_account -> Account:24261, reference -> Unknown:20912, document_has_responsible -> ResponsiblePerson:15587 (+1) | HIGH | P0 |
|
||||||
|
| ACCUMULATION_REGISTER | AccumulationRegister_НДСПредъявленный_RecordType | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accumulation register layer (balances/turnovers/tax movements). linked to counterparties; linked to account dimension; linked to document chain; linked to organization dimension | Period, Recorder, Recorder_Type, LineNumber, Active, RecordType, Организация_Key, СчетФактура (+16) | Active, LineNumber, Period, RecordType, Recorder, Recorder_Type, ДоговорКонтрагента_Key, РсправленныйСчетФактура_Type (+4) | register_recorded_by_document -> Document:20874, register_relates_to_organization -> Organization:20874, register_relates_to_invoice -> Document:20874, register_relates_to_supplier -> Counterparty:20766, register_relates_to_account -> Account:18078 | HIGH | P0 |
|
||||||
|
| DOCUMENT | Document_ПоступлениеТоваровУслуг_Товары | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to account dimension | Ref_Key, LineNumber, ЕдиницаРзмерения_Key, КоличествоМест, Количество, Коэффициент, Номенклатура_Key, СтавкаНДС (+28) | LineNumber, Ref_Key, ДоговорКонтрагента_Key, ЕдиницаРзмерения_Key, Контрагент_Key, Номенклатура_Key, НомерГТД_Key, ПодразделениеЗатрат_Key (+10) | document_line_has_account -> Account:26016, reference -> Unknown:13008, document_line_has_item -> Item:13008 | HIGH | P0 |
|
||||||
|
| DOCUMENT | Document_АктСверкиВзаиморасчетов_ПоДаннымОрганизации | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to contracts; linked to document chain | Ref_Key, LineNumber, Дата, Документ, Документ_Type, Представление, Дебет, Кредит (+2) | LineNumber, Ref_Key, Договор_Key, Документ_Type | reference -> Document:12994, document_has_contract -> Contract:12994 | HIGH | P0 |
|
||||||
|
| NSI_CATALOG | Catalog_Номенклатура | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Parent_Key, IsFolder, Code, Description (+19) | Code, Description, Parent@navigationLinkUrl, Parent_Key, Ref_Key, БазоваяЕдиницаРзмерения_Key, Рмпортер_Key, КодРаздел7ДекларацииНДС_Key (+7) | reference -> Unknown:27780, reference -> Item:9732 | MEDIUM | P1 |
|
||||||
|
| DOCUMENT | Document_ОтражениеЗарплатыВРеглУчете_ОтражениеВУчете | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to account dimension | Ref_Key, LineNumber, СчетДт_Key, СубконтоДт1, СубконтоДт1_Type, СубконтоДт2, СубконтоДт2_Type, СубконтоДт3 (+23) | LineNumber, Ref_Key, ВидРасчета_Key, ПодразделениеДт_Key, ПодразделениеКт_Key, СубконтоДт1_Type, СубконтоДт2_Type, СубконтоДт3_Type (+6) | reference -> Unknown:23796, document_line_has_account -> Account:21096, document_relates_to_individual -> Individual:1404, document_has_department -> Department:792 | HIGH | P0 |
|
||||||
|
| ACCUMULATION_REGISTER | AccumulationRegister_НДСПредъявленный | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accumulation register layer (balances/turnovers/tax movements). linked to document chain | Recorder, Recorder_Type, RecordSet | Recorder, Recorder_Type | register_recorded_by_document -> Document:9420 | HIGH | P0 |
|
||||||
|
| DOCUMENT_JOURNAL | DocumentJournal_ДокументыПокупателей | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Document journal layer for document indexing and timeline access. linked to counterparties; linked to document chain; linked to organization dimension; linked to bank account dimension | Ref, Ref_Type, Date, DeletionMark, Number, Posted, Контрагент, Контрагент_Type (+12) | Date, Number, Posted, Ref, Ref_Type, Type, ВалютаДокумента_Key, ДоговорКонтрагента_Key (+3) | journal_counterparty -> Counterparty:16361, journal_refers_to_document -> Document:9011, journal_organization -> Organization:9011, journal_has_currency -> Currency:9011, journal_responsible -> ResponsiblePerson:7424, journal_counterparty -> BankAccount:250 | MEDIUM | P1 |
|
||||||
|
| DOCUMENT | Document_АктСверкиВзаиморасчетов_СписокСчетов | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to account dimension | Ref_Key, LineNumber, Счет_Key, УчаствуетВРасчетах, Счет@navigationLinkUrl | LineNumber, Ref_Key, Счет_Key | document_line_has_account -> Account:16248 | HIGH | P0 |
|
||||||
|
| DOCUMENT | Document_РеализацияТоваровУслуг_Товары | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to account dimension | Ref_Key, LineNumber, ЕдиницаРзмерения_Key, Количество, КоличествоМест, Коэффициент, Номенклатура_Key, СтавкаНДС (+24) | LineNumber, Ref_Key, ДокументОприходования_Type, ЕдиницаРзмерения_Key, РљРѕРґРўРќР’РР”_Key, Номенклатура_Key, НомерГТД_Key, ПереданныеСчетУчета_Key (+7) | document_line_has_account -> Account:39852, reference -> Unknown:7980, document_line_has_item -> Item:7980, reference -> Item:7980 | HIGH | P0 |
|
||||||
|
| NSI_CATALOG | Catalog_КлассификаторЗанятий | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Parent_Key, IsFolder, Code, КонтрольноеЧисло (+2) | Code, Parent@navigationLinkUrl, Parent_Key, Ref_Key | reference -> Unknown:7272 | MEDIUM | P1 |
|
||||||
|
| NSI_CATALOG | Catalog_ВидыОтправляемыхДокументов | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Parent_Key, IsFolder, Code, Description (+5) | Code, Description, Parent@navigationLinkUrl, Parent_Key, Ref_Key | reference -> Unknown:6828 | MEDIUM | P1 |
|
||||||
|
| DOCUMENT | Document_РегламентнаяОперация | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to organization dimension | Ref_Key, DataVersion, DeletionMark, Number, Date, Posted, Организация_Key, ВидОперации (+7) | Date, Number, Posted, Ref_Key, Организация_Key, Ответственный_Key | document_belongs_to_organization -> Organization:6469, document_has_responsible -> ResponsiblePerson:6469 | HIGH | P0 |
|
||||||
|
| ACCUMULATION_REGISTER | AccumulationRegister_НДФЛРасчетыСБюджетом_RecordType | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accumulation register layer (balances/turnovers/tax movements). linked to document chain; linked to organization dimension | Period, Recorder, Recorder_Type, LineNumber, Active, RecordType, ФизЛицо_Key, Организация_Key (+23) | Active, LineNumber, Period, RecordType, Recorder, Recorder_Type, КодДохода_Key, ОбособленноеПодразделение_Key (+3) | register_recorded_by_document -> Document:5567, register_relates_to_individual -> Individual:5567, register_relates_to_organization -> Organization:5567, register_relates_to_department -> Department:5567 | HIGH | P0 |
|
||||||
|
| DOCUMENT | Document_ПоступлениеТоваровУслуг | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to counterparties; linked to account dimension; linked to organization dimension; linked to invoice documents | Ref_Key, DataVersion, DeletionMark, Number, Date, Posted, Комментарий, Контрагент_Key (+32) | Date, Number, Posted, Ref_Key, ВалютаДокумента_Key, Грузоотправитель_Key, Грузополучатель_Key, ДоговорКонтрагента_Key (+8) | document_line_has_account -> Account:27441, document_has_counterparty -> Counterparty:16443, document_has_currency -> Currency:5481, document_belongs_to_organization -> Organization:5481, document_has_responsible -> ResponsiblePerson:5397, document_has_warehouse -> Warehouse:3190 (+2) | HIGH | P0 |
|
||||||
|
| DOCUMENT | Document_ЗарплатаКВыплатеОрганизаций_Зарплата | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events | Ref_Key, LineNumber, Физлицо_Key, Сумма, КомпенсацияЗаЗадержкуЗарплаты, ВыплаченностьЗарплаты, ВзысканнаяСумма, Физлицо@navigationLinkUrl | LineNumber, Ref_Key, Физлицо_Key | document_relates_to_individual -> Individual:4872 | HIGH | P0 |
|
||||||
|
| NSI_CATALOG | Catalog_ДоговорыКонтрагентов | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection. linked to contracts; linked to organization dimension | Ref_Key, DataVersion, DeletionMark, Predefined, Owner_Key, Parent_Key, IsFolder, Code (+26) | Code, Description, Owner@navigationLinkUrl, Owner_Key, Parent_Key, Ref_Key, ВалютаВзаиморасчетов_Key, ВидВзаиморасчетов_Key (+4) | reference -> Unknown:4696, reference -> Currency:4696, reference -> Organization:4696, reference -> Contract:4696 | HIGH | P0 |
|
||||||
|
| DOCUMENT | Document_СписаниеСРасчетногоСчета_ПеречислениеЗаработнойПлаты | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events | Ref_Key, LineNumber, Ведомость_Key, СуммаПлатежа, Физлицо_Key, СтатьяДвиженияДенежныхСредств_Key, Ведомость@navigationLinkUrl, Физлицо@navigationLinkUrl (+1) | LineNumber, Ref_Key, Ведомость_Key, СтатьяДвиженияДенежныхСредств_Key, Физлицо_Key | reference -> Unknown:4584, document_relates_to_individual -> Individual:4584, document_has_cashflow_article -> CashflowArticle:4584 | HIGH | P0 |
|
||||||
|
| CHART_OF_ACCOUNTS | ChartOfAccounts_Хозрасчетный | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Chart of accounts reference layer | Ref_Key, DataVersion, DeletionMark, Predefined, Parent_Key, Code, Description, Order (+10) | Code, Description, ExtDimensionTypes, OffBalance, Parent@navigationLinkUrl, Parent_Key, Ref_Key, Type | reference -> Unknown:3468, reference -> Currency:444, reference -> Department:240 | MEDIUM | P1 |
|
||||||
|
| DOCUMENT | Document_ПоступлениеТоваровУслуг_Услуги | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to account dimension | Ref_Key, LineNumber, Количество, Содержание, Номенклатура_Key, СтавкаНДС, Сумма, СуммаНДС (+23) | LineNumber, Ref_Key, Номенклатура_Key, ПодразделениеЗатрат_Key, Субконто1_Type, Субконто2_Type, Субконто3_Type, СубконтоНУ1_Type (+5) | document_line_has_account -> Account:10716, reference -> Unknown:8568, document_has_department -> Department:876, document_line_has_item -> Item:324 | HIGH | P0 |
|
||||||
|
| DOCUMENT | Document_ПоступлениеНаРасчетныйСчет_РасшифровкаПлатежа | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to counterparties; linked to account dimension | Ref_Key, LineNumber, ДоговорКонтрагента_Key, Сделка, Сделка_Type, КурсВзаиморасчетов, СуммаПлатежа, КратностьВзаиморасчетов (+20) | LineNumber, Ref_Key, ДоговорКонтрагента_Key, ПодразделениеКт_Key, Сделка_Type, СтатьяДвиженияДенежныхСредств_Key, СубконтоКт1_Type, СубконтоКт2_Type (+4) | document_line_has_account -> Account:16152, document_has_counterparty -> Counterparty:7128, document_has_cashflow_article -> CashflowArticle:3300 | HIGH | P0 |
|
||||||
|
| ACCUMULATION_REGISTER | AccumulationRegister_НДСЗаписиКнигиПокупок_RecordType | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accumulation register layer (balances/turnovers/tax movements). linked to counterparties; linked to account dimension; linked to document chain; linked to organization dimension | Period, Recorder, Recorder_Type, LineNumber, Active, Организация_Key, Поставщик_Key, СчетФактура (+23) | Active, LineNumber, Period, Recorder, Recorder_Type, ДоговорКонтрагента_Key, ДокументОплаты_Type, РсправленныйСчетФактура_Type (+4) | register_recorded_by_document -> Document:3617, register_relates_to_organization -> Organization:3617, register_relates_to_supplier -> Counterparty:3617, register_relates_to_invoice -> Document:3617, register_relates_to_account -> Account:3533, register_relates_to_counterparty -> Counterparty:60 | HIGH | P0 |
|
||||||
|
| DOCUMENT | Document_ПередачаТоваров_Товары | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to account dimension | Ref_Key, LineNumber, Номенклатура_Key, Количество, СчетУчета_Key, СчетПередачи_Key, Номенклатура@navigationLinkUrl, СчетУчета@navigationLinkUrl (+1) | LineNumber, Ref_Key, Номенклатура_Key, СчетПередачи_Key, СчетУчета_Key | document_line_has_account -> Account:7128, document_line_has_item -> Item:3564 | HIGH | P0 |
|
||||||
|
| DOCUMENT | Document_СчетФактураПолученный_ДокументыОснования | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to document chain | Ref_Key, LineNumber, ДокументОснование, ДокументОснование_Type, НомерРсходногоДокумента, ДатаРсходногоДокумента, УчитыватьРсправлениеРсходногоДокумента, НомерРсправленияРсходногоДокумента (+5) | LineNumber, Ref_Key, ДокументОснование_Type | reference -> Document:3528 | HIGH | P0 |
|
||||||
|
| NSI_CATALOG | Catalog_РегламентированныеОтчеты | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Parent_Key, IsFolder, Code, Description (+10) | Code, Description, Parent@navigationLinkUrl, Parent_Key, Ref_Key, ВнешнийОтчетХранилище_Type, Периоды_Type | reference -> Unknown:3336 | MEDIUM | P1 |
|
||||||
|
| DOCUMENT | Document_ПоступлениеНаРасчетныйСчет | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to counterparties; linked to account dimension; linked to organization dimension | Ref_Key, DataVersion, DeletionMark, Number, Date, Posted, ВалютаДокумента_Key, ВидОперации (+32) | Date, Number, Posted, Ref_Key, ВалютаДокумента_Key, ДоговорКонтрагента_Key, ДокументОснование_Type, Контрагент_Key (+13) | document_has_counterparty -> Counterparty:8970, document_belongs_to_organization -> Organization:6924, document_has_currency -> Currency:3462, document_line_has_account -> Account:3462, document_has_responsible -> ResponsiblePerson:2276, reference -> Counterparty:1704 (+1) | HIGH | P0 |
|
||||||
|
| DOCUMENT_JOURNAL | DocumentJournal_ДокументыПоУчетуЗарплаты | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Document journal layer for document indexing and timeline access. linked to document chain; linked to organization dimension | Ref, Ref_Type, Date, DeletionMark, Number, Posted, Организация_Key, Месяц (+7) | Date, Number, Posted, Ref, Ref_Type, Type, Организация_Key, Ответственный_Key | journal_refers_to_document -> Document:3362, journal_organization -> Organization:3362, journal_responsible -> ResponsiblePerson:3350 | MEDIUM | P1 |
|
||||||
|
| DOCUMENT | Document_ПоступлениеРзПереработки_РспользованныеМатериалы | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to account dimension | Ref_Key, LineNumber, Номенклатура_Key, Количество, СчетУчета_Key, СтатьяЗатрат_Key, ОтражениеВУСН, Номенклатура@navigationLinkUrl (+2) | LineNumber, Ref_Key, Номенклатура_Key, СтатьяЗатрат_Key, СчетУчета_Key | document_line_has_item -> Item:3324, document_line_has_account -> Account:3324, reference -> Unknown:3324 | HIGH | P0 |
|
||||||
|
| ACCUMULATION_REGISTER | AccumulationRegister_НДСЗаписиКнигиПокупок | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accumulation register layer (balances/turnovers/tax movements). linked to document chain | Recorder, Recorder_Type, RecordSet | Recorder, Recorder_Type | register_recorded_by_document -> Document:3312 | HIGH | P0 |
|
||||||
|
| DOCUMENT | Document_НДФЛиЕСНДоходыРНалоги_НДФЛРсчисленный13 | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events | Ref_Key, LineNumber, ФизЛицо_Key, ПериодРегистрации, МесяцНалоговогоПериода, Налог, РљРѕРґРџРѕРћРљРђРўРћ, РљРџРџ (+4) | LineNumber, Ref_Key, ФизЛицо_Key | document_relates_to_individual -> Individual:3283 | HIGH | P0 |
|
||||||
|
| DOCUMENT | Document_СчетНаОплатуПокупателю_Товары | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events | Ref_Key, LineNumber, Номенклатура_Key, Цена, Сумма, СтавкаНДС, СуммаНДС, Количество (+1) | LineNumber, Ref_Key, Номенклатура_Key | document_line_has_item -> Item:3180 | HIGH | P0 |
|
||||||
|
| DOCUMENT | Document_СчетФактураПолученный | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to counterparties; linked to account dimension; linked to document chain; linked to organization dimension; linked to invoice documents | Ref_Key, DataVersion, DeletionMark, Number, Date, Posted, ДатаРсправления, ВидСчетаФактуры (+32) | Date, Number, Posted, Ref_Key, ВалютаДокумента_Key, ДоговорКомитента_Key, ДоговорКонтрагента_Key, ДокументОснование_Type (+8) | document_has_counterparty -> Counterparty:6234, document_line_has_account -> Account:3117, reference -> Document:3117, document_belongs_to_organization -> Organization:3117, document_has_currency -> Currency:3117, document_has_responsible -> ResponsiblePerson:3105 (+1) | HIGH | P0 |
|
||||||
|
| ACCUMULATION_REGISTER | AccumulationRegister_СтраховыеВзносыСведенияОДоходах_RecordType | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accumulation register layer (balances/turnovers/tax movements). linked to document chain; linked to organization dimension | Period, Recorder, Recorder_Type, LineNumber, Active, ФизЛицо_Key, Организация_Key, ВидДохода_Key (+20) | Active, LineNumber, Period, Recorder, Recorder_Type, ВидДохода_Key, ВидРасчета_Key, ОбособленноеПодразделение_Key (+2) | register_recorded_by_document -> Document:3041, register_relates_to_individual -> Individual:3041, register_relates_to_organization -> Organization:3041, reference -> Unknown:3041, register_relates_to_department -> Department:3041 | HIGH | P0 |
|
||||||
|
| DOCUMENT | Document_НДФЛиЕСНДоходыРНалоги_СтраховыеВзносыСведенияОДоходах | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to account dimension | Ref_Key, LineNumber, ФизЛицо_Key, МесяцРасчетногоПериода, ВидДохода_Key, Результат, РЎРєРёРґРєР°, ОблагаетсяЕНВД (+9) | LineNumber, Ref_Key, ВидДохода_Key, ФизЛицо_Key | document_relates_to_individual -> Individual:3041, document_line_has_account -> Account:3041, reference -> Unknown:3041 | HIGH | P0 |
|
||||||
|
| DOCUMENT | Document_КорректировкаРеализации_Товары | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to account dimension | Ref_Key, LineNumber, Номенклатура, Номенклатура_Type, Количество, Цена, РЎСѓРјРјР°, СтавкаНДС (+29) | LineNumber, Ref_Key, РљРѕРґРўРќР’РР”_Key, РљРѕРґРўРќР’РДДоРзменения_Key, Номенклатура_Type, НомерГТД_Key, НомерГТДДоРзменения_Key, Р РќРџРў_Key (+8) | document_line_has_account -> Account:9888, document_line_has_item -> Item:2472, reference -> Item:2472 | HIGH | P0 |
|
||||||
|
| DOCUMENT | Document_ЗарплатаКВыплатеОрганизаций | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to organization dimension | Ref_Key, DataVersion, DeletionMark, Number, Date, Posted, Организация_Key, ПериодРегистрации (+10) | Date, Number, Posted, Ref_Key, Организация_Key, Ответственный_Key, ПодразделениеОрганизации_Key | document_belongs_to_organization -> Organization:2444, document_has_responsible -> ResponsiblePerson:2432 | HIGH | P0 |
|
||||||
|
| ACCUMULATION_REGISTER | AccumulationRegister_НДФЛСведенияОДоходах_RecordType | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accumulation register layer (balances/turnovers/tax movements). linked to document chain; linked to organization dimension | Period, Recorder, Recorder_Type, LineNumber, Active, Организация_Key, ФизЛицо_Key, КодДохода_Key (+20) | Active, LineNumber, Period, Recorder, Recorder_Type, ВидРасчета_Key, КодВычета_Key, КодДохода_Key (+4) | register_recorded_by_document -> Document:2284, register_relates_to_organization -> Organization:2284, register_relates_to_individual -> Individual:2284, reference -> Unknown:2284, register_relates_to_department -> Department:2284 | HIGH | P0 |
|
||||||
|
| ACCUMULATION_REGISTER | AccumulationRegister_РасчетыНалоговыхАгентовСБюджетомПоНДФЛ_RecordType | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accumulation register layer (balances/turnovers/tax movements). linked to document chain; linked to organization dimension | Period, Recorder, Recorder_Type, LineNumber, Active, RecordType, ФизЛицо_Key, Организация_Key (+9) | Active, LineNumber, Period, RecordType, Recorder, Recorder_Type, Организация_Key, ФизЛицо_Key | register_recorded_by_document -> Document:2284, register_relates_to_individual -> Individual:2284, register_relates_to_organization -> Organization:2284 | HIGH | P0 |
|
||||||
|
| DOCUMENT | Document_НДФЛиЕСНДоходыРНалоги_НДФЛСведенияОДоходах | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events | Ref_Key, LineNumber, ФизЛицо_Key, ДатаДохода, МесяцНалоговогоПериода, ПериодРегистрации, КодДохода_Key, СуммаДохода (+12) | LineNumber, Ref_Key, КодВычета_Key, КодДохода_Key, ФизЛицо_Key | document_relates_to_individual -> Individual:2284, reference -> Unknown:2284 | HIGH | P0 |
|
||||||
|
| DOCUMENT | Document_НДФЛиЕСНДоходыРНалоги_НДФЛУдержанный | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events | Ref_Key, LineNumber, ФизЛицо_Key, ПериодРегистрации, МесяцНалоговогоПериода, СтавкаНалогообложения, Налог, РљРѕРґРџРѕРћРљРђРўРћ (+8) | LineNumber, Ref_Key, КодДохода_Key, ФизЛицо_Key | document_relates_to_individual -> Individual:2284 | HIGH | P0 |
|
||||||
|
| DOCUMENT | Document_ВыгрузкаРегламентированныхОтчетов_Выгрузки | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events | Ref_Key, LineNumber, РўРёРї, РмяФайла, Текст | LineNumber, Ref_Key | | HIGH | P0 |
|
||||||
|
| ACCUMULATION_REGISTER | AccumulationRegister_СтраховыеВзносыРсчисленные_RecordType | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accumulation register layer (balances/turnovers/tax movements). linked to document chain; linked to organization dimension | Period, Recorder, Recorder_Type, LineNumber, Active, ФизЛицо_Key, Организация_Key, ОбособленноеПодразделение_Key (+32) | Active, LineNumber, Period, Recorder, Recorder_Type, ОбособленноеПодразделение_Key, Организация_Key, ФизЛицо_Key | register_recorded_by_document -> Document:2039, register_relates_to_individual -> Individual:2039, register_relates_to_organization -> Organization:2039, register_relates_to_department -> Department:2039 | HIGH | P0 |
|
||||||
|
| DOCUMENT | Document_НДФЛиЕСНДоходыРНалоги_СтраховыеВзносы | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to account dimension | Ref_Key, LineNumber, ФизЛицо_Key, МесяцРасчетногоПериода, ФСС, ФФОМС, ТФОМС, ПФРДоПредельнойВеличины (+28) | LineNumber, Ref_Key, ФизЛицо_Key | document_relates_to_individual -> Individual:2039, document_line_has_account -> Account:2039 | HIGH | P0 |
|
||||||
|
| DOCUMENT | Document_ТребованиеНакладная_Материалы | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to account dimension | Ref_Key, LineNumber, Номенклатура_Key, Счет_Key, КоличествоМест, ЕдиницаРзмерения_Key, Коэффициент, Количество (+14) | LineNumber, Ref_Key, ДокументОприходования_Type, ЕдиницаРзмерения_Key, Номенклатура_Key, НоменклатурнаяГруппа_Key, НомерГТД_Key, ПодразделениеЗатрат_Key (+4) | reference -> Unknown:2388, document_line_has_item -> Item:1980, document_line_has_account -> Account:1980 | HIGH | P0 |
|
||||||
|
| NSI_CATALOG | Catalog_АдресныеСокращения | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Code, Description, Уровень, Сокращение | Code, Description, Ref_Key | | MEDIUM | P1 |
|
||||||
|
| ACCUMULATION_REGISTER | AccumulationRegister_НДСЗаписиКнигиПродаж_RecordType | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accumulation register layer (balances/turnovers/tax movements). linked to counterparties; linked to document chain; linked to organization dimension | Period, Recorder, Recorder_Type, LineNumber, Active, Организация_Key, Покупатель_Key, СчетФактура (+22) | Active, LineNumber, Period, Recorder, Recorder_Type, ДоговорКонтрагента_Key, ДокументОплаты_Type, РсправленныйСчетФактура_Type (+3) | register_recorded_by_document -> Document:1791, register_relates_to_organization -> Organization:1791, register_relates_to_buyer -> Counterparty:1791, register_relates_to_invoice -> Document:1791, reference -> Document:84, register_relates_to_counterparty -> Counterparty:84 | HIGH | P0 |
|
||||||
|
| NSI_CATALOG | Catalog_Контрагенты | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection. linked to counterparties; linked to bank account dimension | Ref_Key, DataVersion, DeletionMark, Predefined, Parent_Key, IsFolder, Code, Description (+18) | Code, Description, Parent_Key, Ref_Key, ГоловнойКонтрагент_Key, ОсновноеКонтактноеЛицо_Key, ОсновнойБанковскийСчет_Key, ОсновнойДоговорКонтрагента_Key (+1) | reference -> Counterparty:2892, reference -> Individual:1668, reference -> BankAccount:372 | MEDIUM | P1 |
|
||||||
|
| DOCUMENT | Document_СчетФактураВыданный_ДокументыОснования | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to document chain | Ref_Key, LineNumber, ДокументОснование, ДокументОснование_Type, НомерРсходногоДокумента, ДатаРсходногоДокумента, УчитыватьРсправлениеРсходногоДокумента, НомерРсправленияРсходногоДокумента (+5) | LineNumber, Ref_Key, ДокументОснование_Type | reference -> Document:1668 | HIGH | P0 |
|
||||||
|
| DOCUMENT_JOURNAL | DocumentJournal_КассовыеДокументы | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Document journal layer for document indexing and timeline access. linked to counterparties; linked to account dimension; linked to document chain; linked to organization dimension; linked to bank account dimension | Ref, Ref_Type, Date, DeletionMark, Number, Posted, Организация_Key, Приход (+15) | Date, Number, Posted, Ref, Ref_Type, Type, Валюта_Key, ВидОперации_Type (+4) | journal_refers_to_document -> Document:1655, journal_organization -> Organization:1655, journal_has_currency -> Currency:1655, reference -> Unknown:1655, journal_account -> Account:1655, journal_counterparty -> Counterparty:841 (+2) | MEDIUM | P1 |
|
||||||
|
| DOCUMENT | Document_СчетНаОплатуПокупателю | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to counterparties; linked to account dimension; linked to organization dimension | Ref_Key, DataVersion, DeletionMark, Number, Date, Posted, АдресДоставки, СтруктурнаяЕдиница_Key (+26) | Date, Number, Posted, Ref_Key, ВалютаДокумента_Key, ДоговорКонтрагента_Key, Контрагент_Key, Организация_Key (+5) | document_has_counterparty -> Counterparty:3178, document_line_has_account -> Account:3178, document_belongs_to_organization -> Organization:3178, reference -> Unknown:1841, document_has_currency -> Currency:1589, document_has_responsible -> ResponsiblePerson:1577 (+1) | HIGH | P0 |
|
||||||
|
| DOCUMENT | Document_СчетФактураВыданный | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to counterparties; linked to account dimension; linked to document chain; linked to organization dimension; linked to invoice documents | Ref_Key, DataVersion, DeletionMark, Number, Date, Posted, ДатаВыставления, ВидСчетаФактуры (+32) | Date, Number, Posted, Ref_Key, ВалютаДокумента_Key, ГлавныйБухгалтер_Key, ДоговорКомитента_Key, ДоговорКонтрагента_Key (+10) | document_line_has_account -> Account:3104, document_has_counterparty -> Counterparty:3092, reference -> Unknown:3078, reference -> Document:1546, document_belongs_to_organization -> Organization:1546, document_has_currency -> Currency:1546 (+2) | HIGH | P0 |
|
||||||
|
| DOCUMENT | Document_ОперацияБух | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to organization dimension | Ref_Key, DataVersion, DeletionMark, Number, Date, Posted, Организация_Key, СуммаОперации (+13) | Date, Number, Posted, Ref_Key, Организация_Key, Ответственный_Key, СпособЗаполнения_Type, ТиповаяОперация_Type | document_belongs_to_organization -> Organization:1503, document_has_responsible -> ResponsiblePerson:1503, reference -> Unknown:1503 | HIGH | P0 |
|
||||||
|
| ACCUMULATION_REGISTER | AccumulationRegister_НДСЗаписиКнигиПродаж | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accumulation register layer (balances/turnovers/tax movements). linked to document chain | Recorder, Recorder_Type, RecordSet | Recorder, Recorder_Type | register_recorded_by_document -> Document:1488 | HIGH | P0 |
|
||||||
|
| ACCUMULATION_REGISTER | AccumulationRegister_РасходыПриУСН_RecordType | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accumulation register layer (balances/turnovers/tax movements). linked to counterparties; linked to account dimension; linked to document chain; linked to organization dimension | Period, Recorder, Recorder_Type, LineNumber, Active, RecordType, Организация_Key, СтатусыОплатыРасходовУСН (+24) | Active, LineNumber, Period, RecordType, Recorder, Recorder_Type, Валюта_Key, ДоговорКонтрагента_Type (+6) | register_recorded_by_document -> Document:1476, register_relates_to_organization -> Organization:1476, register_relates_to_account -> Document:1476, register_relates_to_currency -> Currency:1476, register_relates_to_account -> Account:1164, register_relates_to_counterparty -> Counterparty:972 (+3) | HIGH | P0 |
|
||||||
|
| DOCUMENT | Document_РеализацияТоваровУслуг | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to counterparties; linked to account dimension; linked to organization dimension | Ref_Key, DataVersion, DeletionMark, Number, Date, Posted, ВидОперации, БанковскийСчетОрганизации_Key (+32) | Date, Number, Posted, Ref_Key, БанковскийСчетОрганизации_Key, ВалютаДокумента_Key, ГлавныйБухгалтер_Key, Грузоотправитель_Key (+19) | document_line_has_account -> Account:9178, reference -> Unknown:5321, document_has_counterparty -> Counterparty:4290, document_belongs_to_organization -> Organization:1850, document_has_currency -> Currency:1430, document_has_responsible -> ResponsiblePerson:1411 (+1) | HIGH | P0 |
|
||||||
|
| DOCUMENT | Document_НДФЛиЕСНДоходыРНалоги_НДФЛПредоставленныеВычеты | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events | Ref_Key, LineNumber, ФизЛицо_Key, ПериодРегистрации, МесяцНалоговогоПериода, КодВычета_Key, ПримененныйВычет, РљРѕРґРџРѕРћРљРђРўРћ (+5) | LineNumber, Ref_Key, КодВычета_Key, ФизЛицо_Key | document_relates_to_individual -> Individual:1421, reference -> Unknown:1421 | HIGH | P0 |
|
||||||
|
| ACCUMULATION_REGISTER | AccumulationRegister_НДФЛПредоставленныеСтандартныеВычетыФизЛиц_RecordType | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accumulation register layer (balances/turnovers/tax movements). linked to document chain; linked to organization dimension | Period, Recorder, Recorder_Type, LineNumber, Active, ФизЛицо_Key, Организация_Key, МесяцНалоговогоПериода (+12) | Active, LineNumber, Period, Recorder, Recorder_Type, КодВычета_Key, ОбособленноеПодразделение_Key, Организация_Key (+2) | register_recorded_by_document -> Document:1405, register_relates_to_individual -> Individual:1405, register_relates_to_organization -> Organization:1405, reference -> Unknown:1405, register_relates_to_department -> Department:1405 | HIGH | P0 |
|
||||||
|
| DOCUMENT | Document_АктСверкиВзаиморасчетов | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to counterparties; linked to organization dimension | Ref_Key, DataVersion, DeletionMark, Number, Date, Posted, Организация_Key, Контрагент_Key (+22) | Date, Number, Posted, Ref_Key, ВалютаДокумента_Key, ДоговорКонтрагента_Key, Контрагент_Key, Организация_Key (+3) | document_has_counterparty -> Counterparty:2145, document_belongs_to_organization -> Organization:1456, document_has_currency -> Currency:1384, document_has_responsible -> ResponsiblePerson:996 | HIGH | P0 |
|
||||||
|
| ACCUMULATION_REGISTER | AccumulationRegister_РасчетыПоСтраховымВзносам | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accumulation register layer (balances/turnovers/tax movements). linked to document chain | Recorder, Recorder_Type, RecordSet | Recorder, Recorder_Type | register_recorded_by_document -> Document:1272 | HIGH | P0 |
|
||||||
|
| NSI_CATALOG | Catalog_ВычетыНДФЛ | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Code, Description, КодДляОтчетности2007, КодДляОтчетности2008 (+13) | Code, Description, Ref_Key | | MEDIUM | P1 |
|
||||||
|
| DOCUMENT | Document_ВыгрузкаРегламентированныхОтчетов_Основная | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events | Ref_Key, LineNumber, Основание_Key, НомерСтрокиТекстаВыгрузки, Основание@navigationLinkUrl | LineNumber, Ref_Key, Основание_Key | reference -> Unknown:1272 | HIGH | P0 |
|
||||||
|
| ACCUMULATION_REGISTER | AccumulationRegister_РасчетыПоСтраховымВзносам_RecordType | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accumulation register layer (balances/turnovers/tax movements). linked to account dimension; linked to document chain; linked to organization dimension | Period, Recorder, Recorder_Type, LineNumber, Active, RecordType, Организация_Key, ВидПлатежа (+16) | Active, LineNumber, Period, RecordType, Recorder, Recorder_Type, Организация_Key | register_recorded_by_document -> Document:1271, register_relates_to_organization -> Organization:1271, register_relates_to_account -> Account:1271 | HIGH | P0 |
|
||||||
|
| DOCUMENT_JOURNAL | DocumentJournal_УчетНДФЛиЕСН | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Document journal layer for document indexing and timeline access. linked to document chain; linked to organization dimension | Ref, Ref_Type, Date, DeletionMark, Number, Posted, Организация_Key, НалоговыйПериод (+7) | Date, Number, Posted, Ref, Ref_Type, Type, НалоговыйПериод_Type, Организация_Key (+1) | journal_refers_to_document -> Document:1242, journal_organization -> Organization:1242, journal_responsible -> ResponsiblePerson:1242 | MEDIUM | P1 |
|
||||||
|
| DOCUMENT | Document_НДФЛиЕСНДоходыРНалоги | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to organization dimension | Ref_Key, DataVersion, DeletionMark, Number, Date, Posted, Организация_Key, Комментарий (+16) | Date, Number, Posted, Ref_Key, Организация_Key, Ответственный_Key | document_belongs_to_organization -> Organization:1242, document_has_responsible -> ResponsiblePerson:1242 | HIGH | P0 |
|
||||||
|
| NSI_CATALOG | Catalog_ДоходыНДФЛ | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Code, Description, СтавкаНалогообложенияРезидента, КодДляОтчетности (+2) | Code, Description, Ref_Key | | MEDIUM | P1 |
|
||||||
|
| ACCUMULATION_REGISTER | AccumulationRegister_КнигаУчетаДоходовРРасходов_RecordType | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accumulation register layer (balances/turnovers/tax movements). linked to document chain; linked to organization dimension | Period, Recorder, Recorder_Type, LineNumber, Active, Организация_Key, Графа4, Графа5 (+11) | Active, LineNumber, Period, Recorder, Recorder_Type, Организация_Key | register_recorded_by_document -> Document:996, register_relates_to_organization -> Organization:996 | HIGH | P0 |
|
||||||
|
| DOCUMENT | Document_РегламентированныйОтчет | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to organization dimension | Ref_Key, DataVersion, DeletionMark, Date, Posted, РсточникОтчета, НаименованиеОтчета, Организация_Key (+23) | Date, Posted, Ref_Key, ДанныеОтчета_Type, ДеревоНастройкиСтраниц_Type, ДокументОснование_Type, Организация_Key | document_belongs_to_organization -> Organization:957 | HIGH | P0 |
|
||||||
|
| ACCUMULATION_REGISTER | AccumulationRegister_НДФЛРасчетыСБюджетом | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accumulation register layer (balances/turnovers/tax movements). linked to document chain | Recorder, Recorder_Type, RecordSet | Recorder, Recorder_Type | register_recorded_by_document -> Document:924 | HIGH | P0 |
|
||||||
|
| ACCUMULATION_REGISTER | AccumulationRegister_СтраховыеВзносыСведенияОДоходах | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accumulation register layer (balances/turnovers/tax movements). linked to document chain | Recorder, Recorder_Type, RecordSet | Recorder, Recorder_Type | register_recorded_by_document -> Document:924 | HIGH | P0 |
|
||||||
|
| DOCUMENT | Document_ВыгрузкаРегламентированныхОтчетов | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to organization dimension | Ref_Key, DataVersion, DeletionMark, Number, Date, Posted, ПериодПо, Организация_Key (+6) | Date, Number, Posted, Ref_Key, Организация_Key | document_belongs_to_organization -> Organization:920 | HIGH | P0 |
|
||||||
|
| NSI_CATALOG | Catalog_РасходыБудущихПериодов | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection. linked to account dimension | Ref_Key, DataVersion, DeletionMark, Predefined, Parent_Key, IsFolder, Code, Description (+15) | Code, Description, Parent_Key, Ref_Key, СубконтоЗатрат1_Type, СубконтоЗатрат2_Type, СубконтоЗатрат3_Type, СчетЗатрат_Key | reference -> Account:858, reference -> Unknown:858 | MEDIUM | P1 |
|
||||||
|
| DOCUMENT_JOURNAL | DocumentJournal_РегламентныеДокументы | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Document journal layer for document indexing and timeline access. linked to document chain; linked to organization dimension | Ref, Ref_Type, Date, DeletionMark, Number, Posted, Организация_Key, Месяц (+5) | Date, Number, Posted, Ref, Ref_Type, Type, Организация_Key, Ответственный_Key | journal_refers_to_document -> Document:918, journal_organization -> Organization:918, journal_responsible -> ResponsiblePerson:918 | MEDIUM | P1 |
|
||||||
|
| DOCUMENT | Document_ОтражениеЗарплатыВРеглУчете | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to organization dimension | Ref_Key, DataVersion, DeletionMark, Number, Date, Posted, Организация_Key, ПериодРегистрации (+5) | Date, Number, Posted, Ref_Key, Организация_Key, Ответственный_Key | document_belongs_to_organization -> Organization:918, document_has_responsible -> ResponsiblePerson:918 | HIGH | P0 |
|
||||||
|
| NSI_CATALOG | Catalog_СохраненныеНастройки | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Description, ТипНастройки, НастраиваемыйОбъект, НастраиваемыйОбъект_Type (+8) | Description, Ref_Key, НастраиваемыйОбъект_Type, ХранилищеНастроек_Type | reference -> Unknown:900 | MEDIUM | P1 |
|
||||||
|
| DOCUMENT_JOURNAL | DocumentJournal_ПроизводственныеДокументы | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Document journal layer for document indexing and timeline access. linked to counterparties; linked to document chain; linked to organization dimension | Ref, Ref_Type, Date, DeletionMark, Number, Posted, Склад_Key, Контрагент_Key (+16) | Date, Number, Posted, Ref, Ref_Type, Type, ВалютаДокумента_Key, ДоговорКонтрагента_Key (+5) | journal_organization -> Organization:1092, journal_refers_to_document -> Document:912, journal_warehouse -> Warehouse:912, journal_responsible -> ResponsiblePerson:912, journal_counterparty -> Counterparty:744, journal_has_currency -> Currency:372 | MEDIUM | P1 |
|
||||||
|
| DOCUMENT | Document_ПриходныйКассовыйОрдер_РасшифровкаПлатежа | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to counterparties; linked to account dimension | Ref_Key, LineNumber, ДоговорКонтрагента_Key, Сделка, Сделка_Type, КурсВзаиморасчетов, СуммаПлатежа, КратностьВзаиморасчетов (+12) | LineNumber, Ref_Key, ДоговорКонтрагента_Key, Сделка_Type, СтатьяДвиженияДенежныхСредств_Key, СчетНаОплату_Key, СчетУчетаРасчетовПоАвансам_Key, СчетУчетаРасчетовСКонтрагентом_Key | document_line_has_account -> Account:3468, document_has_counterparty -> Counterparty:1092, document_has_cashflow_article -> CashflowArticle:828 | HIGH | P0 |
|
||||||
|
| NSI_CATALOG | Catalog_СохраненныеНастройки_Пользователи | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, LineNumber, Пользователь, Пользователь_Type, ПравоРзменения | LineNumber, Ref_Key, Пользователь_Type | reference -> ResponsiblePerson:900 | MEDIUM | P1 |
|
||||||
|
| ACCUMULATION_REGISTER | AccumulationRegister_НДФЛСведенияОДоходах | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accumulation register layer (balances/turnovers/tax movements). linked to document chain | Recorder, Recorder_Type, RecordSet | Recorder, Recorder_Type | register_recorded_by_document -> Document:888 | HIGH | P0 |
|
||||||
|
| ACCUMULATION_REGISTER | AccumulationRegister_СтраховыеВзносыРсчисленные | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accumulation register layer (balances/turnovers/tax movements). linked to document chain | Recorder, Recorder_Type, RecordSet | Recorder, Recorder_Type | register_recorded_by_document -> Document:888 | HIGH | P0 |
|
||||||
|
| ACCUMULATION_REGISTER | AccumulationRegister_КнигаУчетаДоходовРРасходов | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accumulation register layer (balances/turnovers/tax movements). linked to document chain | Recorder, Recorder_Type, RecordSet | Recorder, Recorder_Type | register_recorded_by_document -> Document:876 | HIGH | P0 |
|
||||||
|
| DOCUMENT | Document_РасходныйКассовыйОрдер_РасшифровкаПлатежа | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to counterparties; linked to account dimension | Ref_Key, LineNumber, ДоговорКонтрагента_Key, КурсВзаиморасчетов, СуммаПлатежа, КратностьВзаиморасчетов, СуммаВзаиморасчетов, СтавкаНДС (+11) | LineNumber, Ref_Key, ДоговорКонтрагента_Key, Сделка_Type, СтатьяДвиженияДенежныхСредств_Key, СчетУчетаРасчетовПоАвансам_Key, СчетУчетаРасчетовСКонтрагентом_Key | document_line_has_account -> Account:3168, document_has_counterparty -> Counterparty:948, document_has_cashflow_article -> CashflowArticle:780 | HIGH | P0 |
|
||||||
|
| ACCUMULATION_REGISTER | AccumulationRegister_РасчетыНалоговыхАгентовСБюджетомПоНДФЛ | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accumulation register layer (balances/turnovers/tax movements). linked to document chain | Recorder, Recorder_Type, RecordSet | Recorder, Recorder_Type | register_recorded_by_document -> Document:864 | HIGH | P0 |
|
||||||
|
| DOCUMENT | Document_ПриходныйКассовыйОрдер | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to counterparties; linked to account dimension; linked to organization dimension; linked to bank account dimension | Ref_Key, DataVersion, DeletionMark, Number, Date, Posted, Организация_Key, СчетКасса_Key (+32) | Date, Number, Posted, Ref_Key, ВалютаДокумента_Key, ДоговорКонтрагента_Key, ДокументОснование_Type, Контрагент_Type (+10) | document_has_counterparty -> Counterparty:1028, document_belongs_to_organization -> Organization:848, document_line_has_account -> Account:848, document_has_currency -> Currency:848, document_has_responsible -> ResponsiblePerson:485, document_has_counterparty -> BankAccount:250 (+2) | HIGH | P0 |
|
||||||
|
| DOCUMENT | Document_РеализацияТоваровУслуг_Услуги | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to account dimension | Ref_Key, LineNumber, Содержание, Количество, Номенклатура_Key, СтавкаНДС, Сумма, СуммаНДС (+10) | LineNumber, Ref_Key, Номенклатура_Key, Субконто_Type, СчетДоходов_Key, СчетРасходов_Key, СчетУчетаНДСПоРеализации_Key | document_line_has_account -> Account:2520, reference -> Item:840, document_line_has_item -> Item:816 | HIGH | P0 |
|
||||||
|
| ACCUMULATION_REGISTER | AccumulationRegister_РеализацияУслуг_RecordType | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accumulation register layer (balances/turnovers/tax movements). linked to account dimension; linked to document chain; linked to organization dimension | Period, Recorder, Recorder_Type, LineNumber, Active, Организация_Key, СчетРасходов_Key, НоменклатурнаяГруппа_Key (+4) | Active, LineNumber, Period, Recorder, Recorder_Type, НоменклатурнаяГруппа_Key, Организация_Key, СчетРасходов_Key | register_recorded_by_document -> Document:835, register_relates_to_organization -> Organization:835, register_relates_to_account -> Account:835, register_relates_to_item -> Item:835 | HIGH | P0 |
|
||||||
|
| DOCUMENT | Document_РасходныйКассовыйОрдер | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to counterparties; linked to account dimension; linked to organization dimension | Ref_Key, DataVersion, DeletionMark, Number, Date, Posted, Организация_Key, ВидОперации (+32) | Date, Number, Posted, Ref_Key, ВалютаДокумента_Key, ДоговорКонтрагента_Key, ДокументОснование_Type, Контрагент_Type (+11) | document_belongs_to_organization -> Organization:1095, document_has_counterparty -> Counterparty:891, document_line_has_account -> Account:807, document_has_currency -> Currency:807, reference -> Unknown:468, document_has_responsible -> ResponsiblePerson:353 (+1) | HIGH | P0 |
|
||||||
|
| ACCUMULATION_REGISTER | AccumulationRegister_НДФЛПредоставленныеСтандартныеВычетыФизЛиц | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accumulation register layer (balances/turnovers/tax movements). linked to document chain | Recorder, Recorder_Type, RecordSet | Recorder, Recorder_Type | register_recorded_by_document -> Document:792 | HIGH | P0 |
|
||||||
|
| DOCUMENT | Document_СчетНаОплатуПокупателю_Услуги | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events | Ref_Key, LineNumber, Содержание, Количество, Цена, Сумма, СтавкаНДС, СуммаНДС (+2) | LineNumber, Ref_Key, Номенклатура_Key | document_line_has_item -> Item:672 | HIGH | P0 |
|
||||||
|
| DOCUMENT_JOURNAL | DocumentJournal_СкладскиеДокументы | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Document journal layer for document indexing and timeline access. linked to document chain; linked to organization dimension | Ref, Ref_Type, Date, DeletionMark, Number, Posted, Склад_Key, Организация_Key (+7) | Date, Number, Posted, Ref, Ref_Type, Type, Организация_Key, Ответственный_Key (+1) | journal_refers_to_document -> Document:666, journal_warehouse -> Warehouse:666, journal_organization -> Organization:666, journal_responsible -> ResponsiblePerson:666 | MEDIUM | P1 |
|
||||||
|
| NSI_CATALOG | Catalog_ПрочиеДоходыРРасходы | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Parent_Key, IsFolder, Code, Description (+3) | Code, Description, Parent_Key, Ref_Key | | MEDIUM | P1 |
|
||||||
|
| CHART_OF_CHARACTERISTIC_TYPES | ChartOfCharacteristicTypes_ВидыСубконтоХозрасчетные | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Auxiliary entity layer | Ref_Key, DataVersion, DeletionMark, Predefined, Code, Description, ValueType | Code, Description, Ref_Key, ValueType | | LOW | P2 |
|
||||||
|
| DOCUMENT_JOURNAL | DocumentJournal_РегламентныеДокументыНДС | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Document journal layer for document indexing and timeline access. linked to document chain; linked to organization dimension | Ref, Ref_Type, Date, DeletionMark, Number, Posted, Организация_Key, Ответственный_Key (+4) | Date, Number, Posted, Ref, Ref_Type, Type, Организация_Key, Ответственный_Key | journal_refers_to_document -> Document:572, journal_organization -> Organization:572, journal_responsible -> ResponsiblePerson:572 | MEDIUM | P1 |
|
||||||
|
| DOCUMENT | Document_ТребованиеНакладная | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to account dimension; linked to organization dimension | Ref_Key, DataVersion, DeletionMark, Number, Date, Posted, Организация_Key, Склад_Key (+29) | Date, Number, Posted, Ref_Key, Контрагент_Key, Организация_Key, Ответственный_Key, ПодразделениеЗатрат_Key (+9) | document_belongs_to_organization -> Organization:540, document_has_warehouse -> Warehouse:540, document_has_responsible -> ResponsiblePerson:540, document_line_has_account -> Account:540, reference -> Unknown:540, document_line_has_item -> Item:540 | HIGH | P0 |
|
||||||
|
| ACCUMULATION_REGISTER | AccumulationRegister_НДСВключенныйВСтоимость_RecordType | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accumulation register layer (balances/turnovers/tax movements). linked to counterparties; linked to account dimension; linked to document chain; linked to organization dimension | Period, Recorder, Recorder_Type, LineNumber, Active, Организация_Key, СчетФактура, СчетФактура_Type (+10) | Active, LineNumber, Period, Recorder, Recorder_Type, Организация_Key, Поставщик_Key, СчетУчетаНДС_Key (+1) | register_recorded_by_document -> Document:534, register_relates_to_organization -> Organization:534, register_relates_to_invoice -> Document:534, register_relates_to_supplier -> Counterparty:534, register_relates_to_account -> Account:84 | HIGH | P0 |
|
||||||
|
| ACCUMULATION_REGISTER | AccumulationRegister_ПрочиеРасчеты_RecordType | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accumulation register layer (balances/turnovers/tax movements). linked to counterparties; linked to account dimension; linked to document chain; linked to organization dimension | Period, Recorder, Recorder_Type, LineNumber, Active, RecordType, Организация_Key, СчетУчета_Key (+9) | Active, LineNumber, Period, RecordType, Recorder, Recorder_Type, ДоговорКонтрагента_Key, Контрагент_Type (+3) | register_recorded_by_document -> Document:528, register_relates_to_organization -> Organization:528, register_relates_to_account -> Account:528, register_relates_to_account -> Document:528, register_relates_to_counterparty -> Counterparty:168 | HIGH | P0 |
|
||||||
|
| NSI_CATALOG | Catalog_ОснованияВыслугиЛет | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Code, Description, КодДляОтчетности2010 | Code, Description, Ref_Key | | MEDIUM | P1 |
|
||||||
|
| NSI_CATALOG | Catalog_СтатьиЗатрат | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Parent_Key, IsFolder, Code, Description (+2) | Code, Description, Parent_Key, Ref_Key | | MEDIUM | P1 |
|
||||||
|
| NSI_CATALOG | Catalog_БанковскиеСчета | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection. linked to counterparties; linked to account dimension; linked to organization dimension | Ref_Key, DataVersion, DeletionMark, Predefined, Owner, Owner_Type, Code, Description (+15) | Code, Description, Owner, Owner_Type, Ref_Key, Банк_Key, БанкДляРасчетов_Key, ВалютаДенежныхСредств_Key | reference -> Account:960, reference -> Unknown:480, reference -> Currency:480, reference -> Counterparty:408, reference -> Organization:72 | MEDIUM | P1 |
|
||||||
|
| ACCUMULATION_REGISTER | AccumulationRegister_НДСВключенныйВСтоимость | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accumulation register layer (balances/turnovers/tax movements). linked to document chain | Recorder, Recorder_Type, RecordSet | Recorder, Recorder_Type | register_recorded_by_document -> Document:468 | HIGH | P0 |
|
||||||
|
| ACCUMULATION_REGISTER | AccumulationRegister_РеализацияУслуг | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accumulation register layer (balances/turnovers/tax movements). linked to document chain | Recorder, Recorder_Type, RecordSet | Recorder, Recorder_Type | register_recorded_by_document -> Document:468 | HIGH | P0 |
|
||||||
|
| NSI_CATALOG | Catalog_ДоходыПоСтраховымВзносам | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Description, ВходитВБазуФОМС, ВходитВБазуФСС, ВходитВБазуПФР(+1) | Description, Ref_Key | | MEDIUM | P1 |
|
||||||
|
| ACCUMULATION_REGISTER | AccumulationRegister_ПособияПоУходуЗаРебенкомДоПолутораЛет_RecordType | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accumulation register layer (balances/turnovers/tax movements). linked to document chain; linked to organization dimension | Period, Recorder, Recorder_Type, LineNumber, Active, Организация_Key, УдалитьФизЛицо_Key, ОблагаетсяЕНВД (+12) | Active, LineNumber, Period, Recorder, Recorder_Type, Организация_Key, Сотрудник_Key, УдалитьФизЛицо_Key (+1) | register_recorded_by_document -> Document:384, register_relates_to_organization -> Organization:384, register_relates_to_individual -> Individual:384, reference -> Unknown:384 | HIGH | P0 |
|
||||||
|
| NSI_CATALOG | Catalog_ВидыКонтактнойРнформации | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Code, Description, РўРёРї, ВидОбъектаКонтактнойРнформации (+4) | Code, Description, Ref_Key | | MEDIUM | P1 |
|
||||||
|
| DOCUMENT | Document_НДФЛиЕСНДоходыРНалоги_ПособияПоУходуЗаРебенкомДоПолутораЛет | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events | Ref_Key, LineNumber, Сотрудник_Key, ОблагаетсяЕНВД, СреднийДневнойЗаработок, ПособиеПоУходуЗаПервымРебенком, ПособиеПоУходуЗаВторымРебенком, ПериодДействияНачало (+8) | LineNumber, Ref_Key, Сотрудник_Key, ФизЛицо_Key | reference -> Unknown:384, document_relates_to_individual -> Individual:384 | HIGH | P0 |
|
||||||
|
| DOCUMENT | Document_КомплектацияНоменклатуры_Комплектующие | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to account dimension | Ref_Key, LineNumber, ДоляСтоимости, Количество, Номенклатура_Key, Сумма, СчетУчета_Key, НомерГТД_Key (+6) | LineNumber, Ref_Key, ДокументОприходования_Type, Номенклатура_Key, НомерГТД_Key, СтранаПроисхождения_Key, СчетУчета_Key | document_line_has_item -> Item:372, document_line_has_account -> Account:372 | HIGH | P0 |
|
||||||
|
| ACCUMULATION_REGISTER | AccumulationRegister_ПособияПоУходуЗаРебенкомДоПолутораЛет | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accumulation register layer (balances/turnovers/tax movements). linked to document chain | Recorder, Recorder_Type, RecordSet | Recorder, Recorder_Type | register_recorded_by_document -> Document:360 | HIGH | P0 |
|
||||||
|
| NSI_CATALOG | Catalog_ОсобыеУсловияТруда | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Code, Description, КодДляОтчетности2010 | Code, Description, Ref_Key | | MEDIUM | P1 |
|
||||||
|
| CHART_OF_CHARACTERISTIC_TYPES | ChartOfCharacteristicTypes_НастройкиПользователей | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Auxiliary entity layer | Ref_Key, DataVersion, DeletionMark, Predefined, Parent_Key, IsFolder, Code, Description (+2) | Code, Description, Parent@navigationLinkUrl, Parent_Key, Ref_Key, ValueType | reference -> Unknown:132 | LOW | P2 |
|
||||||
|
| ACCUMULATION_REGISTER | AccumulationRegister_РасходыПриУСН | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accumulation register layer (balances/turnovers/tax movements). linked to document chain | Recorder, Recorder_Type, RecordSet | Recorder, Recorder_Type | register_recorded_by_document -> Document:312 | HIGH | P0 |
|
||||||
|
| DOCUMENT | Document_Доверенность_Товары | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events | Ref_Key, LineNumber, НаименованиеТовара, ЕдиницаПоКлассификатору_Key, Количество, ЕдиницаПоКлассификатору@navigationLinkUrl | LineNumber, Ref_Key, ЕдиницаПоКлассификатору_Key | document_line_has_item -> Item:312, reference -> Unknown:312 | HIGH | P0 |
|
||||||
|
| ACCUMULATION_REGISTER | AccumulationRegister_ПрочиеРасчеты | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accumulation register layer (balances/turnovers/tax movements). linked to document chain | Recorder, Recorder_Type, RecordSet | Recorder, Recorder_Type | register_recorded_by_document -> Document:300 | HIGH | P0 |
|
||||||
|
| NSI_CATALOG | Catalog_ФизическиеЛица | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Parent_Key, IsFolder, Code, Description (+7) | Code, Description, Parent_Key, Ref_Key | | MEDIUM | P1 |
|
||||||
|
| DOCUMENT | Document_ФормированиеЗаписейКнигиПокупок_ВычетПоПриобретеннымЦенностям | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to counterparties; linked to account dimension; linked to document chain | Ref_Key, LineNumber, ВидЦенности, Поставщик_Key, СчетФактура, СчетФактура_Type, СтавкаНДС, СуммаБезНДС (+18) | LineNumber, Ref_Key, ДокументОплаты_Type, ДокументОтгрузки_Type, РсправленныйСчетФактура_Type, Поставщик_Key, СчетУчетаНДС_Key, СчетФактура_Type | document_line_has_account -> Account:566, document_has_supplier -> Counterparty:283, document_relates_to_invoice -> Document:283 | HIGH | P0 |
|
||||||
|
| DOCUMENT | Document_ФормированиеЗаписейКнигиПокупок | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to organization dimension | Ref_Key, DataVersion, DeletionMark, Number, Date, Posted, Организация_Key, Ответственный_Key (+10) | Date, Number, Posted, Ref_Key, Организация_Key, Ответственный_Key | document_belongs_to_organization -> Organization:274, document_has_responsible -> ResponsiblePerson:274 | HIGH | P0 |
|
||||||
|
| DOCUMENT | Document_ФормированиеЗаписейКнигиПродаж | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to organization dimension | Ref_Key, DataVersion, DeletionMark, Number, Date, Posted, Организация_Key, Ответственный_Key (+12) | Date, Number, Posted, Ref_Key, Организация_Key, Ответственный_Key | document_belongs_to_organization -> Organization:274, document_has_responsible -> ResponsiblePerson:274 | HIGH | P0 |
|
||||||
|
| NSI_CATALOG | Catalog_ПараметрыРсчисляемогоСтраховогоСтажа2014 | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Code, Description | Code, Description, Ref_Key | | MEDIUM | P1 |
|
||||||
|
| NSI_CATALOG | Catalog_ДокументыУдостоверяющиеЛичность | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Description, РљРѕРґРРњРќРЎ, КодПФР| Description, Ref_Key | | MEDIUM | P1 |
|
||||||
|
| DOCUMENT | Document_РасходныйКассовыйОрдер_ВыплатаЗаработнойПлаты | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events | Ref_Key, LineNumber, Ведомость_Key, СуммаКВыплате, Ведомость@navigationLinkUrl | LineNumber, Ref_Key, Ведомость_Key | reference -> Unknown:240 | HIGH | P0 |
|
||||||
|
| NSI_CATALOG | Catalog_СобытияОС | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Code, Description, Комментарий, ВидСобытияОС | Code, Description, Ref_Key | | MEDIUM | P1 |
|
||||||
|
| CHART_OF_CHARACTERISTIC_TYPES | ChartOfCharacteristicTypes_НазначенияСвойствКатегорийОбъектов | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Auxiliary entity layer | Ref_Key, DataVersion, DeletionMark, Predefined, Parent_Key, IsFolder, Code, Description (+2) | Code, Description, Parent@navigationLinkUrl, Parent_Key, Ref_Key, ValueType | reference -> Unknown:192 | LOW | P2 |
|
||||||
|
| NSI_CATALOG | Catalog_СтатьиДвиженияДенежныхСредств | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Parent_Key, IsFolder, Code, Description (+1) | Code, Description, Parent_Key, Ref_Key | | MEDIUM | P1 |
|
||||||
|
| ACCUMULATION_REGISTER | AccumulationRegister_ВыпускПродукцииУслуг_RecordType | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accumulation register layer (balances/turnovers/tax movements). linked to account dimension; linked to document chain; linked to organization dimension | Period, Recorder, Recorder_Type, LineNumber, Active, Организация_Key, Продукция_Key, СчетЗатрат_Key (+19) | Active, LineNumber, Period, Recorder, Recorder_Type, НоменклатурнаяГруппа_Key, Организация_Key, Подразделение_Key (+7) | register_relates_to_account -> Account:384, register_recorded_by_document -> Document:192, register_relates_to_organization -> Organization:192, reference -> Unknown:192, register_relates_to_department -> Department:192, register_relates_to_item -> Item:192 (+2) | HIGH | P0 |
|
||||||
|
| DOCUMENT | Document_ПередачаТоваров | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to counterparties; linked to account dimension; linked to organization dimension | Ref_Key, DataVersion, DeletionMark, Number, Date, Posted, ВалютаДокумента_Key, ВидОперации (+27) | Date, Number, Posted, Ref_Key, ВалютаДокумента_Key, Грузоотправитель_Key, Грузополучатель_Key, ДоговорКонтрагента_Key (+8) | document_line_has_account -> Account:576, reference -> Unknown:576, document_has_counterparty -> Counterparty:384, document_has_currency -> Currency:192, document_belongs_to_organization -> Organization:192, document_has_responsible -> ResponsiblePerson:192 (+1) | HIGH | P0 |
|
||||||
|
| DOCUMENT | Document_ПоступлениеРзПереработки_Продукция | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to account dimension | Ref_Key, LineNumber, Количество, Номенклатура_Key, СуммаПлановая, ПлановаяСтоимость, Счет_Key, Спецификация_Key (+2) | LineNumber, Ref_Key, Номенклатура_Key, Спецификация_Key, Счет_Key | document_line_has_item -> Item:192, document_line_has_account -> Account:192 | HIGH | P0 |
|
||||||
|
| DOCUMENT | Document_Доверенность | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to counterparties; linked to organization dimension | Ref_Key, DataVersion, DeletionMark, Number, Date, Posted, Организация_Key, ФизЛицо_Key (+17) | Date, Number, Posted, Ref_Key, БанковскийСчетОрганизации_Key, ДоговорКонтрагента_Key, Контрагент_Key, Организация_Key (+3) | document_belongs_to_organization -> Organization:374, document_has_counterparty -> Counterparty:374, document_relates_to_individual -> Individual:175, document_has_responsible -> ResponsiblePerson:127 | HIGH | P0 |
|
||||||
|
| ACCUMULATION_REGISTER | AccumulationRegister_ВыпускПродукцииУслуг | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accumulation register layer (balances/turnovers/tax movements). linked to document chain | Recorder, Recorder_Type, RecordSet | Recorder, Recorder_Type | register_recorded_by_document -> Document:180 | HIGH | P0 |
|
||||||
|
| DOCUMENT | Document_ПоступлениеРзПереработки | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to counterparties; linked to account dimension; linked to organization dimension; linked to invoice documents | Ref_Key, DataVersion, DeletionMark, Number, Date, Posted, ВалютаДокумента_Key, Контрагент_Key (+32) | Date, Number, Posted, Ref_Key, ВалютаДокумента_Key, ДоговорКонтрагента_Key, Контрагент_Key, НоменклатурнаяГруппа_Key (+9) | document_line_has_account -> Account:1092, document_has_counterparty -> Counterparty:540, document_has_currency -> Currency:180, document_belongs_to_organization -> Organization:180, document_has_responsible -> ResponsiblePerson:180, document_line_has_item -> Item:180 (+3) | HIGH | P0 |
|
||||||
|
| DOCUMENT | Document_ПоступлениеРзПереработки_Услуги | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to account dimension | Ref_Key, LineNumber, Номенклатура_Key, Количество, Цена, РЎСѓРјРјР°, СтавкаНДС, СчетУчетаНДС_Key (+7) | LineNumber, Ref_Key, Номенклатура_Key, СтатьяЗатрат_Key, СчетУчетаНДС_Key | document_line_has_item -> Item:180, document_line_has_account -> Account:180, reference -> Unknown:180 | HIGH | P0 |
|
||||||
|
| DOCUMENT | Document_АвансовыйОтчет | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to organization dimension | Ref_Key, DataVersion, DeletionMark, Number, Date, Posted, ВалютаДокумента_Key, Комментарий (+25) | Date, Number, Posted, Ref_Key, ВалютаДокумента_Key, Организация_Key, Ответственный_Key, Склад_Key (+2) | document_has_currency -> Currency:144, document_belongs_to_organization -> Organization:144, document_relates_to_individual -> Individual:144, document_has_responsible -> ResponsiblePerson:144, document_has_warehouse -> Warehouse:132 | HIGH | P0 |
|
||||||
|
| NSI_CATALOG | Catalog_Пользователи | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Parent_Key, IsFolder, Code, Description (+2) | Code, Description, Parent_Key, Ref_Key, ФизЛицо_Key | reference -> Unknown:96 | MEDIUM | P1 |
|
||||||
|
| DOCUMENT | Document_АвансовыйОтчет_Товары | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to counterparties; linked to account dimension | Ref_Key, LineNumber, ВидДокВходящий, НомерВходящегоДокумента, ДатаВходящегоДокумента, Поставщик_Key, СчетФактура_Key, Номенклатура_Key (+17) | LineNumber, Ref_Key, Номенклатура_Key, НомерГТД_Key, Поставщик_Key, СтранаПроисхождения_Key, СчетУчета_Key, СчетУчетаНДС_Key (+1) | document_line_has_account -> Account:264, document_has_supplier -> Counterparty:132, document_line_has_item -> Item:132 | HIGH | P0 |
|
||||||
|
| DOCUMENT | Document_ФормированиеЗаписейКнигиПокупок_ВычетПриРзмененииСтоимостиВСторонуУменьшения | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to counterparties; linked to account dimension; linked to invoice documents | Ref_Key, LineNumber, ВидЦенности, Поставщик_Key, СчетФактура_Key, СтавкаНДС, СуммаБезНДС, НДС (+5) | LineNumber, Ref_Key, РсправленныйСчетФактура_Key, Поставщик_Key, СчетУчетаНДС_Key, СчетФактура_Key | document_has_supplier -> Counterparty:132, document_relates_to_invoice -> InvoiceDocument:132, document_line_has_account -> Account:132 | HIGH | P0 |
|
||||||
|
| DOCUMENT | Document_КомплектацияНоменклатуры | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to account dimension; linked to organization dimension | Ref_Key, DataVersion, DeletionMark, Number, Date, Posted, ВидОперации, Количество (+22) | Date, Number, Posted, Ref_Key, Номенклатура_Key, Организация_Key, Ответственный_Key, Склад_Key (+5) | document_line_has_item -> Item:252, document_belongs_to_organization -> Organization:126, document_has_responsible -> ResponsiblePerson:126, document_has_warehouse -> Warehouse:126, document_line_has_account -> Account:126 | HIGH | P0 |
|
||||||
|
| DOCUMENT | Document_КорректировкаРеализации | snapshot_2020-03.ndjson, snapshot_2020-04.ndjson, snapshot_2020-05.ndjson, snapshot_2020-06.ndjson (+6) | Primary document fact entity for operational accounting events. linked to counterparties; linked to document chain; linked to organization dimension | Ref_Key, DataVersion, DeletionMark, Number, Date, Posted, АдресДоставки, БанковскийСчетОрганизации_Key (+32) | Date, Number, Posted, Ref_Key, БанковскийСчетОрганизации_Key, ВалютаДокумента_Key, Грузоотправитель_Key, Грузополучатель_Key (+12) | reference -> Document:248, document_has_counterparty -> Counterparty:248, document_belongs_to_organization -> Organization:124, document_has_responsible -> ResponsiblePerson:124, document_has_warehouse -> Warehouse:124, document_has_currency -> Currency:124 (+1) | HIGH | P0 |
|
||||||
|
| NSI_CATALOG | Catalog_ДоходыЕСН | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Code, Description, ВходитВБазуФОМС, ВходитВБазуФСС (+1) | Code, Description, Ref_Key | | MEDIUM | P1 |
|
||||||
|
| DOCUMENT | Document_АвансовыйОтчет_ВыданныеАвансы | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to document chain | Ref_Key, LineNumber, ДокументАванса, ДокументАванса_Type, Сумма | LineNumber, Ref_Key, ДокументАванса_Type | reference -> Document:120 | HIGH | P0 |
|
||||||
|
| NSI_CATALOG | Catalog_ТерриториальныеУсловия | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Code, Description | Code, Description, Ref_Key | | MEDIUM | P1 |
|
||||||
|
| DOCUMENT | Document_АвансовыйОтчет_Прочее | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to account dimension | Ref_Key, LineNumber, ВидДокВходящий, НомерВходящегоДокумента, ДатаВходящегоДокумента, Поставщик_Key, СчетФактура_Key, Номенклатура_Key (+27) | LineNumber, Ref_Key, Номенклатура_Key, ПодразделениеЗатрат_Key, Поставщик_Key, Субконто1_Type, Субконто2_Type, Субконто3_Type (+7) | document_line_has_account -> Account:216, reference -> Unknown:216 | HIGH | P0 |
|
||||||
|
| ACCUMULATION_REGISTER | AccumulationRegister_ПособияСоциальномуСтрахованию_RecordType | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accumulation register layer (balances/turnovers/tax movements). linked to document chain; linked to organization dimension | Period, Recorder, Recorder_Type, LineNumber, Active, Организация_Key, ВидПособияСоциальногоСтрахования, ОблагаетсяЕНВД (+11) | Active, LineNumber, Period, Recorder, Recorder_Type, ДокументОснование_Key, Организация_Key, Сотрудник_Key | register_recorded_by_document -> Document:96, register_relates_to_organization -> Organization:96, reference -> Unknown:96 | HIGH | P0 |
|
||||||
|
| NSI_CATALOG | Catalog_КлассификаторЕдиницРзмерения | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Code, Description, НаименованиеПолное | Code, Description, Ref_Key | | MEDIUM | P1 |
|
||||||
|
| DOCUMENT | Document_НДФЛиЕСНДоходыРНалоги_ПособияСоциальномуСтрахованию | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events | Ref_Key, LineNumber, ОплаченныеДни, СуммаВсего, СуммаСверхНорм, Сотрудник_Key, ОблагаетсяЕНВД, ВидПособияСоциальногоСтрахования (+7) | LineNumber, Ref_Key, Сотрудник_Key, ФизЛицо_Key | reference -> Unknown:96, document_relates_to_individual -> Individual:96 | HIGH | P0 |
|
||||||
|
| DOCUMENT | Document_ФормированиеЗаписейКнигиПродаж_ВосстановленПоАвансам | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to counterparties; linked to document chain | Ref_Key, LineNumber, Поставщик_Key, ДоговорКонтрагента_Key, СчетФактура, СчетФактура_Type, СтавкаНДС, СуммаБезНДС (+7) | LineNumber, Ref_Key, ДоговорКонтрагента_Key, РсправленныйСчетФактура_Key, Поставщик_Key, СчетФактура_Type | document_has_supplier -> Counterparty:84, document_has_counterparty -> Counterparty:84, document_relates_to_invoice -> Document:84 | HIGH | P0 |
|
||||||
|
| ACCUMULATION_REGISTER | AccumulationRegister_ПособияСоциальномуСтрахованию | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Accumulation register layer (balances/turnovers/tax movements). linked to document chain | Recorder, Recorder_Type, RecordSet | Recorder, Recorder_Type | register_recorded_by_document -> Document:72 | HIGH | P0 |
|
||||||
|
| NSI_CATALOG | Catalog_ОснованияРсчисляемогоТрудовогоСтажа | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Code, Description | Code, Description, Ref_Key | | MEDIUM | P1 |
|
||||||
|
| NSI_CATALOG | Catalog_НоменклатурныеГруппы | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Parent_Key, IsFolder, Code, Description | Code, Description, Parent_Key, Ref_Key | | MEDIUM | P1 |
|
||||||
|
| DOCUMENT | Document_СчетФактураПолученный_Авансы | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events | Ref_Key, LineNumber, Сумма, СуммаНДС, СтавкаНДС, СуммаДоКорректировки, СтавкаНДСДоКорректировки, СуммаНДСДоКорректировки (+1) | LineNumber, Ref_Key, КорректируемыйСчетФактура_Key | | HIGH | P0 |
|
||||||
|
| NSI_CATALOG | Catalog_Валюты | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Code, Description, НаименованиеПолное, ПараметрыПрописиНаРусском | Code, Description, Ref_Key | | MEDIUM | P1 |
|
||||||
|
| NSI_CATALOG | Catalog_ВнешниеОбработки | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Parent_Key, IsFolder, Code, Description (+6) | Code, Description, Parent_Key, Ref_Key, ХранилищеВнешнейОбработки_Type | | MEDIUM | P1 |
|
||||||
|
| NSI_CATALOG | Catalog_ДолжностиОрганизаций | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Code, Description, ЯвляетсяФармацевтическойДолжностью, ТрудоваяФункция_Key | Code, Description, Ref_Key, ТрудоваяФункция_Key | | MEDIUM | P1 |
|
||||||
|
| NSI_CATALOG | Catalog_Организации | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection. linked to bank account dimension | Ref_Key, DataVersion, DeletionMark, Predefined, Code, Description, Префикс, РРќРќ (+32) | Code, Description, Ref_Key, ГоловнаяОрганизация_Key, РндивидуальныйПредприниматель_Key, ОсновнойБанковскийСчет_Key, РегистрацияВРФНС_Key, СтранаПостоянногоМестонахождения_Key (+3) | reference -> Individual:36, reference -> BankAccount:12, reference -> Unknown:12 | MEDIUM | P1 |
|
||||||
|
| NSI_CATALOG | Catalog_ОсновныеСредства | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Parent_Key, IsFolder, Code, Description (+18) | Code, Description, Parent_Key, Ref_Key, КодПоОКОФ_Key, ШифрПоЕНАОФ_Key | | MEDIUM | P1 |
|
||||||
|
| NSI_CATALOG | Catalog_СотрудникиОрганизаций | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection. linked to organization dimension | Ref_Key, DataVersion, DeletionMark, Predefined, Parent_Key, IsFolder, Code, Description (+11) | Code, Description, Parent_Key, Ref_Key, Организация_Key, ТекущаяДолжностьОрганизации_Key, ТекущееПодразделениеОрганизации_Key, Физлицо_Key | reference -> Individual:36, reference -> Organization:36 | MEDIUM | P1 |
|
||||||
|
| NSI_CATALOG | Catalog_СпособыОтраженияЗарплатыВРеглУчете | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection. linked to account dimension | Ref_Key, DataVersion, DeletionMark, Predefined, Description, СчетДт_Key, СубконтоДт1, СубконтоДт1_Type (+22) | Description, Ref_Key, СубконтоДт1_Type, СубконтоДт2_Type, СубконтоДт3_Type, СубконтоДтНУ1_Type, СубконтоДтНУ2_Type, СубконтоДтНУ3_Type (+6) | reference -> Account:48, reference -> Unknown:24 | MEDIUM | P1 |
|
||||||
|
| NSI_CATALOG | Catalog_СпособыОтраженияРасходовПоАмортизации | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Code, Description, Комментарий, Организация_Key (+1) | Code, Description, Ref_Key, Организация_Key | | MEDIUM | P1 |
|
||||||
|
| NSI_CATALOG | Catalog_СпособыОтраженияРасходовПоАмортизации_Способы | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection. linked to account dimension | Ref_Key, LineNumber, Субконто1, Субконто1_Type, ПодразделениеОрганизации_Key, Субконто2, Субконто2_Type, Субконто3 (+4) | LineNumber, Ref_Key, ПодразделениеОрганизации_Key, Субконто1_Type, Субконто2_Type, Субконто3_Type, СчетЗатрат_Key | reference -> Unknown:36, reference -> Account:36, reference -> Item:12 | MEDIUM | P1 |
|
||||||
|
| NSI_CATALOG | Catalog_ТипыЦенНоменклатуры | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Code, Description, ВалютаЦены_Key, ЦенаВключаетНДС (+4) | Code, Description, Ref_Key, ВалютаЦены_Key | reference -> Currency:36 | MEDIUM | P1 |
|
||||||
|
| DOCUMENT_JOURNAL | DocumentJournal_ДокументыПоОС | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Document journal layer for document indexing and timeline access. linked to document chain; linked to organization dimension | Ref, Ref_Type, Date, DeletionMark, Number, Posted, Организация_Key, ОбъектСтроительства_Key (+7) | Date, Number, Posted, Ref, Ref_Type, Type, ОбъектСтроительства_Key, Организация_Key (+2) | journal_refers_to_document -> Document:36, journal_organization -> Organization:36, journal_responsible -> ResponsiblePerson:36 | MEDIUM | P1 |
|
||||||
|
| DOCUMENT | Document_ПринятиеКУчетуОС | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to account dimension; linked to organization dimension | Ref_Key, DataVersion, DeletionMark, Number, Date, Posted, ВидОперации, ГодоваяНормаАмортизацииБУ (+32) | Date, Number, Posted, Ref_Key, ГрафикАмортизацииПоГодуБУ_Key, МОЛБУ_Key, МестонахождениеОС_Key, Номенклатура_Key (+20) | reference -> Unknown:120, document_line_has_account -> Account:108, document_line_has_item -> Item:36, document_belongs_to_organization -> Organization:36, document_has_responsible -> ResponsiblePerson:36, document_has_warehouse -> Warehouse:36 | HIGH | P0 |
|
||||||
|
| DOCUMENT | Document_ПринятиеКУчетуОС_ОсновныеСредства | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events | Ref_Key, LineNumber, ОсновноеСредство_Key, РнвентарныйНомер, ОсновноеСредство@navigationLinkUrl | LineNumber, Ref_Key, ОсновноеСредство_Key | reference -> Unknown:36 | HIGH | P0 |
|
||||||
|
| NSI_CATALOG | Catalog_КлассификаторСтранМира | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Code, Description, НаименованиеПолное, КодАльфа2 (+2) | Code, Description, Ref_Key | | MEDIUM | P1 |
|
||||||
|
| NSI_CATALOG | Catalog_ПодразделенияОрганизаций | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Owner_Key, Parent_Key, Code, Description (+5) | Code, Description, Owner@navigationLinkUrl, Owner_Key, Parent_Key, Ref_Key | reference -> Unknown:24 | HIGH | P0 |
|
||||||
|
| DOCUMENT | Document_АвансовыйОтчет_ОплатаПоставщикам | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to counterparties; linked to account dimension | Ref_Key, LineNumber, ВидДокВходящий, ДатаВходящегоДокумента, НомерВходящегоДокумента, Сумма, Контрагент_Key, ДоговорКонтрагента_Key (+13) | LineNumber, Ref_Key, ДоговорКонтрагента_Key, Контрагент_Key, Сделка_Type, СчетУчетаРасчетовПоАвансам_Key, СчетУчетаРасчетовСКонтрагентом_Key | document_line_has_account -> Account:96, document_has_counterparty -> Counterparty:72 | HIGH | P0 |
|
||||||
|
| DOCUMENT | Document_СписаниеНДС | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to counterparties; linked to account dimension; linked to document chain; linked to organization dimension | Ref_Key, DataVersion, DeletionMark, Number, Date, Posted, Организация_Key, Ответственный_Key (+14) | Date, Number, Posted, Ref_Key, Организация_Key, Ответственный_Key, ПодразделениеОрганизации_Key, СубконтоСписанияНДС1_Type (+3) | document_belongs_to_organization -> Organization:24, document_has_responsible -> ResponsiblePerson:24, document_line_has_account -> Account:24, reference -> Counterparty:12, reference -> Document:12 | HIGH | P0 |
|
||||||
|
| NSI_CATALOG | Catalog_ГруппыПользователей | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Parent_Key, Code, Description, АдминистраторГруппы_Key (+1) | Code, Description, Parent_Key, Ref_Key, АдминистраторГруппы_Key | | MEDIUM | P1 |
|
||||||
|
| NSI_CATALOG | Catalog_КонвертацииРР·РнформационныхБазПредыдущихВерсий | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Code, Description, РдентификаторКонфигурации, Конфигурация (+8) | Code, Description, Ref_Key, ХранилищеОбработка_Type, ХранилищеПравила_Type | | MEDIUM | P1 |
|
||||||
|
| NSI_CATALOG | Catalog_КонтактныеЛица | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Code, Description, Фамилия, РРјСЏ (+10) | Code, Description, Ref_Key, ОбъектВладелец_Type, ПользовательЛичногоКонтакта_Key, Роль_Key | reference -> ResponsiblePerson:12, reference -> Unknown:12 | MEDIUM | P1 |
|
||||||
|
| NSI_CATALOG | Catalog_РегистрацияВРФНС | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Owner_Key, Code, Description, РљРџРџ (+10) | Code, Description, Owner@navigationLinkUrl, Owner_Key, Ref_Key, Доверенность_Key, Представитель_Type | reference -> Unknown:12 | HIGH | P0 |
|
||||||
|
| NSI_CATALOG | Catalog_Склады | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Parent_Key, IsFolder, Code, Description (+4) | Code, Description, Parent_Key, Ref_Key, НоменклатурнаяГруппа_Key, ТипЦенРозничнойТорговли_Key | reference -> Warehouse:12 | MEDIUM | P1 |
|
||||||
|
| NSI_CATALOG | Catalog_УчетныеЗаписиРлектроннойПочты | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Master data catalog used for object lookup and filter preselection | Ref_Key, DataVersion, DeletionMark, Predefined, Description, РмяПользователя, АдресРлектроннойПочты, СерверРсходящейПочтыSMTP (+19) | Description, Ref_Key, УдалитьОтветственныйЗаОбработкуПисем_Key | | MEDIUM | P1 |
|
||||||
|
| OTHER | ChartOfCalculationTypes_ОсновныеНачисленияОрганизаций | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Auxiliary entity layer | Ref_Key, DataVersion, DeletionMark, Predefined, Code, Description, LeadingCalculationTypes, СпособОтраженияВБухучете_Key (+10) | Code, Description, LeadingCalculationTypes, Ref_Key, КодДоходаЕСН_Key, КодДоходаНДФЛ_Key, КодДоходаСтраховыеВзносы_Key, СпособОтраженияВБухучете_Key | reference -> Unknown:48 | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_АлгоритмПодписи | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_АлгоритмХеширования | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_АлгоритмШифрования | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_ВалютаРегламентированногоУчета | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value_Key, SurrogateKey, Value@navigationLinkUrl | Value_Key | reference -> Unknown:12 | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_ВестиУчетПрослеживаемыхТоваров | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_ВыполнитьЗагрузкуПараметровРаботыПрограммы | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_ВыполнятьПроверкуРЦПНаСервере | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_ГотовностьПрограммыКРаботе | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value_Type, Value_Base64Data, SurrogateKey | Value_Type | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_ДатаЗагрузкиОписанияФорматовДляПреобразования | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_ДатаНачалаАвтоматическогоОтраженияВУчетеНДС | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_ДатаНачалаАвтоматическогоОтраженияВУчетеУСН | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_ДатаНачалаУчетаПрослеживаемыхРмпортныхТоваров | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_ДатаОбновленияПовторноРспользуемыхЗначенийМРО | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_ДатаТекущейВерсии | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_ДетализироватьОбновлениеРБВЖурналеРегистрации | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_ДокументооборотСКонтролирующимиОрганами_АлгоритмГенерацииСессионногоКлюча | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_ДокументооборотСКонтролирующимиОрганами_АлгоритмПодписания | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_ДокументооборотСКонтролирующимиОрганами_АлгоритмХешФункции | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_ДокументооборотСКонтролирующимиОрганами_АлгоритмШифрования | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_ДокументооборотСКонтролирующимиОрганами_ВерсияВнешнегоМодуля | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_ДокументооборотСКонтролирующимиОрганами_ВнешнийМодуль | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value_Type, Value_Base64Data, SurrogateKey | Value_Type | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_ДокументооборотСКонтролирующимиОрганами_РмяКриптопровайдера | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_ДокументооборотСКонтролирующимиОрганами_РспользоватьВнешнийМодуль | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_ДокументооборотСКонтролирующимиОрганами_ОтпечатокСертификатаСервераОнлайнПроверки | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_ДокументооборотСКонтролирующимиОрганами_СертификатСервераОнлайнПроверки | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value_Type, Value_Base64Data, SurrogateKey | Value_Type | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_ДокументооборотСКонтролирующимиОрганами_ТипКриптопровайдера | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_ДополнительнаяКолонкаПечатныхФормДокументов | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_ЕстьПроизводственнаяДеятельность | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_ЕстьРозничнаяТорговля | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_ЗаголовокСистемы | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_ЗапрещатьЗагрузкуФайловПоРасширению | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_ЗапуститьОбновлениеРнформационнойБазы | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_РдентификаторРнформационнойБазы | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_РзвлекатьТекстыФайловНаСервере | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_РнтервалДляОпросаРегламентныхЗаданийВФайловомВарианте | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_РспользоватьВозвратнуюТару | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_РспользоватьМеханизмОнлайнСервисовРО | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_РспользоватьОбменРР” | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_РспользоватьОбменРДМеждуОрганизациями | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_РспользоватьОбменРДСБанками | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_РспользоватьОграниченияПравДоступаНаУровнеЗаписей | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_РспользоватьОзнакомлениеСРлектроннымиДокументами | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_РспользоватьОтложеннуюОтправкуРлектронныхДокументов | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_РспользоватьСинхронизациюДанных | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_РспользоватьСинхронизациюДанныхВЛокальномРежиме | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_РспользоватьРлектронныеЦифровыеПодписи | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_РспользуетсяТрудФармацевтов | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_РсточникДанныхАдресногоКлассификатора | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_КаталогВременныхФайловДляLinux | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_КаталогВременныхФайловДляWindows | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_КаталогДополнительнойРнформации | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_КонтекстАвторизации | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_КонтекстКриптографии | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_КонтролироватьПоследовательностьПроведения | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_МаксимальныйРазмерФайла | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_НастройкаОбновленияКонфигурации | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value_Type, Value_Base64Data, SurrogateKey | Value_Type | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_НастройкаФайлаОбновленияКонфигурации | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value_Type, Value_Base64Data, SurrogateKey | Value_Type | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_НастройкиВыполненияРегламентныхЗаданий | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value_Type, Value_Base64Data, SurrogateKey | Value_Type | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_НастройкиКолонтитуловПоУмолчанию | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value_Type, Value_Base64Data, SurrogateKey | Value_Type | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_НачалоОценкиДоходовРРасходовВНУПоКурсуАвансов | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_НачалоПримененияРсправленныхСчетовФактур | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_НомерВерсииКонфигурации | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_ОписаниеФайлаКонфигурацииДляОбновления | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_ОтдельнаяНумерацияСчетовФактурНаАванс | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_ОтключитьКонтрольОтрицательныхОстатков | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_ПараметрыАдминистрированияРР‘ | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value_Type, Value_Base64Data, SurrogateKey | Value_Type | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_ПараметрыАдресногоКлассификатора | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value_Type, Value_Base64Data, SurrogateKey | Value_Type | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_ПараметрыРаботыПользователей | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value_Type, Value_Base64Data, SurrogateKey | Value_Type | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_ПараметрыСлужебныхСобытий | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value_Type, Value_Base64Data, SurrogateKey | Value_Type | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_ПараметрыСообщенияПриОбращенииВОтделТехническойПоддержки | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value_Type, Value_Base64Data, SurrogateKey | Value_Type | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_ПользовательДляВыполненияРегламентныхЗаданийВФайловомВарианте | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value_Key, SurrogateKey | Value_Key | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_ПредельноеКоличествоЗаписейВРазделеДекларацииПоНДС | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_ПрефиксУзлаРаспределеннойРнформационнойБазы | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_ПрименяемыеСистемыНалогообложения | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_ПрименятьДатуЗапретаДляПолныхПрав | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_ПрименяютсяРазныеСтавкиНалогаНаПрибыль | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_ПровайдерРЦП | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_ПроверятьРазницуВоВремениССервером | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_СведенияОбОбновленииРР‘ | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value_Type, Value_Base64Data, SurrogateKey | Value_Type | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_СкладДляОбменаДаннымиСУТ | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value_Key, SurrogateKey | Value_Key | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_СохранятьРнформациюОМестеСозданияОбъектов | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_СписокЗапрещенныхРасширений | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_СрокОплатыПокупателей | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_СрокОплатыПоставщикам | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_СтатусОбновленияКонфигурации | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value_Type, Value_Base64Data, SurrogateKey | Value_Type | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_ТаймаутПодключенияКСервисуРнтернетПоддержки | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_ТипПровайдераРЦП | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_ТипЦенПлановойСебестоимостиНоменклатуры | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value_Key, SurrogateKey, Value@navigationLinkUrl | Value_Key | reference -> Unknown:12 | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_УведомлятьОбОшибкахМеханизмаОнлайнСервисовРО | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_УдалитьРспользоватьОзнакомлениеСРлектроннымиДокументами | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_УчетЗарплатыРКадровВоВнешнейПрограмме | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_ФайлКонфигурацииДляОбновления | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value_Type, Value_Base64Data, SurrogateKey | Value_Type | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_ФайлОбработкиРнтернетПоддержкиПользователей | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value_Type, Value_Base64Data, SurrogateKey | Value_Type | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_ХранитьФайлыВТомахНаДиске | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value, SurrogateKey | | | LOW | P2 |
|
||||||
|
| CONSTANT | Constant_ШаблоныТелефонныхНомеров | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Configuration constant layer | Value_Type, Value_Base64Data, SurrogateKey | Value_Type | | LOW | P2 |
|
||||||
|
| DOCUMENT | Document_АктОбОказанииПроизводственныхУслуг | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to counterparties; linked to account dimension; linked to organization dimension | Ref_Key, DataVersion, DeletionMark, Number, Date, Posted, Организация_Key, Контрагент_Key (+32) | Date, Number, Posted, Ref_Key, ВалютаДокумента_Key, ДоговорКонтрагента_Key, Рсполнитель_Key, Контрагент_Key (+9) | document_line_has_account -> Account:48, document_has_counterparty -> Counterparty:36, document_belongs_to_organization -> Organization:12, document_has_currency -> Currency:12, document_has_responsible -> ResponsiblePerson:12, reference -> Unknown:12 | HIGH | P0 |
|
||||||
|
| DOCUMENT | Document_АктОбОказанииПроизводственныхУслуг_Услуги | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to account dimension | Ref_Key, LineNumber, Количество, Номенклатура_Key, Цена, Сумма, СтавкаНДС, СуммаНДС (+14) | LineNumber, Ref_Key, Номенклатура_Key, НоменклатурнаяГруппа_Key, Спецификация_Key, Субконто_Type, СчетДоходов_Key, СчетЗатрат_Key (+2) | document_line_has_account -> Account:36, document_line_has_item -> Item:12 | HIGH | P0 |
|
||||||
|
| DOCUMENT | Document_РегламентнаяОперация_Ошибки | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events | Ref_Key, LineNumber, Описание | LineNumber, Ref_Key | | HIGH | P0 |
|
||||||
|
| DOCUMENT | Document_СчетФактураВыданный_ДатаНомерДокументовОплаты | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Primary document fact entity for operational accounting events. linked to account dimension | Ref_Key, LineNumber, ДатаПлатежноРасчетногоДокумента, НомерПлатежноРасчетногоДокумента | LineNumber, Ref_Key | document_line_has_account -> Account:24 | HIGH | P0 |
|
||||||
|
| OTHER | ExchangePlan_ОбменРозницаБухгалтерия20 | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Auxiliary entity layer | Ref_Key, DataVersion, DeletionMark, Code, Description, SentNo, ReceivedNo, РспользоватьРнформациюОМестеСозданияОбъектовПриВыгрузкеРЗагрузкеДанных | Code, Description, Ref_Key | | LOW | P2 |
|
||||||
|
| OTHER | ExchangePlan_ОбменРозницаБухгалтерияПредприятия | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Auxiliary entity layer | Ref_Key, DataVersion, DeletionMark, Code, Description, SentNo, ReceivedNo, РспользоватьОтборПоОрганизациям (+8) | Code, Description, Ref_Key | | LOW | P2 |
|
||||||
|
| OTHER | ExchangePlan_ОбменУправлениеНебольшойФирмойБухгалтерия20 | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Auxiliary entity layer | Ref_Key, DataVersion, DeletionMark, Code, Description, SentNo, ReceivedNo, ДатаНачалаВыгрузкиДокументов (+11) | Code, Description, Ref_Key, Контрагент_Key, Подразделение_Key, Склад_Key, СпособОтраженияРасходов_Key, СтатьяЗатрат_Key (+1) | | LOW | P2 |
|
||||||
|
| OTHER | ExchangePlan_ОбменУправлениеТорговлейБухгалтерияКОРП | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Auxiliary entity layer | Ref_Key, DataVersion, DeletionMark, Code, Description, SentNo, ReceivedNo, ДатаНачалаВыгрузкиДокументов (+3) | Code, Description, Ref_Key | | LOW | P2 |
|
||||||
|
| OTHER | ExchangePlan_ОбменУправлениеТорговлейБухгалтерияКОРПФоновый | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Auxiliary entity layer | Ref_Key, DataVersion, DeletionMark, Code, Description, SentNo, ReceivedNo | Code, Description, Ref_Key | | LOW | P2 |
|
||||||
|
| OTHER | ExchangePlan_ОбменУправлениеТорговлейБухгалтерияПредприятия | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Auxiliary entity layer | Ref_Key, DataVersion, DeletionMark, Code, Description, SentNo, ReceivedNo, ДатаНачалаВыгрузкиДокументов (+11) | Code, Description, Ref_Key, НоменклатурнаяГруппаПоУмолчанию_Key, СтатьяПрочихДоходовРасходов_ОприходованиеТоваров_Key | | LOW | P2 |
|
||||||
|
| OTHER | ExchangePlan_ПоОрганизации | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Auxiliary entity layer | Ref_Key, DataVersion, DeletionMark, Code, Description, SentNo, ReceivedNo, Организации | Code, Description, Ref_Key | | LOW | P2 |
|
||||||
|
| OTHER | ExchangePlan_Полный | snapshot_2020-01.ndjson, snapshot_2020-02.ndjson, snapshot_2020-03.ndjson, snapshot_2020-04.ndjson (+8) | Auxiliary entity layer | Ref_Key, DataVersion, DeletionMark, Code, Description, SentNo, ReceivedNo | Code, Description, Ref_Key | | LOW | P2 |
|
||||||
|
|
||||||
|
## P0 Ready (address-query first pass)
|
||||||
|
|
||||||
|
P0 candidates were assigned automatically based on entity family and observable filter/relationship signals.
|
||||||
|
Detailed machine-readable list:
|
||||||
|
- `docs/ADDRESS/runs/2026-03-29_Address_Query_Entity_Inventory_2020/entity_inventory_p0_candidates.json`
|
||||||
|
|
||||||
|
Total P0 candidates: **118**.
|
||||||
|
|
||||||
@@ -0,0 +1,93 @@
|
|||||||
|
# Address Query — Execution Lineup V1 (Project Sync)
|
||||||
|
|
||||||
|
Дата: 2026-03-29
|
||||||
|
|
||||||
|
## Принцип выполнения
|
||||||
|
|
||||||
|
Один пакет, последовательные subwave, без большого неразмеченного рефакторинга.
|
||||||
|
|
||||||
|
## Subwave M0 — Contracts and Foundations (No behavior change)
|
||||||
|
|
||||||
|
Цель: добавить контракты и каркас без переключения runtime.
|
||||||
|
|
||||||
|
- `question_mode/address_intent` contracts;
|
||||||
|
- address debug contract;
|
||||||
|
- base recipe schema;
|
||||||
|
- semantic registry skeleton (P0 entities only).
|
||||||
|
|
||||||
|
Артефакты:
|
||||||
|
|
||||||
|
- `docs/ADDRESS/runs/<run_id>/M0_contracts_report.md`
|
||||||
|
- `contracts_diff.md`
|
||||||
|
|
||||||
|
## Subwave M1 — Classifier + Intent + Filter Pipeline
|
||||||
|
|
||||||
|
Цель: научить runtime распознавать address mode и извлекать фильтры.
|
||||||
|
|
||||||
|
- mode classifier;
|
||||||
|
- P0 intent resolver;
|
||||||
|
- filter extractor + validator;
|
||||||
|
- resolver subset (counterparty/contract/account/document_type/organization).
|
||||||
|
|
||||||
|
Артефакты:
|
||||||
|
|
||||||
|
- `intent_resolution_matrix.md`
|
||||||
|
- `filter_extraction_audit.json`
|
||||||
|
- `resolver_ambiguity_cases.md`
|
||||||
|
|
||||||
|
## Subwave M2 — Recipe + MCP Execution (Live-first)
|
||||||
|
|
||||||
|
Цель: связать intents с whitelist recipes и реальным MCP execution.
|
||||||
|
|
||||||
|
- recipe selector;
|
||||||
|
- address MCP executor;
|
||||||
|
- live-first policy;
|
||||||
|
- controlled fallback (no silent snapshot).
|
||||||
|
|
||||||
|
Артефакты:
|
||||||
|
|
||||||
|
- `recipe_selection_report.md`
|
||||||
|
- `live_call_inventory_address.json`
|
||||||
|
- `fallback_policy_audit.md`
|
||||||
|
|
||||||
|
## Subwave M3 — Factual Answer Composer + Debug
|
||||||
|
|
||||||
|
Цель: стабильный factual output в едином контракте.
|
||||||
|
|
||||||
|
- `FACTUAL_LIST` / `FACTUAL_SUMMARY` / `LIMITED_WITH_REASON`;
|
||||||
|
- compact output для текущей оболочки диалога;
|
||||||
|
- debug payload fields finalized.
|
||||||
|
|
||||||
|
Артефакты:
|
||||||
|
|
||||||
|
- `answer_contract_examples.md`
|
||||||
|
- `debug_payload_samples/`
|
||||||
|
|
||||||
|
## Subwave M4 — Live Acceptance Rerun
|
||||||
|
|
||||||
|
Контрольный набор:
|
||||||
|
|
||||||
|
1. кто должен нам на сегодня;
|
||||||
|
2. кому должны мы;
|
||||||
|
3. какие договоры не закрыты;
|
||||||
|
4. остаток по 60 на дату;
|
||||||
|
5. какие документы формируют остаток.
|
||||||
|
|
||||||
|
Acceptance gates:
|
||||||
|
|
||||||
|
- correct mode routing for P0 queries;
|
||||||
|
- non-empty factual outputs on expected-positive live cases;
|
||||||
|
- `false_factual_rate = 0`;
|
||||||
|
- no regression in deep-analysis path.
|
||||||
|
|
||||||
|
Артефакты:
|
||||||
|
|
||||||
|
- `chat_export_address_live.md`
|
||||||
|
- `address_case_matrix.md`
|
||||||
|
- `before_after_metrics.json`
|
||||||
|
- `run_summary.json`
|
||||||
|
|
||||||
|
## Что делаем сразу
|
||||||
|
|
||||||
|
- Сегодня стартуем с `M0` и `M1` (контракты + классификация/фильтры).
|
||||||
|
- После этого сразу поднимаем `M2` для 2 первых intents (`payables/receivables`).
|
||||||
@@ -0,0 +1,74 @@
|
|||||||
|
# Known Positive Live Suite V1
|
||||||
|
|
||||||
|
Date: 2026-03-29
|
||||||
|
Purpose: separate usefulness acceptance from safety-only dry runs.
|
||||||
|
|
||||||
|
## Why this suite exists
|
||||||
|
|
||||||
|
Broad prompts like `who owes us today` are useful for routing checks, but they often end with `empty_match`.
|
||||||
|
This is expected in early V1 and does not prove factual usefulness.
|
||||||
|
|
||||||
|
So V1 acceptance must include a dedicated known-positive suite where data is expected to exist.
|
||||||
|
|
||||||
|
## Suite design
|
||||||
|
|
||||||
|
For each case, pre-lock:
|
||||||
|
|
||||||
|
- organization (if needed);
|
||||||
|
- period (`as_of_date` or `period_from` + `period_to`);
|
||||||
|
- one concrete anchor (`counterparty` / `contract` / `account`);
|
||||||
|
- expected recipe;
|
||||||
|
- minimum expected evidence (`rows_matched > 0`).
|
||||||
|
|
||||||
|
## Required case groups (V1)
|
||||||
|
|
||||||
|
1. `account_balance_snapshot` positive
|
||||||
|
- Question example: `show account balance 60 as of 2020-07-31`
|
||||||
|
- Expected: non-empty or explicit account-level totals.
|
||||||
|
|
||||||
|
2. `documents_by_counterparty` positive
|
||||||
|
- Question example: `show documents by counterparty <known_name> from 2020-07-01 to 2020-07-31`
|
||||||
|
- Expected: factual list, non-empty.
|
||||||
|
|
||||||
|
3. `bank_operations_by_counterparty` positive
|
||||||
|
- Question example: `show bank operations by counterparty <known_name> from 2020-07-01 to 2020-07-31`
|
||||||
|
- Expected: factual list, non-empty.
|
||||||
|
|
||||||
|
4. `documents_forming_balance` positive
|
||||||
|
- Question example: `which documents form balance for account 62 as of 2020-07-31`
|
||||||
|
- Expected: drilldown list, non-empty.
|
||||||
|
|
||||||
|
5. `open_items_by_contract` positive (after resolver/recipe upgrade)
|
||||||
|
- Question example: `show open items by contract <known_contract> as of 2020-07-31`
|
||||||
|
- Expected: non-empty or explicit limited with resolver ambiguity reason.
|
||||||
|
|
||||||
|
## Debug fields to require
|
||||||
|
|
||||||
|
- `detected_mode`
|
||||||
|
- `query_shape`
|
||||||
|
- `detected_intent`
|
||||||
|
- `selected_recipe`
|
||||||
|
- `mcp_call_status`
|
||||||
|
- `rows_fetched`
|
||||||
|
- `rows_matched`
|
||||||
|
- `runtime_readiness`
|
||||||
|
- `limited_reason_category`
|
||||||
|
- resolver block (planned):
|
||||||
|
- `anchor_type`
|
||||||
|
- `anchor_value_raw`
|
||||||
|
- `anchor_value_resolved`
|
||||||
|
- `resolver_confidence`
|
||||||
|
- `ambiguity_count`
|
||||||
|
|
||||||
|
## Metrics for known-positive suite
|
||||||
|
|
||||||
|
- `known_positive_case_count`
|
||||||
|
- `known_positive_non_empty_rate`
|
||||||
|
- `known_positive_factual_rate`
|
||||||
|
- `known_positive_limited_rate`
|
||||||
|
- `known_positive_false_factual_rate` (must stay 0)
|
||||||
|
|
||||||
|
## Acceptance note
|
||||||
|
|
||||||
|
This suite is mandatory starting from Sprint B.
|
||||||
|
Without it, runs measure safety only (`LIMITED_WITH_REASON`) and cannot prove practical value.
|
||||||
@@ -0,0 +1,105 @@
|
|||||||
|
# Query Recipes V1 (Address Query)
|
||||||
|
|
||||||
|
Дата: 2026-03-29
|
||||||
|
Контур: Stage 4, отдельная ветка `question_mode=address_query`
|
||||||
|
|
||||||
|
## 1) Safe Access Contract
|
||||||
|
|
||||||
|
Цепочка должна быть строго управляемой:
|
||||||
|
|
||||||
|
`intent -> filters -> recipe -> MCP -> factual result`
|
||||||
|
|
||||||
|
Ограничения:
|
||||||
|
|
||||||
|
- LLM не генерирует произвольный SQL/1C-запрос.
|
||||||
|
- LLM выбирает только `recipe_id` из каталога и заполняет параметры.
|
||||||
|
- Любой нераспознанный или рискованный случай возвращается как `LIMITED_WITH_REASON` или уходит в deep-analysis.
|
||||||
|
|
||||||
|
## 2) Entity Catalog (P0 for address-query)
|
||||||
|
|
||||||
|
Базовые семейства для V1:
|
||||||
|
|
||||||
|
- `ACCOUNTING_REGISTER` (`AccountingRegister_Хозрасчетный*`)
|
||||||
|
- `DOCUMENT` (`СписаниеСРасчетногоСчета`, `ПоступлениеНаРасчетныйСчет`, `АктСверкиВзаиморасчетов`, документные линии)
|
||||||
|
- `DOCUMENT_JOURNAL` (`ДокументыПоставщиков`, `ДокументыПокупателей`, `БанковскиеВыписки`)
|
||||||
|
- `NSI_CATALOG` (`ДоговорыКонтрагентов`, плюс фильтровые справочники)
|
||||||
|
- `CHART_OF_ACCOUNTS` (`Хозрасчетный`)
|
||||||
|
|
||||||
|
## 3) Filter Catalog
|
||||||
|
|
||||||
|
| filter | type | required_when | notes |
|
||||||
|
|---|---|---|---|
|
||||||
|
| `period_from` | date (`YYYY-MM-DD`) | turnover/list-by-period intents | начало периода |
|
||||||
|
| `period_to` | date (`YYYY-MM-DD`) | turnover/list-by-period intents | конец периода |
|
||||||
|
| `as_of_date` | date (`YYYY-MM-DD`) | balance/open-items intents | срез на дату |
|
||||||
|
| `organization` | string/guid | optional | если не задано, берется default company scope |
|
||||||
|
| `counterparty` | string/guid | required for by-counterparty intents | допускается name->id resolver |
|
||||||
|
| `contract` | string/guid | required for by-contract intents | допускается number/name->id resolver |
|
||||||
|
| `account` | string (`60`, `62.01`, ...) | required for account intents | только validated account tokens |
|
||||||
|
| `document_type` | enum/string | required for list-by-type | белый список типов |
|
||||||
|
| `document_ref` | guid/string | required for document drilldown | точечный lookup |
|
||||||
|
| `status` | enum (`open`, `closed`, `all`) | optional | для open/closed срезов |
|
||||||
|
| `limit` | int (1..200) | optional | default 50 |
|
||||||
|
| `sort` | enum (`date_desc`, `amount_desc`, `name_asc`) | optional | default recipe-specific |
|
||||||
|
|
||||||
|
## 4) Query Recipe Catalog V1
|
||||||
|
|
||||||
|
| recipe_id | purpose | required_params | optional_params | expected_output_schema | sort/limit rules | drilldown_targets |
|
||||||
|
|---|---|---|---|---|---|---|
|
||||||
|
| `address.open_contracts.by_asof` | Незакрытые договоры на дату | `as_of_date` | `organization`, `counterparty`, `limit`, `sort` | `contract_ref`, `contract_name`, `counterparty_ref`, `debit`, `credit`, `saldo`, `as_of_date` | default `saldo_desc`, `limit=50` | `address.open_items.by_contract` |
|
||||||
|
| `address.payables.counterparty_totals` | Кому должны мы | `as_of_date` | `organization`, `account`, `limit` | `counterparty_ref`, `counterparty_name`, `payable_amount`, `doc_count`, `as_of_date` | default `payable_amount_desc`, `limit=50` | `address.open_items.by_counterparty` |
|
||||||
|
| `address.receivables.counterparty_totals` | Кто должен нам | `as_of_date` | `organization`, `account`, `limit` | `counterparty_ref`, `counterparty_name`, `receivable_amount`, `doc_count`, `as_of_date` | default `receivable_amount_desc`, `limit=50` | `address.open_items.by_counterparty` |
|
||||||
|
| `address.account.balance_snapshot` | Остаток по счету на дату | `account`, `as_of_date` | `organization`, `limit` | `account`, `debit_balance`, `credit_balance`, `net_balance`, `as_of_date` | default `account_asc`, `limit=20` | `address.balance.drilldown_documents` |
|
||||||
|
| `address.open_items.by_counterparty` | Открытые позиции по контрагенту | `counterparty`, `as_of_date` | `organization`, `contract`, `account`, `limit` | `document_ref`, `document_type`, `document_date`, `contract_ref`, `debit`, `credit`, `open_amount` | default `document_date_desc`, `limit=100` | `address.documents.by_contract` |
|
||||||
|
| `address.open_items.by_contract` | Открытые позиции по договору | `contract`, `as_of_date` | `organization`, `counterparty`, `account`, `limit` | `document_ref`, `document_type`, `document_date`, `counterparty_ref`, `debit`, `credit`, `open_amount` | default `document_date_desc`, `limit=100` | `address.documents.by_contract` |
|
||||||
|
| `address.documents.by_counterparty` | Документы контрагента за период | `counterparty`, `period_from`, `period_to` | `organization`, `document_type`, `limit`, `sort` | `document_ref`, `document_type`, `number`, `date`, `amount`, `posted` | default `date_desc`, `limit=100` | `address.documents.by_contract` |
|
||||||
|
| `address.bank_ops.by_counterparty` | Банковские операции по контрагенту | `counterparty` | `period_from`, `period_to`, `organization`, `limit`, `sort` | `document_ref`, `document_type`, `number`, `date`, `amount`, `posted`, `bank_account_hint` | default `date_desc`, `limit=100` | `address.documents.by_counterparty` |
|
||||||
|
| `address.documents.by_contract` | Документы договора за период | `contract`, `period_from`, `period_to` | `organization`, `document_type`, `limit`, `sort` | `document_ref`, `document_type`, `number`, `date`, `amount`, `posted` | default `date_desc`, `limit=100` | `address.balance.drilldown_documents` |
|
||||||
|
| `address.balance.drilldown_documents` | Расшифровка остатка до документов | `account`, `as_of_date` | `organization`, `counterparty`, `contract`, `limit` | `document_ref`, `document_type`, `number`, `date`, `debit`, `credit`, `delta` | default `date_desc`, `limit=150` | `address.documents.by_counterparty` |
|
||||||
|
|
||||||
|
## 5) Result Schema (Unified)
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"question_mode": "address_query",
|
||||||
|
"intent": "list_payables_counterparties",
|
||||||
|
"recipe_id": "address.payables.counterparty_totals",
|
||||||
|
"filters": {
|
||||||
|
"as_of_date": "2026-03-29",
|
||||||
|
"organization": "<optional>",
|
||||||
|
"limit": 50
|
||||||
|
},
|
||||||
|
"result_mode": "FACTUAL_SUMMARY",
|
||||||
|
"summary": {
|
||||||
|
"rows": 12,
|
||||||
|
"total_amount": 1543200.50,
|
||||||
|
"currency": "RUB"
|
||||||
|
},
|
||||||
|
"rows": [
|
||||||
|
{
|
||||||
|
"counterparty_name": "ООО Альфа",
|
||||||
|
"payable_amount": 450000.00,
|
||||||
|
"doc_count": 7
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"limitations": []
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## 6) Answer Contract
|
||||||
|
|
||||||
|
- `FACTUAL_LIST`: короткий вывод + список строк + totals.
|
||||||
|
- `FACTUAL_SUMMARY`: агрегат + top строки + предложение уточнить фильтр при большом объеме.
|
||||||
|
- `LIMITED_WITH_REASON`: честная причина ограничения (`missing_required_filters`, `live_unavailable`, `no_matches_for_filters`, `unsupported_for_address_query_v1`).
|
||||||
|
|
||||||
|
## 7) MCP Execution Notes
|
||||||
|
|
||||||
|
- Runtime вызывает MCP proxy (`/api/execute_query`) только с query-template из recipe и параметрами после валидации.
|
||||||
|
- Для V1 все recipe выполняются в `read-only` режиме.
|
||||||
|
- Ограничения на выборку (`limit`) и сортировки фиксируются recipe-контрактом, а не свободным текстом вопроса.
|
||||||
|
## 8) Account Scope Strategy (M2.3b)
|
||||||
|
|
||||||
|
- `account_balance_snapshot` and `documents_forming_balance` use `strict` account scope.
|
||||||
|
- counterparty-oriented recipes use `preferred` account scope with runtime fallback to raw rows when scope gives zero rows.
|
||||||
|
- this keeps account-intent precision while preventing blind row loss on party intents.
|
||||||
|
|
||||||
@@ -0,0 +1,64 @@
|
|||||||
|
# Question Bank V1 — Address Query
|
||||||
|
|
||||||
|
Дата: 2026-03-29
|
||||||
|
|
||||||
|
## A. Задолженность и хвосты
|
||||||
|
|
||||||
|
- кто должен нам на сегодня
|
||||||
|
- кому должны мы на сегодня
|
||||||
|
- какие хвосты висят по контрагенту
|
||||||
|
- какие хвосты висят по договору
|
||||||
|
- у кого самый большой долг перед нами
|
||||||
|
- кому больше всего должны мы
|
||||||
|
|
||||||
|
## B. Счета и остатки
|
||||||
|
|
||||||
|
- какой остаток по 60 на дату
|
||||||
|
- какой остаток по 62 на дату
|
||||||
|
- что висит на 60 счете
|
||||||
|
- какие документы формируют остаток по 62
|
||||||
|
- оборот по 60 за период
|
||||||
|
|
||||||
|
## C. Договоры
|
||||||
|
|
||||||
|
- какие договоры не закрыты
|
||||||
|
- что по договору 15/24
|
||||||
|
- есть ли долг по договору с Альфой
|
||||||
|
- какие документы связаны с этим договором
|
||||||
|
|
||||||
|
## D. Документы
|
||||||
|
|
||||||
|
- покажи документы по контрагенту Альфа за период
|
||||||
|
- покажи документы по договору за период
|
||||||
|
- найди документ по номеру и дате
|
||||||
|
- покажи проведенные документы по организации
|
||||||
|
|
||||||
|
## E. Bank/Payment lookup
|
||||||
|
|
||||||
|
- какие платежи были по Альфе
|
||||||
|
- были ли поступления от Беты
|
||||||
|
- покажи списания с расчетного счета по договору
|
||||||
|
- найди оплату на сумму 150000
|
||||||
|
|
||||||
|
## F. Drilldown
|
||||||
|
|
||||||
|
- кто должен нам и какие документы это формируют
|
||||||
|
- что висит по Альфе и раскрой по документам
|
||||||
|
- по 60 счету что висит и раскрой по контрагентам
|
||||||
|
|
||||||
|
## G. Составные factual вопросы
|
||||||
|
|
||||||
|
- покажи хвосты по Альфе и отдельно по Бете
|
||||||
|
- кто должен нам и отдельно кому должны мы
|
||||||
|
- найди долг по договору и покажи документы
|
||||||
|
|
||||||
|
## H. Check/verify (still factual)
|
||||||
|
|
||||||
|
- проверь, есть ли долг по Альфе
|
||||||
|
- проверь, есть ли незакрытые документы
|
||||||
|
- проверь, что висит на 60 счете
|
||||||
|
|
||||||
|
## Правило маршрутизации
|
||||||
|
|
||||||
|
- если вопрос = factual lookup -> `address_query`
|
||||||
|
- если вопрос = why/prove/causal diagnosis -> `deep_analysis`
|
||||||
@@ -0,0 +1,181 @@
|
|||||||
|
# Runtime Integration Plan (question_mode=address_query)
|
||||||
|
|
||||||
|
Дата: 2026-03-29
|
||||||
|
|
||||||
|
## 1) Цель интеграции
|
||||||
|
|
||||||
|
Добавить отдельный runtime-контур для быстрых адресных запросов к 1С через MCP, не ломая существующий Stage 4 deep-analysis path.
|
||||||
|
|
||||||
|
## 2) As-Is (подтверждено кодом)
|
||||||
|
|
||||||
|
Текущий assistant pipeline:
|
||||||
|
|
||||||
|
1. normalizer -> route summary
|
||||||
|
2. execution plan по deep-routes
|
||||||
|
3. `assistantDataLayer.executeRouteRuntime(...)`
|
||||||
|
4. admissibility / eligibility guards
|
||||||
|
5. answer composer
|
||||||
|
|
||||||
|
Ключевые точки в текущем коде:
|
||||||
|
|
||||||
|
- `llm_normalizer/backend/src/services/assistantService.ts`
|
||||||
|
- `llm_normalizer/backend/src/services/routeHintAdapter.ts`
|
||||||
|
- `llm_normalizer/backend/src/services/assistantDataLayer.ts`
|
||||||
|
- `llm_normalizer/backend/src/services/assistantRuntimeGuards.ts`
|
||||||
|
- `llm_normalizer/backend/src/services/answerComposer.ts`
|
||||||
|
|
||||||
|
## 3) To-Be: Separate Address Lane
|
||||||
|
|
||||||
|
Новый high-level flow:
|
||||||
|
|
||||||
|
1. Входящий вопрос.
|
||||||
|
2. Mode-classifier: `address_query` | `deep_analysis` | `unsupported`.
|
||||||
|
3. Если `address_query`:
|
||||||
|
- resolve `address_intent`;
|
||||||
|
- extract+validate filters;
|
||||||
|
- select recipe;
|
||||||
|
- execute MCP (live-first);
|
||||||
|
- normalize result schema;
|
||||||
|
- return factual answer.
|
||||||
|
4. Если не `address_query`: текущий deep path без изменений.
|
||||||
|
|
||||||
|
## 4) Встраивание по слоям
|
||||||
|
|
||||||
|
### 4.1 Normalizer / Routing Layer
|
||||||
|
|
||||||
|
Изменения:
|
||||||
|
|
||||||
|
- добавить `question_mode` и `address_intent` в normalizer contract;
|
||||||
|
- в `routeHintAdapter` добавить address-query rule set до deep route discipline.
|
||||||
|
|
||||||
|
Рекомендуемые файлы:
|
||||||
|
|
||||||
|
- `llm_normalizer/backend/src/types/normalizer.ts`
|
||||||
|
- `llm_normalizer/backend/src/services/routeHintAdapter.ts`
|
||||||
|
|
||||||
|
### 4.2 Assistant Service Orchestration
|
||||||
|
|
||||||
|
Изменения:
|
||||||
|
|
||||||
|
- в `AssistantService.processMessage(...)` добавить раннюю развилку по `question_mode`;
|
||||||
|
- для `address_query` запускать отдельный pipeline (без claim-bound deep-chain).
|
||||||
|
|
||||||
|
Рекомендуемый новый сервис:
|
||||||
|
|
||||||
|
- `llm_normalizer/backend/src/services/addressQueryService.ts`
|
||||||
|
|
||||||
|
### 4.3 Intent + Filter Extraction
|
||||||
|
|
||||||
|
Новые компоненты:
|
||||||
|
|
||||||
|
- `addressIntentResolver.ts`
|
||||||
|
- `addressFilterExtractor.ts`
|
||||||
|
- `addressFilterValidator.ts`
|
||||||
|
|
||||||
|
Выход контракта:
|
||||||
|
|
||||||
|
- `detected_mode`
|
||||||
|
- `detected_intent`
|
||||||
|
- `required_filters`
|
||||||
|
- `resolved_filters`
|
||||||
|
- `missing_filters`
|
||||||
|
|
||||||
|
### 4.4 Recipe Selection + MCP Execution
|
||||||
|
|
||||||
|
Новые компоненты:
|
||||||
|
|
||||||
|
- `addressRecipeCatalog.ts` (статический whitelist recipes)
|
||||||
|
- `addressRecipeSelector.ts`
|
||||||
|
- `addressMcpExecutor.ts`
|
||||||
|
|
||||||
|
Правила:
|
||||||
|
|
||||||
|
- только whitelist `recipe_id`;
|
||||||
|
- live-first; snapshot только explicit fallback;
|
||||||
|
- hard limit на строки и fixed sorting profile.
|
||||||
|
|
||||||
|
### 4.5 Result Materialization + Answer Composer
|
||||||
|
|
||||||
|
Новые компоненты:
|
||||||
|
|
||||||
|
- `addressResultMaterializer.ts`
|
||||||
|
- `addressAnswerComposer.ts`
|
||||||
|
|
||||||
|
Режимы ответа:
|
||||||
|
|
||||||
|
- `FACTUAL_LIST`
|
||||||
|
- `FACTUAL_SUMMARY`
|
||||||
|
- `LIMITED_WITH_REASON`
|
||||||
|
|
||||||
|
### 4.6 Debug/Trace Contract
|
||||||
|
|
||||||
|
Минимальный debug блок для address lane:
|
||||||
|
|
||||||
|
- `detected_mode`
|
||||||
|
- `detected_intent`
|
||||||
|
- `extracted_filters`
|
||||||
|
- `selected_recipe`
|
||||||
|
- `mcp_call_status`
|
||||||
|
- `rows_fetched`
|
||||||
|
- `rows_matched`
|
||||||
|
- `response_type`
|
||||||
|
|
||||||
|
## 5) Fallback Rules
|
||||||
|
|
||||||
|
- Если mode=`address_query`, но `missing_required_filters` -> `LIMITED_WITH_REASON` (без silent fallback в deep).
|
||||||
|
- Если mode=`address_query`, но `intent` не поддержан -> `LIMITED_WITH_REASON` или controlled handoff в deep-path с явной пометкой.
|
||||||
|
- Если live недоступен -> `LIMITED_WITH_REASON: live_unavailable`.
|
||||||
|
|
||||||
|
## 5.1) Compound factual scope (M2.1 real status)
|
||||||
|
|
||||||
|
- `COMPOUND_FACTUAL_QUERY` is currently **detection-only**.
|
||||||
|
- Runtime does **not** execute multi-intent decomposition yet.
|
||||||
|
- Current behavior for compound prompts:
|
||||||
|
- one selected intent;
|
||||||
|
- one selected recipe;
|
||||||
|
- one factual/limited output block.
|
||||||
|
- Multi-step decomposition (`subquery planning -> per-subquery execution -> stitched composer`) is planned for V1.1.
|
||||||
|
|
||||||
|
## 6) Safety Guardrails
|
||||||
|
|
||||||
|
- Никакого free-form query generation от LLM.
|
||||||
|
- Query только через recipe whitelist.
|
||||||
|
- Все параметры проходят типовую и value-валидацию.
|
||||||
|
- Account anchors — только validated account tokens (исключая date/amount pollution).
|
||||||
|
- Read-only MCP profile для address lane.
|
||||||
|
|
||||||
|
## 7) Minimal Implementation Queue
|
||||||
|
|
||||||
|
1. `M0`: контракты (`question_mode`, `address_intent`, filter schema, recipe schema).
|
||||||
|
2. `M1`: classifier + resolver + validator (без MCP execution).
|
||||||
|
3. `M2`: MCP executor + 5 P0 recipe.
|
||||||
|
4. `M3`: factual composer + debug payload + basic tests.
|
||||||
|
5. `M4`: live rerun pack в `docs/ADDRESS/runs/...`.
|
||||||
|
|
||||||
|
## 7.1) Sprint B priority order (adapted to current reality)
|
||||||
|
|
||||||
|
1. `documents_by_counterparty`
|
||||||
|
2. `bank_operations_by_counterparty`
|
||||||
|
3. `documents_forming_balance`
|
||||||
|
4. `documents_by_contract`
|
||||||
|
5. `bank_operations_by_contract`
|
||||||
|
|
||||||
|
Rationale:
|
||||||
|
|
||||||
|
- start from anchors with higher resolver stability (counterparty first);
|
||||||
|
- unlock early positive evidence before contract-heavy variants;
|
||||||
|
- keep contract scenarios behind anchor-resolution hardening.
|
||||||
|
|
||||||
|
## 8) Out of Scope for V1
|
||||||
|
|
||||||
|
- Новый proof engine.
|
||||||
|
- Расширение доменов beyond P0 address intents.
|
||||||
|
- Полный redesign deep-stage routing.
|
||||||
|
- Автоматический свободный доступ к произвольным сущностям 1С.
|
||||||
|
|
||||||
|
## 9) Expected Acceptance (V1)
|
||||||
|
|
||||||
|
- Deep-analysis path не деградировал.
|
||||||
|
- Address intents из P0 стабильно маршрутизируются в MCP/live-first lane.
|
||||||
|
- Factual-ответы по P0 сценариям возвращаются в предсказуемом формате.
|
||||||
|
- `false_factual_rate = 0`.
|
||||||
@@ -0,0 +1,51 @@
|
|||||||
|
# Runtime Readiness Matrix V1 (M2.3b)
|
||||||
|
|
||||||
|
Дата: 2026-03-29
|
||||||
|
|
||||||
|
Формат: `scenario -> structural_readiness -> runtime_readiness -> blocker`
|
||||||
|
|
||||||
|
## Статусы
|
||||||
|
|
||||||
|
- `STRUCTURALLY_VISIBLE` - сущность подтверждена в snapshot/inventory.
|
||||||
|
- `LIVE_QUERYABLE` - в текущем live path можно дать factual без натяжек.
|
||||||
|
- `LIVE_QUERYABLE_WITH_LIMITS` - live path работает, но часто нужен дополнительный anchor.
|
||||||
|
- `REQUIRES_SPECIALIZED_RECIPE` - базовый movement recipe недостаточен для materialization.
|
||||||
|
- `DEEP_ONLY` - сценарий не относится к address V1.
|
||||||
|
|
||||||
|
## Матрица (P0/P1)
|
||||||
|
|
||||||
|
| scenario_id | scenario | structural_readiness | runtime_readiness | current_blocker | next_action |
|
||||||
|
|---|---|---|---|---|---|
|
||||||
|
| AQ-P0-01 | list_open_contracts | STRUCTURALLY_VISIBLE | REQUIRES_SPECIALIZED_RECIPE | weak contract anchors in movement rows | добавить object-aware recipe (`documents/contracts`) |
|
||||||
|
| AQ-P0-02 | list_payables_counterparties | STRUCTURALLY_VISIBLE | LIVE_QUERYABLE_WITH_LIMITS | empty matches on narrow filters | расширить live evidence pack по контрагентам |
|
||||||
|
| AQ-P0-03 | list_receivables_counterparties | STRUCTURALLY_VISIBLE | LIVE_QUERYABLE_WITH_LIMITS | empty matches on narrow filters | улучшить фильтрацию и fallback hints |
|
||||||
|
| AQ-P0-04 | account_balance_snapshot | STRUCTURALLY_VISIBLE | LIVE_QUERYABLE_WITH_LIMITS | dry-run frequently returns `empty_match` on broad `today` filters | lock data-aware positive account/date fixtures |
|
||||||
|
| AQ-P0-05 | open_items_by_counterparty_or_contract (counterparty) | STRUCTURALLY_VISIBLE | LIVE_QUERYABLE_WITH_LIMITS | missing counterparty anchor in short phrases | усилить anchor-first extraction |
|
||||||
|
| AQ-P0-06 | open_items_by_counterparty_or_contract (contract) | STRUCTURALLY_VISIBLE | REQUIRES_SPECIALIZED_RECIPE | movement rows often miss contract linkage | двухшаговый path: anchor resolution -> focused recipe |
|
||||||
|
| AQ-P0-07 | documents_by_counterparty | STRUCTURALLY_VISIBLE | LIVE_QUERYABLE_WITH_LIMITS | implemented path, but dry-run still often `empty_match` on current anchors/period | expand data-aware positive fixtures and improve resolver targeting |
|
||||||
|
| AQ-P0-07B | bank_operations_by_counterparty | STRUCTURALLY_VISIBLE | LIVE_QUERYABLE_WITH_LIMITS | implemented path, but dry-run still often `empty_match` on current anchors/period | expand data-aware positive fixtures and tighten bank-doc targeting |
|
||||||
|
| AQ-P0-08 | documents_by_contract | STRUCTURALLY_VISIBLE | REQUIRES_SPECIALIZED_RECIPE | by-contract live recipe not implemented in runtime V1 | add contract-aware document-list recipe with resolver confidence gate |
|
||||||
|
| AQ-P0-09 | documents_forming_balance | STRUCTURALLY_VISIBLE | LIVE_QUERYABLE_WITH_LIMITS | implemented, but stage diagnostic shows loss before materialization | diagnose and tune account-scope filtering for live recipes |
|
||||||
|
| AQ-P1-10 | account_turnover_snapshot | STRUCTURALLY_VISIBLE | LIVE_QUERYABLE_WITH_LIMITS | not in current intent set | расширение intents V1.1 |
|
||||||
|
|
||||||
|
## Примечание
|
||||||
|
|
||||||
|
Матрица разделяет "видимость сущности в inventory" и "операционную готовность live-runtime".
|
||||||
|
Это обязательная опора для приоритезации Sprint B, чтобы не путать structural coverage и runtime proofability.
|
||||||
|
### Sync note (M2.3b -> live dry-run)
|
||||||
|
|
||||||
|
`account_balance_snapshot` intentionally remains `LIVE_QUERYABLE_WITH_LIMITS`.
|
||||||
|
Reason: dry-run still shows repeatable `empty_match` on broad `as_of=today` prompts.
|
||||||
|
Promote to `LIVE_QUERYABLE` only after data-aware positive live cases are stable.
|
||||||
|
|
||||||
|
`documents_forming_balance` is implemented with strict account-scope path.
|
||||||
|
Validation should be based on data-aware acceptance suite, not only safety dry-run.
|
||||||
|
|
||||||
|
Stage-diagnostic replay (M2.3b) shows split-stage behavior:
|
||||||
|
`D1-D3`: `raw_rows_received > 0` with `rows_after_account_scope = 0` (strict account intents).
|
||||||
|
`D4-D5`: `rows_after_account_scope > 0` and `rows_materialized > 0`, but `rows_after_recipe_filter = 0` (preferred mode progressed to matching stage).
|
||||||
|
Current bottleneck moved forward for non-account intents: resolver/filter matching after materialization.
|
||||||
|
|
||||||
|
`COMPOUND_FACTUAL_QUERY` currently remains detection-only.
|
||||||
|
Multi-intent decomposition execution is not part of M2.3b and tracked for next increment.
|
||||||
|
|
||||||
@@ -0,0 +1,76 @@
|
|||||||
|
# Semantic Layer Design (Address Query Foundation V1)
|
||||||
|
|
||||||
|
Дата: 2026-03-29
|
||||||
|
|
||||||
|
## 1) Layer components
|
||||||
|
|
||||||
|
- `semanticEntityRegistry`
|
||||||
|
- `semanticAliasMap`
|
||||||
|
- `semanticResolvers`
|
||||||
|
- `semanticFilterCatalog`
|
||||||
|
- `addressRecipeCatalog`
|
||||||
|
|
||||||
|
## 2) Entity registry (V1)
|
||||||
|
|
||||||
|
Источник: `entity_map_1c_2020.md` + run inventories.
|
||||||
|
|
||||||
|
P0 families:
|
||||||
|
|
||||||
|
- ACCOUNTING_REGISTER
|
||||||
|
- DOCUMENT
|
||||||
|
- DOCUMENT_JOURNAL
|
||||||
|
- NSI_CATALOG (contracts)
|
||||||
|
- CHART_OF_ACCOUNTS
|
||||||
|
|
||||||
|
## 3) Alias normalization
|
||||||
|
|
||||||
|
Задача: приводить бытовые формулировки к канонике.
|
||||||
|
|
||||||
|
Примеры:
|
||||||
|
|
||||||
|
- "дебиторка" -> receivables scope
|
||||||
|
- "кредиторка" -> payables scope
|
||||||
|
- "платежка" -> bank/payment docs
|
||||||
|
- "хвост" -> open items / residual balances
|
||||||
|
|
||||||
|
## 4) Resolver contracts
|
||||||
|
|
||||||
|
Каждый resolver возвращает:
|
||||||
|
|
||||||
|
- `resolved_value`
|
||||||
|
- `resolved_ref`
|
||||||
|
- `confidence`
|
||||||
|
- `ambiguous_candidates[]`
|
||||||
|
|
||||||
|
## 5) Filter catalog
|
||||||
|
|
||||||
|
Базовые фильтры:
|
||||||
|
|
||||||
|
- as_of_date
|
||||||
|
- period_from/period_to
|
||||||
|
- organization
|
||||||
|
- counterparty
|
||||||
|
- contract
|
||||||
|
- account
|
||||||
|
- document_type
|
||||||
|
- document_ref
|
||||||
|
- status
|
||||||
|
- limit/sort
|
||||||
|
|
||||||
|
## 6) Recipe binding
|
||||||
|
|
||||||
|
LLM выбирает только `recipe_id` из whitelist.
|
||||||
|
|
||||||
|
Никаких произвольных query generation.
|
||||||
|
|
||||||
|
## 7) Evolution path
|
||||||
|
|
||||||
|
V1:
|
||||||
|
|
||||||
|
- P0 entities + P0 intents
|
||||||
|
|
||||||
|
V1.1:
|
||||||
|
|
||||||
|
- расширенный resolver coverage
|
||||||
|
- richer decomposition
|
||||||
|
- P1 intents
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
# UI Dry Run Checklist V1
|
||||||
|
|
||||||
|
Дата: 2026-03-29
|
||||||
|
|
||||||
|
## Перед стартом
|
||||||
|
|
||||||
|
1. Backend health: `GET /api/health` == RUNNING.
|
||||||
|
2. MCP execute endpoint доступен: `POST /api/execute_query?channel=...`.
|
||||||
|
3. Флаги:
|
||||||
|
- `FEATURE_ASSISTANT_ADDRESS_QUERY_V1=1`
|
||||||
|
- `FEATURE_ASSISTANT_ADDRESS_QUERY_LIVE_V1=1`
|
||||||
|
|
||||||
|
## На каждый вопрос фиксируем
|
||||||
|
|
||||||
|
- `detected_mode`
|
||||||
|
- `detected_intent`
|
||||||
|
- `selected_recipe`
|
||||||
|
- `mcp_call_status`
|
||||||
|
- `rows_fetched`
|
||||||
|
- `rows_matched`
|
||||||
|
- `response_type`
|
||||||
|
|
||||||
|
## PASS критерии dry-run
|
||||||
|
|
||||||
|
1. Mode routing:
|
||||||
|
- все 5 вопросов -> `detected_mode=address_query`.
|
||||||
|
|
||||||
|
2. Intent routing:
|
||||||
|
- intent совпадает с ожидаемым для каждого вопроса.
|
||||||
|
|
||||||
|
3. Recipe selection:
|
||||||
|
- `selected_recipe` не пустой для поддержанных intents.
|
||||||
|
|
||||||
|
4. Safety:
|
||||||
|
- `false factual` отсутствует;
|
||||||
|
- при нехватке данных — `LIMITED_WITH_REASON` с конкретной причиной.
|
||||||
|
|
||||||
|
## FAIL признаки
|
||||||
|
|
||||||
|
- вопрос уходит в deep-path при явной address формулировке;
|
||||||
|
- `intent=unknown` для базовых 5 вопросов;
|
||||||
|
- `selected_recipe=null` для поддержанного intent;
|
||||||
|
- фактический ответ при пустых matched rows без limitation.
|
||||||
@@ -0,0 +1,39 @@
|
|||||||
|
# UI Dry Run Question Set V1
|
||||||
|
|
||||||
|
Дата: 2026-03-29
|
||||||
|
|
||||||
|
## Цель
|
||||||
|
|
||||||
|
Быстрый dry-run через окно ассистента для проверки `address_query` lane (MCP-first).
|
||||||
|
|
||||||
|
## Набор из 5 запросов
|
||||||
|
|
||||||
|
1. `кто должен нам на сегодня`
|
||||||
|
- intent target: `list_receivables_counterparties`
|
||||||
|
|
||||||
|
2. `кому должны мы на сегодня`
|
||||||
|
- intent target: `list_payables_counterparties`
|
||||||
|
|
||||||
|
3. `покажи остаток по счету 60 на сегодня`
|
||||||
|
- intent target: `account_balance_snapshot`
|
||||||
|
|
||||||
|
4. `какие договоры не закрыты`
|
||||||
|
- intent target: `list_open_contracts`
|
||||||
|
|
||||||
|
5. `покажи открытые позиции по договору 01/19-ПТ`
|
||||||
|
- intent target: `open_items_by_counterparty_or_contract`
|
||||||
|
|
||||||
|
## Дополнительные позитивные вариации
|
||||||
|
|
||||||
|
- `who owes us today`
|
||||||
|
- `who we owe today`
|
||||||
|
- `show account balance 60`
|
||||||
|
- `list open contracts`
|
||||||
|
- `open items by contract 01/19-PT`
|
||||||
|
|
||||||
|
## Правило оценки
|
||||||
|
|
||||||
|
- `detected_mode` должен быть `address_query`.
|
||||||
|
- `detected_intent` должен совпасть с target.
|
||||||
|
- `selected_recipe` должен быть не `null` (кроме явно unsupported кейсов).
|
||||||
|
- `response_type` допустим как `FACTUAL_*` или честный `LIMITED_WITH_REASON`.
|
||||||
+20
@@ -0,0 +1,20 @@
|
|||||||
|
# Known Positive Live Suite Template
|
||||||
|
|
||||||
|
Date: 2026-03-29
|
||||||
|
|
||||||
|
Purpose: run pack template for positive-evidence acceptance.
|
||||||
|
|
||||||
|
## Required artifacts
|
||||||
|
|
||||||
|
- README.md
|
||||||
|
- run_summary.json
|
||||||
|
- known_positive_case_matrix.md
|
||||||
|
- chat_export_known_positive_live.md
|
||||||
|
- debug_payloads/
|
||||||
|
- live_call_inventory_address.json
|
||||||
|
|
||||||
|
## Core rule
|
||||||
|
|
||||||
|
Each case must be pre-anchored (account/counterparty/contract + period), and expected to produce non-empty data.
|
||||||
|
|
||||||
|
If result is limited, reason must be explicit (`missing_anchor`, `recipe_visibility_gap`, etc).
|
||||||
+11
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"run_id": "2026-03-29_Address_Query_Known_Positive_Live_Suite_Template",
|
||||||
|
"suite_type": "positive_evidence",
|
||||||
|
"status": "TEMPLATE",
|
||||||
|
"metrics": {
|
||||||
|
"known_positive_case_count": 0,
|
||||||
|
"known_positive_non_empty_rate": 0,
|
||||||
|
"known_positive_factual_rate": 0,
|
||||||
|
"known_positive_false_factual_rate": 0
|
||||||
|
}
|
||||||
|
}
|
||||||
+43
@@ -0,0 +1,43 @@
|
|||||||
|
# Address Query Runtime V1 — M0/M1/M2 Baseline Start
|
||||||
|
|
||||||
|
Дата: 2026-03-29
|
||||||
|
Статус: IMPLEMENTED_BASELINE
|
||||||
|
|
||||||
|
## Что сделано
|
||||||
|
|
||||||
|
- Добавлен отдельный address-query контур в backend (`question_mode` detection на runtime-ветке ассистента).
|
||||||
|
- Добавлены контракты `addressQuery` и debug-поля address lane.
|
||||||
|
- Добавлены сервисы:
|
||||||
|
- classifier
|
||||||
|
- intent resolver
|
||||||
|
- filter extractor
|
||||||
|
- recipe catalog
|
||||||
|
- MCP client
|
||||||
|
- address query orchestrator
|
||||||
|
- В `assistantService` добавлена ранняя развилка:
|
||||||
|
- если вопрос адресный и поддержан -> address lane;
|
||||||
|
- иначе -> без изменений в существующий deep-analysis path.
|
||||||
|
|
||||||
|
## Что покрыто сейчас
|
||||||
|
|
||||||
|
- Базовые P0 intents с recipe:
|
||||||
|
- `list_payables_counterparties`
|
||||||
|
- `list_receivables_counterparties`
|
||||||
|
- `account_balance_snapshot`
|
||||||
|
- Неподдержанные intent'ы в V1 возвращают `LIMITED_WITH_REASON`.
|
||||||
|
- Live-first execution через MCP `/api/execute_query`.
|
||||||
|
|
||||||
|
## Важные ограничения baseline
|
||||||
|
|
||||||
|
- Текущие recipe используют movement snapshot query из `РегистрБухгалтерии.Хозрасчетный`.
|
||||||
|
- Для `list_open_contracts` и `open_items_by_counterparty_or_contract` пока только controlled limited mode.
|
||||||
|
- Factual-ответы пока строятся по движениям и account-scope, без полноценного object-level contract closure.
|
||||||
|
|
||||||
|
## Проверка
|
||||||
|
|
||||||
|
- `npm run build` (backend) — PASSED.
|
||||||
|
|
||||||
|
## Следующий шаг
|
||||||
|
|
||||||
|
- Расширить recipe whitelist под object-level адресные сценарии (contracts/open items/documents by counterparty/contract).
|
||||||
|
- Добавить acceptance live-run pack по 5 P0 вопросам address lane.
|
||||||
+11
@@ -0,0 +1,11 @@
|
|||||||
|
llm_normalizer/backend/src/types/addressQuery.ts
|
||||||
|
llm_normalizer/backend/src/services/addressQueryClassifier.ts
|
||||||
|
llm_normalizer/backend/src/services/addressIntentResolver.ts
|
||||||
|
llm_normalizer/backend/src/services/addressFilterExtractor.ts
|
||||||
|
llm_normalizer/backend/src/services/addressRecipeCatalog.ts
|
||||||
|
llm_normalizer/backend/src/services/addressMcpClient.ts
|
||||||
|
llm_normalizer/backend/src/services/addressQueryService.ts
|
||||||
|
llm_normalizer/backend/src/services/assistantService.ts
|
||||||
|
llm_normalizer/backend/src/types/assistant.ts
|
||||||
|
llm_normalizer/backend/src/config.ts
|
||||||
|
llm_normalizer/.env.example
|
||||||
+18
@@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"run_id": "2026-03-29_Address_Query_Runtime_V1_M0_M1_M2_Baseline_Start",
|
||||||
|
"date": "2026-03-29",
|
||||||
|
"scope": "address_query_runtime_bootstrap_to_code",
|
||||||
|
"status": "IMPLEMENTED_BASELINE",
|
||||||
|
"build_status": "PASSED",
|
||||||
|
"deep_path_regression_expected": "none (no deep-path contract change)",
|
||||||
|
"implemented": {
|
||||||
|
"address_mode_runtime_branch": true,
|
||||||
|
"intent_filter_recipe_pipeline": true,
|
||||||
|
"mcp_live_query_executor": true,
|
||||||
|
"address_debug_contract": true
|
||||||
|
},
|
||||||
|
"limitations": [
|
||||||
|
"open_contracts and open_items intents still limited",
|
||||||
|
"movement-based recipes only in baseline"
|
||||||
|
]
|
||||||
|
}
|
||||||
+22
@@ -0,0 +1,22 @@
|
|||||||
|
# Verification
|
||||||
|
|
||||||
|
Дата: 2026-03-29
|
||||||
|
|
||||||
|
## 1) TypeScript build
|
||||||
|
|
||||||
|
Команда: `npm run build` (backend)
|
||||||
|
Результат: PASS
|
||||||
|
|
||||||
|
## 2) Address lane smoke checks
|
||||||
|
|
||||||
|
Команды проверок (node scripts against `dist/`):
|
||||||
|
|
||||||
|
- `detectAddressQuestionMode('who owes us today')` -> `address_query`
|
||||||
|
- `AddressQueryService.tryHandle('who owes us today')` -> handled=true
|
||||||
|
- `AssistantService.handleMessage('who owes us today')` with normalizer stub -> ранний `assistant_message_address` path (normalizer не требуется)
|
||||||
|
|
||||||
|
Результат: PASS
|
||||||
|
|
||||||
|
## Примечание
|
||||||
|
|
||||||
|
Live MCP вернул `rows_fetched>0`, но `rows_matched=0` для receivables scope в тестовом запросе, поэтому ответ в `LIMITED_WITH_REASON` — это ожидаемое честное поведение на текущем baseline.
|
||||||
+29
@@ -0,0 +1,29 @@
|
|||||||
|
# Run README — Address Query Runtime V1 M2.1
|
||||||
|
|
||||||
|
Дата: 2026-03-29
|
||||||
|
Run ID: `2026-03-29_Address_Query_Runtime_V1_M2_1_QueryShape_LimitedTaxonomy`
|
||||||
|
|
||||||
|
## Цель инкремента
|
||||||
|
|
||||||
|
Зафиксировать следующий шаг по согласованному плану:
|
||||||
|
|
||||||
|
- добавить `query_shape` в address-runtime debug;
|
||||||
|
- зафиксировать, что `COMPOUND_FACTUAL_QUERY` в M2.1 пока only-detection (без decomposition execution);
|
||||||
|
- развести limited-mode по категориям причин:
|
||||||
|
- `empty_match`
|
||||||
|
- `missing_anchor`
|
||||||
|
- `recipe_visibility_gap`
|
||||||
|
- `execution_error`
|
||||||
|
- `unsupported`
|
||||||
|
- добавить runtime-readiness статус в ответ address lane;
|
||||||
|
- не ломать deep-path и не допускать false-factual.
|
||||||
|
|
||||||
|
## Что проверено
|
||||||
|
|
||||||
|
- `npm run build` — PASS.
|
||||||
|
- `vitest` таргет на новый слой (`tests/addressQueryRuntimeM21.test.ts`) — PASS.
|
||||||
|
- dry-run через `/api/assistant/message` на 7 вопросах — сохранен в `assistant_window_dry_run_results.json`.
|
||||||
|
|
||||||
|
## Основной вывод
|
||||||
|
|
||||||
|
Address lane продолжает стабильно маршрутизироваться и теперь дает структурированную операционную диагностику причины ограничения. Основной блокер остался прежним: недостаточная видимость данных в текущих movement-based recipes для contract/document-heavy сценариев.
|
||||||
+138
@@ -0,0 +1,138 @@
|
|||||||
|
{
|
||||||
|
"generated_at": "2026-03-29T16:04:06.939Z",
|
||||||
|
"questions": [
|
||||||
|
{
|
||||||
|
"id": "Q1",
|
||||||
|
"question": "who owes us today",
|
||||||
|
"expected_intent": "list_receivables_counterparties",
|
||||||
|
"http_status": 200,
|
||||||
|
"ok": true,
|
||||||
|
"detected_mode": "address_query",
|
||||||
|
"query_shape": "AGGREGATE_LOOKUP",
|
||||||
|
"detected_intent": "list_receivables_counterparties",
|
||||||
|
"selected_recipe": "address_movements_receivables_v1",
|
||||||
|
"mcp_call_status": "empty",
|
||||||
|
"rows_fetched": 20,
|
||||||
|
"rows_matched": 0,
|
||||||
|
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||||
|
"limited_reason_category": "empty_match",
|
||||||
|
"response_type": "LIMITED_WITH_REASON",
|
||||||
|
"reply_type": "partial_coverage",
|
||||||
|
"assistant_reply_preview": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "Q2",
|
||||||
|
"question": "who we owe today",
|
||||||
|
"expected_intent": "list_payables_counterparties",
|
||||||
|
"http_status": 200,
|
||||||
|
"ok": true,
|
||||||
|
"detected_mode": "address_query",
|
||||||
|
"query_shape": "AGGREGATE_LOOKUP",
|
||||||
|
"detected_intent": "list_payables_counterparties",
|
||||||
|
"selected_recipe": "address_movements_payables_v1",
|
||||||
|
"mcp_call_status": "empty",
|
||||||
|
"rows_fetched": 20,
|
||||||
|
"rows_matched": 0,
|
||||||
|
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||||
|
"limited_reason_category": "empty_match",
|
||||||
|
"response_type": "LIMITED_WITH_REASON",
|
||||||
|
"reply_type": "partial_coverage",
|
||||||
|
"assistant_reply_preview": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "Q3",
|
||||||
|
"question": "show account balance 60 today",
|
||||||
|
"expected_intent": "account_balance_snapshot",
|
||||||
|
"http_status": 200,
|
||||||
|
"ok": true,
|
||||||
|
"detected_mode": "address_query",
|
||||||
|
"query_shape": "AGGREGATE_LOOKUP",
|
||||||
|
"detected_intent": "account_balance_snapshot",
|
||||||
|
"selected_recipe": "address_movements_account_snapshot_v1",
|
||||||
|
"mcp_call_status": "empty",
|
||||||
|
"rows_fetched": 20,
|
||||||
|
"rows_matched": 0,
|
||||||
|
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||||
|
"limited_reason_category": "empty_match",
|
||||||
|
"response_type": "LIMITED_WITH_REASON",
|
||||||
|
"reply_type": "partial_coverage",
|
||||||
|
"assistant_reply_preview": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "Q4",
|
||||||
|
"question": "show open items by contract",
|
||||||
|
"expected_intent": "open_items_by_counterparty_or_contract",
|
||||||
|
"http_status": 200,
|
||||||
|
"ok": true,
|
||||||
|
"detected_mode": "address_query",
|
||||||
|
"query_shape": "OBJECT_LOOKUP",
|
||||||
|
"detected_intent": "open_items_by_counterparty_or_contract",
|
||||||
|
"selected_recipe": null,
|
||||||
|
"mcp_call_status": "skipped",
|
||||||
|
"rows_fetched": 0,
|
||||||
|
"rows_matched": 0,
|
||||||
|
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||||
|
"limited_reason_category": "missing_anchor",
|
||||||
|
"response_type": "LIMITED_WITH_REASON",
|
||||||
|
"reply_type": "partial_coverage",
|
||||||
|
"assistant_reply_preview": "Для точного адресного поиска не хватает обязательного якоря.\nПричина: для open_items нужен якорь контрагента или договора.\nЧто нужно уточнить: укажите контрагента или номер/название договора."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "Q5",
|
||||||
|
"question": "list open contracts as of today",
|
||||||
|
"expected_intent": "list_open_contracts",
|
||||||
|
"http_status": 200,
|
||||||
|
"ok": true,
|
||||||
|
"detected_mode": "address_query",
|
||||||
|
"query_shape": "OBJECT_LOOKUP",
|
||||||
|
"detected_intent": "list_open_contracts",
|
||||||
|
"selected_recipe": "address_open_contracts_candidates_v1",
|
||||||
|
"mcp_call_status": "empty",
|
||||||
|
"rows_fetched": 20,
|
||||||
|
"rows_matched": 0,
|
||||||
|
"runtime_readiness": "REQUIRES_SPECIALIZED_RECIPE",
|
||||||
|
"limited_reason_category": "recipe_visibility_gap",
|
||||||
|
"response_type": "LIMITED_WITH_REASON",
|
||||||
|
"reply_type": "partial_coverage",
|
||||||
|
"assistant_reply_preview": "Текущий live recipe не дает нужную видимость данных для этого сценария.\nПричина: в live строках нет договорных якорей для уверенного списка незакрытых договоров.\nЧто нужно уточнить: сузьте запрос по контрагенту или добав"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "Q6",
|
||||||
|
"question": "show bank operations by counterparty Alfa",
|
||||||
|
"expected_intent": "unknown",
|
||||||
|
"http_status": 200,
|
||||||
|
"ok": true,
|
||||||
|
"detected_mode": "address_query",
|
||||||
|
"query_shape": "DOCUMENT_LIST",
|
||||||
|
"detected_intent": "unknown",
|
||||||
|
"selected_recipe": null,
|
||||||
|
"mcp_call_status": "skipped",
|
||||||
|
"rows_fetched": 0,
|
||||||
|
"rows_matched": 0,
|
||||||
|
"runtime_readiness": "DEEP_ONLY",
|
||||||
|
"limited_reason_category": "unsupported",
|
||||||
|
"response_type": "LIMITED_WITH_REASON",
|
||||||
|
"reply_type": "partial_coverage",
|
||||||
|
"assistant_reply_preview": "Этот запрос не подходит под address_query V1.\nПричина: intent пока не поддержан в address V1.\nЧто нужно уточнить: переформулируйте вопрос как адресный lookup по счету/контрагенту/договору."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "Q7",
|
||||||
|
"question": "who owes us and who we owe today",
|
||||||
|
"expected_intent": "list_receivables_counterparties",
|
||||||
|
"http_status": 200,
|
||||||
|
"ok": true,
|
||||||
|
"detected_mode": "address_query",
|
||||||
|
"query_shape": "COMPOUND_FACTUAL_QUERY",
|
||||||
|
"detected_intent": "list_receivables_counterparties",
|
||||||
|
"selected_recipe": "address_movements_receivables_v1",
|
||||||
|
"mcp_call_status": "empty",
|
||||||
|
"rows_fetched": 20,
|
||||||
|
"rows_matched": 0,
|
||||||
|
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||||
|
"limited_reason_category": "empty_match",
|
||||||
|
"response_type": "LIMITED_WITH_REASON",
|
||||||
|
"reply_type": "partial_coverage",
|
||||||
|
"assistant_reply_preview": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
+26
@@ -0,0 +1,26 @@
|
|||||||
|
{
|
||||||
|
"baseline_run": "2026-03-29_Address_Query_Runtime_V1_M2_Plus_OpenContracts_OpenItems",
|
||||||
|
"current_run": "2026-03-29_Address_Query_Runtime_V1_M2_1_QueryShape_LimitedTaxonomy",
|
||||||
|
"changes": {
|
||||||
|
"debug_query_shape": {
|
||||||
|
"before": false,
|
||||||
|
"after": true
|
||||||
|
},
|
||||||
|
"debug_runtime_readiness": {
|
||||||
|
"before": false,
|
||||||
|
"after": true
|
||||||
|
},
|
||||||
|
"debug_limited_reason_category": {
|
||||||
|
"before": false,
|
||||||
|
"after": true
|
||||||
|
},
|
||||||
|
"limited_reason_taxonomy_depth": {
|
||||||
|
"before": 1,
|
||||||
|
"after": 4
|
||||||
|
},
|
||||||
|
"false_factual_rate": {
|
||||||
|
"before": 0.0,
|
||||||
|
"after": 0.0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+14
@@ -0,0 +1,14 @@
|
|||||||
|
llm_normalizer/backend/src/types/addressQuery.ts
|
||||||
|
llm_normalizer/backend/src/services/addressQueryShapeClassifier.ts
|
||||||
|
llm_normalizer/backend/src/services/addressQueryService.ts
|
||||||
|
llm_normalizer/backend/src/services/assistantService.ts
|
||||||
|
llm_normalizer/backend/src/types/assistant.ts
|
||||||
|
llm_normalizer/backend/tests/addressQueryRuntimeM21.test.ts
|
||||||
|
docs/ADDRESS/address_query/address_runtime_contracts.md
|
||||||
|
docs/ADDRESS/address_query/runtime_readiness_matrix_v1.md
|
||||||
|
docs/ADDRESS/address_query/README.md
|
||||||
|
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_1_QueryShape_LimitedTaxonomy/README.md
|
||||||
|
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_1_QueryShape_LimitedTaxonomy/run_summary.json
|
||||||
|
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_1_QueryShape_LimitedTaxonomy/smoke_checks.md
|
||||||
|
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_1_QueryShape_LimitedTaxonomy/before_after_metrics.json
|
||||||
|
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_1_QueryShape_LimitedTaxonomy/assistant_window_dry_run_results.json
|
||||||
+34
@@ -0,0 +1,34 @@
|
|||||||
|
{
|
||||||
|
"run_id": "2026-03-29_Address_Query_Runtime_V1_M2_1_QueryShape_LimitedTaxonomy",
|
||||||
|
"date": "2026-03-29",
|
||||||
|
"stage": "address_query_runtime_v1",
|
||||||
|
"scope": "m2_1_query_shape_plus_limited_taxonomy",
|
||||||
|
"build_status": "PASSED",
|
||||||
|
"tests_status": "PASSED",
|
||||||
|
"dry_run_status": "PASSED_WITH_LIMITED_RESULTS",
|
||||||
|
"implemented": {
|
||||||
|
"query_shape_classification": true,
|
||||||
|
"compound_query_execution_status": "detection_only",
|
||||||
|
"limited_reason_taxonomy": true,
|
||||||
|
"runtime_readiness_status": true,
|
||||||
|
"operational_limited_reply_text": true
|
||||||
|
},
|
||||||
|
"dry_run_metrics": {
|
||||||
|
"questions_total": 7,
|
||||||
|
"address_mode_hit_rate": 1.0,
|
||||||
|
"query_shape_detected_rate": 1.0,
|
||||||
|
"intent_alignment_rate": 1.0,
|
||||||
|
"supported_recipe_selection_rate": 0.7143,
|
||||||
|
"factual_positive_rate": 0.0,
|
||||||
|
"limited_mode_rate": 1.0,
|
||||||
|
"false_factual_rate": 0.0
|
||||||
|
},
|
||||||
|
"limited_reason_distribution": {
|
||||||
|
"empty_match": 4,
|
||||||
|
"missing_anchor": 1,
|
||||||
|
"recipe_visibility_gap": 1,
|
||||||
|
"unsupported": 1,
|
||||||
|
"execution_error": 0
|
||||||
|
},
|
||||||
|
"next_priority": "Sprint B specialized recipes for contract/document visibility"
|
||||||
|
}
|
||||||
+35
@@ -0,0 +1,35 @@
|
|||||||
|
# Smoke Checks
|
||||||
|
|
||||||
|
Дата: 2026-03-29
|
||||||
|
|
||||||
|
## Build
|
||||||
|
- `npm run build` -> PASS
|
||||||
|
|
||||||
|
## Tests
|
||||||
|
- `npx vitest run tests/addressQueryRuntimeM21.test.ts` -> PASS (5/5)
|
||||||
|
|
||||||
|
## Dry-run (assistant window equivalent)
|
||||||
|
|
||||||
|
Источник: `assistant_window_dry_run_results.json`
|
||||||
|
|
||||||
|
- total questions: 7
|
||||||
|
- `detected_mode=address_query`: 7/7
|
||||||
|
- `query_shape` detected: 7/7
|
||||||
|
- expected intent alignment: 7/7
|
||||||
|
- `selected_recipe` present: 5/7
|
||||||
|
- `response_type=LIMITED_WITH_REASON`: 7/7
|
||||||
|
- `false_factual_rate`: 0
|
||||||
|
|
||||||
|
### New diagnostics observed
|
||||||
|
|
||||||
|
- `query_shape` surfaced in debug payload.
|
||||||
|
- `runtime_readiness` surfaced in debug payload.
|
||||||
|
- `limited_reason_category` surfaced in debug payload.
|
||||||
|
|
||||||
|
### Limited taxonomy distribution
|
||||||
|
|
||||||
|
- `empty_match`: 4
|
||||||
|
- `missing_anchor`: 1
|
||||||
|
- `recipe_visibility_gap`: 1
|
||||||
|
- `unsupported`: 1
|
||||||
|
- `execution_error`: 0
|
||||||
+29
@@ -0,0 +1,29 @@
|
|||||||
|
# Run README — Address Query Runtime V1 M2.2
|
||||||
|
|
||||||
|
Дата: 2026-03-29
|
||||||
|
Run ID: `2026-03-29_Address_Query_Runtime_V1_M2_2_Documents_BankOps_By_Counterparty`
|
||||||
|
|
||||||
|
## Цель инкремента
|
||||||
|
|
||||||
|
Сделать следующий практический шаг Sprint B:
|
||||||
|
|
||||||
|
- добавить intent `list_documents_by_counterparty`;
|
||||||
|
- добавить intent `bank_operations_by_counterparty`;
|
||||||
|
- добавить live recipes для этих intent;
|
||||||
|
- усилить extraction фильтров периода (`from/to`, `between/and`) и default period для by-counterparty сценариев;
|
||||||
|
- сохранить safety-контракт (`false_factual_rate = 0`) и честный limited mode.
|
||||||
|
|
||||||
|
## Что проверено
|
||||||
|
|
||||||
|
- `npm.cmd run build` — PASS.
|
||||||
|
- `npx.cmd vitest run tests/addressQueryRuntimeM22.test.ts` — PASS (7/7).
|
||||||
|
- dry-run через `/api/assistant/message` на 6 вопросах — сохранен в `assistant_window_dry_run_results.json`.
|
||||||
|
|
||||||
|
## Основной вывод
|
||||||
|
|
||||||
|
Address lane расширен на два новых P0-сценария и стабильно маршрутизирует их в правильные intent/recipe. При этом positive factual output пока не достигнут: текущий блокер — live visibility (преобладает `empty_match`), а не routing/intent detection.
|
||||||
|
|
||||||
|
## Важное ограничение M2.2
|
||||||
|
|
||||||
|
`COMPOUND_FACTUAL_QUERY` по-прежнему только detection-only.
|
||||||
|
M2.2 не включает multi-intent decomposition execution.
|
||||||
+162
@@ -0,0 +1,162 @@
|
|||||||
|
{
|
||||||
|
"generated_at": "2026-03-29T16:28:22.969Z",
|
||||||
|
"questions": [
|
||||||
|
{
|
||||||
|
"id": "Q1",
|
||||||
|
"question": "show documents by counterparty Alfa from 2020-07-01 to 2020-07-31",
|
||||||
|
"expected_intent": "list_documents_by_counterparty",
|
||||||
|
"http_status": 200,
|
||||||
|
"ok": true,
|
||||||
|
"detected_mode": "address_query",
|
||||||
|
"query_shape": "DOCUMENT_LIST",
|
||||||
|
"detected_intent": "list_documents_by_counterparty",
|
||||||
|
"selected_recipe": "address_documents_by_counterparty_v1",
|
||||||
|
"extracted_filters": {
|
||||||
|
"sort": "period_desc",
|
||||||
|
"limit": 20,
|
||||||
|
"counterparty": "Alfa",
|
||||||
|
"period_from": "2020-07-01",
|
||||||
|
"period_to": "2020-07-31"
|
||||||
|
},
|
||||||
|
"missing_required_filters": [],
|
||||||
|
"mcp_call_status": "empty",
|
||||||
|
"rows_fetched": 20,
|
||||||
|
"rows_matched": 0,
|
||||||
|
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||||
|
"limited_reason_category": "empty_match",
|
||||||
|
"response_type": "LIMITED_WITH_REASON",
|
||||||
|
"reply_type": "partial_coverage",
|
||||||
|
"assistant_reply_preview": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "Q2",
|
||||||
|
"question": "show bank operations by counterparty Alfa from 2020-07-01 to 2020-07-31",
|
||||||
|
"expected_intent": "bank_operations_by_counterparty",
|
||||||
|
"http_status": 200,
|
||||||
|
"ok": true,
|
||||||
|
"detected_mode": "address_query",
|
||||||
|
"query_shape": "DOCUMENT_LIST",
|
||||||
|
"detected_intent": "bank_operations_by_counterparty",
|
||||||
|
"selected_recipe": "address_bank_operations_by_counterparty_v1",
|
||||||
|
"extracted_filters": {
|
||||||
|
"sort": "period_desc",
|
||||||
|
"limit": 20,
|
||||||
|
"counterparty": "Alfa",
|
||||||
|
"period_from": "2020-07-01",
|
||||||
|
"period_to": "2020-07-31"
|
||||||
|
},
|
||||||
|
"missing_required_filters": [],
|
||||||
|
"mcp_call_status": "empty",
|
||||||
|
"rows_fetched": 20,
|
||||||
|
"rows_matched": 0,
|
||||||
|
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||||
|
"limited_reason_category": "empty_match",
|
||||||
|
"response_type": "LIMITED_WITH_REASON",
|
||||||
|
"reply_type": "partial_coverage",
|
||||||
|
"assistant_reply_preview": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "Q3",
|
||||||
|
"question": "show bank operations by counterparty Alfa",
|
||||||
|
"expected_intent": "bank_operations_by_counterparty",
|
||||||
|
"http_status": 200,
|
||||||
|
"ok": true,
|
||||||
|
"detected_mode": "address_query",
|
||||||
|
"query_shape": "DOCUMENT_LIST",
|
||||||
|
"detected_intent": "bank_operations_by_counterparty",
|
||||||
|
"selected_recipe": "address_bank_operations_by_counterparty_v1",
|
||||||
|
"extracted_filters": {
|
||||||
|
"sort": "period_desc",
|
||||||
|
"limit": 20,
|
||||||
|
"counterparty": "Alfa",
|
||||||
|
"period_to": "2026-03-29",
|
||||||
|
"period_from": "2025-12-29"
|
||||||
|
},
|
||||||
|
"missing_required_filters": [],
|
||||||
|
"mcp_call_status": "empty",
|
||||||
|
"rows_fetched": 0,
|
||||||
|
"rows_matched": 0,
|
||||||
|
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||||
|
"limited_reason_category": "empty_match",
|
||||||
|
"response_type": "LIMITED_WITH_REASON",
|
||||||
|
"reply_type": "partial_coverage",
|
||||||
|
"assistant_reply_preview": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "Q4",
|
||||||
|
"question": "show documents by contract 15/24",
|
||||||
|
"expected_intent": "unknown",
|
||||||
|
"http_status": 200,
|
||||||
|
"ok": true,
|
||||||
|
"detected_mode": "address_query",
|
||||||
|
"query_shape": "DOCUMENT_LIST",
|
||||||
|
"detected_intent": "unknown",
|
||||||
|
"selected_recipe": null,
|
||||||
|
"extracted_filters": {
|
||||||
|
"sort": "period_desc",
|
||||||
|
"limit": 20,
|
||||||
|
"contract": "15/24"
|
||||||
|
},
|
||||||
|
"missing_required_filters": [],
|
||||||
|
"mcp_call_status": "skipped",
|
||||||
|
"rows_fetched": 0,
|
||||||
|
"rows_matched": 0,
|
||||||
|
"runtime_readiness": "DEEP_ONLY",
|
||||||
|
"limited_reason_category": "unsupported",
|
||||||
|
"response_type": "LIMITED_WITH_REASON",
|
||||||
|
"reply_type": "partial_coverage",
|
||||||
|
"assistant_reply_preview": "Этот запрос не подходит под address_query V1.\nПричина: intent пока не поддержан в address V1.\nЧто нужно уточнить: переформулируйте вопрос как адресный lookup по счету/контрагенту/договору."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "Q5",
|
||||||
|
"question": "show open items by contract",
|
||||||
|
"expected_intent": "open_items_by_counterparty_or_contract",
|
||||||
|
"http_status": 200,
|
||||||
|
"ok": true,
|
||||||
|
"detected_mode": "address_query",
|
||||||
|
"query_shape": "OBJECT_LOOKUP",
|
||||||
|
"detected_intent": "open_items_by_counterparty_or_contract",
|
||||||
|
"selected_recipe": null,
|
||||||
|
"extracted_filters": {
|
||||||
|
"sort": "period_desc",
|
||||||
|
"limit": 20
|
||||||
|
},
|
||||||
|
"missing_required_filters": [
|
||||||
|
"counterparty_or_contract"
|
||||||
|
],
|
||||||
|
"mcp_call_status": "skipped",
|
||||||
|
"rows_fetched": 0,
|
||||||
|
"rows_matched": 0,
|
||||||
|
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||||
|
"limited_reason_category": "missing_anchor",
|
||||||
|
"response_type": "LIMITED_WITH_REASON",
|
||||||
|
"reply_type": "partial_coverage",
|
||||||
|
"assistant_reply_preview": "Для точного адресного поиска не хватает обязательного якоря.\nПричина: для open_items нужен якорь контрагента или договора.\nЧто нужно уточнить: укажите контрагента или номер/название договора."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "Q6",
|
||||||
|
"question": "who owes us today",
|
||||||
|
"expected_intent": "list_receivables_counterparties",
|
||||||
|
"http_status": 200,
|
||||||
|
"ok": true,
|
||||||
|
"detected_mode": "address_query",
|
||||||
|
"query_shape": "AGGREGATE_LOOKUP",
|
||||||
|
"detected_intent": "list_receivables_counterparties",
|
||||||
|
"selected_recipe": "address_movements_receivables_v1",
|
||||||
|
"extracted_filters": {
|
||||||
|
"sort": "period_desc",
|
||||||
|
"limit": 20,
|
||||||
|
"as_of_date": "2026-03-29"
|
||||||
|
},
|
||||||
|
"missing_required_filters": [],
|
||||||
|
"mcp_call_status": "empty",
|
||||||
|
"rows_fetched": 20,
|
||||||
|
"rows_matched": 0,
|
||||||
|
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||||
|
"limited_reason_category": "empty_match",
|
||||||
|
"response_type": "LIMITED_WITH_REASON",
|
||||||
|
"reply_type": "partial_coverage",
|
||||||
|
"assistant_reply_preview": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
+34
@@ -0,0 +1,34 @@
|
|||||||
|
{
|
||||||
|
"baseline_run": "2026-03-29_Address_Query_Runtime_V1_M2_1_QueryShape_LimitedTaxonomy",
|
||||||
|
"current_run": "2026-03-29_Address_Query_Runtime_V1_M2_2_Documents_BankOps_By_Counterparty",
|
||||||
|
"changes": {
|
||||||
|
"intent_documents_by_counterparty": {
|
||||||
|
"before": false,
|
||||||
|
"after": true
|
||||||
|
},
|
||||||
|
"intent_bank_operations_by_counterparty": {
|
||||||
|
"before": false,
|
||||||
|
"after": true
|
||||||
|
},
|
||||||
|
"recipe_documents_by_counterparty_v1": {
|
||||||
|
"before": false,
|
||||||
|
"after": true
|
||||||
|
},
|
||||||
|
"recipe_bank_operations_by_counterparty_v1": {
|
||||||
|
"before": false,
|
||||||
|
"after": true
|
||||||
|
},
|
||||||
|
"period_range_extraction": {
|
||||||
|
"before": false,
|
||||||
|
"after": true
|
||||||
|
},
|
||||||
|
"default_period_for_by_counterparty": {
|
||||||
|
"before": false,
|
||||||
|
"after": true
|
||||||
|
},
|
||||||
|
"false_factual_rate": {
|
||||||
|
"before": 0.0,
|
||||||
|
"after": 0.0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+15
@@ -0,0 +1,15 @@
|
|||||||
|
llm_normalizer/backend/src/types/addressQuery.ts
|
||||||
|
llm_normalizer/backend/src/services/addressIntentResolver.ts
|
||||||
|
llm_normalizer/backend/src/services/addressFilterExtractor.ts
|
||||||
|
llm_normalizer/backend/src/services/addressRecipeCatalog.ts
|
||||||
|
llm_normalizer/backend/src/services/addressQueryService.ts
|
||||||
|
llm_normalizer/backend/tests/addressQueryRuntimeM22.test.ts
|
||||||
|
docs/ADDRESS/address_query/address_scenario_matrix.md
|
||||||
|
docs/ADDRESS/address_query/query_recipes_v1.md
|
||||||
|
docs/ADDRESS/address_query/runtime_readiness_matrix_v1.md
|
||||||
|
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_2_Documents_BankOps_By_Counterparty/README.md
|
||||||
|
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_2_Documents_BankOps_By_Counterparty/run_summary.json
|
||||||
|
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_2_Documents_BankOps_By_Counterparty/before_after_metrics.json
|
||||||
|
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_2_Documents_BankOps_By_Counterparty/smoke_checks.md
|
||||||
|
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_2_Documents_BankOps_By_Counterparty/assistant_window_dry_run_results.json
|
||||||
|
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_2_Documents_BankOps_By_Counterparty/changed_files.txt
|
||||||
+35
@@ -0,0 +1,35 @@
|
|||||||
|
{
|
||||||
|
"run_id": "2026-03-29_Address_Query_Runtime_V1_M2_2_Documents_BankOps_By_Counterparty",
|
||||||
|
"date": "2026-03-29",
|
||||||
|
"stage": "address_query_runtime_v1",
|
||||||
|
"scope": "m2_2_documents_and_bank_ops_by_counterparty",
|
||||||
|
"build_status": "PASSED",
|
||||||
|
"tests_status": "PASSED",
|
||||||
|
"dry_run_status": "PASSED_WITH_LIMITED_RESULTS",
|
||||||
|
"implemented": {
|
||||||
|
"intent_documents_by_counterparty": true,
|
||||||
|
"intent_bank_operations_by_counterparty": true,
|
||||||
|
"recipe_documents_by_counterparty_v1": true,
|
||||||
|
"recipe_bank_operations_by_counterparty_v1": true,
|
||||||
|
"period_range_extraction": true,
|
||||||
|
"default_period_last_90_days_for_by_counterparty": true
|
||||||
|
},
|
||||||
|
"dry_run_metrics": {
|
||||||
|
"questions_total": 6,
|
||||||
|
"address_mode_hit_rate": 1.0,
|
||||||
|
"query_shape_detected_rate": 1.0,
|
||||||
|
"intent_alignment_rate": 1.0,
|
||||||
|
"supported_recipe_selection_rate": 0.6667,
|
||||||
|
"factual_positive_rate": 0.0,
|
||||||
|
"limited_mode_rate": 1.0,
|
||||||
|
"false_factual_rate": 0.0
|
||||||
|
},
|
||||||
|
"limited_reason_distribution": {
|
||||||
|
"empty_match": 4,
|
||||||
|
"missing_anchor": 1,
|
||||||
|
"recipe_visibility_gap": 0,
|
||||||
|
"unsupported": 1,
|
||||||
|
"execution_error": 0
|
||||||
|
},
|
||||||
|
"next_priority": "Sprint B Priority 3: documents_forming_balance + known-positive live suite execution"
|
||||||
|
}
|
||||||
+34
@@ -0,0 +1,34 @@
|
|||||||
|
# Smoke Checks
|
||||||
|
|
||||||
|
Дата: 2026-03-29
|
||||||
|
|
||||||
|
## Build
|
||||||
|
- `npm.cmd run build` -> PASS
|
||||||
|
|
||||||
|
## Tests
|
||||||
|
- `npx.cmd vitest run tests/addressQueryRuntimeM22.test.ts` -> PASS (7/7)
|
||||||
|
|
||||||
|
## Dry-run (assistant window equivalent)
|
||||||
|
|
||||||
|
Источник: `assistant_window_dry_run_results.json`
|
||||||
|
|
||||||
|
- total questions: 6
|
||||||
|
- `detected_mode=address_query`: 6/6
|
||||||
|
- `query_shape` detected: 6/6
|
||||||
|
- expected intent alignment: 6/6
|
||||||
|
- `selected_recipe` present: 4/6
|
||||||
|
- `response_type=LIMITED_WITH_REASON`: 6/6
|
||||||
|
- `false_factual_rate`: 0
|
||||||
|
|
||||||
|
### Limited taxonomy distribution
|
||||||
|
|
||||||
|
- `empty_match`: 4
|
||||||
|
- `missing_anchor`: 1
|
||||||
|
- `recipe_visibility_gap`: 0
|
||||||
|
- `unsupported`: 1
|
||||||
|
- `execution_error`: 0
|
||||||
|
|
||||||
|
### Operational note
|
||||||
|
|
||||||
|
`documents_by_counterparty` and `bank_operations_by_counterparty` are now implemented and routed correctly.
|
||||||
|
Current blocker remains live data visibility on selected anchors/periods (non-empty positive evidence suite still required).
|
||||||
+35
@@ -0,0 +1,35 @@
|
|||||||
|
# Run README — Address Query Runtime V1 M2.3a
|
||||||
|
|
||||||
|
Дата: 2026-03-29
|
||||||
|
Run ID: `2026-03-29_Address_Query_Runtime_V1_M2_3A_Stage_Diagnostic_Materialization`
|
||||||
|
|
||||||
|
## Цель инкремента
|
||||||
|
|
||||||
|
Сделать узкий диагностический шаг после M2.3:
|
||||||
|
|
||||||
|
- развести `mcp_call_status` по стадиям;
|
||||||
|
- зафиксировать, где именно теряются строки (`raw -> account_scope -> materialization -> recipe_filter -> matched`);
|
||||||
|
- убрать неинформативный общий `empty` статус;
|
||||||
|
- подготовить техническую базу для следующего exploratory live pass.
|
||||||
|
|
||||||
|
## Что проверено
|
||||||
|
|
||||||
|
- `npm.cmd run build` — PASS.
|
||||||
|
- `npx.cmd vitest run tests/addressQueryRuntimeM23.test.ts` — PASS (10/10).
|
||||||
|
- stage-diagnostic dry-run через `/api/assistant/message` на 5 core cases — сохранен в `assistant_window_stage_diagnostic_results.json`.
|
||||||
|
|
||||||
|
## Ключевой вывод
|
||||||
|
|
||||||
|
Диагностический паттерн стабилен:
|
||||||
|
|
||||||
|
- `raw_rows_received > 0`;
|
||||||
|
- `rows_after_account_scope = 0`;
|
||||||
|
- `rows_materialized = 0`;
|
||||||
|
- `rows_after_recipe_filter = 0`;
|
||||||
|
- `rows_matched = 0`.
|
||||||
|
|
||||||
|
То есть текущий primary bottleneck находится на account-scope filtration до materialization.
|
||||||
|
|
||||||
|
## Что это значит для next step
|
||||||
|
|
||||||
|
Следующий шаг нужно делать как targeted tuning account-scope per recipe, а уже затем запускать curated non-empty data-aware positive acceptance.
|
||||||
+242
@@ -0,0 +1,242 @@
|
|||||||
|
{
|
||||||
|
"generated_at": "2026-03-29T17:33:28.054Z",
|
||||||
|
"cases": [
|
||||||
|
{
|
||||||
|
"id": "D1",
|
||||||
|
"question": "show account balance 60 today",
|
||||||
|
"expected_intent": "account_balance_snapshot",
|
||||||
|
"http_status": 200,
|
||||||
|
"ok": true,
|
||||||
|
"detected_mode": "address_query",
|
||||||
|
"query_shape": "AGGREGATE_LOOKUP",
|
||||||
|
"detected_intent": "account_balance_snapshot",
|
||||||
|
"intent_aligned": true,
|
||||||
|
"selected_recipe": "address_movements_account_snapshot_v1",
|
||||||
|
"extracted_filters": {
|
||||||
|
"sort": "period_desc",
|
||||||
|
"limit": 20,
|
||||||
|
"account": "60",
|
||||||
|
"as_of_date": "2026-03-29"
|
||||||
|
},
|
||||||
|
"anchor_type": "account",
|
||||||
|
"anchor_value_raw": "60",
|
||||||
|
"resolver_confidence": "high",
|
||||||
|
"mcp_call_status": "raw_rows_received_but_not_materialized",
|
||||||
|
"stage_interpretation": "Rows came from MCP but were lost before/at materialization.",
|
||||||
|
"rows_fetched": 20,
|
||||||
|
"raw_rows_received": 20,
|
||||||
|
"rows_after_account_scope": 0,
|
||||||
|
"rows_materialized": 0,
|
||||||
|
"rows_after_recipe_filter": 0,
|
||||||
|
"rows_matched": 0,
|
||||||
|
"raw_row_keys_sample": [
|
||||||
|
"Период",
|
||||||
|
"Регистратор",
|
||||||
|
"СчетДт",
|
||||||
|
"СчетКт",
|
||||||
|
"Сумма",
|
||||||
|
"Period",
|
||||||
|
"Registrator",
|
||||||
|
"AccountDt",
|
||||||
|
"AccountKt",
|
||||||
|
"Amount"
|
||||||
|
],
|
||||||
|
"materialization_drop_reason": "dropped_by_account_scope_filter",
|
||||||
|
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||||
|
"limited_reason_category": "empty_match",
|
||||||
|
"response_type": "LIMITED_WITH_REASON",
|
||||||
|
"reply_type": "partial_coverage",
|
||||||
|
"assistant_reply_preview_escaped": "\\u0412 live-\\u0434\\u0430\\u043d\\u043d\\u044b\\u0445 \\u043f\\u043e \\u0442\\u0435\\u043a\\u0443\\u0449\\u0435\\u043c\\u0443 \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u0443 \\u0437\\u0430\\u043f\\u0438\\u0441\\u0438 \\u043d\\u0435 \\u043d\\u0430\\u0439\\u0434\\u0435\\u043d\\u044b.\n\\u041f\\u0440\\u0438\\u0447\\u0438\\u043d\\u0430: \\u043f\\u043e \\u0432\\u044b\\u0431\\u0440\\u0430\\u043d\\u043d\\u044b\\u043c \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u0430\\u043c \\u0432 live-\\u0432\\u044b\\u0431\\u043e\\u0440\\u043a\\u0435 \\u043d\\u0435\\u0442 \\u0441\\u0442\\u0440\\u043e\\u043a.\n\\u0427\\u0442\\u043e \\u043d\\u0443\\u0436\\u043d\\u043e \\u0443\\u0442\\u043e\\u0447\\u043d\\u0438\\u0442\\u044c: \\u0443\\u0442\\u043e\\u0447\\u043d\\u0438\\u0442\\u0435 \\u043f\\u0435\\u0440\\u0438\\u043e\\u0434, \\u043a\\u043e\\u043d\\u0442\\u0440\\u0430\\u0433\\u0435\\u043d\\u0442\\u0430, \\u0434\\u043e\\u0433\\u043e\\u0432\\u043e\\u0440 \\u0438\\u043b\\u0438 \\u0441\\u043d\\u0438\\u043c\\u0438\\u0442\\u0435 \\u0447\\u0430\\u0441\\u0442\\u044c \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u043e\\u0432."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "D2",
|
||||||
|
"question": "which documents form balance for account 62 as of 2020-07-31",
|
||||||
|
"expected_intent": "documents_forming_balance",
|
||||||
|
"http_status": 200,
|
||||||
|
"ok": true,
|
||||||
|
"detected_mode": "address_query",
|
||||||
|
"query_shape": "DOCUMENT_LIST",
|
||||||
|
"detected_intent": "documents_forming_balance",
|
||||||
|
"intent_aligned": true,
|
||||||
|
"selected_recipe": "address_documents_forming_balance_v1",
|
||||||
|
"extracted_filters": {
|
||||||
|
"sort": "period_desc",
|
||||||
|
"limit": 20,
|
||||||
|
"account": "62",
|
||||||
|
"as_of_date": "2020-07-31"
|
||||||
|
},
|
||||||
|
"anchor_type": "account",
|
||||||
|
"anchor_value_raw": "62",
|
||||||
|
"resolver_confidence": "high",
|
||||||
|
"mcp_call_status": "raw_rows_received_but_not_materialized",
|
||||||
|
"stage_interpretation": "Rows came from MCP but were lost before/at materialization.",
|
||||||
|
"rows_fetched": 20,
|
||||||
|
"raw_rows_received": 20,
|
||||||
|
"rows_after_account_scope": 0,
|
||||||
|
"rows_materialized": 0,
|
||||||
|
"rows_after_recipe_filter": 0,
|
||||||
|
"rows_matched": 0,
|
||||||
|
"raw_row_keys_sample": [
|
||||||
|
"Период",
|
||||||
|
"Регистратор",
|
||||||
|
"СчетДт",
|
||||||
|
"СчетКт",
|
||||||
|
"Сумма",
|
||||||
|
"Period",
|
||||||
|
"Registrator",
|
||||||
|
"AccountDt",
|
||||||
|
"AccountKt",
|
||||||
|
"Amount"
|
||||||
|
],
|
||||||
|
"materialization_drop_reason": "dropped_by_account_scope_filter",
|
||||||
|
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||||
|
"limited_reason_category": "empty_match",
|
||||||
|
"response_type": "LIMITED_WITH_REASON",
|
||||||
|
"reply_type": "partial_coverage",
|
||||||
|
"assistant_reply_preview_escaped": "\\u0412 live-\\u0434\\u0430\\u043d\\u043d\\u044b\\u0445 \\u043f\\u043e \\u0442\\u0435\\u043a\\u0443\\u0449\\u0435\\u043c\\u0443 \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u0443 \\u0437\\u0430\\u043f\\u0438\\u0441\\u0438 \\u043d\\u0435 \\u043d\\u0430\\u0439\\u0434\\u0435\\u043d\\u044b.\n\\u041f\\u0440\\u0438\\u0447\\u0438\\u043d\\u0430: \\u043f\\u043e \\u0432\\u044b\\u0431\\u0440\\u0430\\u043d\\u043d\\u044b\\u043c \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u0430\\u043c \\u0432 live-\\u0432\\u044b\\u0431\\u043e\\u0440\\u043a\\u0435 \\u043d\\u0435\\u0442 \\u0441\\u0442\\u0440\\u043e\\u043a.\n\\u0427\\u0442\\u043e \\u043d\\u0443\\u0436\\u043d\\u043e \\u0443\\u0442\\u043e\\u0447\\u043d\\u0438\\u0442\\u044c: \\u0443\\u0442\\u043e\\u0447\\u043d\\u0438\\u0442\\u0435 \\u043f\\u0435\\u0440\\u0438\\u043e\\u0434, \\u043a\\u043e\\u043d\\u0442\\u0440\\u0430\\u0433\\u0435\\u043d\\u0442\\u0430, \\u0434\\u043e\\u0433\\u043e\\u0432\\u043e\\u0440 \\u0438\\u043b\\u0438 \\u0441\\u043d\\u0438\\u043c\\u0438\\u0442\\u0435 \\u0447\\u0430\\u0441\\u0442\\u044c \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u043e\\u0432."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "D3",
|
||||||
|
"question": "reveal balance documents for account 60",
|
||||||
|
"expected_intent": "documents_forming_balance",
|
||||||
|
"http_status": 200,
|
||||||
|
"ok": true,
|
||||||
|
"detected_mode": "address_query",
|
||||||
|
"query_shape": "DOCUMENT_LIST",
|
||||||
|
"detected_intent": "documents_forming_balance",
|
||||||
|
"intent_aligned": true,
|
||||||
|
"selected_recipe": "address_documents_forming_balance_v1",
|
||||||
|
"extracted_filters": {
|
||||||
|
"sort": "period_desc",
|
||||||
|
"limit": 20,
|
||||||
|
"account": "60",
|
||||||
|
"as_of_date": "2026-03-29"
|
||||||
|
},
|
||||||
|
"anchor_type": "account",
|
||||||
|
"anchor_value_raw": "60",
|
||||||
|
"resolver_confidence": "high",
|
||||||
|
"mcp_call_status": "raw_rows_received_but_not_materialized",
|
||||||
|
"stage_interpretation": "Rows came from MCP but were lost before/at materialization.",
|
||||||
|
"rows_fetched": 20,
|
||||||
|
"raw_rows_received": 20,
|
||||||
|
"rows_after_account_scope": 0,
|
||||||
|
"rows_materialized": 0,
|
||||||
|
"rows_after_recipe_filter": 0,
|
||||||
|
"rows_matched": 0,
|
||||||
|
"raw_row_keys_sample": [
|
||||||
|
"Период",
|
||||||
|
"Регистратор",
|
||||||
|
"СчетДт",
|
||||||
|
"СчетКт",
|
||||||
|
"Сумма",
|
||||||
|
"Period",
|
||||||
|
"Registrator",
|
||||||
|
"AccountDt",
|
||||||
|
"AccountKt",
|
||||||
|
"Amount"
|
||||||
|
],
|
||||||
|
"materialization_drop_reason": "dropped_by_account_scope_filter",
|
||||||
|
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||||
|
"limited_reason_category": "empty_match",
|
||||||
|
"response_type": "LIMITED_WITH_REASON",
|
||||||
|
"reply_type": "partial_coverage",
|
||||||
|
"assistant_reply_preview_escaped": "\\u0412 live-\\u0434\\u0430\\u043d\\u043d\\u044b\\u0445 \\u043f\\u043e \\u0442\\u0435\\u043a\\u0443\\u0449\\u0435\\u043c\\u0443 \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u0443 \\u0437\\u0430\\u043f\\u0438\\u0441\\u0438 \\u043d\\u0435 \\u043d\\u0430\\u0439\\u0434\\u0435\\u043d\\u044b.\n\\u041f\\u0440\\u0438\\u0447\\u0438\\u043d\\u0430: \\u043f\\u043e \\u0432\\u044b\\u0431\\u0440\\u0430\\u043d\\u043d\\u044b\\u043c \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u0430\\u043c \\u0432 live-\\u0432\\u044b\\u0431\\u043e\\u0440\\u043a\\u0435 \\u043d\\u0435\\u0442 \\u0441\\u0442\\u0440\\u043e\\u043a.\n\\u0427\\u0442\\u043e \\u043d\\u0443\\u0436\\u043d\\u043e \\u0443\\u0442\\u043e\\u0447\\u043d\\u0438\\u0442\\u044c: \\u0443\\u0442\\u043e\\u0447\\u043d\\u0438\\u0442\\u0435 \\u043f\\u0435\\u0440\\u0438\\u043e\\u0434, \\u043a\\u043e\\u043d\\u0442\\u0440\\u0430\\u0433\\u0435\\u043d\\u0442\\u0430, \\u0434\\u043e\\u0433\\u043e\\u0432\\u043e\\u0440 \\u0438\\u043b\\u0438 \\u0441\\u043d\\u0438\\u043c\\u0438\\u0442\\u0435 \\u0447\\u0430\\u0441\\u0442\\u044c \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u043e\\u0432."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "D4",
|
||||||
|
"question": "show documents by counterparty Alfa from 2020-07-01 to 2020-07-31",
|
||||||
|
"expected_intent": "list_documents_by_counterparty",
|
||||||
|
"http_status": 200,
|
||||||
|
"ok": true,
|
||||||
|
"detected_mode": "address_query",
|
||||||
|
"query_shape": "DOCUMENT_LIST",
|
||||||
|
"detected_intent": "list_documents_by_counterparty",
|
||||||
|
"intent_aligned": true,
|
||||||
|
"selected_recipe": "address_documents_by_counterparty_v1",
|
||||||
|
"extracted_filters": {
|
||||||
|
"sort": "period_desc",
|
||||||
|
"limit": 20,
|
||||||
|
"counterparty": "Alfa",
|
||||||
|
"period_from": "2020-07-01",
|
||||||
|
"period_to": "2020-07-31"
|
||||||
|
},
|
||||||
|
"anchor_type": "counterparty",
|
||||||
|
"anchor_value_raw": "Alfa",
|
||||||
|
"resolver_confidence": "medium",
|
||||||
|
"mcp_call_status": "raw_rows_received_but_not_materialized",
|
||||||
|
"stage_interpretation": "Rows came from MCP but were lost before/at materialization.",
|
||||||
|
"rows_fetched": 20,
|
||||||
|
"raw_rows_received": 20,
|
||||||
|
"rows_after_account_scope": 0,
|
||||||
|
"rows_materialized": 0,
|
||||||
|
"rows_after_recipe_filter": 0,
|
||||||
|
"rows_matched": 0,
|
||||||
|
"raw_row_keys_sample": [
|
||||||
|
"Период",
|
||||||
|
"Регистратор",
|
||||||
|
"СчетДт",
|
||||||
|
"СчетКт",
|
||||||
|
"Сумма",
|
||||||
|
"Period",
|
||||||
|
"Registrator",
|
||||||
|
"AccountDt",
|
||||||
|
"AccountKt",
|
||||||
|
"Amount"
|
||||||
|
],
|
||||||
|
"materialization_drop_reason": "dropped_by_account_scope_filter",
|
||||||
|
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||||
|
"limited_reason_category": "empty_match",
|
||||||
|
"response_type": "LIMITED_WITH_REASON",
|
||||||
|
"reply_type": "partial_coverage",
|
||||||
|
"assistant_reply_preview_escaped": "\\u0412 live-\\u0434\\u0430\\u043d\\u043d\\u044b\\u0445 \\u043f\\u043e \\u0442\\u0435\\u043a\\u0443\\u0449\\u0435\\u043c\\u0443 \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u0443 \\u0437\\u0430\\u043f\\u0438\\u0441\\u0438 \\u043d\\u0435 \\u043d\\u0430\\u0439\\u0434\\u0435\\u043d\\u044b.\n\\u041f\\u0440\\u0438\\u0447\\u0438\\u043d\\u0430: \\u043f\\u043e \\u0432\\u044b\\u0431\\u0440\\u0430\\u043d\\u043d\\u044b\\u043c \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u0430\\u043c \\u0432 live-\\u0432\\u044b\\u0431\\u043e\\u0440\\u043a\\u0435 \\u043d\\u0435\\u0442 \\u0441\\u0442\\u0440\\u043e\\u043a.\n\\u0427\\u0442\\u043e \\u043d\\u0443\\u0436\\u043d\\u043e \\u0443\\u0442\\u043e\\u0447\\u043d\\u0438\\u0442\\u044c: \\u0443\\u0442\\u043e\\u0447\\u043d\\u0438\\u0442\\u0435 \\u043f\\u0435\\u0440\\u0438\\u043e\\u0434, \\u043a\\u043e\\u043d\\u0442\\u0440\\u0430\\u0433\\u0435\\u043d\\u0442\\u0430, \\u0434\\u043e\\u0433\\u043e\\u0432\\u043e\\u0440 \\u0438\\u043b\\u0438 \\u0441\\u043d\\u0438\\u043c\\u0438\\u0442\\u0435 \\u0447\\u0430\\u0441\\u0442\\u044c \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u043e\\u0432."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "D5",
|
||||||
|
"question": "show bank operations by counterparty Alfa from 2020-07-01 to 2020-07-31",
|
||||||
|
"expected_intent": "bank_operations_by_counterparty",
|
||||||
|
"http_status": 200,
|
||||||
|
"ok": true,
|
||||||
|
"detected_mode": "address_query",
|
||||||
|
"query_shape": "DOCUMENT_LIST",
|
||||||
|
"detected_intent": "bank_operations_by_counterparty",
|
||||||
|
"intent_aligned": true,
|
||||||
|
"selected_recipe": "address_bank_operations_by_counterparty_v1",
|
||||||
|
"extracted_filters": {
|
||||||
|
"sort": "period_desc",
|
||||||
|
"limit": 20,
|
||||||
|
"counterparty": "Alfa",
|
||||||
|
"period_from": "2020-07-01",
|
||||||
|
"period_to": "2020-07-31"
|
||||||
|
},
|
||||||
|
"anchor_type": "counterparty",
|
||||||
|
"anchor_value_raw": "Alfa",
|
||||||
|
"resolver_confidence": "medium",
|
||||||
|
"mcp_call_status": "raw_rows_received_but_not_materialized",
|
||||||
|
"stage_interpretation": "Rows came from MCP but were lost before/at materialization.",
|
||||||
|
"rows_fetched": 20,
|
||||||
|
"raw_rows_received": 20,
|
||||||
|
"rows_after_account_scope": 0,
|
||||||
|
"rows_materialized": 0,
|
||||||
|
"rows_after_recipe_filter": 0,
|
||||||
|
"rows_matched": 0,
|
||||||
|
"raw_row_keys_sample": [
|
||||||
|
"Период",
|
||||||
|
"Регистратор",
|
||||||
|
"СчетДт",
|
||||||
|
"СчетКт",
|
||||||
|
"Сумма",
|
||||||
|
"Period",
|
||||||
|
"Registrator",
|
||||||
|
"AccountDt",
|
||||||
|
"AccountKt",
|
||||||
|
"Amount"
|
||||||
|
],
|
||||||
|
"materialization_drop_reason": "dropped_by_account_scope_filter",
|
||||||
|
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||||
|
"limited_reason_category": "empty_match",
|
||||||
|
"response_type": "LIMITED_WITH_REASON",
|
||||||
|
"reply_type": "partial_coverage",
|
||||||
|
"assistant_reply_preview_escaped": "\\u0412 live-\\u0434\\u0430\\u043d\\u043d\\u044b\\u0445 \\u043f\\u043e \\u0442\\u0435\\u043a\\u0443\\u0449\\u0435\\u043c\\u0443 \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u0443 \\u0437\\u0430\\u043f\\u0438\\u0441\\u0438 \\u043d\\u0435 \\u043d\\u0430\\u0439\\u0434\\u0435\\u043d\\u044b.\n\\u041f\\u0440\\u0438\\u0447\\u0438\\u043d\\u0430: \\u043f\\u043e \\u0432\\u044b\\u0431\\u0440\\u0430\\u043d\\u043d\\u044b\\u043c \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u0430\\u043c \\u0432 live-\\u0432\\u044b\\u0431\\u043e\\u0440\\u043a\\u0435 \\u043d\\u0435\\u0442 \\u0441\\u0442\\u0440\\u043e\\u043a.\n\\u0427\\u0442\\u043e \\u043d\\u0443\\u0436\\u043d\\u043e \\u0443\\u0442\\u043e\\u0447\\u043d\\u0438\\u0442\\u044c: \\u0443\\u0442\\u043e\\u0447\\u043d\\u0438\\u0442\\u0435 \\u043f\\u0435\\u0440\\u0438\\u043e\\u0434, \\u043a\\u043e\\u043d\\u0442\\u0440\\u0430\\u0433\\u0435\\u043d\\u0442\\u0430, \\u0434\\u043e\\u0433\\u043e\\u0432\\u043e\\u0440 \\u0438\\u043b\\u0438 \\u0441\\u043d\\u0438\\u043c\\u0438\\u0442\\u0435 \\u0447\\u0430\\u0441\\u0442\\u044c \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u043e\\u0432."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
+26
@@ -0,0 +1,26 @@
|
|||||||
|
{
|
||||||
|
"baseline_run": "2026-03-29_Address_Query_Runtime_V1_M2_3_DocumentsFormingBalance_DataAwareAcceptance",
|
||||||
|
"current_run": "2026-03-29_Address_Query_Runtime_V1_M2_3A_Stage_Diagnostic_Materialization",
|
||||||
|
"changes": {
|
||||||
|
"mcp_call_status_granularity": {
|
||||||
|
"before": "ok|empty|error|skipped",
|
||||||
|
"after": "no_raw_rows|raw_rows_received_but_not_materialized|materialized_but_not_matched|matched_non_empty|error|skipped"
|
||||||
|
},
|
||||||
|
"debug_rows_after_account_scope": {
|
||||||
|
"before": false,
|
||||||
|
"after": true
|
||||||
|
},
|
||||||
|
"debug_materialization_drop_reason": {
|
||||||
|
"before": false,
|
||||||
|
"after": true
|
||||||
|
},
|
||||||
|
"test_suite_file": {
|
||||||
|
"before": "addressQueryRuntimeM22.test.ts",
|
||||||
|
"after": "addressQueryRuntimeM23.test.ts"
|
||||||
|
},
|
||||||
|
"factual_positive_rate": {
|
||||||
|
"before": 0,
|
||||||
|
"after": 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+28
@@ -0,0 +1,28 @@
|
|||||||
|
llm_normalizer/backend/src/types/addressQuery.ts
|
||||||
|
llm_normalizer/backend/src/types/assistant.ts
|
||||||
|
llm_normalizer/backend/src/services/addressMcpClient.ts
|
||||||
|
llm_normalizer/backend/src/services/addressIntentResolver.ts
|
||||||
|
llm_normalizer/backend/src/services/addressQueryService.ts
|
||||||
|
llm_normalizer/backend/src/services/assistantService.ts
|
||||||
|
llm_normalizer/backend/tests/addressQueryRuntimeM23.test.ts
|
||||||
|
llm_normalizer/backend/tests/addressQueryRuntimeM22.test.ts (deleted)
|
||||||
|
docs/ADDRESS/address_query/address_runtime_contracts.md
|
||||||
|
docs/ADDRESS/address_query/runtime_readiness_matrix_v1.md
|
||||||
|
docs/ADDRESS/address_query/address_scenario_matrix.md
|
||||||
|
docs/ADDRESS/address_query/data_aware_positive_acceptance_suite_v1.md
|
||||||
|
docs/ADDRESS/address_query/README.md
|
||||||
|
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3A_Stage_Diagnostic_Materialization/README.md
|
||||||
|
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3A_Stage_Diagnostic_Materialization/run_summary.json
|
||||||
|
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3A_Stage_Diagnostic_Materialization/before_after_metrics.json
|
||||||
|
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3A_Stage_Diagnostic_Materialization/smoke_checks.md
|
||||||
|
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3A_Stage_Diagnostic_Materialization/stage_diagnostic_report.md
|
||||||
|
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3A_Stage_Diagnostic_Materialization/stage_diagnostic_matrix.md
|
||||||
|
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3A_Stage_Diagnostic_Materialization/assistant_window_stage_diagnostic_results.json
|
||||||
|
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3A_Stage_Diagnostic_Materialization/chat_export_stage_diagnostic.md
|
||||||
|
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3A_Stage_Diagnostic_Materialization/live_call_inventory_address.json
|
||||||
|
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3A_Stage_Diagnostic_Materialization/debug_payloads/D1.json
|
||||||
|
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3A_Stage_Diagnostic_Materialization/debug_payloads/D2.json
|
||||||
|
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3A_Stage_Diagnostic_Materialization/debug_payloads/D3.json
|
||||||
|
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3A_Stage_Diagnostic_Materialization/debug_payloads/D4.json
|
||||||
|
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3A_Stage_Diagnostic_Materialization/debug_payloads/D5.json
|
||||||
|
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3A_Stage_Diagnostic_Materialization/changed_files.txt
|
||||||
+44
@@ -0,0 +1,44 @@
|
|||||||
|
# Chat Export — Stage Diagnostic Pass (M2.3a)
|
||||||
|
|
||||||
|
Date: 2026-03-29
|
||||||
|
|
||||||
|
## D1
|
||||||
|
Question: show account balance 60 today
|
||||||
|
Detected intent: account_balance_snapshot
|
||||||
|
MCP stage status: raw_rows_received_but_not_materialized
|
||||||
|
Preview (escaped): \u0412 live-\u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e \u0442\u0435\u043a\u0443\u0449\u0435\u043c\u0443 \u0444\u0438\u043b\u044c\u0442\u0440\u0443 \u0437\u0430\u043f\u0438\u0441\u0438 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u044b.
|
||||||
|
\u041f\u0440\u0438\u0447\u0438\u043d\u0430: \u043f\u043e \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u043c \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u043c \u0432 live-\u0432\u044b\u0431\u043e\u0440\u043a\u0435 \u043d\u0435\u0442 \u0441\u0442\u0440\u043e\u043a.
|
||||||
|
\u0427\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0443\u0442\u043e\u0447\u043d\u0438\u0442\u044c: \u0443\u0442\u043e\u0447\u043d\u0438\u0442\u0435 \u043f\u0435\u0440\u0438\u043e\u0434, \u043a\u043e\u043d\u0442\u0440\u0430\u0433\u0435\u043d\u0442\u0430, \u0434\u043e\u0433\u043e\u0432\u043e\u0440 \u0438\u043b\u0438 \u0441\u043d\u0438\u043c\u0438\u0442\u0435 \u0447\u0430\u0441\u0442\u044c \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432.
|
||||||
|
|
||||||
|
## D2
|
||||||
|
Question: which documents form balance for account 62 as of 2020-07-31
|
||||||
|
Detected intent: documents_forming_balance
|
||||||
|
MCP stage status: raw_rows_received_but_not_materialized
|
||||||
|
Preview (escaped): \u0412 live-\u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e \u0442\u0435\u043a\u0443\u0449\u0435\u043c\u0443 \u0444\u0438\u043b\u044c\u0442\u0440\u0443 \u0437\u0430\u043f\u0438\u0441\u0438 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u044b.
|
||||||
|
\u041f\u0440\u0438\u0447\u0438\u043d\u0430: \u043f\u043e \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u043c \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u043c \u0432 live-\u0432\u044b\u0431\u043e\u0440\u043a\u0435 \u043d\u0435\u0442 \u0441\u0442\u0440\u043e\u043a.
|
||||||
|
\u0427\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0443\u0442\u043e\u0447\u043d\u0438\u0442\u044c: \u0443\u0442\u043e\u0447\u043d\u0438\u0442\u0435 \u043f\u0435\u0440\u0438\u043e\u0434, \u043a\u043e\u043d\u0442\u0440\u0430\u0433\u0435\u043d\u0442\u0430, \u0434\u043e\u0433\u043e\u0432\u043e\u0440 \u0438\u043b\u0438 \u0441\u043d\u0438\u043c\u0438\u0442\u0435 \u0447\u0430\u0441\u0442\u044c \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432.
|
||||||
|
|
||||||
|
## D3
|
||||||
|
Question: reveal balance documents for account 60
|
||||||
|
Detected intent: documents_forming_balance
|
||||||
|
MCP stage status: raw_rows_received_but_not_materialized
|
||||||
|
Preview (escaped): \u0412 live-\u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e \u0442\u0435\u043a\u0443\u0449\u0435\u043c\u0443 \u0444\u0438\u043b\u044c\u0442\u0440\u0443 \u0437\u0430\u043f\u0438\u0441\u0438 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u044b.
|
||||||
|
\u041f\u0440\u0438\u0447\u0438\u043d\u0430: \u043f\u043e \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u043c \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u043c \u0432 live-\u0432\u044b\u0431\u043e\u0440\u043a\u0435 \u043d\u0435\u0442 \u0441\u0442\u0440\u043e\u043a.
|
||||||
|
\u0427\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0443\u0442\u043e\u0447\u043d\u0438\u0442\u044c: \u0443\u0442\u043e\u0447\u043d\u0438\u0442\u0435 \u043f\u0435\u0440\u0438\u043e\u0434, \u043a\u043e\u043d\u0442\u0440\u0430\u0433\u0435\u043d\u0442\u0430, \u0434\u043e\u0433\u043e\u0432\u043e\u0440 \u0438\u043b\u0438 \u0441\u043d\u0438\u043c\u0438\u0442\u0435 \u0447\u0430\u0441\u0442\u044c \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432.
|
||||||
|
|
||||||
|
## D4
|
||||||
|
Question: show documents by counterparty Alfa from 2020-07-01 to 2020-07-31
|
||||||
|
Detected intent: list_documents_by_counterparty
|
||||||
|
MCP stage status: raw_rows_received_but_not_materialized
|
||||||
|
Preview (escaped): \u0412 live-\u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e \u0442\u0435\u043a\u0443\u0449\u0435\u043c\u0443 \u0444\u0438\u043b\u044c\u0442\u0440\u0443 \u0437\u0430\u043f\u0438\u0441\u0438 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u044b.
|
||||||
|
\u041f\u0440\u0438\u0447\u0438\u043d\u0430: \u043f\u043e \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u043c \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u043c \u0432 live-\u0432\u044b\u0431\u043e\u0440\u043a\u0435 \u043d\u0435\u0442 \u0441\u0442\u0440\u043e\u043a.
|
||||||
|
\u0427\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0443\u0442\u043e\u0447\u043d\u0438\u0442\u044c: \u0443\u0442\u043e\u0447\u043d\u0438\u0442\u0435 \u043f\u0435\u0440\u0438\u043e\u0434, \u043a\u043e\u043d\u0442\u0440\u0430\u0433\u0435\u043d\u0442\u0430, \u0434\u043e\u0433\u043e\u0432\u043e\u0440 \u0438\u043b\u0438 \u0441\u043d\u0438\u043c\u0438\u0442\u0435 \u0447\u0430\u0441\u0442\u044c \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432.
|
||||||
|
|
||||||
|
## D5
|
||||||
|
Question: show bank operations by counterparty Alfa from 2020-07-01 to 2020-07-31
|
||||||
|
Detected intent: bank_operations_by_counterparty
|
||||||
|
MCP stage status: raw_rows_received_but_not_materialized
|
||||||
|
Preview (escaped): \u0412 live-\u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e \u0442\u0435\u043a\u0443\u0449\u0435\u043c\u0443 \u0444\u0438\u043b\u044c\u0442\u0440\u0443 \u0437\u0430\u043f\u0438\u0441\u0438 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u044b.
|
||||||
|
\u041f\u0440\u0438\u0447\u0438\u043d\u0430: \u043f\u043e \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u043c \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u043c \u0432 live-\u0432\u044b\u0431\u043e\u0440\u043a\u0435 \u043d\u0435\u0442 \u0441\u0442\u0440\u043e\u043a.
|
||||||
|
\u0427\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0443\u0442\u043e\u0447\u043d\u0438\u0442\u044c: \u0443\u0442\u043e\u0447\u043d\u0438\u0442\u0435 \u043f\u0435\u0440\u0438\u043e\u0434, \u043a\u043e\u043d\u0442\u0440\u0430\u0433\u0435\u043d\u0442\u0430, \u0434\u043e\u0433\u043e\u0432\u043e\u0440 \u0438\u043b\u0438 \u0441\u043d\u0438\u043c\u0438\u0442\u0435 \u0447\u0430\u0441\u0442\u044c \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432.
|
||||||
|
|
||||||
+47
@@ -0,0 +1,47 @@
|
|||||||
|
{
|
||||||
|
"id": "D1",
|
||||||
|
"question": "show account balance 60 today",
|
||||||
|
"expected_intent": "account_balance_snapshot",
|
||||||
|
"http_status": 200,
|
||||||
|
"ok": true,
|
||||||
|
"detected_mode": "address_query",
|
||||||
|
"query_shape": "AGGREGATE_LOOKUP",
|
||||||
|
"detected_intent": "account_balance_snapshot",
|
||||||
|
"intent_aligned": true,
|
||||||
|
"selected_recipe": "address_movements_account_snapshot_v1",
|
||||||
|
"extracted_filters": {
|
||||||
|
"sort": "period_desc",
|
||||||
|
"limit": 20,
|
||||||
|
"account": "60",
|
||||||
|
"as_of_date": "2026-03-29"
|
||||||
|
},
|
||||||
|
"anchor_type": "account",
|
||||||
|
"anchor_value_raw": "60",
|
||||||
|
"resolver_confidence": "high",
|
||||||
|
"mcp_call_status": "raw_rows_received_but_not_materialized",
|
||||||
|
"stage_interpretation": "Rows came from MCP but were lost before/at materialization.",
|
||||||
|
"rows_fetched": 20,
|
||||||
|
"raw_rows_received": 20,
|
||||||
|
"rows_after_account_scope": 0,
|
||||||
|
"rows_materialized": 0,
|
||||||
|
"rows_after_recipe_filter": 0,
|
||||||
|
"rows_matched": 0,
|
||||||
|
"raw_row_keys_sample": [
|
||||||
|
"Период",
|
||||||
|
"Регистратор",
|
||||||
|
"СчетДт",
|
||||||
|
"СчетКт",
|
||||||
|
"РЎСѓРјРјР°",
|
||||||
|
"Period",
|
||||||
|
"Registrator",
|
||||||
|
"AccountDt",
|
||||||
|
"AccountKt",
|
||||||
|
"Amount"
|
||||||
|
],
|
||||||
|
"materialization_drop_reason": "dropped_by_account_scope_filter",
|
||||||
|
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||||
|
"limited_reason_category": "empty_match",
|
||||||
|
"response_type": "LIMITED_WITH_REASON",
|
||||||
|
"reply_type": "partial_coverage",
|
||||||
|
"assistant_reply_preview_escaped": "\\u0412 live-\\u0434\\u0430\\u043d\\u043d\\u044b\\u0445 \\u043f\\u043e \\u0442\\u0435\\u043a\\u0443\\u0449\\u0435\\u043c\\u0443 \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u0443 \\u0437\\u0430\\u043f\\u0438\\u0441\\u0438 \\u043d\\u0435 \\u043d\\u0430\\u0439\\u0434\\u0435\\u043d\\u044b.\n\\u041f\\u0440\\u0438\\u0447\\u0438\\u043d\\u0430: \\u043f\\u043e \\u0432\\u044b\\u0431\\u0440\\u0430\\u043d\\u043d\\u044b\\u043c \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u0430\\u043c \\u0432 live-\\u0432\\u044b\\u0431\\u043e\\u0440\\u043a\\u0435 \\u043d\\u0435\\u0442 \\u0441\\u0442\\u0440\\u043e\\u043a.\n\\u0427\\u0442\\u043e \\u043d\\u0443\\u0436\\u043d\\u043e \\u0443\\u0442\\u043e\\u0447\\u043d\\u0438\\u0442\\u044c: \\u0443\\u0442\\u043e\\u0447\\u043d\\u0438\\u0442\\u0435 \\u043f\\u0435\\u0440\\u0438\\u043e\\u0434, \\u043a\\u043e\\u043d\\u0442\\u0440\\u0430\\u0433\\u0435\\u043d\\u0442\\u0430, \\u0434\\u043e\\u0433\\u043e\\u0432\\u043e\\u0440 \\u0438\\u043b\\u0438 \\u0441\\u043d\\u0438\\u043c\\u0438\\u0442\\u0435 \\u0447\\u0430\\u0441\\u0442\\u044c \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u043e\\u0432."
|
||||||
|
}
|
||||||
+47
@@ -0,0 +1,47 @@
|
|||||||
|
{
|
||||||
|
"id": "D2",
|
||||||
|
"question": "which documents form balance for account 62 as of 2020-07-31",
|
||||||
|
"expected_intent": "documents_forming_balance",
|
||||||
|
"http_status": 200,
|
||||||
|
"ok": true,
|
||||||
|
"detected_mode": "address_query",
|
||||||
|
"query_shape": "DOCUMENT_LIST",
|
||||||
|
"detected_intent": "documents_forming_balance",
|
||||||
|
"intent_aligned": true,
|
||||||
|
"selected_recipe": "address_documents_forming_balance_v1",
|
||||||
|
"extracted_filters": {
|
||||||
|
"sort": "period_desc",
|
||||||
|
"limit": 20,
|
||||||
|
"account": "62",
|
||||||
|
"as_of_date": "2020-07-31"
|
||||||
|
},
|
||||||
|
"anchor_type": "account",
|
||||||
|
"anchor_value_raw": "62",
|
||||||
|
"resolver_confidence": "high",
|
||||||
|
"mcp_call_status": "raw_rows_received_but_not_materialized",
|
||||||
|
"stage_interpretation": "Rows came from MCP but were lost before/at materialization.",
|
||||||
|
"rows_fetched": 20,
|
||||||
|
"raw_rows_received": 20,
|
||||||
|
"rows_after_account_scope": 0,
|
||||||
|
"rows_materialized": 0,
|
||||||
|
"rows_after_recipe_filter": 0,
|
||||||
|
"rows_matched": 0,
|
||||||
|
"raw_row_keys_sample": [
|
||||||
|
"Период",
|
||||||
|
"Регистратор",
|
||||||
|
"СчетДт",
|
||||||
|
"СчетКт",
|
||||||
|
"РЎСѓРјРјР°",
|
||||||
|
"Period",
|
||||||
|
"Registrator",
|
||||||
|
"AccountDt",
|
||||||
|
"AccountKt",
|
||||||
|
"Amount"
|
||||||
|
],
|
||||||
|
"materialization_drop_reason": "dropped_by_account_scope_filter",
|
||||||
|
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||||
|
"limited_reason_category": "empty_match",
|
||||||
|
"response_type": "LIMITED_WITH_REASON",
|
||||||
|
"reply_type": "partial_coverage",
|
||||||
|
"assistant_reply_preview_escaped": "\\u0412 live-\\u0434\\u0430\\u043d\\u043d\\u044b\\u0445 \\u043f\\u043e \\u0442\\u0435\\u043a\\u0443\\u0449\\u0435\\u043c\\u0443 \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u0443 \\u0437\\u0430\\u043f\\u0438\\u0441\\u0438 \\u043d\\u0435 \\u043d\\u0430\\u0439\\u0434\\u0435\\u043d\\u044b.\n\\u041f\\u0440\\u0438\\u0447\\u0438\\u043d\\u0430: \\u043f\\u043e \\u0432\\u044b\\u0431\\u0440\\u0430\\u043d\\u043d\\u044b\\u043c \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u0430\\u043c \\u0432 live-\\u0432\\u044b\\u0431\\u043e\\u0440\\u043a\\u0435 \\u043d\\u0435\\u0442 \\u0441\\u0442\\u0440\\u043e\\u043a.\n\\u0427\\u0442\\u043e \\u043d\\u0443\\u0436\\u043d\\u043e \\u0443\\u0442\\u043e\\u0447\\u043d\\u0438\\u0442\\u044c: \\u0443\\u0442\\u043e\\u0447\\u043d\\u0438\\u0442\\u0435 \\u043f\\u0435\\u0440\\u0438\\u043e\\u0434, \\u043a\\u043e\\u043d\\u0442\\u0440\\u0430\\u0433\\u0435\\u043d\\u0442\\u0430, \\u0434\\u043e\\u0433\\u043e\\u0432\\u043e\\u0440 \\u0438\\u043b\\u0438 \\u0441\\u043d\\u0438\\u043c\\u0438\\u0442\\u0435 \\u0447\\u0430\\u0441\\u0442\\u044c \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u043e\\u0432."
|
||||||
|
}
|
||||||
+47
@@ -0,0 +1,47 @@
|
|||||||
|
{
|
||||||
|
"id": "D3",
|
||||||
|
"question": "reveal balance documents for account 60",
|
||||||
|
"expected_intent": "documents_forming_balance",
|
||||||
|
"http_status": 200,
|
||||||
|
"ok": true,
|
||||||
|
"detected_mode": "address_query",
|
||||||
|
"query_shape": "DOCUMENT_LIST",
|
||||||
|
"detected_intent": "documents_forming_balance",
|
||||||
|
"intent_aligned": true,
|
||||||
|
"selected_recipe": "address_documents_forming_balance_v1",
|
||||||
|
"extracted_filters": {
|
||||||
|
"sort": "period_desc",
|
||||||
|
"limit": 20,
|
||||||
|
"account": "60",
|
||||||
|
"as_of_date": "2026-03-29"
|
||||||
|
},
|
||||||
|
"anchor_type": "account",
|
||||||
|
"anchor_value_raw": "60",
|
||||||
|
"resolver_confidence": "high",
|
||||||
|
"mcp_call_status": "raw_rows_received_but_not_materialized",
|
||||||
|
"stage_interpretation": "Rows came from MCP but were lost before/at materialization.",
|
||||||
|
"rows_fetched": 20,
|
||||||
|
"raw_rows_received": 20,
|
||||||
|
"rows_after_account_scope": 0,
|
||||||
|
"rows_materialized": 0,
|
||||||
|
"rows_after_recipe_filter": 0,
|
||||||
|
"rows_matched": 0,
|
||||||
|
"raw_row_keys_sample": [
|
||||||
|
"Период",
|
||||||
|
"Регистратор",
|
||||||
|
"СчетДт",
|
||||||
|
"СчетКт",
|
||||||
|
"РЎСѓРјРјР°",
|
||||||
|
"Period",
|
||||||
|
"Registrator",
|
||||||
|
"AccountDt",
|
||||||
|
"AccountKt",
|
||||||
|
"Amount"
|
||||||
|
],
|
||||||
|
"materialization_drop_reason": "dropped_by_account_scope_filter",
|
||||||
|
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||||
|
"limited_reason_category": "empty_match",
|
||||||
|
"response_type": "LIMITED_WITH_REASON",
|
||||||
|
"reply_type": "partial_coverage",
|
||||||
|
"assistant_reply_preview_escaped": "\\u0412 live-\\u0434\\u0430\\u043d\\u043d\\u044b\\u0445 \\u043f\\u043e \\u0442\\u0435\\u043a\\u0443\\u0449\\u0435\\u043c\\u0443 \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u0443 \\u0437\\u0430\\u043f\\u0438\\u0441\\u0438 \\u043d\\u0435 \\u043d\\u0430\\u0439\\u0434\\u0435\\u043d\\u044b.\n\\u041f\\u0440\\u0438\\u0447\\u0438\\u043d\\u0430: \\u043f\\u043e \\u0432\\u044b\\u0431\\u0440\\u0430\\u043d\\u043d\\u044b\\u043c \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u0430\\u043c \\u0432 live-\\u0432\\u044b\\u0431\\u043e\\u0440\\u043a\\u0435 \\u043d\\u0435\\u0442 \\u0441\\u0442\\u0440\\u043e\\u043a.\n\\u0427\\u0442\\u043e \\u043d\\u0443\\u0436\\u043d\\u043e \\u0443\\u0442\\u043e\\u0447\\u043d\\u0438\\u0442\\u044c: \\u0443\\u0442\\u043e\\u0447\\u043d\\u0438\\u0442\\u0435 \\u043f\\u0435\\u0440\\u0438\\u043e\\u0434, \\u043a\\u043e\\u043d\\u0442\\u0440\\u0430\\u0433\\u0435\\u043d\\u0442\\u0430, \\u0434\\u043e\\u0433\\u043e\\u0432\\u043e\\u0440 \\u0438\\u043b\\u0438 \\u0441\\u043d\\u0438\\u043c\\u0438\\u0442\\u0435 \\u0447\\u0430\\u0441\\u0442\\u044c \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u043e\\u0432."
|
||||||
|
}
|
||||||
+48
@@ -0,0 +1,48 @@
|
|||||||
|
{
|
||||||
|
"id": "D4",
|
||||||
|
"question": "show documents by counterparty Alfa from 2020-07-01 to 2020-07-31",
|
||||||
|
"expected_intent": "list_documents_by_counterparty",
|
||||||
|
"http_status": 200,
|
||||||
|
"ok": true,
|
||||||
|
"detected_mode": "address_query",
|
||||||
|
"query_shape": "DOCUMENT_LIST",
|
||||||
|
"detected_intent": "list_documents_by_counterparty",
|
||||||
|
"intent_aligned": true,
|
||||||
|
"selected_recipe": "address_documents_by_counterparty_v1",
|
||||||
|
"extracted_filters": {
|
||||||
|
"sort": "period_desc",
|
||||||
|
"limit": 20,
|
||||||
|
"counterparty": "Alfa",
|
||||||
|
"period_from": "2020-07-01",
|
||||||
|
"period_to": "2020-07-31"
|
||||||
|
},
|
||||||
|
"anchor_type": "counterparty",
|
||||||
|
"anchor_value_raw": "Alfa",
|
||||||
|
"resolver_confidence": "medium",
|
||||||
|
"mcp_call_status": "raw_rows_received_but_not_materialized",
|
||||||
|
"stage_interpretation": "Rows came from MCP but were lost before/at materialization.",
|
||||||
|
"rows_fetched": 20,
|
||||||
|
"raw_rows_received": 20,
|
||||||
|
"rows_after_account_scope": 0,
|
||||||
|
"rows_materialized": 0,
|
||||||
|
"rows_after_recipe_filter": 0,
|
||||||
|
"rows_matched": 0,
|
||||||
|
"raw_row_keys_sample": [
|
||||||
|
"Период",
|
||||||
|
"Регистратор",
|
||||||
|
"СчетДт",
|
||||||
|
"СчетКт",
|
||||||
|
"РЎСѓРјРјР°",
|
||||||
|
"Period",
|
||||||
|
"Registrator",
|
||||||
|
"AccountDt",
|
||||||
|
"AccountKt",
|
||||||
|
"Amount"
|
||||||
|
],
|
||||||
|
"materialization_drop_reason": "dropped_by_account_scope_filter",
|
||||||
|
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||||
|
"limited_reason_category": "empty_match",
|
||||||
|
"response_type": "LIMITED_WITH_REASON",
|
||||||
|
"reply_type": "partial_coverage",
|
||||||
|
"assistant_reply_preview_escaped": "\\u0412 live-\\u0434\\u0430\\u043d\\u043d\\u044b\\u0445 \\u043f\\u043e \\u0442\\u0435\\u043a\\u0443\\u0449\\u0435\\u043c\\u0443 \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u0443 \\u0437\\u0430\\u043f\\u0438\\u0441\\u0438 \\u043d\\u0435 \\u043d\\u0430\\u0439\\u0434\\u0435\\u043d\\u044b.\n\\u041f\\u0440\\u0438\\u0447\\u0438\\u043d\\u0430: \\u043f\\u043e \\u0432\\u044b\\u0431\\u0440\\u0430\\u043d\\u043d\\u044b\\u043c \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u0430\\u043c \\u0432 live-\\u0432\\u044b\\u0431\\u043e\\u0440\\u043a\\u0435 \\u043d\\u0435\\u0442 \\u0441\\u0442\\u0440\\u043e\\u043a.\n\\u0427\\u0442\\u043e \\u043d\\u0443\\u0436\\u043d\\u043e \\u0443\\u0442\\u043e\\u0447\\u043d\\u0438\\u0442\\u044c: \\u0443\\u0442\\u043e\\u0447\\u043d\\u0438\\u0442\\u0435 \\u043f\\u0435\\u0440\\u0438\\u043e\\u0434, \\u043a\\u043e\\u043d\\u0442\\u0440\\u0430\\u0433\\u0435\\u043d\\u0442\\u0430, \\u0434\\u043e\\u0433\\u043e\\u0432\\u043e\\u0440 \\u0438\\u043b\\u0438 \\u0441\\u043d\\u0438\\u043c\\u0438\\u0442\\u0435 \\u0447\\u0430\\u0441\\u0442\\u044c \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u043e\\u0432."
|
||||||
|
}
|
||||||
+48
@@ -0,0 +1,48 @@
|
|||||||
|
{
|
||||||
|
"id": "D5",
|
||||||
|
"question": "show bank operations by counterparty Alfa from 2020-07-01 to 2020-07-31",
|
||||||
|
"expected_intent": "bank_operations_by_counterparty",
|
||||||
|
"http_status": 200,
|
||||||
|
"ok": true,
|
||||||
|
"detected_mode": "address_query",
|
||||||
|
"query_shape": "DOCUMENT_LIST",
|
||||||
|
"detected_intent": "bank_operations_by_counterparty",
|
||||||
|
"intent_aligned": true,
|
||||||
|
"selected_recipe": "address_bank_operations_by_counterparty_v1",
|
||||||
|
"extracted_filters": {
|
||||||
|
"sort": "period_desc",
|
||||||
|
"limit": 20,
|
||||||
|
"counterparty": "Alfa",
|
||||||
|
"period_from": "2020-07-01",
|
||||||
|
"period_to": "2020-07-31"
|
||||||
|
},
|
||||||
|
"anchor_type": "counterparty",
|
||||||
|
"anchor_value_raw": "Alfa",
|
||||||
|
"resolver_confidence": "medium",
|
||||||
|
"mcp_call_status": "raw_rows_received_but_not_materialized",
|
||||||
|
"stage_interpretation": "Rows came from MCP but were lost before/at materialization.",
|
||||||
|
"rows_fetched": 20,
|
||||||
|
"raw_rows_received": 20,
|
||||||
|
"rows_after_account_scope": 0,
|
||||||
|
"rows_materialized": 0,
|
||||||
|
"rows_after_recipe_filter": 0,
|
||||||
|
"rows_matched": 0,
|
||||||
|
"raw_row_keys_sample": [
|
||||||
|
"Период",
|
||||||
|
"Регистратор",
|
||||||
|
"СчетДт",
|
||||||
|
"СчетКт",
|
||||||
|
"РЎСѓРјРјР°",
|
||||||
|
"Period",
|
||||||
|
"Registrator",
|
||||||
|
"AccountDt",
|
||||||
|
"AccountKt",
|
||||||
|
"Amount"
|
||||||
|
],
|
||||||
|
"materialization_drop_reason": "dropped_by_account_scope_filter",
|
||||||
|
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||||
|
"limited_reason_category": "empty_match",
|
||||||
|
"response_type": "LIMITED_WITH_REASON",
|
||||||
|
"reply_type": "partial_coverage",
|
||||||
|
"assistant_reply_preview_escaped": "\\u0412 live-\\u0434\\u0430\\u043d\\u043d\\u044b\\u0445 \\u043f\\u043e \\u0442\\u0435\\u043a\\u0443\\u0449\\u0435\\u043c\\u0443 \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u0443 \\u0437\\u0430\\u043f\\u0438\\u0441\\u0438 \\u043d\\u0435 \\u043d\\u0430\\u0439\\u0434\\u0435\\u043d\\u044b.\n\\u041f\\u0440\\u0438\\u0447\\u0438\\u043d\\u0430: \\u043f\\u043e \\u0432\\u044b\\u0431\\u0440\\u0430\\u043d\\u043d\\u044b\\u043c \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u0430\\u043c \\u0432 live-\\u0432\\u044b\\u0431\\u043e\\u0440\\u043a\\u0435 \\u043d\\u0435\\u0442 \\u0441\\u0442\\u0440\\u043e\\u043a.\n\\u0427\\u0442\\u043e \\u043d\\u0443\\u0436\\u043d\\u043e \\u0443\\u0442\\u043e\\u0447\\u043d\\u0438\\u0442\\u044c: \\u0443\\u0442\\u043e\\u0447\\u043d\\u0438\\u0442\\u0435 \\u043f\\u0435\\u0440\\u0438\\u043e\\u0434, \\u043a\\u043e\\u043d\\u0442\\u0440\\u0430\\u0433\\u0435\\u043d\\u0442\\u0430, \\u0434\\u043e\\u0433\\u043e\\u0432\\u043e\\u0440 \\u0438\\u043b\\u0438 \\u0441\\u043d\\u0438\\u043c\\u0438\\u0442\\u0435 \\u0447\\u0430\\u0441\\u0442\\u044c \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u043e\\u0432."
|
||||||
|
}
|
||||||
+72
@@ -0,0 +1,72 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"case_id": "D1",
|
||||||
|
"question": "show account balance 60 today",
|
||||||
|
"detected_intent": "account_balance_snapshot",
|
||||||
|
"selected_recipe": "address_movements_account_snapshot_v1",
|
||||||
|
"mcp_call_status": "raw_rows_received_but_not_materialized",
|
||||||
|
"raw_rows_received": 20,
|
||||||
|
"rows_after_account_scope": 0,
|
||||||
|
"rows_materialized": 0,
|
||||||
|
"rows_after_recipe_filter": 0,
|
||||||
|
"rows_matched": 0,
|
||||||
|
"materialization_drop_reason": "dropped_by_account_scope_filter",
|
||||||
|
"limited_reason_category": "empty_match"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"case_id": "D2",
|
||||||
|
"question": "which documents form balance for account 62 as of 2020-07-31",
|
||||||
|
"detected_intent": "documents_forming_balance",
|
||||||
|
"selected_recipe": "address_documents_forming_balance_v1",
|
||||||
|
"mcp_call_status": "raw_rows_received_but_not_materialized",
|
||||||
|
"raw_rows_received": 20,
|
||||||
|
"rows_after_account_scope": 0,
|
||||||
|
"rows_materialized": 0,
|
||||||
|
"rows_after_recipe_filter": 0,
|
||||||
|
"rows_matched": 0,
|
||||||
|
"materialization_drop_reason": "dropped_by_account_scope_filter",
|
||||||
|
"limited_reason_category": "empty_match"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"case_id": "D3",
|
||||||
|
"question": "reveal balance documents for account 60",
|
||||||
|
"detected_intent": "documents_forming_balance",
|
||||||
|
"selected_recipe": "address_documents_forming_balance_v1",
|
||||||
|
"mcp_call_status": "raw_rows_received_but_not_materialized",
|
||||||
|
"raw_rows_received": 20,
|
||||||
|
"rows_after_account_scope": 0,
|
||||||
|
"rows_materialized": 0,
|
||||||
|
"rows_after_recipe_filter": 0,
|
||||||
|
"rows_matched": 0,
|
||||||
|
"materialization_drop_reason": "dropped_by_account_scope_filter",
|
||||||
|
"limited_reason_category": "empty_match"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"case_id": "D4",
|
||||||
|
"question": "show documents by counterparty Alfa from 2020-07-01 to 2020-07-31",
|
||||||
|
"detected_intent": "list_documents_by_counterparty",
|
||||||
|
"selected_recipe": "address_documents_by_counterparty_v1",
|
||||||
|
"mcp_call_status": "raw_rows_received_but_not_materialized",
|
||||||
|
"raw_rows_received": 20,
|
||||||
|
"rows_after_account_scope": 0,
|
||||||
|
"rows_materialized": 0,
|
||||||
|
"rows_after_recipe_filter": 0,
|
||||||
|
"rows_matched": 0,
|
||||||
|
"materialization_drop_reason": "dropped_by_account_scope_filter",
|
||||||
|
"limited_reason_category": "empty_match"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"case_id": "D5",
|
||||||
|
"question": "show bank operations by counterparty Alfa from 2020-07-01 to 2020-07-31",
|
||||||
|
"detected_intent": "bank_operations_by_counterparty",
|
||||||
|
"selected_recipe": "address_bank_operations_by_counterparty_v1",
|
||||||
|
"mcp_call_status": "raw_rows_received_but_not_materialized",
|
||||||
|
"raw_rows_received": 20,
|
||||||
|
"rows_after_account_scope": 0,
|
||||||
|
"rows_materialized": 0,
|
||||||
|
"rows_after_recipe_filter": 0,
|
||||||
|
"rows_matched": 0,
|
||||||
|
"materialization_drop_reason": "dropped_by_account_scope_filter",
|
||||||
|
"limited_reason_category": "empty_match"
|
||||||
|
}
|
||||||
|
]
|
||||||
+39
@@ -0,0 +1,39 @@
|
|||||||
|
{
|
||||||
|
"run_id": "2026-03-29_Address_Query_Runtime_V1_M2_3A_Stage_Diagnostic_Materialization",
|
||||||
|
"date": "2026-03-29",
|
||||||
|
"stage": "address_query_runtime_v1",
|
||||||
|
"scope": "m2_3a_stage_diagnostic_raw_to_materialization",
|
||||||
|
"build_status": "PASSED",
|
||||||
|
"tests_status": "PASSED",
|
||||||
|
"diagnostic_run_status": "COMPLETED",
|
||||||
|
"implemented": {
|
||||||
|
"mcp_stage_status_taxonomy": true,
|
||||||
|
"row_stage_counters_with_account_scope": true,
|
||||||
|
"materialization_drop_reason": true,
|
||||||
|
"test_suite_renamed_to_m23": true,
|
||||||
|
"mojibake_safe_preview_export": true
|
||||||
|
},
|
||||||
|
"diagnostic_metrics": {
|
||||||
|
"cases_total": 5,
|
||||||
|
"address_mode_hit_rate": 1,
|
||||||
|
"intent_alignment_rate": 1,
|
||||||
|
"supported_recipe_selection_rate": 1,
|
||||||
|
"factual_positive_rate": 0,
|
||||||
|
"limited_mode_rate": 1,
|
||||||
|
"false_factual_rate": 0
|
||||||
|
},
|
||||||
|
"stage_status_distribution": [
|
||||||
|
{
|
||||||
|
"status": "raw_rows_received_but_not_materialized",
|
||||||
|
"count": 5
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"drop_reason_distribution": [
|
||||||
|
{
|
||||||
|
"reason": "dropped_by_account_scope_filter",
|
||||||
|
"count": 5
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"primary_bottleneck": "rows drop at account_scope stage before materialization (raw_rows_received \u003e 0 and rows_after_account_scope = 0)",
|
||||||
|
"next_priority": "tune account_scope strategy per recipe, then rerun curated data-aware positive suite"
|
||||||
|
}
|
||||||
+36
@@ -0,0 +1,36 @@
|
|||||||
|
# Smoke Checks
|
||||||
|
|
||||||
|
Дата: 2026-03-29
|
||||||
|
|
||||||
|
## Build
|
||||||
|
- `npm.cmd run build` -> PASS
|
||||||
|
|
||||||
|
## Tests
|
||||||
|
- `npx.cmd vitest run tests/addressQueryRuntimeM23.test.ts` -> PASS (10/10)
|
||||||
|
|
||||||
|
## Stage-diagnostic run
|
||||||
|
|
||||||
|
Источник: `assistant_window_stage_diagnostic_results.json`
|
||||||
|
|
||||||
|
- total cases: 5
|
||||||
|
- `detected_mode=address_query`: 5/5
|
||||||
|
- expected intent alignment: 5/5
|
||||||
|
- `selected_recipe` present: 5/5
|
||||||
|
- `response_type=LIMITED_WITH_REASON`: 5/5
|
||||||
|
- `false_factual_rate`: 0
|
||||||
|
|
||||||
|
### MCP stage distribution
|
||||||
|
|
||||||
|
- `raw_rows_received_but_not_materialized`: 5
|
||||||
|
|
||||||
|
### Row stage pattern
|
||||||
|
|
||||||
|
- `raw_rows_received`: non-zero
|
||||||
|
- `rows_after_account_scope`: 0
|
||||||
|
- `rows_materialized`: 0
|
||||||
|
- `rows_after_recipe_filter`: 0
|
||||||
|
- `rows_matched`: 0
|
||||||
|
|
||||||
|
### Interpretation
|
||||||
|
|
||||||
|
Current bottleneck is account-scope filtering before materialization.
|
||||||
+7
@@ -0,0 +1,7 @@
|
|||||||
|
| case_id | intent | mcp_call_status | raw_rows | after_account_scope | materialized | after_recipe_filter | matched | drop_reason |
|
||||||
|
|---|---|---|---|---|---|---|---|---|
|
||||||
|
| D1 | account_balance_snapshot | raw_rows_received_but_not_materialized | 20 | 0 | 0 | 0 | 0 | dropped_by_account_scope_filter |
|
||||||
|
| D2 | documents_forming_balance | raw_rows_received_but_not_materialized | 20 | 0 | 0 | 0 | 0 | dropped_by_account_scope_filter |
|
||||||
|
| D3 | documents_forming_balance | raw_rows_received_but_not_materialized | 20 | 0 | 0 | 0 | 0 | dropped_by_account_scope_filter |
|
||||||
|
| D4 | list_documents_by_counterparty | raw_rows_received_but_not_materialized | 20 | 0 | 0 | 0 | 0 | dropped_by_account_scope_filter |
|
||||||
|
| D5 | bank_operations_by_counterparty | raw_rows_received_but_not_materialized | 20 | 0 | 0 | 0 | 0 | dropped_by_account_scope_filter |
|
||||||
+43
@@ -0,0 +1,43 @@
|
|||||||
|
# Stage Diagnostic Report (M2.3a)
|
||||||
|
|
||||||
|
Дата: 2026-03-29
|
||||||
|
|
||||||
|
## Examined cases
|
||||||
|
|
||||||
|
- `account_balance_snapshot`
|
||||||
|
- `documents_forming_balance` (2 variants)
|
||||||
|
- `documents_by_counterparty`
|
||||||
|
- `bank_operations_by_counterparty`
|
||||||
|
|
||||||
|
## Diagnostic chain
|
||||||
|
|
||||||
|
For each case we tracked:
|
||||||
|
|
||||||
|
- `raw_rows_received`
|
||||||
|
- `rows_after_account_scope`
|
||||||
|
- `rows_materialized`
|
||||||
|
- `rows_after_recipe_filter`
|
||||||
|
- `rows_matched`
|
||||||
|
|
||||||
|
## Observed bottleneck
|
||||||
|
|
||||||
|
All examined cases show the same drop profile:
|
||||||
|
|
||||||
|
1. MCP returns raw rows (`raw_rows_received > 0`).
|
||||||
|
2. Account-scope stage removes all rows (`rows_after_account_scope = 0`).
|
||||||
|
3. Materialization and matching remain zero by consequence.
|
||||||
|
|
||||||
|
## Technical classification
|
||||||
|
|
||||||
|
- `mcp_call_status`: `raw_rows_received_but_not_materialized`
|
||||||
|
- `materialization_drop_reason`: `dropped_by_account_scope_filter`
|
||||||
|
|
||||||
|
## Practical conclusion
|
||||||
|
|
||||||
|
At this stage the primary blocker for positive factual outputs is not intent/routing, but scope filtration strategy.
|
||||||
|
|
||||||
|
## Next implementation focus
|
||||||
|
|
||||||
|
1. Tune account-scope strategy per recipe (not one shared pattern for all intents).
|
||||||
|
2. Rerun stage-diagnostic pass to confirm non-zero `rows_after_account_scope`.
|
||||||
|
3. Only then run curated data-aware positive acceptance suite.
|
||||||
+22
@@ -0,0 +1,22 @@
|
|||||||
|
# Run README ? Address Query Runtime V1 M2.3b
|
||||||
|
|
||||||
|
????: 2026-03-29
|
||||||
|
Run ID: `2026-03-29_Address_Query_Runtime_V1_M2_3B_AccountScope_Mode_Tuning`
|
||||||
|
|
||||||
|
## ???? ??????????
|
||||||
|
|
||||||
|
- ????????? account-scope ?? ?????? `strict/preferred` ?? recipe;
|
||||||
|
- ?????? ?????? blind-drop ??? non-account intents ????? controlled fallback;
|
||||||
|
- ????????? `false_factual_rate = 0` ? ??????????????? ????????????.
|
||||||
|
|
||||||
|
## ??? ?????????
|
||||||
|
|
||||||
|
- `npm.cmd run build` ? PASS.
|
||||||
|
- `npx.cmd vitest run tests/addressQueryRuntimeM23.test.ts` ? PASS (10/10).
|
||||||
|
- stage-diagnostic replay D1-D5 ? ???????? ? `assistant_window_stage_diagnostic_results.json`.
|
||||||
|
|
||||||
|
## ???????? ?????
|
||||||
|
|
||||||
|
- ??? strict account intents (D1-D3) ????? ????? ???????? ? account-scope.
|
||||||
|
- ??? preferred intents (D4-D5) rows ?????? materialize, ?? ?? match ?? anchors/recipe-????????.
|
||||||
|
- ????????? ???: resolver/filter tuning + curated positive live suite.
|
||||||
+252
@@ -0,0 +1,252 @@
|
|||||||
|
{
|
||||||
|
"generated_at": "2026-03-29T17:43:53.319Z",
|
||||||
|
"cases": [
|
||||||
|
{
|
||||||
|
"id": "D1",
|
||||||
|
"question": "show account balance 60 today",
|
||||||
|
"expected_intent": "account_balance_snapshot",
|
||||||
|
"http_status": 200,
|
||||||
|
"ok": true,
|
||||||
|
"detected_mode": "address_query",
|
||||||
|
"query_shape": "AGGREGATE_LOOKUP",
|
||||||
|
"detected_intent": "account_balance_snapshot",
|
||||||
|
"intent_aligned": true,
|
||||||
|
"selected_recipe": "address_movements_account_snapshot_v1",
|
||||||
|
"extracted_filters": {
|
||||||
|
"sort": "period_desc",
|
||||||
|
"limit": 20,
|
||||||
|
"account": "60",
|
||||||
|
"as_of_date": "2026-03-29"
|
||||||
|
},
|
||||||
|
"account_scope_mode": "strict",
|
||||||
|
"account_scope_fallback_applied": false,
|
||||||
|
"anchor_type": "account",
|
||||||
|
"anchor_value_raw": "60",
|
||||||
|
"resolver_confidence": "high",
|
||||||
|
"mcp_call_status": "raw_rows_received_but_not_materialized",
|
||||||
|
"stage_interpretation": "Rows came from MCP but were lost before/at materialization.",
|
||||||
|
"rows_fetched": 20,
|
||||||
|
"raw_rows_received": 20,
|
||||||
|
"rows_after_account_scope": 0,
|
||||||
|
"rows_materialized": 0,
|
||||||
|
"rows_after_recipe_filter": 0,
|
||||||
|
"rows_matched": 0,
|
||||||
|
"raw_row_keys_sample": [
|
||||||
|
"Период",
|
||||||
|
"Регистратор",
|
||||||
|
"СчетДт",
|
||||||
|
"СчетКт",
|
||||||
|
"Сумма",
|
||||||
|
"Period",
|
||||||
|
"Registrator",
|
||||||
|
"AccountDt",
|
||||||
|
"AccountKt",
|
||||||
|
"Amount"
|
||||||
|
],
|
||||||
|
"materialization_drop_reason": "dropped_by_account_scope_filter",
|
||||||
|
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||||
|
"limited_reason_category": "empty_match",
|
||||||
|
"response_type": "LIMITED_WITH_REASON",
|
||||||
|
"reply_type": "partial_coverage",
|
||||||
|
"assistant_reply_preview_escaped": "В live-данных по текущему фильтру записи не найдены.\\nПричина: по выбранным фильтрам в live-выборке нет строк.\\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "D2",
|
||||||
|
"question": "which documents form balance for account 62 as of 2020-07-31",
|
||||||
|
"expected_intent": "documents_forming_balance",
|
||||||
|
"http_status": 200,
|
||||||
|
"ok": true,
|
||||||
|
"detected_mode": "address_query",
|
||||||
|
"query_shape": "DOCUMENT_LIST",
|
||||||
|
"detected_intent": "documents_forming_balance",
|
||||||
|
"intent_aligned": true,
|
||||||
|
"selected_recipe": "address_documents_forming_balance_v1",
|
||||||
|
"extracted_filters": {
|
||||||
|
"sort": "period_desc",
|
||||||
|
"limit": 20,
|
||||||
|
"account": "62",
|
||||||
|
"as_of_date": "2020-07-31"
|
||||||
|
},
|
||||||
|
"account_scope_mode": "strict",
|
||||||
|
"account_scope_fallback_applied": false,
|
||||||
|
"anchor_type": "account",
|
||||||
|
"anchor_value_raw": "62",
|
||||||
|
"resolver_confidence": "high",
|
||||||
|
"mcp_call_status": "raw_rows_received_but_not_materialized",
|
||||||
|
"stage_interpretation": "Rows came from MCP but were lost before/at materialization.",
|
||||||
|
"rows_fetched": 20,
|
||||||
|
"raw_rows_received": 20,
|
||||||
|
"rows_after_account_scope": 0,
|
||||||
|
"rows_materialized": 0,
|
||||||
|
"rows_after_recipe_filter": 0,
|
||||||
|
"rows_matched": 0,
|
||||||
|
"raw_row_keys_sample": [
|
||||||
|
"Период",
|
||||||
|
"Регистратор",
|
||||||
|
"СчетДт",
|
||||||
|
"СчетКт",
|
||||||
|
"Сумма",
|
||||||
|
"Period",
|
||||||
|
"Registrator",
|
||||||
|
"AccountDt",
|
||||||
|
"AccountKt",
|
||||||
|
"Amount"
|
||||||
|
],
|
||||||
|
"materialization_drop_reason": "dropped_by_account_scope_filter",
|
||||||
|
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||||
|
"limited_reason_category": "empty_match",
|
||||||
|
"response_type": "LIMITED_WITH_REASON",
|
||||||
|
"reply_type": "partial_coverage",
|
||||||
|
"assistant_reply_preview_escaped": "В live-данных по текущему фильтру записи не найдены.\\nПричина: по выбранным фильтрам в live-выборке нет строк.\\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "D3",
|
||||||
|
"question": "reveal balance documents for account 60",
|
||||||
|
"expected_intent": "documents_forming_balance",
|
||||||
|
"http_status": 200,
|
||||||
|
"ok": true,
|
||||||
|
"detected_mode": "address_query",
|
||||||
|
"query_shape": "DOCUMENT_LIST",
|
||||||
|
"detected_intent": "documents_forming_balance",
|
||||||
|
"intent_aligned": true,
|
||||||
|
"selected_recipe": "address_documents_forming_balance_v1",
|
||||||
|
"extracted_filters": {
|
||||||
|
"sort": "period_desc",
|
||||||
|
"limit": 20,
|
||||||
|
"account": "60",
|
||||||
|
"as_of_date": "2026-03-29"
|
||||||
|
},
|
||||||
|
"account_scope_mode": "strict",
|
||||||
|
"account_scope_fallback_applied": false,
|
||||||
|
"anchor_type": "account",
|
||||||
|
"anchor_value_raw": "60",
|
||||||
|
"resolver_confidence": "high",
|
||||||
|
"mcp_call_status": "raw_rows_received_but_not_materialized",
|
||||||
|
"stage_interpretation": "Rows came from MCP but were lost before/at materialization.",
|
||||||
|
"rows_fetched": 20,
|
||||||
|
"raw_rows_received": 20,
|
||||||
|
"rows_after_account_scope": 0,
|
||||||
|
"rows_materialized": 0,
|
||||||
|
"rows_after_recipe_filter": 0,
|
||||||
|
"rows_matched": 0,
|
||||||
|
"raw_row_keys_sample": [
|
||||||
|
"Период",
|
||||||
|
"Регистратор",
|
||||||
|
"СчетДт",
|
||||||
|
"СчетКт",
|
||||||
|
"Сумма",
|
||||||
|
"Period",
|
||||||
|
"Registrator",
|
||||||
|
"AccountDt",
|
||||||
|
"AccountKt",
|
||||||
|
"Amount"
|
||||||
|
],
|
||||||
|
"materialization_drop_reason": "dropped_by_account_scope_filter",
|
||||||
|
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||||
|
"limited_reason_category": "empty_match",
|
||||||
|
"response_type": "LIMITED_WITH_REASON",
|
||||||
|
"reply_type": "partial_coverage",
|
||||||
|
"assistant_reply_preview_escaped": "В live-данных по текущему фильтру записи не найдены.\\nПричина: по выбранным фильтрам в live-выборке нет строк.\\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "D4",
|
||||||
|
"question": "show documents by counterparty Alfa from 2020-07-01 to 2020-07-31",
|
||||||
|
"expected_intent": "list_documents_by_counterparty",
|
||||||
|
"http_status": 200,
|
||||||
|
"ok": true,
|
||||||
|
"detected_mode": "address_query",
|
||||||
|
"query_shape": "DOCUMENT_LIST",
|
||||||
|
"detected_intent": "list_documents_by_counterparty",
|
||||||
|
"intent_aligned": true,
|
||||||
|
"selected_recipe": "address_documents_by_counterparty_v1",
|
||||||
|
"extracted_filters": {
|
||||||
|
"sort": "period_desc",
|
||||||
|
"limit": 20,
|
||||||
|
"counterparty": "Alfa",
|
||||||
|
"period_from": "2020-07-01",
|
||||||
|
"period_to": "2020-07-31"
|
||||||
|
},
|
||||||
|
"account_scope_mode": "preferred",
|
||||||
|
"account_scope_fallback_applied": true,
|
||||||
|
"anchor_type": "counterparty",
|
||||||
|
"anchor_value_raw": "Alfa",
|
||||||
|
"resolver_confidence": "medium",
|
||||||
|
"mcp_call_status": "materialized_but_not_matched",
|
||||||
|
"stage_interpretation": "Rows materialized but were filtered out by recipe/anchors.",
|
||||||
|
"rows_fetched": 20,
|
||||||
|
"raw_rows_received": 20,
|
||||||
|
"rows_after_account_scope": 20,
|
||||||
|
"rows_materialized": 20,
|
||||||
|
"rows_after_recipe_filter": 0,
|
||||||
|
"rows_matched": 0,
|
||||||
|
"raw_row_keys_sample": [
|
||||||
|
"Период",
|
||||||
|
"Регистратор",
|
||||||
|
"СчетДт",
|
||||||
|
"СчетКт",
|
||||||
|
"Сумма",
|
||||||
|
"Period",
|
||||||
|
"Registrator",
|
||||||
|
"AccountDt",
|
||||||
|
"AccountKt",
|
||||||
|
"Amount"
|
||||||
|
],
|
||||||
|
"materialization_drop_reason": "none",
|
||||||
|
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||||
|
"limited_reason_category": "empty_match",
|
||||||
|
"response_type": "LIMITED_WITH_REASON",
|
||||||
|
"reply_type": "partial_coverage",
|
||||||
|
"assistant_reply_preview_escaped": "В live-данных по текущему фильтру записи не найдены.\\nПричина: по выбранным фильтрам в live-выборке нет строк.\\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "D5",
|
||||||
|
"question": "show bank operations by counterparty Alfa from 2020-07-01 to 2020-07-31",
|
||||||
|
"expected_intent": "bank_operations_by_counterparty",
|
||||||
|
"http_status": 200,
|
||||||
|
"ok": true,
|
||||||
|
"detected_mode": "address_query",
|
||||||
|
"query_shape": "DOCUMENT_LIST",
|
||||||
|
"detected_intent": "bank_operations_by_counterparty",
|
||||||
|
"intent_aligned": true,
|
||||||
|
"selected_recipe": "address_bank_operations_by_counterparty_v1",
|
||||||
|
"extracted_filters": {
|
||||||
|
"sort": "period_desc",
|
||||||
|
"limit": 20,
|
||||||
|
"counterparty": "Alfa",
|
||||||
|
"period_from": "2020-07-01",
|
||||||
|
"period_to": "2020-07-31"
|
||||||
|
},
|
||||||
|
"account_scope_mode": "preferred",
|
||||||
|
"account_scope_fallback_applied": true,
|
||||||
|
"anchor_type": "counterparty",
|
||||||
|
"anchor_value_raw": "Alfa",
|
||||||
|
"resolver_confidence": "medium",
|
||||||
|
"mcp_call_status": "materialized_but_not_matched",
|
||||||
|
"stage_interpretation": "Rows materialized but were filtered out by recipe/anchors.",
|
||||||
|
"rows_fetched": 20,
|
||||||
|
"raw_rows_received": 20,
|
||||||
|
"rows_after_account_scope": 20,
|
||||||
|
"rows_materialized": 20,
|
||||||
|
"rows_after_recipe_filter": 0,
|
||||||
|
"rows_matched": 0,
|
||||||
|
"raw_row_keys_sample": [
|
||||||
|
"Период",
|
||||||
|
"Регистратор",
|
||||||
|
"СчетДт",
|
||||||
|
"СчетКт",
|
||||||
|
"Сумма",
|
||||||
|
"Period",
|
||||||
|
"Registrator",
|
||||||
|
"AccountDt",
|
||||||
|
"AccountKt",
|
||||||
|
"Amount"
|
||||||
|
],
|
||||||
|
"materialization_drop_reason": "none",
|
||||||
|
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||||
|
"limited_reason_category": "empty_match",
|
||||||
|
"response_type": "LIMITED_WITH_REASON",
|
||||||
|
"reply_type": "partial_coverage",
|
||||||
|
"assistant_reply_preview_escaped": "В live-данных по текущему фильтру записи не найдены.\\nПричина: по выбранным фильтрам в live-выборке нет строк.\\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
+27
@@ -0,0 +1,27 @@
|
|||||||
|
{
|
||||||
|
"baseline_run": "2026-03-29_Address_Query_Runtime_V1_M2_3A_Stage_Diagnostic_Materialization",
|
||||||
|
"current_run": "2026-03-29_Address_Query_Runtime_V1_M2_3B_AccountScope_Mode_Tuning",
|
||||||
|
"metrics": {
|
||||||
|
"mcp_status_raw_rows_received_but_not_materialized": {
|
||||||
|
"before": 1,
|
||||||
|
"after": 0.6
|
||||||
|
},
|
||||||
|
"mcp_status_materialized_but_not_matched": {
|
||||||
|
"before": 0,
|
||||||
|
"after": 0.4
|
||||||
|
},
|
||||||
|
"account_scope_fallback_applied_rate": {
|
||||||
|
"before": 0,
|
||||||
|
"after": 0.4
|
||||||
|
},
|
||||||
|
"false_factual_rate": {
|
||||||
|
"before": 0,
|
||||||
|
"after": 0
|
||||||
|
},
|
||||||
|
"factual_positive_rate": {
|
||||||
|
"before": 0,
|
||||||
|
"after": 0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"note": "M2.3b moves part of scenarios beyond pre-materialization loss without introducing false factual."
|
||||||
|
}
|
||||||
+26
@@ -0,0 +1,26 @@
|
|||||||
|
llm_normalizer/backend/src/types/addressQuery.ts
|
||||||
|
llm_normalizer/backend/src/types/assistant.ts
|
||||||
|
llm_normalizer/backend/src/services/addressRecipeCatalog.ts
|
||||||
|
llm_normalizer/backend/src/services/addressQueryService.ts
|
||||||
|
llm_normalizer/backend/src/services/assistantService.ts
|
||||||
|
llm_normalizer/backend/tests/addressQueryRuntimeM23.test.ts
|
||||||
|
docs/ADDRESS/address_query/address_runtime_contracts.md
|
||||||
|
docs/ADDRESS/address_query/query_recipes_v1.md
|
||||||
|
docs/ADDRESS/address_query/runtime_readiness_matrix_v1.md
|
||||||
|
docs/ADDRESS/address_query/address_scenario_matrix.md
|
||||||
|
docs/ADDRESS/address_query/README.md
|
||||||
|
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3B_AccountScope_Mode_Tuning/README.md
|
||||||
|
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3B_AccountScope_Mode_Tuning/run_summary.json
|
||||||
|
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3B_AccountScope_Mode_Tuning/before_after_metrics.json
|
||||||
|
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3B_AccountScope_Mode_Tuning/smoke_checks.md
|
||||||
|
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3B_AccountScope_Mode_Tuning/stage_diagnostic_report.md
|
||||||
|
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3B_AccountScope_Mode_Tuning/stage_diagnostic_matrix.md
|
||||||
|
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3B_AccountScope_Mode_Tuning/assistant_window_stage_diagnostic_results.json
|
||||||
|
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3B_AccountScope_Mode_Tuning/chat_export_stage_diagnostic.md
|
||||||
|
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3B_AccountScope_Mode_Tuning/live_call_inventory_address.json
|
||||||
|
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3B_AccountScope_Mode_Tuning/debug_payloads/D1.json
|
||||||
|
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3B_AccountScope_Mode_Tuning/debug_payloads/D2.json
|
||||||
|
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3B_AccountScope_Mode_Tuning/debug_payloads/D3.json
|
||||||
|
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3B_AccountScope_Mode_Tuning/debug_payloads/D4.json
|
||||||
|
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3B_AccountScope_Mode_Tuning/debug_payloads/D5.json
|
||||||
|
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3B_AccountScope_Mode_Tuning/changed_files.txt
|
||||||
+37
@@ -0,0 +1,37 @@
|
|||||||
|
# Chat Export (M2.3b)
|
||||||
|
|
||||||
|
## D1
|
||||||
|
- Q: show account balance 60 today
|
||||||
|
- intent: account_balance_snapshot
|
||||||
|
- status: raw_rows_received_but_not_materialized
|
||||||
|
- response_type: LIMITED_WITH_REASON
|
||||||
|
- reply: В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.
|
||||||
|
|
||||||
|
## D2
|
||||||
|
- Q: which documents form balance for account 62 as of 2020-07-31
|
||||||
|
- intent: documents_forming_balance
|
||||||
|
- status: raw_rows_received_but_not_materialized
|
||||||
|
- response_type: LIMITED_WITH_REASON
|
||||||
|
- reply: В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.
|
||||||
|
|
||||||
|
## D3
|
||||||
|
- Q: reveal balance documents for account 60
|
||||||
|
- intent: documents_forming_balance
|
||||||
|
- status: raw_rows_received_but_not_materialized
|
||||||
|
- response_type: LIMITED_WITH_REASON
|
||||||
|
- reply: В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.
|
||||||
|
|
||||||
|
## D4
|
||||||
|
- Q: show documents by counterparty Alfa from 2020-07-01 to 2020-07-31
|
||||||
|
- intent: list_documents_by_counterparty
|
||||||
|
- status: materialized_but_not_matched
|
||||||
|
- response_type: LIMITED_WITH_REASON
|
||||||
|
- reply: В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.
|
||||||
|
|
||||||
|
## D5
|
||||||
|
- Q: show bank operations by counterparty Alfa from 2020-07-01 to 2020-07-31
|
||||||
|
- intent: bank_operations_by_counterparty
|
||||||
|
- status: materialized_but_not_matched
|
||||||
|
- response_type: LIMITED_WITH_REASON
|
||||||
|
- reply: В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.
|
||||||
|
|
||||||
+60
@@ -0,0 +1,60 @@
|
|||||||
|
{
|
||||||
|
"question": "show account balance 60 today",
|
||||||
|
"response_type": "LIMITED_WITH_REASON",
|
||||||
|
"reply_type": "partial_coverage",
|
||||||
|
"debug": {
|
||||||
|
"detected_mode": "address_query",
|
||||||
|
"detected_mode_confidence": "high",
|
||||||
|
"query_shape": "AGGREGATE_LOOKUP",
|
||||||
|
"query_shape_confidence": "high",
|
||||||
|
"detected_intent": "account_balance_snapshot",
|
||||||
|
"detected_intent_confidence": "high",
|
||||||
|
"extracted_filters": {
|
||||||
|
"sort": "period_desc",
|
||||||
|
"limit": 20,
|
||||||
|
"account": "60",
|
||||||
|
"as_of_date": "2026-03-29"
|
||||||
|
},
|
||||||
|
"missing_required_filters": [],
|
||||||
|
"selected_recipe": "address_movements_account_snapshot_v1",
|
||||||
|
"account_scope_mode": "strict",
|
||||||
|
"account_scope_fallback_applied": false,
|
||||||
|
"anchor_type": "account",
|
||||||
|
"anchor_value_raw": "60",
|
||||||
|
"anchor_value_resolved": "60",
|
||||||
|
"resolver_confidence": "high",
|
||||||
|
"ambiguity_count": 0,
|
||||||
|
"mcp_call_status": "raw_rows_received_but_not_materialized",
|
||||||
|
"rows_fetched": 20,
|
||||||
|
"raw_rows_received": 20,
|
||||||
|
"rows_after_account_scope": 0,
|
||||||
|
"rows_after_recipe_filter": 0,
|
||||||
|
"rows_materialized": 0,
|
||||||
|
"rows_matched": 0,
|
||||||
|
"raw_row_keys_sample": [
|
||||||
|
"Период",
|
||||||
|
"Регистратор",
|
||||||
|
"СчетДт",
|
||||||
|
"СчетКт",
|
||||||
|
"Сумма",
|
||||||
|
"Period",
|
||||||
|
"Registrator",
|
||||||
|
"AccountDt",
|
||||||
|
"AccountKt",
|
||||||
|
"Amount"
|
||||||
|
],
|
||||||
|
"materialization_drop_reason": "dropped_by_account_scope_filter",
|
||||||
|
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||||
|
"limited_reason_category": "empty_match",
|
||||||
|
"response_type": "LIMITED_WITH_REASON",
|
||||||
|
"limitations": [
|
||||||
|
"no_rows_after_recipe_and_scope_filter"
|
||||||
|
],
|
||||||
|
"reasons": [
|
||||||
|
"address_action_detected",
|
||||||
|
"address_entity_detected",
|
||||||
|
"aggregate_signal_detected",
|
||||||
|
"account_balance_signal_detected"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
+60
@@ -0,0 +1,60 @@
|
|||||||
|
{
|
||||||
|
"question": "which documents form balance for account 62 as of 2020-07-31",
|
||||||
|
"response_type": "LIMITED_WITH_REASON",
|
||||||
|
"reply_type": "partial_coverage",
|
||||||
|
"debug": {
|
||||||
|
"detected_mode": "address_query",
|
||||||
|
"detected_mode_confidence": "high",
|
||||||
|
"query_shape": "DOCUMENT_LIST",
|
||||||
|
"query_shape_confidence": "medium",
|
||||||
|
"detected_intent": "documents_forming_balance",
|
||||||
|
"detected_intent_confidence": "high",
|
||||||
|
"extracted_filters": {
|
||||||
|
"sort": "period_desc",
|
||||||
|
"limit": 20,
|
||||||
|
"account": "62",
|
||||||
|
"as_of_date": "2020-07-31"
|
||||||
|
},
|
||||||
|
"missing_required_filters": [],
|
||||||
|
"selected_recipe": "address_documents_forming_balance_v1",
|
||||||
|
"account_scope_mode": "strict",
|
||||||
|
"account_scope_fallback_applied": false,
|
||||||
|
"anchor_type": "account",
|
||||||
|
"anchor_value_raw": "62",
|
||||||
|
"anchor_value_resolved": "62",
|
||||||
|
"resolver_confidence": "high",
|
||||||
|
"ambiguity_count": 0,
|
||||||
|
"mcp_call_status": "raw_rows_received_but_not_materialized",
|
||||||
|
"rows_fetched": 20,
|
||||||
|
"raw_rows_received": 20,
|
||||||
|
"rows_after_account_scope": 0,
|
||||||
|
"rows_after_recipe_filter": 0,
|
||||||
|
"rows_materialized": 0,
|
||||||
|
"rows_matched": 0,
|
||||||
|
"raw_row_keys_sample": [
|
||||||
|
"Период",
|
||||||
|
"Регистратор",
|
||||||
|
"СчетДт",
|
||||||
|
"СчетКт",
|
||||||
|
"Сумма",
|
||||||
|
"Period",
|
||||||
|
"Registrator",
|
||||||
|
"AccountDt",
|
||||||
|
"AccountKt",
|
||||||
|
"Amount"
|
||||||
|
],
|
||||||
|
"materialization_drop_reason": "dropped_by_account_scope_filter",
|
||||||
|
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||||
|
"limited_reason_category": "empty_match",
|
||||||
|
"response_type": "LIMITED_WITH_REASON",
|
||||||
|
"limitations": [
|
||||||
|
"no_rows_after_recipe_and_scope_filter"
|
||||||
|
],
|
||||||
|
"reasons": [
|
||||||
|
"address_action_detected",
|
||||||
|
"address_entity_detected",
|
||||||
|
"document_list_signal_detected",
|
||||||
|
"documents_forming_balance_signal_detected"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
+60
@@ -0,0 +1,60 @@
|
|||||||
|
{
|
||||||
|
"question": "reveal balance documents for account 60",
|
||||||
|
"response_type": "LIMITED_WITH_REASON",
|
||||||
|
"reply_type": "partial_coverage",
|
||||||
|
"debug": {
|
||||||
|
"detected_mode": "address_query",
|
||||||
|
"detected_mode_confidence": "high",
|
||||||
|
"query_shape": "DOCUMENT_LIST",
|
||||||
|
"query_shape_confidence": "medium",
|
||||||
|
"detected_intent": "documents_forming_balance",
|
||||||
|
"detected_intent_confidence": "high",
|
||||||
|
"extracted_filters": {
|
||||||
|
"sort": "period_desc",
|
||||||
|
"limit": 20,
|
||||||
|
"account": "60",
|
||||||
|
"as_of_date": "2026-03-29"
|
||||||
|
},
|
||||||
|
"missing_required_filters": [],
|
||||||
|
"selected_recipe": "address_documents_forming_balance_v1",
|
||||||
|
"account_scope_mode": "strict",
|
||||||
|
"account_scope_fallback_applied": false,
|
||||||
|
"anchor_type": "account",
|
||||||
|
"anchor_value_raw": "60",
|
||||||
|
"anchor_value_resolved": "60",
|
||||||
|
"resolver_confidence": "high",
|
||||||
|
"ambiguity_count": 0,
|
||||||
|
"mcp_call_status": "raw_rows_received_but_not_materialized",
|
||||||
|
"rows_fetched": 20,
|
||||||
|
"raw_rows_received": 20,
|
||||||
|
"rows_after_account_scope": 0,
|
||||||
|
"rows_after_recipe_filter": 0,
|
||||||
|
"rows_materialized": 0,
|
||||||
|
"rows_matched": 0,
|
||||||
|
"raw_row_keys_sample": [
|
||||||
|
"Период",
|
||||||
|
"Регистратор",
|
||||||
|
"СчетДт",
|
||||||
|
"СчетКт",
|
||||||
|
"Сумма",
|
||||||
|
"Period",
|
||||||
|
"Registrator",
|
||||||
|
"AccountDt",
|
||||||
|
"AccountKt",
|
||||||
|
"Amount"
|
||||||
|
],
|
||||||
|
"materialization_drop_reason": "dropped_by_account_scope_filter",
|
||||||
|
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||||
|
"limited_reason_category": "empty_match",
|
||||||
|
"response_type": "LIMITED_WITH_REASON",
|
||||||
|
"limitations": [
|
||||||
|
"no_rows_after_recipe_and_scope_filter"
|
||||||
|
],
|
||||||
|
"reasons": [
|
||||||
|
"address_action_detected",
|
||||||
|
"address_entity_detected",
|
||||||
|
"document_list_signal_detected",
|
||||||
|
"documents_forming_balance_signal_detected"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
+61
@@ -0,0 +1,61 @@
|
|||||||
|
{
|
||||||
|
"question": "show documents by counterparty Alfa from 2020-07-01 to 2020-07-31",
|
||||||
|
"response_type": "LIMITED_WITH_REASON",
|
||||||
|
"reply_type": "partial_coverage",
|
||||||
|
"debug": {
|
||||||
|
"detected_mode": "address_query",
|
||||||
|
"detected_mode_confidence": "high",
|
||||||
|
"query_shape": "DOCUMENT_LIST",
|
||||||
|
"query_shape_confidence": "medium",
|
||||||
|
"detected_intent": "list_documents_by_counterparty",
|
||||||
|
"detected_intent_confidence": "medium",
|
||||||
|
"extracted_filters": {
|
||||||
|
"sort": "period_desc",
|
||||||
|
"limit": 20,
|
||||||
|
"counterparty": "Alfa",
|
||||||
|
"period_from": "2020-07-01",
|
||||||
|
"period_to": "2020-07-31"
|
||||||
|
},
|
||||||
|
"missing_required_filters": [],
|
||||||
|
"selected_recipe": "address_documents_by_counterparty_v1",
|
||||||
|
"account_scope_mode": "preferred",
|
||||||
|
"account_scope_fallback_applied": true,
|
||||||
|
"anchor_type": "counterparty",
|
||||||
|
"anchor_value_raw": "Alfa",
|
||||||
|
"anchor_value_resolved": "Alfa",
|
||||||
|
"resolver_confidence": "medium",
|
||||||
|
"ambiguity_count": 0,
|
||||||
|
"mcp_call_status": "materialized_but_not_matched",
|
||||||
|
"rows_fetched": 20,
|
||||||
|
"raw_rows_received": 20,
|
||||||
|
"rows_after_account_scope": 20,
|
||||||
|
"rows_after_recipe_filter": 0,
|
||||||
|
"rows_materialized": 20,
|
||||||
|
"rows_matched": 0,
|
||||||
|
"raw_row_keys_sample": [
|
||||||
|
"Период",
|
||||||
|
"Регистратор",
|
||||||
|
"СчетДт",
|
||||||
|
"СчетКт",
|
||||||
|
"Сумма",
|
||||||
|
"Period",
|
||||||
|
"Registrator",
|
||||||
|
"AccountDt",
|
||||||
|
"AccountKt",
|
||||||
|
"Amount"
|
||||||
|
],
|
||||||
|
"materialization_drop_reason": "none",
|
||||||
|
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||||
|
"limited_reason_category": "empty_match",
|
||||||
|
"response_type": "LIMITED_WITH_REASON",
|
||||||
|
"limitations": [
|
||||||
|
"no_rows_after_recipe_and_scope_filter"
|
||||||
|
],
|
||||||
|
"reasons": [
|
||||||
|
"address_action_detected",
|
||||||
|
"address_entity_detected",
|
||||||
|
"document_list_signal_detected",
|
||||||
|
"documents_by_counterparty_signal_detected"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
+61
@@ -0,0 +1,61 @@
|
|||||||
|
{
|
||||||
|
"question": "show bank operations by counterparty Alfa from 2020-07-01 to 2020-07-31",
|
||||||
|
"response_type": "LIMITED_WITH_REASON",
|
||||||
|
"reply_type": "partial_coverage",
|
||||||
|
"debug": {
|
||||||
|
"detected_mode": "address_query",
|
||||||
|
"detected_mode_confidence": "high",
|
||||||
|
"query_shape": "DOCUMENT_LIST",
|
||||||
|
"query_shape_confidence": "medium",
|
||||||
|
"detected_intent": "bank_operations_by_counterparty",
|
||||||
|
"detected_intent_confidence": "medium",
|
||||||
|
"extracted_filters": {
|
||||||
|
"sort": "period_desc",
|
||||||
|
"limit": 20,
|
||||||
|
"counterparty": "Alfa",
|
||||||
|
"period_from": "2020-07-01",
|
||||||
|
"period_to": "2020-07-31"
|
||||||
|
},
|
||||||
|
"missing_required_filters": [],
|
||||||
|
"selected_recipe": "address_bank_operations_by_counterparty_v1",
|
||||||
|
"account_scope_mode": "preferred",
|
||||||
|
"account_scope_fallback_applied": true,
|
||||||
|
"anchor_type": "counterparty",
|
||||||
|
"anchor_value_raw": "Alfa",
|
||||||
|
"anchor_value_resolved": "Alfa",
|
||||||
|
"resolver_confidence": "medium",
|
||||||
|
"ambiguity_count": 0,
|
||||||
|
"mcp_call_status": "materialized_but_not_matched",
|
||||||
|
"rows_fetched": 20,
|
||||||
|
"raw_rows_received": 20,
|
||||||
|
"rows_after_account_scope": 20,
|
||||||
|
"rows_after_recipe_filter": 0,
|
||||||
|
"rows_materialized": 20,
|
||||||
|
"rows_matched": 0,
|
||||||
|
"raw_row_keys_sample": [
|
||||||
|
"Период",
|
||||||
|
"Регистратор",
|
||||||
|
"СчетДт",
|
||||||
|
"СчетКт",
|
||||||
|
"Сумма",
|
||||||
|
"Period",
|
||||||
|
"Registrator",
|
||||||
|
"AccountDt",
|
||||||
|
"AccountKt",
|
||||||
|
"Amount"
|
||||||
|
],
|
||||||
|
"materialization_drop_reason": "none",
|
||||||
|
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||||
|
"limited_reason_category": "empty_match",
|
||||||
|
"response_type": "LIMITED_WITH_REASON",
|
||||||
|
"limitations": [
|
||||||
|
"no_rows_after_recipe_and_scope_filter"
|
||||||
|
],
|
||||||
|
"reasons": [
|
||||||
|
"address_action_detected",
|
||||||
|
"address_entity_detected",
|
||||||
|
"document_list_signal_detected",
|
||||||
|
"bank_ops_by_counterparty_signal_detected"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
+74
@@ -0,0 +1,74 @@
|
|||||||
|
{
|
||||||
|
"cases": [
|
||||||
|
{
|
||||||
|
"case_id": "D1",
|
||||||
|
"selected_recipe": "address_movements_account_snapshot_v1",
|
||||||
|
"mcp_call_status": "raw_rows_received_but_not_materialized",
|
||||||
|
"rows_fetched": 20,
|
||||||
|
"raw_rows_received": 20,
|
||||||
|
"rows_after_account_scope": 0,
|
||||||
|
"rows_materialized": 0,
|
||||||
|
"rows_after_recipe_filter": 0,
|
||||||
|
"rows_matched": 0,
|
||||||
|
"account_scope_mode": "strict",
|
||||||
|
"account_scope_fallback_applied": false,
|
||||||
|
"materialization_drop_reason": "dropped_by_account_scope_filter"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"case_id": "D2",
|
||||||
|
"selected_recipe": "address_documents_forming_balance_v1",
|
||||||
|
"mcp_call_status": "raw_rows_received_but_not_materialized",
|
||||||
|
"rows_fetched": 20,
|
||||||
|
"raw_rows_received": 20,
|
||||||
|
"rows_after_account_scope": 0,
|
||||||
|
"rows_materialized": 0,
|
||||||
|
"rows_after_recipe_filter": 0,
|
||||||
|
"rows_matched": 0,
|
||||||
|
"account_scope_mode": "strict",
|
||||||
|
"account_scope_fallback_applied": false,
|
||||||
|
"materialization_drop_reason": "dropped_by_account_scope_filter"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"case_id": "D3",
|
||||||
|
"selected_recipe": "address_documents_forming_balance_v1",
|
||||||
|
"mcp_call_status": "raw_rows_received_but_not_materialized",
|
||||||
|
"rows_fetched": 20,
|
||||||
|
"raw_rows_received": 20,
|
||||||
|
"rows_after_account_scope": 0,
|
||||||
|
"rows_materialized": 0,
|
||||||
|
"rows_after_recipe_filter": 0,
|
||||||
|
"rows_matched": 0,
|
||||||
|
"account_scope_mode": "strict",
|
||||||
|
"account_scope_fallback_applied": false,
|
||||||
|
"materialization_drop_reason": "dropped_by_account_scope_filter"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"case_id": "D4",
|
||||||
|
"selected_recipe": "address_documents_by_counterparty_v1",
|
||||||
|
"mcp_call_status": "materialized_but_not_matched",
|
||||||
|
"rows_fetched": 20,
|
||||||
|
"raw_rows_received": 20,
|
||||||
|
"rows_after_account_scope": 20,
|
||||||
|
"rows_materialized": 20,
|
||||||
|
"rows_after_recipe_filter": 0,
|
||||||
|
"rows_matched": 0,
|
||||||
|
"account_scope_mode": "preferred",
|
||||||
|
"account_scope_fallback_applied": true,
|
||||||
|
"materialization_drop_reason": "none"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"case_id": "D5",
|
||||||
|
"selected_recipe": "address_bank_operations_by_counterparty_v1",
|
||||||
|
"mcp_call_status": "materialized_but_not_matched",
|
||||||
|
"rows_fetched": 20,
|
||||||
|
"raw_rows_received": 20,
|
||||||
|
"rows_after_account_scope": 20,
|
||||||
|
"rows_materialized": 20,
|
||||||
|
"rows_after_recipe_filter": 0,
|
||||||
|
"rows_matched": 0,
|
||||||
|
"account_scope_mode": "preferred",
|
||||||
|
"account_scope_fallback_applied": true,
|
||||||
|
"materialization_drop_reason": "none"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
+47
@@ -0,0 +1,47 @@
|
|||||||
|
{
|
||||||
|
"run_id": "2026-03-29_Address_Query_Runtime_V1_M2_3B_AccountScope_Mode_Tuning",
|
||||||
|
"date": "2026-03-29",
|
||||||
|
"stage": "address_query_runtime_v1",
|
||||||
|
"scope": "m2_3b_account_scope_mode_tuning_after_stage_diagnostic",
|
||||||
|
"build_status": "PASSED",
|
||||||
|
"tests_status": "PASSED",
|
||||||
|
"diagnostic_run_status": "COMPLETED",
|
||||||
|
"implemented": {
|
||||||
|
"account_scope_mode_by_recipe": true,
|
||||||
|
"strict_mode_for_account_intents": true,
|
||||||
|
"preferred_mode_with_fallback_for_party_intents": true,
|
||||||
|
"account_filter_moved_to_normalized_stage": true,
|
||||||
|
"debug_scope_mode_and_fallback": true
|
||||||
|
},
|
||||||
|
"diagnostic_metrics": {
|
||||||
|
"cases_total": 5,
|
||||||
|
"address_mode_hit_rate": 1,
|
||||||
|
"intent_alignment_rate": 1,
|
||||||
|
"supported_recipe_selection_rate": 1,
|
||||||
|
"factual_positive_rate": 0,
|
||||||
|
"limited_mode_rate": 1,
|
||||||
|
"false_factual_rate": 0
|
||||||
|
},
|
||||||
|
"stage_status_distribution": [
|
||||||
|
{
|
||||||
|
"status": "raw_rows_received_but_not_materialized",
|
||||||
|
"count": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"status": "materialized_but_not_matched",
|
||||||
|
"count": 2
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"drop_reason_distribution": [
|
||||||
|
{
|
||||||
|
"reason": "dropped_by_account_scope_filter",
|
||||||
|
"count": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"reason": "none",
|
||||||
|
"count": 2
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"primary_bottleneck": "strict account intents still lose rows at account-scope stage; preferred intents now reach materialized_but_not_matched stage",
|
||||||
|
"next_priority": "run focused resolver/anchor tuning and curated positive live suite for non-empty matches"
|
||||||
|
}
|
||||||
+5
@@ -0,0 +1,5 @@
|
|||||||
|
# Smoke Checks (M2.3b)
|
||||||
|
|
||||||
|
1. `npm.cmd run build` - PASS
|
||||||
|
2. `npx.cmd vitest run tests/addressQueryRuntimeM23.test.ts` - PASS
|
||||||
|
3. Stage diagnostic replay D1-D5 - COMPLETED (5 cases)
|
||||||
+9
@@ -0,0 +1,9 @@
|
|||||||
|
# Stage Diagnostic Matrix (M2.3b)
|
||||||
|
|
||||||
|
| case | intent | account_scope_mode | fallback | mcp_call_status | rows_after_account_scope | rows_materialized | rows_after_recipe_filter | rows_matched |
|
||||||
|
|---|---|---|---:|---|---:|---:|---:|---:|
|
||||||
|
| D1 | account_balance_snapshot | strict | no | raw_rows_received_but_not_materialized | 0 | 0 | 0 | 0 |
|
||||||
|
| D2 | documents_forming_balance | strict | no | raw_rows_received_but_not_materialized | 0 | 0 | 0 | 0 |
|
||||||
|
| D3 | documents_forming_balance | strict | no | raw_rows_received_but_not_materialized | 0 | 0 | 0 | 0 |
|
||||||
|
| D4 | list_documents_by_counterparty | preferred | yes | materialized_but_not_matched | 20 | 20 | 0 | 0 |
|
||||||
|
| D5 | bank_operations_by_counterparty | preferred | yes | materialized_but_not_matched | 20 | 20 | 0 | 0 |
|
||||||
+19
@@ -0,0 +1,19 @@
|
|||||||
|
# Stage Diagnostic Report (M2.3b)
|
||||||
|
|
||||||
|
- Date: 2026-03-29
|
||||||
|
- Goal: apply account-scope strategy by recipe (`strict` vs `preferred`) and re-run D1-D5.
|
||||||
|
|
||||||
|
## Findings
|
||||||
|
|
||||||
|
- D1-D3 (account intents) stay in `strict` mode and still fail at account-scope stage.
|
||||||
|
- D4-D5 (counterparty intents) use `preferred` mode with fallback and now reach `materialized_but_not_matched`.
|
||||||
|
- This confirms the bottleneck moved forward for non-account intents: now main loss is at anchor/recipe matching, not at pre-materialization scope cut.
|
||||||
|
|
||||||
|
## Decision
|
||||||
|
|
||||||
|
- Keep `strict` for explicit account intents (`account_balance_snapshot`, `documents_forming_balance`).
|
||||||
|
- Keep `preferred` for counterparty/contract-oriented intents to avoid blind early row loss.
|
||||||
|
|
||||||
|
## Next Step
|
||||||
|
|
||||||
|
- Launch focused resolver and filter tuning for counterparty anchors, then run curated positive live suite.
|
||||||
+30
@@ -0,0 +1,30 @@
|
|||||||
|
# Run README — Address Query Runtime V1 M2.3
|
||||||
|
|
||||||
|
Дата: 2026-03-29
|
||||||
|
Run ID: `2026-03-29_Address_Query_Runtime_V1_M2_3_DocumentsFormingBalance_DataAwareAcceptance`
|
||||||
|
|
||||||
|
## Цель инкремента
|
||||||
|
|
||||||
|
- синхронизировать docs и runtime policy: `runtime=data-agnostic`, `acceptance=data-aware`;
|
||||||
|
- добавить новый intent `documents_forming_balance`;
|
||||||
|
- добавить drilldown recipe `address_documents_forming_balance_v1`;
|
||||||
|
- расширить debug-контракт: resolver block + row-stage flow block;
|
||||||
|
- собрать отдельный M2.3 dry-run пакет для следующего live-positive прохода.
|
||||||
|
|
||||||
|
## Что проверено
|
||||||
|
|
||||||
|
- `npm.cmd run build` - PASS.
|
||||||
|
- `npx.cmd vitest run tests/addressQueryRuntimeM23.test.ts` - PASS (10/10).
|
||||||
|
- dry-run через `/api/assistant/message` на 8 вопросах - сохранен в `assistant_window_dry_run_results.json`.
|
||||||
|
|
||||||
|
## Ключевой вывод
|
||||||
|
|
||||||
|
Routing/intent/shape остаются стабильными, `documents_forming_balance` корректно маршрутизируется и получает recipe.
|
||||||
|
Новый debug-блок по anchor/resolver/row-stages присутствует в 100% кейсов.
|
||||||
|
|
||||||
|
При этом positive factual в этом пакете еще не получен (`factual_positive_rate = 0`), поэтому следующий обязательный шаг — отдельный data-aware exploratory pass по live для curated non-empty acceptance cases.
|
||||||
|
|
||||||
|
## Ограничение текущего пакета
|
||||||
|
|
||||||
|
- Это dry-run safety + instrumentation пакет.
|
||||||
|
- Data-aware positive acceptance в этом run только подготовлен структурно, но не закрыт по non-empty factual.
|
||||||
+261
@@ -0,0 +1,261 @@
|
|||||||
|
{
|
||||||
|
"generated_at": "2026-03-29T17:00:07.144Z",
|
||||||
|
"questions": [
|
||||||
|
{
|
||||||
|
"id": "Q1",
|
||||||
|
"question": "which documents form balance for account 62 as of 2020-07-31",
|
||||||
|
"expected_intent": "documents_forming_balance",
|
||||||
|
"http_status": 200,
|
||||||
|
"ok": true,
|
||||||
|
"detected_mode": "address_query",
|
||||||
|
"query_shape": "DOCUMENT_LIST",
|
||||||
|
"detected_intent": "documents_forming_balance",
|
||||||
|
"selected_recipe": "address_documents_forming_balance_v1",
|
||||||
|
"extracted_filters": {
|
||||||
|
"sort": "period_desc",
|
||||||
|
"limit": 20,
|
||||||
|
"account": "62",
|
||||||
|
"as_of_date": "2020-07-31"
|
||||||
|
},
|
||||||
|
"missing_required_filters": [],
|
||||||
|
"anchor_type": "account",
|
||||||
|
"anchor_value_raw": "62",
|
||||||
|
"resolver_confidence": "high",
|
||||||
|
"mcp_call_status": "empty",
|
||||||
|
"rows_fetched": 20,
|
||||||
|
"raw_rows_received": 20,
|
||||||
|
"rows_materialized": 0,
|
||||||
|
"rows_after_recipe_filter": 0,
|
||||||
|
"rows_matched": 0,
|
||||||
|
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||||
|
"limited_reason_category": "empty_match",
|
||||||
|
"response_type": "LIMITED_WITH_REASON",
|
||||||
|
"reply_type": "partial_coverage",
|
||||||
|
"assistant_reply_preview": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "Q2",
|
||||||
|
"question": "reveal balance documents for account 60",
|
||||||
|
"expected_intent": "documents_forming_balance",
|
||||||
|
"http_status": 200,
|
||||||
|
"ok": true,
|
||||||
|
"detected_mode": "address_query",
|
||||||
|
"query_shape": "DOCUMENT_LIST",
|
||||||
|
"detected_intent": "documents_forming_balance",
|
||||||
|
"selected_recipe": "address_documents_forming_balance_v1",
|
||||||
|
"extracted_filters": {
|
||||||
|
"sort": "period_desc",
|
||||||
|
"limit": 20,
|
||||||
|
"account": "60",
|
||||||
|
"as_of_date": "2026-03-29"
|
||||||
|
},
|
||||||
|
"missing_required_filters": [],
|
||||||
|
"anchor_type": "account",
|
||||||
|
"anchor_value_raw": "60",
|
||||||
|
"resolver_confidence": "high",
|
||||||
|
"mcp_call_status": "empty",
|
||||||
|
"rows_fetched": 20,
|
||||||
|
"raw_rows_received": 20,
|
||||||
|
"rows_materialized": 0,
|
||||||
|
"rows_after_recipe_filter": 0,
|
||||||
|
"rows_matched": 0,
|
||||||
|
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||||
|
"limited_reason_category": "empty_match",
|
||||||
|
"response_type": "LIMITED_WITH_REASON",
|
||||||
|
"reply_type": "partial_coverage",
|
||||||
|
"assistant_reply_preview": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "Q3",
|
||||||
|
"question": "show documents by counterparty Alfa from 2020-07-01 to 2020-07-31",
|
||||||
|
"expected_intent": "list_documents_by_counterparty",
|
||||||
|
"http_status": 200,
|
||||||
|
"ok": true,
|
||||||
|
"detected_mode": "address_query",
|
||||||
|
"query_shape": "DOCUMENT_LIST",
|
||||||
|
"detected_intent": "list_documents_by_counterparty",
|
||||||
|
"selected_recipe": "address_documents_by_counterparty_v1",
|
||||||
|
"extracted_filters": {
|
||||||
|
"sort": "period_desc",
|
||||||
|
"limit": 20,
|
||||||
|
"counterparty": "Alfa",
|
||||||
|
"period_from": "2020-07-01",
|
||||||
|
"period_to": "2020-07-31"
|
||||||
|
},
|
||||||
|
"missing_required_filters": [],
|
||||||
|
"anchor_type": "counterparty",
|
||||||
|
"anchor_value_raw": "Alfa",
|
||||||
|
"resolver_confidence": "medium",
|
||||||
|
"mcp_call_status": "empty",
|
||||||
|
"rows_fetched": 20,
|
||||||
|
"raw_rows_received": 20,
|
||||||
|
"rows_materialized": 0,
|
||||||
|
"rows_after_recipe_filter": 0,
|
||||||
|
"rows_matched": 0,
|
||||||
|
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||||
|
"limited_reason_category": "empty_match",
|
||||||
|
"response_type": "LIMITED_WITH_REASON",
|
||||||
|
"reply_type": "partial_coverage",
|
||||||
|
"assistant_reply_preview": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "Q4",
|
||||||
|
"question": "show bank operations by counterparty Alfa from 2020-07-01 to 2020-07-31",
|
||||||
|
"expected_intent": "bank_operations_by_counterparty",
|
||||||
|
"http_status": 200,
|
||||||
|
"ok": true,
|
||||||
|
"detected_mode": "address_query",
|
||||||
|
"query_shape": "DOCUMENT_LIST",
|
||||||
|
"detected_intent": "bank_operations_by_counterparty",
|
||||||
|
"selected_recipe": "address_bank_operations_by_counterparty_v1",
|
||||||
|
"extracted_filters": {
|
||||||
|
"sort": "period_desc",
|
||||||
|
"limit": 20,
|
||||||
|
"counterparty": "Alfa",
|
||||||
|
"period_from": "2020-07-01",
|
||||||
|
"period_to": "2020-07-31"
|
||||||
|
},
|
||||||
|
"missing_required_filters": [],
|
||||||
|
"anchor_type": "counterparty",
|
||||||
|
"anchor_value_raw": "Alfa",
|
||||||
|
"resolver_confidence": "medium",
|
||||||
|
"mcp_call_status": "empty",
|
||||||
|
"rows_fetched": 20,
|
||||||
|
"raw_rows_received": 20,
|
||||||
|
"rows_materialized": 0,
|
||||||
|
"rows_after_recipe_filter": 0,
|
||||||
|
"rows_matched": 0,
|
||||||
|
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||||
|
"limited_reason_category": "empty_match",
|
||||||
|
"response_type": "LIMITED_WITH_REASON",
|
||||||
|
"reply_type": "partial_coverage",
|
||||||
|
"assistant_reply_preview": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "Q5",
|
||||||
|
"question": "show account balance 60 today",
|
||||||
|
"expected_intent": "account_balance_snapshot",
|
||||||
|
"http_status": 200,
|
||||||
|
"ok": true,
|
||||||
|
"detected_mode": "address_query",
|
||||||
|
"query_shape": "AGGREGATE_LOOKUP",
|
||||||
|
"detected_intent": "account_balance_snapshot",
|
||||||
|
"selected_recipe": "address_movements_account_snapshot_v1",
|
||||||
|
"extracted_filters": {
|
||||||
|
"sort": "period_desc",
|
||||||
|
"limit": 20,
|
||||||
|
"account": "60",
|
||||||
|
"as_of_date": "2026-03-29"
|
||||||
|
},
|
||||||
|
"missing_required_filters": [],
|
||||||
|
"anchor_type": "account",
|
||||||
|
"anchor_value_raw": "60",
|
||||||
|
"resolver_confidence": "high",
|
||||||
|
"mcp_call_status": "empty",
|
||||||
|
"rows_fetched": 20,
|
||||||
|
"raw_rows_received": 20,
|
||||||
|
"rows_materialized": 0,
|
||||||
|
"rows_after_recipe_filter": 0,
|
||||||
|
"rows_matched": 0,
|
||||||
|
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||||
|
"limited_reason_category": "empty_match",
|
||||||
|
"response_type": "LIMITED_WITH_REASON",
|
||||||
|
"reply_type": "partial_coverage",
|
||||||
|
"assistant_reply_preview": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "Q6",
|
||||||
|
"question": "show open items by contract",
|
||||||
|
"expected_intent": "open_items_by_counterparty_or_contract",
|
||||||
|
"http_status": 200,
|
||||||
|
"ok": true,
|
||||||
|
"detected_mode": "address_query",
|
||||||
|
"query_shape": "OBJECT_LOOKUP",
|
||||||
|
"detected_intent": "open_items_by_counterparty_or_contract",
|
||||||
|
"selected_recipe": null,
|
||||||
|
"extracted_filters": {
|
||||||
|
"sort": "period_desc",
|
||||||
|
"limit": 20
|
||||||
|
},
|
||||||
|
"missing_required_filters": [
|
||||||
|
"counterparty_or_contract"
|
||||||
|
],
|
||||||
|
"anchor_type": "unknown",
|
||||||
|
"anchor_value_raw": null,
|
||||||
|
"resolver_confidence": "low",
|
||||||
|
"mcp_call_status": "skipped",
|
||||||
|
"rows_fetched": 0,
|
||||||
|
"raw_rows_received": 0,
|
||||||
|
"rows_materialized": 0,
|
||||||
|
"rows_after_recipe_filter": 0,
|
||||||
|
"rows_matched": 0,
|
||||||
|
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||||
|
"limited_reason_category": "missing_anchor",
|
||||||
|
"response_type": "LIMITED_WITH_REASON",
|
||||||
|
"reply_type": "partial_coverage",
|
||||||
|
"assistant_reply_preview": "Для точного адресного поиска не хватает обязательного якоря.\nПричина: для open_items нужен якорь контрагента или договора.\nЧто нужно уточнить: укажите контрагента или номер/название договора."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "Q7",
|
||||||
|
"question": "show documents by contract 15/24",
|
||||||
|
"expected_intent": "unknown",
|
||||||
|
"http_status": 200,
|
||||||
|
"ok": true,
|
||||||
|
"detected_mode": "address_query",
|
||||||
|
"query_shape": "DOCUMENT_LIST",
|
||||||
|
"detected_intent": "unknown",
|
||||||
|
"selected_recipe": null,
|
||||||
|
"extracted_filters": {
|
||||||
|
"sort": "period_desc",
|
||||||
|
"limit": 20,
|
||||||
|
"contract": "15/24"
|
||||||
|
},
|
||||||
|
"missing_required_filters": [],
|
||||||
|
"anchor_type": "contract",
|
||||||
|
"anchor_value_raw": "15/24",
|
||||||
|
"resolver_confidence": "medium",
|
||||||
|
"mcp_call_status": "skipped",
|
||||||
|
"rows_fetched": 0,
|
||||||
|
"raw_rows_received": 0,
|
||||||
|
"rows_materialized": 0,
|
||||||
|
"rows_after_recipe_filter": 0,
|
||||||
|
"rows_matched": 0,
|
||||||
|
"runtime_readiness": "DEEP_ONLY",
|
||||||
|
"limited_reason_category": "unsupported",
|
||||||
|
"response_type": "LIMITED_WITH_REASON",
|
||||||
|
"reply_type": "partial_coverage",
|
||||||
|
"assistant_reply_preview": "Этот запрос не подходит под address_query V1.\nПричина: intent пока не поддержан в address V1.\nЧто нужно уточнить: переформулируйте вопрос как адресный lookup по счету/контрагенту/договору."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "Q8",
|
||||||
|
"question": "who owes us and who we owe today",
|
||||||
|
"expected_intent": "list_receivables_counterparties",
|
||||||
|
"http_status": 200,
|
||||||
|
"ok": true,
|
||||||
|
"detected_mode": "address_query",
|
||||||
|
"query_shape": "COMPOUND_FACTUAL_QUERY",
|
||||||
|
"detected_intent": "list_receivables_counterparties",
|
||||||
|
"selected_recipe": "address_movements_receivables_v1",
|
||||||
|
"extracted_filters": {
|
||||||
|
"sort": "period_desc",
|
||||||
|
"limit": 20,
|
||||||
|
"as_of_date": "2026-03-29"
|
||||||
|
},
|
||||||
|
"missing_required_filters": [],
|
||||||
|
"anchor_type": "unknown",
|
||||||
|
"anchor_value_raw": null,
|
||||||
|
"resolver_confidence": "low",
|
||||||
|
"mcp_call_status": "empty",
|
||||||
|
"rows_fetched": 20,
|
||||||
|
"raw_rows_received": 20,
|
||||||
|
"rows_materialized": 0,
|
||||||
|
"rows_after_recipe_filter": 0,
|
||||||
|
"rows_matched": 0,
|
||||||
|
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||||
|
"limited_reason_category": "empty_match",
|
||||||
|
"response_type": "LIMITED_WITH_REASON",
|
||||||
|
"reply_type": "partial_coverage",
|
||||||
|
"assistant_reply_preview": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
+30
@@ -0,0 +1,30 @@
|
|||||||
|
{
|
||||||
|
"baseline_run": "2026-03-29_Address_Query_Runtime_V1_M2_2_Documents_BankOps_By_Counterparty",
|
||||||
|
"current_run": "2026-03-29_Address_Query_Runtime_V1_M2_3_DocumentsFormingBalance_DataAwareAcceptance",
|
||||||
|
"changes": {
|
||||||
|
"intent_documents_forming_balance": {
|
||||||
|
"before": false,
|
||||||
|
"after": true
|
||||||
|
},
|
||||||
|
"recipe_documents_forming_balance_v1": {
|
||||||
|
"before": false,
|
||||||
|
"after": true
|
||||||
|
},
|
||||||
|
"debug_anchor_resolution_block": {
|
||||||
|
"before": false,
|
||||||
|
"after": true
|
||||||
|
},
|
||||||
|
"debug_row_stage_flow_block": {
|
||||||
|
"before": false,
|
||||||
|
"after": true
|
||||||
|
},
|
||||||
|
"supported_recipe_selection_rate": {
|
||||||
|
"before": 0.6667,
|
||||||
|
"after": 0.75
|
||||||
|
},
|
||||||
|
"false_factual_rate": {
|
||||||
|
"before": 0.0,
|
||||||
|
"after": 0.0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+30
@@ -0,0 +1,30 @@
|
|||||||
|
llm_normalizer/backend/src/types/addressQuery.ts
|
||||||
|
llm_normalizer/backend/src/services/addressIntentResolver.ts
|
||||||
|
llm_normalizer/backend/src/services/addressFilterExtractor.ts
|
||||||
|
llm_normalizer/backend/src/services/addressRecipeCatalog.ts
|
||||||
|
llm_normalizer/backend/src/services/addressQueryService.ts
|
||||||
|
llm_normalizer/backend/src/services/assistantService.ts
|
||||||
|
llm_normalizer/backend/src/types/assistant.ts
|
||||||
|
llm_normalizer/backend/tests/addressQueryRuntimeM23.test.ts
|
||||||
|
docs/ADDRESS/address_query/address_runtime_contracts.md
|
||||||
|
docs/ADDRESS/address_query/runtime_readiness_matrix_v1.md
|
||||||
|
docs/ADDRESS/address_query/address_scenario_matrix.md
|
||||||
|
docs/ADDRESS/address_query/README.md
|
||||||
|
docs/ADDRESS/address_query/data_aware_positive_acceptance_suite_v1.md
|
||||||
|
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3_DocumentsFormingBalance_DataAwareAcceptance/README.md
|
||||||
|
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3_DocumentsFormingBalance_DataAwareAcceptance/run_summary.json
|
||||||
|
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3_DocumentsFormingBalance_DataAwareAcceptance/before_after_metrics.json
|
||||||
|
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3_DocumentsFormingBalance_DataAwareAcceptance/data_aware_acceptance_case_matrix.md
|
||||||
|
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3_DocumentsFormingBalance_DataAwareAcceptance/assistant_window_dry_run_results.json
|
||||||
|
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3_DocumentsFormingBalance_DataAwareAcceptance/chat_export_data_aware_live.md
|
||||||
|
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3_DocumentsFormingBalance_DataAwareAcceptance/live_call_inventory_address.json
|
||||||
|
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3_DocumentsFormingBalance_DataAwareAcceptance/smoke_checks.md
|
||||||
|
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3_DocumentsFormingBalance_DataAwareAcceptance/debug_payloads/Q1.json
|
||||||
|
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3_DocumentsFormingBalance_DataAwareAcceptance/debug_payloads/Q2.json
|
||||||
|
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3_DocumentsFormingBalance_DataAwareAcceptance/debug_payloads/Q3.json
|
||||||
|
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3_DocumentsFormingBalance_DataAwareAcceptance/debug_payloads/Q4.json
|
||||||
|
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3_DocumentsFormingBalance_DataAwareAcceptance/debug_payloads/Q5.json
|
||||||
|
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3_DocumentsFormingBalance_DataAwareAcceptance/debug_payloads/Q6.json
|
||||||
|
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3_DocumentsFormingBalance_DataAwareAcceptance/debug_payloads/Q7.json
|
||||||
|
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3_DocumentsFormingBalance_DataAwareAcceptance/debug_payloads/Q8.json
|
||||||
|
docs/ADDRESS/runs/2026-03-29_Address_Query_Runtime_V1_M2_3_DocumentsFormingBalance_DataAwareAcceptance/changed_files.txt
|
||||||
+68
@@ -0,0 +1,68 @@
|
|||||||
|
# Chat Export — Data-Aware Live (Dry-Run Proxy)
|
||||||
|
|
||||||
|
Date: 2026-03-29
|
||||||
|
|
||||||
|
## Q1
|
||||||
|
Question: which documents form balance for account 62 as of 2020-07-31
|
||||||
|
Detected intent: documents_forming_balance
|
||||||
|
Reply type: partial_coverage
|
||||||
|
Preview: В live-данных по текущему фильтру записи не найдены.
|
||||||
|
Причина: по выбранным фильтрам в live-выборке нет строк.
|
||||||
|
Что нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.
|
||||||
|
|
||||||
|
## Q2
|
||||||
|
Question: reveal balance documents for account 60
|
||||||
|
Detected intent: documents_forming_balance
|
||||||
|
Reply type: partial_coverage
|
||||||
|
Preview: В live-данных по текущему фильтру записи не найдены.
|
||||||
|
Причина: по выбранным фильтрам в live-выборке нет строк.
|
||||||
|
Что нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.
|
||||||
|
|
||||||
|
## Q3
|
||||||
|
Question: show documents by counterparty Alfa from 2020-07-01 to 2020-07-31
|
||||||
|
Detected intent: list_documents_by_counterparty
|
||||||
|
Reply type: partial_coverage
|
||||||
|
Preview: В live-данных по текущему фильтру записи не найдены.
|
||||||
|
Причина: по выбранным фильтрам в live-выборке нет строк.
|
||||||
|
Что нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.
|
||||||
|
|
||||||
|
## Q4
|
||||||
|
Question: show bank operations by counterparty Alfa from 2020-07-01 to 2020-07-31
|
||||||
|
Detected intent: bank_operations_by_counterparty
|
||||||
|
Reply type: partial_coverage
|
||||||
|
Preview: В live-данных по текущему фильтру записи не найдены.
|
||||||
|
Причина: по выбранным фильтрам в live-выборке нет строк.
|
||||||
|
Что нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.
|
||||||
|
|
||||||
|
## Q5
|
||||||
|
Question: show account balance 60 today
|
||||||
|
Detected intent: account_balance_snapshot
|
||||||
|
Reply type: partial_coverage
|
||||||
|
Preview: В live-данных по текущему фильтру записи не найдены.
|
||||||
|
Причина: по выбранным фильтрам в live-выборке нет строк.
|
||||||
|
Что нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.
|
||||||
|
|
||||||
|
## Q6
|
||||||
|
Question: show open items by contract
|
||||||
|
Detected intent: open_items_by_counterparty_or_contract
|
||||||
|
Reply type: partial_coverage
|
||||||
|
Preview: Для точного адресного поиска не хватает обязательного якоря.
|
||||||
|
Причина: для open_items нужен якорь контрагента или договора.
|
||||||
|
Что нужно уточнить: укажите контрагента или номер/название договора.
|
||||||
|
|
||||||
|
## Q7
|
||||||
|
Question: show documents by contract 15/24
|
||||||
|
Detected intent: unknown
|
||||||
|
Reply type: partial_coverage
|
||||||
|
Preview: Ртот запрос РЅРµ РїРѕРґС…РѕРґРёС‚ РїРѕРґ address_query V1.
|
||||||
|
Причина: intent пока не поддержан в address V1.
|
||||||
|
Что нужно уточнить: переформулируйте вопрос как адресный lookup по счету/контрагенту/договору.
|
||||||
|
|
||||||
|
## Q8
|
||||||
|
Question: who owes us and who we owe today
|
||||||
|
Detected intent: list_receivables_counterparties
|
||||||
|
Reply type: partial_coverage
|
||||||
|
Preview: В live-данных по текущему фильтру записи не найдены.
|
||||||
|
Причина: по выбранным фильтрам в live-выборке нет строк.
|
||||||
|
Что нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров.
|
||||||
|
|
||||||
+19
@@ -0,0 +1,19 @@
|
|||||||
|
# Data-Aware Acceptance Case Matrix (M2.3 Dry-Run)
|
||||||
|
|
||||||
|
Дата: 2026-03-29
|
||||||
|
|
||||||
|
| case_id | question | expected_intent | selected_recipe | expected_non_empty | actual_non_empty | result | notes |
|
||||||
|
|---|---|---|---|---|---|---|---|
|
||||||
|
| Q1 | which documents form balance for account 62 as of 2020-07-31 | documents_forming_balance | address_documents_forming_balance_v1 | TBD (positive candidate) | no | limited(empty_match) | intent+recipe path correct |
|
||||||
|
| Q2 | reveal balance documents for account 60 | documents_forming_balance | address_documents_forming_balance_v1 | TBD (positive candidate) | no | limited(empty_match) | as_of defaulted to today |
|
||||||
|
| Q3 | show documents by counterparty Alfa from 2020-07-01 to 2020-07-31 | list_documents_by_counterparty | address_documents_by_counterparty_v1 | TBD (positive candidate) | no | limited(empty_match) | counterparty anchor resolved |
|
||||||
|
| Q4 | show bank operations by counterparty Alfa from 2020-07-01 to 2020-07-31 | bank_operations_by_counterparty | address_bank_operations_by_counterparty_v1 | TBD (positive candidate) | no | limited(empty_match) | bank recipe path correct |
|
||||||
|
| Q5 | show account balance 60 today | account_balance_snapshot | address_movements_account_snapshot_v1 | TBD (positive candidate) | no | limited(empty_match) | aggregate lane stable |
|
||||||
|
| Q6 | show open items by contract | open_items_by_counterparty_or_contract | - | no | no | limited(missing_anchor) | expected safety behavior |
|
||||||
|
| Q7 | show documents by contract 15/24 | unknown | - | no | no | limited(unsupported) | expected until M2.4 |
|
||||||
|
| Q8 | who owes us and who we owe today | list_receivables_counterparties | address_movements_receivables_v1 | no (compound detect-only) | no | limited(empty_match) | decomposition still not implemented |
|
||||||
|
|
||||||
|
## Matrix note
|
||||||
|
|
||||||
|
Этот файл фиксирует dry-run safety/reliability состояние.
|
||||||
|
Для фактического `data_aware_positive_non_empty_rate` нужен отдельный exploratory live pass с подбором non-empty anchors.
|
||||||
+34
@@ -0,0 +1,34 @@
|
|||||||
|
{
|
||||||
|
"id": "Q1",
|
||||||
|
"question": "which documents form balance for account 62 as of 2020-07-31",
|
||||||
|
"expected_intent": "documents_forming_balance",
|
||||||
|
"http_status": 200,
|
||||||
|
"ok": true,
|
||||||
|
"detected_mode": "address_query",
|
||||||
|
"query_shape": "DOCUMENT_LIST",
|
||||||
|
"detected_intent": "documents_forming_balance",
|
||||||
|
"selected_recipe": "address_documents_forming_balance_v1",
|
||||||
|
"extracted_filters": {
|
||||||
|
"sort": "period_desc",
|
||||||
|
"limit": 20,
|
||||||
|
"account": "62",
|
||||||
|
"as_of_date": "2020-07-31"
|
||||||
|
},
|
||||||
|
"missing_required_filters": [
|
||||||
|
|
||||||
|
],
|
||||||
|
"anchor_type": "account",
|
||||||
|
"anchor_value_raw": "62",
|
||||||
|
"resolver_confidence": "high",
|
||||||
|
"mcp_call_status": "empty",
|
||||||
|
"rows_fetched": 20,
|
||||||
|
"raw_rows_received": 20,
|
||||||
|
"rows_materialized": 0,
|
||||||
|
"rows_after_recipe_filter": 0,
|
||||||
|
"rows_matched": 0,
|
||||||
|
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||||
|
"limited_reason_category": "empty_match",
|
||||||
|
"response_type": "LIMITED_WITH_REASON",
|
||||||
|
"reply_type": "partial_coverage",
|
||||||
|
"assistant_reply_preview": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
|
||||||
|
}
|
||||||
+34
@@ -0,0 +1,34 @@
|
|||||||
|
{
|
||||||
|
"id": "Q2",
|
||||||
|
"question": "reveal balance documents for account 60",
|
||||||
|
"expected_intent": "documents_forming_balance",
|
||||||
|
"http_status": 200,
|
||||||
|
"ok": true,
|
||||||
|
"detected_mode": "address_query",
|
||||||
|
"query_shape": "DOCUMENT_LIST",
|
||||||
|
"detected_intent": "documents_forming_balance",
|
||||||
|
"selected_recipe": "address_documents_forming_balance_v1",
|
||||||
|
"extracted_filters": {
|
||||||
|
"sort": "period_desc",
|
||||||
|
"limit": 20,
|
||||||
|
"account": "60",
|
||||||
|
"as_of_date": "2026-03-29"
|
||||||
|
},
|
||||||
|
"missing_required_filters": [
|
||||||
|
|
||||||
|
],
|
||||||
|
"anchor_type": "account",
|
||||||
|
"anchor_value_raw": "60",
|
||||||
|
"resolver_confidence": "high",
|
||||||
|
"mcp_call_status": "empty",
|
||||||
|
"rows_fetched": 20,
|
||||||
|
"raw_rows_received": 20,
|
||||||
|
"rows_materialized": 0,
|
||||||
|
"rows_after_recipe_filter": 0,
|
||||||
|
"rows_matched": 0,
|
||||||
|
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||||
|
"limited_reason_category": "empty_match",
|
||||||
|
"response_type": "LIMITED_WITH_REASON",
|
||||||
|
"reply_type": "partial_coverage",
|
||||||
|
"assistant_reply_preview": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
|
||||||
|
}
|
||||||
+35
@@ -0,0 +1,35 @@
|
|||||||
|
{
|
||||||
|
"id": "Q3",
|
||||||
|
"question": "show documents by counterparty Alfa from 2020-07-01 to 2020-07-31",
|
||||||
|
"expected_intent": "list_documents_by_counterparty",
|
||||||
|
"http_status": 200,
|
||||||
|
"ok": true,
|
||||||
|
"detected_mode": "address_query",
|
||||||
|
"query_shape": "DOCUMENT_LIST",
|
||||||
|
"detected_intent": "list_documents_by_counterparty",
|
||||||
|
"selected_recipe": "address_documents_by_counterparty_v1",
|
||||||
|
"extracted_filters": {
|
||||||
|
"sort": "period_desc",
|
||||||
|
"limit": 20,
|
||||||
|
"counterparty": "Alfa",
|
||||||
|
"period_from": "2020-07-01",
|
||||||
|
"period_to": "2020-07-31"
|
||||||
|
},
|
||||||
|
"missing_required_filters": [
|
||||||
|
|
||||||
|
],
|
||||||
|
"anchor_type": "counterparty",
|
||||||
|
"anchor_value_raw": "Alfa",
|
||||||
|
"resolver_confidence": "medium",
|
||||||
|
"mcp_call_status": "empty",
|
||||||
|
"rows_fetched": 20,
|
||||||
|
"raw_rows_received": 20,
|
||||||
|
"rows_materialized": 0,
|
||||||
|
"rows_after_recipe_filter": 0,
|
||||||
|
"rows_matched": 0,
|
||||||
|
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||||
|
"limited_reason_category": "empty_match",
|
||||||
|
"response_type": "LIMITED_WITH_REASON",
|
||||||
|
"reply_type": "partial_coverage",
|
||||||
|
"assistant_reply_preview": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
|
||||||
|
}
|
||||||
+35
@@ -0,0 +1,35 @@
|
|||||||
|
{
|
||||||
|
"id": "Q4",
|
||||||
|
"question": "show bank operations by counterparty Alfa from 2020-07-01 to 2020-07-31",
|
||||||
|
"expected_intent": "bank_operations_by_counterparty",
|
||||||
|
"http_status": 200,
|
||||||
|
"ok": true,
|
||||||
|
"detected_mode": "address_query",
|
||||||
|
"query_shape": "DOCUMENT_LIST",
|
||||||
|
"detected_intent": "bank_operations_by_counterparty",
|
||||||
|
"selected_recipe": "address_bank_operations_by_counterparty_v1",
|
||||||
|
"extracted_filters": {
|
||||||
|
"sort": "period_desc",
|
||||||
|
"limit": 20,
|
||||||
|
"counterparty": "Alfa",
|
||||||
|
"period_from": "2020-07-01",
|
||||||
|
"period_to": "2020-07-31"
|
||||||
|
},
|
||||||
|
"missing_required_filters": [
|
||||||
|
|
||||||
|
],
|
||||||
|
"anchor_type": "counterparty",
|
||||||
|
"anchor_value_raw": "Alfa",
|
||||||
|
"resolver_confidence": "medium",
|
||||||
|
"mcp_call_status": "empty",
|
||||||
|
"rows_fetched": 20,
|
||||||
|
"raw_rows_received": 20,
|
||||||
|
"rows_materialized": 0,
|
||||||
|
"rows_after_recipe_filter": 0,
|
||||||
|
"rows_matched": 0,
|
||||||
|
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||||
|
"limited_reason_category": "empty_match",
|
||||||
|
"response_type": "LIMITED_WITH_REASON",
|
||||||
|
"reply_type": "partial_coverage",
|
||||||
|
"assistant_reply_preview": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
|
||||||
|
}
|
||||||
+34
@@ -0,0 +1,34 @@
|
|||||||
|
{
|
||||||
|
"id": "Q5",
|
||||||
|
"question": "show account balance 60 today",
|
||||||
|
"expected_intent": "account_balance_snapshot",
|
||||||
|
"http_status": 200,
|
||||||
|
"ok": true,
|
||||||
|
"detected_mode": "address_query",
|
||||||
|
"query_shape": "AGGREGATE_LOOKUP",
|
||||||
|
"detected_intent": "account_balance_snapshot",
|
||||||
|
"selected_recipe": "address_movements_account_snapshot_v1",
|
||||||
|
"extracted_filters": {
|
||||||
|
"sort": "period_desc",
|
||||||
|
"limit": 20,
|
||||||
|
"account": "60",
|
||||||
|
"as_of_date": "2026-03-29"
|
||||||
|
},
|
||||||
|
"missing_required_filters": [
|
||||||
|
|
||||||
|
],
|
||||||
|
"anchor_type": "account",
|
||||||
|
"anchor_value_raw": "60",
|
||||||
|
"resolver_confidence": "high",
|
||||||
|
"mcp_call_status": "empty",
|
||||||
|
"rows_fetched": 20,
|
||||||
|
"raw_rows_received": 20,
|
||||||
|
"rows_materialized": 0,
|
||||||
|
"rows_after_recipe_filter": 0,
|
||||||
|
"rows_matched": 0,
|
||||||
|
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||||
|
"limited_reason_category": "empty_match",
|
||||||
|
"response_type": "LIMITED_WITH_REASON",
|
||||||
|
"reply_type": "partial_coverage",
|
||||||
|
"assistant_reply_preview": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
|
||||||
|
}
|
||||||
+32
@@ -0,0 +1,32 @@
|
|||||||
|
{
|
||||||
|
"id": "Q6",
|
||||||
|
"question": "show open items by contract",
|
||||||
|
"expected_intent": "open_items_by_counterparty_or_contract",
|
||||||
|
"http_status": 200,
|
||||||
|
"ok": true,
|
||||||
|
"detected_mode": "address_query",
|
||||||
|
"query_shape": "OBJECT_LOOKUP",
|
||||||
|
"detected_intent": "open_items_by_counterparty_or_contract",
|
||||||
|
"selected_recipe": null,
|
||||||
|
"extracted_filters": {
|
||||||
|
"sort": "period_desc",
|
||||||
|
"limit": 20
|
||||||
|
},
|
||||||
|
"missing_required_filters": [
|
||||||
|
"counterparty_or_contract"
|
||||||
|
],
|
||||||
|
"anchor_type": "unknown",
|
||||||
|
"anchor_value_raw": null,
|
||||||
|
"resolver_confidence": "low",
|
||||||
|
"mcp_call_status": "skipped",
|
||||||
|
"rows_fetched": 0,
|
||||||
|
"raw_rows_received": 0,
|
||||||
|
"rows_materialized": 0,
|
||||||
|
"rows_after_recipe_filter": 0,
|
||||||
|
"rows_matched": 0,
|
||||||
|
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||||
|
"limited_reason_category": "missing_anchor",
|
||||||
|
"response_type": "LIMITED_WITH_REASON",
|
||||||
|
"reply_type": "partial_coverage",
|
||||||
|
"assistant_reply_preview": "Для точного адресного поиска не хватает обязательного якоря.\nПричина: для open_items нужен якорь контрагента или договора.\nЧто нужно уточнить: укажите контрагента или номер/название договора."
|
||||||
|
}
|
||||||
+33
@@ -0,0 +1,33 @@
|
|||||||
|
{
|
||||||
|
"id": "Q7",
|
||||||
|
"question": "show documents by contract 15/24",
|
||||||
|
"expected_intent": "unknown",
|
||||||
|
"http_status": 200,
|
||||||
|
"ok": true,
|
||||||
|
"detected_mode": "address_query",
|
||||||
|
"query_shape": "DOCUMENT_LIST",
|
||||||
|
"detected_intent": "unknown",
|
||||||
|
"selected_recipe": null,
|
||||||
|
"extracted_filters": {
|
||||||
|
"sort": "period_desc",
|
||||||
|
"limit": 20,
|
||||||
|
"contract": "15/24"
|
||||||
|
},
|
||||||
|
"missing_required_filters": [
|
||||||
|
|
||||||
|
],
|
||||||
|
"anchor_type": "contract",
|
||||||
|
"anchor_value_raw": "15/24",
|
||||||
|
"resolver_confidence": "medium",
|
||||||
|
"mcp_call_status": "skipped",
|
||||||
|
"rows_fetched": 0,
|
||||||
|
"raw_rows_received": 0,
|
||||||
|
"rows_materialized": 0,
|
||||||
|
"rows_after_recipe_filter": 0,
|
||||||
|
"rows_matched": 0,
|
||||||
|
"runtime_readiness": "DEEP_ONLY",
|
||||||
|
"limited_reason_category": "unsupported",
|
||||||
|
"response_type": "LIMITED_WITH_REASON",
|
||||||
|
"reply_type": "partial_coverage",
|
||||||
|
"assistant_reply_preview": "Ртот запрос РЅРµ РїРѕРґС…РѕРґРёС‚ РїРѕРґ address_query V1.\nПричина: intent РїРѕРєР° РЅРµ поддержан РІ address V1.\nЧто РЅСѓР¶РЅРѕ уточнить: переформулируйте РІРѕРїСЂРѕСЃ как адресный lookup РїРѕ счету/контрагенту/РґРѕРіРѕРІРѕСЂСѓ."
|
||||||
|
}
|
||||||
+33
@@ -0,0 +1,33 @@
|
|||||||
|
{
|
||||||
|
"id": "Q8",
|
||||||
|
"question": "who owes us and who we owe today",
|
||||||
|
"expected_intent": "list_receivables_counterparties",
|
||||||
|
"http_status": 200,
|
||||||
|
"ok": true,
|
||||||
|
"detected_mode": "address_query",
|
||||||
|
"query_shape": "COMPOUND_FACTUAL_QUERY",
|
||||||
|
"detected_intent": "list_receivables_counterparties",
|
||||||
|
"selected_recipe": "address_movements_receivables_v1",
|
||||||
|
"extracted_filters": {
|
||||||
|
"sort": "period_desc",
|
||||||
|
"limit": 20,
|
||||||
|
"as_of_date": "2026-03-29"
|
||||||
|
},
|
||||||
|
"missing_required_filters": [
|
||||||
|
|
||||||
|
],
|
||||||
|
"anchor_type": "unknown",
|
||||||
|
"anchor_value_raw": null,
|
||||||
|
"resolver_confidence": "low",
|
||||||
|
"mcp_call_status": "empty",
|
||||||
|
"rows_fetched": 20,
|
||||||
|
"raw_rows_received": 20,
|
||||||
|
"rows_materialized": 0,
|
||||||
|
"rows_after_recipe_filter": 0,
|
||||||
|
"rows_matched": 0,
|
||||||
|
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||||
|
"limited_reason_category": "empty_match",
|
||||||
|
"response_type": "LIMITED_WITH_REASON",
|
||||||
|
"reply_type": "partial_coverage",
|
||||||
|
"assistant_reply_preview": "В live-данных по текущему фильтру записи не найдены.\nПричина: по выбранным фильтрам в live-выборке нет строк.\nЧто нужно уточнить: уточните период, контрагента, договор или снимите часть фильтров."
|
||||||
|
}
|
||||||
+122
@@ -0,0 +1,122 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"case_id": "Q1",
|
||||||
|
"question": "which documents form balance for account 62 as of 2020-07-31",
|
||||||
|
"detected_intent": "documents_forming_balance",
|
||||||
|
"selected_recipe": "address_documents_forming_balance_v1",
|
||||||
|
"mcp_call_status": "empty",
|
||||||
|
"rows_fetched": 20,
|
||||||
|
"raw_rows_received": 20,
|
||||||
|
"rows_materialized": 0,
|
||||||
|
"rows_after_recipe_filter": 0,
|
||||||
|
"rows_matched": 0,
|
||||||
|
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||||
|
"limited_reason_category": "empty_match",
|
||||||
|
"response_type": "LIMITED_WITH_REASON"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"case_id": "Q2",
|
||||||
|
"question": "reveal balance documents for account 60",
|
||||||
|
"detected_intent": "documents_forming_balance",
|
||||||
|
"selected_recipe": "address_documents_forming_balance_v1",
|
||||||
|
"mcp_call_status": "empty",
|
||||||
|
"rows_fetched": 20,
|
||||||
|
"raw_rows_received": 20,
|
||||||
|
"rows_materialized": 0,
|
||||||
|
"rows_after_recipe_filter": 0,
|
||||||
|
"rows_matched": 0,
|
||||||
|
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||||
|
"limited_reason_category": "empty_match",
|
||||||
|
"response_type": "LIMITED_WITH_REASON"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"case_id": "Q3",
|
||||||
|
"question": "show documents by counterparty Alfa from 2020-07-01 to 2020-07-31",
|
||||||
|
"detected_intent": "list_documents_by_counterparty",
|
||||||
|
"selected_recipe": "address_documents_by_counterparty_v1",
|
||||||
|
"mcp_call_status": "empty",
|
||||||
|
"rows_fetched": 20,
|
||||||
|
"raw_rows_received": 20,
|
||||||
|
"rows_materialized": 0,
|
||||||
|
"rows_after_recipe_filter": 0,
|
||||||
|
"rows_matched": 0,
|
||||||
|
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||||
|
"limited_reason_category": "empty_match",
|
||||||
|
"response_type": "LIMITED_WITH_REASON"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"case_id": "Q4",
|
||||||
|
"question": "show bank operations by counterparty Alfa from 2020-07-01 to 2020-07-31",
|
||||||
|
"detected_intent": "bank_operations_by_counterparty",
|
||||||
|
"selected_recipe": "address_bank_operations_by_counterparty_v1",
|
||||||
|
"mcp_call_status": "empty",
|
||||||
|
"rows_fetched": 20,
|
||||||
|
"raw_rows_received": 20,
|
||||||
|
"rows_materialized": 0,
|
||||||
|
"rows_after_recipe_filter": 0,
|
||||||
|
"rows_matched": 0,
|
||||||
|
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||||
|
"limited_reason_category": "empty_match",
|
||||||
|
"response_type": "LIMITED_WITH_REASON"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"case_id": "Q5",
|
||||||
|
"question": "show account balance 60 today",
|
||||||
|
"detected_intent": "account_balance_snapshot",
|
||||||
|
"selected_recipe": "address_movements_account_snapshot_v1",
|
||||||
|
"mcp_call_status": "empty",
|
||||||
|
"rows_fetched": 20,
|
||||||
|
"raw_rows_received": 20,
|
||||||
|
"rows_materialized": 0,
|
||||||
|
"rows_after_recipe_filter": 0,
|
||||||
|
"rows_matched": 0,
|
||||||
|
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||||
|
"limited_reason_category": "empty_match",
|
||||||
|
"response_type": "LIMITED_WITH_REASON"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"case_id": "Q6",
|
||||||
|
"question": "show open items by contract",
|
||||||
|
"detected_intent": "open_items_by_counterparty_or_contract",
|
||||||
|
"selected_recipe": null,
|
||||||
|
"mcp_call_status": "skipped",
|
||||||
|
"rows_fetched": 0,
|
||||||
|
"raw_rows_received": 0,
|
||||||
|
"rows_materialized": 0,
|
||||||
|
"rows_after_recipe_filter": 0,
|
||||||
|
"rows_matched": 0,
|
||||||
|
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||||
|
"limited_reason_category": "missing_anchor",
|
||||||
|
"response_type": "LIMITED_WITH_REASON"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"case_id": "Q7",
|
||||||
|
"question": "show documents by contract 15/24",
|
||||||
|
"detected_intent": "unknown",
|
||||||
|
"selected_recipe": null,
|
||||||
|
"mcp_call_status": "skipped",
|
||||||
|
"rows_fetched": 0,
|
||||||
|
"raw_rows_received": 0,
|
||||||
|
"rows_materialized": 0,
|
||||||
|
"rows_after_recipe_filter": 0,
|
||||||
|
"rows_matched": 0,
|
||||||
|
"runtime_readiness": "DEEP_ONLY",
|
||||||
|
"limited_reason_category": "unsupported",
|
||||||
|
"response_type": "LIMITED_WITH_REASON"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"case_id": "Q8",
|
||||||
|
"question": "who owes us and who we owe today",
|
||||||
|
"detected_intent": "list_receivables_counterparties",
|
||||||
|
"selected_recipe": "address_movements_receivables_v1",
|
||||||
|
"mcp_call_status": "empty",
|
||||||
|
"rows_fetched": 20,
|
||||||
|
"raw_rows_received": 20,
|
||||||
|
"rows_materialized": 0,
|
||||||
|
"rows_after_recipe_filter": 0,
|
||||||
|
"rows_matched": 0,
|
||||||
|
"runtime_readiness": "LIVE_QUERYABLE_WITH_LIMITS",
|
||||||
|
"limited_reason_category": "empty_match",
|
||||||
|
"response_type": "LIMITED_WITH_REASON"
|
||||||
|
}
|
||||||
|
]
|
||||||
+44
@@ -0,0 +1,44 @@
|
|||||||
|
{
|
||||||
|
"run_id": "2026-03-29_Address_Query_Runtime_V1_M2_3_DocumentsFormingBalance_DataAwareAcceptance",
|
||||||
|
"date": "2026-03-29",
|
||||||
|
"stage": "address_query_runtime_v1",
|
||||||
|
"scope": "m2_3_documents_forming_balance_plus_data_aware_acceptance_sync",
|
||||||
|
"build_status": "PASSED",
|
||||||
|
"tests_status": "PASSED",
|
||||||
|
"dry_run_status": "PASSED_WITH_LIMITED_RESULTS",
|
||||||
|
"implemented": {
|
||||||
|
"intent_documents_forming_balance": true,
|
||||||
|
"recipe_documents_forming_balance_v1": true,
|
||||||
|
"required_filters_account_as_of_for_balance_intents": true,
|
||||||
|
"as_of_defaulting_for_balance_intents": true,
|
||||||
|
"resolver_debug_block": true,
|
||||||
|
"row_stage_debug_block": true,
|
||||||
|
"docs_sync_data_aware_policy": true
|
||||||
|
},
|
||||||
|
"dry_run_metrics": {
|
||||||
|
"questions_total": 8,
|
||||||
|
"address_mode_hit_rate": 1.0,
|
||||||
|
"query_shape_detected_rate": 1.0,
|
||||||
|
"intent_alignment_rate": 1.0,
|
||||||
|
"supported_recipe_selection_rate": 0.75,
|
||||||
|
"factual_positive_rate": 0.0,
|
||||||
|
"limited_mode_rate": 1.0,
|
||||||
|
"false_factual_rate": 0.0,
|
||||||
|
"anchor_debug_coverage_rate": 1.0,
|
||||||
|
"row_stage_debug_coverage_rate": 1.0
|
||||||
|
},
|
||||||
|
"limited_reason_distribution": {
|
||||||
|
"empty_match": 6,
|
||||||
|
"missing_anchor": 1,
|
||||||
|
"unsupported": 1,
|
||||||
|
"recipe_visibility_gap": 0,
|
||||||
|
"execution_error": 0
|
||||||
|
},
|
||||||
|
"data_aware_acceptance_status": {
|
||||||
|
"suite_defined": true,
|
||||||
|
"exploratory_live_pass_completed": false,
|
||||||
|
"known_positive_non_empty_rate": 0.0,
|
||||||
|
"status": "prepared_for_next_live_iteration"
|
||||||
|
},
|
||||||
|
"next_priority": "Run exploratory live pass and curate non-empty data-aware positive acceptance cases"
|
||||||
|
}
|
||||||
+36
@@ -0,0 +1,36 @@
|
|||||||
|
# Smoke Checks
|
||||||
|
|
||||||
|
Дата: 2026-03-29
|
||||||
|
|
||||||
|
## Build
|
||||||
|
- `npm.cmd run build` -> PASS
|
||||||
|
|
||||||
|
## Tests
|
||||||
|
- `npx.cmd vitest run tests/addressQueryRuntimeM23.test.ts` -> PASS (10/10)
|
||||||
|
|
||||||
|
## Dry-run (assistant window equivalent)
|
||||||
|
|
||||||
|
Источник: `assistant_window_dry_run_results.json`
|
||||||
|
|
||||||
|
- total questions: 8
|
||||||
|
- `detected_mode=address_query`: 8/8
|
||||||
|
- `query_shape` detected: 8/8
|
||||||
|
- expected intent alignment: 8/8
|
||||||
|
- `selected_recipe` present: 6/8
|
||||||
|
- `response_type=LIMITED_WITH_REASON`: 8/8
|
||||||
|
- `false_factual_rate`: 0
|
||||||
|
- `anchor_debug_coverage_rate`: 1.0
|
||||||
|
- `row_stage_debug_coverage_rate`: 1.0
|
||||||
|
|
||||||
|
### Limited taxonomy distribution
|
||||||
|
|
||||||
|
- `empty_match`: 6
|
||||||
|
- `missing_anchor`: 1
|
||||||
|
- `unsupported`: 1
|
||||||
|
- `recipe_visibility_gap`: 0
|
||||||
|
- `execution_error`: 0
|
||||||
|
|
||||||
|
### Operational note
|
||||||
|
|
||||||
|
`documents_forming_balance` routing is now implemented and stable by intent/recipe.
|
||||||
|
The next hard gate remains data-aware positive live pass (non-empty factual evidence).
|
||||||
+51
@@ -0,0 +1,51 @@
|
|||||||
|
# Address Query Runtime V1 — M2+ (Open Contracts / Open Items)
|
||||||
|
|
||||||
|
Дата: 2026-03-29
|
||||||
|
Статус: IMPLEMENTED_WITH_LIMITED_MODE
|
||||||
|
|
||||||
|
## Что расширено
|
||||||
|
|
||||||
|
1. Расширены P0 intent/recipe маршруты:
|
||||||
|
- `list_open_contracts`
|
||||||
|
- `open_items_by_counterparty_or_contract`
|
||||||
|
|
||||||
|
2. Расширен recipe-catalog:
|
||||||
|
- единый movement-query с period filters (`as_of_date`, `period_from`, `period_to`)
|
||||||
|
- account scopes для family-веток:
|
||||||
|
- receivables: `62/76`
|
||||||
|
- payables: `60/76`
|
||||||
|
- open contracts/open items: `60/62/76`
|
||||||
|
|
||||||
|
3. Усилен intent/filter слой:
|
||||||
|
- intent resolver переписан на token-based (более стабильно для коротких формулировок);
|
||||||
|
- filter extractor поддерживает `by contract` / `by counterparty` и русские варианты.
|
||||||
|
|
||||||
|
4. Усилен answer contract:
|
||||||
|
- для `open_items` обязателен anchor (`counterparty` или `contract`), иначе controlled limited mode;
|
||||||
|
- для `open_contracts` при отсутствии явных договорных аналитик в live-строках возвращается честный limited mode;
|
||||||
|
- false factual не генерируется.
|
||||||
|
|
||||||
|
## Что подтверждено smoke-проверкой
|
||||||
|
|
||||||
|
- Address lane срабатывает через `AssistantService` ранней веткой (без normalizer вызова).
|
||||||
|
- Новые intents распознаются и маршрутизируются в recipe path.
|
||||||
|
- При отсутствии релевантных live-строк система остается в `LIMITED_WITH_REASON` с конкретной причиной.
|
||||||
|
|
||||||
|
## Параллельно добавлено для следующего этапа
|
||||||
|
|
||||||
|
- Набор вопросов для dry-run через окно ассистента:
|
||||||
|
- `docs/ADDRESS/address_query/ui_dry_run_question_set_v1.md`
|
||||||
|
- Чек-лист проверки:
|
||||||
|
- `docs/ADDRESS/address_query/ui_dry_run_checklist_v1.md`
|
||||||
|
- Результаты dry-run набора (5 вопросов):
|
||||||
|
- `assistant_window_dry_run_results.json`
|
||||||
|
|
||||||
|
## Ограничения текущего шага
|
||||||
|
|
||||||
|
- MCP текущего рецепта не возвращает явные договорные аналитики в достаточном объеме для устойчивого `FACTUAL_LIST` по open contracts.
|
||||||
|
- Поэтому `list_open_contracts` и часть `open_items` работают в honest-limited режиме, что соответствует safety policy.
|
||||||
|
|
||||||
|
## Следующий шаг
|
||||||
|
|
||||||
|
- Добавить специализированные live recipes на уровне документов/регистров (контрагент/договор) вместо только movement-среза,
|
||||||
|
чтобы перевести `open_contracts` и `open_items` из `LIMITED_WITH_REASON` в стабильный factual mode на positive-cases.
|
||||||
+57
@@ -0,0 +1,57 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"query": "кто должен нам на сегодня",
|
||||||
|
"expected_intent": "list_receivables_counterparties",
|
||||||
|
"detected_mode": "address_query",
|
||||||
|
"detected_intent": "list_receivables_counterparties",
|
||||||
|
"selected_recipe": "address_movements_receivables_v1",
|
||||||
|
"mcp_call_status": "empty",
|
||||||
|
"rows_fetched": 20,
|
||||||
|
"rows_matched": 0,
|
||||||
|
"response_type": "LIMITED_WITH_REASON"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"query": "кому должны мы на сегодня",
|
||||||
|
"expected_intent": "list_payables_counterparties",
|
||||||
|
"detected_mode": "address_query",
|
||||||
|
"detected_intent": "list_payables_counterparties",
|
||||||
|
"selected_recipe": "address_movements_payables_v1",
|
||||||
|
"mcp_call_status": "empty",
|
||||||
|
"rows_fetched": 20,
|
||||||
|
"rows_matched": 0,
|
||||||
|
"response_type": "LIMITED_WITH_REASON"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"query": "покажи остаток по счету 60 на сегодня",
|
||||||
|
"expected_intent": "account_balance_snapshot",
|
||||||
|
"detected_mode": "address_query",
|
||||||
|
"detected_intent": "account_balance_snapshot",
|
||||||
|
"selected_recipe": "address_movements_account_snapshot_v1",
|
||||||
|
"mcp_call_status": "empty",
|
||||||
|
"rows_fetched": 20,
|
||||||
|
"rows_matched": 0,
|
||||||
|
"response_type": "LIMITED_WITH_REASON"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"query": "какие договоры не закрыты",
|
||||||
|
"expected_intent": "list_open_contracts",
|
||||||
|
"detected_mode": "address_query",
|
||||||
|
"detected_intent": "list_open_contracts",
|
||||||
|
"selected_recipe": "address_open_contracts_candidates_v1",
|
||||||
|
"mcp_call_status": "empty",
|
||||||
|
"rows_fetched": 20,
|
||||||
|
"rows_matched": 0,
|
||||||
|
"response_type": "LIMITED_WITH_REASON"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"query": "покажи открытые позиции по договору 01/19-ПТ",
|
||||||
|
"expected_intent": "open_items_by_counterparty_or_contract",
|
||||||
|
"detected_mode": "address_query",
|
||||||
|
"detected_intent": "open_items_by_counterparty_or_contract",
|
||||||
|
"selected_recipe": "address_open_items_by_party_or_contract_v1",
|
||||||
|
"mcp_call_status": "empty",
|
||||||
|
"rows_fetched": 20,
|
||||||
|
"rows_matched": 0,
|
||||||
|
"response_type": "LIMITED_WITH_REASON"
|
||||||
|
}
|
||||||
|
]
|
||||||
+4
@@ -0,0 +1,4 @@
|
|||||||
|
llm_normalizer/backend/src/services/addressIntentResolver.ts
|
||||||
|
llm_normalizer/backend/src/services/addressRecipeCatalog.ts
|
||||||
|
llm_normalizer/backend/src/services/addressQueryService.ts
|
||||||
|
llm_normalizer/backend/src/services/addressFilterExtractor.ts
|
||||||
+28
@@ -0,0 +1,28 @@
|
|||||||
|
{
|
||||||
|
"run_id": "2026-03-29_Address_Query_Runtime_V1_M2_Plus_OpenContracts_OpenItems",
|
||||||
|
"date": "2026-03-29",
|
||||||
|
"stage": "address_query_runtime_v1",
|
||||||
|
"scope": "m2_plus_intent_recipe_expansion",
|
||||||
|
"build_status": "PASSED",
|
||||||
|
"smoke_status": "PASSED",
|
||||||
|
"ui_dry_run_status": "PASSED_INTENT_ROUTING",
|
||||||
|
"implemented": {
|
||||||
|
"intent_open_contracts": true,
|
||||||
|
"intent_open_items_by_counterparty_or_contract": true,
|
||||||
|
"period_filterable_query_recipe": true,
|
||||||
|
"token_based_intent_resolution": true
|
||||||
|
},
|
||||||
|
"current_answer_mode": {
|
||||||
|
"receivables_payables_account_snapshot": "operational (may be limited on empty matches)",
|
||||||
|
"open_contracts": "honest_limited_when_no_contract_anchors",
|
||||||
|
"open_items": "honest_limited_without_anchor_or_no_rows"
|
||||||
|
},
|
||||||
|
"ui_dry_run_5q": {
|
||||||
|
"mode_routing_pass_rate": 1.0,
|
||||||
|
"intent_alignment_pass_rate": 1.0,
|
||||||
|
"selected_recipe_non_empty_rate": 1.0,
|
||||||
|
"factual_positive_rate": 0.0,
|
||||||
|
"limited_mode_rate": 1.0
|
||||||
|
},
|
||||||
|
"false_factual_rate": 0
|
||||||
|
}
|
||||||
+49
@@ -0,0 +1,49 @@
|
|||||||
|
# Smoke Checks
|
||||||
|
|
||||||
|
Дата: 2026-03-29
|
||||||
|
|
||||||
|
## Build
|
||||||
|
- `npm run build` -> PASS
|
||||||
|
|
||||||
|
## Address service checks (dist)
|
||||||
|
|
||||||
|
1. `who owes us today`
|
||||||
|
- detected_intent: `list_receivables_counterparties`
|
||||||
|
- selected_recipe: `address_movements_receivables_v1`
|
||||||
|
- result: `LIMITED_WITH_REASON` (mcp_call_status=`empty`)
|
||||||
|
|
||||||
|
2. `who we owe today`
|
||||||
|
- detected_intent: `list_payables_counterparties`
|
||||||
|
- selected_recipe: `address_movements_payables_v1`
|
||||||
|
- result: `LIMITED_WITH_REASON` (mcp_call_status=`empty`)
|
||||||
|
|
||||||
|
3. `show account balance 60`
|
||||||
|
- detected_intent: `account_balance_snapshot`
|
||||||
|
- selected_recipe: `address_movements_account_snapshot_v1`
|
||||||
|
- result: `LIMITED_WITH_REASON` (mcp_call_status=`empty`)
|
||||||
|
|
||||||
|
4. `list open contracts`
|
||||||
|
- detected_intent: `list_open_contracts`
|
||||||
|
- selected_recipe: `address_open_contracts_candidates_v1`
|
||||||
|
- result: `LIMITED_WITH_REASON` (`no_contract_anchors_in_live_rows`)
|
||||||
|
|
||||||
|
5. `open items by contract 01/19-PT`
|
||||||
|
- detected_intent: `open_items_by_counterparty_or_contract`
|
||||||
|
- selected_recipe: `address_open_items_by_party_or_contract_v1`
|
||||||
|
- result: `LIMITED_WITH_REASON` (mcp_call_status=`empty`)
|
||||||
|
|
||||||
|
## AssistantService early-lane checks
|
||||||
|
|
||||||
|
`AssistantService.handleMessage(...)` с normalizer stub:
|
||||||
|
- для address запросов идет в `assistant_message_address` event;
|
||||||
|
- deep normalizer path не вызывается.
|
||||||
|
|
||||||
|
## UI dry-run через окно ассистента (RU set)
|
||||||
|
|
||||||
|
- Прогнан набор из 5 русскоязычных вопросов из `docs/ADDRESS/address_query/ui_dry_run_question_set_v1.md`.
|
||||||
|
- Результаты сохранены в `assistant_window_dry_run_results.json`.
|
||||||
|
- Все 5 кейсов:
|
||||||
|
- `detected_mode=address_query`;
|
||||||
|
- `detected_intent` совпал с `expected_intent`;
|
||||||
|
- `selected_recipe` не пустой.
|
||||||
|
- Текущий answer mode: `LIMITED_WITH_REASON` по причине `mcp_call_status=empty` (matched rows = 0).
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user