АДРЕСНЫЙ РЕЖИМ - M2.3c микро набор вопросов отрабатывается коректно
This commit is contained in:
@@ -3,6 +3,7 @@ import { resolveAddressIntent } from "../src/services/addressIntentResolver";
|
||||
import { classifyAddressQueryShape } from "../src/services/addressQueryShapeClassifier";
|
||||
import { extractAddressFilters } from "../src/services/addressFilterExtractor";
|
||||
import { AddressQueryService } from "../src/services/addressQueryService";
|
||||
import { buildAddressRecipePlan, selectAddressRecipe } from "../src/services/addressRecipeCatalog";
|
||||
|
||||
describe("address query shape classifier", () => {
|
||||
it("classifies explain question as deep-shape", () => {
|
||||
@@ -46,6 +47,27 @@ describe("address filter extraction for balance drilldown", () => {
|
||||
expect(result.extracted_filters.as_of_date).toBeDefined();
|
||||
expect(result.missing_required_filters).toEqual([]);
|
||||
});
|
||||
|
||||
it("cuts period tail from counterparty anchor", () => {
|
||||
const result = extractAddressFilters(
|
||||
"Покажи документы по контрагенту test_cp с 2020-07-01 по 2020-07-31",
|
||||
"list_documents_by_counterparty"
|
||||
);
|
||||
expect(result.extracted_filters.counterparty).toBe("test_cp");
|
||||
expect(result.extracted_filters.period_from).toBe("2020-07-01");
|
||||
expect(result.extracted_filters.period_to).toBe("2020-07-31");
|
||||
});
|
||||
|
||||
it("cuts all-time tail from counterparty anchor and skips 90-day default window", () => {
|
||||
const result = extractAddressFilters(
|
||||
"Покажи документы по контрагенту тестовый за все время",
|
||||
"list_documents_by_counterparty"
|
||||
);
|
||||
expect(result.extracted_filters.counterparty).toBe("тестовый");
|
||||
expect(result.extracted_filters.period_from).toBeUndefined();
|
||||
expect(result.extracted_filters.period_to).toBeUndefined();
|
||||
expect(result.warnings).not.toContain("period_defaulted_last_90_days");
|
||||
});
|
||||
});
|
||||
|
||||
describe("address query limited taxonomy and stage diagnostics", () => {
|
||||
@@ -101,3 +123,40 @@ describe("address query limited taxonomy and stage diagnostics", () => {
|
||||
expect(result?.debug.account_scope_drop_reason).toBeDefined();
|
||||
});
|
||||
});
|
||||
|
||||
describe("address recipe catalog counterparty filtering", () => {
|
||||
it("boosts limit for all-time counterparty queries", () => {
|
||||
const filters = extractAddressFilters(
|
||||
"Покажи документы по контрагенту тестовый за все время",
|
||||
"list_documents_by_counterparty"
|
||||
).extracted_filters;
|
||||
const selected = selectAddressRecipe("list_documents_by_counterparty", filters);
|
||||
expect(selected.selected_recipe).toBeTruthy();
|
||||
const plan = buildAddressRecipePlan(selected.selected_recipe!, filters);
|
||||
|
||||
expect(plan.limit).toBe(200);
|
||||
});
|
||||
|
||||
it("boosts limit for english all-time counterparty queries", () => {
|
||||
const filters = extractAddressFilters(
|
||||
"show documents by counterparty test_cp for all time",
|
||||
"list_documents_by_counterparty"
|
||||
).extracted_filters;
|
||||
const selected = selectAddressRecipe("list_documents_by_counterparty", filters);
|
||||
expect(selected.selected_recipe).toBeTruthy();
|
||||
const plan = buildAddressRecipePlan(selected.selected_recipe!, filters);
|
||||
|
||||
expect(plan.limit).toBe(200);
|
||||
});
|
||||
|
||||
it("cuts english all-time tail from counterparty anchor", () => {
|
||||
const result = extractAddressFilters(
|
||||
"show documents by counterparty test_cp for all time",
|
||||
"list_documents_by_counterparty"
|
||||
);
|
||||
expect(result.extracted_filters.counterparty).toBe("test_cp");
|
||||
expect(result.extracted_filters.period_from).toBeUndefined();
|
||||
expect(result.extracted_filters.period_to).toBeUndefined();
|
||||
expect(result.warnings).not.toContain("period_defaulted_last_90_days");
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user