|
|
@@ -10867,5 +10867,51 @@ sqls.add("INSERT IGNORE INTO health_norm_reference (dimension, gender, age_min,
|
|
|
} catch (Exception e) {
|
|
|
log.warn("迁移310: health_meal_record 索引已存在或添加失败: {}", e.getMessage());
|
|
|
}
|
|
|
+
|
|
|
+ // 迁移310: health_reports / health_report_drafts 补 file_hash 列
|
|
|
+ // 实体与 schema.sql 已含该列,但建表迁移从未 ADD;upload-only 按 MD5 去重时 SELECT 报 Unknown column 'file_hash'
|
|
|
+ ensureColumn("health_reports", "file_hash",
|
|
|
+ "VARCHAR(64) DEFAULT NULL COMMENT '文件MD5哈希,用于重复上传检测'");
|
|
|
+ ensureColumn("health_report_drafts", "file_hash",
|
|
|
+ "VARCHAR(64) DEFAULT NULL COMMENT '文件MD5哈希,用于重复上传检测'");
|
|
|
+ log.info("迁移310: 已补齐 health_reports/health_report_drafts.file_hash");
|
|
|
+
|
|
|
+ // 迁移311: report_type_registry 补 script_status 列
|
|
|
+ // 实体/schema 已含;异步采集指纹识别 SELECT 全字段时报 Unknown column 'script_status'
|
|
|
+ ensureColumn("report_type_registry", "script_status",
|
|
|
+ "VARCHAR(20) DEFAULT NULL COMMENT '采集脚本生成状态: generating/ready/failed'");
|
|
|
+ log.info("迁移311: 已补齐 report_type_registry.script_status");
|
|
|
+
|
|
|
+ // 迁移312: 为 gut_flora 补默认指纹规则(空表会导致指纹引擎永远 unknown)
|
|
|
+ seedGutFloraFingerprints();
|
|
|
+ }
|
|
|
+
|
|
|
+ private void seedGutFloraFingerprints() {
|
|
|
+ try {
|
|
|
+ Integer count = jdbcTemplate.queryForObject(
|
|
|
+ "SELECT COUNT(*) FROM report_fingerprint WHERE type_id = ?", Integer.class, "gut_flora");
|
|
|
+ if (count != null && count > 0) {
|
|
|
+ log.info("迁移312: gut_flora 指纹规则已存在,跳过");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ String[][] rows = {
|
|
|
+ {"肠道菌群检测", "20", "0", "1"},
|
|
|
+ {"核心菌属", "15", "0", "2"},
|
|
|
+ {"高通量测序", "15", "0", "3"},
|
|
|
+ {"菌群健康", "10", "0", "4"},
|
|
|
+ {"益生菌", "8", "0", "5"},
|
|
|
+ {"Shannon", "8", "0", "6"},
|
|
|
+ {"肠道菌群", "10", "0", "7"},
|
|
|
+ };
|
|
|
+ for (String[] row : rows) {
|
|
|
+ jdbcTemplate.update(
|
|
|
+ "INSERT INTO report_fingerprint (type_id, pattern, weight, is_exclusion, sort_order, created_at) "
|
|
|
+ + "VALUES ('gut_flora', ?, ?, ?, ?, NOW())",
|
|
|
+ row[0], Integer.valueOf(row[1]), Integer.valueOf(row[2]), Integer.valueOf(row[3]));
|
|
|
+ }
|
|
|
+ log.info("迁移312: 已写入 gut_flora 默认指纹规则 {} 条", rows.length);
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.warn("迁移312: 写入 gut_flora 指纹规则失败: {}", e.getMessage());
|
|
|
+ }
|
|
|
}
|
|
|
}
|