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

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

背景与目标

本 MVP 是 #96 的首个可交付版本,只验证一个低金额采购任务由 Admin 正常状态用户明确标记 live,经指定 Client 提交一次,生成唯一未付款订单并安全回传。

MVP 范围

  • Admin:任务模式、MySQL 迁移、正常状态用户通过采购确认弹窗创建 live、Client 能力校验、接口和审计展示。
  • Client:默认关闭的 live 激活、最终复核、不可逆标记、单次提交、未付款订单核对和结果上报。
  • 集成:单 Client、单设备、单 PDD 账号、单低金额商品完成真实首单。

排除项

不自动付款、不绕过安全机制、不批量 live、不并发 live、多账号轮换、不允许绕过设备绑定和操作确认开启 Client live、结果不确定后重试,以及首单后的效率和报表功能。

已确认架构决策

  • 历史数据、数据库兼容默认和旧任务保持 dry_run;Admin 新建采购任务固定为 live,界面不再提供执行模式选择。
  • live 任务只分配给声明 live 的指定 Client,领取后模式不可改变。
  • 提�����前必须完成最新页面复核并先写 irreversible_action_at。
  • 不可逆后只读核单;唯一匹配的未付款订单才成功。
  • 代码中不提供付款方法,发现支付或安全校验页面立即转人工。

阶段与单元任务

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

  • #98 阶段 1:Admin 任务模式与能力隔离

  • #99 阶段 2:Client 受控 live 激活与单次提交

  • #100 阶段 3:提交后核单与不可逆恢复

  • #101 阶段 4:真实设备首单集成验收

  • #261 阶段 3/4 补充:兼容多微信系统选择器并安全返回 PDD 核单

  • #262 阶段 3/4 补充:安全分流失败采购任务并继续只读核单

  • #263 阶段 3/4 补充:增强双微信系统选择器识别并安全返回 PDD

  • #112 阶段 1 补充:采购任务固定真实下单并简化弹窗

  • #113 阶段 1 补充:价格区仅展示已映射的选定颜色

  • #114 跨阶段补充:移除 Client 手工授权并放开可见 Client 指派

集成风险与回退

字段不一致可能让旧 Client 误领;Admin 只能把新 live 任务分配给已声明 live 的 Client,旧 Client 和历史 dry_run 继续兼容并做契约测试。提交响应丢失可能导致重复下单,不可逆后禁止重试。任一门禁失败必须拒绝或转人工,不得把同一任务静默降级后继续;未付款订单人工处理。

MVP 验收标准

  • 旧任务与旧 Client 继续 dry_run。
  • 非 live Client 无法领取 live 任务。
  • Admin 创建弹窗不再要求额外风险复选或确认短语;登录用户提交后固定创建 live,并保留���建审计。
  • Client 未授权时不声明 live。
  • 提交前完成复核并先持久化不可逆标记。
  • 真实首单只点击一次并生成唯一匹配的未付款订单。
  • 不付款、不绕过验证码或风控。
  • 异常时只核单或转人工,不重新下单。
  • 项目负责人和实际操作人员共同确认。

范围变更(2026-08-10)

客户确认本 MVP 的 Admin 新建采购任务固定为 live,不再允许采购员选择 dry_run。采购弹窗不再要求额外风险复选框、确认短语或浏览器二次确认;Client 一次性 live 授权、设备绑定、价格保护和不可逆安全门禁继续保留。#112、#113 重新进入待实施,历史 dry_run 与旧 Client 兼容不变。

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

#112 调整为删除 Admin 重复安全确认,并让当前用户可见的离线 live Client 可提前指派���非 live Client 显示但禁用。#113 修复未选采购确认行被 CSS 显示出来的问题,并加入浏览器人工验收。两项完成并重���验收前,本 MVP 的 Admin 创建环节不视为完成。

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

#114 替代“Client live 默认关闭并需操作员授权”的旧方案:Client 在身份、已选设备和真实采购执行器就绪时自动声明 live;Admin 创建任务时可选择当前账号可见的全部 Client,不再按 live 状态禁用。领取期仍按自动上报的运行时能力隔离,未就绪或旧版 Client 不�����误���。禁止付款、最终复核、不可逆先落库、单次提交和不可逆后只核单不变。

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

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

  • #264 阶段 2/4 补充:兼容纵向颜色规格列表并安全选择目标

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

