a10f9833e7efbf3e5612392bfcf7bad9b1ff42dd
SPEC_PANEL_EVIDENCE_NOT_MATCHED:规格面板页面结构无法确认
D:\chengma\cmautobuy\client
D:\chengma\cmautobuy
9fbed74e86a700bb162c7456974d7166dbb6f13d
SPEC_PANEL_EVIDENCE_NOT_MATCHED
specPanel
DETAIL_ENTRY_MATCHED
SIZE_DISCOVERY
specPanelOpen
PddProductDetailCollector
dimensions.isNotEmpty()
panelOpen
D:\chengma\cmautobuy\client\src\pdd_collect_service.py 的现有实现将“面板打开证据”和“规格解析结果”分离:
D:\chengma\cmautobuy\client\src\pdd_collect_service.py
_find_non_scrollable_spec_panel
_is_spec_panel_open
parse_spec_panel
_wait_spec_panel
GoAuto 不复制参考项目依赖 uiautomator2、原始控件 XML 或截图的诊断实现;只借鉴状态分离和组合证据设计。
以下为根据任务 #79/#80、现有代码和 PDD 状态延续行为得到的推断,不作为已证实页面内容:
dimensions
panelOpen=false
现有诊断没有记录面板形态和恢复尝试,实施必须补充安全结构化证据以验证该推断,不能保存文本、控件树或截图。
missing:size
NORMAL_SCROLLABLE
NON_SCROLLABLE_CONFIRMATION
QUICK_CONFIRMATION
UNKNOWN
AgentDiagnosticStore
SPEC_PANEL_ENTRY
screenChanged
dimensions.isEmpty()
cd android && .\gradlew.bat :app:testDebugUnitTest :app:assembleDebug
.\scripts\verify.ps1 -Component android
python dev_scripts/harness.py check --strict
e606096034dcd9484af213101ea92e24fa48dfdc
预计为 Android 内部解析状态修复和本地诊断增强,不改变长期业务规则、共享 API、数据结构或运行方式。实施时检查 Wiki 是否枚举规格面板诊断阶段;若未枚举,则在工单记录“无长期文档影响”并跳过 Wiki 更新与同步;若已有枚举,则按 Wiki-first 门禁更新。
方案已根据 2026-08-27 的代码、任务结构化结果与参考实现分析建立,待实施。
开始实施。按工单正文限定只修改 Android Agent:分离规格面板已打开状态与当前规格值解析结果,补充强组合证据、有界安全恢复和 SPEC_PANEL_ENTRY 本地诊断;不修改服务端、数据库、共享 API、Web、规则 JSON,不读取或保存控件树/截图,不点击购买、提交订单或支付动作。
已按工单正文完成 Android 修复,提交:c782103b6f0e65c275361daa0bab9b5aeef04764。
c782103b6f0e65c275361daa0bab9b5aeef04764
SpecPanelType
PddProductDetailCollectorTest
.\android\gradlew.bat -p android :app:testDebugUnitTest :app:assembleDebug
git diff --check
现有 Wiki 未枚举 DETAIL_ENTRY、SIZE_DISCOVERY 等本地诊断阶段;本次为 Android 内部解析与诊断增强,不改变长期业务规则、API、数据结构或运行方式,因此无长期文档影响,按正文约定跳过 Wiki 更新与同步。
DETAIL_ENTRY
pending/running
工单保持 open / 待验收。
用户于 2026-08-28 明确确认本工单验收通过。按项目流程记录验收结论并关闭工单;本次仅更新工单状态,无新增长期文档事实,不重复同步 Wiki。
No dependencies set.
The note is not visible to the blocked user.
所属与来源
a10f9833e7efbf3e5612392bfcf7bad9b1ff42dd)执行最新当前页面采集后反馈:停留在 PDD 商品页,最终失败并返回 Agent,错误为SPEC_PANEL_EVIDENCE_NOT_MATCHED:规格面板页面结构无法确认;用户要求参考D:\chengma\cmautobuy\client已实现采集逻辑分析,并确认按分析建议新建独立工单。D:\chengma\cmautobuy提交基线9fbed74e86a700bb162c7456974d7166dbb6f13d;相关参考文件存在本地未提交改动,本工单只将其当前工作树作为行为参考,不把它声明为该提交的纯净实现,也不复制其原始 XML/截图诊断方式。当前事实与根因
已证实事实
SPEC_PANEL_EVIDENCE_NOT_MATCHED失败;身份确认到任务结束约 11.15 秒。specPanel超时为 10000ms,与该失败耗时一致。DETAIL_ENTRY_MATCHED:首次即通过 package、Activity、selector 三项强证据,耗时约 125ms;SIZE_DISCOVERY记录,说明失败发生在 #111 尺码遍历启动之前。specPanelOpen,且未识别为评价误入时,返回SPEC_PANEL_EVIDENCE_NOT_MATCHED。PddProductDetailCollector把dimensions.isNotEmpty()作为panelOpen的必要条件;只有当前视口至少解析出一个带可见可点击值的规格维度,面板才会被认定为已打开。specPanelOpen已成立并取得已确认面板容器后才开始回顶和尺码扫描,无法修复该上游门禁。参考实现差异
D:\chengma\cmautobuy\client\src\pdd_collect_service.py的现有实现将“面板打开证据”和“规格解析结果”分离:_find_non_scrollable_spec_panel使用确认标题/关闭入口、唯一提交提示、数量输入与加减控件等组合证据识别自绘或非滚动确认面板。_is_spec_panel_open不要求当前视口一定暴露规格选项;已确认非滚动面板,或可滚动区域联合已选摘要、提交提示、规格标题之一,都可证明面板已打开。parse_spec_panel可以返回维度暂为空的快照,后续再通过有界恢复与遍历取得规格。_wait_spec_panel区分普通规格面板、确认页、快速确认恢复和不完整读取,不因当前视口没有可点击值就立即否定面板。GoAuto 不复制参考项目依赖 uiautomator2、原始控件 XML 或截图的诊断实现;只借鉴状态分离和组合证据设计。
高概率但待真机证实的页面序列
以下为根据任务 #79/#80、现有代码和 PDD 状态延续行为得到的推断,不作为已证实页面内容:
dimensions因没有“标题 + 可点击值”而为空,导致panelOpen=false。现有诊断没有记录面板形态和恢复尝试,实施必须补充安全结构化证据以验证该推断,不能保存文本、控件树或截图。
目标
SPEC_PANEL_EVIDENCE_NOT_MATCHED。非目标
missing:size契约。实施方案
1. 分离面板状态与解析结果
NORMAL_SCROLLABLE:普通可滚动规格面板;NON_SCROLLABLE_CONFIRMATION:自绘或非滚动确认面板;QUICK_CONFIRMATION:快速确认页;UNKNOWN:证据不足。panelOpen由面板强证据决定,不再以dimensions.isNotEmpty()为必要条件;dimensions仅表示当前视口已解析到的规格。2. 收紧且扩展面板强证据
3. 面板确认后的有界恢复
dimensions为空时,优先复用已确认的面板容器执行有界回顶和重新解析;不得在页面最大滚动区域或未知容器盲目滑动。4. 安全诊断
AgentDiagnosticStore表结构,增加SPEC_PANEL_ENTRY阶段及稳定原因枚举;不新增 SQLite 版本、服务端字段或共享接口。screenChanged;5. 测试
安全边界
验收标准
dimensions独立;面板强证据成立且维度暂为空时,panelOpen仍成立。dimensions.isEmpty()返回SPEC_PANEL_EVIDENCE_NOT_MATCHED,而是安全恢复并进入既有遍历。SPEC_PANEL_EVIDENCE_NOT_MATCHED;任务继续进入颜色/尺码采集,并按真实结果完成、部分完成或返回更具体的后续错误。SPEC_PANEL_ENTRY诊断能说明面板类型、结构计数和恢复结果,且不新增 schema/API,也不含控件内容、树、XML、截图或商品身份信息。DETAIL_ENTRY_MATCHED保持小于 3 秒;#111 的SIZE_DISCOVERY在进入尺码扫描后正常产生,既有普通管理端采集和采购路径不回退。验证方式
cd android && .\gradlew.bat :app:testDebugUnitTest :app:assembleDebug.\scripts\verify.ps1 -Component androidpython dev_scripts/harness.py check --strict依赖、并行与风险
e606096034dcd9484af213101ea92e24fa48dfdc与 #111 提交a10f9833e7efbf3e5612392bfcf7bad9b1ff42dd已实现;两工单仍待用户验收,本工单应基于二者当前代码继续。PddProductDetailCollector、规格面板解析或滚动容器证据的工单并行。文档影响
预计为 Android 内部解析状态修复和本地诊断增强,不改变长期业务规则、共享 API、数据结构或运行方式。实施时检查 Wiki 是否枚举规格面板诊断阶段;若未枚举,则在工单记录“无长期文档影响”并跳过 Wiki 更新与同步;若已有枚举,则按 Wiki-first 门禁更新。
状态
方案已根据 2026-08-27 的代码、任务结构化结果与参考实现分析建立,待实施。
开始实施。按工单正文限定只修改 Android Agent:分离规格面板已打开状态与当前规格值解析结果,补充强组合证据、有界安全恢复和
SPEC_PANEL_ENTRY本地诊断;不修改服务端、数据库、共享 API、Web、规则 JSON,不读取或保存控件树/截图,不点击购买、提交订单或支付动作。实施完成,待验收
已按工单正文完成 Android 修复,提交:
c782103b6f0e65c275361daa0bab9b5aeef04764。实现
SpecPanelType,区分NORMAL_SCROLLABLE、NON_SCROLLABLE_CONFIRMATION、QUICK_CONFIRMATION和UNKNOWN。dimensions.isNotEmpty();当前视口没有可点击规格值时,只要强组合证据成立,仍认定面板已打开。SPEC_PANEL_ENTRY本地诊断及打开、恢复成功、恢复不可用、恢复失败、证据不匹配、点击无变化原因;复用现有 SQLite schema,只记录面板类型、结构计数、布尔状态、次数和耗时,不记录文本、控件树、XML、截图、链接或 goods_id。自动验证
PddProductDetailCollectorTest:通过。.\android\gradlew.bat -p android :app:testDebugUnitTest :app:assembleDebug:通过。.\scripts\verify.ps1 -Component android:通过(Debug/Release 单元测试及 Debug APK)。python dev_scripts/harness.py check --strict:通过。git diff --check:通过。文档影响
现有 Wiki 未枚举
DETAIL_ENTRY、SIZE_DISCOVERY等本地诊断阶段;本次为 Android 内部解析与诊断增强,不改变长期业务规则、API、数据结构或运行方式,因此无长期文档影响,按正文约定跳过 Wiki 更新与同步。PKG110
pending/running采集任务或采购任务。SPEC_PANEL_EVIDENCE_NOT_MATCHED结束,并检查后续SPEC_PANEL_ENTRY/SIZE_DISCOVERY诊断与最终规格结果。工单保持 open / 待验收。
用户于 2026-08-28 明确确认本工单验收通过。按项目流程记录验收结论并关闭工单;本次仅更新工单状态,无新增长期文档事实,不重复同步 Wiki。