MVP:SYB 商品 PDD 图搜自动关联与采集 #275

Open
opened 2026-09-14 10:16:19 +08:00 by ila · 4 comments
Owner

原始需求

  • 来源:用户于 2026-09-14 与 Agent 的需求讨论。
  • 用户表述要点(摘要):
    • 「新增手动批量创建 syb 商品图片采集,agent 根据任务里的图片链接保存到 android,然后根据图片去 pdd app 搜索,先默认取第一个搜索结果商品来采集,然后把采集结果推送到 admin 并关联 syb 商品」
    • 「以图搜索商品成功率不是百分百,如果有 70% 的成功率也是值得,节省了很多时间」
    • 「采购员已经接受了现在的采集采购流程,能够使用起来……只需要在现在的合适字段里增加标注『图搜商品』,如果手动再次关联了其他 pdd 商品,就去掉这个标注」
  • 目的:省掉采购员手动拍照、手动搜索、手动关联的时间。

目标

让采购员可以在 SYB 商品页批量发起「图搜」任务;Agent 用 PDD App 的拍照搜索找到商品并走现有采集链路完成采集与关联;自动建立的关联带「图搜」标注,采购员手动改过关联后标注自动消失。

非目标

  • 不新增 Agent tab、不新增 Admin 菜单、不新增人工确认队列。图搜任务就在现有「采集」tab / 采集任务列表里查看。
  • 不改动任何采购代码,不实现支付动作、入口或测试。
  • 不引入 OCR / VLM。Agent 端识别只用无障碍树。
  • 不做「高置信自动关联」分级策略(等真实准确率数据出来后另行评估)。

方案概述

图搜与现有 agent_current_page 是同一形态:任务创建时不知道是哪个 PDD 商品,Agent 执行中解析出身份再回填。区别只是谁打开那个商品页——现在是采购员手动打开,图搜是 Agent 自己搜出来打开。打开之后的链路(分享链接 → goods_id → IdentifyCurrentPage 回填 → 采集)完全复用。

因此不新建任务表、不新增任务类型,只给 collection_task.source 增加一个取值。

用户确认事实(2026-09-14)

采购员目前日常就在手工使用 PDD 拍照搜索,现有的「临时任务」正是这么产生的:

手动打开 PDD -> 点拍照搜索 -> 从相册选 SYB 商品图 -> 看结果页
  -> 肉眼挑一个(多半是第一个)-> 打开商品
  -> 在 Agent「采集」tab 点「采集」按钮
  -> Agent 读分享链接拿 goods_id -> 采集 -> 关联

本 MVP 要做的是把前三步交给 Agent,把"肉眼挑"替换为默认取第一个结果;后三步已经是现有能力,不改动。

由此已被日常使用证实的事实:

  • 拍照搜索入口存在且可用,未被 PDD 下掉。
  • PDD 有 App 内置相册,不经过系统/厂商图片选择器。
  • 选图 -> 结果页 -> 打开商品 -> 采集当前页,整条路走得通。

仍需真机确认的:入口按钮的 contentDescription 是否恰好为 拍照搜索,以及图搜页/结果页的文本判据是否与参考项目记录一致。人用图标识别,Agent 用无障碍树字符串识别,两者不等价;参考项目的常量来自其当时的 PDD 版本。

前置门禁(不建单)

在手机上把 PDD 停在图搜页与图搜结果页,各 dump 一次无障碍树,核对下列常量是否仍然成立。因入口与流程已由日常使用证实,本门禁只是一次字符串核对,不需要探索整条路径。

此项不通过则 #277 方案需重写,MVP 不启动实施。

