来源:2026-09-16 验收 #293 时发现的实现缺口。
MatchArchiveSpecs(#293)只在图搜关联成功的钩子里被调用。档案里那些没有对应 SYB 订单的规格值——即 #290 从虾皮接口同步补进来的值——一旦第一次匹配失败,就再也没有入口重跑。
MatchArchiveSpecs
SYB 商品页的「AI 匹配」按钮走的是按明细的 BatchSpecMatch,遍历 SYB 明细,碰不到这些值。唯一的补救办法是重新走一遍图搜采集,代价过高且成功率不满。
BatchSpecMatch
实测:虾皮 1528 同步补进 黑色、薑黃色、橘色、湖藍色、墨綠色 五个颜色,其中 黑色 在 PDD 8514 里唯一对应,首次匹配抽风失败后无法重跑。
黑色
薑黃色
橘色
湖藍色
墨綠色
在虾皮商品详情页提供一个手动入口,对该商品档案中所有未映射的规格值跑一轮 MatchArchiveSpecs,并回显 confirmed / skipped / failed 计数与代表性原因。
复用现有规范,不新增组件形态:按钮样式、计数角标、结果回显沿用 SYB 商品页「AI 匹配」按钮与批量结果对话框的既有做法(web/src/views/goauto/syb-products/index.vue)。属于现有界面的小范围调整,按 AGENTS.md「明确复用的现有规范」一档。
web/src/views/goauto/syb-products/index.vue
[必须]
与 #295(匹配重试)互补但不互相阻塞:#295 减少抽风导致的遗漏,本单提供遗漏之后的补救手段。
go test ./app/goauto/purchase/...;Web 构建;本地以虾皮 1528 复验。
go test ./app/goauto/purchase/...
新增采购员可见入口与接口,需更新 docs/08-agent-api-contract.md 与对应 Wiki 页面。
docs/08-agent-api-contract.md
建单前未核查既有实现,这是我的疏漏。
虾皮商品详情页已经有「一键匹配颜色和尺码」按钮(ShopeeProductDetailDrawer.vue:26),调用 POST /api/admin/v1/shopee-products/:productId/specs/mapping/auto-match。其 autoMatchRefs 遍历的是档案里所有规格值,不受 SYB 明细限制:
ShopeeProductDetailDrawer.vue:26
POST /api/admin/v1/shopee-products/:productId/specs/mapping/auto-match
autoMatchRefs
func autoMatchRefs(specs []SpecDimension, role string) []autoMatchRef { for _, dimension := range specs { if dimension.Role != role { continue } for _, value := range dimension.Values { refs = append(refs, autoMatchRef{...}) } } }
本地实测(虾皮 1528):
状态分布 unmatched=13 preserved=8 confirmed=1 3XL confirmed -> 3XL 建议126-135斤 「格式统一后唯一匹配」 黑色 unmatched -> 「AI 未给出可靠建议,请人工选择」
同步补入的值确实被覆盖到了,3XL 也补上了。所以本单描述的缺口并不成立——采购员已有补救手段,无需新增入口。
3XL
黑色 仍未匹上是 AI 抽风,属于 #295 的范围。该按钮走的是 shopeeproduct.suggestMappings 这条独立路径,#295 本次未接入重试,已在 #295 记为遗留。
shopeeproduct.suggestMappings
关闭,不实施。
No dependencies set.
The note is not visible to the blocked user.
问题
MatchArchiveSpecs(#293)只在图搜关联成功的钩子里被调用。档案里那些没有对应 SYB 订单的规格值——即 #290 从虾皮接口同步补进来的值——一旦第一次匹配失败,就再也没有入口重跑。SYB 商品页的「AI 匹配」按钮走的是按明细的
BatchSpecMatch,遍历 SYB 明细,碰不到这些值。唯一的补救办法是重新走一遍图搜采集,代价过高且成功率不满。实测:虾皮 1528 同步补进
黑色、薑黃色、橘色、湖藍色、墨綠色五个颜色,其中黑色在 PDD 8514 里唯一对应,首次匹配抽风失败后无法重跑。方案
在虾皮商品详情页提供一个手动入口,对该商品档案中所有未映射的规格值跑一轮
MatchArchiveSpecs,并回显 confirmed / skipped / failed 计数与代表性原因。设计证据
复用现有规范,不新增组件形态:按钮样式、计数角标、结果回显沿用 SYB 商品页「AI 匹配」按钮与批量结果对话框的既有做法(
web/src/views/goauto/syb-products/index.vue)。属于现有界面的小范围调整,按 AGENTS.md「明确复用的现有规范」一档。非目标
[必须]不自动创建采购。匹配只把明细推到「采购就绪」,创建采购仍由人点击。MatchArchiveSpecs的判据,不放宽候选校验与可售 SKU 校验。依赖
与 #295(匹配重试)互补但不互相阻塞:#295 减少抽风导致的遗漏,本单提供遗漏之后的补救手段。
验收
验证
go test ./app/goauto/purchase/...;Web 构建;本地以虾皮 1528 复验。文档影响
新增采购员可见入口与接口,需更新
docs/08-agent-api-contract.md与对应 Wiki 页面。关闭:功能已存在
建单前未核查既有实现,这是我的疏漏。
虾皮商品详情页已经有「一键匹配颜色和尺码」按钮(
ShopeeProductDetailDrawer.vue:26),调用POST /api/admin/v1/shopee-products/:productId/specs/mapping/auto-match。其autoMatchRefs遍历的是档案里所有规格值,不受 SYB 明细限制:本地实测(虾皮 1528):
同步补入的值确实被覆盖到了,
3XL也补上了。所以本单描述的缺口并不成立——采购员已有补救手段,无需新增入口。黑色仍未匹上是 AI 抽风,属于 #295 的范围。该按钮走的是shopeeproduct.suggestMappings这条独立路径,#295 本次未接入重试,已在 #295 记为遗留。状态
关闭,不实施。