Files
cmautobuy/docs/task/293-商品级颜色映射数据模型与失效审计规则.md
T

58 lines
2.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 293 商品级颜色映射数据模型与失效审计规则
- 类型:需求
- 父级大工单:#291
- 所属 MVP / 版本:蝦皮与 PDD 商品颜色匹配 MVP
- 状态:已完成
- 日期:2026-08-23
- Gitea 工单:<http://ilaer.eicp.net:8418/chengma/cmautobuy/issues/293>
## 背景与目标
在正式颜色匹配页面和顺运宝采购复用之前,先建立商品级颜色映射的稳定身份、当前态、
追加式审计、候选聚合和上下文失效规则,避免 PDD 换品或重采集后静默套用旧结果。
## 最终方案
- MySQL schema v30 新增 `product_color_mappings` 当前态和
`product_color_mapping_audits` 追加式审计表;PDD 商品 ID 属于映射主键。
- 蝦皮颜色只聚合正式 SKU 的结构化颜色和可确定解析的顺运宝历史观测;身份键仅折叠空白。
- PDD 颜色维度必须由显式别名唯一识别,候选只来自 `available=true` 的完整规格组合,
价格区间使用整数分。
- 上下文版本覆盖 PDD 关联、采集快照、蝦皮颜色集合、当前映射快照和规则版本。保存时在事务内重算,
任一过期输入使整批拒绝。
- 清除只删除当前态,旧值保留在审计;目标从最新候选消失时映射保留但判为失效。
## 改了哪些
- `admin/model/model.go`:增加颜色映射及审计领域结构。
- `admin/repository/mysql_db.go`:增加 v30 迁移和 schema 自检。
- `admin/repository/color_mapping.go`:封装当前映射和审计读写。
- `admin/service/color_mapping.go`:实现颜色来源、候选聚合、上下文版本和事务保存。
- `admin/service/color_mapping_test.go`、`admin/repository/mysql_db_integration_test.go`:覆盖规则和迁移。
- `docs/admin/03-data-model.md`:记录稳定数据模型和边界。
## 验收结果
| 验收标准 | 结果 |
|---|---|
| 当前映射按蝦皮商品、颜色键和 PDD 商品隔离 | 通过 |
| 保存与清除都追加旧值、新值和操作账号审计 | 通过 |
| 候选仅来自当前可购买 PDD 规格并使用整数价格 | 通过 |
| PDD 或蝦皮上下文变化时拒绝过期批量保存 | 通过 |
| 目标消失时保留映射并动态判为失效 | 通过 |
## 测试
- 执行的命令:`go test ./service ./repository -count=1`;`go vet ./...`;`git diff --check`
- 结果:通过。
- **没验证到的部分**:未连接独立 MySQL 8.4 `_test` 数据库执行首次迁移、v29 升 v30
和重复迁移;已增加对应集成测试,需在具备测试库环境变量时运行。未在生产库执行迁移。
## 相关提交
- `f06ded8` feat: 建立商品颜色映射数据模型 (#293)
- `674a12c` fix: 修正颜色映射索引长度 (#293)
- `2a698d3` fix: 使用兼容字符集校验颜色映射字段 (#293)
- `d0e981a` fix: 拒绝并发覆盖颜色映射 (#293)