Admin:建立商品级颜色映射数据模型与失效审计规则 #293

Open
opened 2026-08-23 23:25:49 +08:00 by ila · 3 comments
Owner

基本信息

  • 类型:需求
  • 父级大工单:#14
  • 所属 MVP / 版本:#291 / 蝦皮与 PDD 商品级颜色映射
  • 阶段:Stage B1 数据模型与服务
  • 依赖:#292 原型通过及用户明确授权数据库实施

要解决什么

现有 spec_mappings 保存的是一条 SYB 完整规格到 PDD 完整可购买组合的映射,不能安全存放只有颜色维度的商品级映射。需要建立独立数据边界、颜色身份、PDD 维度识别、失效校验、上下文版本和修改审计。

做什么 / 不做什么

  • 做:新增商品级颜色当前映射表和只追加决策审计表,使用下一个未占用 MySQL schema 版本。
  • 做:建立蝦皮侧颜色集合、最小身份规范化、PDD 颜色维度和值提取、上下文版本、当前映射查询、批量保存与清除服务。
  • 做:目标颜色是否仍存在于最新可购买组合中作为派生有效性,不持久化易过期状态。
  • 不做:不改写历史迁移,不修改 spec_mappings 唯一键或语义,不覆盖两端原始规格。
  • 不做:不实现页面,不接入 SYB 自动派生,不修改 Client 接口。

怎么做

  • 当前表建议字段:shopee_goods_id、shopee_color_key、shopee_color_raw、pdd_goods_id、pdd_dimension_key、pdd_color_value、context_version、mapped_by、mapped_at;主键为 (shopee_goods_id, shopee_color_key, pdd_goods_id)。
  • 审计表只追加,记录 upsert / clear、旧值、新值、操作者、时间、上下文版本;不保存商品完整 JSON、订单、凭据或个人数据。
  • 蝦皮颜色集合由正式 shopee_skus.color 与能够由现有确定性解析器可靠得到的 SYB 历史颜色组成,按来源聚合展示;解析失败不猜。
  • shopee_color_key 只做首尾空白和连续空白折叠等身份级规范化,不做颜色同义词、近似值或繁简猜测,原文始终保留。
  • PDD 颜色维度使用 dimensions 的实际 key/name 及明确别名规则识别;没有唯一颜色维度时返回明确不可维护状态,不自行选择。保存实际 pdd_dimension_key。
  • 颜色候选只从 available=true 的完整 SKU 组合聚合;同一颜色价格不一致时只返回区间,不能伪装成单价。
  • 上下文版本覆盖当前 PDD 关联、PDD 规格快照、蝦皮侧颜色集合和规则版本。批量保存逐行校验,在一个事务写当前映射与审计;陈旧提交整批拒绝。
  • 更换 PDD 商品后旧映射保留但查询必须带当前 pdd_goods_id;重新采集后目标值不存在时派生为已失效。

验收标准

  • MySQL 首建、从当前生产版本升级和重复启动均得到同一正确结构,历史迁移未被改写。
  • 商品级颜色映射与现有完整 spec_mappings 语义和数据完全隔离。
  • 多个蝦皮颜色可映射到同一个 PDD 颜色。
  • 更换 PDD 商品不会命中旧映射,换回时旧映射仍可恢复使用。
  • PDD 重采后目标颜色不存在或全部不可购买时显示失效,原映射和审计保留。
  • 没有唯一 PDD 颜色维度、蝦皮颜色解析失败或上下文过期时不保存、不猜测。
  • 保存、修改和清除均在同一事务留下只追加审计。
  • 金额只用整数分或价格区间,不使用 float。

怎么验证

从 admin/ 执行固定 Go 1.23.0 的 repository/service 定向测试、go test ./... -count=1、go build ./...、go vet ./...。使用独立 MySQL 8.4 _test 数据库验证首次建库、当前版本升级、迁移重放、上下文并发和事务回滚。

风险和回退

  • 风险:错误合并蝦皮颜色或错误识别 PDD 颜色维度会影响真实采购;身份规范化必须保守,维度不唯一就阻断。
  • 风险:MySQL DDL 隐式提交;每条 DDL 必须可重放,结构自检通过后才记录版本。
  • 回退:关闭后续页面和派生服务即可恢复现有完整规格流程;新表及审计保留。若尚未产生生产数据,可按单独迁移回退方案处理,不能修改已发布迁移文件。
