9.3 KiB
9.3 KiB
散拼团新增计划业务适配包
业务身份
| 字段 | 值 |
|---|---|
business_id |
shared_plan_create |
| 业务行为名称 | 散拼团新增计划 |
| Skill | lwlt-newbooking |
| 标准 action | shared_plan_create |
| 当前状态 | 单日及三日期母团创建已重复验证;E2E3/E2E4 连续证明多日期携带客户/15+1 会逐日形成具体子单,普通任务仍受发布闸门约束 |
| ERP 环境 | https://lwlt.hisy.cc/System/Mainlt.asp |
1. 用户输入模板与示例
1.1 模板
散拼团新增计划
发团日期(必填):<YYYY-MM-DD或YYYY-MM-DD到YYYY-MM-DD>
产品搜索(必填):<产品名称或唯一搜索关键词>
计划收客数(必填):<正整数>
用房数量(必填):<x单+x标+x双数字格式>
发团周期(选填):<多日期批量时必填,以/分隔>
拼团客户(选填):<需要同时形成具体子单时填写客户关键词>
拼团人数(选填):<需要同时形成具体子单时填写x+x人数>
1.2 示例
散拼团新增计划
发团日期:09-01到09-30
产品搜索:广东衡阳6D
计划收客数:40
用房数量:8标1单
发团周期:09.07/09.15/09.26
说明:上例中的 2026 只是完整日期示例,不是运行时默认年份。用户只写月日时,按任务日期归一为下一次发生日;例如任务日期为 2026-08-18 时,01-01到01-30 应归一为 2027-01-01到2027-01-30。
1.3 operation 归一化
{
"action": "shared_plan_create",
"order_nature": "formal",
"submit_mode": "dry_run",
"data": {
"product": { "name": "广东衡阳6D", "keyword": "广东衡阳6D" },
"recurrence": {
"start_date": "2026-09-01",
"end_date": "2026-09-30",
"pattern": "specified_dates"
},
"departure_dates": ["2026-09-07", "2026-09-15", "2026-09-26"],
"planned_capacity": 40,
"room_counts": { "TWN": 8, "SGL": 1 },
"resolution": {
"mode": "task_ready",
"deferred_fields": ["route", "trip", "order_number"]
}
}
}
关键边界:
planned_capacity=40是母团计划的计划收客数;它与可选的拼团实际人数不是同一个字段。room_counts属于计划表整体字段;split_order.customer与split_order.passenger_counts是 ERP 选填字段,可以独立提交,缺少哪一个就省略哪一个。- 产品关键字可以是业务侧缩写,但必须保留原始
keyword。Skill 不写 ERP 全称、产品 ID、客户隐藏 ID 或团号。 广东衡阳6D只是业务搜索关键词;产品名称和天数分开匹配。若当前散拼候选无法唯一解析,插件先通过S_chanpinming发起原生非空产品名检索,再对返回候选做本地唯一匹配;尾部数字时长不发送给产品名检索,最后仅保留一次空条件兼容重载。如果最终 0 个或多个候选命中,必须提示用户并停止。拼团客户与产品分别唯一解析,来源地关键字不再作为两者之间的强制匹配门禁。
2. ERP 操作系统流程
当前页面为已登录的 https://lwlt.hisy.cc/System/Mainlt.asp。插件按以下顺序操作:
- 进入“散拼团计划表”后立即检查“新增计划”按钮;若 ERP 主 iframe 已进入
/System/Business/plan.asp但按钮仍在渲染,则持续重新取得当前 iframe document 并按条件短轮询,按钮一旦存在且可用便立即点击,不使用固定等待。只有在 15 秒总超时后仍不可用才在写前阻断,然后打开/System/Business/plan_add.asp。 - 填写
Riqi1=2026-09-01、Riqi2=2026-09-30。 - 先在散拼团产品列表的产品名称/天数单元格中按
广东衡阳6D做连续或有序唯一匹配并点选cp_id。若当前候选无法解析,调用S_chanpinming的原生非空检索:完整产品名原样搜索,10D/8天等尾部数字时长先剥离后只搜索产品名;再对返回候选本地唯一匹配,必要时以空条件做一次兼容重载。点选后的set_th必须自动带入团号前缀/后缀。 - 填写
jihuashu=40。 - 填写房型:
frenshu0=1(SGL)、frenshu1=8(TWN),其余明确未提供房型为 0;调用sum_fang(),确认frenshu6=9。 - 调用
ShowFoucsBox()生成日期枚举,只勾选2026-09-07、2026-09-15、2026-09-26各一个zhidingzhouqi节点。 - 若 operation 提供
split_order.customer,唯一匹配客户并同步zutuansheid等隐藏字段;若提供split_order.passenger_counts,填写人数并调用GetVisitorsHtml();未提供的字段不主动修改。 - 预检计划容量、房型总数、已提供的可选字段及其联动结果、日期勾选、产品团号设置和 ERP 默认人员;通过业务系统确认后调用
SubmitInfoForm()保存。 - 监听
/System/DAT/plan.asp的Act=DoInfoSPs响应,解析全部返回的母团团号;按日期范围逐一回查散拼团计划表,所有团号均命中后才返回完成。
2.1 真实 ERP 字段映射
| 用户/系统事实 | ERP 字段 |
|---|---|
| 发团日期范围 | Riqi1, Riqi2 |
| 产品搜索关键字 | S_chanpinming;先原生检索完整产品名或剥离尾部数字时长后的产品名,再本地唯一匹配;必要时空条件兼容重载 |
| 产品选择 | cp_id |
| 计划收客数 | jihuashu |
| 房型 SGL/TWN/TRP/DBL | frenshu0/frenshu1/frenshu2/frenshu3 |
| 房型 HNM/TL 兼容字段 | frenshu4/frenshu5 |
| 房型总数 | frenshu6,由 sum_fang() 计算 |
| 显式周期日期 | zhidingzhouqi |
| 快捷周期 | zhouqi:All、星期值、单双日值 |
| 拼团客户 | 可选 split_order.customer;zutuanshe、zutuansheid、联系人/币种等由唯一客户匹配联动 |
| 拼团人数 | 可选 split_order.passenger_counts;写入 darenshu、xiaorenshu、ertrenshu、yingrenshu、quanrenshu,并调用 GetVisitorsHtml() |
| 提交 | POST /System/DAT/plan.asp, Act=DoInfoSPs |
2.2 保存前阻断
- 缺少母团必填字段,或已提供的
split_order.customer/split_order.passenger_counts格式、唯一匹配、人数合计校验失败; - 产品选择没有生成团号设置;
- 日期枚举无法完整覆盖周期日期,或同一日期会提交多个勾选值;
- 计划容量或房型总数为 0,或已提供的可选字段未能正确落到 ERP 控件;
- ERP 默认跟团人/销售人为空;
- 散拼团计划表在 15 秒条件等待后仍未出现可用的“新增计划”按钮;
- 页面自身校验弹窗、登录失效、权限错误、响应不明确或任一返回团号回查未命中。
3. Skill 适配
Skill 相关文件:
Skill 负责把用户明确提供的产品、日期范围、周期日期、计划容量、房型以及可选的拼团客户/人数放入标准 operation;客户和人数分别放在 split_order 下,插件按 ERP 字段能力选择性写入。
4. 代码、Schema 与证据
| 用途 | 文件 |
|---|---|
| 标准 operation Schema | standard_system_operation.schema.json |
| 散拼页面 Schema | plan_add_form_schema.json |
| 散拼字段映射 | plan_add.mapping.json |
| 插件页面适配 | inpage.js |
| 产品名称/天数匹配 | product-lookup.js、product-lookup.test.mjs |
| 插件规划/校验 | operation-plans.js |
| 插件后台与回执 | background.js |
| 规划测试 | operation-plans.test.mjs |
| 不可变真实运行证据 | 2026-08-12 E2E4 证据登记 |
5. 验证状态
历史授权真实验证(2026-08-06,旧契约)仅保留作为 ERP 产品匹配、周期选择、提交响应和回查机制的证据:
- 产品关键字
老挝广东8D唯一命中老挝行程--广东 8D7N,并曾在旧流程中匹配客户、填写拼单人数。 - 旧流程曾成功创建 3 个团队并按日期/团号逐一回查;其中客户和人数的填写证据也支持当前“有值才写、缺值不动”的映射。
0.5.81历史实证基线曾记录来源地兼容校验;该历史策略不再作为当前写前阻断。当前仍要求 ERP 产品和客户各自唯一解析,E2E3 与 E2E4 均使用全新三日期计划和完整专用测试上下文,逐日期形成具体子单并回查客户、成人 15、领队 1、母团tid和子单ddid;全部测试对象最终按允许清单删除。当前执行边界以 生命周期发布门槛 为准,该历史事实不自动解除普通任务的业务发布闸门,批量结果也必须逐日期登记。