Files
cmautobuy/docs/task/157-兼容采购规格面板确定按钮.md
T
2026-08-11 15:30:22 +08:00

70 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# #157 Client:兼容新版采购规格面板的确定按钮
- 工单号:#157
- 类型:缺陷
- 父级:Epic #96、MVP #97
- 版本:真实采购首单闭环(不支付)
- 状态:待验收
- 日期:2026-08-11
- Gitea:<http://ilaer.eicp.net:8418/chengma/cmautobuy/issues/157>
## 背景与目标
Client 采购商品 `897186799891` 时已经打开规格面板,但页面只有底部“确定”
按钮,不包含旧版“提交订单/确认购买”等文字。采购代码连续读取面板27次仍把
页面分类为 `unknown`,最终返回 `PURCHASE_PANEL_TIMEOUT`。
目标是在不放宽真实下单安全门禁的前提下,识别这种新版提交前规格面板。
## 最终方案
1. 只有以下证据位于同一个有界 PDD 面板中时,才接受底部“确定”:
- “确认款式/确认规格”标题;
- “已选/请选择”摘要;
- 颜色、尺码或规格标题;
- 唯一且有效的数量输入框、减少按钮和增加按钮;
- 底部唯一、可见、启用、可点击的“确定”按钮。
2. “确定”没有加入全局提交关键词。普通提示弹窗或散落在全窗口的相似文字
不会成为提交候选。
3. 页面等待、状态读取、键盘关闭后复核和一次性提交使用同一个候选函数,避免
各阶段判断不一致。
4. dry-run 只识别和复核,不点击底部按钮;live 仍由原流程先持久化不可逆时间,
再通过窄接口最多提交一次。
5. 诊断 XML 增加安全语义标记,但具体商品、规格、账号和收货文字仍会脱敏。
最终实现与建单方案一致,没有修改数据库、Admin 接口、任务状态或付款逻辑。
## 改了哪些文件
- `client/src/pdd_u2_purchase_adapter.py`:增加上下文确认面板和“确定”候选识别。
- `client/test/test_pdd_u2_purchase_adapter.py`:增加新版面板、普通弹窗、dry-run
和 live 单次点击回归测试。
## 验收结果
- [x] 本商品的既有真实 XML 被识别为提交前确认页。
- [x] 得到唯一按钮坐标 `(0, 2067, 1080, 2214)`。
- [x] 普通“确定”弹窗保持 `unknown`,没有提交候选。
- [x] 颜色、尺码、数量、价格和唯一按钮复核保持启用。
- [x] dry-run 不点击“确定”,Fake live 最多点击一次。
- [x] 现有验证码、登录、风控、支付页和旧版提交按钮测试通过。
- [x] 采购 Adapter 精确测试、Client 完整测试和语法检查通过。
- [ ] 用户使用真机重新采购商品 `897186799891` 验收。
## 测试
在 `client/` 目录执行:
```powershell
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
```
结果:采购 Adapter 25项通过,Client 完整399项通过,语法检查通过。对本商品
既有真实 XML 只读复验得到 `order_confirmation`、数量1、价格817分以及唯一
“确定”候选。
未验证到的部分:未运行真机采购,未点击真实“确定”按钮,未创建订单,未进入
支付页,也未执行付款。