参考实现位于本机 D:\chengma\cmroubao_old(同一作者的未完成项目),其 android-buyer/.../pinduoduo/ 下有已在真机走通过图搜入口的实现:

  • PinduoduoImageSearchAsset.kt:MediaStore 写图、"自己是否为相册最新一张"校验、写前清理、最小边不足 960 放大。可大段移植。
  • PinduoduoImageSearchAutomation.kt:从商品详情/规格弹层/订单确认页归位回图搜入口的状态机。
  • 判据常量:入口 拍照搜索;图搜页 我的相册 + 最近搜索 + 历史浏览 + (点击拍照|开启相机权限|…即可进行自动识别);选图锚点 最近项目 下方 4 列等宽网格取第一格;结果页 搜图片同款 + 排序控件 ≥ 3。
  • 不可参考:PinduoduoGoodsIdOcr.kt、PinduoduoCheckoutOcr.kt、PinduoduoSpecificationVlm.kt(违反本仓库 Agent 端不用 OCR/VLM 的规则);其后端与工作流引擎(架构不同)。
  • 成熟度提示:该项目 docs/current-state.md 停在 2026-08-01,大量任务 DOING。其 T-271 记录真机三轮全部 CANDIDATE_RESULTS_NOT_READY、cards=0(图片未加载完时读不到商品卡)。即:进入图搜并选图已在真机走通,从结果页读候选卡片未闭环。

子工单索引

单元 工单 交付单元 依赖
U1 #276 图搜所需相册权限与授权引导 android 无
U2 #277 PDD 以图搜商品并接入现有采集链路 android #276
U3 #278 图搜采集任务下发与身份回填 server 无(契约需先定)
U4 #279 图搜自动关联标记与人工覆盖清除 server + web + android #278
U5 #280 SYB 商品批量发起图搜任务 web + server #278

建议顺序:U1 与 U3 并行起步 → U2(最耗时,需反复上真机)→ U4、U5 并行收尾。

MVP 集成验收

  1. 在 SYB 商品页多选一批未关联商品,批量发起图搜。
  2. Agent 依次执行;采购员此间手动发起的采集/采购任务能够插队优先执行。
  3. 成功的任务在「采集」tab 与 Admin 采集任务列表可见,带图搜来源标记。
  4. 成功建立的 shopee↔PDD 关联带「图搜」标注。
  5. 在虾皮商品页手动改关联后,该标注消失。
  6. 价格偏离超阈值的候选不建立关联,任务明确失败。
  7. 全部单元工单验收通过后才做本项集成验收。

风险

  • collection_task.source 的 check 约束变更属于数据库迁移,高风险,实施前需人工确认。
  • Agent 新增相册权限影响所有现有设备:升级后需重新授权,不授权则图搜不可用。
  • PDD 版本更新可能使选择器失效;这是该功能的长期维护成本。

文档影响

待 U3 确定契约后更新 docs/08-agent-api-contract.md;业务规则与架构页面按实际改动在各单元工单内判断。

