73 lines
3.6 KiB
Markdown
73 lines
3.6 KiB
Markdown
# #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` 识别带价格的纵向套餐续页。
|