diff --git a/docs/task/120-减少采购重复前台查询并补充分段耗时.md b/docs/task/120-减少采购重复前台查询并补充分段耗时.md new file mode 100644 index 0000000..b513606 --- /dev/null +++ b/docs/task/120-减少采购重复前台查询并补充分段耗时.md @@ -0,0 +1,64 @@ +# #120 减少采购流程重复前台查询并补充分段耗时 + +- 工单号:#120 +- 类型:缺陷修复 / 性能优化 +- 父级:#1 Client 拼多多任务采集与采购客户端 +- 版本:Client 真实采购安全闭环 +- 状态:待用户验收 +- 日期:2026-08-10 +- Gitea: +- 实现提交:`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` 比较三个新增阶段的真实耗时。