Files
cmautobuy/docs/task/175-兼容提交提示型非滚动规格面板.md
T

69 lines
3.3 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.
# #175 Client:兼容底部提交提示的非滚动规格面板
- 工单号:#175
- 类型:缺陷修复
- 父级:#1 / #2
- 版本:Client 可运行任务闭环
- 状态:已完成,用户验收通过
- 日期:2026-08-12
- Gitea:<http://ilaer.eicp.net:8418/chengma/cmautobuy/issues/175>
## 背景与目标
采集任务 `cj7` 打开商品规格面板后,Client 仍等待十秒并报告
`SKU_PANEL_NOT_FOUND`。诊断确认这是没有 `scrollable=true` 的全高自绘面板,底部是
“选择规格后提交订单”提示,不是旧兼容逻辑要求的“确定”。目标是识别这种面板,
继续复用现有颜色价格和尺码采集流程,并修正误导性的超时错误。
## 最终方案
1. 保留 #154 的“确认款式/关闭 + 摘要 + 规格标题 + 确定”识别分支。
2. 新增全高非滚动面板分支,必须同时具有可靠 PDD 节点、关闭或确认标题、选择摘要、
独立规格标题、唯一数量输入框、唯一加减按钮和唯一底部提交提示。
3. 以“请选择/已选”开头的摘要不再参与规格标题识别,避免生成错误维度。
4. 从强证据节点寻找最小公共父容器,交给现有 `parse_spec_panel()` 解析,不复制后续
逐色采价和尺码采集实现。
5. 等待过程中如果页面分类已经进入规格确认页,但结构始终不能解析,返回
`PDD_DATA_SPEC_INCOMPLETE`;只有仍未打开面板时才报告加载超时。
6. 从本地失败 XML 提取最小结构,制作不包含真实商品、账号或个人数据的脱敏固件。
最终实现与建单方案一致。
## 改了哪些文件
- `client/src/pdd_collect_service.py`:扩展非滚动面板识别并细分等待失败原因。
- `client/test/test_pdd_collect_service.py`:增加新结构、误判保护和错误分类测试。
- `client/test/fixtures/pdd_spec_panel_submit_hint.xml`:新增脱敏最小回归固件。
- `docs/client/02-architecture.md`:记录两类非滚动面板的稳定识别规则。
实现提交:`0f24165`。
## 验收结果
- [x] 本次失败结构可以识别并解析主规格和第二规格。
- [x] “请选择:颜色分类 尺码”不会成为独立规格维度。
- [x] #154 的“确认款式 + 确定”面板继续通过。
- [x] 普通商品页和孤立提交提示不会被误判。
- [x] 已进入规格页但解析失败时不再误报 `SKU_PANEL_NOT_FOUND`。
- [x] 原始 XML 和真实内容未进入 Git、日志、工单或文档。
- [x] 精确测试、Client 全量测试、语法检查和差异检查通过。
## 测试
从 `client/` 执行:
```powershell
C:/Python310/python.exe -m py_compile src/pdd_collect_service.py
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"
```
结果:规格采集精确测试 64 项通过;Client 全量 435 项测试通过;语法检查和
`git diff --check` 通过。
本地只读验证确认最新失败 XML 可识别两个规格维度,摘要没有混入规格标题。原始文件
没有暂存或提交。
**未验证到的部分:**没有连接真机重新采集该商品;没有执行采购、地址修改、下单或
付款。PDD 真机滚动、逐色点击和最终提交数据需要用户验收。