Admin:保存并展示顺运宝观测规格,不覆盖蝦皮主数据 #140

Closed
opened 2026-08-11 10:33:31 +08:00 by ila · 2 comments
Owner

基本信息

  • 类型:需求(Admin 数据模型 + 页面)
  • 父级大工单:#14
  • 所属 MVP / 版本:#15 / 商品目录数据接入后续
  • 阶段:顺运宝观测数据利用
  • 依赖:#132、#133、#134、#135
  • 状态:待验收

要解决什么

顺运宝同步已经解析出蝦皮商品 ID、规格原文、数量、台币单价和图片,并保存到 syb_orders;但同步只补建 source='syb' 的蝦皮商品骨架,已有骨架连最新非空标题也不会更新。采购员在蝦皮商品详情中看不到顺运宝历史上出现过的规格和售价。

顺运宝没有可靠的蝦皮 SKU ID,订单价格也是某张货运单当时的历史售价,不能把这些数据伪装成正式 shopee_skus 或商品当前售价,更不能覆盖商品目录接口和人工维护的主数据。

做什么 / 不做什么

  • 做:把顺运宝数据作为“观测数据”关联到蝦皮商品;在蝦皮详情展示按 goods_id + spec_key 汇总的规格原文、最近货运单售价、最近图片、出现订单数、累计数量和最后出现时间;仅对仍为 source='syb' 的商品骨架安全补充最新非空标题;唯一匹配正式 SKU 时展示其 SKU ID/颜色/尺码。
  • 不做:不伪造蝦皮 SKU ID;不把顺运宝规格直接插入或覆盖正式 shopee_skus;不把历史货运单售价写成商品当前售价;不覆盖 api/report 来源标题、人工颜色尺码、PDD 链接或规格映射;不改变 Client 四接口。

怎么做

  • 优先直接从 syb_orders 按 shopee_goods_id + spec_key 做数据库汇总读模型;数据量或执行计划证明有必要时再增加专用索引,不提前复制一张观测表。
  • 顺运宝同步补建商品时:新商品继续创建 source='syb' 骨架;已有记录只有 source='syb' 且新标题非空时才更新标题和时间,api/report 来源完全不动。
  • 规格身份只使用统一 spec.SpecKey(),不重新引入猜测颜色尺码的解析器。
  • 与正式 SKU 关联时按同一商品下规范化规格精确匹配;恰好一条才展示关联,多条或零条标记为“待目录补全/待人工确认”,不自动写回。
  • 页面明确把价格标成“最近货运单售价(台币)”,与 PDD 人民币采购价格隔离。
  • 预计修改 admin/repository/syb.go、新增/扩展蝦皮详情查询 service/view、admin/templates/shopee/detail_modal.html、测试和 Admin 数据模型/UI 文档。

验收标准

  • 新顺运宝商品能补建蝦皮骨架,并在后续同步中安全更新 syb 骨架的非空标题。
  • api/report 来源商品标题、PDD 关联和正式 SKU 字段不会被顺运宝覆盖。
  • 蝦皮详情按规格显示顺运宝最近台币售价、订单数、累计数量、图片和最后出现时间。
  • 唯一匹配正式 SKU 时展示其颜色尺码;零条或多条匹配不猜测、不写回。
  • 同一货运单重复同步不会重复累计订单数或数量。
  • 页面明确区分正式目录数据、顺运宝观测数据和 PDD 人民币价格。
  • Go 1.23 build/test/vet 通过,Client 四接口回归通过。

怎么验证

从 admin/ 执行固定 Go 1.23 全量 build/test/vet;repository/service 测试覆盖骨架更新来源保护、同单重放、规格汇总和唯一/多重匹配;页面路由测试检查标签与字段;在 MySQL 8.4 _test 库用 EXPLAIN 核对汇总查询。

风险和回退

顺运宝价格是历史订单售价,不是当前商品售价,页面文案和字段命名必须防止误用。回退时可移除详情汇总和骨架标题���新,不删除 syb_orders 历史数据。

