feat(server): 图搜采集成功后自动触发规格匹配 #287

Open
opened 2026-09-15 17:44:04 +08:00 by ila · 0 comments
Owner

原始需求

  • 来源:用户于 2026-09-15 提出。
  • 原话要点:「现在的创建采集和采购流程比较消耗时间,才需要批量图搜采集,如果图搜采集后还需要人工确认,整体效果和以前一样。所以需要在现有代码基础上增加图搜采集成功后去匹配颜色和尺码,达到可以采购的状态」。

事实澄清

「还需要人工确认 → 效果和以前一样」这一句不成立:AI 匹配 与 创建采购 在图搜之前的流程里本来就是批量的两次点击,图搜没有新增任何点击。图搜消除的是每个商品 4~6 步手工(开 PDD、拍照搜索、肉眼挑、打开商品、点采集、回 Admin 手动关联)。

但用户描述的真实摩擦成立,只是原因不同:图搜是异步的,Agent 在手机上跑几分钟,采购员必须离开页面、稍后回来、重新勾选、再点 AI 匹配。旧流程虽然全手工但一气呵成,现在被切成两段,中间靠人记着回来。这个断层是图搜引入的。

[必须] 因此自动匹配必须接在图搜任务完成之后(与 autoLinkImageSearch 同一个钩子)。曾考虑在图搜批量结果对话框加一个匹配按钮,该方案不成立:该对话框在任务创建后立刻弹出,此时 Agent 一个都还没执行。

目标

图搜采集完成并成功建立关联后,自动对该任务覆盖的 SYB 明细触发一次规格匹配,使其尽可能到达「采购就绪」。