## 背景与目标 本 MVP 是 #96 的首个可交付版本,只验证一个低金额采购任务由 Admin 正常状态用户明确标记 live,经指定 Client 提交一次,生成唯一未付款订单并安全回传。 ## MVP 范围 - Admin:任务模式、MySQL 迁移、正常状态用户通过采购确认弹窗创建 live、Client 能力校验、接口和审计展示。 - Client:默认关闭的 live 激活、最终复核、不可逆标记、单次提交、未付款订单核对和结果上报。 - 集成:单 Client、单设备、单 PDD 账号、单低金额商品完成真实首单。 ## 排除项 不自动付款、不绕过安全机制、不批量 live、不并发 live、多账号轮换、不允许绕过设备绑定和操作确认开启 Client live、结果不确定后重试,以及首单后的效率和报表功能。 ## 已确认架构决策 - 历史数据、数据库兼容默认和旧任务保持 `dry_run`;Admin 新建采购任务固定为 `live`,界面不再提供执行模式选择。 - live 任务只分配给声明 live 的指定 Client,领取后模式不可改变。 - 提�����前必须完成最新页面复核并先写 `irreversible_action_at`。 - 不可逆后只读核单;唯一匹配的未付款订单才成功。 - 代码中不提供付款方法,发现支付或安全校验页面立即转人工。 ## 阶段与单元任务 - [x] #181 采购价格上限按数量计算订单总价 - [x] #98 阶段 1:Admin 任务模式与能力隔离 - [x] #99 阶段 2:Client 受控 live 激活与单次提交 - [x] #100 阶段 3:提交后核单与不可逆恢复 - [ ] #101 阶段 4:真实设备首单集成验收 - [ ] #261 阶段 3/4 补充:兼容多微信系统选择器并安全返回 PDD 核单 - [ ] #262 阶段 3/4 补充:安全分流失败采购任务并继续只读核单 - [ ] #263 阶段 3/4 补充:增强双微信系统选择器识别并安全返回 PDD - [x] #112 阶段 1 补充:采购任务固定真实下单并简化弹窗 - [x] #113 阶段 1 补充:价格区仅展示已映射的选定颜色 - [x] #114 跨阶段补充:移除 Client 手工授权并放开可见 Client 指派 ## 集成风险与回退 字段不一致可能让旧 Client 误领;Admin 只能把新 live 任务分配给已声明 live 的 Client,旧 Client 和历史 dry_run 继续兼容并做契约测试。提交响应丢失可能导致重复下单,不可逆后禁止重试。任一门禁失败必须拒绝或转人工,不得把同一任务静默降级后继续;未付款订单人工处理。 ## MVP 验收标准 - [ ] 旧任务与旧 Client 继续 dry_run。 - [ ] 非 live Client 无法领取 live 任务。 - [ ] Admin 创建弹窗不再要求额外风险复选或确认短语;登录用户提交后固定创建 live,并保留���建审计。 - [ ] Client 未授权时不声明 live。 - [ ] 提交前完成复核并先持久化不可逆标记。 - [ ] 真实首单只点击一次并生成唯一匹配的未付款订单。 - [ ] 不付款、不绕过验证码或风控。 - [ ] 异常时只核单或转人工,不重新下单。 - [ ] 项目负责人和实际操作人员共同确认。 ## 范围变更(2026-08-10) 客户确认本 MVP 的 Admin 新建采购任务固定为 live,不再允许采购员选择 dry_run。采购弹窗不再要求额外风险复选框、确认短语或浏览器二次确认;Client 一次性 live 授权、设备绑定、价格保护和不可逆安全门禁继续保留。#112、#113 重新进入待实施,历史 dry_run 与旧 Client 兼容不变。 ## 范围变更(2026-08-10,采购弹窗复验) #112 调整为删除 Admin 重复安全确认,并让当前用户可见的离线 live Client 可提前指派���非 live Client 显示但禁用。#113 修复未选采购确认行被 CSS 显示出来的问题,并加入浏览器人工验收。两项完成并重���验收前,本 MVP 的 Admin 创建环节不视为完成。 ## 范围变更(2026-08-10,移除 Client 手工授权) #114 替代“Client live 默认关闭并需操作员授权”的旧方案:Client 在身份、已选设备和真实采购执行器就绪时自动声明 live;Admin 创建任务时可选择当前账号可见的全部 Client,不再按 live 状态禁用。领取期仍按自动上报的运行时能力隔离,未就绪或旧版 Client 不�����误���。禁止付款、最终复核、不可逆先落库、单次提交和不可逆后只核单不变。 ## 新版采购规格面板兼容(2026-08-11) - [x] #157 Client:兼容新版采购规格面板的确定按钮 - [ ] #264 阶段 2/4 补充:兼容纵向颜色规格列表并安全选择目标 - [ ] #268 兼容无维度名摘要的纵向颜色列表归位
Author
Owner

MVP 范围已同步:#112 删除 Admin 重复确认并调整离线 live Client 指派;#113 修复 CSS 覆盖 hidden 的规格行显示缺陷。两项重新实现和验收前,Admin 创建环节保持未完成。

MVP 范围已同步:#112 删除 Admin 重复确认并调整离线 live Client 指派;#113 修复 CSS 覆盖 hidden 的规格行显示缺陷。两项重新实现和验收前,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`。父工单仍按其余未完成范围保持打开。
Author
Owner

运行时规格纠偏已独立为后续跨端 MVP #253,不直接扩大本工单首单闭环范围。#101 仍可使用规格本来就一致的低金额商品完成首单验收;若项目负责人要求以蝦皮回填规格商品作为 #101 的必测对象,再单独更新本 MVP 的验收依赖。

运行时规格纠偏已独立为后续跨端 MVP #253,不直接扩大本工单首单闭环范围。#101 仍可使用规格本来就一致的低金额商品完成首单验收;若项目负责人要求以蝦皮回填规格商品作为 #101 的必测对象,再单独更新本 MVP 的验收依赖。
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: chengma/cmautobuy#97