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

2.8 KiB
Raw Blame History

#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 比较三个新增阶段的真实耗时。