## 基本信息 - 类型:需求 - 父级大工单:#14 - 所属 MVP / 版本:#291 / 蝦皮与 PDD 商品级颜色映射 - 阶段:Stage B1 数据模型与服务 - 依赖:#292 原型通过及用户明确授权数据库实施 ## 要解决什么 现有 `spec_mappings` 保存的是一条 SYB 完整规格到 PDD 完整可购买组合的映射,不能安全存放只有颜色维度的商品级映射。需要建立独立数据边界、颜色身份、PDD 维度识别、失效校验、上下文版本和修改审计。 ## 做什么 / 不做什么 - 做:新增商品级颜色当前映射表和只追加决策审计表,使用下一个未占用 MySQL schema 版本。 - 做:建立蝦皮侧颜色集合、最小身份规范化、PDD 颜色维度和值提取、上下文版本、当前映射查询、批量保存与清除服务。 - 做:目标颜色是否仍存在于最新可购买组合中作为派生有效性,不持久化易过期状态。 - 不做:不改写历史迁移,不修改 `spec_mappings` 唯一键或语义,不覆盖两端原始规格。 - 不做:不实现页面,不接入 SYB 自动派生,不修改 Client 接口。 ## 怎么做 - 当前表建议字段:`shopee_goods_id`、`shopee_color_key`、`shopee_color_raw`、`pdd_goods_id`、`pdd_dimension_key`、`pdd_color_value`、`context_version`、`mapped_by`、`mapped_at`;主键为 `(shopee_goods_id, shopee_color_key, pdd_goods_id)`。 - 审计表只追加,记录 upsert / clear、旧值、新值、操作者、时间、上下文版本;不保存商品完整 JSON、订单、凭据或个人数据。 - 蝦皮颜色集合由正式 `shopee_skus.color` 与能够由现有确定性解析器可靠得到的 SYB 历史颜色组成,按来源聚合展示;解析失败不猜。 - `shopee_color_key` 只做首尾空白和连续空白折叠等身份级规范化,不做颜色同义词、近似值或繁简猜测,原文始终保留。 - PDD 颜色维度使用 `dimensions` 的实际 key/name 及明确别名规则识别;没有唯一颜色维度时返回明确不可维护状态,不自行选择。保存实际 `pdd_dimension_key`。 - 颜色候选只从 `available=true` 的完整 SKU 组合聚合;同一颜色价格不一致时只返回区间,不能伪装成单价。 - 上下文版本覆盖当前 PDD 关联、PDD 规格快照、蝦皮侧颜色集合和规则版本。批量保存逐行校验,在一个事务写当前映射与审计;陈旧提交整批拒绝。 - 更换 PDD 商品后旧映射保留但查询必须带当前 `pdd_goods_id`;重新采集后目标值不存在时派生为已失效。 ## 验收标准 - [ ] MySQL 首建、从当前生产版本升级和重复启动均得到同一正确结构,历史迁移未被改写。 - [ ] 商品级颜色映射与现有完整 `spec_mappings` 语义和数据完全隔离。 - [ ] 多个蝦皮颜色可映射到同一个 PDD 颜色。 - [ ] 更换 PDD 商品不会命中旧映射,换回时旧映射仍可恢复使用。 - [ ] PDD 重采后目标颜色不存在或全部不可购买时显示失效,原映射和审计保留。 - [ ] 没有唯一 PDD 颜色维度、蝦皮颜色解析失败或上下文过期时不保存、不猜测。 - [ ] 保存、修改和清除均在同一事务留下只追加审计。 - [ ] 金额只用整数分或价格区间,不使用 float。 ## 怎么验证 从 `admin/` 执行固定 Go 1.23.0 的 repository/service 定向测试、`go test ./... -count=1`、`go build ./...`、`go vet ./...`。使用独立 MySQL 8.4 `_test` 数据库验证首次建库、当前版本升级、迁移重放、上下文并发和事务回滚。 ## 风险和回退 - 风险:错误合并蝦皮颜色或错误识别 PDD 颜色维度会影响真实采购;身份规范化必须保守,维度不唯一就阻断。 - 风险:MySQL DDL 隐式提交;每条 DDL 必须可重放,结构自检通过后才记录版本。 - 回退:关闭后续页面和派生服务即可恢复现有完整规格流程;新表及审计保留。若尚未产生生产数据,可按单独迁移回退方案处理,不能修改已发布迁移文件。
Author
Owner

???????????????????????????????????????;?????????????????,??????? #294?#295 ???

???????????????????????????????????????;?????????????????,??????? #294?#295 ???
Author
Owner

????,???????

  • ????:f06ded8
  • ????:3cee6cb
  • ??:docs/task/293-??????????????????.md
  • ??:go test ./service ./repository -count=1?go vet ./...?git diff --check ??
  • ???:?? MySQL 8.4 _test ??/v29?v30/????;????????

??????? #294?

????,??????? - ????:f06ded8 - ????:3cee6cb - ??:docs/task/293-??????????????????.md - ??:go test ./service ./repository -count=1?go vet ./...?git diff --check ?? - ???:?? MySQL 8.4 _test ??/v29?v30/????;???????? ??????? #294?
Author
Owner

??????:??? MySQL 8.4 ????????????????????????????????????:674a12c?2a698d3?d0e981a?8b761d7;??????? 6c7dade??????????????,?? v30 ????

??????:??? MySQL 8.4 ????????????????????????????????????:674a12c?2a698d3?d0e981a?8b761d7;??????? 6c7dade??????????????,?? v30 ????
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: chengma/cmautobuy#293