fix: 修复不完整的商品目录迁移 (#144)

This commit is contained in:
chengma
2026-08-11 11:26:40 +08:00
parent cc595c164e
commit fef97cf5f3
4 changed files with 120 additions and 3 deletions
+5
View File
@@ -444,6 +444,11 @@ MySQL schema v9 为 `shopee_products` 增加 `image_url` 和 `shopee_shop_name`
能补空或更新同来源的新观测,空值、跨来源、旧观测和人工字段均不覆盖。该图片是蝦皮
商品主图,与 `syb_orders.image_url` 的历史货运单观测图片是两个独立概念。
MySQL schema v10(工单 #144)是兼容修复:部分数据库曾在 v8 开发中间状态提前记录
v8/v9,实际缺少 `field_sources` 或 `field_observed_at`。v10 幂等重放 v8 的逐项建列、
空值回填和唯一索引逻辑,再核对 v8/v9 完整形状;只有全部通过才记录 v10。它不删除
或改写旧迁移记录,也不清空商品、SKU 或导入记录。
蝦皮详情把 `syb_orders` 按 `(shopee_goods_id, spec_key)` 聚合为“顺运宝观测规格”:
订单数按唯一 `syb_id` 行计数,累计数量求和,最近一行提供历史台币售价和图片。
该读模型不写入 `shopee_skus`。只有同一商品下恰好一条正式 SKU 的 `spec_raw`
+6 -2
View File
@@ -87,11 +87,15 @@ HTTP/HTTPS URL,最长 2048 字节;店铺名最长 500 个字符。Admin 只
调用方应按 `code` 处理,不要解析中文 `message`。校验错误通常是 400/422,业务冲突
是 409,临时服务错误是 500/503。响应和导入记录都不会回显 Token 或完整请求体。
## 5. schema v8 发布与回退
## 5. schema v8~v10 发布与回退
发布前先备份生产库,并在 MySQL 8.4、库名以 `_test` 结尾的测试库演练 v7→v8→v9。
发布前先备份生产库,并在 MySQL 8.4、库名以 `_test` 结尾的测试库演练 v7→v8→v9→v10。
迁移只增加列和唯一索引,既有 `sku_id` 继续作为内部主键,因此历史引用不变;若检测
到同商品重复 `spec_key`,迁移会停止且不记录 v8,必须人工确认,不能自动合并。
若数据库已经记录 v8 或 v9,但缺少 `field_sources`、`field_observed_at` 等后加入的
v8 结构,v10 会自动补齐并只回填空值。不要通过删除迁移版本、清库或手工伪造字段来
绕过自检;修复完成且 v8/v9 形状均正确后,程序才会记录 v10。
旧版 Admin 不理解无真实 SKU ID 的新记录。应用回退前应暂停目录接口并确认没有此类
记录;不要删除 v8 列或把内部主键复制成伪造的外部 SKU ID。