190 lines
6.8 KiB
TypeScript
190 lines
6.8 KiB
TypeScript
import type { NormalizedQueryV1, NormalizedQueryV2, NormalizedQueryV2_0_1, NormalizedQueryV2_0_2 } from "../src/types/normalizer";
|
|
|
|
export function normalizedFixture(): NormalizedQueryV1 {
|
|
return {
|
|
schema_version: "normalized_query_v1",
|
|
user_question_raw: "По каким поставщикам не бьются взаиморасчеты?",
|
|
normalized_question: "Показать поставщиков с расхождениями по взаиморасчетам.",
|
|
intent_class: "cross_entity",
|
|
business_problem_type: "reconciliation",
|
|
domain_entities: ["контрагент", "документ", "проводка"],
|
|
accounts_mentioned: ["60"],
|
|
documents_mentioned: ["поступление", "списание"],
|
|
registers_mentioned: ["взаиморасчеты"],
|
|
period_scope: {
|
|
type: "inferred",
|
|
value: "2020-06",
|
|
confidence: "medium"
|
|
},
|
|
requires: {
|
|
needs_cross_entity_join: true,
|
|
needs_causal_chain: true,
|
|
needs_exact_object_trace: false,
|
|
needs_ranking: false,
|
|
needs_anomaly_summary: false,
|
|
needs_runtime_truth: false,
|
|
needs_period_cut: true,
|
|
needs_evidence: true
|
|
},
|
|
expected_output_shape: "reconciliation_report",
|
|
route_hint: "hybrid_store_plus_live",
|
|
ambiguities: [],
|
|
confidence: {
|
|
overall: "medium",
|
|
intent_class: "high",
|
|
route_hint: "medium"
|
|
}
|
|
};
|
|
}
|
|
|
|
export function normalizedFixtureV2(): NormalizedQueryV2 {
|
|
return {
|
|
schema_version: "normalized_query_v2",
|
|
user_message_raw: "Проверь по поставщикам хвосты и отдельно скажи, что не относится к данным компании.",
|
|
message_in_scope: true,
|
|
scope_confidence: "medium",
|
|
contains_multiple_tasks: true,
|
|
fragments: [
|
|
{
|
|
fragment_id: "F1",
|
|
raw_fragment_text: "Проверь по поставщикам хвосты",
|
|
normalized_fragment_text: "Проверить хвосты по поставщикам",
|
|
domain_relevance: "in_scope",
|
|
business_scope: "company_specific_accounting",
|
|
entity_hints: ["поставщик", "взаиморасчеты"],
|
|
account_hints: ["60"],
|
|
document_hints: ["документ"],
|
|
register_hints: ["остатки"],
|
|
time_scope: {
|
|
type: "missing",
|
|
value: null,
|
|
confidence: "low"
|
|
},
|
|
flags: {
|
|
has_multi_entity_scope: true,
|
|
asks_for_chain_explanation: true,
|
|
asks_for_ranking_or_top: false,
|
|
asks_for_period_summary: false,
|
|
asks_for_rule_check: false,
|
|
asks_for_anomaly_scan: true,
|
|
asks_for_exact_object_trace: false,
|
|
asks_for_evidence: true,
|
|
mentions_period_close_context: false
|
|
},
|
|
candidate_labels: ["cross_entity", "anomaly_probe"],
|
|
confidence: "medium"
|
|
}
|
|
],
|
|
discarded_fragments: [
|
|
{
|
|
raw_fragment_text: "короче",
|
|
reason: "noise_or_too_short"
|
|
}
|
|
],
|
|
global_notes: {
|
|
needs_clarification: true,
|
|
clarification_reason: "Не указан период."
|
|
}
|
|
};
|
|
}
|
|
|
|
export function normalizedFixtureV2_0_1(): NormalizedQueryV2_0_1 {
|
|
return {
|
|
schema_version: "normalized_query_v2_0_1",
|
|
user_message_raw: "Проверь, что висит по 97 и где есть подозрительные хвосты.",
|
|
message_in_scope: true,
|
|
scope_confidence: "high",
|
|
contains_multiple_tasks: false,
|
|
fragments: [
|
|
{
|
|
fragment_id: "F1",
|
|
raw_fragment_text: "Проверь, что висит по 97 и где есть подозрительные хвосты",
|
|
normalized_fragment_text: "Проверить зависшие записи по 97 и подозрительные хвосты",
|
|
domain_relevance: "in_scope",
|
|
business_scope: "company_specific_accounting",
|
|
entity_hints: ["рбп"],
|
|
account_hints: ["97"],
|
|
document_hints: [],
|
|
register_hints: ["остатки"],
|
|
time_scope: {
|
|
type: "missing",
|
|
value: null,
|
|
confidence: "low"
|
|
},
|
|
flags: {
|
|
has_multi_entity_scope: false,
|
|
asks_for_chain_explanation: false,
|
|
asks_for_ranking_or_top: false,
|
|
asks_for_period_summary: false,
|
|
asks_for_rule_check: true,
|
|
asks_for_anomaly_scan: true,
|
|
asks_for_exact_object_trace: false,
|
|
asks_for_evidence: false,
|
|
mentions_period_close_context: false
|
|
},
|
|
candidate_labels: ["rule_based_account_control", "anomaly_probe"],
|
|
confidence: "high",
|
|
execution_readiness: "executable_with_soft_assumptions",
|
|
clarification_reason: null,
|
|
soft_assumption_used: ["problem_scan_mode_enabled"]
|
|
}
|
|
],
|
|
discarded_fragments: [],
|
|
global_notes: {
|
|
needs_clarification: false,
|
|
clarification_reason: null
|
|
}
|
|
};
|
|
}
|
|
|
|
export function normalizedFixtureV2_0_2(): NormalizedQueryV2_0_2 {
|
|
return {
|
|
schema_version: "normalized_query_v2_0_2",
|
|
user_message_raw: "Проверь зависшие истории по 97 и подсвети рискованные участки.",
|
|
message_in_scope: true,
|
|
scope_confidence: "high",
|
|
contains_multiple_tasks: false,
|
|
fragments: [
|
|
{
|
|
fragment_id: "F1",
|
|
raw_fragment_text: "Проверь зависшие истории по 97 и подсвети рискованные участки",
|
|
normalized_fragment_text: "Проверить зависшие истории по 97 и рискованные участки",
|
|
domain_relevance: "in_scope",
|
|
business_scope: "company_specific_accounting",
|
|
entity_hints: ["рбп"],
|
|
account_hints: ["97"],
|
|
document_hints: [],
|
|
register_hints: ["остатки"],
|
|
time_scope: {
|
|
type: "missing",
|
|
value: null,
|
|
confidence: "low"
|
|
},
|
|
flags: {
|
|
has_multi_entity_scope: false,
|
|
asks_for_chain_explanation: false,
|
|
asks_for_ranking_or_top: false,
|
|
asks_for_period_summary: false,
|
|
asks_for_rule_check: true,
|
|
asks_for_anomaly_scan: true,
|
|
asks_for_exact_object_trace: false,
|
|
asks_for_evidence: false,
|
|
mentions_period_close_context: false
|
|
},
|
|
candidate_labels: ["rule_based_account_control", "anomaly_probe"],
|
|
confidence: "high",
|
|
execution_readiness: "executable_with_soft_assumptions",
|
|
clarification_reason: null,
|
|
soft_assumption_used: ["problem_scan_mode_enabled"],
|
|
route_status: "routed",
|
|
no_route_reason: null
|
|
}
|
|
],
|
|
discarded_fragments: [],
|
|
global_notes: {
|
|
needs_clarification: false,
|
|
clarification_reason: null
|
|
}
|
|
};
|
|
}
|