|
|
@@ -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() 无条件执行
|
|
|
}
|
|
|
}
|