Explorar o código

fix(recommend): 迁移354补齐product_recommendation_log缺失列并同步schema.sql

生产旧版建表缺 family_id/was_clicked/was_purchased/clicked_at/purchased_at/updated_at,ab-summary/by-type 查询报 Unknown column 500

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Sisyphus hai 4 días
pai
achega
a08a779557

+ 21 - 0
cfc-backend/src/main/java/com/etotem/cfc/config/DatabaseInitializer.java

@@ -10943,6 +10943,7 @@ log.info("迁移298: 已为无 openid 的 child 账号补齐 family_members 记
         createRecommendationProductAssociationsTable();
         addAbTestColumnsToRecommendationLog();
         createTaskReminderConfigTable();
+        addMissingColumnsToRecommendationLog();
 
         // 迁移341: BASIC 体验会员 features JSON 补 referral_commission(迁移315 未包含,前端对比表已显示可参与)
         try {
@@ -11849,4 +11850,24 @@ log.info("迁移298: 已为无 openid 的 child 账号补齐 family_members 记
             log.warn("迁移353: 创建 task_reminder_config 表失败: {}", e.getMessage());
         }
     }
+
+    // 迁移354: product_recommendation_log 补齐缺失列
+    // 旧库该表由更早版本的建表语句创建(CREATE TABLE IF NOT EXISTS 不会补列),
+    // 缺 family_id/was_clicked/was_purchased/clicked_at/purchased_at/updated_at,
+    // 导致 stats/ab-summary、stats/by-type 查询报 Unknown column 返回 500
+    private void addMissingColumnsToRecommendationLog() {
+        ensureColumn("product_recommendation_log", "family_id",
+                "BIGINT DEFAULT NULL COMMENT '家庭ID(family_members.family_id)'");
+        ensureColumn("product_recommendation_log", "was_clicked",
+                "TINYINT DEFAULT 0 COMMENT '是否点击 1=是 0=否'");
+        ensureColumn("product_recommendation_log", "was_purchased",
+                "TINYINT DEFAULT 0 COMMENT '是否购买 1=是 0=否'");
+        ensureColumn("product_recommendation_log", "clicked_at",
+                "DATETIME DEFAULT NULL COMMENT '点击时间'");
+        ensureColumn("product_recommendation_log", "purchased_at",
+                "DATETIME DEFAULT NULL COMMENT '购买时间'");
+        ensureColumn("product_recommendation_log", "updated_at",
+                "DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'");
+        log.info("迁移354: product_recommendation_log 已补齐缺失列");
+    }
 }

+ 1 - 0
cfc-backend/src/main/resources/schema.sql

@@ -6024,6 +6024,7 @@ CREATE TABLE IF NOT EXISTS product_recommendation_log (
     clicked_at DATETIME DEFAULT NULL COMMENT '点击时间',
     purchased_at DATETIME DEFAULT NULL COMMENT '购买时间',
     created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+    updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
     ab_test_group VARCHAR(32) DEFAULT NULL COMMENT 'AB测试分组(A/B/C/控制组)',
     recommendation_type VARCHAR(32) DEFAULT NULL COMMENT '推荐来源类型:dimension/co_purchase/repurchase/profile_gap/manual',
     INDEX idx_user_scene (user_id, scene),