10 KiB
10 KiB
独立团批量下单业务适配包
业务身份
| 字段 | 值 |
|---|---|
business_id |
team_order_batch_create |
| 业务行为名称 | 独立团批量下单 |
| Skill | lwlt-newbooking |
| 标准 action | team_order_batch_create |
| 当前状态 | 已真实验证 |
| 最近验证 | 2026-08-06;https://lwlt.hisy.cc/System/Mainlt.asp;授权真实写入并逐条回查 |
1. 用户输入模板与示例
1.1 模板
独立团批量下单
发团日期(必填):<YYYY-MM-DD到YYYY-MM-DD>
预订客户(必填):<客户名称或唯一搜索关键词>
产品搜索(必填):<产品名称或唯一搜索关键词>
预估人数(必填):<x+x(占/不占)+x数字格式>
用房数量(必填):<x单+x标+x双数字格式>
发团周期(必填):<范围内的实际发团日期,以/分隔>
特殊要求(选填):<其他业务要求>
1.2 示例
独立团批量下单
发团日期:09-01到09-30
预订客户:衡阳广东
产品搜索:老挝好时光
预估人数:15+1
用房数量:8标1单
发团周期:09.03/09.05/09.30
发团日期是 ERP 批量页面的可选日期范围,发团周期是范围内实际要勾选的日期;两者不能混为一组日期。客户和产品允许使用业务侧简称,但必须保留原始关键词交给插件做唯一匹配。
1.3 字段规则
| 用户字段 | 必填 | 标准结果 | 处理边界 |
|---|---|---|---|
| 发团日期 | 是 | data.recurrence.start_date/end_date |
必须形成完整日期范围;无法确定年份时追问 |
| 预订客户 | 是 | data.customer.name/keyword |
保留关键词;ERP 当前数据集零/多候选均阻断;历史预定客户为兼容别名 |
| 产品搜索 | 是 | data.product.name/keyword |
保留关键词;候选内按产品名/天数匹配,必须唯一点选产品 |
| 预估人数 | 是 | data.passenger_counts |
15+1 → adult: 15, leader: 1;数量必须为正 |
| 用房数量 | 是 | data.room_counts |
标/TWN、单/SGL 等别名归一化;只写明确房型 |
| 发团周期 | 是 | data.departure_dates 或 data.recurrence.pattern |
显式日期必须在范围内;星期/单双日交给 ERP 快捷标签 |
价格、币种、OP、销售人员、团号前后缀和客户隐藏 ID 不属于本业务的用户必填事实;它们由产品联动、当前登录账号或 ERP 数据派生。缺少房型分配时只追问房型,不追问价格或人员。
1.4 标准 operation 摘要
{
"action": "team_order_batch_create",
"order_nature": "formal",
"submit_mode": "dry_run",
"data": {
"customer": { "name": "衡阳广东", "keyword": "衡阳广东" },
"product": { "name": "老挝好时光", "keyword": "老挝好时光" },
"recurrence": {
"start_date": "2026-09-01",
"end_date": "2026-09-30",
"pattern": "specified_dates"
},
"departure_dates": ["2026-09-03", "2026-09-05", "2026-09-30"],
"passenger_counts": { "adult": 15, "leader": 1 },
"room_counts": { "TWN": 8, "SGL": 1 }
}
}
对应的 Skill 规则和 fixture:
- lwlt-newbooking/SKILL.md
- actions-and-fields.md
- normalization-rules.md
- examples.md
- 标准 operation Schema
1.5 缺失和阻断示例
用房数量:8:缺少房型分配,返回agent_parse_needs_input,只询问房型。- 客户关键词匹配到零个或多个 ERP 候选:插件在保存前阻断,不选择第一个候选。
- 产品点选后未产生团号前缀/后缀或产品联动不完整:插件阻断,不猜团号。
- 发团周期包含范围外日期、人数/房间为零、或多个独立业务混在同一请求:阻断或先澄清。
2. ERP 操作系统流程
当前真实验证的原生流程如下,顺序不可打乱:
- 在已登录的 ERP 主页面进入独立团计划表,打开“批量下单”功能,进入
/System/Business/orders_adds.asp。 - 填写发团日期范围,对应页面字段
Riqi1、Riqi2;范围用于生成可选日期集合。 - 在预订客户字段
zutuanshe中使用用户关键词匹配当前 SelectBox 数据集的可搜索字段。必须唯一匹配后通过页面自身映射点选,不能把关键词当作最终客户全称或隐藏 ID。 - 在当前产品候选中按用户关键词匹配产品名和天数并点选唯一
cp_id;当前候选无法唯一解析时,通过S_chanpinming发起原生非空检索:完整产品名原样搜索,尾部数字时长先剥离后只搜索产品名。插件再对返回候选做本地唯一匹配,必要时以空条件做一次兼容重载。点选后执行页面产品联动,等待团号设置等必填字段自动带入;不能自行生成团号前后缀。 - 填写预估人数,对应成人和领队/工作人员数量字段(当前页面为
darenshu、frenshu1)。 - 填写用房数量,只提交明确的房型数量,例如
TWN=8、SGL=1;不能把总房间数当作房型分配。 - 在发团周期中选择实际日期:显式日期通过
zhidingzhouqi勾选;星期、单日/双日等表达通过页面旁的快捷标签转换后批量勾选。所有选中日期必须落在发团日期范围内。 - 运行页面自身校验和提交门禁,然后提交原生批量表单
InfoForm1的POST /System/DAT/orders.asp,动作是Act=DoInfoJHs。解析成功弹窗中的全部团号,不只读取第一条。 - 对返回的每一个团号逐一执行 ERP
JH_OrderList回查;只有全部团号命中且无登录超时/权限错误,业务系统才标记为completed。
原生批量路线已经真实验证。旧的逐日期 DoInfoJH 单团路线只作为兼容经验保留;原生路线成功或结果不确定时,不得静默切换到 fallback 重复写入。
ERP 阻断
- ERP 未登录、会话失效或权限失败;
- 客户/产品零候选或多候选;
- 产品联动没有产生团号设置等必填字段;
- 选中日期超出范围、无选中日期、人数/房型数量不合法;
- 页面自身校验弹窗;
- 提交已开始但没有确定回执;
- 返回团号数量与逐条回查结果不一致。
代码与证据
| 用途 | 入口 |
|---|---|
| 原生批量页面逻辑 | team-batch.js、team-batch-inpage.js |
| 后台任务与回执 | background.js |
| 相关标准映射 | orders_adds.mapping.json、orders_adds_form_schema.json |
| 批量测试 | team-batch.test.mjs |
| 产品名称/天数匹配 | product-lookup.js、product-lookup.test.mjs |
| 不可变真实运行证据 | 2026-08-12 E2E4 证据登记 |
3. Skill 适配
Skill 负责识别“独立团批量下单”、保留客户/产品模糊关键词、分离日期范围和周期日期、归一化人数/房型,并输出标准 operation。Skill 不负责匹配 ERP 全称、生成隐藏 ID、决定选择哪个候选或声称保存成功。
当前 Skill 适配文件:
- 主规则:SKILL.md
- action/字段:actions-and-fields.md
- 归一化:normalization-rules.md
- 输出契约:output-contract.md
- 输入/宿主 fixture:examples.md、host-integration.md
三层边界:
| 层 | 本业务的内容 |
|---|---|
| 用户事实 | 客户关键词、产品关键词、日期范围、实际周期、人数、房型数量 |
| Skill 归一化 | 标准日期、adult/leader、TWN/SGL、formal/dry_run、唯一 action |
| ERP 派生/结果 | 客户隐藏 ID、产品 ID、团号设置、价格/人员默认值、团号列表和回查证据 |
4. 真实验证结果
用户授权的真实案例在 ERP 修复后执行成功:
- 返回:
操作成功,共计新增 3 个团队; - 团号:
LW-260903A-A、LW-260905A-A、LW-260930A-B; - 三个团号均完成 ERP 回查,HTTP 200、命中、无登录超时/权限错误;
- 业务系统和流程日志均返回完整三条团号;
0.5.78历史候选在 2026-08-11 的两轮真实回放中,均以不同测试 suffix 完成独立团批量 3 日期创建,逐日期取得明确 HTTP 200 回执、团号与tid/ddid回查,并全部纳入允许清单后精确删除。这些证据继续支持产品名+天数候选本地匹配、动态页面完整度、产品联动后的显式团号 suffix 精确覆盖、原生列表 action 归属回查,以及生命周期的精确对象路由和写后回查;来源地关键字不再作为产品/客户跨字段强制匹配。当前候选版本与发布条件以 生命周期发布门槛 为准。
真实验证不会保存凭据、Cookie 或客户隐藏 ID;具体运行证据保留在 2026-08-12 E2E4 证据登记。
5. 后续变更规则
以下任一变化都必须重新检查三项设计,并按影响范围重新预检/真实验证:
- ERP 批量页入口、字段名、产品/客户数据结构或提交动作变化;
- 客户/产品匹配规则或业务关键词语义变化;
- 人数、房型、日期周期或回执格式变化;
- 标准 operation、Schema、插件版本或回查接口变化。