Просмотр исходного кода

docs: 迁移编号 433→434(远程主线家庭指标聚合表已用433)

Xiaogang Liao 1 неделя назад
Родитель
Сommit
b14402bcfe

+ 12 - 12
docs/superpowers/plans/2026-10-31-sku-combo.md

@@ -14,7 +14,7 @@
 
 - 所有代码改动在远程 `/app/cfc`(SSH `root@111.228.6.214`)执行;本地 `/root/cfc` 只是壳。
 - 分支 `cfclub`;每任务完成即提交(`git fetch origin && git pull --rebase origin cfclub` 后提交)。
-- 迁移编号固定 **433**,并同步 `cfc-backend/src/main/resources/schema.sql`。
+- 迁移编号固定 **434**,并同步 `cfc-backend/src/main/resources/schema.sql`。
 - 不改动 `product_bundle_items`(套餐)逻辑。
 - 不改动现有非组合、非 linked、非 bundle 订单的任何路径。
 - 组合订单:**不扣父商品库存**;取消/退款/后台关闭 3 处必须回补组成商品。
@@ -36,7 +36,7 @@
 
 ---
 
-### Task 1: 迁移 433 + schema.sql
+### Task 1: 迁移 434 + schema.sql
 
 **Files:**
 - Modify: `cfc-backend/src/main/java/com/etotem/cfc/config/DatabaseInitializer.java`(`runMigrations()` 末尾 + 新增 `migrateSkuCombo()`)
@@ -48,14 +48,14 @@
 - [ ] **Step 1: 在 `runMigrations()` 末尾(`migrateFamilyNameBackfill();` 之后)追加调用**
 
 ```java
-        // 迁移433: SKU商品组合明细表 + 订单记录下单SKU(组合SKU识别)
+        // 迁移434: SKU商品组合明细表 + 订单记录下单SKU(组合SKU识别)
         migrateSkuCombo();
 ```
 
 - [ ] **Step 2: 在 `createCouponGiftTransferTable()` 之后新增迁移方法(幂等;参照迁移 428 写法)**
 
 ```java
-    // ==================== 迁移433:SKU 商品组合 ====================
+    // ==================== 迁移434:SKU 商品组合 ====================
 
     void migrateSkuCombo() {
         try {
@@ -69,9 +69,9 @@
                     + "INDEX `idx_sku` (`sku_id`), "
                     + "INDEX `idx_child_product` (`child_product_id`) "
                     + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商品SKU组合明细'");
-            log.info("迁移433: 已创建 product_sku_combo_items 表");
+            log.info("迁移434: 已创建 product_sku_combo_items 表");
         } catch (Exception e) {
-            log.warn("迁移433: 创建 product_sku_combo_items 表失败(可能已存在): {}", e.getMessage());
+            log.warn("迁移434: 创建 product_sku_combo_items 表失败(可能已存在): {}", e.getMessage());
         }
         try {
             Integer colExists = jdbcTemplate.queryForObject(
@@ -79,12 +79,12 @@
                     Integer.class);
             if (colExists == null || colExists == 0) {
                 jdbcTemplate.execute("ALTER TABLE product_orders ADD COLUMN sku_id BIGINT NULL COMMENT '下单SKU ID(组合SKU识别用)' AFTER product_type");
-                log.info("迁移433: 已为 product_orders 增加 sku_id 列");
+                log.info("迁移434: 已为 product_orders 增加 sku_id 列");
             } else {
-                log.info("迁移433: product_orders.sku_id 列已存在,跳过");
+                log.info("迁移434: product_orders.sku_id 列已存在,跳过");
             }
         } catch (Exception e) {
-            log.warn("迁移433: 检查/添加 product_orders.sku_id 列失败: {}", e.getMessage());
+            log.warn("迁移434: 检查/添加 product_orders.sku_id 列失败: {}", e.getMessage());
         }
     }
 ```
