Files
cmautobuy/docs/task/120-减少采购重复前台查询并补充分段耗时.md
T

65 lines
2.8 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.
# #120 减少采购流程重复前台查询并补充分段耗时
- 工单号:#120
- 类型:缺陷修复 / 性能优化
- 父级:#1 Client 拼多多任务采集与采购客户端
- 版本:Client 真实采购安全闭环
- 状态:已完成,用户验收通过
- 日期:2026-08-10
- Gitea:<http://ilaer.eicp.net:8418/chengma/cmautobuy/issues/120>
- 实现提交:`59de08b`
## 背景与目标
真机一次 `app_current()` 约耗时 10.641 秒,而采购普通状态读取在多个安全步骤
重复调用它,导致商品页、规格面板、颜色和尺码操作之间出现十秒级停顿。
目标是在不削弱最终下单安全核验和价格门禁的前提下,省去可靠 PDD 控件树场景
中的重复前台查询,并记录颜色、尺码和状态读取的独立耗时。
## 最终方案
采购普通 `read_state()` 先读取最新控件树。控件树中至少有 3 个 PDD 包节点时,
直接以 PDD 包名完成页面分类;节点不足时仍调用 `app_current()` 兜底。最终
`submit_order_once()` 保留原有独立前台查询,因此高风险点击门禁不变。
性能日志新增三个阶段:
- `purchase_read_state`:一次采购状态读取;
- `purchase_select_color`:指定颜色选择;
- `purchase_select_size`:指定尺码选择。
实现与工单方案一致。没有修改采集算法、采购规格匹配、价格解析、最高价格门禁、
数据库或 Admin 接口。
## 改了哪些文件
- `client/src/pdd_u2_purchase_adapter.py`:控件树优先状态读取和分段计时。
- `client/test/test_pdd_u2_purchase_adapter.py`:前台查询次数、安全门禁和计时测试。
- `docs/client/06-quality-security.md`:记录采购状态读取的性能与安全边界。
## 验收结果
- [x] 可靠 PDD 控件树下普通状态读取不调用 `app_current()`。
- [x] 归属不明确的控件树仍调用 `app_current()` 兜底。
- [x] 最终提交点击前仍独立调用一次 `app_current()`。
- [x] 颜色、尺码仍使用原有精确匹配逻辑。
- [x] 性能日志能够区分状态读取、颜色选择和尺码选择。
- [x] 价格超过上限仍在不可逆标记和下单点击前停止。
- [ ] 等待用户真机比较优化后的等待时间。
## 测试
从 `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_purchase_task_service.py"
C:/Python310/python.exe -m unittest discover -s test -p "test_*.py"
```
结果:采购 Adapter 22 项、PurchaseTaskService 11 项、Client 全量 346 项通过。
未验证到的部分:没有运行新的真机采购任务,没有执行真实下单或支付;需要用户
通过 `client/data/logs/task_performance.jsonl` 比较三个新增阶段的真实耗时。