|
|
@@ -2937,3 +2937,858 @@ CREATE TABLE family_earnings_record (
|
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='家庭收益收支流水';
|
|
|
|
|
|
ALTER TABLE commission_records ADD COLUMN family_id BIGINT COMMENT '归属家庭ID';
|
|
|
+
|
|
|
+
|
|
|
+-- ========== Schema.sql 补充: 从 DatabaseInitializer 同步的表 ==========
|
|
|
+
|
|
|
+-- after_sales_requests
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS after_sales_requests (id BIGINT AUTO_INCREMENT PRIMARY KEY,order_id BIGINT NOT NULL COMMENT '订单ID',order_no VARCHAR(32) NOT NULL COMMENT '订单号',user_id BIGINT NOT NULL COMMENT '用户ID',type VARCHAR(32) NOT NULL COMMENT '类型: REFUND/RETURN_REFUND',reason VARCHAR(255) COMMENT '原因',description TEXT COMMENT '描述',images TEXT COMMENT '凭证图片(JSON数组)',refund_amount INT DEFAULT 0 COMMENT '退款金额(分)',status VARCHAR(20) DEFAULT 'pending' COMMENT '状态: pending/approved/rejected/completed',reject_reason VARCHAR(255) COMMENT '驳回原因',handled_by BIGINT COMMENT '处理人ID',handled_at DATETIME COMMENT '处理时间',created_at DATETIME DEFAULT CURRENT_TIMESTAMP,updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,INDEX idx_order (order_id),INDEX idx_user (user_id),INDEX idx_status (status)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='售后申请';
|
|
|
+
|
|
|
+-- article_reading_records
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS article_reading_records (id BIGINT AUTO_INCREMENT PRIMARY KEY, user_id BIGINT COMMENT '用户ID', child_id BIGINT NOT NULL COMMENT '孩子ID', content VARCHAR(500) COMMENT '阅读内容摘要', duration_seconds INT DEFAULT 0 COMMENT '阅读时长(秒)', read_at DATETIME COMMENT '阅读时间', created_at DATETIME, INDEX idx_child_id (child_id), INDEX idx_read_at (read_at)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='文章阅读记录表';
|
|
|
+
|
|
|
+-- bazi_reading_template
|
|
|
+
|
|
|
+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='五行命理解读模板';
|
|
|
+
|
|
|
+-- cart_items
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS cart_items (id BIGINT AUTO_INCREMENT PRIMARY KEY,user_id BIGINT NOT NULL COMMENT '用户ID',product_id BIGINT NOT NULL COMMENT '商品ID',quantity INT DEFAULT 1 COMMENT '数量',selected TINYINT(1) DEFAULT 1 COMMENT '是否选中',created_at DATETIME DEFAULT CURRENT_TIMESTAMP,updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,INDEX idx_user (user_id),INDEX idx_product (product_id),UNIQUE KEY uk_user_product (user_id, product_id)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='购物车';
|
|
|
+
|
|
|
+-- contacts
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS contacts (id BIGINT AUTO_INCREMENT PRIMARY KEY, user_id BIGINT NOT NULL COMMENT '用户ID', name VARCHAR(100) NOT NULL COMMENT '姓名', phone VARCHAR(20) COMMENT '电话', avatar VARCHAR(500) COMMENT '头像', relationship_type VARCHAR(20) COMMENT '关系类型: family/friend/partner/colleague/other', known_since DATETIME COMMENT '认识时间', bio VARCHAR(500) COMMENT '简介', birthday DATE COMMENT '生日', intimacy_level INT DEFAULT 0 COMMENT '亲密度(0-100)', contact_source VARCHAR(20) DEFAULT 'manual' COMMENT '来源: phone/manual', tags VARCHAR(500) COMMENT '标签(逗号分隔)', last_contact_at DATETIME COMMENT '最近联系时间', contact_count INT DEFAULT 0 COMMENT '联系次数', notes TEXT COMMENT '备注', created_at DATETIME, updated_at DATETIME, INDEX idx_user_id (user_id)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='联系人表';
|
|
|
+
|
|
|
+-- dan_knowledge_base
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS dan_knowledge_base (id BIGINT PRIMARY KEY AUTO_INCREMENT, title VARCHAR(200) NOT NULL COMMENT '知识标题', content TEXT NOT NULL COMMENT '知识内容', sort INT DEFAULT 0 COMMENT '排序', status TINYINT(1) DEFAULT 1 COMMENT '状态: 0禁用 1启用', remark VARCHAR(500) COMMENT '备注', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='知识库表';
|
|
|
+
|
|
|
+-- dan_knowledge_base_dimension
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS dan_knowledge_base_dimension (id BIGINT PRIMARY KEY AUTO_INCREMENT, knowledge_id BIGINT NOT NULL COMMENT '知识库ID', dimension_id BIGINT NOT NULL COMMENT '维度配置ID', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, UNIQUE KEY uk_knowledge_dimension (knowledge_id, dimension_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='知识-维度关联表';
|
|
|
+
|
|
|
+-- dan_knowledge_base_tag
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS dan_knowledge_base_tag (id BIGINT PRIMARY KEY AUTO_INCREMENT, knowledge_id BIGINT NOT NULL, tag_id BIGINT NOT NULL, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, UNIQUE KEY uk_knowledge_tag (knowledge_id, tag_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='知识-标签关联表';
|
|
|
+
|
|
|
+-- dan_knowledge_tag
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS dan_knowledge_tag (id BIGINT PRIMARY KEY AUTO_INCREMENT, tag_name VARCHAR(100) NOT NULL UNIQUE COMMENT '标签名', tag_type VARCHAR(50) DEFAULT 'custom' COMMENT '标签类型: custom/auto', created_at DATETIME DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='标签表';
|
|
|
+
|
|
|
+-- distribution_relations
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS distribution_relations (id BIGINT AUTO_INCREMENT PRIMARY KEY,system_id BIGINT NOT NULL COMMENT '体系ID',user_id BIGINT NOT NULL COMMENT '用户ID',parent_id BIGINT COMMENT '上级用户ID(null=根)',depth INT DEFAULT 0 COMMENT '层级深度',created_at DATETIME DEFAULT CURRENT_TIMESTAMP,INDEX idx_system (system_id),INDEX idx_user (user_id),INDEX idx_parent (parent_id)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='销售关系';
|
|
|
+
|
|
|
+-- distribution_systems
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS distribution_systems (id BIGINT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(64) NOT NULL COMMENT '体系名称',description VARCHAR(255) COMMENT '描述',owner_id BIGINT COMMENT '创建者ID',profit_rate INT DEFAULT 0 COMMENT '平台利润率(千分比)',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='销售体系';
|
|
|
+
|
|
|
+-- emotion_checkin
|
|
|
+
|
|
|
+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='情绪打卡表';
|
|
|
+
|
|
|
+-- health_checkins
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS health_checkins (id BIGINT AUTO_INCREMENT PRIMARY KEY, user_id BIGINT COMMENT '用户ID(家长)', child_id BIGINT COMMENT '孩子ID', checkin_date DATE COMMENT '打卡日期', behaviors TEXT COMMENT '打卡行为JSON数组', note VARCHAR(500) COMMENT '备注', mood VARCHAR(20) COMMENT '心情: happy/normal/sad/angry/sick', earned_energy INT DEFAULT 5 COMMENT '获得能量值', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, INDEX idx_child_id (child_id), INDEX idx_checkin_date (checkin_date)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='健康打卡表';
|
|
|
+
|
|
|
+-- health_disease_risk
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS health_disease_risk (id BIGINT AUTO_INCREMENT PRIMARY KEY, report_id BIGINT NOT NULL COMMENT '关联报告ID', disease_name VARCHAR(100) NOT NULL COMMENT '疾病名称', risk_value VARCHAR(50) COMMENT '风险值(0-1)', risk_level VARCHAR(20) COMMENT '风险等级: 高风险/需注意/低风险', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, INDEX idx_report (report_id)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='疾病风险评估数据';
|
|
|
+
|
|
|
+-- health_gut_flora
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS health_gut_flora (id BIGINT AUTO_INCREMENT PRIMARY KEY, report_id BIGINT NOT NULL COMMENT '关联报告ID', bacteria_name VARCHAR(100) NOT NULL COMMENT '菌种名称', bacteria_value VARCHAR(50) COMMENT '菌种丰度值', normal_range VARCHAR(100) COMMENT '正常范围', status VARCHAR(20) COMMENT '状态: 正常/偏低/偏高', category VARCHAR(50) COMMENT '分类: 有益菌/有害菌/中性菌', sort_order INT DEFAULT 0 COMMENT '排序', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, INDEX idx_report (report_id)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='菌群检测专项数据';
|
|
|
+
|
|
|
+-- health_report_survey
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS health_report_survey (id BIGINT AUTO_INCREMENT PRIMARY KEY, report_id BIGINT NOT NULL COMMENT '关联报告ID', user_id BIGINT NOT NULL COMMENT '用户ID', child_id BIGINT NOT NULL COMMENT '孩子ID', survey_data JSON COMMENT '调研问卷结果JSON', status VARCHAR(20) DEFAULT 'pending' COMMENT '状态: pending/completed', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, UNIQUE KEY uk_report (report_id)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='报告调研问卷';
|
|
|
+
|
|
|
+-- numsoul_config
|
|
|
+
|
|
|
+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='生命灵数配置';
|
|
|
+
|
|
|
+-- nutrition_deficiency_record
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS nutrition_deficiency_record (id BIGINT AUTO_INCREMENT PRIMARY KEY,child_id BIGINT NOT NULL COMMENT '孩子ID',report_id BIGINT NOT NULL COMMENT '关联报告ID',nutrient VARCHAR(50) NOT NULL COMMENT '营养素名',deficiency_type VARCHAR(20) NOT NULL COMMENT 'deficiency/excess/borderline/unclassified',severity DECIMAL(5,2) DEFAULT 0 COMMENT '严重程度(0-1)',indicator_name VARCHAR(100) COMMENT '关联指标名',indicator_value VARCHAR(50) COMMENT '指标检测值',ref_range VARCHAR(100) COMMENT '参考范围',symptoms TEXT COMMENT '症状描述',food_suggestions TEXT COMMENT '推荐食物',created_at DATETIME DEFAULT CURRENT_TIMESTAMP,INDEX idx_child (child_id),INDEX idx_report (report_id),INDEX idx_nutrient (nutrient)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='营养缺乏分析记录';
|
|
|
+
|
|
|
+-- nutrition_indicator_mapping
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS nutrition_indicator_mapping (id BIGINT AUTO_INCREMENT PRIMARY KEY,indicator_name_pattern VARCHAR(200) NOT NULL COMMENT '指标名匹配模式(SQL LIKE语法,%为通配符)',nutrient VARCHAR(50) NOT NULL COMMENT '关联营养素名',severity_weight DECIMAL(3,2) DEFAULT 1.00 COMMENT '权重(0-1)',deficiency_symptoms TEXT COMMENT '缺乏症状描述',excess_symptoms TEXT COMMENT '过量症状描述',food_suggestions TEXT COMMENT '推荐食物(逗号分隔)',sort_order INT DEFAULT 0 COMMENT '排序(大值优先匹配)',created_at DATETIME DEFAULT CURRENT_TIMESTAMP,updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,INDEX idx_nutrient (nutrient)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='指标-营养素映射表';
|
|
|
+
|
|
|
+-- product_dimension_config
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS product_dimension_config (id BIGINT PRIMARY KEY AUTO_INCREMENT, dimension_code VARCHAR(50) NOT NULL UNIQUE COMMENT '维度代码: body/mind/wisdom/action/wealth', dimension_name VARCHAR(100) NOT NULL COMMENT '维度名称', dimension_type VARCHAR(50) NOT NULL DEFAULT 'five' COMMENT '类型: five(五维)/action(行动)/other', parent_id BIGINT COMMENT '父级ID,无父级为NULL', sort INT DEFAULT 0 COMMENT '排序', enabled TINYINT(1) DEFAULT 1 COMMENT '启用: 0禁用 1启用', dify_dataset_id VARCHAR(100) COMMENT 'Dify Dataset ID,不填则不同步', remark VARCHAR(500) COMMENT '备注', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='维度配置表';
|
|
|
+
|
|
|
+-- promotion_tier_config
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS promotion_tier_config (id BIGINT AUTO_INCREMENT PRIMARY KEY, tier_code VARCHAR(10) NOT NULL UNIQUE COMMENT '等级编码: R0/R1/R2/R3/R4', tier_name VARCHAR(50) NOT NULL COMMENT '等级名称', min_team_size_1st INT NOT NULL DEFAULT 0 COMMENT '一级团队人数下限', min_team_size_2nd INT NOT NULL DEFAULT 0 COMMENT '二级团队人数下限', min_total_referral_earnings INT NOT NULL DEFAULT 0 COMMENT '累计推荐佣金下限(分)', min_total_share_earnings INT NOT NULL DEFAULT 0 COMMENT '累计消费返利下限(分)', commission_rate_l1 INT NOT NULL DEFAULT 0 COMMENT 'L1佣金比例(%)', commission_rate_l2 INT NOT NULL DEFAULT 0 COMMENT 'L2佣金比例(%)', sort_order INT NOT NULL DEFAULT 0 COMMENT '排序', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='推广等级阈值配置';
|
|
|
+
|
|
|
+-- shop_categories
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS shop_categories (id BIGINT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(64) NOT NULL COMMENT '分类名称',parent_id BIGINT DEFAULT 0 COMMENT '父分类ID(0=根节点)',level INT DEFAULT 0 COMMENT '层级(0/1/2/3)',sort INT DEFAULT 0 COMMENT '排序',image VARCHAR(512) COMMENT '分类图标',enabled TINYINT(1) DEFAULT 1 COMMENT '启用',dimension_codes VARCHAR(128) COMMENT '维度编码(逗号分隔: body,mind,heart)',product_types VARCHAR(128) COMMENT '商品类型(逗号分隔: PHYSICAL,COURSE,ASSESSMENT)',created_at DATETIME DEFAULT CURRENT_TIMESTAMP,updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,INDEX idx_parent (parent_id),INDEX idx_sort (sort)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商品类目';
|
|
|
+
|
|
|
+-- shop_discount_rules
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS shop_discount_rules (id BIGINT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(64) NOT NULL COMMENT '规则名称',type VARCHAR(32) NOT NULL COMMENT '类型: PERCENT/FIXED/THRESHOLD',value INT NOT NULL COMMENT '折扣值(PERCENT=百分比数字, FIXED/THRESHOLD=金额分)',threshold_amount INT COMMENT '满减门槛(分,仅THRESHOLD)',category_id BIGINT COMMENT '适用类目ID(null=全部)',distribution_system_id BIGINT COMMENT '适用体系ID(null=全部)',product_ids TEXT COMMENT '适用商品ID(逗号分隔,null=全部)',start_time DATETIME COMMENT '开始时间',end_time DATETIME COMMENT '结束时间',max_uses INT DEFAULT 0 COMMENT '最大使用次数(0=不限)',used_count INT DEFAULT 0 COMMENT '已使用次数',enabled TINYINT(1) DEFAULT 1 COMMENT '启用',created_at DATETIME DEFAULT CURRENT_TIMESTAMP,updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,INDEX idx_category (category_id),INDEX idx_enabled (enabled)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='折扣规则';
|
|
|
+
|
|
|
+-- trial_memberships
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS trial_memberships (id BIGINT AUTO_INCREMENT PRIMARY KEY, user_id BIGINT NOT NULL COMMENT '用户ID', family_id BIGINT NOT NULL COMMENT '家庭ID', start_date DATETIME NOT NULL COMMENT '试用开始时间', end_date DATETIME NOT NULL COMMENT '试用结束时间', status VARCHAR(20) DEFAULT 'PENDING' COMMENT '状态:PENDING/ACTIVE/EXPIRED/CONVERTED', trial_days INT DEFAULT 7 COMMENT '试用天数', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, INDEX idx_user_id (user_id), INDEX idx_family_id (family_id), INDEX idx_status (status), INDEX idx_end_date (end_date)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
+
|
|
|
+-- user_profile_history
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS user_profile_history (id BIGINT AUTO_INCREMENT PRIMARY KEY, user_id BIGINT NOT NULL COMMENT '用户ID', field_name VARCHAR(64) NOT NULL COMMENT '变更字段名', old_value TEXT COMMENT '旧值', new_value TEXT COMMENT '新值', source VARCHAR(32) DEFAULT 'user' COMMENT '变更来源: user/admin/auto', changed_at DATETIME NOT NULL COMMENT '变更时间', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, INDEX idx_ph_user (user_id), INDEX idx_ph_field (field_name), INDEX idx_ph_changed (changed_at) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户信息变更历史表';
|
|
|
+
|
|
|
+-- follow_up
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS follow_up (id BIGINT AUTO_INCREMENT PRIMARY KEY, family_id BIGINT NOT NULL COMMENT '家庭ID', child_id BIGINT COMMENT '孩子ID', teacher_id BIGINT COMMENT '规划师ID', deficiency_id BIGINT COMMENT '缺乏项ID', message_id BIGINT COMMENT '消息ID', status VARCHAR(20) DEFAULT 'pending' COMMENT '状态', priority VARCHAR(10) DEFAULT 'medium' COMMENT '优先级', description VARCHAR(500) COMMENT '描述', parent_feedback TEXT COMMENT '家长反馈', teacher_review VARCHAR(500) COMMENT '规划师点评', due_date DATETIME COMMENT '截止日期', completed_at DATETIME COMMENT '完成时间', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, INDEX idx_family (family_id), INDEX idx_teacher (teacher_id), INDEX idx_status (status), INDEX idx_due (due_date);
|
|
|
+
|
|
|
+-- food_nutrients
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS food_nutrients (id BIGINT AUTO_INCREMENT PRIMARY KEY, food_id BIGINT NOT NULL COMMENT '食材ID', nutrient_code VARCHAR(20) NOT NULL COMMENT '营养素编码', amount_per_100g DECIMAL(10,4) NOT NULL COMMENT '每100g含量', unit VARCHAR(20) NOT NULL COMMENT '单位', source VARCHAR(50) DEFAULT 'importer' COMMENT '数据来源', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, UNIQUE KEY uk_food_nutrient (food_id, nutrient_code), INDEX idx_nutrient (nutrient_code);
|
|
|
+
|
|
|
+-- foods
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS foods (id BIGINT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100) NOT NULL COMMENT '食材名称', category VARCHAR(50) COMMENT '分类: 蔬菜/水果/肉禽/水产/蛋奶/豆类/谷物/调味/其他', unit VARCHAR(20) DEFAULT 'g' COMMENT '计量单位', calories DECIMAL(8,2) COMMENT '热量(kcal/100g)', protein DECIMAL(8,2) COMMENT '蛋白质(g/100g)', fat DECIMAL(8,2) COMMENT '脂肪(g/100g)', carbs DECIMAL(8,2) COMMENT '碳水(g/100g)', fiber DECIMAL(8,2) COMMENT '膳食纤维(g/100g)', price_level TINYINT COMMENT '价格等级 1-5', nutrition_tags VARCHAR(500) COMMENT '营养标签JSON', suitable_for VARCHAR(200) COMMENT '适宜人群JSON', allergens VARCHAR(200) COMMENT '过敏原JSON', external_source VARCHAR(100) COMMENT '数据来源', external_id VARCHAR(100) COMMENT '外部ID', cover_image VARCHAR(500) COMMENT '食材图片', status VARCHAR(20) DEFAULT 'active', sort_order INT DEFAULT 0, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, INDEX idx_category (category), INDEX idx_price (price_level);
|
|
|
+
|
|
|
+-- meal_logs
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS meal_logs (id BIGINT AUTO_INCREMENT PRIMARY KEY, user_id BIGINT NOT NULL COMMENT '用户ID', child_id BIGINT COMMENT '孩子ID', meal_type VARCHAR(20) NOT NULL COMMENT '早餐/午餐/晚餐/加餐', meal_date DATE NOT NULL COMMENT '用餐日期', meal_time DATETIME COMMENT '具体时间', foods TEXT NOT NULL COMMENT '食物清单JSON', total_calories DECIMAL(8,2) COMMENT '总热量', total_protein DECIMAL(8,2) COMMENT '总蛋白质', total_fat DECIMAL(8,2) COMMENT '总脂肪', total_carbs DECIMAL(8,2) COMMENT '总碳水', total_fiber DECIMAL(8,2) COMMENT '总膳食纤维', note TEXT COMMENT '备注', images VARCHAR(1000) COMMENT '图片JSON', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, INDEX idx_user_date (user_id, meal_date), INDEX idx_child_date (child_id, meal_date);
|
|
|
+
|
|
|
+-- product_skus
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS product_skus ( id INT NOT NULL AUTO_INCREMENT, product_id INT NOT NULL COMMENT '商品ID', sku_code VARCHAR(64) NOT NULL COMMENT 'SKU编码', specs JSON NOT NULL COMMENT '规格JSON', price DECIMAL(10,2) NOT NULL COMMENT 'SKU价格', stock INT NOT NULL DEFAULT 0 COMMENT '库存', original_price DECIMAL(10,2) COMMENT '原价/划线价', image VARCHAR(512) COMMENT 'SKU图片', enabled TINYINT(1) NOT NULL DEFAULT 1, create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (id), KEY idx_product_id (product_id)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商品SKU';
|
|
|
+
|
|
|
+-- rdi_standards
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS rdi_standards (id BIGINT AUTO_INCREMENT PRIMARY KEY, nutrient_code VARCHAR(20) NOT NULL COMMENT '营养素编码', age_group VARCHAR(10) NOT NULL COMMENT '年龄段', gender VARCHAR(6) DEFAULT 'all' COMMENT '性别', rdi_type VARCHAR(10) NOT NULL COMMENT '参考类型', amount DECIMAL(10,4) NOT NULL COMMENT '推荐量', unit VARCHAR(20) NOT NULL COMMENT '单位', source VARCHAR(100) COMMENT '数据来源', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, UNIQUE KEY uk_rdi (nutrient_code, age_group, gender, rdi_type), INDEX idx_age (age_group);
|
|
|
+
|
|
|
+-- recipes
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS recipes (id BIGINT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(200) NOT NULL COMMENT '食谱名称', meal_type VARCHAR(20) COMMENT '早餐/午餐/晚餐/加餐', description TEXT COMMENT '简介', ingredients TEXT NOT NULL COMMENT '食材清单JSON', steps TEXT COMMENT '烹饪步骤JSON', cook_time INT COMMENT '烹饪时间(分钟)', difficulty VARCHAR(20) COMMENT '难度: 简单/中等/困难', total_calories DECIMAL(8,2) COMMENT '总热量', total_protein DECIMAL(8,2) COMMENT '总蛋白质', total_fat DECIMAL(8,2) COMMENT '总脂肪', total_carbs DECIMAL(8,2) COMMENT '总碳水', total_fiber DECIMAL(8,2) COMMENT '总膳食纤维', suitable_for VARCHAR(200) COMMENT '适宜场景', nutrition_tags VARCHAR(500) COMMENT '营养标签', external_source VARCHAR(100), external_id VARCHAR(100), cover_image VARCHAR(500), status VARCHAR(20) DEFAULT 'active', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, INDEX idx_meal_type (meal_type), INDEX idx_cook_time (cook_time);
|
|
|
+
|
|
|
+-- report_food_suitability
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS report_food_suitability (id BIGINT AUTO_INCREMENT PRIMARY KEY, report_id BIGINT NOT NULL COMMENT '健康报告ID', food_id BIGINT COMMENT '食材ID', food_name VARCHAR(100) NOT NULL COMMENT '食材名称', category VARCHAR(50) COMMENT '分类', score INT NOT NULL COMMENT '适宜度评分', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, INDEX idx_report (report_id), INDEX idx_food (food_id);
|
|
|
+
|
|
|
+-- seasonal_foods
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS seasonal_foods (id BIGINT AUTO_INCREMENT PRIMARY KEY, food_id BIGINT NOT NULL COMMENT '关联foods.id', month TINYINT NOT NULL COMMENT '月份 1-12', region VARCHAR(50) DEFAULT '全国' COMMENT '产地', peak_flag TINYINT DEFAULT 0 COMMENT '盛产标志', sort_order INT DEFAULT 0, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, INDEX idx_food_month (food_id, month), INDEX idx_month (month);
|
|
|
+
|
|
|
+-- shopping_list_items
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS shopping_list_items (id BIGINT AUTO_INCREMENT PRIMARY KEY, list_id BIGINT NOT NULL COMMENT '购物清单ID', food_id BIGINT COMMENT '食材ID', food_name VARCHAR(100) NOT NULL COMMENT '食材名称', category VARCHAR(50) COMMENT '分类', quantity DECIMAL(8,2) DEFAULT 1 COMMENT '数量', unit VARCHAR(20) DEFAULT '份' COMMENT '单位', priority VARCHAR(10) DEFAULT 'medium' COMMENT '优先级', reason VARCHAR(200) COMMENT '推荐原因', score INT COMMENT '评分', source VARCHAR(20) COMMENT '来源', purchased TINYINT DEFAULT 0 COMMENT '是否已购', purchased_at DATETIME COMMENT '购买时间', sort_order INT DEFAULT 0 COMMENT '排序', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, INDEX idx_list (list_id), INDEX idx_purchased (purchased);
|
|
|
+
|
|
|
+-- shopping_lists
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS shopping_lists (id BIGINT AUTO_INCREMENT PRIMARY KEY, user_id BIGINT NOT NULL COMMENT '用户ID', child_id BIGINT COMMENT '孩子ID', report_id BIGINT COMMENT '健康报告ID', title VARCHAR(200) COMMENT '标题', source VARCHAR(20) NOT NULL COMMENT '来源', status VARCHAR(20) DEFAULT 'active' COMMENT '状态', total_items INT DEFAULT 0 COMMENT '总项数', purchased_items INT DEFAULT 0 COMMENT '已购项数', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, INDEX idx_user (user_id), INDEX idx_report (report_id), INDEX idx_status (status);
|
|
|
+
|
|
|
+-- user_food_preference
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS user_food_preference (id BIGINT AUTO_INCREMENT PRIMARY KEY, user_id BIGINT NOT NULL COMMENT '用户ID', food_id BIGINT COMMENT '食材ID', food_name VARCHAR(100) NOT NULL COMMENT '食材名称', score INT NOT NULL DEFAULT 0 COMMENT '评分', reason VARCHAR(500) COMMENT '原因', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, INDEX idx_user (user_id);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+-- ========== Schema.sql 补充: 从 entity 反向生成的表 ==========
|
|
|
+
|
|
|
+-- article_quiz_records
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS article_quiz_records (
|
|
|
+ id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
+ article_id BIGINT,
|
|
|
+ user_id BIGINT,
|
|
|
+ child_id BIGINT,
|
|
|
+ questions VARCHAR(255),
|
|
|
+ answers VARCHAR(255),
|
|
|
+ score INT,
|
|
|
+ points_earned INT,
|
|
|
+ created_at DATETIME,
|
|
|
+ updated_at DATETIME
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
+
|
|
|
+-- assessment_results
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS assessment_results (
|
|
|
+ id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
+ child_id BIGINT,
|
|
|
+ teacher_id BIGINT,
|
|
|
+ appointment_id BIGINT,
|
|
|
+ attention_score INT,
|
|
|
+ focus_score INT,
|
|
|
+ memory_score INT,
|
|
|
+ logic_score INT,
|
|
|
+ overall_score INT,
|
|
|
+ assessment_date DATETIME,
|
|
|
+ duration_minutes INT,
|
|
|
+ analysis_report VARCHAR(255),
|
|
|
+ growth_suggestions VARCHAR(255),
|
|
|
+ next_review_date DATETIME,
|
|
|
+ status VARCHAR(255),
|
|
|
+ created_at DATETIME,
|
|
|
+ updated_at DATETIME,
|
|
|
+ child_name VARCHAR(255),
|
|
|
+ child_birthday DATETIME,
|
|
|
+ child_gender VARCHAR(255),
|
|
|
+ child_age INT,
|
|
|
+ school VARCHAR(255),
|
|
|
+ grade VARCHAR(255),
|
|
|
+ grade_class VARCHAR(255),
|
|
|
+ height INT,
|
|
|
+ weight INT,
|
|
|
+ family_status VARCHAR(255),
|
|
|
+ parent_degree VARCHAR(255),
|
|
|
+ nation VARCHAR(255),
|
|
|
+ province VARCHAR(255),
|
|
|
+ city VARCHAR(255),
|
|
|
+ district VARCHAR(255),
|
|
|
+ address VARCHAR(255),
|
|
|
+ single_child VARCHAR(255),
|
|
|
+ school_score VARCHAR(255),
|
|
|
+ urgent_name VARCHAR(255),
|
|
|
+ urgent_phone VARCHAR(255),
|
|
|
+ pics VARCHAR(255),
|
|
|
+ videos VARCHAR(255),
|
|
|
+ audio VARCHAR(255),
|
|
|
+ audio_url VARCHAR(255),
|
|
|
+ process_desc VARCHAR(255),
|
|
|
+ result_desc VARCHAR(255)
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
+
|
|
|
+-- cognitive_norms
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS cognitive_norms (
|
|
|
+ id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
+ dimension_key VARCHAR(255),
|
|
|
+ gender VARCHAR(255),
|
|
|
+ age_min INT,
|
|
|
+ age_max INT,
|
|
|
+ percentile5 INT,
|
|
|
+ percentile25 INT,
|
|
|
+ percentile50 INT,
|
|
|
+ percentile75 INT,
|
|
|
+ percentile95 INT,
|
|
|
+ source VARCHAR(255),
|
|
|
+ created_at DATETIME
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
+
|
|
|
+-- contact_match_requests
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS contact_match_requests (
|
|
|
+ id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
+ requester_id BIGINT,
|
|
|
+ target_user_id BIGINT,
|
|
|
+ contact_id BIGINT,
|
|
|
+ status VARCHAR(255),
|
|
|
+ message VARCHAR(255),
|
|
|
+ created_at DATETIME,
|
|
|
+ updated_at DATETIME
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
+
|
|
|
+-- daily_checkin
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS daily_checkin (
|
|
|
+ id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
+ member_id BIGINT,
|
|
|
+ checkin_date DATETIME,
|
|
|
+ diet_score INT,
|
|
|
+ exercise_score INT,
|
|
|
+ sleep_score INT,
|
|
|
+ water_intake INT,
|
|
|
+ mood_score INT,
|
|
|
+ weight_kg DECIMAL(10,2),
|
|
|
+ height_cm DECIMAL(10,2),
|
|
|
+ remark VARCHAR(255),
|
|
|
+ created_at DATETIME,
|
|
|
+ updated_at DATETIME
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
+
|
|
|
+-- diet_meal_record
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS diet_meal_record (
|
|
|
+ id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
+ member_id BIGINT,
|
|
|
+ checkin_id BIGINT,
|
|
|
+ meal_type VARCHAR(255),
|
|
|
+ food_name VARCHAR(255),
|
|
|
+ food_amount VARCHAR(255),
|
|
|
+ calories INT,
|
|
|
+ protein DECIMAL(10,2),
|
|
|
+ fat DECIMAL(10,2),
|
|
|
+ carbs DECIMAL(10,2),
|
|
|
+ fiber DECIMAL(10,2),
|
|
|
+ eaten_at DATETIME,
|
|
|
+ source VARCHAR(255),
|
|
|
+ created_at DATETIME
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
+
|
|
|
+-- dimension_weights
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS dimension_weights (
|
|
|
+ id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
+ target_type VARCHAR(255),
|
|
|
+ target_id BIGINT,
|
|
|
+ dimension VARCHAR(255),
|
|
|
+ weight INT,
|
|
|
+ enabled TINYINT(1),
|
|
|
+ created_at DATETIME,
|
|
|
+ updated_at DATETIME
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
+
|
|
|
+-- emotion_alert
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS emotion_alert (
|
|
|
+ id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
+ child_id BIGINT,
|
|
|
+ alert_type VARCHAR(255),
|
|
|
+ severity VARCHAR(255),
|
|
|
+ title VARCHAR(255),
|
|
|
+ message VARCHAR(255),
|
|
|
+ related_checkin_id BIGINT,
|
|
|
+ resolved TINYINT(1),
|
|
|
+ created_at DATETIME,
|
|
|
+ resolved_at DATETIME
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
+
|
|
|
+-- energy_dimension_config
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS energy_dimension_config (
|
|
|
+ id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
+ dimension VARCHAR(255),
|
|
|
+ data_source VARCHAR(255),
|
|
|
+ category VARCHAR(255),
|
|
|
+ weight INT,
|
|
|
+ is_active INT,
|
|
|
+ updated_at DATETIME
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
+
|
|
|
+-- exercise_record
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS exercise_record (
|
|
|
+ id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
+ member_id BIGINT,
|
|
|
+ checkin_id BIGINT,
|
|
|
+ exercise_type VARCHAR(255),
|
|
|
+ duration_minutes INT,
|
|
|
+ intensity VARCHAR(255),
|
|
|
+ calories_burned INT,
|
|
|
+ heart_rate_avg INT,
|
|
|
+ heart_rate_max INT,
|
|
|
+ start_time DATETIME,
|
|
|
+ end_time DATETIME,
|
|
|
+ remark VARCHAR(255),
|
|
|
+ created_at DATETIME
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
+
|
|
|
+-- family_memberships
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS family_memberships (
|
|
|
+ id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
+ family_id BIGINT,
|
|
|
+ level_code VARCHAR(255),
|
|
|
+ start_date DATETIME,
|
|
|
+ end_date DATETIME,
|
|
|
+ payment_method VARCHAR(255),
|
|
|
+ payment_status VARCHAR(255),
|
|
|
+ order_no VARCHAR(255),
|
|
|
+ transaction_id VARCHAR(255),
|
|
|
+ amount INT,
|
|
|
+ auto_renew INT,
|
|
|
+ created_at DATETIME,
|
|
|
+ updated_at DATETIME
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
+
|
|
|
+-- food_recommend_idx
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS food_recommend_idx (
|
|
|
+ id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
+ user_id BIGINT,
|
|
|
+ food_id BIGINT,
|
|
|
+ food_name VARCHAR(255),
|
|
|
+ index_score INT,
|
|
|
+ health_report_id BIGINT,
|
|
|
+ calculated_at DATETIME,
|
|
|
+ created_at DATETIME
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
+
|
|
|
+-- food_recommend_idx_log
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS food_recommend_idx_log (
|
|
|
+ id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
+ user_id BIGINT,
|
|
|
+ food_id BIGINT,
|
|
|
+ food_name VARCHAR(255),
|
|
|
+ previous_index INT,
|
|
|
+ new_index INT,
|
|
|
+ health_report_id BIGINT,
|
|
|
+ change_reason VARCHAR(255),
|
|
|
+ changed_at DATETIME
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
+
|
|
|
+-- guide_activities
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS guide_activities (
|
|
|
+ id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
+ guide_id BIGINT,
|
|
|
+ title VARCHAR(255),
|
|
|
+ description VARCHAR(255),
|
|
|
+ cover_image VARCHAR(255),
|
|
|
+ category VARCHAR(255),
|
|
|
+ location VARCHAR(255),
|
|
|
+ activity_date DATETIME,
|
|
|
+ max_participants INT,
|
|
|
+ current_participants INT,
|
|
|
+ price BIGINT,
|
|
|
+ status VARCHAR(255),
|
|
|
+ source VARCHAR(255),
|
|
|
+ published_at DATETIME,
|
|
|
+ created_at DATETIME,
|
|
|
+ updated_at DATETIME
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
+
|
|
|
+-- guide_family_relations
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS guide_family_relations (
|
|
|
+ id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
+ guide_id BIGINT,
|
|
|
+ family_id BIGINT,
|
|
|
+ relation_type VARCHAR(255),
|
|
|
+ status VARCHAR(255),
|
|
|
+ created_at DATETIME,
|
|
|
+ updated_at DATETIME
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
+
|
|
|
+-- guide_hierarchy
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS guide_hierarchy (
|
|
|
+ id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
+ parent_id BIGINT,
|
|
|
+ child_id BIGINT,
|
|
|
+ level INT,
|
|
|
+ status VARCHAR(255),
|
|
|
+ created_at DATETIME,
|
|
|
+ updated_at DATETIME
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
+
|
|
|
+-- health_data_sources
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS health_data_sources (
|
|
|
+ id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
+ member_id BIGINT,
|
|
|
+ source_type VARCHAR(255),
|
|
|
+ dimension_codes VARCHAR(255),
|
|
|
+ parsed_result VARCHAR(255),
|
|
|
+ file_url VARCHAR(255),
|
|
|
+ confidence DECIMAL(10,2),
|
|
|
+ created_at DATETIME
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
+
|
|
|
+-- health_dimension_scores
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS health_dimension_scores (
|
|
|
+ id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
+ member_id BIGINT,
|
|
|
+ dimension VARCHAR(255),
|
|
|
+ score INT,
|
|
|
+ percentile INT,
|
|
|
+ data_source VARCHAR(255),
|
|
|
+ tier INT,
|
|
|
+ raw_data VARCHAR(255),
|
|
|
+ assess_date DATETIME,
|
|
|
+ expire_date DATETIME,
|
|
|
+ created_at DATETIME,
|
|
|
+ updated_at DATETIME
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
+
|
|
|
+-- health_growth_record
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS health_growth_record (
|
|
|
+ id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
+ member_id BIGINT,
|
|
|
+ record_date DATETIME,
|
|
|
+ height_cm DECIMAL(10,2),
|
|
|
+ weight_kg DECIMAL(10,2),
|
|
|
+ bmi DECIMAL(10,2),
|
|
|
+ head_circumference DECIMAL(10,2),
|
|
|
+ bone_age INT,
|
|
|
+ tooth_age INT,
|
|
|
+ growth_rate DECIMAL(10,2),
|
|
|
+ percentile_height INT,
|
|
|
+ percentile_weight INT,
|
|
|
+ percentile_bmi INT,
|
|
|
+ standard_type VARCHAR(255),
|
|
|
+ source VARCHAR(255),
|
|
|
+ created_at DATETIME,
|
|
|
+ updated_at DATETIME
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
+
|
|
|
+-- health_norm_reference
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS health_norm_reference (
|
|
|
+ id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
+ dimension VARCHAR(255),
|
|
|
+ gender VARCHAR(255),
|
|
|
+ age_min INT,
|
|
|
+ age_max INT,
|
|
|
+ percentile5 INT,
|
|
|
+ percentile15 INT,
|
|
|
+ percentile25 INT,
|
|
|
+ percentile50 INT,
|
|
|
+ percentile75 INT,
|
|
|
+ percentile85 INT,
|
|
|
+ percentile95 INT,
|
|
|
+ source VARCHAR(255),
|
|
|
+ created_at DATETIME
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
+
|
|
|
+-- interaction_logs
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS interaction_logs (
|
|
|
+ id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
+ family_id BIGINT,
|
|
|
+ from_member_id BIGINT,
|
|
|
+ to_member_id BIGINT,
|
|
|
+ interaction_type VARCHAR(255),
|
|
|
+ description VARCHAR(255),
|
|
|
+ happened_at DATETIME,
|
|
|
+ created_at DATETIME
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
+
|
|
|
+-- membership_levels
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS membership_levels (
|
|
|
+ id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
+ level_code VARCHAR(255),
|
|
|
+ level_name VARCHAR(255),
|
|
|
+ level_desc VARCHAR(255),
|
|
|
+ price_monthly INT,
|
|
|
+ price_quarterly INT,
|
|
|
+ price_yearly INT,
|
|
|
+ features VARCHAR(255),
|
|
|
+ max_children INT,
|
|
|
+ max_tasks_per_day INT,
|
|
|
+ ai_review_enabled INT,
|
|
|
+ priority_support INT,
|
|
|
+ teacher_consultation INT,
|
|
|
+ created_at DATETIME,
|
|
|
+ updated_at DATETIME
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
+
|
|
|
+-- mental_health_screen
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS mental_health_screen (
|
|
|
+ id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
+ child_id BIGINT,
|
|
|
+ screen_type VARCHAR(255),
|
|
|
+ answers VARCHAR(255),
|
|
|
+ total_score INT,
|
|
|
+ severity_level VARCHAR(255),
|
|
|
+ risk_flags VARCHAR(255),
|
|
|
+ suggestions VARCHAR(255),
|
|
|
+ completed_at DATETIME,
|
|
|
+ created_at DATETIME,
|
|
|
+ updated_at DATETIME
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
+
|
|
|
+-- order_items
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS order_items (
|
|
|
+ id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
+ order_id BIGINT,
|
|
|
+ product_id BIGINT,
|
|
|
+ sku_id BIGINT,
|
|
|
+ product_name VARCHAR(255),
|
|
|
+ product_image VARCHAR(255),
|
|
|
+ sku_specs VARCHAR(255),
|
|
|
+ price DECIMAL(10,2),
|
|
|
+ quantity INT,
|
|
|
+ subtotal DECIMAL(10,2)
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
+
|
|
|
+-- payment_orders
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS payment_orders (
|
|
|
+ id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
+ order_no VARCHAR(255),
|
|
|
+ family_id BIGINT,
|
|
|
+ level_code VARCHAR(255),
|
|
|
+ payment_type VARCHAR(255),
|
|
|
+ period VARCHAR(255),
|
|
|
+ amount INT,
|
|
|
+ user_coupon_id BIGINT,
|
|
|
+ status VARCHAR(255),
|
|
|
+ pay_method VARCHAR(255),
|
|
|
+ transaction_id VARCHAR(255),
|
|
|
+ paid_at DATETIME,
|
|
|
+ created_at DATETIME,
|
|
|
+ updated_at DATETIME
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
+
|
|
|
+-- points_exchange_products
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS points_exchange_products (
|
|
|
+ id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
+ name VARCHAR(255),
|
|
|
+ description VARCHAR(255),
|
|
|
+ cover_image VARCHAR(255),
|
|
|
+ points_price INT,
|
|
|
+ stock INT,
|
|
|
+ product_type VARCHAR(255),
|
|
|
+ category VARCHAR(255),
|
|
|
+ expiry_days INT,
|
|
|
+ sort_order INT,
|
|
|
+ status VARCHAR(255),
|
|
|
+ created_at DATETIME,
|
|
|
+ updated_at DATETIME
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
+
|
|
|
+-- points_exchange_records
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS points_exchange_records (
|
|
|
+ id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
+ user_id BIGINT,
|
|
|
+ child_id BIGINT,
|
|
|
+ family_member_id BIGINT,
|
|
|
+ product_id BIGINT,
|
|
|
+ product_name VARCHAR(255),
|
|
|
+ points_cost INT,
|
|
|
+ quantity INT,
|
|
|
+ status VARCHAR(255),
|
|
|
+ redeem_code VARCHAR(255),
|
|
|
+ expired_at DATETIME,
|
|
|
+ created_at DATETIME,
|
|
|
+ updated_at DATETIME
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
+
|
|
|
+-- promotion_materials
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS promotion_materials (
|
|
|
+ id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
+ title VARCHAR(255),
|
|
|
+ description VARCHAR(255),
|
|
|
+ material_type VARCHAR(255),
|
|
|
+ cover_url VARCHAR(255),
|
|
|
+ file_url VARCHAR(255),
|
|
|
+ tags VARCHAR(255),
|
|
|
+ usage_scenario VARCHAR(255),
|
|
|
+ sort_order INT,
|
|
|
+ status VARCHAR(255),
|
|
|
+ created_by BIGINT,
|
|
|
+ created_at DATETIME,
|
|
|
+ updated_at DATETIME
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
+
|
|
|
+-- relationship_questionnaire_responses
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS relationship_questionnaire_responses (
|
|
|
+ id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
+ snapshot_id BIGINT,
|
|
|
+ respondent_id BIGINT,
|
|
|
+ answers_json VARCHAR(255),
|
|
|
+ trust_score DECIMAL(10,2),
|
|
|
+ intimacy_score DECIMAL(10,2),
|
|
|
+ communication_score DECIMAL(10,2),
|
|
|
+ interaction_bonus DECIMAL(10,2),
|
|
|
+ total_score DECIMAL(10,2),
|
|
|
+ calculated_at DATETIME
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
+
|
|
|
+-- relationship_questionnaire_snapshots
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS relationship_questionnaire_snapshots (
|
|
|
+ id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
+ family_member_id BIGINT,
|
|
|
+ respondent_id BIGINT,
|
|
|
+ member_name VARCHAR(255),
|
|
|
+ relationship_type VARCHAR(255),
|
|
|
+ ai_generated_json VARCHAR(255),
|
|
|
+ version VARCHAR(255),
|
|
|
+ created_at DATETIME
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
+
|
|
|
+-- share_events
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS share_events (
|
|
|
+ id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
+ user_id BIGINT,
|
|
|
+ target_type VARCHAR(255),
|
|
|
+ target_id BIGINT,
|
|
|
+ share_channel VARCHAR(255),
|
|
|
+ share_title VARCHAR(255),
|
|
|
+ share_url VARCHAR(255),
|
|
|
+ click_count INT,
|
|
|
+ read_count INT,
|
|
|
+ reward_points INT,
|
|
|
+ status VARCHAR(255),
|
|
|
+ expires_at DATETIME,
|
|
|
+ created_at DATETIME,
|
|
|
+ updated_at DATETIME
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
+
|
|
|
+-- share_reads
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS share_reads (
|
|
|
+ id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
+ share_event_id BIGINT,
|
|
|
+ reader_id BIGINT,
|
|
|
+ reader_ip VARCHAR(255),
|
|
|
+ read_duration INT,
|
|
|
+ read_at DATETIME
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
+
|
|
|
+-- sleep_record
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS sleep_record (
|
|
|
+ id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
+ member_id BIGINT,
|
|
|
+ checkin_id BIGINT,
|
|
|
+ sleep_time DATETIME,
|
|
|
+ wake_time DATETIME,
|
|
|
+ duration_minutes INT,
|
|
|
+ deep_sleep_minutes INT,
|
|
|
+ light_sleep_minutes INT,
|
|
|
+ rem_minutes INT,
|
|
|
+ quality_score INT,
|
|
|
+ dream_count INT,
|
|
|
+ remark VARCHAR(255),
|
|
|
+ created_at DATETIME
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
+
|
|
|
+-- teachers
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS teachers (
|
|
|
+ id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
+ user_id BIGINT,
|
|
|
+ teacher_no VARCHAR(255),
|
|
|
+ title VARCHAR(255),
|
|
|
+ specialty VARCHAR(255),
|
|
|
+ bio VARCHAR(255),
|
|
|
+ experience_years INT,
|
|
|
+ rating INT,
|
|
|
+ total_appointments INT,
|
|
|
+ status VARCHAR(255),
|
|
|
+ verification_status VARCHAR(255),
|
|
|
+ street_id BIGINT,
|
|
|
+ province VARCHAR(255),
|
|
|
+ city VARCHAR(255),
|
|
|
+ district VARCHAR(255),
|
|
|
+ street VARCHAR(255),
|
|
|
+ verified_at DATETIME,
|
|
|
+ created_at DATETIME,
|
|
|
+ updated_at DATETIME
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
+
|
|
|
+-- training_plan_items
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS training_plan_items (
|
|
|
+ id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
+ plan_id BIGINT,
|
|
|
+ sequence INT,
|
|
|
+ dimension_key VARCHAR(255),
|
|
|
+ suggestion VARCHAR(255),
|
|
|
+ task_title VARCHAR(255),
|
|
|
+ task_desc VARCHAR(255),
|
|
|
+ minigame_code VARCHAR(255),
|
|
|
+ article_id BIGINT,
|
|
|
+ task_points INT,
|
|
|
+ deadline_days INT,
|
|
|
+ status VARCHAR(255),
|
|
|
+ completed_at DATETIME,
|
|
|
+ created_at DATETIME
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
+
|
|
|
+-- training_plans
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS training_plans (
|
|
|
+ id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
+ guide_id BIGINT,
|
|
|
+ child_id BIGINT,
|
|
|
+ title VARCHAR(255),
|
|
|
+ description VARCHAR(255),
|
|
|
+ status VARCHAR(255),
|
|
|
+ source VARCHAR(255),
|
|
|
+ deployed_at DATETIME,
|
|
|
+ created_at DATETIME,
|
|
|
+ updated_at DATETIME
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
+
|
|
|
+-- training_plan_tasks
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS training_plan_tasks (
|
|
|
+ id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
+ plan_id BIGINT,
|
|
|
+ plan_item_id BIGINT,
|
|
|
+ task_id BIGINT,
|
|
|
+ child_id BIGINT,
|
|
|
+ status VARCHAR(255),
|
|
|
+ created_at DATETIME
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
+
|
|
|
+-- upgrade_services
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS upgrade_services (
|
|
|
+ id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
+ guide_id BIGINT,
|
|
|
+ from_level VARCHAR(255),
|
|
|
+ to_level VARCHAR(255),
|
|
|
+ service_fee INT,
|
|
|
+ status VARCHAR(255),
|
|
|
+ reviewed_by BIGINT,
|
|
|
+ reviewed_at DATETIME,
|
|
|
+ reject_reason VARCHAR(255),
|
|
|
+ created_at DATETIME,
|
|
|
+ updated_at DATETIME
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
+
|
|
|
+-- user_nutrition_profile
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS user_nutrition_profile (
|
|
|
+ id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
+ user_id BIGINT,
|
|
|
+ fruit_allergy VARCHAR(255),
|
|
|
+ fruit_preferences VARCHAR(255),
|
|
|
+ questionnaire_status VARCHAR(255),
|
|
|
+ budget_monthly INT,
|
|
|
+ family_taste_preferences VARCHAR(255),
|
|
|
+ cuisine_style VARCHAR(255),
|
|
|
+ meal_count INT,
|
|
|
+ cooking_ability VARCHAR(255),
|
|
|
+ created_at DATETIME,
|
|
|
+ updated_at DATETIME
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
+
|
|
|
+-- user_rfm_tags
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS user_rfm_tags (
|
|
|
+ id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
+ user_id BIGINT,
|
|
|
+ r_score INT,
|
|
|
+ f_score INT,
|
|
|
+ m_score INT,
|
|
|
+ rfm_tier VARCHAR(255),
|
|
|
+ total_orders INT,
|
|
|
+ total_amount DECIMAL(10,2),
|
|
|
+ last_order_at DATETIME,
|
|
|
+ updated_at DATETIME
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
+
|
|
|
+-- user_trigger_rules
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS user_trigger_rules (
|
|
|
+ user_id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
+ action_config VARCHAR(255),
|
|
|
+ last_triggered_at DATETIME
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
+
|
|
|
+-- water_record
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS water_record (
|
|
|
+ id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
+ member_id BIGINT,
|
|
|
+ checkin_id BIGINT,
|
|
|
+ amount_ml INT,
|
|
|
+ water_type VARCHAR(255),
|
|
|
+ drunk_at DATETIME,
|
|
|
+ created_at DATETIME
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|