Parcourir la source

fix(cfc-backend): add dan_assessment_results missing columns - familyMember/EMI/Big Five/snapshot fields

- schema.sql: add 41 missing columns to dan_assessment_results DDL
- DatabaseInitializer migration 34: ensureColumn for all missing columns
  - family_member_* (5): id, name, birthday, gender, age
  - EMI psych (4): emotion, resilience, stress_coping, self_awareness
  - Big Five (6): openness, conscientiousness, extraversion, agreeableness, neuroticism, big_five_overall
  - child snapshot (20): name, birthday, gender, age, school, grade, grade_class, height, weight,
    family_status, parent_degree, nation, province, city, district, address, single_child,
    school_score, urgent_name, urgent_phone
  - media (4): pics, videos, audio, audio_url
  - extension (2): process_desc, result_desc
Xiaogang Liao il y a 2 mois
Parent
commit
35ba0808e0

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

@@ -4062,6 +4062,49 @@ try {
         } catch (Exception e) {
             log.warn("初始化成长任务种子数据失败: {}", e.getMessage());
         }
+
+        // 迁移34: dan_assessment_results表添加家庭成员/EMI心理/大五人格/孩子快照字段
+        ensureColumn("dan_assessment_results", "family_member_id", "BIGINT COMMENT '家庭成员ID'");
+        ensureColumn("dan_assessment_results", "family_member_name", "VARCHAR(50) COMMENT '成员姓名快照'");
+        ensureColumn("dan_assessment_results", "family_member_birthday", "DATE COMMENT '成员出生日期快照'");
+        ensureColumn("dan_assessment_results", "family_member_gender", "VARCHAR(10) COMMENT '成员性别快照'");
+        ensureColumn("dan_assessment_results", "family_member_age", "INT COMMENT '成员年龄快照'");
+        ensureColumn("dan_assessment_results", "emotion_score", "INT COMMENT '情绪商数(EMI)'");
+        ensureColumn("dan_assessment_results", "resilience_score", "INT COMMENT '心理韧性(EMI)'");
+        ensureColumn("dan_assessment_results", "stress_coping_score", "INT COMMENT '压力应对(EMI)'");
+        ensureColumn("dan_assessment_results", "self_awareness_score", "INT COMMENT '自我认知(EMI)'");
+        ensureColumn("dan_assessment_results", "openness_score", "INT COMMENT '开放性(大五人格)'");
+        ensureColumn("dan_assessment_results", "conscientiousness_score", "INT COMMENT '尽责性(大五人格)'");
+        ensureColumn("dan_assessment_results", "extraversion_score", "INT COMMENT '外向性(大五人格)'");
+        ensureColumn("dan_assessment_results", "agreeableness_score", "INT COMMENT '宜人性(大五人格)'");
+        ensureColumn("dan_assessment_results", "neuroticism_score", "INT COMMENT '神经质(大五人格)'");
+        ensureColumn("dan_assessment_results", "big_five_overall_score", "INT COMMENT '大五人格综合分'");
+        ensureColumn("dan_assessment_results", "child_name", "VARCHAR(50) COMMENT '孩子姓名快照'");
+        ensureColumn("dan_assessment_results", "child_birthday", "DATE COMMENT '出生日期快照'");
+        ensureColumn("dan_assessment_results", "child_gender", "VARCHAR(10) COMMENT '性别快照'");
+        ensureColumn("dan_assessment_results", "child_age", "INT COMMENT '年龄快照'");
+        ensureColumn("dan_assessment_results", "school", "VARCHAR(100) COMMENT '学校快照'");
+        ensureColumn("dan_assessment_results", "grade", "VARCHAR(20) COMMENT '年级快照'");
+        ensureColumn("dan_assessment_results", "grade_class", "VARCHAR(20) COMMENT '班级快照'");
+        ensureColumn("dan_assessment_results", "height", "INT COMMENT '身高(CM)快照'");
+        ensureColumn("dan_assessment_results", "weight", "INT COMMENT '体重(KG)快照'");
+        ensureColumn("dan_assessment_results", "family_status", "VARCHAR(50) COMMENT '家庭状况快照'");
+        ensureColumn("dan_assessment_results", "parent_degree", "VARCHAR(50) COMMENT '父母最高学历快照'");
+        ensureColumn("dan_assessment_results", "nation", "VARCHAR(20) COMMENT '民族快照'");
+        ensureColumn("dan_assessment_results", "province", "VARCHAR(50) COMMENT '省快照'");
+        ensureColumn("dan_assessment_results", "city", "VARCHAR(50) COMMENT '市快照'");
+        ensureColumn("dan_assessment_results", "district", "VARCHAR(50) COMMENT '区快照'");
+        ensureColumn("dan_assessment_results", "address", "VARCHAR(200) COMMENT '详细地址快照'");
+        ensureColumn("dan_assessment_results", "single_child", "VARCHAR(10) COMMENT '是否独生子女快照'");
+        ensureColumn("dan_assessment_results", "school_score", "VARCHAR(20) COMMENT '在校成绩快照'");
+        ensureColumn("dan_assessment_results", "urgent_name", "VARCHAR(50) COMMENT '紧急联系人姓名'");
+        ensureColumn("dan_assessment_results", "urgent_phone", "VARCHAR(20) COMMENT '紧急联系人电话'");
+        ensureColumn("dan_assessment_results", "pics", "TEXT COMMENT '图片IDs'");
+        ensureColumn("dan_assessment_results", "videos", "TEXT COMMENT '视频IDs'");
+        ensureColumn("dan_assessment_results", "audio", "VARCHAR(100) COMMENT '音频ID'");
+        ensureColumn("dan_assessment_results", "audio_url", "VARCHAR(255) COMMENT '音频URL'");
+        ensureColumn("dan_assessment_results", "process_desc", "TEXT COMMENT '过程描述'");
+        ensureColumn("dan_assessment_results", "result_desc", "TEXT COMMENT '结果简评'");
     }
 
     private void insertSysConfigSeed(String key, String value, String desc) {

+ 45 - 1
cfc-backend/src/main/resources/schema.sql

@@ -343,6 +343,11 @@ CREATE TABLE IF NOT EXISTS assessment_appointments (
 CREATE TABLE IF NOT EXISTS dan_assessment_results (
     id BIGINT AUTO_INCREMENT PRIMARY KEY,
     child_id BIGINT NOT NULL,
+    family_member_id BIGINT COMMENT '家庭成员ID',
+    family_member_name VARCHAR(50) COMMENT '成员姓名快照',
+    family_member_birthday DATE COMMENT '成员出生日期快照',
+    family_member_gender VARCHAR(10) COMMENT '成员性别快照',
+    family_member_age INT COMMENT '成员年龄快照',
     teacher_id BIGINT NOT NULL,
     appointment_id BIGINT,
     attention_score INT COMMENT '注意力得分',
@@ -352,11 +357,21 @@ CREATE TABLE IF NOT EXISTS dan_assessment_results (
     perception_score INT COMMENT '感知得分',
     spatial_score INT COMMENT '空间思维得分',
     processing_speed_score INT COMMENT '加工速度得分',
+    emotion_score INT COMMENT '情绪商数(EMI)',
+    resilience_score INT COMMENT '心理韧性(EMI)',
+    stress_coping_score INT COMMENT '压力应对(EMI)',
+    self_awareness_score INT COMMENT '自我认知(EMI)',
     emotion_management_score INT COMMENT '情绪管理得分(EMI)',
     empathy_score INT COMMENT '同理心得分(EMI)',
     social_adaptability_score INT COMMENT '社会适应得分(EMI)',
     self_motivation_score INT COMMENT '自我激励得分(EMI)',
     overall_score INT COMMENT '综合得分',
+    openness_score INT COMMENT '开放性(大五人格)',
+    conscientiousness_score INT COMMENT '尽责性(大五人格)',
+    extraversion_score INT COMMENT '外向性(大五人格)',
+    agreeableness_score INT COMMENT '宜人性(大五人格)',
+    neuroticism_score INT COMMENT '神经质(大五人格)',
+    big_five_overall_score INT COMMENT '大五人格综合分',
     assessment_date DATE NOT NULL,
     duration_minutes INT COMMENT '测评时长',
     game_records JSON COMMENT '游戏记录详情',
@@ -366,10 +381,39 @@ CREATE TABLE IF NOT EXISTS dan_assessment_results (
     status ENUM('draft', 'completed', 'archived') DEFAULT 'draft',
     created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
     updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+    -- 孩子快照字段(测评时保存的完整信息)
+    child_name VARCHAR(50) COMMENT '孩子姓名快照',
+    child_birthday DATE COMMENT '出生日期快照',
+    child_gender VARCHAR(10) COMMENT '性别快照',
+    child_age INT COMMENT '年龄快照',
+    school VARCHAR(100) COMMENT '学校快照',
+    grade VARCHAR(20) COMMENT '年级快照',
+    grade_class VARCHAR(20) COMMENT '班级快照',
+    height INT COMMENT '身高(CM)快照',
+    weight INT COMMENT '体重(KG)快照',
+    family_status VARCHAR(50) COMMENT '家庭状况快照',
+    parent_degree VARCHAR(50) COMMENT '父母最高学历快照',
+    nation VARCHAR(20) COMMENT '民族快照',
+    province VARCHAR(50) COMMENT '省快照',
+    city VARCHAR(50) COMMENT '市快照',
+    district VARCHAR(50) COMMENT '区快照',
+    address VARCHAR(200) COMMENT '详细地址快照',
+    single_child VARCHAR(10) COMMENT '是否独生子女快照',
+    school_score VARCHAR(20) COMMENT '在校成绩快照',
+    urgent_name VARCHAR(50) COMMENT '紧急联系人姓名',
+    urgent_phone VARCHAR(20) COMMENT '紧急联系人电话',
+    -- 媒体字段
+    pics TEXT COMMENT '图片IDs',
+    videos TEXT COMMENT '视频IDs',
+    audio VARCHAR(100) COMMENT '音频ID',
+    audio_url VARCHAR(255) COMMENT '音频URL',
+    -- 扩展描述字段
+    process_desc TEXT COMMENT '过程描述',
+    result_desc TEXT COMMENT '结果简评',
     INDEX idx_child_id (child_id),
     INDEX idx_teacher_id (teacher_id),
     INDEX idx_assessment_date (assessment_date)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='DAN测评结果表';
 
 -- 成长规划表
 CREATE TABLE IF NOT EXISTS growth_plans (