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

Closed
opened 2026-08-11 15:26:11 +08:00 by ila · 3 comments
Owner

基本信息

  • 类型:缺陷
  • 父级大工单:#96
  • 所属 MVP / 版本:#97 / 真实采购首单闭环(不支付)
  • 阶段:Client 提交前规格确认兼容
  • 关联工单:#154、#155
  • 状态:待验收

要解决什么

Client 采购商品 https://mobile.yangkeduo.com/goods.html?goods_id=897186799891 时返回 PURCHASE_PANEL_TIMEOUT:点击采购入口后没有到达可靠的提交前确认页。

只读证据表明页面已经稳定进入新版非滚动规格面板:存在“确认款式”、数量加减控件、5 个颜色、1 个尺码以及底部唯一可点击“确定”按钮。任务连续读取规格面板 27 次,页面分类始终为 unknown,约 14 秒后超时;irreversible_action_at 为空,未提交订单。

当前采购页分类只把“提交订单”“现在买,仅”“确认购买”当作最终提交标记,无法识别该商品的上下文“确定”按钮。

做什么 / 不做什么

  • 做:使用组合强证据识别新版非滚动采购规格面板。
  • 做:只在可靠规格面板上下文中,把底部唯一“确定”按钮作为最终提交候选。
  • 做:让等待、状态读取、提交前复核和一次性提交使用同一识别结果。
  • 做:补充脱敏诊断标记和正反向回归测试。
  • 不做:不把“确定”加入全局提交关键词。
  • 不做:不降低规格、数量、价格、库存、唯一按钮或不可逆落库门禁。
  • 不做:不自动付款,不运行真机采购或下单测试。

已确认的实现方案

  1. 在 client/src/pdd_u2_purchase_adapter.py 增加上下文规格面板识别,同时要求:PDD 控件树;面板标题“确认款式/确认规格”;“已选/请选择”摘要;至少一个颜色、尺码或规格标题;唯一数量输入框及数量加减控件;底部唯一、可见、启用且可点击的“确定”按钮。
  2. 原有“提交订单”“现在买,仅”“确认购买”继续按现有逻辑识别;“确定”只在上述组合证据全部满足时返回为最终提交候选。
  3. 等待、read_state、键盘关闭后复核和 submit_order_once 复用统一结果,避免等待能通过但提交复核再次失败。
  4. 规格选择阶段只识别面板和选择目标,不提前点击底部“确定”;live 流程仍必须先持久化 irreversible_action_at,之后最多点击一次。
  5. 诊断 XML 只保留“确认款式”“已选/请选择”“确定”等安全语义,不保留具体商品、规格、账号或收货文字。
  6. 使用脱敏非滚动面板固件增加正反向测试,并保留 dry-run 不点击与 live 单次提交门禁测试。

预计修改:

  • client/src/pdd_u2_purchase_adapter.py
  • client/test/test_pdd_u2_purchase_adapter.py
  • 必要时增加脱敏采购规格面板固件
  • 完成后归档 docs/task/<工单号>-兼容采购规格面板确定按钮.md

验收标准

  • 本次新版规格面板不再触发 PURCHASE_PANEL_TIMEOUT。
  • 页面被识别为可靠提交前确认页,并得到唯一“确定”候选坐标。
  • 普通“确定”弹窗和普通商品页不会被误判。
  • 颜色、尺码、数量、价格和唯一按钮复核保持启用。
  • dry-run 不点击最终按钮;live 仍须不可逆落库后最多点击一次。
  • 验证码、登录、风控和支付页继续立即停止。
  • 采购 Adapter 精确测试、Client 完整 unittest 与 py_compile 通过。

验证方式

从 client/ 执行:

C:/Python310/python.exe -m unittest discover -s test -p "test_pdd_u2_purchase_adapter.py"
C:/Python310/python.exe -m unittest discover -s test -p "test_*.py"
C:/Python310/python.exe -m py_compile src/pdd_u2_purchase_adapter.py test/test_pdd_u2_purchase_adapter.py

本任务只用脱敏 XML 和 Fake Device 验证,不执行真机采购、下单或付款。

风险和回退

  • 风险:把通用“确定”误作下单按钮可���造成不可逆错误,因此禁止加入全局关键词,只允许强证据规格面板内的唯一底部按钮。
  • 风险:等待、状态读取和实际提交识别不一致可能在不可逆阶段后失败,因此四处必须复用同一候选函数。
  • 回退:恢复本工单代码提交即可;不涉及数据库迁移和 Admin 接口。已进入不可逆阶段的任务即使回退也只准核单,绝不重新下单。
