docs: 归档任务 #120

This commit is contained in:
chengma
2026-08-10 19:31:55 +08:00
parent 59de08b752
commit 352d861425
@@ -0,0 +1,64 @@
# #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` 比较三个新增阶段的真实耗时。