Admin:生成指定蝦皮店铺与关联 PDD 的规格对比报告 #193

Closed
opened 2026-08-12 18:12:15 +08:00 by ila · 1 comment
Owner

基本信息

  • 类型:需求
  • 父级大工单:#14
  • 所属 MVP / 版本:#15 Admin 四模块可用闭环
  • 阶段:蝦皮与 PDD 规格数据治理

要解决什么

业务确认蝦皮店铺 qwg8fkb044 的商品规格与其当前关联的 PDD 商品规格一致,希望使用蝦皮正式颜色、尺码补全对应 PDD 商品缺失的规格。直接覆盖 pdd_products.skus_json 存在风险:蝦皮没有 PDD 人民币价格、可购状态、价格原文和采集时间;同一 PDD 也可能被多个蝦皮商品关联且规格不一致。

本工单只完成第一阶段只读对比报告,为正式补全提供可审核依据,不写任何业务数据。

做什么 / 不做什么

  • 做:按蝦皮店铺精确筛选商品;通过 shopee_products.pdd_goods_id 唯一关联 PDD;只读取 parse_ok=true 的正式颜色尺码;规范化比较蝦皮规格组合与 PDD skus_json;输出分类统计和不含标题/规格原文的结构化报告。
  • 不做:不更新 pdd_products、shopee_products、规格映射或任务;不按标题模糊关联;不伪造 PDD 价格或可购状态;不删除 PDD 独有规格;不执行正式补全。

怎么做

  1. 新增 Admin 命令 cmd/compare-shop-specs,复用现有配置和 MySQL 连接方式,要求显式传入 --shop qwg8fkb044。
  2. Repository 只读查询店铺商品、正式蝦皮 SKU、当前关联 PDD 及 skus_json;按商品聚合,避免 N+1 查询。
  3. 使用现有稳定规范化语义构造颜色/尺码组合键;PDD 只读取 options.color / options.size,未知结构分类为不可比较,不猜测。
  4. 按商品分类:未关联 PDD、PDD 不存在/已删除、蝦皮无正式规格、PDD 未采集或 JSON 无效、完全一致、PDD 缺少规格、PDD 多出规格、双方均有差异。
  5. 同一 PDD 被该店多个蝦皮商品关联时,只有蝦皮规格集合完全相同才允许进入可补全候选;否则列为关联歧义。
  6. 输出 JSON 报告,包含商品 ID、PDD ID、规格数量、缺失/多出数量和分类,不输出商品标题、规格原文、价格、凭据或个人数据。
  7. 默认只读且命令不提供 --apply,防止未经报告确认就修改生产数据。

预计修改:

  • admin/cmd/compare-shop-specs/
  • admin/repository/ 下只读查询
  • 对应测试
  • docs/admin/ 增加简短运行说明(如需要)

验收标准

  • 命令必须显式指定店铺,默认不修改任何表。
  • 只按 pdd_goods_id 关联,不按标题或顺序猜测。
  • 只使用 parse_ok=true 的正式蝦皮颜色尺码。
  • 正确区分完全一致、可补全、PDD 多出、双向差异和不可比较。
  • 同一 PDD 的多个蝦皮规格集合不一致时标记歧义。
  • JSON 报告不包含标题、规格原文、价格和凭据。
  • 对 qwg8fkb044 运行并得到可复核统计。
  • 固定 Go 1.23.0 build/test/vet 和差异检查通过。

怎么验证

从 admin/ 执行:

$env:GOTOOLCHAIN="go1.23.0"
go test ./... -count=1
go build ./...
go vet ./...
go run ./cmd/compare-shop-specs --shop qwg8fkb044
Remove-Item Env:GOTOOLCHAIN

最后一条只读连接当前 Admin 配置的数据库并输出 JSON,不执行 UPDATE/INSERT/DELETE。

风险和回退

本工单不写数据库,主要风险是报告误分类。通过精确关联、集合比较、未知结构拒绝猜测和测试固件降低风险。代码可独立回退;正式补全必须在用户审核报告后另建工单。