非目标

  • 不自动创建采购。 创建采购 仍然必须由人点击。这是整条链上唯一的人工检查点。
  • 不保证全部就绪。 下列三关不受本工单控制,任意一关不过就仍需人工介入:
    1. AI Provider 不可用/超时/返回不了可用结果 → pending,人工确认;
    2. 可售 SKU 组合校验不通过(#200 定的真正门槛);
    3. 采购预览的 mappingTargetsValid 复核(#283)。
  • 不改变 BatchSpecMatch 现有的匹配与自动确认逻辑。

风险:这条链将没有任何人工环节

图搜找到商品(未核)→ 自动关联 → AI 匹配规格(无置信度门槛)→ 采购就绪

[必须] #200 已明确取消 SYB 批量入口的置信度门槛:

// #200:在 SYB 批量入口,AI 只要返回了可保存的规格结果,就由后续的
// 候选与可售 SKU 组合校验决定是否放行;置信度仅保留为审计信息。
autoConfirm := qualification.Deterministic != nil ||
    (matched.Source == aimatching.SourceAI && strings.TrimSpace(matched.Decision.Reason) != "")

所以不能以「置信度阈值会兜住」来论证安全性。真实案例:订单 260911QDM57K2C 的明细 14561,虾皮尺码 L 50-55公斤 需匹配 PDD 的 L 95-105(斤),AI 要自行完成单位换算;颜色 黑色 微喇長褲夏款 对 黑色 微喇夏天款长裤 是繁简加词序差异。两者都可能对,但没有人看过。

补偿控制只剩 image_search_linked 标记,它已显示在虾皮/SYB 商品页、批量采购预览与采购任务列表(#279 第 5 条)。本工单将其语义从「商品是机器找的」扩展为「商品由图搜找到、规格由 AI 自动匹配,均未经人工确认」,界面文案同步调整。

方案

  • 在 task/result_service.go 现有 autoLinkImageSearch 之后追加一个钩子:关联确实写入时,取图搜快照里的 SYBProductIDs,调用既有 purchase.Service.BatchSpecMatch。
  • task 包目前不依赖 purchase,purchase 也不依赖 task,直接引用不构成循环依赖。
  • 匹配失败不得影响采集结果提交:钩子内的错误只记录,不向上冒泡导致 SubmitResult 失败。采集已经完成,不能因为后续的可选增强而回滚。
  • 仅对 source='image_search' 且本次确实写入关联的任务触发;关联被乐观并发谓词拒绝时不触发。

设计证据

后端钩子 + 现有界面的文案调整,属显示文案,执行最小界面检查。

验收

  • 图搜任务完成且成功建立关联后,对应 SYB 明细自动进入规格匹配。
  • 匹配成功且通过可售 SKU 组合校验的明细,在 SYB 商品页可直接创建采购,无需先点 AI 匹配。
  • 匹配失败或 Provider 不可用时,采集结果仍正常提交,任务不因此失败。
  • 关联未写入(乐观并发谓词拒绝)时不触发匹配。
  • 创建采购 仍需人工点击,未出现任何自动下单路径。
  • 标记文案体现「规格由 AI 自动匹配、未经人工确认」。

验证

go build ./...;go test ./app/goauto/task/... ./app/goauto/purchase/...;Web 构建。

[必须] app/goauto/sybimport 存在 12 个先于本工单的失败用例(#285),前后失败集合必须一致,不得新增。

文档影响

图搜链路行为变化,需更新 docs/08-agent-api-contract.md 中 #275~#280 章节的「结果自动关联」一节。

## 原始需求 - 来源:用户于 2026-09-15 提出。 - 原话要点:「现在的创建采集和采购流程比较消耗时间,才需要批量图搜采集,如果图搜采集后还需要人工确认,整体效果和以前一样。所以需要在现有代码基础上增加图搜采集成功后去匹配颜色和尺码,达到可以采购的状态」。 ## 事实澄清 「还需要人工确认 → 效果和以前一样」这一句不成立:`AI 匹配` 与 `创建采购` 在图搜之前的流程里**本来就是批量的两次点击**,图搜没有新增任何点击。图搜消除的是每个商品 4~6 步手工(开 PDD、拍照搜索、肉眼挑、打开商品、点采集、回 Admin 手动关联)。 但用户描述的真实摩擦成立,只是原因不同:**图搜是异步的**,Agent 在手机上跑几分钟,采购员必须离开页面、稍后回来、重新勾选、再点 AI 匹配。旧流程虽然全手工但一气呵成,现在被切成两段,中间靠人记着回来。这个断层是图搜引入的。 `[必须]` 因此自动匹配必须接在**图搜任务完成之后**(与 `autoLinkImageSearch` 同一个钩子)。曾考虑在图搜批量结果对话框加一个匹配按钮,该方案不成立:该对话框在任务**创建后立刻**弹出,此时 Agent 一个都还没执行。 ## 目标 图搜采集完成并成功建立关联后,自动对该任务覆盖的 SYB 明细触发一次规格匹配,使其尽可能到达「采购就绪」。 ## 非目标 - **不自动创建采购。** `创建采购` 仍然必须由人点击。这是整条链上唯一的人工检查点。 - **不保证全部就绪。** 下列三关不受本工单控制,任意一关不过就仍需人工介入: 1. AI Provider 不可用/超时/返回不了可用结果 → `pending`,人工确认; 2. 可售 SKU 组合校验不通过(#200 定的真正门槛); 3. 采购预览的 `mappingTargetsValid` 复核(#283)。 - 不改变 `BatchSpecMatch` 现有的匹配与自动确认逻辑。 ## 风险:这条链将没有任何人工环节 ``` 图搜找到商品(未核)→ 自动关联 → AI 匹配规格(无置信度门槛)→ 采购就绪 ``` `[必须]` #200 已明确取消 SYB 批量入口的置信度门槛: ```go // #200:在 SYB 批量入口,AI 只要返回了可保存的规格结果,就由后续的 // 候选与可售 SKU 组合校验决定是否放行;置信度仅保留为审计信息。 autoConfirm := qualification.Deterministic != nil || (matched.Source == aimatching.SourceAI && strings.TrimSpace(matched.Decision.Reason) != "") ``` 所以不能以「置信度阈值会兜住」来论证安全性。真实案例:订单 260911QDM57K2C 的明细 14561,虾皮尺码 `L 50-55公斤` 需匹配 PDD 的 `L 95-105`(斤),AI 要自行完成单位换算;颜色 `黑色 微喇長褲夏款` 对 `黑色 微喇夏天款长裤` 是繁简加词序差异。两者都可能对,但没有人看过。 补偿控制只剩 `image_search_linked` 标记,它已显示在虾皮/SYB 商品页、批量采购预览与采购任务列表(#279 第 5 条)。本工单将其语义从「商品是机器找的」扩展为「商品由图搜找到、规格由 AI 自动匹配,均未经人工确认」,界面文案同步调整。 ## 方案 - 在 `task/result_service.go` 现有 `autoLinkImageSearch` 之后追加一个钩子:关联确实写入时,取图搜快照里的 `SYBProductIDs`,调用既有 `purchase.Service.BatchSpecMatch`。 - `task` 包目前不依赖 `purchase`,`purchase` 也不依赖 `task`,直接引用不构成循环依赖。 - 匹配失败不得影响采集结果提交:钩子内的错误只记录,不向上冒泡导致 `SubmitResult` 失败。采集已经完成,不能因为后续的可选增强而回滚。 - 仅对 `source='image_search'` 且本次确实写入关联的任务触发;关联被乐观并发谓词拒绝时不触发。 ## 设计证据 后端钩子 + 现有界面的文案调整,属显示文案,执行最小界面检查。 ## 验收 - [ ] 图搜任务完成且成功建立关联后,对应 SYB 明细自动进入规格匹配。 - [ ] 匹配成功且通过可售 SKU 组合校验的明细,在 SYB 商品页可直接创建采购,无需先点 AI 匹配。 - [ ] 匹配失败或 Provider 不可用时,采集结果仍正常提交,任务不因此失败。 - [ ] 关联未写入(乐观并发谓词拒绝)时不触发匹配。 - [ ] `创建采购` 仍需人工点击,未出现任何自动下单路径。 - [ ] 标记文案体现「规格由 AI 自动匹配、未经人工确认」。 ## 验证 `go build ./...`;`go test ./app/goauto/task/... ./app/goauto/purchase/...`;Web 构建。 `[必须]` `app/goauto/sybimport` 存在 12 个先于本工单的失败用例(#285),前后失败集合必须一致,不得新增。 ## 文档影响 图搜链路行为变化,需更新 `docs/08-agent-api-contract.md` 中 #275~#280 章节的「结果自动关联」一节。
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: OPC/goauto#287