Files
cmautobuy/docs/task/162-规格面板临时空控件树稳定读取.md
T

62 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.
# #162 Client:规格面板临时空控件树稳定读取
- 工单号:#162
- 类型:缺陷
- 父级:Epic #1、MVP #2
- 版本:Client 可运行任务闭环
- 状态:已完成,用户验收通过
- 日期:2026-08-11
- Gitea:<http://ilaer.eicp.net:8418/chengma/cmautobuy/issues/162>
## 背景与目标
Client 采集商品 `339317949086` 时已经进入规格面板,但随后读取到 PDD 渲染
期间的临时空控件树,错误报告为“规格面板没有可识别的规格区域”。失败树中
PDD 只有空容器,不是真实的新规格结构。
目标是在规格操作期间跳过短暂空树,恢复前不继续使用旧坐标;持续无法恢复时
安全停止并保存可以对照的诊断证据。
## 最终方案
1. 增加统一的有效规格面板读取方法,单次操作后最多等待 2 秒、最多读取 20 次。
2. 仅把 `PDD_DATA_SPEC_INCOMPLETE` 当作可能的瞬态空树重试;验证码、登录和
售罄等明确页面仍立即停止。
3. 默认尺码检查、面板回顶、颜色定位和点击、水平滑动及最终尺码采集都先取得
最新有效面板,再解析节点和坐标。
4. 颜色点击后仍优先识别大图页;返回一次后也通过统一方法确认面板恢复。
5. 记录最后有效规格树与最后异常树。持续空树返回
`PDD_PAGE_SPEC_PANEL_LOST`,并同时保存两份证据。
最终实现与建单方案一致,没有修改颜色、尺码、价格、数据库或 Admin 接口规则。
## 改了哪些文件
- `client/src/pdd_collect_service.py`:增加稳定读取、规格阶段接入和双份诊断证据。
- `client/test/test_pdd_collect_service.py`:增加交替空树、持续空树和特殊页测试。
## 验收结果
- [x] 有效规格面板后出现临时空树时能等待并继续采集。
- [x] 默认尺码、颜色点击、水平/纵向滑动和尺码采集不直接解析空树。
- [x] 恢复后重新从最新有效树计算坐标。
- [x] 持续空树在有限时间内返回 `PDD_PAGE_SPEC_PANEL_LOST`。
- [x] 失败诊断包含最后有效规格树和最后异常树。
- [x] 验证码等明确特殊页面不会被瞬态重试吞掉。
- [x] 精确测试、Client 全量测试和语法检查通过。
- [ ] 用户使用真机重新采集商品 `339317949086` 验收。
## 测试
在 `client/` 目录执行:
```powershell
C:/Python310/python.exe -m unittest discover -s test -p "test_pdd_collect_service.py"
C:/Python310/python.exe -m unittest discover -s test -p "test_*.py"
C:/Python310/python.exe -m py_compile src/pdd_collect_service.py test/test_pdd_collect_service.py
```
结果:采集服务 53 项通过,Client 完整 410 项通过,语法检查通过。
未验证到的部分:未使用真机重新采集;未执行采购、下单或付款。