## 基本信息 - 类型:缺陷 - 父级大工单:#96 - 所属 MVP / 版本:#97 / 真实采购首单闭环(不支付) - 阶段:Client 提交前规格确认兼容 - 关联工单:#154、#155 - 状态:待验收 ## 要解决什么 Client 采购商品 https://mobile.yangkeduo.com/goods.html?goods_id=897186799891 时返回 PURCHASE_PANEL_TIMEOUT:点击采购入口后没有到达可靠的提交前确认页。 只读证据表明页面已经稳定进入新版非滚动规格面板:存在“确认款式”、数量加减控件、5 个颜色、1 个尺码以及底部唯一可点击“确定”按钮。任务连续读取规格面板 27 次,页面分类始终为 unknown,约 14 秒后超时;irreversible_action_at 为空,未提交订单。 当前采购页分类只把“提交订单”“现在买,仅”“确认购买”当作最终提交标记,无法识别该商品的上下文“确定”按钮。 ## 做什么 / 不做什么 - 做:使用组合强证据识别新版非滚动采购规格面板。 - 做:只在可靠规格面板上下文中,把底部唯一“确定”按钮作为最终提交候选。 - 做:让等待、状态读取、提交前复核和一次性提交使用同一识别结果。 - 做:补充脱敏诊断标记和正反向回归测试。 - 不做:不把“确定”加入全局提交关键词。 - 不做:不降低规格、数量、价格、库存、唯一按钮或不可逆落库门禁。 - 不做:不自动付款,不运行真机采购或下单测试。 ## 已确认的实现方案 1. 在 client/src/pdd_u2_purchase_adapter.py 增加上下文规格面板识别,同时要求:PDD 控件树;面板标题“确认款式/确认规格”;“已选/请选择”摘要;至少一个颜色、尺码或规格标题;唯一数量输入框及数量加减控件;底部唯一、可见、启用且可点击的“确定”按钮。 2. 原有“提交订单”“现在买,仅”“确认购买”继续按现有逻辑识别;“确定”只在上述组合证据全部满足时返回为最终提交候选。 3. 等待、read_state、键盘关闭后复核和 submit_order_once 复用统一结果,避免等待能通过但提交复核再次失败。 4. 规格选择阶段只识别面板和选择目标,不提前点击底部“确定”;live 流程仍必须先持久化 irreversible_action_at,之后最多点击一次。 5. 诊断 XML 只保留“确认款式”“已选/请选择”“确定”等安全语义,不保留具体商品、规格、账号或收货文字。 6. 使用脱敏非滚动面板固件增加正反向测试,并保留 dry-run 不点击与 live 单次提交门禁测试。 预计修改: - client/src/pdd_u2_purchase_adapter.py - client/test/test_pdd_u2_purchase_adapter.py - 必要时增加脱敏采购规格面板固件 - 完成后归档 docs/task/<工单号>-兼容采购规格面板确定按钮.md ## 验收标准 - [ ] 本次新版规格面板不再触发 PURCHASE_PANEL_TIMEOUT。 - [ ] 页面被识别为可靠提交前确认页,并得到唯一“确定”候选坐标。 - [ ] 普通“确定”弹窗和普通商品页不会被误判。 - [ ] 颜色、尺码、数量、价格和唯一按钮复核保持启用。 - [ ] dry-run 不点击最终按钮;live 仍须不可逆落库后最多点击一次。 - [ ] 验证码、登录、风控和支付页继续立即停止。 - [ ] 采购 Adapter 精确测试、Client 完整 unittest 与 py_compile 通过。 ## 验证方式 从 client/ 执行: C:/Python310/python.exe -m unittest discover -s test -p "test_pdd_u2_purchase_adapter.py" C:/Python310/python.exe -m unittest discover -s test -p "test_*.py" C:/Python310/python.exe -m py_compile src/pdd_u2_purchase_adapter.py test/test_pdd_u2_purchase_adapter.py 本任务只用脱敏 XML 和 Fake Device 验证,不执行真机采购、下单或付款。 ## 风险和回退 - 风险:把通用“确定”误作下单按钮可���造成不可逆错误,因此禁止加入全局关键词,只允许强证据规格面板内的唯一底部按钮。 - 风险:等待、状态读取和实际提交识别不一致可能在不可逆阶段后失败,因此四处必须复用同一候选函数。 - 回退:恢复本工单代码提交即可;不涉及数据库迁移和 Admin 接口。已进入不可逆阶段的任务即使回退也只准核单,绝不重新下单。
Author
Owner

