From 3c26cf4cd3b4f85dd60fe56c12db837b17e149ab Mon Sep 17 00:00:00 2001 From: chengma Date: Tue, 11 Aug 2026 15:02:30 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E5=BD=92=E6=A1=A3=E4=BB=BB=E5=8A=A1=20?= =?UTF-8?q?#154?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/task/154-兼容非滚动规格面板.md | 62 +++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 docs/task/154-兼容非滚动规格面板.md diff --git a/docs/task/154-兼容非滚动规格面板.md b/docs/task/154-兼容非滚动规格面板.md new file mode 100644 index 0000000..fc6d4ee --- /dev/null +++ b/docs/task/154-兼容非滚动规格面板.md @@ -0,0 +1,62 @@ +# 154 兼容不暴露滚动属性的 PDD 规格面板 + +- 类型:缺陷 +- 父级大工单:#1 +- 所属 MVP / 版本:#2 / Client 可运行任务闭环 +- 状态:已完成,待用户验收 +- 日期:2026-08-11 +- Gitea 工单: + +## 背景与目标 + +Client 采集商品时已经打开“确认款式”面板,但新版自绘面板没有任何 +`scrollable=true` 节点。原代码把可滚动节点作为规格面板的必要条件,因此持续等待并 +错误返回 `SKU_PANEL_NOT_FOUND`。 + +本任务兼容这种非滚动面板,同时保持严格证据,避免把普通商品页误判为规格面板。 + +## 最终方案 + +保留原有可滚动面板解析,增加非滚动面板的强证据定位。只有面板提示、已选或请选择 +摘要、真实规格标题和可点击“确定”入口同时存在,且它们具有小于整个窗口的有界公共 +父容器时,才认定规格面板已经打开。 + +解析时显式排除“确认款式/確認款式”面板标题,防止生成虚假的款式维度;使用第一个 +真实规格标题顶部作为价格区边界,使面板头部的券后价格可以被读取。若兼容容器内部 +仍有滚动节点,则继续优先使用原有滚动解析。 + +## 改了哪些 + +- `client/src/pdd_collect_service.py`:增加非滚动面板定位、标题过滤及价格边界处理。 +- `client/test/test_pdd_collect_service.py`:增加解析、等待和误判回归测试。 +- `client/test/fixtures/pdd_spec_panel_non_scrollable.xml`:新增脱敏非滚动面板固件。 + +## 验收结果 + +| 验收标准 | 结果 | +|---|---| +| 非滚动面板被识别为已打开,不再等待超时 | 通过 | +| 只解析颜色和尺码,不把“确认款式”当维度 | 通过 | +| 解析出 5 个颜色、1 个尺码和券后价格 | 通过;价格 817 分 | +| 普通商品页和全窗口散落文字不被误判 | 通过 | +| 原有滚动面板和带数量标题测试保持通过 | 通过 | +| 未增加 sleep 或扩大超时时间 | 通过 | +| 精确测试、完整测试和语法检查通过 | 通过 | + +## 测试 + +- 执行的命令:`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"`。 +- 结果:40 项测试通过。 +- 执行的命令: + `C:/Python310/python.exe -m unittest discover -s test -p "test_*.py"`。 +- 结果:394 项测试通过;只有既存 Qt 字体和弃用警告。 +- 执行的操作:使用本次失败时保存的真实 XML 调用面板判定和解析函数。 +- 结果:`panel_open=true`,颜色 5、尺码 1、价格 817 分、已选摘要存在。 +- **没验证到的部分**:未在真机上重新执行该商品采集;未执行采购或真实下单。 + +## 相关提交 + +- `fee8210` 兼容非滚动 PDD 规格面板