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

fix(db): 迁移208 health_gut_flora.detection_rate 列扩容

- 修复 MysqlDataTruncation: Data too long for column 'detection_rate'
- VARCHAR(50)→VARCHAR(255),源数据(菌种检出率描述)可能超过50字符
- 生产 DB 已直连 ALTER(即时生效)
- schema.sql 新增 health_gut_flora 表 DDL
Xiaogang Liao 1 месяц назад
Родитель
Сommit
db64a06c42

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

@@ -8520,5 +8520,13 @@ private void runMigration100() {
 		} catch (Exception e) {
 			log.warn("创建health_plans表失败(可能已存在): " + e.getMessage());
 		}
+
+		// 迁移208: health_gut_flora.detection_rate 列扩容(VARCHAR(50)→VARCHAR(255),源数据超长导致 MysqlDataTruncation)
+		try {
+			jdbcTemplate.execute("ALTER TABLE health_gut_flora MODIFY COLUMN detection_rate VARCHAR(255) DEFAULT NULL COMMENT '检出率'");
+			log.info("health_gut_flora.detection_rate 已扩容为 VARCHAR(255)");
+		} catch (Exception e) {
+			log.warn("health_gut_flora.detection_rate 扩容失败(可能已修改): " + e.getMessage());
+		}
 	}
 }

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

@@ -4434,3 +4434,30 @@ CREATE TABLE IF NOT EXISTS health_plans (
     INDEX idx_family (family_id),
     INDEX idx_created (created_at)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='健康方案汇总记录';
+
+-- 定期调研模板
+CREATE TABLE IF NOT EXISTS survey_templates (
+    id            BIGINT AUTO_INCREMENT PRIMARY KEY,
+    title         VARCHAR(100) NOT NULL COMMENT '调研标题',
+    dimension     VARCHAR(20) COMMENT '适用维度(身/智/富/行/心)',
+    questions_json TEXT COMMENT '题目JSON(含选项)',
+    cycle_type    VARCHAR(20) DEFAULT 'weekly' COMMENT '周期: weekly/biweekly/monthly',
+    ai_generated  TINYINT(1) DEFAULT 0 COMMENT '是否AI生成',
+    enabled       TINYINT(1) DEFAULT 1 COMMENT '是否启用',
+    created_at    DATETIME DEFAULT CURRENT_TIMESTAMP,
+    updated_at    DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='定期调研模板';
+
+-- 定期调研记录
+CREATE TABLE IF NOT EXISTS survey_records (
+    id            BIGINT AUTO_INCREMENT PRIMARY KEY,
+    family_id     BIGINT NOT NULL COMMENT '家庭ID',
+    member_id     BIGINT NOT NULL COMMENT '成员ID',
+    template_id   BIGINT NOT NULL COMMENT '调研模板ID',
+    answers_json  TEXT COMMENT '答案JSON',
+    submitted_at  DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '提交时间',
+    period_start  DATE COMMENT '周期开始',
+    period_end    DATE COMMENT '周期结束',
+    INDEX idx_member (member_id),
+    INDEX idx_template (template_id)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='定期调研记录';