实施结果

  • 新增上下文“确定”按钮识别,只接受 PDD 控件树中同一有界面板内的确认标题、已选/请选择摘要、真实规格标题、唯一数量输入框、唯一加减按钮和底部唯一可点击“确定”同时存在。
  • 页面分类、等待规格面板、状态读取、键盘关闭后复核和最终提交候选统一复用该识别结果。
  • “确定”未加入全局提交关键词;普通提示弹窗测试仍返回 unknown 且没有提交候选。
  • dry-run Fake Device 只点击采购入口,不点击“确定”;live Fake Device 的“确定”最多点击一次。
  • 诊断脱敏增加“确认款式/确认规格、已选/请选择、确定”等安全标记,不保存具体规格文字。
  • 本商品既有真实 XML 只读复验:page_kind=order_confirmation,唯一候选坐标=(0,2067,1080,2214),数量=1,价格=817分。
  • 采购 Adapter 测试 25 项通过;Client 完整测试 399 项通过;py_compile 与 diff check 通过。
  • 实现提交:f7f6888。

未验证:未运行真机采购、未点击真实“确定”、未创建订单、未支付。

## 实施结果 - 新增上下文“确定”按钮识别,只接受 PDD 控件树中同一有界面板内的确认标题、已选/请选择摘要、真实规格标题、唯一数量输入框、唯一加减按钮和底部唯一可点击“确定”同时存在。 - 页面分类、等待规格面板、状态读取、键盘关闭后复核和最终提交候选统一复用该识别结果。 - “确定”未加入全局提交关键词;普通提示弹窗测试仍返回 unknown 且没有提交候选。 - dry-run Fake Device 只点击采购入口,不点击“确定”;live Fake Device 的“确定”最多点击一次。 - 诊断脱敏增加“确认款式/确认规格、已选/请选择、确定”等安全标记,不保存具体规格文字。 - 本商品既有真实 XML 只读复验:page_kind=order_confirmation,唯一候选坐标=(0,2067,1080,2214),数量=1,价格=817分。 - 采购 Adapter 测试 25 项通过;Client 完整测试 399 项通过;py_compile 与 diff check 通过。 - 实现提交:f7f6888。 未验证:未运行真机采购、未点击真实“确定”、未创建订单、未支付。
Author
Owner

完成与归档

  • 实现提交:f7f6888 fix: 兼容采购规格面板确定按钮 (#157)
  • 归档提交:3e52e18 docs: 归档任务 #157
  • 本地归档:docs/task/157-兼容采购规格面板确定按钮.md
  • 精确测试:25 项通过;Client 完整回归:399 项通过;py_compile:通过。
  • 当前状态:待用户使用真机重新采购商品 897186799891 验收。

安全说明:本次未运行真机采购,未点击真实“确定”,未创建订单或付款。本地该采购任务的 irreversible_action_at 仍为空;用户验收前请确认只执行这一条任务,并在出现验证码、风控、未知弹窗或价格/规格不一致时停止。

## 完成与归档 - 实现提交:f7f6888 `fix: 兼容采购规格面板确定按钮 (#157)` - 归档提交:3e52e18 `docs: 归档任务 #157` - 本地归档:docs/task/157-兼容采购规格面板确定按钮.md - 精确测试:25 项通过;Client 完整回归:399 项通过;py_compile:通过。 - 当前状态:待用户使用真机重新采购商品 897186799891 验收。 安全说明:本次未运行真机采购,未点击真实“确定”,未创建订单或付款。本地该采购任务的 irreversible_action_at 仍为空;用户验收前请确认只执行这一条任务,并在出现验证码、风控、未知弹窗或价格/规格不一致时停止。
Author
Owner

用户于 2026-08-13 明确验收通过。本地归档状态已更新,批量验收记录提交:ad44f83。现关闭工单。

用户于 2026-08-13 明确验收通过。本地归档状态已更新,批量验收记录提交:`ad44f83`。现关闭工单。
ila closed this issue 2026-08-13 15:58:05 +08:00
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: chengma/cmautobuy#157