## 基本信息 - 类型:需求(Admin 数据模型 + 页面) - 父级大工单:#14 - 所属 MVP / 版本:#15 / 商品目录数据接入后续 - 阶段:顺运宝观测数据利用 - 依赖:#132、#133、#134、#135 - 状态:待验收 ## 要解决什么 顺运宝同步已经解析出蝦皮商品 ID、规格原文、数量、台币单价和图片,并保存到 `syb_orders`;但同步只补建 `source='syb'` 的蝦皮商品骨架,已有骨架连最新非空标题也不会更新。采购员在蝦皮商品详情中看不到顺运宝历史上出现过的规格和售价。 顺运宝没有可靠的蝦皮 SKU ID,订单价格也是某张货运单当时的历史售价,不能把这些数据伪装成正式 `shopee_skus` 或商品当前售价,更不能覆盖商品目录接口和人工维护的主数据。 ## 做什么 / 不做什么 - 做:把顺运宝数据作为“观测数据”关联到蝦皮商品;在蝦皮详情展示按 `goods_id + spec_key` 汇总的规格原文、最近货运单售价、最近图片、出现订单数、累计数量和最后出现时间;仅对仍为 `source='syb'` 的商品骨架安全补充最新非空标题;唯一匹配正式 SKU 时展示其 SKU ID/颜色/尺码。 - 不做:不伪造蝦皮 SKU ID;不把顺运宝规格直接插入或覆盖正式 `shopee_skus`;不把历史货运单售价写成商品当前售价;不覆盖 `api/report` 来源标题、人工颜色尺码、PDD 链接或规格映射;不改变 Client 四接口。 ## 怎么做 - 优先直接从 `syb_orders` 按 `shopee_goods_id + spec_key` 做数据库汇总读模型;数据量或执行计划证明有必要时再增加专用索引,不提前复制一张观测表。 - 顺运宝同步补建商品时:新商品继续创建 `source='syb'` 骨架;已有记录只有 `source='syb'` 且新标题非空时才更新标题和时间,`api/report` 来源完全不动。 - 规格身份只使用统一 `spec.SpecKey()`,不重新引入猜测颜色尺码的解析器。 - 与正式 SKU 关联时按同一商品下规范化规格精确匹配;恰好一条才展示关联,多条或零条标记为“待目录补全/待人工确认”,不自动写回。 - 页面明确把价格标成“最近货运单售价(台币)”,与 PDD 人民币采购价格隔离。 - 预计修改 `admin/repository/syb.go`、新增/扩展蝦皮详情查询 service/view、`admin/templates/shopee/detail_modal.html`、测试和 Admin 数据模型/UI 文档。 ## 验收标准 - [x] 新顺运宝商品能补建蝦皮骨架,并在后续同步中安全更新 `syb` 骨架的非空标题。 - [x] `api/report` 来源商品标题、PDD 关联和正式 SKU 字段不会被顺运宝覆盖。 - [x] 蝦皮详情按规格显示顺运宝最近台币售价、订单数、累计数量、图片和最后出现时间。 - [x] 唯一匹配正式 SKU 时展示其颜色尺码;零条或多条匹配不猜测、不写回。 - [x] 同一货运单重复同步不会重复累计订单数或数量。 - [x] 页面明确区分正式目录数据、顺运宝观测数据和 PDD 人民币价格。 - [x] Go 1.23 build/test/vet 通过,Client 四接口回归通过。 ## 怎么验证 从 `admin/` 执行固定 Go 1.23 全量 build/test/vet;repository/service 测试覆盖骨架更新来源保护、同单重放、规格汇总和唯一/多重匹配;页面路由测试检查标签与字段;在 MySQL 8.4 `_test` 库用 `EXPLAIN` 核对汇总查询。 ## 风险和回退 顺运宝价格是历史订单售价,不是当前商品售价,页面文案和字段命名必须防止误用。回退时可移除详情汇总和骨架标题���新,不删除 `syb_orders` 历史数据。
Author
Owner

实施完成,等待验收

  • 实现提交:c05c4fa
  • 归档提交:37b8bd4
  • 归档:docs/task/140-顺运宝观测规格.md
  • 验证:Go 1.23 go build ./...、go test ./... -count=1、go vet ./... 全部通过。
  • 未验证:未在生产数据规模的 MySQL 8.4 测试库执行 EXPLAIN。
## 实施完成,等待验收 - 实现提交:`c05c4fa` - 归档提交:`37b8bd4` - 归档:`docs/task/140-顺运宝观测规格.md` - 验证:Go 1.23 `go build ./...`、`go test ./... -count=1`、`go vet ./...` 全部通过。 - 未验证:未在生产数据规模的 MySQL 8.4 测试库执行 `EXPLAIN`。
Author
Owner

用户于 2026-08-12 明确验收通过。已确认本地归档 docs/task/140-顺运宝观测规格.md 存在,现关闭工单。

用户于 2026-08-12 明确验收通过。已确认本地归档 `docs/task/140-顺运宝观测规格.md` 存在,现关闭工单。
ila closed this issue 2026-08-12 10:31:48 +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#140