2026-09-09 用户报告:真机临时采集失败,停留在 PDD 规格面板。原话:
「最新agent,192.168.0.9:35399 ,现在临时采集失败,停留在pdd app规格面板,分析报错:SPEC_PANEL_EVIDENCE_NOT_MATCHED:点击规格后离开了商品规格面板」 「真机现在停留在pdd 商品页规格面板,为什么自动遍历了颜色第一行,来到第二行就失败呢。是不是颜色里的"%"号干扰呢」
目标:让规格遍历能在 PDD 给选项附加角标(导致标签被省略号截断)时仍然正确确认选中,并让「已选摘要」在缺少既定前缀的面板形态下仍可作为兜底证据。
用户怀疑颜色名里的 % 干扰。已排除:第一行三个选项同样含 100%,且全部遍历成功。
%
100%
失败时页面为 PDD 的订单确认形态面板(含收货地址、微信支付、提交订单 ¥15.7,同时内嵌可点的颜色分类)。屏幕 1080x2354,可滚动容器为 RecyclerView (0,1108)-(1080,2057)。
提交订单 ¥15.7
六个颜色选项的 TextView 原始文本对比:
第1行 ' 白色小帽子【100%竹节棉】' '藏蓝色小帽子【100%竹节棉】' '白色笑脸【100%竹节棉】' 第2行 '藏蓝色笑脸【100...\n 零差评' ← 失败点,selected=true ' 白色小蝴蝶结【100%竹节棉】' '藏蓝色小蝴蝶结【100%竹节棉】'
失败的这一个选项,PDD 在同一个 TextView 内附加了「零差评」角标(换行后置),挤压导致商品名被省略号截断为 藏蓝色笑脸【100...,完整名应为 藏蓝色笑脸【100%竹节棉】。
藏蓝色笑脸【100...
藏蓝色笑脸【100%竹节棉】
顶部摘要节点文本为 零差评#藏蓝色笑脸【100%竹节棉】 M 【建议80-95斤】,不含「已选」前缀。
零差评#藏蓝色笑脸【100%竹节棉】 M 【建议80-95斤】
症状一:精确相等匹配被角标破坏
android/.../automation/PddProductDetailCollector.kt:1668(stablePrice):
android/.../automation/PddProductDetailCollector.kt:1668
stablePrice
val targetState = screen.dimensions.flatMap { it.values } .any { it.text == color && (it.node.selected || it.node.checked) }
it.text == color 为精确相等。被截断的 藏蓝色笑脸【100...\n 零差评 与目标 藏蓝色笑脸【100%竹节棉】 不相等,targetState 恒为 false。
it.text == color
藏蓝色笑脸【100...\n 零差评
targetState
症状二:已选摘要兜底识别过窄
RuleContract.kt:90:summaryPrefixes = ["已选", "请选择", "已選", "請選擇"]。
RuleContract.kt:90
summaryPrefixes = ["已选", "请选择", "已選", "請選擇"]
该面板摘要为 零差评#藏蓝色笑脸【100%竹节棉】 M 【建议80-95斤】,无上述前缀,故 selectedSummary 为空,targetSummary 兜底同样失效。
selectedSummary
targetSummary
两条证据路径同时断开后,panelMissingReads 累加,达到 SPEC_PANEL_LOST_STABLE_READS = 2(PddProductDetailCollector.kt:1662/1788)即返回 PageProblem("SPEC_PANEL_EVIDENCE_NOT_MATCHED", "点击规格后离开了商品规格面板")。
panelMissingReads
SPEC_PANEL_LOST_STABLE_READS = 2
PddProductDetailCollector.kt:1662/1788
PageProblem("SPEC_PANEL_EVIDENCE_NOT_MATCHED", "点击规格后离开了商品规格面板")
与行号无关:「零差评」是该 SKU 独有的角标,与它在第几行无关。该 SKU 移到第一行同样会失败;「第一行成功、第二行失败」是巧合,不得据此按行号定位。
selected
checked
selected=true
AGENTS.md
提交订单
_cg91
Android 端缺陷修复,无新页面或用户可见交互变化,不需要 UI 原型。设计证据为上述真机控件树原始文本对比与 PddProductDetailCollector、RuleContract 的现有实现。
PddProductDetailCollector
RuleContract
:app:assembleDebug
若最终方案改变了 Business-Rules-and-Glossary 中规格选中确认的对外判据描述,需按 Wiki-first 流程更新;若仅为文本归一化的内部实现调整、未改变"不得猜测规格、不得点击相近候选"的安全语义,可记录为无长期文档影响并说明原因。
Business-Rules-and-Glossary
无阻塞依赖。当前 Android 修复链顶端为 fix/249-local-purchase-diagnostics(659bbc6),本工单应基于该链顶端开发,以免与今日 #238、#243–#249 的改动冲突。
fix/249-local-purchase-diagnostics
659bbc6
No dependencies set.
The note is not visible to the blocked user.
来源与目标
2026-09-09 用户报告:真机临时采集失败,停留在 PDD 规格面板。原话:
目标:让规格遍历能在 PDD 给选项附加角标(导致标签被省略号截断)时仍然正确确认选中,并让「已选摘要」在缺少既定前缀的面板形态下仍可作为兜底证据。
排除的假设
用户怀疑颜色名里的
%干扰。已排除:第一行三个选项同样含100%,且全部遍历成功。真机证据(设备 192.168.0.9,Agent 0.9.67 / versionCode 80,PDD 8.22.0,2026-09-09)
失败时页面为 PDD 的订单确认形态面板(含收货地址、微信支付、
提交订单 ¥15.7,同时内嵌可点的颜色分类)。屏幕 1080x2354,可滚动容器为 RecyclerView (0,1108)-(1080,2057)。六个颜色选项的 TextView 原始文本对比:
失败的这一个选项,PDD 在同一个 TextView 内附加了「零差评」角标(换行后置),挤压导致商品名被省略号截断为
藏蓝色笑脸【100...,完整名应为藏蓝色笑脸【100%竹节棉】。顶部摘要节点文本为
零差评#藏蓝色笑脸【100%竹节棉】 M 【建议80-95斤】,不含「已选」前缀。代码事实
症状一:精确相等匹配被角标破坏
android/.../automation/PddProductDetailCollector.kt:1668(stablePrice):it.text == color为精确相等。被截断的藏蓝色笑脸【100...\n 零差评与目标藏蓝色笑脸【100%竹节棉】不相等,targetState恒为 false。症状二:已选摘要兜底识别过窄
RuleContract.kt:90:summaryPrefixes = ["已选", "请选择", "已選", "請選擇"]。该面板摘要为
零差评#藏蓝色笑脸【100%竹节棉】 M 【建议80-95斤】,无上述前缀,故selectedSummary为空,targetSummary兜底同样失效。两条证据路径同时断开后,
panelMissingReads累加,达到SPEC_PANEL_LOST_STABLE_READS = 2(PddProductDetailCollector.kt:1662/1788)即返回PageProblem("SPEC_PANEL_EVIDENCE_NOT_MATCHED", "点击规格后离开了商品规格面板")。与行号无关:「零差评」是该 SKU 独有的角标,与它在第几行无关。该 SKU 移到第一行同样会失败;「第一行成功、第二行失败」是巧合,不得据此按行号定位。
范围
selected/checked属性作为主证据(失败样本中该节点selected=true明确可读),文本仅作辅助校验。selectedSummary的识别需覆盖缺少「已选」前缀的面板形态,但仍须是结构化判据(例如摘要节点位于面板固定区域且与当前选中项一致),不得退化为"页面上任意包含该文本的节点"。非目标(安全边界,不可放宽)
AGENTS.md规定 Agent 本地不得猜测规格或点击相近候选。本工单只解决"同一个选项因角标导致文本变形",不解决"选项之间语义相近"。相邻观察(记录,不在本工单处理)
提交订单)。采集流程能走到该页面本身值得单独评估:它距不可逆动作仅一步。本工单只修文本匹配,不改变采集进入该页面的行为。_cg91,而任务 91 是 2026-09-05 已失败的旧任务。说明地址后缀会滞留到下次修改。这对 #242 的按后缀回填是一个边界风险:若某任务改地址后失败,其后创建的订单可能携带旧后缀,导致回填误配。建议补入 #242 评估,不在本工单处理。方案与设计证据
Android 端缺陷修复,无新页面或用户可见交互变化,不需要 UI 原型。设计证据为上述真机控件树原始文本对比与
PddProductDetailCollector、RuleContract的现有实现。验收
:app:assembleDebug通过。文档影响
若最终方案改变了
Business-Rules-and-Glossary中规格选中确认的对外判据描述,需按 Wiki-first 流程更新;若仅为文本归一化的内部实现调整、未改变"不得猜测规格、不得点击相近候选"的安全语义,可记录为无长期文档影响并说明原因。依赖
无阻塞依赖。当前 Android 修复链顶端为
fix/249-local-purchase-diagnostics(659bbc6),本工单应基于该链顶端开发,以免与今日 #238、#243–#249 的改动冲突。