Завершить phase99-105 schema primitive closure
This commit is contained in:
@@ -0,0 +1,112 @@
|
||||
{
|
||||
"schema_version": "domain_truth_harness_spec_v1",
|
||||
"scenario_id": "address_truth_harness_phase100_large_query_continuation_ux",
|
||||
"domain": "address_phase100_large_query_continuation_ux",
|
||||
"title": "Phase 100 large-query continuation UX replay",
|
||||
"description": "Focused semantic replay for all-time or very broad business overview questions: the assistant should answer from checked evidence, disclose row-limit coverage honestly, offer a safe period-narrowing continuation path, and then recover the explicit-year follow-up through chunked evidence without leaking technical mechanics.",
|
||||
"bindings": {},
|
||||
"steps": [
|
||||
{
|
||||
"step_id": "step_01_all_time_overview_limit_becomes_continuation_path",
|
||||
"title": "All-time overview gives checked partial answer plus safe continuation path",
|
||||
"question": "Дай общий бизнес-обзор ООО Альтернатива Плюс за весь доступный период: входящие, исходящие, нетто, лучший год. Если срез слишком широкий, не выдумывай полный итог, а скажи как безопасно дособрать.",
|
||||
"allowed_reply_types": [
|
||||
"factual",
|
||||
"factual_with_explanation",
|
||||
"partial_coverage"
|
||||
],
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)альтернатива",
|
||||
"(?i)входящ|поступлен",
|
||||
"(?i)исходящ|списан|платеж",
|
||||
"(?i)нетто|денежн",
|
||||
"(?i)год|период",
|
||||
"(?i)лимит строк|проверенн.*срез|не гарантия полного|не полный",
|
||||
"(?i)конкретн.*год|год или квартал|дозапрос|собрать.*част"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)\\bMCP\\b",
|
||||
"(?i)route_candidate",
|
||||
"(?i)primitive",
|
||||
"(?i)planner_",
|
||||
"(?i)catalog_",
|
||||
"(?i)snapshot_items",
|
||||
"(?i)answer_object"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"business_overview",
|
||||
"large_query_continuation",
|
||||
"limit_honesty"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_02_user_narrows_to_2020_and_gets_recovered_year",
|
||||
"title": "Explicit-year continuation recovers yearly money evidence",
|
||||
"question": "Ок, тогда дособери конкретно 2020: входящие, исходящие и расчетное денежное нетто.",
|
||||
"allowed_reply_types": [
|
||||
"factual",
|
||||
"factual_with_explanation",
|
||||
"partial_coverage"
|
||||
],
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)2020",
|
||||
"(?i)входящ|поступлен",
|
||||
"(?i)исходящ|списан|платеж",
|
||||
"(?i)нетто|денежн",
|
||||
"(?i)47\\s*628\\s*853|47,?6",
|
||||
"(?i)43\\s*763\\s*351|43,?7|43,?8"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)уп[её]р.*лимит",
|
||||
"(?i)лимит выборки",
|
||||
"(?i)лимит строк",
|
||||
"(?i)\\bMCP\\b",
|
||||
"(?i)route_candidate",
|
||||
"(?i)primitive",
|
||||
"(?i)planner_",
|
||||
"(?i)catalog_",
|
||||
"(?i)snapshot_items",
|
||||
"(?i)answer_object"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"business_overview",
|
||||
"large_query_budget",
|
||||
"followup_continuation"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_03_profit_followup_keeps_boundary_after_continuation",
|
||||
"title": "Profit follow-up keeps cash-flow boundary after continuation",
|
||||
"question": "Это можно считать прибылью за 2020 или нет? Ответь коротко и по делу.",
|
||||
"allowed_reply_types": [
|
||||
"factual",
|
||||
"factual_with_explanation",
|
||||
"partial_coverage"
|
||||
],
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)нет|нельзя|не стоит",
|
||||
"(?i)прибыл",
|
||||
"(?i)денежн|поток|нетто|поступлен",
|
||||
"(?i)90/91/99|закрыт|финрезультат|себестоим|расход"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)\\bMCP\\b",
|
||||
"(?i)route_candidate",
|
||||
"(?i)primitive",
|
||||
"(?i)planner_",
|
||||
"(?i)catalog_",
|
||||
"(?i)snapshot_items",
|
||||
"(?i)answer_object",
|
||||
"(?i)бухгалтерскому маршруту"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"profit_boundary",
|
||||
"followup_directness",
|
||||
"business_language"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
+267
@@ -0,0 +1,267 @@
|
||||
{
|
||||
"schema_version": "domain_truth_harness_spec_v1",
|
||||
"scenario_id": "address_truth_harness_phase101_inventory_root_scope_no_warehouse_clarification",
|
||||
"domain": "address_phase101_inventory_root_scope_no_warehouse_clarification",
|
||||
"title": "Phase 101 inventory root scope without warehouse clarification replay",
|
||||
"description": "Focused semantic replay for the manual assistant-stage1-hyh1A1WR3j signal: after a broad stock-on-hand question and organization clarification, the assistant must resume the root inventory snapshot for the selected company across available warehouses instead of asking the user to name a warehouse, item, category, or material.",
|
||||
"bindings": {},
|
||||
"steps": [
|
||||
{
|
||||
"step_id": "step_01_smalltalk_entry",
|
||||
"title": "Smalltalk entry stays human",
|
||||
"question": "приветик - че как там дела",
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)привет|дела|помочь|могу"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)\\bMCP\\b",
|
||||
"(?i)route_candidate",
|
||||
"(?i)primitive",
|
||||
"(?i)planner_",
|
||||
"(?i)snapshot_items",
|
||||
"(?i)answer_object"
|
||||
],
|
||||
"criticality": "important",
|
||||
"semantic_tags": [
|
||||
"smalltalk_entry",
|
||||
"human_answer_quality"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_02_capability_meta_entry",
|
||||
"title": "Capability meta entry stays human and business-oriented",
|
||||
"question": "расскажи что можешь интересного",
|
||||
"allowed_reply_types": [
|
||||
"factual",
|
||||
"factual_with_explanation"
|
||||
],
|
||||
"required_direct_answer_patterns_any": [
|
||||
"(?i)могу|умею",
|
||||
"(?i)ндс|документ|контрагент|долг|склад|остат"
|
||||
],
|
||||
"forbidden_direct_answer_patterns": [
|
||||
"(?i)\\bMCP\\b",
|
||||
"(?i)route_candidate",
|
||||
"(?i)primitive",
|
||||
"(?i)planner_",
|
||||
"(?i)snapshot_items",
|
||||
"(?i)answer_object"
|
||||
],
|
||||
"criticality": "important",
|
||||
"semantic_tags": [
|
||||
"capability_meta",
|
||||
"human_answer_quality"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_03_inventory_root_requires_company_only",
|
||||
"title": "Broad inventory root asks only for organization when company scope is ambiguous",
|
||||
"question": "кайф - что там на складе по остаткам?",
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)уточни|уточнить|выбери|какую компанию|какая компания|организац",
|
||||
"(?i)альтернатива плюс|лайсвуд|райм"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)\\bMCP\\b",
|
||||
"(?i)route_candidate",
|
||||
"(?i)primitive",
|
||||
"(?i)planner_",
|
||||
"(?i)snapshot_items",
|
||||
"(?i)answer_object",
|
||||
"(?i)какой\\s+конкретн.*склад",
|
||||
"(?i)какой\\s+склад",
|
||||
"(?i)конкретн.*товар",
|
||||
"(?i)названи[ея]\\s+товар",
|
||||
"(?i)категор",
|
||||
"(?i)материал"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"inventory_root",
|
||||
"clarification_required",
|
||||
"warehouse_not_required"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_04_company_choice_resumes_inventory_without_warehouse",
|
||||
"title": "Company choice resumes root inventory snapshot without asking for warehouse or item",
|
||||
"question": "АЛЬТЕРНАТИВА",
|
||||
"allowed_reply_types": [
|
||||
"factual",
|
||||
"factual_with_explanation",
|
||||
"partial_coverage"
|
||||
],
|
||||
"expected_intents": [
|
||||
"inventory_on_hand_as_of_date"
|
||||
],
|
||||
"required_filters": {
|
||||
"as_of_date": "{{runtime.today_iso}}",
|
||||
"organization": "ООО Альтернатива Плюс"
|
||||
},
|
||||
"forbidden_filter_keys": [
|
||||
"warehouse",
|
||||
"item",
|
||||
"category"
|
||||
],
|
||||
"required_direct_answer_patterns_any": [
|
||||
"(?i)на складе|остат",
|
||||
"{{runtime.today_dot_regex}}"
|
||||
],
|
||||
"forbidden_direct_answer_patterns": [
|
||||
"(?i)^отлично, фиксирую рабочую организацию",
|
||||
"(?i)^фиксирую рабочую организацию",
|
||||
"(?i)уточните организацию",
|
||||
"(?i)какой\\s+конкретн.*склад",
|
||||
"(?i)какой\\s+склад",
|
||||
"(?i)конкретн.*товар",
|
||||
"(?i)названи[ея]\\s+товар",
|
||||
"(?i)категор",
|
||||
"(?i)материал",
|
||||
"(?i)\\bMCP\\b",
|
||||
"(?i)route_candidate",
|
||||
"(?i)primitive",
|
||||
"(?i)planner_",
|
||||
"(?i)snapshot_items",
|
||||
"(?i)answer_object"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"clarification_resume",
|
||||
"inventory_root",
|
||||
"warehouse_not_required"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_05_historical_inventory_capability_no_warehouse_reask",
|
||||
"title": "Historical inventory capability follow-up stays human and does not ask for warehouse",
|
||||
"question": "а исторические остатки на другие даты умеешь?",
|
||||
"allowed_reply_types": [
|
||||
"factual",
|
||||
"factual_with_explanation"
|
||||
],
|
||||
"required_answer_patterns_any": [
|
||||
"(?i)историческ|история",
|
||||
"(?i)могу|умею"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)\\bMCP\\b",
|
||||
"(?i)route_candidate",
|
||||
"(?i)primitive",
|
||||
"(?i)planner_",
|
||||
"(?i)snapshot_items",
|
||||
"(?i)answer_object",
|
||||
"(?i)какой\\s+конкретн.*склад",
|
||||
"(?i)какой\\s+склад",
|
||||
"(?i)конкретн.*товар",
|
||||
"(?i)названи[ея]\\s+товар",
|
||||
"(?i)категор",
|
||||
"(?i)материал"
|
||||
],
|
||||
"criticality": "important",
|
||||
"semantic_tags": [
|
||||
"inventory_capability_meta",
|
||||
"warehouse_not_required"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_06_inventory_june_2017_after_capability",
|
||||
"title": "Month-only follow-up keeps inventory contour and selected organization",
|
||||
"question": "давай на июнь 2017",
|
||||
"allowed_reply_types": [
|
||||
"factual",
|
||||
"factual_with_explanation",
|
||||
"partial_coverage"
|
||||
],
|
||||
"expected_intents": [
|
||||
"inventory_on_hand_as_of_date"
|
||||
],
|
||||
"required_filters": {
|
||||
"as_of_date": "2017-06-30",
|
||||
"period_from": "2017-06-01",
|
||||
"period_to": "2017-06-30",
|
||||
"organization": "ООО Альтернатива Плюс"
|
||||
},
|
||||
"forbidden_filter_keys": [
|
||||
"warehouse",
|
||||
"item",
|
||||
"category"
|
||||
],
|
||||
"required_direct_answer_patterns_any": [
|
||||
"30\\.06\\.2017",
|
||||
"(?i)на складе|остат"
|
||||
],
|
||||
"forbidden_direct_answer_patterns": [
|
||||
"(?i)^отлично, фиксирую рабочую организацию",
|
||||
"(?i)уточните организацию",
|
||||
"(?i)какой\\s+конкретн.*склад",
|
||||
"(?i)какой\\s+склад",
|
||||
"(?i)конкретн.*товар",
|
||||
"(?i)названи[ея]\\s+товар",
|
||||
"(?i)категор",
|
||||
"(?i)материал",
|
||||
"(?i)\\bMCP\\b",
|
||||
"(?i)route_candidate",
|
||||
"(?i)primitive",
|
||||
"(?i)planner_",
|
||||
"(?i)snapshot_items",
|
||||
"(?i)answer_object"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"historical_inventory",
|
||||
"date_followup",
|
||||
"warehouse_not_required"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_07_inventory_march_2016_stays_root",
|
||||
"title": "Another short month stays in inventory root and organization scope",
|
||||
"question": "март 2016",
|
||||
"allowed_reply_types": [
|
||||
"factual",
|
||||
"factual_with_explanation",
|
||||
"partial_coverage"
|
||||
],
|
||||
"expected_intents": [
|
||||
"inventory_on_hand_as_of_date"
|
||||
],
|
||||
"required_filters": {
|
||||
"as_of_date": "2016-03-31",
|
||||
"period_from": "2016-03-01",
|
||||
"period_to": "2016-03-31",
|
||||
"organization": "ООО Альтернатива Плюс"
|
||||
},
|
||||
"forbidden_filter_keys": [
|
||||
"warehouse",
|
||||
"item",
|
||||
"category"
|
||||
],
|
||||
"required_direct_answer_patterns_any": [
|
||||
"31\\.03\\.2016",
|
||||
"(?i)на складе|остат"
|
||||
],
|
||||
"forbidden_direct_answer_patterns": [
|
||||
"(?i)^отлично, фиксирую рабочую организацию",
|
||||
"(?i)уточните организацию",
|
||||
"(?i)какой\\s+конкретн.*склад",
|
||||
"(?i)какой\\s+склад",
|
||||
"(?i)конкретн.*товар",
|
||||
"(?i)названи[ея]\\s+товар",
|
||||
"(?i)категор",
|
||||
"(?i)материал",
|
||||
"(?i)\\bMCP\\b",
|
||||
"(?i)route_candidate",
|
||||
"(?i)primitive",
|
||||
"(?i)planner_",
|
||||
"(?i)snapshot_items",
|
||||
"(?i)answer_object"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"historical_inventory",
|
||||
"date_followup",
|
||||
"warehouse_not_required"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
+207
@@ -0,0 +1,207 @@
|
||||
{
|
||||
"schema_version": "domain_truth_harness_spec_v1",
|
||||
"scenario_id": "address_truth_harness_phase102_debt_mirror_clean_scope_polarity",
|
||||
"domain": "address_phase102_debt_mirror_clean_scope_polarity",
|
||||
"title": "Phase 102 debt mirror clean-scope polarity replay",
|
||||
"description": "Focused semantic replay for the assistant-stage1-87gHJCwTI9 concern: mirrored 76.* settlement rows around Комитет государственных услуг must not look like the same clean debt in both directions. The assistant may disclose the mirrored/offset part, but the direct business answer must keep payables and receivables polarity clean.",
|
||||
"bindings": {},
|
||||
"steps": [
|
||||
{
|
||||
"step_id": "step_01_choose_company_scope",
|
||||
"title": "Select Альтернатива Плюс as active organization",
|
||||
"question": "Альтернатива Плюс",
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)альтернатива плюс",
|
||||
"(?i)зафиксир|работаем|организац"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)\\bMCP\\b",
|
||||
"(?i)route_candidate",
|
||||
"(?i)primitive",
|
||||
"(?i)planner_",
|
||||
"(?i)snapshot_items",
|
||||
"(?i)answer_object"
|
||||
],
|
||||
"criticality": "important",
|
||||
"semantic_tags": [
|
||||
"company_selected",
|
||||
"organization_scope"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_02_clean_payables_today",
|
||||
"title": "Clean payables root excludes mirrored settlement offset from direct answer",
|
||||
"question": "мы кому реально должны денег на сегодня? коротко, чистый долг к оплате, без встречных обеспечений как основного долга",
|
||||
"allowed_reply_types": [
|
||||
"factual",
|
||||
"factual_with_explanation"
|
||||
],
|
||||
"expected_intents": [
|
||||
"payables_confirmed_as_of_date"
|
||||
],
|
||||
"required_filters": {
|
||||
"as_of_date": "{{runtime.today_iso}}",
|
||||
"organization": "ООО Альтернатива Плюс"
|
||||
},
|
||||
"required_direct_answer_patterns_any": [
|
||||
"(?i)долг к оплате|должны|кредитор|к оплате"
|
||||
],
|
||||
"forbidden_direct_answer_patterns": [
|
||||
"(?i)комитет.*3\\s*[\\.,]?\\s*677\\s*[\\.,]?\\s*454",
|
||||
"(?i)3\\s*[\\.,]?\\s*677\\s*[\\.,]?\\s*454.*комитет"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)\\bMCP\\b",
|
||||
"(?i)route_candidate",
|
||||
"(?i)primitive",
|
||||
"(?i)planner_",
|
||||
"(?i)snapshot_items",
|
||||
"(?i)answer_object"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"payables_snapshot",
|
||||
"debt_mirror_clean_scope",
|
||||
"direct_answer_first"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_03_committee_payable_is_not_clean_debt",
|
||||
"title": "Committee payable check explains mirrored/offset nature instead of clean debt overclaim",
|
||||
"question": "а Комитету государственных услуг мы реально должны эти 3,6 млн или это встречное обеспечение/зачет? объясни именно по смыслу долга",
|
||||
"allowed_reply_types": [
|
||||
"factual",
|
||||
"factual_with_explanation",
|
||||
"partial_coverage"
|
||||
],
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)комитет",
|
||||
"(?i)встречн|обеспеч|зач[её]т|исключ|не.*чист|не.*основн"
|
||||
],
|
||||
"forbidden_direct_answer_patterns": [
|
||||
"(?i)^.*мы\\s+должны.*комитет.*3\\s*[\\.,]?\\s*677\\s*[\\.,]?\\s*454",
|
||||
"(?i)^.*комитет.*чист.*долг.*3\\s*[\\.,]?\\s*677\\s*[\\.,]?\\s*454"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)\\bMCP\\b",
|
||||
"(?i)route_candidate",
|
||||
"(?i)primitive",
|
||||
"(?i)planner_",
|
||||
"(?i)snapshot_items",
|
||||
"(?i)answer_object"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"payables_counterparty_check",
|
||||
"debt_mirror_clean_scope",
|
||||
"polarity_honesty"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_04_committee_receivable_is_not_clean_debt",
|
||||
"title": "Mirrored receivable question does not present the same amount as clean customer debt",
|
||||
"question": "а нам Комитет государственных услуг тоже должен 3,6 млн? это же та же сумма — скажи честно, это дебиторка или встречная часть?",
|
||||
"allowed_reply_types": [
|
||||
"factual",
|
||||
"factual_with_explanation",
|
||||
"partial_coverage"
|
||||
],
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)комитет",
|
||||
"(?i)встречн|обеспеч|зач[её]т|исключ|не.*чист|не.*основн|не.*дебитор"
|
||||
],
|
||||
"forbidden_direct_answer_patterns": [
|
||||
"(?i)^.*нам\\s+долж.*комитет.*3\\s*[\\.,]?\\s*677\\s*[\\.,]?\\s*454",
|
||||
"(?i)^.*комитет.*чист.*дебитор.*3\\s*[\\.,]?\\s*677\\s*[\\.,]?\\s*454"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)\\bMCP\\b",
|
||||
"(?i)route_candidate",
|
||||
"(?i)primitive",
|
||||
"(?i)planner_",
|
||||
"(?i)snapshot_items",
|
||||
"(?i)answer_object"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"receivables_counterparty_check",
|
||||
"debt_mirror_clean_scope",
|
||||
"polarity_honesty"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_05_clean_receivables_today",
|
||||
"title": "Clean receivables root excludes mirrored settlement offset from direct answer",
|
||||
"question": "тогда кто нам реально должен денег на сегодня? именно чистая дебиторка",
|
||||
"allowed_reply_types": [
|
||||
"factual",
|
||||
"factual_with_explanation"
|
||||
],
|
||||
"expected_intents": [
|
||||
"receivables_confirmed_as_of_date"
|
||||
],
|
||||
"required_filters": {
|
||||
"as_of_date": "{{runtime.today_iso}}",
|
||||
"organization": "ООО Альтернатива Плюс"
|
||||
},
|
||||
"required_direct_answer_patterns_any": [
|
||||
"(?i)нам должны|дебитор|задолж|долг"
|
||||
],
|
||||
"forbidden_direct_answer_patterns": [
|
||||
"(?i)комитет.*3\\s*[\\.,]?\\s*677\\s*[\\.,]?\\s*454",
|
||||
"(?i)3\\s*[\\.,]?\\s*677\\s*[\\.,]?\\s*454.*комитет"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)\\bMCP\\b",
|
||||
"(?i)route_candidate",
|
||||
"(?i)primitive",
|
||||
"(?i)planner_",
|
||||
"(?i)snapshot_items",
|
||||
"(?i)answer_object"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"receivables_snapshot",
|
||||
"debt_mirror_clean_scope",
|
||||
"direct_answer_first"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_06_payables_mirror_followup_keeps_clean_scope",
|
||||
"title": "Short mirror follow-up returns clean payables again, not the mirrored Committee amount",
|
||||
"question": "а мы кому?",
|
||||
"allowed_reply_types": [
|
||||
"factual",
|
||||
"factual_with_explanation"
|
||||
],
|
||||
"expected_intents": [
|
||||
"payables_confirmed_as_of_date"
|
||||
],
|
||||
"required_filters": {
|
||||
"as_of_date": "{{runtime.today_iso}}",
|
||||
"organization": "ООО Альтернатива Плюс"
|
||||
},
|
||||
"required_direct_answer_patterns_any": [
|
||||
"(?i)долг к оплате|должны|кредитор|к оплате"
|
||||
],
|
||||
"forbidden_direct_answer_patterns": [
|
||||
"(?i)комитет.*3\\s*[\\.,]?\\s*677\\s*[\\.,]?\\s*454",
|
||||
"(?i)3\\s*[\\.,]?\\s*677\\s*[\\.,]?\\s*454.*комитет"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)\\bMCP\\b",
|
||||
"(?i)route_candidate",
|
||||
"(?i)primitive",
|
||||
"(?i)planner_",
|
||||
"(?i)snapshot_items",
|
||||
"(?i)answer_object"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"settlements_mirror_followup",
|
||||
"payables_snapshot",
|
||||
"debt_mirror_clean_scope"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
+176
@@ -0,0 +1,176 @@
|
||||
{
|
||||
"schema_version": "domain_truth_harness_spec_v1",
|
||||
"scenario_id": "address_truth_harness_phase103_financial_role_purpose_arbitration",
|
||||
"domain": "address_phase103_financial_role_purpose_arbitration",
|
||||
"title": "Phase 103 financial role and purpose arbitration replay",
|
||||
"description": "Focused semantic replay for the Open-World Schema/Primitive Discovery slice: bank-like counterparties must be explained through confirmed 1C operation/purpose evidence and must not contaminate ordinary customer, supplier, revenue, or procurement semantics. The replay starts with a bare organization choice and ends with a normal counterparty value-flow canary.",
|
||||
"bindings": {},
|
||||
"steps": [
|
||||
{
|
||||
"step_id": "step_01_choose_company_scope",
|
||||
"title": "Bare organization choice binds active company scope",
|
||||
"question": "Альтернатива Плюс",
|
||||
"allowed_reply_types": [
|
||||
"factual_with_explanation",
|
||||
"partial_coverage"
|
||||
],
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)фиксир|рабоч.*организац|контур",
|
||||
"(?i)альтернатива"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)программ|продукт|услуг.*компан",
|
||||
"(?i)не могу определить",
|
||||
"(?i)route_candidate|primitive|planner_|catalog_|snapshot_items|answer_object"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"bare_org_scope",
|
||||
"phase102_canary"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_02_sberbank_role_purpose_summary",
|
||||
"title": "Sberbank role is answered by operation and purpose evidence",
|
||||
"question": "По СБЕРБАНКУ за 2020 покажи коротко: сколько денег входило и уходило, и что это по смыслу в 1С — клиентская выручка, поставщик, комиссия, кредит или другой финансовый поток?",
|
||||
"allowed_reply_types": [
|
||||
"factual",
|
||||
"factual_with_explanation",
|
||||
"partial_coverage"
|
||||
],
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)сбербанк|банк|финансов",
|
||||
"(?i)вход|поступ|исход|списан|ушл",
|
||||
"(?i)комисс|кредит|возврат|вид операц|назначен|договор",
|
||||
"(?i)не.*обычн.*клиент|не.*обычн.*поставщик|не.*клиентск.*выручк|нельзя.*читать"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)обычный поставщик.*сбербанк",
|
||||
"(?i)обычный клиент.*сбербанк",
|
||||
"(?i)главный поставщик.*сбербанк",
|
||||
"(?i)главный клиент.*сбербанк",
|
||||
"(?i)route_candidate|primitive|planner_|catalog_|snapshot_items|answer_object"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"financial_role_purpose",
|
||||
"bank_like_counterparty",
|
||||
"bank_operations_by_counterparty"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_03_sberbank_incoming_customer_boundary",
|
||||
"title": "Incoming Sberbank money is not overclaimed as customer revenue",
|
||||
"question": "Если СБЕРБАНК есть во входящих поступлениях, можно ли считать его нашим клиентом и выручкой? Скажи по подтвержденным строкам, без притягивания.",
|
||||
"allowed_reply_types": [
|
||||
"factual",
|
||||
"factual_with_explanation",
|
||||
"partial_coverage"
|
||||
],
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)сбербанк|банк",
|
||||
"(?i)не.*клиент|не.*выручк|нельзя.*считать|не подтвержд",
|
||||
"(?i)поступ|вид операц|договор|возврат|кредит|депозит|финансов"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)сбербанк.*обычный клиент",
|
||||
"(?i)сбербанк.*клиентская выручка",
|
||||
"(?i)точно.*выручка",
|
||||
"(?i)route_candidate|primitive|planner_|catalog_|snapshot_items|answer_object"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"bank_like_customer_boundary",
|
||||
"customer_revenue_and_payments"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_04_sberbank_outgoing_supplier_boundary",
|
||||
"title": "Outgoing Sberbank money is not overclaimed as supplier dependency",
|
||||
"question": "А если деньги уходили в СБЕРБАНК, это наш поставщик или финансовые списания? Раздели по смыслу и покажи основание.",
|
||||
"allowed_reply_types": [
|
||||
"factual",
|
||||
"factual_with_explanation",
|
||||
"partial_coverage"
|
||||
],
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)сбербанк|банк",
|
||||
"(?i)не.*поставщик|не.*обычн.*поставщик|финансов|банковск",
|
||||
"(?i)комисс|назначен|вид операц|списан|договор"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)сбербанк.*обычный поставщик",
|
||||
"(?i)главный поставщик.*сбербанк",
|
||||
"(?i)точно.*закупк",
|
||||
"(?i)route_candidate|primitive|planner_|catalog_|snapshot_items|answer_object"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"bank_like_supplier_boundary",
|
||||
"supplier_payouts_profile"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_05_business_overview_excludes_bank_role_overclaim",
|
||||
"title": "Business overview keeps bank leaders out of ordinary operating role overclaim",
|
||||
"question": "Теперь дай взрослый обзор за 2020 по компании: входящие, исходящие, нетто, топы, но банк в топах отдельно объясни как финансовый поток, если по назначению он не обычный клиент или поставщик.",
|
||||
"allowed_reply_types": [
|
||||
"factual",
|
||||
"factual_with_explanation",
|
||||
"partial_coverage"
|
||||
],
|
||||
"expected_catalog_alignment_status": "selected_matches_top",
|
||||
"expected_catalog_chain_top_match": "business_overview",
|
||||
"expected_catalog_selected_matches_top": true,
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)2020|компан|организац",
|
||||
"(?i)вход|поступ|исход|списан|нетто",
|
||||
"(?i)банк|сбербанк|финансов",
|
||||
"(?i)не.*обычн.*клиент|не.*обычн.*поставщик|не.*выручк|не.*закупк|назначен"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)сбербанк.*обычный поставщик",
|
||||
"(?i)сбербанк.*обычный клиент",
|
||||
"(?i)чистая прибыль.*точно",
|
||||
"(?i)route_candidate|primitive|planner_|catalog_|snapshot_items|answer_object"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"business_overview",
|
||||
"financial_role_purpose",
|
||||
"bank_like_counterparty"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_06_svk_value_flow_canary_after_bank_context",
|
||||
"title": "Normal counterparty net flow survives after bank-role context",
|
||||
"question": "А теперь отдельно по Группа СВК за 2020: сколько денег получили, сколько заплатили и какое нетто?",
|
||||
"allowed_reply_types": [
|
||||
"factual",
|
||||
"factual_with_explanation",
|
||||
"partial_coverage"
|
||||
],
|
||||
"expected_catalog_alignment_status": "selected_matches_top",
|
||||
"expected_catalog_chain_top_match": "value_flow_comparison",
|
||||
"expected_catalog_selected_matches_top": true,
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)свк|группа",
|
||||
"(?i)2020",
|
||||
"(?i)получ|вход|поступ",
|
||||
"(?i)заплат|исход|списан",
|
||||
"(?i)нетто|сальдо|разниц"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)сбербанк",
|
||||
"(?i)уточните организац|какую компанию",
|
||||
"(?i)route_candidate|primitive|planner_|catalog_|snapshot_items|answer_object"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"counterparty_net_cash_flow",
|
||||
"stale_scope_guard",
|
||||
"canary"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
+138
@@ -0,0 +1,138 @@
|
||||
{
|
||||
"schema_version": "domain_truth_harness_spec_v1",
|
||||
"scenario_id": "address_truth_harness_phase104_generic_role_tail_anchor_hygiene",
|
||||
"domain": "address_phase104_generic_role_tail_anchor_hygiene",
|
||||
"title": "Phase 104 generic role-tail anchor hygiene replay",
|
||||
"description": "Focused semantic replay for the Open-World Schema/Primitive Discovery slice: broad company overview wording may mention ordinary customer/supplier roles as business semantics, but generic role tails such as 'или поставщик' must not become a counterparty anchor or poison later bank/counterparty drilldowns.",
|
||||
"bindings": {},
|
||||
"steps": [
|
||||
{
|
||||
"step_id": "step_01_choose_company_scope",
|
||||
"title": "Bare organization choice binds active company scope",
|
||||
"question": "Альтернатива Плюс",
|
||||
"allowed_reply_types": [
|
||||
"factual_with_explanation",
|
||||
"partial_coverage"
|
||||
],
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)фиксир|рабоч.*организац|контур",
|
||||
"(?i)альтернатива"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)не могу определить",
|
||||
"(?i)route_candidate|primitive|planner_|catalog_|snapshot_items|answer_object"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"bare_org_scope",
|
||||
"phase102_canary"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_02_business_overview_role_tail_not_counterparty",
|
||||
"title": "Business overview role words do not become counterparty anchors",
|
||||
"question": "Теперь дай взрослый обзор за 2020 по компании: входящие, исходящие, нетто, топы, но банк в топах отдельно объясни как финансовый поток, если по назначению он не обычный клиент или поставщик.",
|
||||
"allowed_reply_types": [
|
||||
"factual",
|
||||
"factual_with_explanation",
|
||||
"partial_coverage"
|
||||
],
|
||||
"expected_catalog_alignment_status": "selected_matches_top",
|
||||
"expected_catalog_chain_top_match": "business_overview",
|
||||
"expected_catalog_selected_matches_top": true,
|
||||
"forbidden_filter_keys": [
|
||||
"counterparty"
|
||||
],
|
||||
"forbidden_filter_values": {
|
||||
"counterparty": [
|
||||
"или поставщик",
|
||||
"поставщик",
|
||||
"клиент",
|
||||
"обычный клиент",
|
||||
"обычный клиент или поставщик"
|
||||
]
|
||||
},
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)2020|компан|организац",
|
||||
"(?i)вход|поступ|исход|списан|нетто",
|
||||
"(?i)банк|сбербанк|финансов",
|
||||
"(?i)не.*обычн.*клиент|не.*обычн.*поставщик|не.*выручк|не.*закупк|назначен"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)сбербанк.*обычный поставщик",
|
||||
"(?i)сбербанк.*обычный клиент",
|
||||
"(?i)чистая прибыль.*точно",
|
||||
"(?i)route_candidate|primitive|planner_|catalog_|snapshot_items|answer_object"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"business_overview",
|
||||
"generic_role_tail_anchor_hygiene",
|
||||
"financial_role_purpose"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_03_sberbank_role_after_role_tail_overview",
|
||||
"title": "Bank-role drilldown still resolves Sberbank after role-tail overview",
|
||||
"question": "А отдельно по СБЕРБАНКУ: он для нас клиент, поставщик или финансовый поток? Дай коротко по подтвержденным строкам.",
|
||||
"allowed_reply_types": [
|
||||
"factual",
|
||||
"factual_with_explanation",
|
||||
"partial_coverage"
|
||||
],
|
||||
"required_filters": {
|
||||
"counterparty": "СБЕРБАНК"
|
||||
},
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)сбербанк|банк",
|
||||
"(?i)финансов|банковск|кредит|комисс|возврат|назначен|вид операц",
|
||||
"(?i)не.*обычн.*клиент|не.*обычн.*поставщик|не.*клиентск.*выручк|нельзя.*читать"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)или поставщик",
|
||||
"(?i)сбербанк.*обычный поставщик",
|
||||
"(?i)сбербанк.*обычный клиент",
|
||||
"(?i)route_candidate|primitive|planner_|catalog_|snapshot_items|answer_object"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"bank_like_counterparty",
|
||||
"financial_role_purpose",
|
||||
"post_overview_anchor_integrity"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_04_real_supplier_prefix_still_keeps_counterparty",
|
||||
"title": "Explicit supplier prefix still preserves a real counterparty",
|
||||
"question": "А теперь по поставщику Группа СВК за 2020: сколько мы ему заплатили и какой общий денежный смысл?",
|
||||
"allowed_reply_types": [
|
||||
"factual",
|
||||
"factual_with_explanation",
|
||||
"partial_coverage"
|
||||
],
|
||||
"expected_catalog_alignment_status": "selected_matches_top",
|
||||
"expected_catalog_chain_top_match": "value_flow",
|
||||
"expected_catalog_selected_matches_top": true,
|
||||
"required_filters": {
|
||||
"counterparty": "Группа СВК"
|
||||
},
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)свк|группа",
|
||||
"(?i)2020",
|
||||
"(?i)заплат|исход|списан|получ|поступ|нетто|смысл"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)или поставщик",
|
||||
"(?i)сбербанк",
|
||||
"(?i)уточните организац|какую компанию",
|
||||
"(?i)route_candidate|primitive|planner_|catalog_|snapshot_items|answer_object"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"counterparty_net_cash_flow",
|
||||
"supplier_prefix_canary",
|
||||
"stale_scope_guard"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
+429
@@ -0,0 +1,429 @@
|
||||
{
|
||||
"schema_version": "domain_truth_harness_spec_v1",
|
||||
"scenario_id": "address_truth_harness_phase105_mixed_schema_primitive_closure",
|
||||
"domain": "address_phase105_mixed_schema_primitive_closure",
|
||||
"title": "Phase 105 mixed schema/primitive closure replay",
|
||||
"description": "A broad live semantic replay for the Open-World Schema/Primitive Discovery module. It intentionally crosses old and new seams: inventory root clarification, historical inventory carryover, business overview role-tail hygiene, bank role/purpose boundaries, supplier payout wording, bidirectional value-flow, clean debt polarity, VAT continuity, and cash-flow-vs-profit answer shape.",
|
||||
"bindings": {},
|
||||
"steps": [
|
||||
{
|
||||
"step_id": "step_01_inventory_root_requires_company_only",
|
||||
"title": "Broad inventory root uses resolved organization and does not ask for warehouse",
|
||||
"question": "кайф - что там на складе по остаткам?",
|
||||
"allowed_reply_types": [
|
||||
"factual",
|
||||
"factual_with_explanation",
|
||||
"partial_coverage"
|
||||
],
|
||||
"expected_intents": [
|
||||
"inventory_on_hand_as_of_date"
|
||||
],
|
||||
"required_filters": {
|
||||
"as_of_date": "{{runtime.today_iso}}",
|
||||
"organization": "ООО Альтернатива Плюс"
|
||||
},
|
||||
"forbidden_filter_keys": [
|
||||
"warehouse",
|
||||
"item",
|
||||
"category",
|
||||
"counterparty"
|
||||
],
|
||||
"required_direct_answer_patterns_any": [
|
||||
"(?i)на складе|остат",
|
||||
"{{runtime.today_dot_regex}}"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)какой\\s+конкретн.*склад",
|
||||
"(?i)какой\\s+склад",
|
||||
"(?i)конкретн.*товар",
|
||||
"(?i)названи[ея]\\s+товар",
|
||||
"(?i)категор",
|
||||
"(?i)материал",
|
||||
"(?i)route_candidate|primitive|planner_|snapshot_items|answer_object"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"inventory_root",
|
||||
"resolved_organization_scope",
|
||||
"warehouse_not_required"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_02_redundant_company_choice_scope_ack",
|
||||
"title": "Redundant company choice only updates organization scope",
|
||||
"question": "АЛЬТЕРНАТИВА",
|
||||
"allowed_reply_types": [
|
||||
"factual_with_explanation",
|
||||
"partial_coverage"
|
||||
],
|
||||
"forbidden_filter_keys": [
|
||||
"warehouse",
|
||||
"item",
|
||||
"counterparty",
|
||||
"category"
|
||||
],
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)альтернатива плюс",
|
||||
"(?i)фиксир|организац|контур|компан"
|
||||
],
|
||||
"forbidden_direct_answer_patterns": [
|
||||
"(?i)уточните организацию",
|
||||
"(?i)какой\\s+конкретн.*склад",
|
||||
"(?i)какой\\s+склад",
|
||||
"(?i)конкретн.*товар",
|
||||
"(?i)названи[ея]\\s+товар",
|
||||
"(?i)категор",
|
||||
"(?i)материал",
|
||||
"(?i)route_candidate|primitive|planner_|snapshot_items|answer_object"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"redundant_scope_selection",
|
||||
"organization_scope",
|
||||
"warehouse_not_required"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_03_historical_inventory_meta",
|
||||
"title": "Historical inventory capability follow-up stays human",
|
||||
"question": "а исторические остатки на другие даты умеешь?",
|
||||
"allowed_reply_types": [
|
||||
"factual",
|
||||
"factual_with_explanation"
|
||||
],
|
||||
"required_answer_patterns_any": [
|
||||
"(?i)историческ|история",
|
||||
"(?i)могу|умею"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)какой\\s+конкретн.*склад",
|
||||
"(?i)какой\\s+склад",
|
||||
"(?i)конкретн.*товар",
|
||||
"(?i)названи[ея]\\s+товар",
|
||||
"(?i)категор",
|
||||
"(?i)материал",
|
||||
"(?i)route_candidate|primitive|planner_|snapshot_items|answer_object"
|
||||
],
|
||||
"criticality": "important",
|
||||
"semantic_tags": [
|
||||
"inventory_capability_meta",
|
||||
"warehouse_not_required"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_04_inventory_june_2017_followup",
|
||||
"title": "Month-only follow-up keeps inventory contour and selected organization",
|
||||
"question": "давай на июнь 2017",
|
||||
"allowed_reply_types": [
|
||||
"factual",
|
||||
"factual_with_explanation",
|
||||
"partial_coverage"
|
||||
],
|
||||
"expected_intents": [
|
||||
"inventory_on_hand_as_of_date"
|
||||
],
|
||||
"required_filters": {
|
||||
"as_of_date": "2017-06-30",
|
||||
"period_from": "2017-06-01",
|
||||
"period_to": "2017-06-30",
|
||||
"organization": "ООО Альтернатива Плюс"
|
||||
},
|
||||
"forbidden_filter_keys": [
|
||||
"warehouse",
|
||||
"item",
|
||||
"category"
|
||||
],
|
||||
"required_direct_answer_patterns_any": [
|
||||
"30\\.06\\.2017",
|
||||
"(?i)на складе|остат"
|
||||
],
|
||||
"forbidden_direct_answer_patterns": [
|
||||
"(?i)уточните организацию",
|
||||
"(?i)какой\\s+конкретн.*склад",
|
||||
"(?i)какой\\s+склад",
|
||||
"(?i)конкретн.*товар",
|
||||
"(?i)названи[ея]\\s+товар",
|
||||
"(?i)категор",
|
||||
"(?i)материал",
|
||||
"(?i)route_candidate|primitive|planner_|snapshot_items|answer_object"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"historical_inventory",
|
||||
"date_followup",
|
||||
"warehouse_not_required"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_05_business_overview_role_tail_hygiene",
|
||||
"title": "Business overview keeps role-tail words out of counterparty filters",
|
||||
"question": "Теперь дай взрослый обзор за 2020 по компании: входящие, исходящие, нетто, топы, но банк в топах отдельно объясни как финансовый поток, если по назначению он не обычный клиент или поставщик.",
|
||||
"allowed_reply_types": [
|
||||
"factual",
|
||||
"factual_with_explanation",
|
||||
"partial_coverage"
|
||||
],
|
||||
"expected_catalog_alignment_status": "selected_matches_top",
|
||||
"expected_catalog_chain_top_match": "business_overview",
|
||||
"expected_catalog_selected_matches_top": true,
|
||||
"forbidden_filter_keys": [
|
||||
"counterparty"
|
||||
],
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)2020|компан|организац",
|
||||
"(?i)вход|поступ|исход|списан|нетто",
|
||||
"(?i)банк|сбербанк|финансов",
|
||||
"(?i)не.*обычн.*клиент|не.*обычн.*поставщик|не.*выручк|не.*закупк|назначен"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)сбербанк.*обычный поставщик",
|
||||
"(?i)сбербанк.*обычный клиент",
|
||||
"(?i)route_candidate|primitive|planner_|snapshot_items|answer_object"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"business_overview",
|
||||
"generic_role_tail_anchor_hygiene"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_06_sberbank_role_after_overview",
|
||||
"title": "Sberbank role drilldown stays on bank-operation evidence",
|
||||
"question": "А отдельно по СБЕРБАНКУ: он для нас клиент, поставщик или финансовый поток? Дай коротко по подтвержденным строкам.",
|
||||
"allowed_reply_types": [
|
||||
"factual",
|
||||
"factual_with_explanation",
|
||||
"partial_coverage"
|
||||
],
|
||||
"required_filters": {
|
||||
"counterparty": "СБЕРБАНК"
|
||||
},
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)сбербанк|банк",
|
||||
"(?i)финансов|банковск|кредит|комисс|возврат|назначен|вид операц",
|
||||
"(?i)не.*обычн.*клиент|не.*обычн.*поставщик|не.*клиентск.*выручк|нельзя.*читать"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)или поставщик",
|
||||
"(?i)сбербанк.*обычный поставщик",
|
||||
"(?i)сбербанк.*обычный клиент",
|
||||
"(?i)route_candidate|primitive|planner_|snapshot_items|answer_object"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"bank_like_counterparty",
|
||||
"financial_role_purpose"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_07_supplier_payment_wording",
|
||||
"title": "Supplier payment wording routes as supplier payout, not population",
|
||||
"question": "А теперь по поставщику Группа СВК за 2020: сколько мы ему заплатили и какой общий денежный смысл?",
|
||||
"allowed_reply_types": [
|
||||
"factual",
|
||||
"factual_with_explanation",
|
||||
"partial_coverage"
|
||||
],
|
||||
"expected_intents": [
|
||||
"supplier_payouts_profile"
|
||||
],
|
||||
"expected_catalog_alignment_status": "selected_matches_top",
|
||||
"expected_catalog_chain_top_match": "value_flow",
|
||||
"expected_catalog_selected_matches_top": true,
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)свк|группа",
|
||||
"(?i)2020",
|
||||
"(?i)заплат|исход|списан|платеж|платёж|денежн|смысл"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)или поставщик",
|
||||
"(?i)сбербанк",
|
||||
"(?i)уточните организац|какую компанию",
|
||||
"(?i)route_candidate|primitive|planner_|snapshot_items|answer_object"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"supplier_prefix_canary",
|
||||
"value_flow"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_08_svk_bidirectional_value_flow",
|
||||
"title": "Normal counterparty bidirectional value flow survives after supplier-only ask",
|
||||
"question": "А теперь по Группа СВК за 2020: сколько денег получили, сколько заплатили и какое нетто?",
|
||||
"allowed_reply_types": [
|
||||
"factual",
|
||||
"factual_with_explanation",
|
||||
"partial_coverage"
|
||||
],
|
||||
"expected_catalog_alignment_status": "selected_matches_top",
|
||||
"expected_catalog_chain_top_match": "value_flow_comparison",
|
||||
"expected_catalog_selected_matches_top": true,
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)свк",
|
||||
"(?i)2020",
|
||||
"(?i)получ|вход|поступ",
|
||||
"(?i)заплат|исход|списан",
|
||||
"(?i)нетто|сальдо|разниц"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)сбербанк",
|
||||
"(?i)уточните организац|какую компанию",
|
||||
"(?i)route_candidate|primitive|planner_|snapshot_items|answer_object"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"counterparty_net_cash_flow",
|
||||
"stale_scope_guard"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_09_clean_payables_scope",
|
||||
"title": "Clean payables question keeps organization scope and debt polarity",
|
||||
"question": "кому мы должны на конец 2020?",
|
||||
"allowed_reply_types": [
|
||||
"factual",
|
||||
"factual_with_explanation",
|
||||
"partial_coverage"
|
||||
],
|
||||
"expected_intents": [
|
||||
"payables_confirmed_as_of_date"
|
||||
],
|
||||
"required_filters": {
|
||||
"as_of_date": "2020-12-31",
|
||||
"organization": "ООО Альтернатива Плюс"
|
||||
},
|
||||
"forbidden_filter_keys": [
|
||||
"counterparty"
|
||||
],
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)должн|кредитор|кредиторск|поставщик|обязательств",
|
||||
"(?i)2020|31\\.12\\.2020|конец"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)нам должны.*мы должны",
|
||||
"(?i)route_candidate|primitive|planner_|snapshot_items|answer_object"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"debt_polarity",
|
||||
"payables"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_10_clean_receivables_scope",
|
||||
"title": "Mirror receivables follow-up switches polarity cleanly",
|
||||
"question": "а нам кто должен на конец 2020?",
|
||||
"allowed_reply_types": [
|
||||
"factual",
|
||||
"factual_with_explanation",
|
||||
"partial_coverage"
|
||||
],
|
||||
"expected_intents": [
|
||||
"receivables_confirmed_as_of_date"
|
||||
],
|
||||
"required_filters": {
|
||||
"as_of_date": "2020-12-31",
|
||||
"organization": "ООО Альтернатива Плюс"
|
||||
},
|
||||
"forbidden_filter_keys": [
|
||||
"counterparty"
|
||||
],
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)нам.*долж|дебитор|дебиторск|покупател|заказчик",
|
||||
"(?i)2020|31\\.12\\.2020|конец"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)мы должны.*нам должны",
|
||||
"(?i)route_candidate|primitive|planner_|snapshot_items|answer_object"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"debt_polarity",
|
||||
"receivables"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_11_vat_tax_period_continuity",
|
||||
"title": "VAT tax-period exact question survives after debt/value-flow pivots",
|
||||
"question": "сколько НДС надо заплатить в налоговую за декабрь 2019?",
|
||||
"allowed_reply_types": [
|
||||
"factual",
|
||||
"factual_with_explanation",
|
||||
"partial_coverage"
|
||||
],
|
||||
"expected_intents": [
|
||||
"vat_liability_confirmed_for_tax_period"
|
||||
],
|
||||
"required_filters": {
|
||||
"period_from": "2019-10-01",
|
||||
"period_to": "2019-12-31",
|
||||
"organization": "ООО Альтернатива Плюс"
|
||||
},
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)ндс",
|
||||
"(?i)декабр|2019",
|
||||
"(?i)налог|заплат|уплат|к уплате|не найден"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)route_candidate|primitive|planner_|snapshot_items|answer_object"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"vat_continuity",
|
||||
"tax_period"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_12_earnings_wording_to_business_overview",
|
||||
"title": "Organization earnings slang routes to business overview, not customer ranking",
|
||||
"question": "скока денег альтернатива заработала за 20 год?",
|
||||
"allowed_reply_types": [
|
||||
"factual",
|
||||
"factual_with_explanation",
|
||||
"partial_coverage"
|
||||
],
|
||||
"expected_catalog_alignment_status": "selected_matches_top",
|
||||
"expected_catalog_chain_top_match": "business_overview",
|
||||
"expected_catalog_selected_matches_top": true,
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)альтернатива|компан|организац",
|
||||
"(?i)2020",
|
||||
"(?i)поступ|вход|денег|заработ",
|
||||
"(?i)не.*прибыл|не.*чист"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)route_candidate|primitive|planner_|snapshot_items|answer_object"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"business_overview",
|
||||
"earnings_wording"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_13_profit_followup_boundary",
|
||||
"title": "Profit follow-up distinguishes cash-flow net from clean profit",
|
||||
"question": "а это чистая прибыль?",
|
||||
"allowed_reply_types": [
|
||||
"factual",
|
||||
"factual_with_explanation",
|
||||
"partial_coverage"
|
||||
],
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)не.*чист.*прибыл|не.*является.*прибыл|это.*не.*прибыл",
|
||||
"(?i)поступ|денежн|cash|нетто|расход|себестоим|закрытие"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)это чистая прибыль",
|
||||
"(?i)точно.*прибыл",
|
||||
"(?i)route_candidate|primitive|planner_|snapshot_items|answer_object"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"profit_boundary",
|
||||
"business_overview_followup"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
+144
@@ -0,0 +1,144 @@
|
||||
{
|
||||
"schema_version": "domain_truth_harness_spec_v1",
|
||||
"scenario_id": "address_truth_harness_phase99_large_query_budget_continuation",
|
||||
"domain": "address_phase99_large_query_budget_continuation",
|
||||
"title": "Phase 99 large-query budget and continuation policy replay",
|
||||
"description": "Focused semantic replay for explicit-year large business questions: the assistant should use chunked 1C evidence where available, answer direct-first, avoid fake profit claims, keep bank/counterparty boundaries, and not collapse into row-limit refusal wording when yearly money coverage can be recovered.",
|
||||
"bindings": {},
|
||||
"steps": [
|
||||
{
|
||||
"step_id": "step_01_year_business_overview_uses_chunked_money_evidence",
|
||||
"title": "Explicit-year business overview gives direct money summary without row-limit refusal",
|
||||
"question": "Дай взрослый бизнес-обзор ООО Альтернатива Плюс за 2020: входящие, исходящие, нетто, кто основные источники денег и где важные ограничения.",
|
||||
"allowed_reply_types": [
|
||||
"factual",
|
||||
"factual_with_explanation",
|
||||
"partial_coverage"
|
||||
],
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)альтернатива",
|
||||
"(?i)2020",
|
||||
"(?i)входящ|поступлен",
|
||||
"(?i)исходящ|списан|платеж",
|
||||
"(?i)нетто|денежн",
|
||||
"(?i)прибыл|не.*прибыл|не.*бухгалтерск"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)уп[её]р.*лимит",
|
||||
"(?i)лимит выборки",
|
||||
"(?i)лимит строк",
|
||||
"(?i)\\bMCP\\b",
|
||||
"(?i)route_candidate",
|
||||
"(?i)primitive",
|
||||
"(?i)planner_",
|
||||
"(?i)catalog_",
|
||||
"(?i)snapshot_items",
|
||||
"(?i)answer_object"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"business_overview",
|
||||
"large_query_budget",
|
||||
"direct_answer_first"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_02_followup_profit_boundary_stays_short",
|
||||
"title": "Follow-up keeps cash-flow versus profit boundary",
|
||||
"question": "То есть это можно считать прибылью за 2020 или нет? Коротко.",
|
||||
"allowed_reply_types": [
|
||||
"factual",
|
||||
"factual_with_explanation",
|
||||
"partial_coverage"
|
||||
],
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)нет|нельзя|не стоит",
|
||||
"(?i)прибыл",
|
||||
"(?i)денежн|поступлен|поток",
|
||||
"(?i)себестоим|расход|финрезультат|бухгалтерск"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)\\bMCP\\b",
|
||||
"(?i)route_candidate",
|
||||
"(?i)primitive",
|
||||
"(?i)planner_",
|
||||
"(?i)catalog_",
|
||||
"(?i)snapshot_items",
|
||||
"(?i)answer_object"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"profit_boundary",
|
||||
"followup_directness",
|
||||
"business_language"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_03_top_money_source_keeps_bank_boundary",
|
||||
"title": "Top money source keeps bank boundary after broad overview",
|
||||
"question": "А кто за 2020 принес больше всего денег, и если там банк, не называй его обычным клиентом.",
|
||||
"allowed_reply_types": [
|
||||
"factual",
|
||||
"factual_with_explanation",
|
||||
"partial_coverage"
|
||||
],
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)2020",
|
||||
"(?i)деньг|поступлен|входящ",
|
||||
"(?i)сбербанк|банк|финансов|не.*обычн|не.*клиент"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)сбербанк.*обычн.*клиент",
|
||||
"(?i)сбербанк.*главн.*клиент",
|
||||
"(?i)уп[её]р.*лимит",
|
||||
"(?i)лимит выборки",
|
||||
"(?i)лимит строк",
|
||||
"(?i)\\bMCP\\b",
|
||||
"(?i)route_candidate",
|
||||
"(?i)primitive",
|
||||
"(?i)planner_",
|
||||
"(?i)catalog_"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"financial_counterparty_flow_hint",
|
||||
"large_query_budget",
|
||||
"context_continuity"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_04_supplier_dependency_uses_checked_outgoing_scope",
|
||||
"title": "Supplier-dependency question uses checked outgoing scope and avoids hard audit overclaim",
|
||||
"question": "По исходящим за 2020 есть зависимость от одного поставщика или это только денежная концентрация?",
|
||||
"allowed_reply_types": [
|
||||
"factual",
|
||||
"factual_with_explanation",
|
||||
"partial_coverage"
|
||||
],
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)2020",
|
||||
"(?i)исходящ|платеж|списан",
|
||||
"(?i)поставщик|получател|концентрац",
|
||||
"(?i)не.*аудит|не.*полный|не.*надежност|не.*качество"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)сбербанк.*обычн.*поставщик",
|
||||
"(?i)сбербанк.*главн.*поставщик",
|
||||
"(?i)уп[её]р.*лимит",
|
||||
"(?i)лимит выборки",
|
||||
"(?i)лимит строк",
|
||||
"(?i)\\bMCP\\b",
|
||||
"(?i)route_candidate",
|
||||
"(?i)primitive",
|
||||
"(?i)planner_",
|
||||
"(?i)catalog_"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"vendor_risk_procurement_quality",
|
||||
"large_query_budget",
|
||||
"business_language"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user