## 原始需求 - 来源:用户于 2026-09-14 与 Agent 的需求讨论。 - 用户表述要点(摘要): - 「新增手动批量创建 syb 商品图片采集,agent 根据任务里的图片链接保存到 android,然后根据图片去 pdd app 搜索,先默认取第一个搜索结果商品来采集,然后把采集结果推送到 admin 并关联 syb 商品」 - 「以图搜索商品成功率不是百分百,如果有 70% 的成功率也是值得,节省了很多时间」 - 「采购员已经接受了现在的采集采购流程,能够使用起来……只需要在现在的合适字段里增加标注『图搜商品』,如果手动再次关联了其他 pdd 商品,就去掉这个标注」 - 目的:省掉采购员手动拍照、手动搜索、手动关联的时间。 ## 目标 让采购员可以在 SYB 商品页批量发起「图搜」任务;Agent 用 PDD App 的拍照搜索找到商品并走**现有采集链路**完成采集与关联;自动建立的关联带「图搜」标注,采购员手动改过关联后标注自动消失。 ## 非目标 - 不新增 Agent tab、不新增 Admin 菜单、不新增人工确认队列。图搜任务就在现有「采集」tab / 采集任务列表里查看。 - 不改动任何采购代码,不实现支付动作、入口或测试。 - 不引入 OCR / VLM。Agent 端识别只用无障碍树。 - 不做「高置信自动关联」分级策略(等真实准确率数据出来后另行评估)。 ## 方案概述 图搜与现有 `agent_current_page` 是同一形态:任务创建时不知道是哪个 PDD 商品,Agent 执行中解析出身份再回填。区别只是**谁打开那个商品页**——现在是采购员手动打开,图搜是 Agent 自己搜出来打开。打开之后的链路(分享链接 → goods_id → `IdentifyCurrentPage` 回填 → 采集)完全复用。 因此不新建任务表、不新增任务类型,只给 `collection_task.source` 增加一个取值。 ## 用户确认事实(2026-09-14) 采购员**目前日常就在手工使用 PDD 拍照搜索**,现有的「临时任务」正是这么产生的: ``` 手动打开 PDD -> 点拍照搜索 -> 从相册选 SYB 商品图 -> 看结果页 -> 肉眼挑一个(多半是第一个)-> 打开商品 -> 在 Agent「采集」tab 点「采集」按钮 -> Agent 读分享链接拿 goods_id -> 采集 -> 关联 ``` 本 MVP 要做的是把**前三步**交给 Agent,把"肉眼挑"替换为默认取第一个结果;后三步已经是现有能力,不改动。 由此已被日常使用证实的事实: - 拍照搜索入口存在且可用,未被 PDD 下掉。 - PDD 有 App 内置相册,**不经过系统/厂商图片选择器**。 - 选图 -> 结果页 -> 打开商品 -> 采集当前页,整条路走得通。 **仍需真机确认的**:入口按钮的 `contentDescription` 是否恰好为 `拍照搜索`,以及图搜页/结果页的文本判据是否与参考项目记录一致。人用图标识别,Agent 用无障碍树字符串识别,两者不等价;参考项目的常量来自其当时的 PDD 版本。 ## 前置门禁(不建单) 在手机上把 PDD 停在图搜页与图搜结果页,各 dump 一次无障碍树,核对下列常量是否仍然成立。因入口与流程已由日常使用证实,本门禁只是一次字符串核对,不需要探索整条路径。 **此项不通过则 #277 方案需重写,MVP 不启动实施。** 参考实现位于本机 `D:\chengma\cmroubao_old`(同一作者的未完成项目),其 `android-buyer/.../pinduoduo/` 下有已在真机走通过图搜入口的实现: - `PinduoduoImageSearchAsset.kt`:MediaStore 写图、"自己是否为相册最新一张"校验、写前清理、最小边不足 960 放大。可大段移植。 - `PinduoduoImageSearchAutomation.kt`:从商品详情/规格弹层/订单确认页归位回图搜入口的状态机。 - 判据常量:入口 `拍照搜索`;图搜页 `我的相册 + 最近搜索 + 历史浏览 + (点击拍照|开启相机权限|…即可进行自动识别)`;选图锚点 `最近项目` 下方 4 列等宽网格取第一格;结果页 `搜图片同款` + 排序控件 ≥ 3。 - **不可参考**:`PinduoduoGoodsIdOcr.kt`、`PinduoduoCheckoutOcr.kt`、`PinduoduoSpecificationVlm.kt`(违反本仓库 Agent 端不用 OCR/VLM 的规则);其后端与工作流引擎(架构不同)。 - **成熟度提示**:该项目 `docs/current-state.md` 停在 2026-08-01,大量任务 DOING。其 T-271 记录真机三轮全部 `CANDIDATE_RESULTS_NOT_READY`、`cards=0`(图片未加载完时读不到商品卡)。即:**进入图搜并选图已在真机走通,从结果页读候选卡片未闭环。** ## 子工单索引 | 单元 | 工单 | 交付单元 | 依赖 | |---|---|---|---| | U1 | #276 图搜所需相册权限与授权引导 | android | 无 | | U2 | #277 PDD 以图搜商品并接入现有采集链路 | android | #276 | | U3 | #278 图搜采集任务下发与身份回填 | server | 无(契约需先定) | | U4 | #279 图搜自动关联标记与人工覆盖清除 | server + web + android | #278 | | U5 | #280 SYB 商品批量发起图搜任务 | web + server | #278 | 建议顺序:U1 与 U3 并行起步 → U2(最耗时,需反复上真机)→ U4、U5 并行收尾。 ## MVP 集成验收 1. 在 SYB 商品页多选一批未关联商品,批量发起图搜。 2. Agent 依次执行;采购员此间手动发起的采集/采购任务能够插队优先执行。 3. 成功的任务在「采集」tab 与 Admin 采集任务列表可见,带图搜来源标记。 4. 成功建立的 shopee↔PDD 关联带「图搜」标注。 5. 在虾皮商品页手动改关联后,该标注消失。 6. 价格偏离超阈值的候选不建立关联,任务明确失败。 7. 全部单元工单验收通过后才做本项集成验收。 ## 风险 - `collection_task.source` 的 check 约束变更属于数据库迁移,高风险,实施前需人工确认。 - Agent 新增相册权限影响**所有现有设备**:升级后需重新授权,不授权则图搜不可用。 - PDD 版本更新可能使选择器失效;这是该功能的长期维护成本。 ## 文档影响 待 U3 确定契约后更新 `docs/08-agent-api-contract.md`;业务规则与架构页面按实际改动在各单元工单内判断。
Author
Owner

