[Epic] 真实采购下单(不支付)闭环 #96

Open
opened 2026-08-10 14:37:42 +08:00 by ila · 5 comments
Owner

背景

客户要求系统真实点击拼多多“提交订单”,生成未付款订单,再由人工核对和支付。当前 Admin 已能创建采购任务,Client 已有真机演练、价格保护、Outbox 和不可逆恢复骨架,但 Client 固定为 dry_run,Adapter 故意没有提交订单或付款方法,Admin 已通过 #98 增加演练/真实执行模式。

目标

建立跨 Admin/Client 的真实采购闭环:管理员和其他正常状态用户通过采购确认弹窗创建 live 任务,只对白名单且声明 live 能力的 Client 分配;Client 在最终提交前重新校验并持久化不可逆标记,只点击一次提交订单,随后只读核对唯一未付款订单并回传结果。

非目标

  • 不自动付款,不点击任何支付控件。
  • 不绕过验证码、登录、风控或安全机制。
  • 不在结果不确定时自动重下单。
  • 首版不做批量 live、多账号调度或效率增强。
  • Admin 新建采购任务固定为真实下单(不支付);Admin 不再额外要求风险复选框、确认短语或浏览器二次确认。不得取��� Client live 能力、设备绑定、最终复核、不可逆标记和单次提交门禁;历史 dry_run 任务继续兼容。

总体方案与关键决策

  1. 任务保留不可变执行模式 dry_run/live;历史数据、数据库兼容默认和旧任务仍按 dry_run,但 Admin 新建采购任务固定创建 live,不再向采购员提供模式选择。
  2. 首单 MVP 允许管理员和其他正常状态用户创建 live;提交采购创建表单即固定创建真实采购任务,不再额外要求风险复选框、确认短语或浏览器二次确认。必须选择当前用户可见且声明 live 的指定 Client;离线 live Client 可提前指派并在上线后领取。
  3. Client live 默认关闭,启用绑定 Client ID、设备序列号和操作人员确认,不能用调试参数或默认配置打开。
  4. 提交前用最新控件树核对商品、规格、数量、库存、价格和唯一按钮,并先持久化 irreversible_action_at。
  5. 不可逆后崩溃、断网或结果不确定都只读核单,绝不重新购买或再次提交。
  6. 唯一匹配且未付款的订单才成功;无候选、多候选或字段不符转人工。
  7. live Adapter 只暴露一次性提交与只读核对,不提供付款方法;验证码、支付页和未知弹窗立即停止。
  8. 单设备、单任务、低金额完成首单,后续功能另立工单。

阶段路线

  • 阶段 1:Admin 任务模式、能力隔离和审计。
  • 阶段 2:Client 受控 live 激活与一次性提交。
  • 阶段 3:Client 提交后核单和不可逆恢复。
  • 阶段 4:真实设备首单集成验收。

子工单

  • #181 采购价格上限按数量计算订单总价

  • #97 [MVP] 真实采购首单闭环(不支付)

    • #98 Admin:增加真实采购任务模式、能力隔离与创建审计
    • #99 实现受控真实下单并停在支付前
    • #100 完善真实提交后的未付款订单核对与崩溃恢复
    • #101 真实设备完成一笔未付款订单的端到端安全验收
    • #261 兼容多微信系统选择器并安全返回 PDD 核单
    • #262 安全分流失败采购任务并继续只读核单
    • #263 增强双微信系统选择器识别并安全返回 PDD
    • #112 Admin:采购任务固定真实下单并简化创建弹窗
    • #113 Admin:采购价格区仅展示已映射的选定颜色
    • #114 移除 Client 真实采购手工授权并放开采购指派

依赖、风险与回退

依赖现有采购任务链路以及 Client #71/#72/#73/#75。主要风险是误创建任务、重复下单、买错规格、价格变化和误触支付;用明确的真实采购按钮、登录权限与 CSRF、Client live 授权、最终复核、单击、不可逆标记、只读核单和支付硬阻断控制。任一 live ���禁不通过即拒绝创建或停止并转人工,不得把同一采购任务静默降级为 dry_run;已生成的未付款订单人工处理。

最终完成标准

  • Admin/Client 的模式契约一致,旧任务与旧 Client 安全兼容。
  • 一条白名单 live 任务���生成一个匹配的未付款订单。
  • 无付款、验证码�������过或不可逆后的自动重试。
  • 异常路径只核单或转人���。
  • 项目负责人和实际操作人员共同验收。

