2.8 KiB
2.8 KiB
#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:记录采购状态读取的性能与安全边界。
验收结果
- 可靠 PDD 控件树下普通状态读取不调用
app_current()。 - 归属不明确的控件树仍调用
app_current()兜底。 - 最终提交点击前仍独立调用一次
app_current()。 - 颜色、尺码仍使用原有精确匹配逻辑。
- 性能日志能够区分状态读取、颜色选择和尺码选择。
- 价格超过上限仍在不可逆标记和下单点击前停止。
- 等待用户真机比较优化后的等待时间。
测试
从 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_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 比较三个新增阶段的真实耗时。