Files
cmroubao/docs/tasks/T-213.md
T

5.6 KiB
Raw Blame History

id, title, phase, deps, status, created, context_ref, work_branch, write_paths
id title phase deps status created context_ref work_branch write_paths
T-213 拼多多规格弹窗只读核验 2
T-212
BLOCKED 2026-07-27 edfee2c null
android-buyer/app/build.gradle.kts
docs/tasks/T-213.md
docs/04-architecture.md
docs/current-state.md
android-buyer/app/src/main/java/com/roubao/autopilot/MainActivity.kt
android-buyer/app/src/main/java/com/roubao/autopilot/accessibility/**
android-buyer/app/src/main/java/com/roubao/autopilot/pinduoduo/**
android-buyer/app/src/main/java/com/roubao/autopilot/procurement/**
android-buyer/app/src/main/java/com/roubao/autopilot/ui/screens/SearchProbeScreen.kt
android-buyer/app/src/main/java/com/roubao/autopilot/vlm/**
android-buyer/app/src/test/java/com/roubao/autopilot/pinduoduo/**
android-buyer/app/src/test/java/com/roubao/autopilot/procurement/**
android-buyer/app/src/test/java/com/roubao/autopilot/vlm/**

问题 / 背景

T-211 目前只用候选详情页首屏截图判断颜色和尺码。拼多多常把实际颜色、尺码选项放在 “选择规格”等弹窗内,首屏没有明确证据时只能返回 UNKNOWN,导致图片召回正确但自动 Top 5 为空。仅凭商品主图推断颜色或尺码不满足硬约束要求。

关联需求与交互

  • 功能:F-005、F-007、F-009。
  • 用户故事:US-004、US-005、US-009。
  • 交互:IX-006、IX-007、IX-010 的候选检查、人工确认和安全停止。
  • 架构/API:扩展 Android candidate evidence;后端沿用每个候选最多 5 个鉴权 evidence asset 的现有能力,不抓取第三方图片或商品 URL。

方案

  1. 在候选详情页只允许唯一识别并打开“选择规格/颜色分类/尺码”一类只读入口;增加 规格弹窗页面分类,登录、验证码、风控、订单和支付标记优先安全停止。
  2. 不点击任何颜色或尺码选项。只读取有界的可见分组标题、选项文本、选中/禁用语义, 并采集一张受控规格弹窗截图;无法确认分组完整性时标为未知。
  3. 本地使用与任务 SKU 相同的颜色/尺码规范化规则核对显式选项。只有目标值在明确的 对应分组中可见且不为禁用时才能形成自动 MATCH;完整分组明确缺失才可 MISMATCH,截断、无障碍文本缺失或语义冲突一律 UNKNOWN。
  4. 候选评估同时绑定详情证据和规格证据的 SHA-256;VLM 可解释证据,但不能覆盖本地 硬约束结果。Android outbox 支持一个候选关联详情和规格两份证据。
  5. 采集后关闭规格弹窗并返回图片结果页;任一步无法唯一确认时安全停止,不尝试其他 按钮或坐标。

验收要点

  • 页面分类测试覆盖规格弹窗、普通详情、登录、验证码、风控、购物车、订单和支付。
  • 自动化只点击唯一规格入口,不点击颜色/尺码选项、购买、拼单、购物车或支付控件。
  • 颜色、尺码分组及选项解析有数量/文本长度边界,截断或歧义不会判为 MATCH。
  • 单元测试覆盖两个目标均匹配、明确不匹配、禁用、缺失和未知。
  • 每个候选的详情/规格证据哈希和后端 asset ID 对应正确,离线重试不重复或串位。
  • Android 单元测试和 Debug 构建通过。
  • PKG110、Android 16、拼多多 8.17.0 真机 smoke 完成规格弹窗打开、只读采集、 关闭和返回;记录 App/拼多多版本并确认未进入订单或支付。

边界

  • 第一版不点击或组合选择具体 SKU,不判断颜色与尺码组合库存。
  • 不滚动无界规格列表,不覆盖拼多多未提供无障碍语义的自绘控件。
  • VLM 截图判断只能辅助解释;没有确定性规格证据时不得自动通过。
  • 不加入购物车、不提交订单、不支付,也不实现一键连续执行。

执行记录

  • 2026-07-27:根据 T-211 真机链路的证据缺口登记。任务依赖 T-212,避免规格证据被 关联到错误的重排候选。
  • 2026-07-27:T-212 完成提交 4b795a4 后领取。先冻结拼多多 8.17 规格弹窗的只读 页面/动作边界和候选多证据模型,再进行真机验证。
  • 2026-07-27:实现规格弹层分类、安全入口 allowlist、颜色/尺码有界解析、本地确定性 硬匹配、candidate evaluation schema/prompt v3,以及每个候选详情/规格两份证据的 cache 校验、重排身份绑定和加密 outbox 关联。模型返回状态与本地状态不一致时强制 降级人工检查。
  • 2026-07-27:Android testDebugUnitTest 24 个 suite、128 个测试全部通过, assembleDebug 通过;后端 go test ./... 通过。Debug APK 1.4.3 (8) 已安装到 PKG110,拼多多版本为 8.17.0 (81700)。
  • 2026-07-27:真机检查图片结果中的定制商品和文字搜索 black tshirt L 的普通服装 商品。服装详情只暴露不可点击的“颜色/款式”预览,完整颜色/尺码弹层只能通过 “单独购买/免拼购买”控件进入;前两个定制商品甚至没有规格预览。全程未点击购买、 拼单、购物车、订单或支付控件。
  • 2026-07-27:任务标记 BLOCKED。代码在缺少独立可点击规格入口时按 UNKNOWN_PAGE 安全停止,符合边界但无法完成“打开/采集/关闭/返回”的真机验收。 外部解除条件是:确认允许把购买语义控件仅用于打开规格弹层,或提供不经过购买控件 的稳定规格入口/受支持数据源。重新安装后 ColorOS 也关闭了肉包无障碍服务,继续 smoke 前需采购员在系统设置手动重新启用。