范围变更(2026-08-10)

客户明确要求后续 Admin 新建采购任务固定为真实下单(只创建未付款订单),并授权修改原“采购任务默认 dry_run”的项目红线。#112 负责策略、弹窗和基线同步,#113 负责价格区只展示选定颜色。历史 dry_run 数据及模式字段继续兼容;不付款、不绕过安全机制、不可逆后只核单等红线保持不变。

范围变更(2026-08-10,采购弹窗复验)

用户复验后确认 Admin 创建弹窗不需要重复的“真实下单安全确认”、风险复选框、确认短语或浏览器二次确认;提交创建表单即表示创建真实采购任务。#112 重新进入待实施,负责同步根规则与基线、删除 Admin 重复确认,并允许当前用户可见的离线 live Client 提前指派;非 live Client 只显示禁用原因,Client 一次性 live ���权及设备/规格/价格/不可逆门禁保持不变。#113 重新进入待实施,修复 CSS 覆盖 hidden 导致未选货运单和规格行仍显示的缺陷。

范围变更(2026-08-10,移除 Client 手工授权)

客户进一步确认固定真实采购后不再保留 Client 手工 live 启用请求。#114 负责删除 Client 授权入口,让设备和采购执行器就绪的 Client 自动声明 live;Admin 可把任务指派给当前账号可见的任意 Client,不再以 live 状态禁用或拒绝创建。purchase_mode 暂保留为运行时就绪能力,未就绪或旧版 Client 不领取真实任务,已指派任务保持等待。设备复核、价格保护、不可逆标记、单次提交、禁止付款和不可逆后只核单继续保留。

新版采购规格面板兼容(2026-08-11)

  • #157 Client:兼容新版采购规格面板的确定按钮

运行时 AI 规格纠偏范围(2026-08-17)

经用户确认,真实采购新增独立 MVP:只有 Client 在正确商品、颜色已选、完整遍历当前颜色尺码后仍找不到任务目标尺码时,才向 Admin 提交真机候选。Admin 规则优先、AI 补充,只能返回候选白名单;Client 刷新页面并精确复核后才继续。该范围新增一次性 Client API 命令,但不增加状态轮询;不按蝦皮回填来源提前触发,不覆盖 PDD 主规格,不放宽不可逆、单次提交、核单和禁止付款红线。详见 #253。

  • #253 [MVP] 采购运行时 AI 规格纠偏闭环

    • #254 Admin:定义采购运行时规格解析接口与审计模型
    • #255 Admin:实现采购运行时真机规格规则与 AI 解析
    • #256 Client:采购尺码不匹配时完整采集真机候选
    • #257 Client:安全应用 Admin 规格解析结果并继续采购
    • #258 采购运行时 AI 规格纠偏端到端安全验收
    • #260 修复 AI 规格返回后的繁简体颜色复核误判
    • #264 兼容纵向颜色规格列表并安全选择目标
  • #266 修正规格候选遍历后的颜色复核顺序

  • #267 AI 规格返回后先选尺码再核对完整组合

  • #268 兼容无维度名摘要的纵向颜色列表归位

  • #277 修正规格摘要误判颜色标题