@@ -120,7 +120,7 @@ Expected: BUILD SUCCESS(无输出错误)
 
 ```bash
 cd /app/cfc && git add cfc-backend/src/main/java/com/etotem/cfc/config/DatabaseInitializer.java cfc-backend/src/main/resources/schema.sql
-git commit -m "feat(backend): 迁移433 SKU商品组合明细表与订单sku_id"
+git commit -m "feat(backend): 迁移434 SKU商品组合明细表与订单sku_id"
 ```
 
 ---
@@ -1292,11 +1292,11 @@ systemctl status cfc-backend --no-pager | head -5
 ss -tlnp | grep 9082
 curl -s -o /dev/null -w "%{http_code}\n" -X POST http://localhost:9082/api/cart/list
 curl -s -o /dev/null -w "%{http_code}\n" -k https://cfc.etotem.com.cn/admin/
-grep "迁移433" /app/pro/cfc/backend/cfc-backend.log | tail -5
+grep "迁移434" /app/pro/cfc/backend/cfc-backend.log | tail -5
 curl -s -X POST http://localhost:9082/api/admin/product/linked/list -H 'Content-Type: application/json' -d '{"crossCategory":true,"page":1,"pageSize":3}'
 ```
 
-Expected: 服务 active;端口 9082 监听;两个 URL 200;日志含「迁移433」;选择器返回 `code=200` 且含 `skus`/`hasSkus`。
+Expected: 服务 active;端口 9082 监听;两个 URL 200;日志含「迁移434」;选择器返回 `code=200` 且含 `skus`/`hasSkus`。
 
 - [ ] **Step 5: 失败回滚**
 

+ 3 - 3
docs/superpowers/specs/2026-10-31-sku-combo-design.md

@@ -26,7 +26,7 @@
 - 组合组成商品**禁止**:选中商品自身、`productType=bundle` 的商品、以及其他组合 SKU 的商品(避免递归扣减)。
 - `comboItems` 语义:**非空数组**=整表替换;**空数组**=清除组合;**字段省略(null)**=保持不变(避免部分更新误清空)。
 - 切换模式时显式清理旧数据(切到组合→清 `linkedProductId`;切到关联/规格→删组合明细)。
-- 支付/退款识别组合订单:**给 `product_orders` 增加 `sku_id` 列**(迁移 433 一并做),下单时记录;比改造 `order_items` 写入路径更直接。
+- 支付/退款识别组合订单:**给 `product_orders` 增加 `sku_id` 列**(迁移 434 一并做),下单时记录;比改造 `order_items` 写入路径更直接。
 - 支付扣减只对**组合行**做逐项扣减,不改变现有非组合订单(含多行订单)的扣减行为,避免扩大回归面。
 
 ## 3. 目标
@@ -67,7 +67,7 @@ CREATE TABLE IF NOT EXISTS product_sku_combo_items (
 ALTER TABLE product_orders ADD COLUMN sku_id BIGINT NULL COMMENT '下单SKU ID(组合SKU识别用)';
 ```
 
-- 迁移编号 **433**,放在 `DatabaseInitializer.runMigrations()` 末尾(既有编号至 432)
+- 迁移编号 **434**,放在 `DatabaseInitializer.runMigrations()` 末尾(既有编号至 433)
 - 同步 `schema.sql`
 
 ### 5.3 `product_skus`
@@ -155,7 +155,7 @@ ALTER TABLE product_orders ADD COLUMN sku_id BIGINT NULL COMMENT '下单SKU ID
 
 ## 9. 实施顺序建议
 
-1. 迁移 433(新表 + product_orders.sku_id)+ schema.sql
+1. 迁移 434(新表 + product_orders.sku_id)+ schema.sql
 2. 实体/Mapper/DTO/Service/Controller(组合 CRUD)
 3. 消费点改造(Cart → Order 下单 → 支付扣减 → 退款回补 → 商品详情)
 4. 前端 ProductPicker 多选/SKU/跨分类