|
@@ -2198,7 +2198,254 @@ log.info("已添加template_id列到tasks表");
|
|
|
log.warn("nutrition_indicator_mapping 种子数据初始化失败: {}", e.getMessage());
|
|
log.warn("nutrition_indicator_mapping 种子数据初始化失败: {}", e.getMessage());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ // ==================== 心版块 Phase 1: emotion_checkin 表 ====================
|
|
|
|
|
+ try {
|
|
|
|
|
+ jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS emotion_checkin (" +
|
|
|
|
|
+ "id BIGINT AUTO_INCREMENT PRIMARY KEY, " +
|
|
|
|
|
+ "child_id BIGINT NOT NULL COMMENT '孩子ID', " +
|
|
|
|
|
+ "user_id BIGINT NOT NULL COMMENT '打卡人用户ID', " +
|
|
|
|
|
+ "emotion_type INT NOT NULL COMMENT '情绪类型: 1快乐/2平和平静/3平静/4有点不舒服/5难受/6烦躁/7生气/8焦虑/9恐惧', " +
|
|
|
|
|
+ "emotion_name VARCHAR(20) COMMENT '情绪名称: happy/calm/peaceful/uncomfortable/sad/irritable/angry/anxious/fearful', " +
|
|
|
|
|
+ "energy_level INT NOT NULL DEFAULT 3 COMMENT '能量状态: 1很低/2低/3中等/4高/5很高', " +
|
|
|
|
|
+ "note TEXT COMMENT '打卡备注', " +
|
|
|
|
|
+ "photo_url VARCHAR(500) COMMENT '照片URL', " +
|
|
|
|
|
+ "favorite_thing VARCHAR(500) COMMENT '今日最喜欢的一件事', " +
|
|
|
|
|
+ "points_awarded INT DEFAULT 0 COMMENT '奖励积分', " +
|
|
|
|
|
+ "parent_visible TINYINT DEFAULT 1 COMMENT '家长可见: 1可见/0不可见', " +
|
|
|
|
|
+ "checkin_date DATE NOT NULL COMMENT '打卡日期', " +
|
|
|
|
|
+ "created_at DATETIME DEFAULT CURRENT_TIMESTAMP, " +
|
|
|
|
|
+ "updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, " +
|
|
|
|
|
+ "INDEX idx_child_id (child_id), " +
|
|
|
|
|
+ "INDEX idx_user_id (user_id), " +
|
|
|
|
|
+ "INDEX idx_checkin_date (checkin_date), " +
|
|
|
|
|
+ "INDEX idx_child_date (child_id, checkin_date)" +
|
|
|
|
|
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='情绪打卡表'");
|
|
|
|
|
+ log.info("已创建 emotion_checkin 情绪打卡表");
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ log.warn("创建 emotion_checkin 表失败: {}", e.getMessage());
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // ==================== 1a-2: DAN Schema 修复 ====================
|
|
|
|
|
+ // v1.2 EMI 心理子维度
|
|
|
|
|
+ String[] danEmiFields = {"emotion_score", "resilience_score", "stress_coping_score", "self_awareness_score"};
|
|
|
|
|
+ for (String field : danEmiFields) {
|
|
|
|
|
+ try {
|
|
|
|
|
+ Integer exists = jdbcTemplate.queryForObject(
|
|
|
|
|
+ "SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'dan_assessment_results' AND COLUMN_NAME = ?",
|
|
|
|
|
+ Integer.class, field);
|
|
|
|
|
+ if (exists == null || exists == 0) {
|
|
|
|
|
+ jdbcTemplate.execute("ALTER TABLE dan_assessment_results ADD COLUMN " + field + " INT DEFAULT NULL COMMENT 'EMI子维度 0-100'");
|
|
|
|
|
+ log.info("已添加 {} 列到 dan_assessment_results 表", field);
|
|
|
|
|
+ }
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ log.warn("检查/添加 {} 列失败: {}", field, e.getMessage());
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ // 大五人格维度
|
|
|
|
|
+ String[] danBigFiveFields = {"openness_score", "conscientiousness_score", "extraversion_score", "agreeableness_score", "neuroticism_score", "big_five_overall_score"};
|
|
|
|
|
+ for (String field : danBigFiveFields) {
|
|
|
|
|
+ try {
|
|
|
|
|
+ Integer exists = jdbcTemplate.queryForObject(
|
|
|
|
|
+ "SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'dan_assessment_results' AND COLUMN_NAME = ?",
|
|
|
|
|
+ Integer.class, field);
|
|
|
|
|
+ if (exists == null || exists == 0) {
|
|
|
|
|
+ jdbcTemplate.execute("ALTER TABLE dan_assessment_results ADD COLUMN " + field + " INT DEFAULT NULL COMMENT '大五人格 0-100'");
|
|
|
|
|
+ log.info("已添加 {} 列到 dan_assessment_results 表", field);
|
|
|
|
|
+ }
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ log.warn("检查/添加 {} 列失败: {}", field, e.getMessage());
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ // EMI 维度(情绪商数评估字段)
|
|
|
|
|
+ String[] danEmiDimFields = {"emotion_management_score", "empathy_score", "social_adaptability_score", "self_motivation_score"};
|
|
|
|
|
+ for (String field : danEmiDimFields) {
|
|
|
|
|
+ try {
|
|
|
|
|
+ Integer exists = jdbcTemplate.queryForObject(
|
|
|
|
|
+ "SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'dan_assessment_results' AND COLUMN_NAME = ?",
|
|
|
|
|
+ Integer.class, field);
|
|
|
|
|
+ if (exists == null || exists == 0) {
|
|
|
|
|
+ jdbcTemplate.execute("ALTER TABLE dan_assessment_results ADD COLUMN " + field + " INT DEFAULT NULL COMMENT 'EMI维度 0-100'");
|
|
|
|
|
+ log.info("已添加 {} 列到 dan_assessment_results 表", field);
|
|
|
|
|
+ }
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ log.warn("检查/添加 {} 列失败: {}", field, e.getMessage());
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // ==================== 1b-1: bazi_reading_template 五行命理解读表 ====================
|
|
|
|
|
+ try {
|
|
|
|
|
+ jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS bazi_reading_template (" +
|
|
|
|
|
+ "id BIGINT AUTO_INCREMENT PRIMARY KEY, " +
|
|
|
|
|
+ "element VARCHAR(20) NOT NULL COMMENT '五行: wood/fire/earth/metal/water', " +
|
|
|
|
|
+ "condition VARCHAR(20) NOT NULL COMMENT '状态: strong/weak/balanced', " +
|
|
|
|
|
+ "personal_trait TEXT COMMENT '性格特质描述', " +
|
|
|
|
|
+ "mind_growth_advice TEXT COMMENT '心理成长建议', " +
|
|
|
|
|
+ "daily_tip_template TEXT COMMENT '每日宜忌模板', " +
|
|
|
|
|
+ "created_at DATETIME DEFAULT CURRENT_TIMESTAMP, " +
|
|
|
|
|
+ "UNIQUE KEY uk_element_condition (element, condition)" +
|
|
|
|
|
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='五行命理解读模板'");
|
|
|
|
|
+ log.info("已创建 bazi_reading_template 表");
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ log.warn("创建 bazi_reading_template 表失败: {}", e.getMessage());
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // ==================== 1b-1: numsoul_config 生命灵数配置表 ====================
|
|
|
|
|
+ try {
|
|
|
|
|
+ jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS numsoul_config (" +
|
|
|
|
|
+ "number INT PRIMARY KEY COMMENT '灵数1-9', " +
|
|
|
|
|
+ "title VARCHAR(50) NOT NULL COMMENT '称号', " +
|
|
|
|
|
+ "keywords VARCHAR(200) COMMENT '性格关键词', " +
|
|
|
|
|
+ "mind_growth_advice TEXT COMMENT '心理成长建议', " +
|
|
|
|
|
+ "recommended_article_tags VARCHAR(200) COMMENT '关联文章标签', " +
|
|
|
|
|
+ "color_hex VARCHAR(7) COMMENT '代表色' " +
|
|
|
|
|
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='生命灵数配置'");
|
|
|
|
|
+ log.info("已创建 numsoul_config 表");
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ log.warn("创建 numsoul_config 表失败: {}", e.getMessage());
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // ==================== 1b-1: bazi_reading_template 种子数据 ====================
|
|
|
|
|
+ try {
|
|
|
|
|
+ Integer count = jdbcTemplate.queryForObject(
|
|
|
|
|
+ "SELECT COUNT(*) FROM bazi_reading_template", Integer.class);
|
|
|
|
|
+ if (count == null || count == 0) {
|
|
|
|
|
+ jdbcTemplate.batchUpdate(
|
|
|
|
|
+ "INSERT INTO bazi_reading_template (element, condition, personal_trait, mind_growth_advice, daily_tip_template) VALUES (?, ?, ?, ?, ?)",
|
|
|
|
|
+ java.util.Arrays.asList(new Object[][]{
|
|
|
|
|
+ {"wood", "strong", "性格坚韧、有进取心,具有领导力和开拓精神", "学会适当放松,避免过刚易折,培养弹性思维", "宜进行伸展运动,忌高强度冲突"},
|
|
|
|
|
+ {"wood", "weak", "温和有礼、善于合作,但决策时容易犹豫", "增强自信心训练,培养果断决策能力", "宜与自然相处,忌过度迁就他人"},
|
|
|
|
|
+ {"wood", "balanced", "性格中庸有度,既有韧性又有灵活性", "保持现状,适当拓展社交圈", "宜户外活动,忌久坐不动"},
|
|
|
|
|
+ {"fire", "strong", "热情开朗、充满活力,富有感染力和创造力", "注意情绪管理,避免急躁冲动", "宜冷水刺激冷静,忌暴怒争执"},
|
|
|
|
|
+ {"fire", "weak", "内敛含蓄、心思细腻,对艺术有敏锐感知", "适当表达情感,培养社交自信", "宜温暖陪伴,忌独处过久"},
|
|
|
|
|
+ {"fire", "balanced", "性格温润有度,既有热情又懂克制", "保持兴趣爱好,适度拓展表达", "宜参与社交活动,忌情绪压抑"},
|
|
|
|
|
+ {"earth", "strong", "稳重可靠、有责任心,是团队中的中流砥柱", "避免过度承担,学会说'不'", "宜适量运动,忌思虑过重"},
|
|
|
|
|
+ {"earth", "weak", "随和友善、适应性强,容易与他人相处", "增强主见性,培养独立思考能力", "宜接触新事物,忌固守不变"},
|
|
|
|
|
+ {"earth", "balanced", "性情敦厚、处事稳妥,人际关系和谐", "保持学习,适当挑战自我", "宜亲近自然,忌暴饮暴食"},
|
|
|
|
|
+ {"metal", "strong", "意志坚定、追求完美,具有卓越的执行力", "学会灵活变通,避免过于严苛", "宜艺术鉴赏,忌过度批评"},
|
|
|
|
|
+ {"metal", "weak", "温和寡言、善于倾听,是值得信赖的朋友", "增强表达勇气,培养自信心", "宜团体活动,忌过度自我封闭"},
|
|
|
|
|
+ {"metal", "balanced", "为人正直、做事有度,不乏柔韧与包容", "保持开放心态,适度多元发展", "宜阅读学习,忌钻牛角尖"},
|
|
|
|
|
+ {"water", "strong", "智慧深沉、善于谋略,具有出色洞察力", "避免过度缜密,适当放松心情", "宜静坐冥想,忌思虑过深"},
|
|
|
|
|
+ {"water", "weak", "敏感细腻、有同理心,富有创作天赋", "增强抵抗力,培养情绪韧性", "宜温暖环境,忌受寒受凉"},
|
|
|
|
|
+ {"water", "balanced", "性格圆融、随机应变,处事灵活得宜", "保持好奇心,适度扩展影响力", "宜游泳泡澡,忌情绪波动"},
|
|
|
|
|
+ })
|
|
|
|
|
+ );
|
|
|
|
|
+ log.info("bazi_reading_template 种子数据已加载 (15条)");
|
|
|
|
|
+ }
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ log.warn("bazi_reading_template 种子数据初始化失败: {}", e.getMessage());
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // ==================== 1b-1: numsoul_config 种子数据 ====================
|
|
|
|
|
+ try {
|
|
|
|
|
+ Integer count = jdbcTemplate.queryForObject(
|
|
|
|
|
+ "SELECT COUNT(*) FROM numsoul_config", Integer.class);
|
|
|
|
|
+ if (count == null || count == 0) {
|
|
|
|
|
+ jdbcTemplate.batchUpdate(
|
|
|
|
|
+ "INSERT INTO numsoul_config (number, title, keywords, mind_growth_advice, recommended_article_tags, color_hex) VALUES (?, ?, ?, ?, ?, ?)",
|
|
|
|
|
+ java.util.Arrays.asList(new Object[][]{
|
|
|
|
|
+ {1, "开创者", "独立、领导、创新、自信", "培养团队协作意识,避免独断专行", "领导力,自信培养", "#FF4444"},
|
|
|
|
|
+ {2, "和平者", "温和、合作、敏感、耐心", "增强自我主张,避免过度迎合他人", "人际交往,情绪表达", "#FF8C00"},
|
|
|
|
|
+ {3, "表达者", "创意、社交、乐观、表达", "保持专注,避免浅尝辄止", "创造力,社交能力", "#FFD700"},
|
|
|
|
|
+ {4, "建设者", "务实、稳定、有序、勤奋", "学会变通,避免过于固执", "专注力,学习习惯", "#4CAF50"},
|
|
|
|
|
+ {5, "自由者", "冒险、变化、好奇、灵活", "培养持久力,避免缺乏恒心", "探索精神,适应能力", "#2196F3"},
|
|
|
|
|
+ {6, "关怀者", "责任、关爱、奉献、平衡", "学会自我关爱,避免过度付出", "家庭关系,责任心", "#9C27B0"},
|
|
|
|
|
+ {7, "探索者", "智慧、分析、内省、完美", "与人分享见解,避免过度封闭", "思维能力,学习力", "#673AB7"},
|
|
|
|
|
+ {8, "成就者", "雄心、管理、决策、权威", "关注内在成长,避免过于追求外在成就", "目标管理,理财思维", "#3F51B5"},
|
|
|
|
|
+ {9, "博爱者", "包容、智慧、善良、豁达", "设定个人边界,避免过度牺牲", "人际关系,情绪管理", "#E91E63"},
|
|
|
|
|
+ })
|
|
|
|
|
+ );
|
|
|
|
|
+ log.info("numsoul_config 种子数据已加载 (9条)");
|
|
|
|
|
+ }
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ log.warn("numsoul_config 种子数据初始化失败: {}", e.getMessage());
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
log.info("数据库迁移完成");
|
|
log.info("数据库迁移完成");
|
|
|
|
|
+
|
|
|
|
|
+ // ==================== 健康维度 Phase 1: health_dimension_score / health_data_source_record / health_norm_reference ====================
|
|
|
|
|
+ migrateHealthDimensionsTable();
|
|
|
|
|
+ seedHealthNorms();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private void migrateHealthDimensionsTable() {
|
|
|
|
|
+ try {
|
|
|
|
|
+ jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS `health_dimension_score` (\n" +
|
|
|
|
|
+ " `id` bigint NOT NULL AUTO_INCREMENT,\n" +
|
|
|
|
|
+ " `member_id` bigint NOT NULL COMMENT '家庭成员ID',\n" +
|
|
|
|
|
+ " `dimension` varchar(50) NOT NULL COMMENT '维度: body/fitness/cardio/blood/sleep/psyche/diet',\n" +
|
|
|
|
|
+ " `score` decimal(5,2) NOT NULL COMMENT '得分 0-100',\n" +
|
|
|
|
|
+ " `data_source` varchar(50) NOT NULL COMMENT '数据来源: manual/assessment/report/device',\n" +
|
|
|
|
|
+ " `record_date` date DEFAULT NULL COMMENT '记录日期',\n" +
|
|
|
|
|
+ " `source_id` bigint DEFAULT NULL COMMENT '来源记录ID(体检报告等)',\n" +
|
|
|
|
|
+ " `is_latest` tinyint(1) NOT NULL DEFAULT 1 COMMENT '是否最新',\n" +
|
|
|
|
|
+ " `created_at` datetime DEFAULT CURRENT_TIMESTAMP,\n" +
|
|
|
|
|
+ " PRIMARY KEY (`id`),\n" +
|
|
|
|
|
+ " KEY `idx_member_dimension` (`member_id`,`dimension`,`is_latest`),\n" +
|
|
|
|
|
+ " KEY `idx_record_date` (`record_date`)\n" +
|
|
|
|
|
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='健康维度评分表'");
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ log.warn("health_dimension_score 表创建失败: {}", e.getMessage());
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ try {
|
|
|
|
|
+ jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS `health_data_source_record` (\n" +
|
|
|
|
|
+ " `id` bigint NOT NULL AUTO_INCREMENT,\n" +
|
|
|
|
|
+ " `member_id` bigint NOT NULL COMMENT '家庭成员ID',\n" +
|
|
|
|
|
+ " `data_source` varchar(50) NOT NULL COMMENT '数据源: manual/assessment/report/device',\n" +
|
|
|
|
|
+ " `source_id` bigint NOT NULL COMMENT '来源记录ID',\n" +
|
|
|
|
|
+ " `dimension` varchar(50) DEFAULT NULL COMMENT '关联维度',\n" +
|
|
|
|
|
+ " `record_time` datetime NOT NULL COMMENT '记录时间',\n" +
|
|
|
|
|
+ " `is_latest` tinyint(1) NOT NULL DEFAULT 1 COMMENT '是否最新',\n" +
|
|
|
|
|
+ " `created_at` datetime DEFAULT CURRENT_TIMESTAMP,\n" +
|
|
|
|
|
+ " PRIMARY KEY (`id`),\n" +
|
|
|
|
|
+ " KEY `idx_member_source` (`member_id`,`data_source`,`is_latest`)\n" +
|
|
|
|
|
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='健康数据来源记录表'");
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ log.warn("health_data_source_record 表创建失败: {}", e.getMessage());
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ try {
|
|
|
|
|
+ jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS `health_norm_reference` (\n" +
|
|
|
|
|
+ " `id` bigint NOT NULL AUTO_INCREMENT,\n" +
|
|
|
|
|
+ " `dimension` varchar(50) NOT NULL COMMENT '维度',\n" +
|
|
|
|
|
+ " `indicator` varchar(100) NOT NULL COMMENT '指标名',\n" +
|
|
|
|
|
+ " `min_value` decimal(10,3) DEFAULT NULL COMMENT '正常最小值',\n" +
|
|
|
|
|
+ " `max_value` decimal(10,3) DEFAULT NULL COMMENT '正常最大值',\n" +
|
|
|
|
|
+ " `unit` varchar(20) DEFAULT NULL COMMENT '单位',\n" +
|
|
|
|
|
+ " `age_group` varchar(20) DEFAULT NULL COMMENT '年龄段: child/adolescent/adult',\n" +
|
|
|
|
|
+ " `gender` varchar(10) DEFAULT NULL COMMENT '性别: male/female/unisex',\n" +
|
|
|
|
|
+ " `source` varchar(100) DEFAULT NULL COMMENT '参考标准来源',\n" +
|
|
|
|
|
+ " `updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,\n" +
|
|
|
|
|
+ " PRIMARY KEY (`id`),\n" +
|
|
|
|
|
+ " KEY `idx_dimension_indicator` (`dimension`,`indicator`)\n" +
|
|
|
|
|
+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='健康指标参考标准表'");
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ log.warn("health_norm_reference 表创建失败: {}", e.getMessage());
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private void seedHealthNorms() {
|
|
|
|
|
+ try {
|
|
|
|
|
+ int count = jdbcTemplate.queryForObject("SELECT COUNT(*) FROM health_norm_reference", Integer.class);
|
|
|
|
|
+ if (count == 0) {
|
|
|
|
|
+ jdbcTemplate.execute("INSERT INTO `health_norm_reference` (`dimension`, `indicator`, `min_value`, `max_value`, `unit`, `age_group`, `gender`, `source`) VALUES\n" +
|
|
|
|
|
+ "('body', 'bmi', 18.5, 24.0, 'kg/m²', 'child', 'unisex', '中国儿童青少年BMI标准'),\n" +
|
|
|
|
|
+ "('body', 'bmi', 18.5, 24.0, 'kg/m²', 'adolescent', 'unisex', '中国儿童青少年BMI标准'),\n" +
|
|
|
|
|
+ "('body', 'bmi', 18.5, 24.0, 'kg/m²', 'adult', 'unisex', '中国成人BMI标准'),\n" +
|
|
|
|
|
+ "('sleep', 'duration', 8.0, 12.0, '小时', 'child', 'unisex', '中国儿童睡眠指南'),\n" +
|
|
|
|
|
+ "('sleep', 'duration', 9.0, 11.0, '小时', 'adolescent', 'unisex', '中国儿童青少年睡眠指南'),\n" +
|
|
|
|
|
+ "('sleep', 'duration', 7.0, 9.0, '小时', 'adult', 'unisex', '中国成人睡眠指南'),\n" +
|
|
|
|
|
+ "('fitness', 'situp', 30.0, NULL, '次', 'child', 'male', '国家学生体质健康标准'),\n" +
|
|
|
|
|
+ "('fitness', 'situp', 25.0, NULL, '次', 'child', 'female', '国家学生体质健康标准'),\n" +
|
|
|
|
|
+ "('fitness', 'situp', 40.0, NULL, '次', 'adolescent', 'male', '国家学生体质健康标准'),\n" +
|
|
|
|
|
+ "('fitness', 'situp', 35.0, NULL, '次', 'adolescent', 'female', '国家学生体质健康标准')");
|
|
|
|
|
+ log.info("health_norm_reference 种子数据已加载 (10条)");
|
|
|
|
|
+ } else {
|
|
|
|
|
+ log.info("health_norm_reference 种子数据已存在 ({}条), 跳过", count);
|
|
|
|
|
+ }
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ log.warn("health_norm_reference 种子数据初始化失败: {}", e.getMessage());
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
private void initializeDefaultData() {
|
|
private void initializeDefaultData() {
|