Files
cmautobuy/docs/task/168-兼容纵向套餐标题滑出.md
T

73 lines
3.6 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.
# #168 Client:兼容纵向套餐标题滑出后的续页采集
- 工单号:#168
- 类型:缺陷
- 父级:Epic #1、MVP #2
- 版本:Client 可运行任务闭环
- 状态:待验收
- 日期:2026-08-11
- Gitea:<http://ilaer.eicp.net:8418/chengma/cmautobuy/issues/168>
## 背景与目标
纵向套餐数量较多时,向下滑动会让“套餐”标题离开无障碍控件树。旧流程每一屏
都依赖可见标题重新识别第二规格,因此错误报告“滚动过程中丢失第二规格”。本任务
让 Client 在标题消失后仍能安全采集后续套餐。
## 最终方案
- 首次识别第二规格时,记录其名称、滚动容器的 class、resource-id、坐标范围,
以及选项的节点结构。
- 后续页面还能识别标题时使用原解析结果;标题不可见时,在重新定位的同一滚动
容器内,只提取结构与首屏选项一致的节点。
- 第二规格视口签名直接使用已确认的维度,不再要求当前屏幕重复显示标题。
- 控件树一次缺少续页节点时重新读取一次,持续无法定位才明确报数据不完整。
- 第一次实现把所有含 `¥/¥` 的节点当成价格控件,真机验收发现套餐按钮本身采用
“套餐名称 + 尾部价格”文本,因此会被全部误删。最终改为只排除纯价格节点,
有套餐名称的按钮保留,并在入库前去掉尾部价格。
- 在第二规格汇总和续页提取时排除纯价格、数量、提交订单、立即购买等操作控件;
已匹配节点结构的长套餐不再因为接近容器全宽而被过滤。
- 保留原横向套餐、衣服颜色尺码、逐颜色采价和默认尺码取消逻辑。
## 改了哪些文件
- `client/src/pdd_collect_service.py`:增加第二规格续页上下文、容器重新定位、节点
结构匹配、操作按钮过滤和短暂缺失重读。
- `client/test/test_pdd_collect_service.py`:增加纵向十六个带价格套餐、标题滑出、
五屏遍历、长按钮、跨页去重、纯价格与操作按钮排除及不点击选项的测试。
## 验收结果
- [x] 纵向长套餐在标题滑出屏幕后仍能继续收集后续选项。
- [x] 所有套餐按页面顺序去重,连续稳定到边后结束。
- [x] “增加数量”和“提交订单”等操作控件不会混入套餐。
- [x] “套餐名称 + 尾部价格”会保留套餐并去掉价格,纯价格节点不会混入。
- [x] 接近容器全宽的长套餐不会因宽度阈值被误删。
- [x] 横向套餐、普通衣服尺码、颜色价格及默认尺码取消测试保持通过。
- [x] 第二规格续页采集过程中不点击套餐或尺码。
- [x] 未修改数据库、Admin 接口、数据结构和采购安全规则。
- [x] 精确测试、Client 全量测试和语法检查通过。
- [ ] 用户使用出现该问题的真机商品完成采集验收。
## 测试
在 `client/` 目录执行:
```powershell
C:/Python310/python.exe -m unittest discover -s test -p "test_pdd_collect_service.py"
$env:QT_QPA_PLATFORM="offscreen"
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
Remove-Item Env:QT_QPA_PLATFORM
```
结果:采集服务 61 项、Client 完整 423 项测试通过,语法检查通过。
**没验证到的部分**:未使用真机重新采集发生问题的商品;未执行真实采购、下单或
付款;不同 PDD 版本可能使用不同的套餐节点层级,需由本次真机验收确认。
## 相关提交
- `94793ab` 兼容套餐标题滑出后的续页采集。
- `6ed2305` 识别带价格的纵向套餐续页。