执行前核验(2026-09-14)

用户要求实施 #275~#280,并仅在本地服务测试,不发布线上。

  • 已读取父工单和 #276~#280 全文及当前评论;#275 是 MVP,正式实现单位为 #276~#280。
  • 当前 origin/main 基线为 be03972;保留现有无关工作区改动。
  • adb devices -l 当前没有任何可用设备。#275 明确要求实施前验证图搜入口、图搜页与结果页的无障碍选择器,未通过前 MVP 不启动实施,因此目前仅完成前置核验,未修改产品代码或数据库,也未重启任何服务。
  • 核验将遵循仓库隐私规则:仅实时读取与图搜有关的节点并记录脱敏选择器/结构结论,不落盘原始控件树和整屏截图。
  • #276 相册权限变更、#278 数据库 source CHECK 约束和任务元数据、#279 新增关联标注列,需按各工单要求取得相应人工确认后实施;本地测试不等于默认授权数据库迁移或权限变更。
  • 计划顺序:选择器前置核验 → #276 / #278(确定共享契约)→ #277 → #279 / #280 → #275 集成验证。#276/#279/#280 实施前补齐现有 UI 规范复用说明;范围扩展时另行确认。

当前会话未提供 Gitea MCP,按仓库规则使用 Gitea API 回退;凭据只从已配置 gitea.env 读取。

## 执行前核验(2026-09-14) 用户要求实施 #275~#280,并仅在本地服务测试,不发布线上。 - 已读取父工单和 #276~#280 全文及当前评论;#275 是 MVP,正式实现单位为 #276~#280。 - 当前 origin/main 基线为 be03972;保留现有无关工作区改动。 - adb devices -l 当前没有任何可用设备。#275 明确要求实施前验证图搜入口、图搜页与结果页的无障碍选择器,未通过前 MVP 不启动实施,因此目前仅完成前置核验,未修改产品代码或数据库,也未重启任何服务。 - 核验将遵循仓库隐私规则:仅实时读取与图搜有关的节点并记录脱敏选择器/结构结论,不落盘原始控件树和整屏截图。 - #276 相册权限变更、#278 数据库 source CHECK 约束和任务元数据、#279 新增关联标注列,需按各工单要求取得相应人工确认后实施;本地测试不等于默认授权数据库迁移或权限变更。 - 计划顺序:选择器前置核验 → #276 / #278(确定共享契约)→ #277 → #279 / #280 → #275 集成验证。#276/#279/#280 实施前补齐现有 UI 规范复用说明;范围扩展时另行确认。 当前会话未提供 Gitea MCP,按仓库规则使用 Gitea API 回退;凭据只从已配置 gitea.env 读取。
Author
Owner

图搜入口前置核验通过(2026-09-14)

设备 192.168.0.9:40103 已连接并现场核验:

  • PDD 首页搜索框右侧相机节点存在,content-desc=拍照搜索,可点击,边界 [941,161][1080,228]。
  • 点击后进入拍照搜索页;实时无障碍结构出现 我的相册、最近搜索、历史浏览,并出现“最近项目”区域及可滚动 RecyclerView。
  • 现场同时存在“点击拍照”相机入口;相册网格当前可见两格可点击图片节点,后续实现可按 MediaStore 最新图校验后取第一格。
  • 未保存原始控件树、截图或商品/个人数据,仅记录脱敏的稳定选择器和边界证据。

前置门禁已通过,可进入实现阶段;仍需人工授权高风险动作:#276 的运行时相册权限/Manifest 变更,以及 #278/#279 的数据库迁移。

