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

3.3 KiB
Raw Blame History

#175 Client:兼容底部提交提示的非滚动规格面板

背景与目标

采集任务 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。

验收结果

  • 本次失败结构可以识别并解析主规格和第二规格。
  • “请选择:颜色分类 尺码”不会成为独立规格维度。
  • #154 的“确认款式 + 确定”面板继续通过。
  • 普通商品页和孤立提交提示不会被误判。
  • 已进入规格页但解析失败时不再误报 SKU_PANEL_NOT_FOUND。
  • 原始 XML 和真实内容未进入 Git、日志、工单或文档。
  • 精确测试、Client 全量测试、语法检查和差异检查通过。

测试

从 client/ 执行:

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 真机滚动、逐色点击和最终提交数据需要用户验收。