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

fix(db): 迁移323-325移至runSystemMigrations,修复因早返回导致永不执行的happened_at/article_id问题

Xiaogang Liao 9 часов назад
Родитель
Сommit
10d1ca63c2

+ 30 - 25
cfc-backend/src/main/java/com/etotem/cfc/config/DatabaseInitializer.java

@@ -11104,6 +11104,35 @@ log.info("迁移298: 已为无 openid 的 child 账号补齐 family_members 记
         ensureColumn("shop_categories", "min_visible_level",
                 "VARCHAR(50) DEFAULT NULL COMMENT '最低可见会员级别编码(FREE/FAMILY/PROVIDER/PREMIUM/LIFETIME, NULL=全部可见)'");
         log.info("迁移321: 已完成商品/分类按会员级别可见性改造");
+
+        // 迁移323-325: 原误置于 seedGutFloraFingerprints 早返回(return)之后,指纹数据存在时永不执行;
+        // 现移至 runSystemMigrations 无条件执行(octopus_effect_record.happened_at / article_reading_records 回填与补列)
+        // 迁移323: octopus_effect_record 添加 happened_at 列(成效发生时间)
+        try {
+            jdbcTemplate.execute("ALTER TABLE octopus_effect_record ADD COLUMN happened_at DATETIME COMMENT '成效发生时间'");
+            log.info("迁移323: octopus_effect_record.happened_at 列已添加");
+        } catch (Exception e) {
+            // 列已存在,忽略
+            log.warn("迁移323: octopus_effect_record.happened_at 列已存在或添加失败: {}", e.getMessage());
+        }
+
+        // 迁移324: 回填 article_reading_records 表中 article_id 为 NULL 的老记录
+        // 通过 task 表关联恢复:record.task_id → task.source_type='article' → task.source_id
+        try {
+            int updated = jdbcTemplate.update(
+                    "UPDATE article_reading_records r " +
+                    "LEFT JOIN tasks t ON r.task_id = t.id AND t.source_type = 'article' " +
+                    "SET r.article_id = t.source_id " +
+                    "WHERE r.article_id IS NULL AND t.id IS NOT NULL AND t.source_id IS NOT NULL"
+            );
+            log.info("迁移324: 已回填 article_reading_records.article_id {} 条记录", updated);
+        } catch (Exception e) {
+            log.warn("迁移324: 回填 article_reading_records.article_id 失败: {}", e.getMessage());
+        }
+
+        // 迁移325: article_reading_records 添加 reading_completed 列(阅读达标后标记,用于推荐过滤)
+        ensureColumn("article_reading_records", "reading_completed", "TINYINT DEFAULT 0 COMMENT '是否已阅读达标(达到最低时长阈值)'");
+
     }
 
     /**
@@ -11180,30 +11209,6 @@ log.info("迁移298: 已为无 openid 的 child 账号补齐 family_members 记
             log.warn("迁移312: 写入 gut_flora 指纹规则失败: {}", e.getMessage());
         }
 
-        // 迁移313: octopus_effect_record 添加 happened_at 列(成效发生时间)
-        try {
-            jdbcTemplate.execute("ALTER TABLE octopus_effect_record ADD COLUMN happened_at DATETIME COMMENT '成效发生时间'");
-            log.info("迁移313: octopus_effect_record.happened_at 列已添加");
-        } catch (Exception e) {
-            // 列已存在,忽略
-            log.warn("迁移313: octopus_effect_record.happened_at 列已存在或添加失败: {}", e.getMessage());
-        }
-
-        // 迁移314: 回填 article_reading_records 表中 article_id 为 NULL 的老记录
-        // 通过 task 表关联恢复:record.task_id → task.source_type='article' → task.source_id
-        try {
-            int updated = jdbcTemplate.update(
-                    "UPDATE article_reading_records r " +
-                    "LEFT JOIN tasks t ON r.task_id = t.id AND t.source_type = 'article' " +
-                    "SET r.article_id = t.source_id " +
-                    "WHERE r.article_id IS NULL AND t.id IS NOT NULL AND t.source_id IS NOT NULL"
-            );
-            log.info("迁移314: 已回填 article_reading_records.article_id {} 条记录", updated);
-        } catch (Exception e) {
-            log.warn("迁移314: 回填 article_reading_records.article_id 失败: {}", e.getMessage());
-        }
-
-        // 迁移315: article_reading_records 添加 reading_completed 列(阅读达标后标记,用于推荐过滤)
-        ensureColumn("article_reading_records", "reading_completed", "TINYINT DEFAULT 0 COMMENT '是否已阅读达标(达到最低时长阈值)'");
+        // 迁移323-325(octopus happened_at / article 回填与补列)已移至 runSystemMigrations() 无条件执行
     }
 }