3.2 KiB
业务交接:ERP 创建订单
业务目标与触发
目标:把中文/微信新订单整理为一个 create_order task,覆盖 team_single、team_batch fallback、split_parent、split_child,并在真实运行时以 ERP 回查编号为完成标准。
触发:团队单、批量多日期、散拼母团、散拼子单、新建订单、下单、先 dry-run 等。包含确认件导出的消息必须拆成创建和后续 export_confirmation 两个 operation。
Skill 标准化
使用 skills/erp-coordinator 和 skills/erp-create-order。Skill 选择唯一 route,保留 originalText,日期统一 YYYY-MM-DD,客户和产品只接受唯一映射;缺日期、人数、客户、产品、OP、销售或父团映射时返回 needs_clarification。team_batch 的 native DoInfoJHs 是 deferred,只能说明 verified team_single fallback。
Task JSON
operation=create_order;route 是四种之一;task 必须有 schemaVersion=erp-task-v1、fields、attachments、originalText。team_single 的 fields 至少表达 customer、product、date、pax、rooms、prices、op、salesperson;split_child 不得伪造 parentGroupNo。
示例任务文件:skills/erp-create-order/tests/fixtures/team-single-ready.json、team-batch-ready.json、split-parent-ready.json、split-child-ready.json。
脚本与工具
node scripts/validate_erp_task.js --task <task.json> --json
node scripts/run_create_order.js --task <task.json> --mode dry-run --json
脚本进入 tools/erp_task_dispatcher.js,再进入对应 executor。真实提交由本地 config、sender whitelist、duplicate check、session 和 post-save re-query 控制;Skill 不写 allowRealSubmit。
结果
dry_run 只返回 plannedExecutor;completed 必须有 ERP 真实编号;blocked/invalid_task 说明阻塞;execution_uncertain 先查询,不重试;保存后导出失败进入 erp-export-recovery。创建默认不自动导出确认件、不自动 PDF。
阻塞与恢复
零个或多个产品/客户候选、父团不唯一、缺必填字段、原生批量未验证、ERP session 不可用、重复订单或无保存证据都应阻塞。team_batch 只走 verified fallback;保存后只恢复导出,不重新创建。
测试与证据
- Skill quick_validate:skills/erp-create-order。
- 内容/行为测试:tools/tests/erp_create_order_skill_content.test.js、erp_create_order_skill_behavior.test.js。
- 四个 fixture 均通过 dry-run,未调用真实 ERP。
- route executor 的既有单元测试和 npm test 是继续交接前的回归门槛。
风险
产品/客户 fuzzy 映射、父团选择、批量 native API、浏览器成功假象、客户字段漏写、真实重复保存是主要风险。缓解:唯一映射、fallback、显式客户写入、ERP re-query、默认 dry-run 和 registry duplicate check。
负责人
Skill 规则负责人维护 route/字段/澄清;脚本负责人维护 dispatcher/executor;ERP 运行负责人负责登录、配置和真实授权。交接日期:2026-07-12。
下一步
在真实 Git 仓库提交本轮文件;若要恢复 native team_batch,先收集后端错误/正确 payload 证据并新增 no-save regression;任何真实创建前先用非关键订单完成 dry-run 与授权审计。