## 基本信息 - 类型:需求 - 父级大工单:#14 - 所属 MVP / 版本:#15 Admin 四模块可用闭环 - 阶段:蝦皮与 PDD 规格数据治理 ## 要解决什么 业务确认蝦皮店铺 `qwg8fkb044` 的商品规格与其当前关联的 PDD 商品规格一致,希望使用蝦皮正式颜色、尺码补全对应 PDD 商品缺失的规格。直接覆盖 `pdd_products.skus_json` 存在风险:蝦皮没有 PDD 人民币价格、可购状态、价格原文和采集时间;同一 PDD 也可能被多个蝦皮商品关联且规格不一致。 本工单只完成第一阶段只读对比报告,为正式补全提供可审核依据,不写任何业务数据。 ## 做什么 / 不做什么 - 做:按蝦皮店铺精确筛选商品;通过 `shopee_products.pdd_goods_id` 唯一关联 PDD;只读取 `parse_ok=true` 的正式颜色尺码;规范化比较蝦皮规格组合与 PDD `skus_json`;输出分类统计和不含标题/规格原文的结构化报告。 - 不做:不更新 `pdd_products`、`shopee_products`、规格映射或任务;不按标题模糊关联;不伪造 PDD 价格或可购状态;不删除 PDD 独有规格;不执行正式补全。 ## 怎么做 1. 新增 Admin 命令 `cmd/compare-shop-specs`,复用现有配置和 MySQL 连接方式,要求显式传入 `--shop qwg8fkb044`。 2. Repository 只读查询店铺商品、正式蝦皮 SKU、当前关联 PDD 及 `skus_json`;按商品聚合,避免 N+1 查询。 3. 使用现有稳定规范化语义构造颜色/尺码组合键;PDD 只读取 `options.color` / `options.size`,未知结构分类为不可比较,不猜测。 4. 按商品分类:未关联 PDD、PDD 不存在/已删除、蝦皮无正式规格、PDD 未采集或 JSON 无效、完全一致、PDD 缺少规格、PDD 多出规格、双方均有差异。 5. 同一 PDD 被该店多个蝦皮商品关联时,只有蝦皮规格集合完全相同才允许进入可补全候选;否则列为关联歧义。 6. 输出 JSON 报告,包含商品 ID、PDD ID、规格数量、缺失/多出数量和分类,不输出商品标题、规格原文、价格、凭据或个人数据。 7. 默认只读且命令不提供 `--apply`,防止未经报告确认就修改生产数据。 预计修改: - `admin/cmd/compare-shop-specs/` - `admin/repository/` 下只读查询 - 对应测试 - `docs/admin/` 增加简短运行说明(如需要) ## 验收标准 - [ ] 命令必须显式指定店铺,默认不修改任何表。 - [ ] 只按 `pdd_goods_id` 关联,不按标题或顺序猜测。 - [ ] 只使用 `parse_ok=true` 的正式蝦皮颜色尺码。 - [ ] 正确区分完全一致、可补全、PDD 多出、双向差异和不可比较。 - [ ] 同一 PDD 的多个蝦皮规格集合不一致时标记歧义。 - [ ] JSON 报告不包含标题、规格原文、价格和凭据。 - [ ] 对 qwg8fkb044 运行并得到可复核统计。 - [ ] 固定 Go 1.23.0 build/test/vet 和差异检查通过。 ## 怎么验证 从 `admin/` 执行: ```powershell $env:GOTOOLCHAIN="go1.23.0" go test ./... -count=1 go build ./... go vet ./... go run ./cmd/compare-shop-specs --shop qwg8fkb044 Remove-Item Env:GOTOOLCHAIN ``` 最后一条只读连接当前 Admin 配置的数据库并输出 JSON,不执行 UPDATE/INSERT/DELETE。 ## 风险和回退 本工单不写数据库,主要风险是报告误分类。通过精确关联、集合比较、未知结构拒绝猜测和测试固件降低风险。代码可独立回退;正式补全必须在用户审核报告后另建工单。
Author
Owner

实施完成,待验收

已完成只读规格对比工具,本工单未修改任何蝦皮或 PDD 业务数据。

实际 dry-run 汇总

  • 店铺:qwg8fkb044(精确匹配)
  • 商品总数:2075
  • 关联 PDD 暂无可比较规格:1917
  • 蝦皮正式规格不可用:155
  • 两边均有规格但组合不同:3
  • 完全一致、可直接判定无需补充:0
  • 共用 PDD 且蝦皮规格互相冲突:0

3 件差异商品合计:蝦皮正式组合 25 个,PDD 组合 23 个;蝦皮侧缺于 PDD 的组合 25 个,PDD 侧额外组合 23 个。两边不是简单的“只缺几项”,不能直接覆盖。

验证

  • GOTOOLCHAIN=go1.23.0 go vet ./...:通过
  • GOTOOLCHAIN=go1.23.0 go build ./...:通过
  • GOTOOLCHAIN=go1.23.0 go test ./... -count=1:通过
  • 实际数据库 dry-run:成功生成 2075 件商品的本机 JSON 报告

提交与归档

  • 实现提交:cf1d0ab
  • 归档提交:a4556b4
  • 归档:docs/task/193-店铺规格只读对比.md

结论:正式回填需要另建写数据工单,并先确认“1917 件无 PDD 规格数据时是否允许仅创建无价格/无库存的规格骨架”。在确认前不执行写库。

## 实施完成,待验收 已完成只读规格对比工具,本工单未修改任何蝦皮或 PDD 业务数据。 ### 实际 dry-run 汇总 - 店铺:`qwg8fkb044`(精确匹配) - 商品总数:2075 - 关联 PDD 暂无可比较规格:1917 - 蝦皮正式规格不可用:155 - 两边均有规格但组合不同:3 - 完全一致、可直接判定无需补充:0 - 共用 PDD 且蝦皮规格互相冲突:0 3 件差异商品合计:蝦皮正式组合 25 个,PDD 组合 23 个;蝦皮侧缺于 PDD 的组合 25 个,PDD 侧额外组合 23 个。两边不是简单的“只缺几项”,不能直接覆盖。 ### 验证 - `GOTOOLCHAIN=go1.23.0 go vet ./...`:通过 - `GOTOOLCHAIN=go1.23.0 go build ./...`:通过 - `GOTOOLCHAIN=go1.23.0 go test ./... -count=1`:通过 - 实际数据库 dry-run:成功生成 2075 件商品的本机 JSON 报告 ### 提交与归档 - 实现提交:`cf1d0ab` - 归档提交:`a4556b4` - 归档:`docs/task/193-店铺规格只读对比.md` 结论:正式回填需要另建写数据工单,并先确认“1917 件无 PDD 规格数据时是否允许仅创建无价格/无库存的规格骨架”。在确认前不执行写库。
ila closed this issue 2026-08-12 18:32:13 +08:00
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: chengma/cmautobuy#193