## 背景 客户要求系统真实点击拼多多“提交订单”,生成未付款订单,再由人工核对和支付。当前 Admin 已能创建采购任务,Client 已有真机演练、价格保护、Outbox 和不可逆恢复骨架,但 Client 固定为 `dry_run`,Adapter 故意没有提交订单或付款方法,Admin 已通过 #98 增加演练/真实执行模式。 ## 目标 建立跨 Admin/Client 的真实采购闭环:管理员和其他正常状态用户通过采购确认弹窗创建 `live` 任务,只对白名单且声明 live 能力的 Client 分配;Client 在最终提交前重新校验并持久化不可逆标记,只点击一次提交订单,随后只读核对唯一未付款订单并回传结果。 ## 非目标 - 不自动付款,不点击任何支付控件。 - 不绕过验证码、登录、风控或安全机制。 - 不在结果不确定时自动重下单。 - 首版不做批量 live、多账号调度或效率增强。 - Admin 新建采购任务固定为真实下单(不支付);Admin 不再额外要求风险复选框、确认短语或浏览器二次确认。不得取��� Client live 能力、设备绑定、最终复核、不可逆标记和单次提交门禁;历史 `dry_run` 任务继续兼容。 ## 总体方案与关键决策 1. 任务保留不可变执行模式 `dry_run/live`;历史数据、数据库兼容默认和旧任务仍按 `dry_run`,但 Admin 新建采购任务固定创建 `live`,不再向采购员提供模式选择。 2. 首单 MVP 允许管理员和其他正常状态用户创建 live;提交采购创建表单即固定创建真实采购任务,不再额外要求风险复选框、确认短语或浏览器二次确认。必须选择当前用户可见且声明 live 的指定 Client;离线 live Client 可提前指派并在上线后领取。 3. Client live 默认关闭,启用绑定 Client ID、设备序列号和操作人员确认,不能用调试参数或默认配置打开。 4. 提交前用最新控件树核对商品、规格、数量、库存、价格和唯一按钮,并先持久化 `irreversible_action_at`。 5. 不可逆后崩溃、断网或结果不确定都只读核单,绝不重新购买或再次提交。 6. 唯一匹配且未付款的订单才成功;无候选、多候选或字段不符转人工。 7. live Adapter 只暴露一次性提交与只读核对,不提供付款方法;验证码、支付页和未知弹窗立即停止。 8. 单设备、单任务、低金额完成首单,后续功能另立工单。 ## 阶段路线 - 阶段 1:Admin 任务模式、能力隔离和审计。 - 阶段 2:Client 受控 live 激活与一次性提交。 - 阶段 3:Client 提交后核单和不可逆恢复。 - 阶段 4:真实设备首单集成验收。 ## 子工单 - [x] #181 采购价格上限按数量计算订单总价 - [ ] #97 [MVP] 真实采购首单闭环(不支付) - [x] #98 Admin:增加真实采购任务模式、能力隔离与创建审计 - [x] #99 实现受控真实下单并停在支付前 - [x] #100 完善真实提交后的未付款订单核对与崩溃恢复 - [ ] #101 真实设备完成一笔未付款订单的端到端安全验收 - [ ] #261 兼容多微信系统选择器并安全返回 PDD 核单 - [ ] #262 安全分流失败采购任务并继续只读核单 - [ ] #263 增强双微信系统选择器识别并安全返回 PDD - [x] #112 Admin:采购任务固定真实下单并简化创建弹窗 - [x] #113 Admin:采购价格区仅展示已映射的选定颜色 - [x] #114 移除 Client 真实采购手工授权并放开采购指派 ## 依赖、风险与回退 依赖现有采购任务链路以及 Client #71/#72/#73/#75。主要风险是误创建任务、重复下单、买错规格、价格变化和误触支付;用明确的真实采购按钮、登录权限与 CSRF、Client live 授权、最终复核、单击、不可逆标记、只读核单和支付硬阻断控制。任一 live ���禁不通过即拒绝创建或停止并转人工,不得把同一采购任务静默降级为 dry_run;已生成的未付款订单人工处理。 ## 最终完成标准 - Admin/Client 的模式契约一致,旧任务与旧 Client 安全兼容。 - 一条白名单 live 任务���生成一个匹配的未付款订单。 - 无付款、验证码�������过或不可逆后的自动重试。 - 异常路径只核单或转人���。 - 项目负责人和实际操作人员共同验收。 ## 范围变更(2026-08-10) 客户明确要求后续 Admin 新建采购任务固定为真实下单(只创建未付款订单),并授权修改原“采购任务默认 dry_run”的项目红线。#112 负责策略、弹窗和基线同步,#113 负责价格区只展示选定颜色。历史 dry_run 数据及模式字段继续兼容;不付款、不绕过安全机制、不可逆后只核单等红线保持不变。 ## 范围变更(2026-08-10,采购弹窗复验) 用户复验后确认 Admin 创建弹窗不需要重复的“真实下单安全确认”、风险复选框、确认短语或浏览器二次确认;提交创建表单即表示创建真实采购任务。#112 重新进入待实施,负责同步根规则与基线、删除 Admin 重复确认,并允许当前用户可见的离线 live Client 提前指派;非 live Client 只显示禁用原因,Client 一次性 live ���权及设备/规格/价格/不可逆门禁保持不变。#113 重新进入待实施,修复 CSS 覆盖 `hidden` 导致未选货运单和规格行仍显示的缺陷。 ## 范围变更(2026-08-10,移除 Client 手工授权) 客户进一步确认固定真实采购后不再保留 Client 手工 live 启用请求。#114 负责删除 Client 授权入口,让设备和采购执行器就绪的 Client 自动声明 live;Admin 可把任务指派给当前账号可见的任意 Client,不再以 live 状态禁用或拒绝创建。`purchase_mode` 暂保留为运行时就绪能力,未就绪或旧版 Client 不领取真实任务,已指派任务保持等待。设备复核、价格保护、不可逆标记、单次提交、禁止付款和不可逆后只核单继续保留。 ## 新版采购规格面板兼容(2026-08-11) - [x] #157 Client:兼容新版采购规格面板的确定按钮 ## 运行时 AI 规格纠偏范围(2026-08-17) 经用户确认,真实采购新增独立 MVP:只有 Client 在正确商品、颜色已选、完整遍历当前颜色尺码后仍找不到任务目标尺码时,才向 Admin 提交真机候选。Admin 规则优先、AI 补充,只能返回候选白名单;Client 刷新页面并精确复核后才继续。该范围新增一次性 Client API 命令,但不增加状态轮询;不按蝦皮回填来源提前触发,不覆盖 PDD 主规格,不放宽不可逆、单次提交、核单和禁止付款红线。详见 #253。 - [ ] #253 [MVP] 采购运行时 AI 规格纠偏闭环 - [ ] #254 Admin:定义采购运行时规格解析接口与审计模型 - [ ] #255 Admin:实现采购运行时真机规格规则与 AI 解析 - [ ] #256 Client:采购尺码不匹配时完整采集真机候选 - [ ] #257 Client:安全应用 Admin 规格解析结果并继续采购 - [ ] #258 采购运行时 AI 规格纠偏端到端安全验收 - [ ] #260 修复 AI 规格返回后的繁简体颜色复核误判 - [ ] #264 兼容纵向颜色规格列表并安全选择目标 - [ ] #266 修正规格候选遍历后的颜色复核顺序 - [ ] #267 AI 规格返回后先选尺码再核对完整组合 - [ ] #268 兼容无维度名摘要的纵向颜色列表归位 - [ ] #277 修正规格摘要误判颜色标题
Author
Owner

