Починить Hm-прогон ассистента по НДС, остаткам и MCP-ответам
This commit is contained in:
@@ -0,0 +1,138 @@
|
||||
{
|
||||
"schema_version": "domain_truth_harness_spec_v1",
|
||||
"scenario_id": "assistant_stage1_hm_vat_period_oldstock_regression_20260525",
|
||||
"domain": "assistant_stage1_hm_vat_period_oldstock_regression",
|
||||
"title": "GUI Hm VAT explicit period and factual old-stock replay",
|
||||
"description": "Focused replay for assistant-stage1-HmCqi80Vkb: explicit VAT month questions after an inventory purchase-date bridge must not reuse the old purchase date, and old-stock aging must be grounded in factual positive stock rather than earliest historical purchases.",
|
||||
"bindings": {
|
||||
"organization": "ООО \"Альтернатива Плюс\"",
|
||||
"focus_item": "Рабочая станция универсального специалиста (индивидуальное изготовление)"
|
||||
},
|
||||
"steps": [
|
||||
{
|
||||
"step_id": "s01_current_stock_for_org",
|
||||
"title": "Current inventory snapshot for organization",
|
||||
"question": "Какие остатки на складе у ООО \"Альтернатива Плюс\"?",
|
||||
"allowed_reply_types": ["factual"],
|
||||
"expected_intents": ["inventory_on_hand_as_of_date"],
|
||||
"expected_recipe": "address_inventory_on_hand_as_of_date_v1",
|
||||
"required_direct_answer_patterns_any": ["остат", "склад"],
|
||||
"forbidden_answer_patterns": ["(?m)^Коротко:", "(?i)capability_id", "(?i)mcp_discovery"],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": ["inventory", "organization_scope"]
|
||||
},
|
||||
{
|
||||
"step_id": "s02_historical_stock_march_2016",
|
||||
"title": "Historical inventory snapshot from Hm run",
|
||||
"question": "март 2016",
|
||||
"allowed_reply_types": ["factual"],
|
||||
"expected_intents": ["inventory_on_hand_as_of_date"],
|
||||
"expected_recipe": "address_inventory_on_hand_as_of_date_v1",
|
||||
"required_filters": {
|
||||
"period_from": "2016-03-01",
|
||||
"period_to": "2016-03-31",
|
||||
"as_of_date": "2016-03-31"
|
||||
},
|
||||
"required_direct_answer_patterns_any": ["31\\.03\\.2016", "Рабочая станция"],
|
||||
"forbidden_answer_patterns": ["(?m)^Коротко:", "(?i)capability_id", "(?i)mcp_discovery"],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": ["inventory", "historical_snapshot", "date_carryover"]
|
||||
},
|
||||
{
|
||||
"step_id": "s03_selected_item_purchase_provenance",
|
||||
"title": "Selected workstation purchase provenance",
|
||||
"question": "По выбранному объекту \"Рабочая станция универсального специалиста (индивидуальное изготовление)\": где взяли это?",
|
||||
"allowed_reply_types": ["factual", "partial_coverage"],
|
||||
"expected_intents": ["inventory_purchase_provenance_for_item"],
|
||||
"expected_recipe": "address_inventory_purchase_provenance_for_item_v1",
|
||||
"required_filters": {
|
||||
"item": "Рабочая станция универсального специалиста (индивидуальное изготовление)",
|
||||
"as_of_date": "2016-03-31"
|
||||
},
|
||||
"required_direct_answer_patterns_any": ["Рабочая станция", "поставщик|закуп"],
|
||||
"forbidden_answer_patterns": ["(?m)^Коротко:", "(?i)capability_id", "(?i)mcp_discovery", "контрагент:\\s*Рабочая станция универсального специалиста"],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": ["inventory", "selected_object", "purchase_provenance"]
|
||||
},
|
||||
{
|
||||
"step_id": "s04_selected_item_sale_trace",
|
||||
"title": "Selected workstation sale trace follow-up",
|
||||
"question": "а кому продали?",
|
||||
"allowed_reply_types": ["factual", "partial_coverage"],
|
||||
"expected_intents": ["inventory_sale_trace_for_item"],
|
||||
"expected_recipe": "address_inventory_sale_trace_for_item_v1",
|
||||
"required_direct_answer_patterns_any": ["Комитет государственных услуг", "без партионного учета"],
|
||||
"forbidden_answer_patterns": ["(?m)^Коротко:", "(?i)capability_id", "(?i)mcp_discovery", "контрагент:\\s*Рабочая станция универсального специалиста"],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": ["inventory", "selected_object", "sale_trace"]
|
||||
},
|
||||
{
|
||||
"step_id": "s05_item_field_truth_meta",
|
||||
"title": "Item versus counterparty field-truth meta check",
|
||||
"question": "у тебя написано кто контрагент: рабочая станция - это ошибка?",
|
||||
"allowed_reply_types": ["chat", "factual", "factual_with_explanation", "partial_coverage"],
|
||||
"required_direct_answer_patterns_any": ["товар", "не контрагент"],
|
||||
"forbidden_answer_patterns": ["(?m)^Коротко:", "(?i)capability_id", "(?i)mcp_discovery"],
|
||||
"criticality": "warning",
|
||||
"semantic_tags": ["field_truth", "item_vs_counterparty"]
|
||||
},
|
||||
{
|
||||
"step_id": "s06_vat_purchase_date_bridge",
|
||||
"title": "VAT by selected item purchase date bridge",
|
||||
"question": "ндс можешь прикинуть на дату покупки рабочей станции?",
|
||||
"allowed_reply_types": ["factual", "partial_coverage"],
|
||||
"expected_intents": ["vat_liability_confirmed_for_tax_period"],
|
||||
"expected_recipe": "address_vat_liability_confirmed_tax_period_v1",
|
||||
"required_direct_answer_patterns_any": ["НДС", "05\\.02\\.2015", "дата закупки|дата покупки"],
|
||||
"forbidden_answer_patterns": ["(?m)^Коротко:", "(?i)capability_id", "(?i)mcp_discovery"],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": ["vat", "purchase_date_bridge", "temporal_honesty"]
|
||||
},
|
||||
{
|
||||
"step_id": "s07_vat_explicit_march_2020",
|
||||
"title": "Explicit March 2020 VAT must override purchase-date bridge",
|
||||
"question": "а какой ндс мы должны сгрузить на март 2020?",
|
||||
"allowed_reply_types": ["factual", "partial_coverage"],
|
||||
"expected_intents": ["vat_liability_confirmed_for_tax_period"],
|
||||
"expected_recipe": "address_vat_liability_confirmed_tax_period_v1",
|
||||
"required_direct_answer_patterns_any": ["НДС", "2020"],
|
||||
"forbidden_answer_patterns": ["(?m)^Коротко:", "05\\.02\\.2015", "дата закупки", "дата покупки", "(?i)capability_id", "(?i)mcp_discovery"],
|
||||
"forbidden_filter_values": {
|
||||
"period_from": ["2015-01-01", "2015-02-01"],
|
||||
"period_to": ["2015-03-31", "2015-02-28"],
|
||||
"purchase_date_bridge_selected": ["2015-02-05"]
|
||||
},
|
||||
"criticality": "critical",
|
||||
"semantic_tags": ["vat", "explicit_period_override", "temporal_honesty"]
|
||||
},
|
||||
{
|
||||
"step_id": "s08_vat_explicit_february_2017",
|
||||
"title": "Explicit February 2017 VAT must override purchase-date bridge",
|
||||
"question": "прикинь какой ндс нам надо заплатить на февраль 2017",
|
||||
"allowed_reply_types": ["factual", "partial_coverage"],
|
||||
"expected_intents": ["vat_liability_confirmed_for_tax_period"],
|
||||
"expected_recipe": "address_vat_liability_confirmed_tax_period_v1",
|
||||
"required_direct_answer_patterns_any": ["НДС", "2017"],
|
||||
"forbidden_answer_patterns": ["(?m)^Коротко:", "05\\.02\\.2015", "дата закупки", "дата покупки", "(?i)capability_id", "(?i)mcp_discovery"],
|
||||
"forbidden_filter_values": {
|
||||
"period_from": ["2015-01-01", "2015-02-01"],
|
||||
"period_to": ["2015-03-31", "2015-02-28"],
|
||||
"purchase_date_bridge_selected": ["2015-02-05"]
|
||||
},
|
||||
"criticality": "critical",
|
||||
"semantic_tags": ["vat", "explicit_period_override", "temporal_honesty"]
|
||||
},
|
||||
{
|
||||
"step_id": "s09_old_stock_factual_positive_stock",
|
||||
"title": "Old stock aging must be based on factual positive stock",
|
||||
"question": "Есть ли у ООО \"Альтернатива Плюс\" остатки товара, которые закупались очень давно",
|
||||
"allowed_reply_types": ["factual", "partial_coverage"],
|
||||
"expected_intents": ["inventory_aging_by_purchase_date"],
|
||||
"expected_recipe": "address_inventory_aging_by_purchase_date_v1",
|
||||
"required_direct_answer_patterns_any": ["положительн", "остат", "давно закуп"],
|
||||
"forbidden_answer_patterns": ["(?m)^Коротко:", "Позиций в выборке:\\s*390", "(?i)capability_id", "(?i)mcp_discovery"],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": ["inventory", "old_stock", "positive_stock_basis"]
|
||||
}
|
||||
]
|
||||
}
|
||||
+135
@@ -0,0 +1,135 @@
|
||||
{
|
||||
"schema_version": "domain_scenario_pack_v1",
|
||||
"pack_id": "assistant_stage1_y9_inventory_selected_object_regression_20260525",
|
||||
"domain": "inventory_selected_object_reliability",
|
||||
"title": "GUI Y9 inventory selected-object regression proof",
|
||||
"description": "Focused replay for assistant-stage1-Y9qmtnz66r: inventory snapshot, selected item provenance, sale trace, field-truth meta question, VAT carryover from ambiguous purchase dates, and old-stock aging.",
|
||||
"analysis_context": {
|
||||
"as_of_date": "2026-05-25",
|
||||
"source": "assistant-stage1-Y9qmtnz66r"
|
||||
},
|
||||
"bindings": {
|
||||
"organization_alias": "АЛЬТЕРНАТИВА",
|
||||
"organization": "ООО \"Альтернатива Плюс\"",
|
||||
"historical_month": "март 2016",
|
||||
"historical_as_of_date": "2016-03-31",
|
||||
"focus_item": "Рабочая станция универсального специалиста (индивидуальное изготовление)",
|
||||
"known_buyer": "Комитет государственных услуг г. Москвы"
|
||||
},
|
||||
"scenarios": [
|
||||
{
|
||||
"scenario_id": "inventory_selected_item_provenance_chain",
|
||||
"title": "Inventory selected item provenance chain from GUI run Y9",
|
||||
"description": "Validates that the assistant keeps organization/date/item carryover from a historical stock snapshot and answers selected-object provenance without confusing item, counterparty, lot trace, and purchase-date VAT semantics.",
|
||||
"steps": [
|
||||
{
|
||||
"step_id": "s01_stock_now_for_org",
|
||||
"title": "Current stock for explicit organization",
|
||||
"node_role": "root",
|
||||
"question": "Какие остатки на складе у {{bindings.organization}}?",
|
||||
"semantic_tags": ["inventory", "organization_scope"],
|
||||
"required_answer_shape": "direct_answer_first",
|
||||
"required_answer_patterns_all": ["остат", "Альтернатива"],
|
||||
"forbidden_answer_patterns": ["(?i)capability_id", "(?i)runtime_", "(?i)mcp_discovery"]
|
||||
},
|
||||
{
|
||||
"step_id": "s02_historical_stock_march_2016",
|
||||
"title": "Historical stock snapshot",
|
||||
"question": "остатки на {{bindings.historical_month}}",
|
||||
"depends_on": ["s01_stock_now_for_org"],
|
||||
"semantic_tags": ["inventory", "date_carryover", "historical_snapshot"],
|
||||
"required_answer_shape": "direct_answer_first",
|
||||
"required_answer_patterns_all": ["31.03.2016", "Рабочая станция"],
|
||||
"forbidden_answer_patterns": ["(?i)capability_id", "(?i)runtime_", "(?i)mcp_discovery"]
|
||||
},
|
||||
{
|
||||
"step_id": "s03_selected_item_purchase_provenance",
|
||||
"title": "Selected item purchase provenance",
|
||||
"question": "По выбранному объекту \"{{bindings.focus_item}}\": где взяли это?",
|
||||
"depends_on": ["s02_historical_stock_march_2016"],
|
||||
"semantic_tags": ["inventory", "selected_object", "purchase_provenance", "field_truth"],
|
||||
"required_answer_shape": "direct_answer_first",
|
||||
"required_answer_patterns_all": ["Рабочая станция", "Поставщики", "05.02.2015"],
|
||||
"forbidden_answer_patterns": ["(?i)capability_id", "(?i)runtime_", "(?i)mcp_discovery", "контрагент:\\s*{{bindings.focus_item}}"]
|
||||
},
|
||||
{
|
||||
"step_id": "s04_selected_item_sale_trace",
|
||||
"title": "Selected item sale trace follow-up",
|
||||
"question": "а кому продали?",
|
||||
"depends_on": ["s03_selected_item_purchase_provenance"],
|
||||
"semantic_tags": ["inventory", "selected_object", "sale_trace", "pronoun_followup"],
|
||||
"required_answer_shape": "direct_answer_first",
|
||||
"required_answer_patterns_all": ["Рабочая станция", "Комитет государственных услуг", "без партионного учета"],
|
||||
"forbidden_answer_patterns": ["(?i)capability_id", "(?i)runtime_", "(?i)mcp_discovery", "контрагент:\\s*{{bindings.focus_item}}"]
|
||||
},
|
||||
{
|
||||
"step_id": "s05_item_counterparty_field_truth_meta",
|
||||
"title": "Field-truth correction for item versus counterparty",
|
||||
"question": "у тебя написано кто контрагент: рабочая станция - это ошибка?",
|
||||
"depends_on": ["s04_selected_item_sale_trace"],
|
||||
"semantic_tags": ["field_truth", "item_vs_counterparty", "answer_inspection"],
|
||||
"required_answer_shape": "direct_answer_first",
|
||||
"required_answer_patterns_all": ["товар", "не контрагент"],
|
||||
"forbidden_answer_patterns": ["(?i)capability_id", "(?i)runtime_", "(?i)mcp_discovery"]
|
||||
},
|
||||
{
|
||||
"step_id": "s06_vat_by_ambiguous_purchase_date",
|
||||
"title": "VAT period from ambiguous purchase date must disclose basis",
|
||||
"question": "ндс можешь прикинуть на дату покупки рабочей станции?",
|
||||
"depends_on": ["s03_selected_item_purchase_provenance", "s05_item_counterparty_field_truth_meta"],
|
||||
"semantic_tags": ["vat", "date_carryover", "purchase_date_carryover", "field_truth", "temporal_honesty"],
|
||||
"required_answer_shape": "direct_answer_first",
|
||||
"required_answer_patterns_all": ["НДС", "первую подтвержденную дату закупки", "05.02.2015", "несколько подтвержденных дат закупки"],
|
||||
"forbidden_answer_patterns": ["(?i)capability_id", "(?i)runtime_", "(?i)mcp_discovery", "это единственная возможная дата"]
|
||||
},
|
||||
{
|
||||
"step_id": "s07_vat_first_confirmed_purchase",
|
||||
"title": "VAT recalculation by first confirmed purchase date",
|
||||
"question": "если у нее несколько закупок, посчитай по первой подтвержденной покупке",
|
||||
"depends_on": ["s06_vat_by_ambiguous_purchase_date"],
|
||||
"semantic_tags": ["vat", "purchase_date_carryover", "first_purchase"],
|
||||
"required_answer_shape": "direct_answer_first",
|
||||
"required_answer_patterns_all": ["НДС", "первую подтвержденную дату закупки", "05.02.2015", "01.02.2015", "28.02.2015"],
|
||||
"forbidden_answer_patterns": ["(?i)capability_id", "(?i)runtime_", "(?i)mcp_discovery"]
|
||||
},
|
||||
{
|
||||
"step_id": "s08_vat_last_confirmed_purchase",
|
||||
"title": "VAT recalculation by last confirmed purchase date",
|
||||
"question": "а теперь по последней подтвержденной покупке",
|
||||
"depends_on": ["s07_vat_first_confirmed_purchase"],
|
||||
"semantic_tags": ["vat", "purchase_date_carryover", "last_purchase"],
|
||||
"required_answer_shape": "direct_answer_first",
|
||||
"required_answer_patterns_all": ["НДС", "последнюю подтвержденную дату закупки", "22.07.2015", "01.07.2015", "31.07.2015"],
|
||||
"forbidden_answer_patterns": ["(?i)capability_id", "(?i)runtime_", "(?i)mcp_discovery"]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"scenario_id": "inventory_old_stock_aging_from_y9",
|
||||
"title": "Old stock aging question from GUI run Y9",
|
||||
"description": "Validates old-stock answer shape, date basis, and supplier/item field truth for broad aging question.",
|
||||
"steps": [
|
||||
{
|
||||
"step_id": "s01_old_stock_aging_for_org",
|
||||
"title": "Old stock aging answer for explicit organization",
|
||||
"node_role": "root",
|
||||
"question": "Есть ли у {{bindings.organization}} остатки товара, которые закупались очень давно",
|
||||
"semantic_tags": ["inventory", "aging", "supplier_provenance", "field_truth"],
|
||||
"required_answer_shape": "direct_answer_first",
|
||||
"required_answer_patterns_all": ["самым старым закупкам", "05.11.2014", "Альтернатива"],
|
||||
"forbidden_answer_patterns": ["(?i)capability_id", "(?i)runtime_", "(?i)mcp_discovery", "контрагент:\\s*Стенд информационный"]
|
||||
},
|
||||
{
|
||||
"step_id": "s02_old_stock_same_date_followup",
|
||||
"title": "Old stock same-date follow-up should keep inventory date basis",
|
||||
"question": "какие остатки по товарам на эту дату относятся к старым закупкам?",
|
||||
"depends_on": ["s01_old_stock_aging_for_org"],
|
||||
"semantic_tags": ["inventory", "aging", "followup_date_carryover"],
|
||||
"required_answer_shape": "direct_answer_first",
|
||||
"required_answer_patterns_all": ["самым старым закупкам", "05.11.2014", "Альтернатива"],
|
||||
"forbidden_answer_patterns": ["(?i)capability_id", "(?i)runtime_", "(?i)mcp_discovery"]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user