АДРЕСНЫЙ РЕЖИМ - локальная подель на декомпозе

This commit is contained in:
2026-04-01 17:55:02 +03:00
parent 4060a5e575
commit 4d59672576
90 changed files with 19595 additions and 785 deletions
@@ -0,0 +1,44 @@
# Address Query Runtime V1 — M2.3d Query Variants Expansion
Дата: 2026-04-01
## Цель шага
Подбить текущий этап M2.3c и расширить вариативность пользовательских формулировок для уже существующих intent'ов без изменения архитектурной рамки.
## Что сделано
1. Расширены сигналы address-mode:
- добавлены entity-токены `компания/организация/поставщик/клиент/партнер` и английские эквиваленты.
2. Расширен intent-resolver:
- добавлены вариации `documents_by_counterparty` и `bank_operations_by_counterparty` для формулировок через поставщика/клиента/компанию;
- добаван loose by-anchor trigger (`по <якорь>`) для short/slang формулировок.
3. Усилен filter-extractor:
- расширен extraction якоря контрагента (`по поставщику`, `по клиенту`, `по партнеру`, `по организации`, `by supplier/customer/client/partner`);
- добавлены all-time варианты (`за весь период`, `за весь срок`, `за всю историю`, `for entire period`, `full history`);
- добавлен month-period extraction (`за июль 2020`, `for july 2020`, `за 07.2020`);
- добавлен fallback extraction по loose phrase (`по свк`).
4. Закрыт регресс из live export:
- `какие доки есть по свк за 2021` больше не уходит в deep/canonical fallback;
- запрос остаётся в `address_query` и резолвится как `list_documents_by_counterparty`.
5. Расширен тестовый контур:
- добавлены новые unit-тесты в `addressQueryRuntimeM23.test.ts` под новые вариации и регрессионный кейс.
## Что НЕ меняли
- Не добавлялись новые intent'ы.
- Не менялась deep-analysis ветка.
- Не добавлялся free-form query builder.
## Проверка
- Команда: `npx vitest tests/addressQueryRuntimeM23.test.ts`
- Результат: `1 file passed, 25 tests passed`
## Следующий шаг
- Запустить dry/live прогон в окне ассистента на расширенном наборе формулировок и зафиксировать non-empty/limited распределение по counterparty/account семействам.
@@ -0,0 +1,24 @@
{
"run_id": "2026-04-01_Address_Query_Runtime_V1_M2_3D_Query_Variants_Expansion",
"comparison": {
"baseline_ref": "HEAD (before M2.3d patch)",
"current_ref": "workspace (after M2.3d patch + regression fix)"
},
"metrics": {
"address_m23_test_cases": {
"before": 15,
"after": 25,
"delta": 10
},
"address_m23_test_failures": {
"before": 0,
"after": 0,
"delta": 0
}
},
"notes": [
"delta reflects additional query-variation coverage for mode, intent, and filters",
"includes regression fix for slang docs phrase: 'какие доки есть по svk за 2021'",
"no architecture-scope expansion (no new intents)"
]
}
@@ -0,0 +1,15 @@
llm_normalizer/backend/src/services/addressQueryClassifier.ts
llm_normalizer/backend/src/services/addressIntentResolver.ts
llm_normalizer/backend/src/services/addressFilterExtractor.ts
llm_normalizer/backend/tests/addressQueryRuntimeM23.test.ts
llm_normalizer/backend/dist/services/addressQueryClassifier.js
llm_normalizer/backend/dist/services/addressIntentResolver.js
llm_normalizer/backend/dist/services/addressFilterExtractor.js
docs/ADDRESS/address_query/question_bank_v1.md
docs/ADDRESS/address_query/README.md
docs/ADDRESS/runs/2026-04-01_Address_Query_Runtime_V1_M2_3D_Query_Variants_Expansion/README.md
docs/ADDRESS/runs/2026-04-01_Address_Query_Runtime_V1_M2_3D_Query_Variants_Expansion/run_summary.json
docs/ADDRESS/runs/2026-04-01_Address_Query_Runtime_V1_M2_3D_Query_Variants_Expansion/before_after_metrics.json
docs/ADDRESS/runs/2026-04-01_Address_Query_Runtime_V1_M2_3D_Query_Variants_Expansion/query_variation_expansion_matrix.md
docs/ADDRESS/runs/2026-04-01_Address_Query_Runtime_V1_M2_3D_Query_Variants_Expansion/smoke_checks.md
docs/ADDRESS/runs/2026-04-01_Address_Query_Runtime_V1_M2_3D_Query_Variants_Expansion/changed_files.txt
@@ -0,0 +1,17 @@
# Query Variation Expansion Matrix (M2.3d)
| area | before | after | validation |
|---|---|---|---|
| address mode entity signals | mostly `контрагент/договор/счет/документ` | added `компания/организация/поставщик/клиент/партнер` (+EN aliases) + `доки/док` slang | `addressQueryRuntimeM23.test.ts` |
| docs/bank intent phrasing | counterparty-centric phrasing | supports company/supplier/customer/client/partner phrasing | `addressQueryRuntimeM23.test.ts` |
| counterparty anchor extraction | basic `контрагент/компания` capture | adds supplier/client/partner/org variants (+EN aliases) + loose `по <якорь>` fallback | `addressQueryRuntimeM23.test.ts` |
| all-time phrase detection | mostly `за все время` | adds `за весь период/срок/всю историю` + EN full-history variants | `addressQueryRuntimeM23.test.ts` |
| month period extraction | range/year extraction | adds month phrases (`за июль 2020`, `for july 2020`, `за 07.2020`) | `addressQueryRuntimeM23.test.ts` |
## Added example phrasings
- `Покажи платежи по поставщику Альфа за июль 2020`
- `Выведи документы по клиенту Бета за 2020-07`
- `Покажи банковские операции по клиенту Бета за весь период`
- `Какие компании есть в базе`
- `Какие доки есть по свк за 2021`
@@ -0,0 +1,32 @@
{
"run_id": "2026-04-01_Address_Query_Runtime_V1_M2_3D_Query_Variants_Expansion",
"date": "2026-04-01",
"stage": "Address Query Runtime V1",
"wave": "M2.3d",
"goal": "Query variants expansion for existing intents + slang/loose-anchor regression fix",
"status": "COMPLETED",
"scope": {
"new_intents": false,
"deep_analysis_changes": false,
"focus": [
"mode signals",
"intent hints",
"counterparty anchor extraction",
"all-time phrase handling",
"month-period extraction",
"slang docs + loose by-anchor handling",
"unit test coverage"
]
},
"checks": {
"test_command": "npx vitest tests/addressQueryRuntimeM23.test.ts",
"test_files_passed": 1,
"tests_passed": 25,
"tests_failed": 0
},
"guardrails": {
"false_factual_rate_target": 0,
"free_form_query_builder": "not_added",
"whitelist_recipe_policy": "unchanged"
}
}
@@ -0,0 +1,13 @@
# Smoke Checks
## Backend tests
- Command: `npx vitest tests/addressQueryRuntimeM23.test.ts`
- Result: PASS
- Details: `1 passed file`, `25 passed tests`, `0 failed`
## Build
- Command: `npm run build`
- Result: PASS
- Details: TypeScript build completed without errors.