fix(android): 回填禁词表遗漏「再次拼单」「更多」,可被 safe() 放行 #308

Open
opened 2026-09-18 11:25:35 +08:00 by ila · 0 comments
Owner

来源:2026-09-18 真机现场(192.168.0.173:38881,PDD 我的订单列表)分析回填停滞时发现的安全缺口,与停滞原因无关,独立优先修复。

问题

BackfillPagePolicy.forbidden 收录了 再次购买,但 PDD 当前订单列表上的实际按钮文案是 再次拼单:

forbidden = listOf("确认收货","申请退款","催发货","去支付","立即支付",
                   "提交订单","付款","退款","取消订单","再次购买","删除订单")

真机现场实测:再次拼单 节点 clickable=true,且通过了 safe()(子树无禁词、几何不与禁词重叠)。它当前没有被点到,仅仅是因为 cards() 的其它条件恰好不命中它——属于运气,不是设计保障。

更多 同样通过 safe(),而「更多」菜单里通常含取消订单/删除订单。

方案

  • 再次拼单 加入 forbidden。
  • 更多 加入 forbidden:它本身不是终态动作,但展开后暴露的是订单动作,回填全程只读,没有任何理由点它。

[必须] 只扩禁词表,不放宽任何既有判据。

非目标

  • 不改 cards() / list() / safe() 的结构判据(另见后续工单)。
  • 不改点击驱动。

验收

  • 再次拼单、更多 无法通过 safe()。
  • 既有禁词行为不变。
  • 既有单测全部通过。

验证

./gradlew :app:testDebugUnitTest。

文档影响

回填只读边界的禁词清单是长期事实,需更新 Business-Rules-and-Glossary 中回填相关条目。

> 来源:2026-09-18 真机现场(192.168.0.173:38881,PDD 我的订单列表)分析回填停滞时发现的安全缺口,与停滞原因无关,独立优先修复。 ## 问题 `BackfillPagePolicy.forbidden` 收录了 `再次购买`,但 PDD 当前订单列表上的实际按钮文案是 **`再次拼单`**: ```kotlin forbidden = listOf("确认收货","申请退款","催发货","去支付","立即支付", "提交订单","付款","退款","取消订单","再次购买","删除订单") ``` 真机现场实测:`再次拼单` 节点 `clickable=true`,且**通过了 `safe()`**(子树无禁词、几何不与禁词重叠)。它当前没有被点到,仅仅是因为 `cards()` 的其它条件恰好不命中它——属于运气,不是设计保障。 `更多` 同样通过 `safe()`,而「更多」菜单里通常含取消订单/删除订单。 ## 方案 - `再次拼单` 加入 `forbidden`。 - `更多` 加入 `forbidden`:它本身不是终态动作,但展开后暴露的是订单动作,回填全程只读,没有任何理由点它。 `[必须]` 只扩禁词表,不放宽任何既有判据。 ## 非目标 - 不改 `cards()` / `list()` / `safe()` 的结构判据(另见后续工单)。 - 不改点击驱动。 ## 验收 - [ ] `再次拼单`、`更多` 无法通过 `safe()`。 - [ ] 既有禁词行为不变。 - [ ] 既有单测全部通过。 ## 验证 `./gradlew :app:testDebugUnitTest`。 ## 文档影响 回填只读边界的禁词清单是长期事实,需更新 Business-Rules-and-Glossary 中回填相关条目。
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: OPC/goauto#308