Починить Hm-прогон ассистента по НДС, остаткам и MCP-ответам

This commit is contained in:
2026-05-25 22:51:15 +03:00
parent 36f7b4df03
commit c577ac6b00
37 changed files with 2066 additions and 371 deletions
@@ -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"]
}
]
}
@@ -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"]
}
]
}
]
}