## 图搜入口前置核验通过(2026-09-14) 设备 `192.168.0.9:40103` 已连接并现场核验: - PDD 首页搜索框右侧相机节点存在,`content-desc=拍照搜索`,可点击,边界 `[941,161][1080,228]`。 - 点击后进入拍照搜索页;实时无障碍结构出现 `我的相册`、`最近搜索`、`历史浏览`,并出现“最近项目”区域及可滚动 RecyclerView。 - 现场同时存在“点击拍照”相机入口;相册网格当前可见两格可点击图片节点,后续实现可按 MediaStore 最新图校验后取第一格。 - 未保存原始控件树、截图或商品/个人数据,仅记录脱敏的稳定选择器和边界证据。 前置门禁已通过,可进入实现阶段;仍需人工授权高风险动作:#276 的运行时相册权限/Manifest 变更,以及 #278/#279 的数据库迁移。
Author
Owner

集成核对结论:不可验收(2026-09-15)

  • 被核对分支:release/283 @ c80d0c9;基线 main @ c14f5f5。
  • release/283 是打包分支,同时含 #272 #273 #274 #276 #278 #279 #280 #282 #283。
  • 执行内容:go build ./...、go test ./...(server)、npm run build:prod(web)、逐条对照各单元工单验收项读取 diff。
  • 未执行:真机验证、Android 构建与单测——Android 侧无可验证的实现(见 #277)。

一句话结论

#277 一行代码都没有,整条链路不可用。 服务端已能创建任务、下发参考图元数据、在结果回传后自动建立关联,但没有任何组件会去执行图搜。

各单元状态

单元 状态 主要缺口
#276 权限 部分 未接入引导流程;拒绝授权后无重新授权入口;无状态显示
#277 图搜执行器 未开始 0 提交;Android 侧合计 12 行且均属 #276
#278 下发与回填 实现达标 docs/08-agent-api-contract.md 未更新(docs/ 零改动)
#279 关联标记 部分 采购侧可见未做(BatchPreviewItem 无图搜字段);Agent 列表标记未做
#280 批量发起 部分 无批次上限;无耗时提示

值得认可的部分

服务端与 Web 的实现质量是好的,有三处超出工单要求:

  1. #278 的跨币种处理——虾皮商品非 CNY 时不自动关联,保留人工复核。
  2. #279 自动关联的 CAS 谓词(pdd_product_id IS NULL AND image_search_linked = false),Agent 执行期间的人工改动会正确胜出。
  3. #280 按 shopee_product 去重确实做到了,这是本 MVP 最容易被漏掉的一条。

集成验收逐条核对(本工单「MVP 集成验收」7 条)

  1. 批量发起 — 部分可用,无批次上限
  2. Agent 依次执行、采购可插队 — 不可用(#277 未做,调度垫底也未做)
  3. 任务在「采集」tab 与采集任务列表可见并带来源标记 — 不可用
  4. 关联带图搜标注 — 服务端已实现,但因 2 不可达而无法端到端验证
  5. 手动改关联后标注消失 — 已实现,逻辑正确
  6. 价格偏离超阈值不建立关联 — 已实现
  7. 全部单元通过后才做集成验收 — 前置不满足

阻塞项:release/283 分支为红

go test ./app/goauto/sybimport/...   ->  12 个测试失败
main (c14f5f5) 同一包                ->  全绿

责任提交:aed295c(#272)、e0ed05d(#274)、b83f20c(#274)。与图搜无关,但该分支在修复前不能合入 main。

建议顺序

  1. 修复 sybimport 的 12 个失败(#272 / #274 的范围,独立于本 MVP)
  2. 补三条小缺口:#278 契约文档、#279 采购侧字段、#280 批次上限
  3. #277 重新派工,并先完成本工单记录的前置门禁(图搜页与结果页各 dump 一次无障碍树,核对 拍照搜索 等常量)——该门禁至今未执行

相邻问题(不在本 MVP 范围,仅提示)

仓库工作区存在两个包含凭据的未跟踪文件,且未被 .gitignore 覆盖,存在被 git add . 误提交的风险。建议尽快处理。此处不记录文件内容。

MVP 与五个单元工单状态均维持待实施。

## 集成核对结论:不可验收(2026-09-15) - 被核对分支:`release/283` @ `c80d0c9`;基线 `main` @ `c14f5f5`。 - `release/283` 是打包分支,同时含 #272 #273 #274 #276 #278 #279 #280 #282 #283。 - 执行内容:`go build ./...`、`go test ./...`(server)、`npm run build:prod`(web)、逐条对照各单元工单验收项读取 diff。 - **未执行**:真机验证、Android 构建与单测——Android 侧无可验证的实现(见 #277)。 ## 一句话结论 **#277 一行代码都没有,整条链路不可用。** 服务端已能创建任务、下发参考图元数据、在结果回传后自动建立关联,但没有任何组件会去执行图搜。 ## 各单元状态 | 单元 | 状态 | 主要缺口 | |---|---|---| | #276 权限 | 部分 | 未接入引导流程;**拒绝授权后无重新授权入口**;无状态显示 | | #277 图搜执行器 | **未开始** | 0 提交;Android 侧合计 12 行且均属 #276 | | #278 下发与回填 | 实现达标 | `docs/08-agent-api-contract.md` 未更新(`docs/` 零改动) | | #279 关联标记 | 部分 | **采购侧可见未做**(`BatchPreviewItem` 无图搜字段);Agent 列表标记未做 | | #280 批量发起 | 部分 | **无批次上限**;无耗时提示 | ## 值得认可的部分 服务端与 Web 的实现质量是好的,有三处超出工单要求: 1. #278 的跨币种处理——虾皮商品非 CNY 时不自动关联,保留人工复核。 2. #279 自动关联的 CAS 谓词(`pdd_product_id IS NULL AND image_search_linked = false`),Agent 执行期间的人工改动会正确胜出。 3. #280 按 `shopee_product` 去重确实做到了,这是本 MVP 最容易被漏掉的一条。 ## 集成验收逐条核对(本工单「MVP 集成验收」7 条) 1. 批量发起 — 部分可用,无批次上限 2. Agent 依次执行、采购可插队 — **不可用**(#277 未做,调度垫底也未做) 3. 任务在「采集」tab 与采集任务列表可见并带来源标记 — **不可用** 4. 关联带图搜标注 — 服务端已实现,但因 2 不可达而无法端到端验证 5. 手动改关联后标注消失 — 已实现,逻辑正确 6. 价格偏离超阈值不建立关联 — 已实现 7. 全部单元通过后才做集成验收 — **前置不满足** ## 阻塞项:`release/283` 分支为红 ``` go test ./app/goauto/sybimport/... -> 12 个测试失败 main (c14f5f5) 同一包 -> 全绿 ``` 责任提交:`aed295c`(#272)、`e0ed05d`(#274)、`b83f20c`(#274)。与图搜无关,但该分支在修复前不能合入 main。 ## 建议顺序 1. 修复 `sybimport` 的 12 个失败(#272 / #274 的范围,独立于本 MVP) 2. 补三条小缺口:#278 契约文档、#279 采购侧字段、#280 批次上限 3. **#277 重新派工**,并先完成本工单记录的前置门禁(图搜页与结果页各 dump 一次无障碍树,核对 `拍照搜索` 等常量)——该门禁至今未执行 ## 相邻问题(不在本 MVP 范围,仅提示) 仓库工作区存在两个包含凭据的未跟踪文件,且未被 `.gitignore` 覆盖,存在被 `git add .` 误提交的风险。建议尽快处理。此处不记录文件内容。 MVP 与五个单元工单状态均维持待实施。
Author
Owner

实施与上线(2026-09-15)

五个单元工单的缺口全部补齐并上线。合并提交 1d01186,已推送 be03972..1d01186;发布 /home/goauto/releases/20260915-1d01186,二进制 SHA-256 前缀 65e404c4721d592a,服务 active。

各单元的实施细节写在各自工单,此处只记录集成层面的结论。

前置门禁:已完成

本工单记录的门禁「在图搜页与结果页 dump 无障碍树,核对 拍照搜索 等常量」已于 2026-09-15 在真机执行(1080×2354,PDD HomeActivity / NewPageActivity)。

位置 实测 结论
首页入口 [941,161][1080,228] ImageView clickable=true content-desc='拍照搜索' 命中
图搜页 我的相册 + 最近搜索 + 历史浏览 + 点击拍照 齐备 命中
选图网格 最近项目 锚点 [0,1892][210,1898],下方每格 267px,267×4=1068,屏宽 1080,容差 ±24 命中
结果页 搜图片同款 + 排序控件 综合/销量/价格/品牌(4 个 ≥ 3) 命中
候选卡片 535×764,RecyclerView [0,132][1080,2306] 与参考项目 T-271 记录一致
重试弹窗 识别成功未触发 未验证

移植自参考项目的常量基本可用。核对中发现四个坑,均已写入 PinduoduoImageSearchCriteria 注释与 docs/08-agent-api-contract.md:

  1. [必须] 入口判定必须同时要求 clickable。个人中心 tab 的根节点同样带 content-desc='拍照搜索',覆盖全屏 [0,0][1080,2354] 且不可点,而 visibleTexts() 会把 contentDescription 当文本收集。只按文案匹配会把个人中心判成首页,几何兜底随后点到该页顶部最靠右的可点节点——实测那是「设置」按钮。已在 #277 修复。
  2. 取景提示真机为「对准商品/条形码/二维码,自动识别」,移植来源的 即可进行自动识别 不命中,靠 点击拍照 兜住。
  3. 相册网格同时包含视频(实测见到带时长 03:02 的格子)。因此「自己是否为相册最新一项」的判定已从只比 jpeg 扩大到 MediaStore.Files(图片 + 视频),不是最新一项时以 IMAGE_SEARCH_ASSET_NOT_LATEST 明确失败,不往后找。
  4. 用户补充的几何兜底(顶部区域最靠右的可点节点)已记录,并要求必须先看到顶部搜索栏证据才允许使用。

MVP 集成验收逐条核对

# 验收项 状态
1 批量发起 代码已上线,含去重与批次上限 50;未实际发起过批次
2 Agent 依次执行、采购可插队 调度垫底已实现(服务端 ORDER BY);Agent 执行端到端未验证
3 任务在「采集」tab 与列表可见并带来源标记 代码已上线;未验证
4 关联带图搜标注 服务端已实现,逻辑有单测;未端到端验证
5 手动改关联后标注消失 已实现,LinkPDD 写 false,有测试
6 价格偏离超阈值不建立关联 已实现,含跨币种拒绝
7 全部单元通过后才做集成验收 前置不满足——各单元均停在待验收

结论:MVP 尚不可验收。 阻塞项是端到端真机执行未做(第 2、3 项),下一步是安装 debug APK 到真机跑一次完整图搜任务。

上次评论提出的阻塞项处理

上次核对记录的「release/283 分支为红,12 个 sybimport 失败」在本次上线前重新调查,发现其中并非全是过期测试:

[必须] sybimport.Parse 把空格分隔的「颜色 尺码」整条当成颜色、尺码为空且判为 success,而 success 的行永远不进 AI 解析队列,因此没有任何机制会纠正。该缺陷随 #274 于 2026-09-14 已上线,线上有 152 条 parse_status='success' AND target_size=''。已单独建单 #284 并随本次一同修复上线;12 个过期测试单独记录为 #285,本次上线前后失败集合逐条 diff 完全一致,未新增。

因此本次上线内容为 #275~#280 图搜采集 + #284 解析修复,#272/#273/#274/#282/#283 保持原样。

遗留

  • 端到端真机执行(阻塞 MVP 验收)。
  • #276 老设备升级后重新授权路径未验证。
  • #279 / #280 的界面变化缺标注截图或复用规范说明(工单设计证据要求)。
  • #284 的 152 条存量数据未重解析,需单独确认。
  • #285 的 12 个过期测试未处理,sybimport 目前没有有效回归保护。

MVP 与五个单元工单均保持待验收。

## 实施与上线(2026-09-15) 五个单元工单的缺口全部补齐并上线。合并提交 `1d01186`,已推送 `be03972..1d01186`;发布 `/home/goauto/releases/20260915-1d01186`,二进制 SHA-256 前缀 `65e404c4721d592a`,服务 `active`。 各单元的实施细节写在各自工单,此处只记录集成层面的结论。 ## 前置门禁:已完成 本工单记录的门禁「在图搜页与结果页 dump 无障碍树,核对 `拍照搜索` 等常量」已于 2026-09-15 在真机执行(1080×2354,PDD `HomeActivity` / `NewPageActivity`)。 | 位置 | 实测 | 结论 | |---|---|---| | 首页入口 | `[941,161][1080,228] ImageView clickable=true content-desc='拍照搜索'` | 命中 | | 图搜页 | `我的相册` + `最近搜索` + `历史浏览` + `点击拍照` 齐备 | 命中 | | 选图网格 | `最近项目` 锚点 `[0,1892][210,1898]`,下方每格 267px,267×4=1068,屏宽 1080,容差 ±24 | 命中 | | 结果页 | `搜图片同款` + 排序控件 综合/销量/价格/品牌(4 个 ≥ 3) | 命中 | | 候选卡片 | `535×764`,RecyclerView `[0,132][1080,2306]` | 与参考项目 T-271 记录一致 | | 重试弹窗 | 识别成功未触发 | **未验证** | 移植自参考项目的常量基本可用。核对中发现四个坑,均已写入 `PinduoduoImageSearchCriteria` 注释与 `docs/08-agent-api-contract.md`: 1. `[必须]` 入口判定必须同时要求 **clickable**。个人中心 tab 的**根节点**同样带 `content-desc='拍照搜索'`,覆盖全屏 `[0,0][1080,2354]` 且不可点,而 `visibleTexts()` 会把 `contentDescription` 当文本收集。只按文案匹配会把个人中心判成首页,几何兜底随后点到该页顶部最靠右的可点节点——实测那是「设置」按钮。已在 #277 修复。 2. 取景提示真机为「对准商品/条形码/二维码,自动识别」,移植来源的 `即可进行自动识别` **不命中**,靠 `点击拍照` 兜住。 3. 相册网格**同时包含视频**(实测见到带时长 `03:02` 的格子)。因此「自己是否为相册最新一项」的判定已从只比 jpeg 扩大到 `MediaStore.Files`(图片 + 视频),不是最新一项时以 `IMAGE_SEARCH_ASSET_NOT_LATEST` 明确失败,不往后找。 4. 用户补充的几何兜底(顶部区域最靠右的可点节点)已记录,并要求必须先看到顶部搜索栏证据才允许使用。 ## MVP 集成验收逐条核对 | # | 验收项 | 状态 | |---|---|---| | 1 | 批量发起 | 代码已上线,含去重与批次上限 50;**未实际发起过批次** | | 2 | Agent 依次执行、采购可插队 | 调度垫底已实现(服务端 `ORDER BY`);**Agent 执行端到端未验证** | | 3 | 任务在「采集」tab 与列表可见并带来源标记 | 代码已上线;**未验证** | | 4 | 关联带图搜标注 | 服务端已实现,逻辑有单测;**未端到端验证** | | 5 | 手动改关联后标注消失 | 已实现,`LinkPDD` 写 false,有测试 | | 6 | 价格偏离超阈值不建立关联 | 已实现,含跨币种拒绝 | | 7 | 全部单元通过后才做集成验收 | **前置不满足**——各单元均停在待验收 | **结论:MVP 尚不可验收。** 阻塞项是端到端真机执行未做(第 2、3 项),下一步是安装 debug APK 到真机跑一次完整图搜任务。 ## 上次评论提出的阻塞项处理 上次核对记录的「`release/283` 分支为红,12 个 `sybimport` 失败」在本次上线前重新调查,发现其中并非全是过期测试: `[必须]` `sybimport.Parse` 把空格分隔的「颜色 尺码」整条当成颜色、尺码为空且判为 `success`,而 `success` 的行永远不进 AI 解析队列,因此没有任何机制会纠正。该缺陷随 #274 于 2026-09-14 已上线,线上有 152 条 `parse_status='success' AND target_size=''`。已单独建单 **#284** 并随本次一同修复上线;12 个过期测试单独记录为 **#285**,本次上线前后失败集合逐条 diff 完全一致,未新增。 因此本次上线内容为 **#275~#280 图搜采集 + #284 解析修复**,#272/#273/#274/#282/#283 保持原样。 ## 遗留 - 端到端真机执行(阻塞 MVP 验收)。 - #276 老设备升级后重新授权路径未验证。 - #279 / #280 的界面变化缺标注截图或复用规范说明(工单设计证据要求)。 - #284 的 152 条存量数据未重解析,需单独确认。 - #285 的 12 个过期测试未处理,`sybimport` 目前没有有效回归保护。 MVP 与五个单元工单均保持待验收。
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: OPC/goauto#275