范围已同步:Admin 创建 live 任务不再要求额外风险复选、确认短语或浏览器二次确认;Client live 授权及设备/规格/价格/不可逆安全门禁保持。#112、#113 已按复验结果退回待实施,完成并重新验收前 Epic 的 Admin 创建环节不视为完成。

范围已同步:Admin 创建 live 任务不再要求额外风险复选、确认短语或浏览器二次确认;Client live 授权及设备/规格/价格/不可逆安全门禁保持。#112、#113 已按复验结果退回待实施,完成并重新验收前 Epic 的 Admin 创建环节不视为完成。
Author
Owner

用户已批量验收通过 Admin 工单:#112、#113。对应子工单已关闭,父工单清单已同步;父工单本身是否满足整体关闭条件仍按其全部范围单独判断。

用户已批量验收通过 Admin 工单:#112、#113。对应子工单已关闭,父工单清单已同步;父工单本身是否满足整体关闭条件仍按其全部范围单独判断。
Author
Owner

真实采购工单验收同步(2026-08-11)

用户明确验收通过 #99、#100、#114。本地归档状态已更新,验收记录提交为 eca9289,三个单元工单均已关闭并在本父工单中标记完成。

父工单仍有端到端验收等其他范围,因此保持打开。

## 真实采购工单验收同步(2026-08-11) 用户明确验收通过 #99、#100、#114。本地归档状态已更新,验收记录提交为 `eca9289`,三个单元工单均已关闭并在本父工单中标记完成。 父工单仍有端到端验收等其他范围,因此保持打开。
Author
Owner

新增跨 Admin/Client 单元工单 #181,统一 max_price_cent 为订单总价上限,并修复数量大于 1 时以单价误判总价的问题。

新增跨 Admin/Client 单元工单 #181,统一 `max_price_cent` 为订单总价上限,并修复数量大于 1 时以单价误判总价的问题。
Author
Owner

用户于 2026-08-13 批量验收通过相关单元工单,已关闭并同步勾选:#157、#181。本地归档状态提交:ad44f83。父工单仍按其余未完成范围保持打开。

用户于 2026-08-13 批量验收通过相关单元工单,已关闭并同步勾选:#157、#181。本地归档状态提交:`ad44f83`。父工单仍按其余未完成范围保持打开。
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: chengma/cmautobuy#96