|
|
@@ -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 已补齐缺失列");
|
|
|
+ }
|
|
|
}
|