Post-F: закрепить семантическую целостность MCP-цепочек
This commit is contained in:
+7
-1
@@ -154,7 +154,7 @@ This phase is only healthy when the following are true:
|
||||
5. exact route success cannot silently degrade into a semantically wrong user answer;
|
||||
6. replay verdict is based first on human business meaning, only then on technical internals.
|
||||
|
||||
## Current Status - 2026-04-23
|
||||
## Current Status - 2026-04-24
|
||||
|
||||
This phase is already active in runtime code and replay-backed.
|
||||
|
||||
@@ -164,6 +164,10 @@ Materially hardened in this pass:
|
||||
- explicit one-organization open value-flow asks now stop for organization clarification instead of answering a global total under missing scope;
|
||||
- incoming-vs-outgoing money comparisons now defer away from one-sided exact supplier/customer recipes into the bounded bidirectional value-flow discovery path;
|
||||
- document asks with numeric counterparty suffixes such as `Жуковка 51` no longer collapse into bank-operation routing only because the suffix looks like account `51`;
|
||||
- rejected LLM predecompose rewrites can no longer inject account scope or truncated semantic hints for numeric counterparty suffixes such as `Жуковке 51`; the session state now keeps the counterparty anchor and does not carry `account: 51`;
|
||||
- explicit raw entity search after a ranking/value-flow dialogue now resets stale assistant/followup scope: `Найди в 1С Группу СВК` becomes `source_signal=raw_text` with `explicit_entity_candidates=["Группа СВК"]`, no stale organization/date/ranking scope in the discovery turn input, and downstream follow-ups then carry the grounded SVK object intentionally;
|
||||
- open-organization ranked value-flow questions now stay subjectless by design: predicate-shaped entity pollution such as `принёс наибольшую выручку организации в` is discarded, referential organization placeholders such as `эта организация` are resolved through the active organization scope, and the MCP ranking answer overrides exact-lane year-summary replies when the user asked `кто`;
|
||||
- ranked value-flow answer drafts no longer leak raw English/internal evidence lines into the user-facing response;
|
||||
- VAT exact materialization now survives period-window filtering instead of collapsing into `recipe_visibility_gap`;
|
||||
- confirmed VAT tax-period turns now keep raw month extraction separate from runtime tax-quarter execution, so exact VAT routes do not lose the intended tax period;
|
||||
- post-pivot receivables recovery now preserves the selected open-items recipe without weakening strict account-scope guards for risk replies;
|
||||
@@ -183,6 +187,8 @@ Replay-backed anchors for the current layer include:
|
||||
- `address_truth_harness_phase72_document_to_contracts_year_switch_live_rerun3`
|
||||
- `address_truth_harness_phase80_payments_to_contracts_to_documents_all_time_live_rerun1`
|
||||
- `address_truth_harness_phase82_human_mixed_integrity_status_dialog_post_m23_rerun_documents_scope_bidirectional`
|
||||
- `address_truth_harness_phase82_human_mixed_integrity_status_dialog_post_f_account_injection_guard_clean_scope`
|
||||
- `address_truth_harness_post_f_cross_stage_canary_agent_20260424_live5`, accepted `24/24`, and saved into autoruns as `AGENT | Post-F cross-stage semantic integrity canary` (`gen-ag04241406-abe4d8`)
|
||||
|
||||
## Honest Remaining Risk
|
||||
|
||||
|
||||
@@ -36,7 +36,7 @@ This package answers the next question:
|
||||
16. [16 - data_need_graph_and_open_world_mcp_plan_2026-04-22.md](./16%20-%20data_need_graph_and_open_world_mcp_plan_2026-04-22.md)
|
||||
17. [17 - post_f_semantic_integrity_hardening_2026-04-23.md](./17%20-%20post_f_semantic_integrity_hardening_2026-04-23.md)
|
||||
|
||||
## Current Status Snapshot (2026-04-23)
|
||||
## Current Status Snapshot (2026-04-24)
|
||||
|
||||
This package is no longer planning-only.
|
||||
|
||||
@@ -65,7 +65,7 @@ Current honest status:
|
||||
- pre-multidomain readiness: `~88%`
|
||||
- bounded-autonomy foundation readiness: `~86%`
|
||||
- open-world bounded-autonomy readiness: `~71%`
|
||||
- graph snapshot after latest rebuild: `5886 nodes`, `12754 edges`, `136 communities`
|
||||
- graph snapshot after latest rebuild: `5891 nodes`, `12769 edges`, `135 communities`
|
||||
- current breakpoint:
|
||||
- the validated hot paths are no longer structurally broken;
|
||||
- flagship continuity collapse is no longer the primary risk;
|
||||
@@ -91,6 +91,8 @@ Latest live proof now includes:
|
||||
- `address_truth_harness_phase72_document_to_contracts_year_switch_live_rerun3` accepted
|
||||
- `address_truth_harness_phase80_payments_to_contracts_to_documents_all_time_live_rerun1` accepted
|
||||
- `address_truth_harness_phase82_human_mixed_integrity_status_dialog_post_m23_rerun_documents_scope_bidirectional` accepted `19/19`
|
||||
- `address_truth_harness_phase82_human_mixed_integrity_status_dialog_post_f_account_injection_guard_clean_scope` accepted `19/19`, with the `Жуковке 51` numeric counterparty suffix kept as counterparty scope instead of leaking as account `51`
|
||||
- `address_truth_harness_post_f_cross_stage_canary_agent_20260424_live5` accepted `24/24`, proving a saved cross-stage AGENT canary across VAT metadata, numeric counterparty suffixes, open-organization value-flow clarification, ranked value-flow year switches, and SVK grounded reset; the saved autorun is `AGENT | Post-F cross-stage semantic integrity canary` (`gen-ag04241406-abe4d8`)
|
||||
- `address_truth_harness_phase11_manual_followup_meta_quality_live_rerun_vatfix` accepted `10/10`
|
||||
- `address_truth_harness_phase20_continuity_stabilization_live_rerun_vatfix` accepted `6/6`
|
||||
- `addressQueryRuntimeM23.test.ts` full semantic/runtime slice accepted `403/403` after Post-F VAT/date-basis, scope-recovery, open value-flow organization clarification, document-vs-bank arbitration, and reply-shape hardening
|
||||
|
||||
+249
@@ -0,0 +1,249 @@
|
||||
{
|
||||
"schema_version": "domain_truth_harness_spec_v1",
|
||||
"scenario_id": "address_truth_harness_phase82_human_mixed_integrity_status_dialog",
|
||||
"domain": "address_phase82_human_mixed_integrity_status_dialog",
|
||||
"title": "ARCH: Post-F Semantic Integrity Hardening mixed human status dialog",
|
||||
"description": "Human-facing AGENT dialog that mixes the current Post-F repeated-pivot integrity contour with earlier bounded-autonomy contours: repeated counterparty pivots across documents, payments, and contracts; organization-scoped money analytics without a preselected counterparty; and a grounded named-counterparty money chain through incoming, payout, net, documents, and movements. The scenario uses explicit human resets between topics so the assistant must prove both continuity and clean topic switching rather than guessing vague 'continue' turns.",
|
||||
"bindings": {},
|
||||
"steps": [
|
||||
{
|
||||
"step_id": "step_01_documents_by_counterparty",
|
||||
"title": "Open documents for the counterparty",
|
||||
"question": "Покажи документы по Жуковке 51.",
|
||||
"allowed_reply_types": ["factual", "factual_with_explanation", "partial_coverage"],
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)жуковк",
|
||||
"(?i)документ|сч[её]т|акт|накладн|строк"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": ["post_f_integrity_hardening", "documents_by_counterparty", "pivot_seed", "human_dialog"]
|
||||
},
|
||||
{
|
||||
"step_id": "step_02_payments_by_pronoun_followup",
|
||||
"title": "Pivot to payments",
|
||||
"question": "Хорошо, а теперь платежи по нему тоже покажи.",
|
||||
"allowed_reply_types": ["factual", "factual_with_explanation", "partial_coverage"],
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)жуковк|контрагент",
|
||||
"(?i)платеж|операц|банк|поступлен|списан"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": ["post_f_integrity_hardening", "payments_followup", "counterparty_pronoun_resolution", "human_dialog"]
|
||||
},
|
||||
{
|
||||
"step_id": "step_03_contracts_after_payments_pivot",
|
||||
"title": "Pivot to contracts",
|
||||
"question": "А по нему договоры?",
|
||||
"allowed_reply_types": ["factual", "factual_with_explanation", "partial_coverage"],
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)жуковк|контрагент",
|
||||
"(?i)договор|контракт|соглаш"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": ["post_f_integrity_hardening", "contracts_followup", "second_pivot", "human_dialog"]
|
||||
},
|
||||
{
|
||||
"step_id": "step_04_documents_after_contracts_pivot",
|
||||
"title": "Pivot back to documents",
|
||||
"question": "А по нему документы?",
|
||||
"allowed_reply_types": ["factual", "factual_with_explanation", "partial_coverage"],
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)жуковк|контрагент",
|
||||
"(?i)документ|сч[её]т|акт|накладн|строк"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": ["post_f_integrity_hardening", "documents_followup", "third_pivot", "human_dialog"]
|
||||
},
|
||||
{
|
||||
"step_id": "step_05_payments_after_third_pivot",
|
||||
"title": "Pivot back again to payments",
|
||||
"question": "А по нему платежи?",
|
||||
"allowed_reply_types": ["factual", "factual_with_explanation", "partial_coverage"],
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)жуковк|контрагент",
|
||||
"(?i)платеж|операц|банк|поступлен|списан"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": ["post_f_integrity_hardening", "payments_followup", "fourth_pivot", "human_dialog"]
|
||||
},
|
||||
{
|
||||
"step_id": "step_06_year_switch_after_fourth_pivot",
|
||||
"title": "Switch the year after the fourth pivot",
|
||||
"question": "А за 2021?",
|
||||
"allowed_reply_types": ["factual", "factual_with_explanation", "partial_coverage"],
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)2021",
|
||||
"(?i)жуковк|контрагент",
|
||||
"(?i)платеж|операц|банк|поступлен|списан"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)метадан",
|
||||
"(?i)схем",
|
||||
"(?i)объект[а-я]* 1с"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": ["post_f_integrity_hardening", "year_switch_after_fourth_pivot", "payments_followup", "human_dialog"]
|
||||
},
|
||||
{
|
||||
"step_id": "step_07_open_scope_incoming_total",
|
||||
"title": "Reset to organization-scoped money analytics without a preselected counterparty",
|
||||
"question": "С Жуковкой закончили. Теперь нужна другая задача: быстрый денежный срез по одной организации. Если для ответа нужна организация, просто уточни ее. Сколько вообще входящих денег было за 2020 год?",
|
||||
"allowed_reply_types": ["clarification_required", "partial_coverage"],
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)уточн|нужно",
|
||||
"(?i)организац"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": ["organization_scope", "open_scope_total", "topic_reset", "human_dialog"]
|
||||
},
|
||||
{
|
||||
"step_id": "step_08_open_scope_org_clarification",
|
||||
"title": "Provide the organization and get the 2020 incoming total",
|
||||
"question": "По ООО Альтернатива Плюс.",
|
||||
"allowed_reply_types": ["factual", "factual_with_explanation", "partial_coverage"],
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)2020",
|
||||
"(?i)входящ|поступлен|получ"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)уточните .*контрагент",
|
||||
"(?i)не найден контрагент",
|
||||
"(?i)уточните .*организац"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": ["organization_scope", "open_scope_total", "organization_clarification", "human_dialog"]
|
||||
},
|
||||
{
|
||||
"step_id": "step_09_open_scope_all_time_followup",
|
||||
"title": "Broaden the same organization slice to all available time",
|
||||
"question": "Понял, тогда за все время.",
|
||||
"allowed_reply_types": ["factual", "factual_with_explanation", "partial_coverage"],
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)все доступное время|все время|весь период",
|
||||
"(?i)входящ|поступлен|получ"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)за 2020",
|
||||
"(?i)уточните .*контрагент",
|
||||
"(?i)уточните .*период",
|
||||
"(?i)уточните .*организац"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": ["organization_scope", "all_time_followup", "human_dialog"]
|
||||
},
|
||||
{
|
||||
"step_id": "step_10_bidirectional_comparison",
|
||||
"title": "Ask which money direction is larger for the organization",
|
||||
"question": "Хорошо. А что по ООО Альтернатива Плюс больше в 2020 году: входящие или исходящие деньги?",
|
||||
"allowed_reply_types": ["factual", "factual_with_explanation", "partial_coverage"],
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)2020",
|
||||
"(?i)входящ|исходящ|получ|заплат|больше"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": ["organization_scope", "value_flow_comparison", "human_dialog"]
|
||||
},
|
||||
{
|
||||
"step_id": "step_11_comparison_year_switch",
|
||||
"title": "Ask the same comparison for another year",
|
||||
"question": "А что по ООО Альтернатива Плюс больше уже за 2021 год: входящие или исходящие деньги?",
|
||||
"allowed_reply_types": ["factual", "factual_with_explanation", "partial_coverage"],
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)2021",
|
||||
"(?i)входящ|исходящ|получ|заплат|больше"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": ["organization_scope", "value_flow_comparison", "year_switch", "human_dialog"]
|
||||
},
|
||||
{
|
||||
"step_id": "step_12_ranking_top_counterparty",
|
||||
"title": "Ask who brought the most money for the organization",
|
||||
"question": "И кто больше всего принес денег этой организации в 2020 году?",
|
||||
"allowed_reply_types": ["factual", "factual_with_explanation", "partial_coverage"],
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)2020",
|
||||
"(?i)кто|контрагент|клиент|принес|доход"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": ["organization_scope", "value_flow_ranking", "human_dialog"]
|
||||
},
|
||||
{
|
||||
"step_id": "step_13_ranking_year_switch",
|
||||
"title": "Ask the same ranking for another year",
|
||||
"question": "А в 2021 году?",
|
||||
"allowed_reply_types": ["factual", "factual_with_explanation", "partial_coverage"],
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)2021"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": ["organization_scope", "value_flow_ranking", "year_switch", "human_dialog"]
|
||||
},
|
||||
{
|
||||
"step_id": "step_14_ground_named_counterparty",
|
||||
"title": "Reset to a named grounded counterparty",
|
||||
"question": "Теперь отдельная тема по конкретному контрагенту. Найди в 1С Группу СВК.",
|
||||
"allowed_reply_types": ["factual", "factual_with_explanation", "partial_coverage"],
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)свк|группа свк|контрагент"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": ["grounded_counterparty", "topic_reset", "human_dialog"]
|
||||
},
|
||||
{
|
||||
"step_id": "step_15_counterparty_incoming_2020",
|
||||
"title": "Ask how much money was received from the grounded counterparty",
|
||||
"question": "Сколько получили по нему за 2020 год?",
|
||||
"allowed_reply_types": ["factual", "factual_with_explanation", "partial_coverage"],
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)2020",
|
||||
"(?i)получ|входящ|поступлен"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": ["grounded_counterparty", "incoming_value_flow", "human_dialog"]
|
||||
},
|
||||
{
|
||||
"step_id": "step_16_counterparty_payout_followup",
|
||||
"title": "Ask how much was paid to the same grounded counterparty",
|
||||
"question": "А теперь сколько заплатили?",
|
||||
"allowed_reply_types": ["factual", "factual_with_explanation", "partial_coverage"],
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)заплат|исходящ|списан|платеж"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": ["grounded_counterparty", "payout_value_flow", "human_dialog"]
|
||||
},
|
||||
{
|
||||
"step_id": "step_17_counterparty_net_followup",
|
||||
"title": "Ask for net after incoming and payout",
|
||||
"question": "А какое нетто?",
|
||||
"allowed_reply_types": ["factual", "factual_with_explanation", "partial_coverage"],
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)нетто|сальдо|получ|заплат"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": ["grounded_counterparty", "net_value_flow", "human_dialog"]
|
||||
},
|
||||
{
|
||||
"step_id": "step_18_counterparty_documents_pivot",
|
||||
"title": "Pivot from money to documents for the same counterparty",
|
||||
"question": "А по документам?",
|
||||
"allowed_reply_types": ["factual", "factual_with_explanation", "partial_coverage"],
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)документ|счет|сч[её]т[- ]?фактур|накладн|акт|строк"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": ["grounded_counterparty", "documents_pivot", "human_dialog"]
|
||||
},
|
||||
{
|
||||
"step_id": "step_19_counterparty_movements_pivot",
|
||||
"title": "Pivot from documents to movements for the same counterparty",
|
||||
"question": "А по движениям?",
|
||||
"allowed_reply_types": ["factual", "factual_with_explanation", "partial_coverage"],
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)движени|операц|платеж|поступлен|списан|строк"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": ["grounded_counterparty", "movements_pivot", "human_dialog"]
|
||||
}
|
||||
]
|
||||
}
|
||||
+238
@@ -0,0 +1,238 @@
|
||||
{
|
||||
"schema_version": "domain_truth_harness_spec_v1",
|
||||
"scenario_id": "address_truth_harness_post_f_cross_stage_canary_agent_20260424",
|
||||
"domain": "address_post_f_cross_stage_canary_agent",
|
||||
"title": "AGENT | Post-F cross-stage semantic integrity canary",
|
||||
"description": "Long human-facing AGENT dialog for the end of Post-F Semantic Integrity Hardening. It deliberately crosses older validated contours and the current fix surface in one session: VAT/metadata orientation, movement-to-document pivots, numeric counterparty suffix scope, repeated documents/payments/contracts pivots, organization open-scope clarification, bidirectional value-flow, ranking, grounded SVK counterparty chains, and final document/movement pivots. The goal is to catch stale scope, account injection, wrong post-pivot arbitration, materialization gaps, and regressions in older bounded MCP stages before saving the run into autoruns.",
|
||||
"bindings": {},
|
||||
"steps": [
|
||||
{
|
||||
"step_id": "step_01_vat_metadata_orientation",
|
||||
"title": "Orient inside VAT objects",
|
||||
"question": "Мне нужно понять, где в 1С по НДС вообще лежат данные. Какие объекты стоит смотреть по НДС?",
|
||||
"allowed_reply_types": ["factual", "factual_with_explanation", "partial_coverage"],
|
||||
"required_answer_patterns_all": ["(?i)ндс", "(?i)метадан|metadata|документ|регистр|объект"],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": ["legacy_phase64", "metadata_surface", "vat_orientation", "cross_stage_canary"]
|
||||
},
|
||||
{
|
||||
"step_id": "step_02_vat_movements_org_needs_period",
|
||||
"title": "Choose movement lane and organization",
|
||||
"question": "Хорошо, тогда покажи движения по ООО Альтернатива Плюс.",
|
||||
"allowed_reply_types": ["clarification_required", "partial_coverage", "factual_with_explanation"],
|
||||
"required_answer_patterns_all": ["(?i)движени|регистр|операц|период|уточн"],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": ["legacy_phase64", "movement_lane_after_metadata", "organization_scope"]
|
||||
},
|
||||
{
|
||||
"step_id": "step_03_vat_movements_2020",
|
||||
"title": "Provide the period",
|
||||
"question": "За 2020 год.",
|
||||
"allowed_reply_types": ["factual", "factual_with_explanation", "partial_coverage"],
|
||||
"required_answer_patterns_all": ["(?i)2020", "(?i)ндс|движени|регистр|операц|строк|поступлен|списан"],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": ["legacy_phase64", "movement_execution", "period_clarification_resume"]
|
||||
},
|
||||
{
|
||||
"step_id": "step_04_vat_documents_pivot",
|
||||
"title": "Pivot from movements to documents",
|
||||
"question": "А теперь по документам?",
|
||||
"allowed_reply_types": ["factual", "factual_with_explanation", "partial_coverage"],
|
||||
"required_answer_patterns_all": ["(?i)документ|счет|сч[её]т|накладн|акт|строк"],
|
||||
"forbidden_answer_patterns": ["(?i)уточните .*организац", "(?i)уточните .*период"],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": ["legacy_phase64", "document_pivot_after_movement", "scope_reuse"]
|
||||
},
|
||||
{
|
||||
"step_id": "step_05_vat_documents_year_switch",
|
||||
"title": "Switch document slice to another year",
|
||||
"question": "А теперь за 2021 год?",
|
||||
"allowed_reply_types": ["factual", "factual_with_explanation", "partial_coverage"],
|
||||
"required_answer_patterns_all": ["(?i)2021", "(?i)документ|счет|сч[её]т|накладн|акт|строк"],
|
||||
"forbidden_answer_patterns": ["(?i)уточните .*организац", "(?i)уточните .*период"],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": ["legacy_phase64", "year_switch_after_document_pivot"]
|
||||
},
|
||||
{
|
||||
"step_id": "step_06_vat_documents_all_time",
|
||||
"title": "Broaden document slice to all available time",
|
||||
"question": "А теперь за все время?",
|
||||
"allowed_reply_types": ["factual", "factual_with_explanation", "partial_coverage"],
|
||||
"required_answer_patterns_all": ["(?i)все доступное время|все время|весь период|истори", "(?i)документ|счет|сч[её]т|накладн|акт|строк"],
|
||||
"forbidden_answer_patterns": ["(?i)уточните .*период"],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": ["legacy_phase64", "all_time_followup", "document_lane_continuity"]
|
||||
},
|
||||
{
|
||||
"step_id": "step_07_reset_to_numeric_counterparty_documents",
|
||||
"title": "Reset to numeric counterparty suffix documents",
|
||||
"question": "С НДС закончили. Новая тема: покажи документы по Жуковке 51.",
|
||||
"allowed_reply_types": ["factual", "factual_with_explanation", "partial_coverage"],
|
||||
"required_answer_patterns_all": ["(?i)жуковк", "(?i)документ|счет|сч[её]т|накладн|акт|строк"],
|
||||
"forbidden_answer_patterns": ["(?i)счет 51", "(?i)account 51"],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": ["post_f", "numeric_counterparty_suffix", "account_injection_guard", "topic_reset"]
|
||||
},
|
||||
{
|
||||
"step_id": "step_08_numeric_counterparty_payments",
|
||||
"title": "Pivot numeric counterparty to payments",
|
||||
"question": "Хорошо, а теперь платежи по нему тоже покажи.",
|
||||
"allowed_reply_types": ["factual", "factual_with_explanation", "partial_coverage"],
|
||||
"required_answer_patterns_all": ["(?i)жуковк|контрагент", "(?i)платеж|операц|банк|поступлен|списан"],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": ["post_f", "counterparty_pronoun_resolution", "payments_followup"]
|
||||
},
|
||||
{
|
||||
"step_id": "step_09_numeric_counterparty_contracts",
|
||||
"title": "Pivot numeric counterparty to contracts",
|
||||
"question": "А по нему договоры?",
|
||||
"allowed_reply_types": ["factual", "factual_with_explanation", "partial_coverage"],
|
||||
"required_answer_patterns_all": ["(?i)жуковк|контрагент", "(?i)договор|контракт|соглаш"],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": ["post_f", "contracts_followup", "repeated_pivot"]
|
||||
},
|
||||
{
|
||||
"step_id": "step_10_numeric_counterparty_documents_again",
|
||||
"title": "Pivot back to documents again",
|
||||
"question": "А по нему документы?",
|
||||
"allowed_reply_types": ["factual", "factual_with_explanation", "partial_coverage"],
|
||||
"required_answer_patterns_all": ["(?i)жуковк|контрагент", "(?i)документ|счет|сч[её]т|накладн|акт|строк"],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": ["post_f", "documents_followup", "repeated_pivot"]
|
||||
},
|
||||
{
|
||||
"step_id": "step_11_numeric_counterparty_year_switch",
|
||||
"title": "Switch numeric counterparty active lane to 2021",
|
||||
"question": "А за 2021?",
|
||||
"allowed_reply_types": ["factual", "factual_with_explanation", "partial_coverage"],
|
||||
"required_answer_patterns_all": ["(?i)2021", "(?i)жуковк|контрагент"],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": ["post_f", "year_switch_after_repeated_pivot"]
|
||||
},
|
||||
{
|
||||
"step_id": "step_12_open_org_money_requires_clarification",
|
||||
"title": "Reset to open organization-scoped value flow",
|
||||
"question": "С Жуковкой закончили. Теперь другая задача: быстрый денежный срез по одной организации. Если для ответа нужна организация, просто уточни ее. Сколько вообще входящих денег было за 2020 год?",
|
||||
"allowed_reply_types": ["clarification_required", "partial_coverage"],
|
||||
"required_answer_patterns_all": ["(?i)уточн|нужно", "(?i)организац"],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": ["post_f", "open_scope_total", "organization_clarification", "topic_reset"]
|
||||
},
|
||||
{
|
||||
"step_id": "step_13_open_org_clarification_answer",
|
||||
"title": "Provide organization for open money slice",
|
||||
"question": "По ООО Альтернатива Плюс.",
|
||||
"allowed_reply_types": ["factual", "factual_with_explanation", "partial_coverage"],
|
||||
"required_answer_patterns_all": ["(?i)2020|проверенн|строк", "(?i)входящ|поступлен|получ"],
|
||||
"forbidden_answer_patterns": ["(?i)уточните .*контрагент", "(?i)уточните .*организац"],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": ["post_f", "organization_scope", "clarification_resume"]
|
||||
},
|
||||
{
|
||||
"step_id": "step_14_open_org_all_time",
|
||||
"title": "Broaden same organization money slice",
|
||||
"question": "Понял, тогда за все время.",
|
||||
"allowed_reply_types": ["factual", "factual_with_explanation", "partial_coverage"],
|
||||
"required_answer_patterns_all": ["(?i)все доступное время|все время|весь период|истори", "(?i)входящ|поступлен|получ"],
|
||||
"forbidden_answer_patterns": ["(?i)уточните .*контрагент", "(?i)уточните .*организац"],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": ["post_f", "organization_scope", "all_time_followup"]
|
||||
},
|
||||
{
|
||||
"step_id": "step_15_open_org_bidirectional_2020",
|
||||
"title": "Bidirectional comparison for organization",
|
||||
"question": "Хорошо. А что по ООО Альтернатива Плюс больше в 2020 году: входящие или исходящие деньги?",
|
||||
"allowed_reply_types": ["factual", "factual_with_explanation", "partial_coverage"],
|
||||
"required_answer_patterns_all": ["(?i)2020", "(?i)входящ|исходящ|получ|заплат|больше"],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": ["post_f", "bidirectional_value_flow", "organization_scope"]
|
||||
},
|
||||
{
|
||||
"step_id": "step_16_open_org_ranking_2020",
|
||||
"title": "Ranking after organization comparison",
|
||||
"question": "И кто больше всего принес денег этой организации в 2020 году?",
|
||||
"allowed_reply_types": ["factual", "factual_with_explanation", "partial_coverage"],
|
||||
"required_answer_patterns_all": ["(?i)2020", "(?i)кто|контрагент|клиент|принес|доход|поступлен"],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": ["legacy_phase39", "value_flow_ranking", "organization_scope"]
|
||||
},
|
||||
{
|
||||
"step_id": "step_17_open_org_ranking_year_switch",
|
||||
"title": "Ranking year switch",
|
||||
"question": "А в 2021 году?",
|
||||
"allowed_reply_types": ["factual", "factual_with_explanation", "partial_coverage"],
|
||||
"required_answer_patterns_all": ["(?i)2021"],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": ["legacy_phase39", "year_switch", "organization_scope"]
|
||||
},
|
||||
{
|
||||
"step_id": "step_18_ground_svk_counterparty",
|
||||
"title": "Reset to grounded SVK counterparty",
|
||||
"question": "Теперь отдельная тема по конкретному контрагенту. Найди в 1С Группу СВК.",
|
||||
"allowed_reply_types": ["factual", "factual_with_explanation", "partial_coverage"],
|
||||
"required_answer_patterns_all": ["(?i)свк", "(?i)контрагент|каталог|1с|заземл"],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": ["legacy_phase67", "grounded_counterparty", "topic_reset"]
|
||||
},
|
||||
{
|
||||
"step_id": "step_19_svk_incoming_2020",
|
||||
"title": "SVK incoming value flow",
|
||||
"question": "Сколько получили по нему за 2020 год?",
|
||||
"allowed_reply_types": ["factual", "factual_with_explanation", "partial_coverage"],
|
||||
"required_answer_patterns_all": ["(?i)2020", "(?i)свк|контрагент|входящ|поступлен|получ"],
|
||||
"forbidden_answer_patterns": ["(?i)жуковк"],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": ["legacy_phase67", "grounded_counterparty", "incoming_value_flow"]
|
||||
},
|
||||
{
|
||||
"step_id": "step_20_svk_payout",
|
||||
"title": "SVK outgoing value flow",
|
||||
"question": "А теперь сколько заплатили?",
|
||||
"allowed_reply_types": ["factual", "factual_with_explanation", "partial_coverage"],
|
||||
"required_answer_patterns_all": ["(?i)свк|контрагент|заплат|исходящ|списан|платеж"],
|
||||
"forbidden_answer_patterns": ["(?i)жуковк"],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": ["legacy_phase67", "grounded_counterparty", "payout_value_flow"]
|
||||
},
|
||||
{
|
||||
"step_id": "step_21_svk_net",
|
||||
"title": "SVK net value flow",
|
||||
"question": "А какое нетто?",
|
||||
"allowed_reply_types": ["factual", "factual_with_explanation", "partial_coverage"],
|
||||
"required_answer_patterns_all": ["(?i)свк|контрагент|нетто|сальдо|получ|заплат"],
|
||||
"forbidden_answer_patterns": ["(?i)жуковк"],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": ["legacy_phase67", "grounded_counterparty", "net_value_flow"]
|
||||
},
|
||||
{
|
||||
"step_id": "step_22_svk_documents_pivot",
|
||||
"title": "SVK documents pivot",
|
||||
"question": "А по документам?",
|
||||
"allowed_reply_types": ["factual", "factual_with_explanation", "partial_coverage"],
|
||||
"required_answer_patterns_all": ["(?i)свк|контрагент|документ|счет|сч[её]т|накладн|акт|строк"],
|
||||
"forbidden_answer_patterns": ["(?i)жуковк"],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": ["legacy_phase67", "grounded_counterparty", "documents_pivot"]
|
||||
},
|
||||
{
|
||||
"step_id": "step_23_svk_movements_pivot",
|
||||
"title": "SVK movements pivot",
|
||||
"question": "А по движениям?",
|
||||
"allowed_reply_types": ["factual", "factual_with_explanation", "partial_coverage"],
|
||||
"required_answer_patterns_all": ["(?i)свк|контрагент|движени|операц|платеж|поступлен|списан|строк"],
|
||||
"forbidden_answer_patterns": ["(?i)жуковк"],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": ["legacy_phase67", "grounded_counterparty", "movements_pivot"]
|
||||
},
|
||||
{
|
||||
"step_id": "step_24_svk_year_switch",
|
||||
"title": "SVK year switch",
|
||||
"question": "А теперь тот же смысл за 2021 год.",
|
||||
"allowed_reply_types": ["factual", "factual_with_explanation", "partial_coverage"],
|
||||
"required_answer_patterns_all": ["(?i)2021", "(?i)свк|контрагент"],
|
||||
"forbidden_answer_patterns": ["(?i)жуковк"],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": ["legacy_phase67", "grounded_counterparty", "year_switch"]
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user