86 lines
5.9 KiB
JSON
86 lines
5.9 KiB
JSON
{
|
|
"$schema": "https://local.lwltapi/schemas/ltjt_form_mapping.schema.json",
|
|
"mapping_version": "2026-09-02.team_order_batch_create.orders_adds.v0.3",
|
|
"status": "native_nonempty_product_search_live_verified_release_gated_0.5.165",
|
|
"source": {
|
|
"schema": "schemas/standard_system_operation.schema.json",
|
|
"action": "team_order_batch_create"
|
|
},
|
|
"target": {
|
|
"form_schema": "schemas/orders_adds_form_schema.json",
|
|
"page": "/System/Business/orders_adds.asp",
|
|
"entry": "独立团订单列表的 OPEN_ProEdits()",
|
|
"form_id": "InfoForm1",
|
|
"submit_endpoint": "/System/DAT/orders.asp",
|
|
"submit_action": "DoInfoJHs",
|
|
"payload_prefix": "Act=DoInfoJHs&",
|
|
"response_type": "script"
|
|
},
|
|
"ordered_steps": [
|
|
{ "step": 1, "operation": "open_native_batch_entry", "description": "在独立团订单列表打开批量下单功能。" },
|
|
{ "step": 2, "operation": "set_date_range", "source": "data.recurrence.start_date/end_date", "targets": ["Riqi1", "Riqi2"] },
|
|
{ "step": 3, "operation": "resolve_booking_customer", "source": "data.customer.keyword || data.customer.name", "target": "zutuanshe", "setval_targets": ["zutuansheid", "zutuanshe", "lianxiren", "zutuanshegzr"], "rule": "exact/unique normalized matching first; if those fail, all recognizable source-region tokens may select only one current ERP customer name", "unique_required": true },
|
|
{ "step": 4, "operation": "resolve_and_select_product", "source": "data.product.keyword || data.product.name", "search_target": "S_chanpinming", "radio_target": "cp_id", "side_effect": "page set_th fills tuanxuhao1/tuanxuhao2", "unique_required": true, "fallback": "match loaded candidates first; if unresolved, issue the native non-empty product-name query after stripping only a trailing numeric duration, then match locally; retain one empty-query compatibility reload; never choose the first row" },
|
|
{ "step": 5, "operation": "conditionally_apply_explicit_order_suffix", "source": "data.order_number.suffix", "target": "tuanxuhao2", "rule": "ordinary Agent output leaves this absent; when a host/business system explicitly supplies it, apply only after product set_th and require exact persistence before payload approval" },
|
|
{ "step": 6, "operation": "record_source_region_context", "source": "the final uniquely resolved ERP product/customer candidate names plus optional source_region context", "rule": "source-region context is report-only; product and customer candidates are resolved independently and a mismatch never blocks DoInfoJHs" },
|
|
{ "step": 7, "operation": "set_passenger_counts", "targets": ["darenshu", "xiaorenshu", "ertrenshu", "yingrenshu", "quanrenshu"], "side_effect": "GetVisitorsHtml()" },
|
|
{ "step": 8, "operation": "set_room_counts", "targets": ["frenshu0", "frenshu1", "frenshu2", "frenshu3", "frenshu4", "frenshu5", "frenshu6"], "side_effect": "sum_fang()" },
|
|
{ "step": 9, "operation": "select_cycle_dates", "explicit_target": "zhidingzhouqi", "shortcut_target": "zhouqi", "unique_date_node_required": true },
|
|
{ "step": 10, "operation": "preflight_and_submit", "function": "SubmitInfoForm()", "network_action": "POST /System/DAT/orders.asp with Act=DoInfoJHs", "receipt": "ERP popup/response group number" },
|
|
{ "step": 11, "operation": "requery_receipt", "function": "JH_OrderList", "write_boundary": "after approved hash match" }
|
|
],
|
|
"lookup_rules": {
|
|
"customer": {
|
|
"row_delimiter": "◇",
|
|
"column_delimiter": "◆",
|
|
"searchable_columns": [1, 2, 3, 4, 5],
|
|
"display_column": 2,
|
|
"match_order": ["exact_field", "unique_contiguous", "unique_tokenized_contains", "unique_source_region_tokens"],
|
|
"required": true,
|
|
"ambiguous_or_empty": "block"
|
|
},
|
|
"product": {
|
|
"search_field": "S_chanpinming",
|
|
"radio_name": "cp_id",
|
|
"match_order": ["unique_contiguous", "unique_name_duration_tokens", "unique_ordered_tokens"],
|
|
"native_query_policy": "submit the complete product name unchanged, or strip a trailing numeric duration shorthand before querying; await native Ajax and match returned candidates locally; use one empty query only as the final compatibility reload",
|
|
"ambiguous_or_empty": "block",
|
|
"context": "customer selection must be applied before product query"
|
|
},
|
|
"source_region": {
|
|
"after": "customer_and_product_unique_resolution",
|
|
"required": false,
|
|
"applies_when": "optional source-region context is present",
|
|
"rule": "report-only; do not compare product and customer source-region tokens as a write gate",
|
|
"unresolved": "does_not_block",
|
|
"mismatch": "does_not_block"
|
|
}
|
|
},
|
|
"date_cycle_rules": {
|
|
"erp_date_format": "YYYY-M-D",
|
|
"explicit": "select one zhidingzhouqi checkbox for each requested departure date",
|
|
"shortcuts": {
|
|
"daily": ["All"],
|
|
"monday_to_saturday": ["1", "2", "3", "4", "5", "6"],
|
|
"sunday": ["0"],
|
|
"odd_days": ["d1d", "d3d", "d5d", "d7d", "d9d"],
|
|
"even_days": ["d2d", "d4d", "d6d", "d8d", "d0d"]
|
|
}
|
|
},
|
|
"required_before_write": [
|
|
"Riqi1", "Riqi2", "zutuanshe", "zutuansheid", "S_chanpinming", "cp_id",
|
|
"tuanxuhao1", "tuanxuhao2", "darenshu", "xiaoshouren", "frenshu6",
|
|
"zhidingzhouqi_or_zhouqi"
|
|
],
|
|
"order_number_policy": {
|
|
"default": "use the ERP product-generated tuanxuhao1/tuanxuhao2 values",
|
|
"explicit_suffix": "data.order_number.suffix is optional, host/business-system owned, applied after product linkage, exact-match verified, and included in the approved submit payload",
|
|
"agent_policy": "ordinary Agent parsing does not invent a prefix, suffix, or test marker"
|
|
},
|
|
"safety": {
|
|
"preflight_network": "DoInfoJHs is intercepted before network",
|
|
"live_write": "only after explicit business-system confirmation, unique execution_id, write_started persistence, and approved payload hash/field-count match",
|
|
"post_write": "parse group number and requery JH_OrderList; no automatic retry after uncertain write"
|
|
}
|
|
}
|