Files
cmautobuy/docs/task/167-完整遍历尺码与套餐第二规格.md
T

67 lines
3.1 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.
# #167 Client:完整遍历尺码与套餐第二规格
- 工单号:#167
- 类型:缺陷
- 父级:Epic #1、MVP #2
- 版本:Client 可运行任务闭环
- 状态:已完成,用户验收通过
- 日期:2026-08-11
- Gitea:<http://ilaer.eicp.net:8418/chengma/cmautobuy/issues/167>
## 背景与目标
商品 `757123298435` 的“套餐”有十多个选项,但 Client 只保存当前控件树里可见的
3 个。原因是旧流程找到第二规格后就结束,没有继续遍历套餐自身的横向滚动列表。
本任务完整收集尺码或套餐文字,同时不改变颜色点击和逐颜色采价规则。
## 最终方案
- 先沿用原有纵向流程找到第二规格,避免改变普通衣服的颜色、尺码采集路径。
- 找到第二规格后,定位规格选项最近的可滚动父容器,区分横向独立列表和纵向
规格面板。
- 横向套餐列表先回到最左端,再向右逐页扫描;纵向第二规格继续向下扫描。
- 使用“当前可见文字 + 坐标”判断是否到达边界,跨页按文字去重并保留从起点
开始的自然顺序,全程不点击套餐或尺码。
- 标题包含数量(例如“套餐(15)”)时校验实际采集数量;数量不足明确返回
`PDD_DATA_SPEC_INCOMPLETE`,不再把局部结果当作完整数据提交。
- 嵌套列表解析结果按标题纵坐标排序,保证页面上方“款式”仍映射到主规格,页面
下方“套餐”仍映射到第二规格。
## 改了哪些文件
- `client/src/pdd_collect_service.py`:增加第二规格容器定位、方向识别、起止边界
检测、跨页合并及标题数量校验。
- `client/test/test_pdd_collect_service.py`:增加七个横向套餐完整遍历、自然顺序、
不点击选项及声明数量不足的回归测试。
## 验收结果
- [x] 独立横向套餐列表会先回到左端,再从左向右完整扫描。
- [x] 相邻页面重复出现的套餐会去重,并保留自然顺序。
- [x] 遍历第二规格时不会点击套餐或尺码。
- [x] 标题声明的选项数量大于实际采集数量时明确报数据不完整。
- [x] 衣服类已有颜色、尺码、逐颜色价格测试保持通过。
- [x] 未修改数据库、Admin 接口和 `pdd_data` 数据结构。
- [ ] 用户使用真机商品 `757123298435` 确认十多个套餐均被采集。
## 测试
在 `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
```
结果:采集服务 60 项、Client 完整 422 项测试通过,语法检查通过。
**没验证到的部分**:未使用真机重新采集商品 `757123298435`;未执行真实采购、
下单或付款;不采集套餐与款式组合价格,仍沿用只记录主规格价格的既定规则。
## 相关提交
- `18678e1` 完整遍历尺码与套餐第二规格。