-- ============================================================================
-- 情绪博物馆数据库完整部署脚本
-- 版本: v3.0 Final (雪花算法主键版本) - 开发版本
-- 创建时间: 2025-07-13
-- 数据库类型: MySQL 8.0+
-- 说明: 包含完整表结构、索引、初始数据的一体化部署脚本
-- 主键类型: VARCHAR(36) 使用雪花算法生成，避免前端精度丢失问题
-- 关联策略: 不使用外键约束，通过代码中的ID字段关联
-- 特性: 开发阶段 - 先删除表再重新创建，确保表结构是最新的
-- 警告: 此脚本会删除现有表和数据，仅适用于开发环境！
-- ============================================================================
-- 设置SQL模式和字符集
SET
    SQL_MODE = 'NO_AUTO_VALUE_ON_ZERO';

SET
    AUTOCOMMIT = 0;

START TRANSACTION;

SET
    time_zone = "+00:00";

-- 创建数据库
CREATE DATABASE IF NOT EXISTS emotion_museum DEFAULT CHARACTER
    SET
    utf8mb4 COLLATE utf8mb4_unicode_ci;

USE emotion_museum;

-- ============================================================================
-- 数据库设计原则
-- ============================================================================
-- 1. 主键策略: 使用VARCHAR(36)雪花算法ID，避免前端精度丢失
-- 2. 关联策略: 不使用外键约束，通过代码中的ID字段维护关联关系
-- 3. 公共字段: 所有表继承BaseEntity的公共字段
-- 4. 索引优化: 为查询频繁的字段创建合适的索引
-- 5. 字符集: 统一使用utf8mb4支持emoji和特殊字符
-- ============================================================================
-- ============================================================================
-- 1. 用户表 (user)
-- ============================================================================
DROP TABLE IF EXISTS t_user;
CREATE TABLE t_user (
                      id VARCHAR(64) PRIMARY KEY COMMENT 'UUID主键', -- UUID主键
                      account VARCHAR(50)  UNIQUE COMMENT '账号', -- 账号
                      password VARCHAR(255) COMMENT '密码(加密后)', -- 密码(加密后)
                      username VARCHAR(50)  UNIQUE COMMENT '用户名', -- 用户名
                      email VARCHAR(100)  UNIQUE COMMENT '邮箱', -- 邮箱
                      phone VARCHAR(20) UNIQUE COMMENT '手机号', -- 手机号
                      avatar VARCHAR(500) COMMENT '头像URL', -- 头像URL
                      nickname VARCHAR(50) COMMENT '昵称', -- 昵称
                      birth_date DATE COMMENT '生日', -- 生日
                      location VARCHAR(100) COMMENT '所在地', -- 所在地
                      bio TEXT COMMENT '个人简介', -- 个人简介
                      member_level VARCHAR(20)  DEFAULT 'free' COMMENT '会员等级', -- 会员等级
                      total_days INT  DEFAULT 0 COMMENT '使用天数', -- 使用天数
    -- 成长数据
                      self_awareness DECIMAL(5, 2)  DEFAULT 50.00 COMMENT '自我感知', -- 自我感知
                      emotional_resilience DECIMAL(5, 2)  DEFAULT 50.00 COMMENT '情绪韧性', -- 情绪韧性
                      action_power DECIMAL(5, 2)  DEFAULT 50.00 COMMENT '行动力', -- 行动力
                      empathy DECIMAL(5, 2)  DEFAULT 50.00 COMMENT '共情力', -- 共情力
                      life_enthusiasm DECIMAL(5, 2)  DEFAULT 50.00 COMMENT '生活热度', -- 生活热度
    -- 状态字段
                      status TINYINT  DEFAULT 1 COMMENT '状态: 0-禁用, 1-正常', -- 状态: 0-禁用, 1-正常
                      is_verified TINYINT  DEFAULT 0 COMMENT '是否已验证: 0-未验证, 1-已验证', -- 是否已验证: 0-未验证, 1-已验证
                      last_active_time DATETIME  DEFAULT CURRENT_TIMESTAMP COMMENT '最后活跃时间', -- 最后活跃时间
    -- 第三方登录字段
                      third_party_id VARCHAR(128) COMMENT '第三方平台ID', -- 第三方平台ID
                      third_party_type VARCHAR(32) COMMENT '第三方平台类型: wechat, qq, wechat-mp', -- 第三方平台类型: wechat, qq, wechat-mp
    -- 公共字段
                      create_by VARCHAR(64) COMMENT '创建人ID', -- 创建人ID
                      create_time DATETIME  DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', -- 创建时间
                      update_by VARCHAR(64) COMMENT '更新人ID', -- 更新人ID
                      update_time DATETIME  DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', -- 更新时间
                      is_deleted TINYINT  DEFAULT 0 COMMENT '是否删除: 0-未删除, 1-已删除', -- 是否删除: 0-未删除, 1-已删除
                      remarks VARCHAR(500) COMMENT '备注' -- 备注
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '用户表 (t_user)';

-- ============================================================================
-- 2. 对话表 (t_conversation)
-- 关联说明: user_id 关联 t_user.id，通过代码逻辑维护关联关系
-- ============================================================================
DROP TABLE IF EXISTS t_conversation;
CREATE TABLE t_conversation (
                              id VARCHAR(64) PRIMARY KEY COMMENT 'UUID主键', -- UUID主键
                              user_id VARCHAR(64) COMMENT '用户ID (关联t_user.id)', -- 用户ID (关联t_user.id)
                              user_type VARCHAR(20)  DEFAULT 'registered' COMMENT '用户类型: registered-注册用户, guest-访客用户', -- 用户类型: registered-注册用户, guest-访客用户
                              title VARCHAR(200) COMMENT '对话标题', -- 对话标题
                              type VARCHAR(50)  DEFAULT 'emotion_chat' COMMENT '对话类型', -- 对话类型
                              status VARCHAR(20)  DEFAULT 'active' COMMENT '状态: active-活跃, ended-结束, archived-归档', -- 状态: active-活跃, ended-结束, archived-归档
                              coze_conversation_id VARCHAR(100) COMMENT 'Coze对话ID', -- Coze对话ID
                              bot_id VARCHAR(50) COMMENT '使用的Bot ID', -- 使用的Bot ID
                              workflow_id VARCHAR(50) COMMENT '使用的Workflow ID', -- 使用的Workflow ID
                              initial_message TEXT COMMENT '初始消息', -- 初始消息
                              context TEXT COMMENT '上下文信息', -- 上下文信息
                              primary_emotion VARCHAR(50) COMMENT '主要情绪', -- 主要情绪
                              emotion_intensity DECIMAL(3, 2) COMMENT '情绪强度', -- 情绪强度
                              emotion_trend VARCHAR(50) COMMENT '情绪趋势', -- 情绪趋势
                              keywords JSON COMMENT '关键词', -- 关键词
                              ai_insights TEXT COMMENT 'AI洞察', -- AI洞察
                              confidence DECIMAL(3, 2) COMMENT '分析置信度', -- 分析置信度
                              start_time DATETIME COMMENT '开始时间', -- 开始时间
                              end_time DATETIME COMMENT '结束时间', -- 结束时间
                              last_active_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '最后活跃时间', -- 最后活跃时间
                              message_count INT  DEFAULT 0 COMMENT '消息数量', -- 消息数量
                              total_tokens INT DEFAULT 0 COMMENT '总Token使用量', -- 总Token使用量
                              total_cost DECIMAL(10, 4) DEFAULT 0.0000 COMMENT '总费用', -- 总费用
                              client_ip VARCHAR(45) COMMENT '客户端IP地址 (支持IPv6)', -- 客户端IP地址 (支持IPv6)
                              user_agent TEXT COMMENT '用户代理信息', -- 用户代理信息
                              summary TEXT COMMENT '对话摘要', -- 对话摘要
                              tags JSON COMMENT '标签', -- 标签
                              metadata JSON COMMENT '扩展元数据', -- 扩展元数据
    -- 公共字段
                              create_by VARCHAR(64) COMMENT '创建人ID', -- 创建人ID
                              create_time DATETIME  DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', -- 创建时间
                              update_by VARCHAR(64) COMMENT '更新人ID', -- 更新人ID
                              update_time DATETIME  DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', -- 更新时间
                              is_deleted TINYINT  DEFAULT 0 COMMENT '是否删除: 0-未删除, 1-已删除', -- 是否删除: 0-未删除, 1-已删除
                              remarks VARCHAR(500) COMMENT '备注' -- 备注
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '对话表 (t_conversation)';

-- ============================================================================
-- 3. 消息表 (t_message)
-- 关联说明: conversation_id 关联 t_conversation.id，通过代码逻辑维护关联关系
-- ============================================================================
DROP TABLE IF EXISTS t_message;
CREATE TABLE t_message (
                         id VARCHAR(64) PRIMARY KEY COMMENT 'UUID主键', -- UUID主键
                         conversation_id VARCHAR(64) COMMENT '对话ID (关联t_conversation.id)', -- 对话ID (关联t_conversation.id)
                         content TEXT COMMENT '消息内容', -- 消息内容
                         message_order BIGINT COMMENT '消息顺序',
                         type VARCHAR(50)  DEFAULT 'text' COMMENT '消息类型', -- 消息类型
                         sender VARCHAR(20) COMMENT '发送者: user-用户, assistant-AI助手', -- 发送者: user-用户, assistant-AI助手
                         timestamp DATETIME  DEFAULT CURRENT_TIMESTAMP COMMENT '消息时间戳', -- 消息时间戳
                         coze_chat_id VARCHAR(50) COMMENT 'Coze平台的聊天ID', -- Coze平台的聊天ID
                         coze_message_id VARCHAR(50) COMMENT 'Coze平台的消息ID', -- Coze平台的消息ID
                         status VARCHAR(20) DEFAULT 'sent' COMMENT '消息状态: sending/sent/failed/processing', -- 消息状态: sending/sent/failed/processing
                         error_message TEXT COMMENT '错误信息', -- 错误信息
                         emotion_score DECIMAL(3, 2) COMMENT '情绪评分', -- 情绪评分
                         emotion_type VARCHAR(50) COMMENT '情绪类型', -- 情绪类型
                         emotion_confidence DECIMAL(3, 2) COMMENT '情绪分析置信度', -- 情绪分析置信度
                         prompt_tokens INT DEFAULT 0 COMMENT '输入Token数', -- 输入Token数
                         completion_tokens INT DEFAULT 0 COMMENT '输出Token数', -- 输出Token数
                         total_tokens INT DEFAULT 0 COMMENT '总Token数', -- 总Token数
                         api_cost DECIMAL(10, 6) DEFAULT 0.000000 COMMENT 'API调用费用', -- API调用费用
                         is_read TINYINT  DEFAULT 0 COMMENT '是否已读: 0-未读, 1-已读', -- 是否已读: 0-未读, 1-已读
                         parent_message_id VARCHAR(64) COMMENT '父消息ID（用于回复链）', -- 父消息ID（用于回复链）
                         emotion_analysis JSON COMMENT '情绪分析结果', -- 情绪分析结果
                         metadata JSON COMMENT '扩展元数据', -- 扩展元数据
                         user_id VARCHAR(64) COMMENT '用户ID (注册用户或访客用户)', -- 用户ID (注册用户或访客用户)
                         user_type VARCHAR(20) COMMENT '用户类型 (registered/guest)', -- 用户类型 (registered/guest)
                         coze_role VARCHAR(20) COMMENT 'Coze消息角色 (user/assistant/system)', -- Coze消息角色 (user/assistant/system)
                         coze_content_type VARCHAR(50) COMMENT 'Coze消息内容类型 (text/image/file等)', -- Coze消息内容类型 (text/image/file等)
    -- 公共字段
                         create_by VARCHAR(64) COMMENT '创建人ID', -- 创建人ID
                         create_time DATETIME  DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', -- 创建时间
                         update_by VARCHAR(64) COMMENT '更新人ID', -- 更新人ID
                         update_time DATETIME  DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', -- 更新时间
                         is_deleted TINYINT  DEFAULT 0 COMMENT '是否删除: 0-未删除, 1-已删除', -- 是否删除: 0-未删除, 1-已删除
                         remarks VARCHAR(500) COMMENT '备注' -- 备注
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '消息表 (t_message)';

-- ============================================================================
-- 4. Coze API调用记录表 (coze_api_call) - 优化版本
-- ============================================================================
DROP TABLE IF EXISTS t_coze_api_call;
CREATE TABLE t_coze_api_call (
                               id VARCHAR(64) PRIMARY KEY COMMENT 'UUID主键', -- UUID主键
                               conversation_id VARCHAR(64) COMMENT '对话ID', -- 对话ID
                               message_id VARCHAR(64) COMMENT '消息ID', -- 消息ID
    -- Coze API 信息
                               coze_chat_id VARCHAR(50) COMMENT 'Coze聊天ID', -- Coze聊天ID
                               coze_conversation_id VARCHAR(50) COMMENT 'Coze对话ID', -- Coze对话ID
                               bot_id VARCHAR(50) COMMENT 'Bot ID', -- Bot ID
                               workflow_id VARCHAR(50) COMMENT 'Workflow ID', -- Workflow ID
                               user_id VARCHAR(64) COMMENT '用户ID', -- 用户ID
    -- 请求信息
                               request_type VARCHAR(20) COMMENT '请求类型: chat/stream/retrieve/messages', -- 请求类型: chat/stream/retrieve/messages
                               request_url VARCHAR(500) COMMENT '请求URL', -- 请求URL
                               request_body JSON COMMENT '请求体', -- 请求体
                               request_headers JSON COMMENT '请求头', -- 请求头
    -- 用户消息内容
                               user_message TEXT COMMENT '用户输入的消息内容', -- 用户输入的消息内容
                               user_message_type VARCHAR(20) DEFAULT 'text' COMMENT '用户消息类型: text/image/file', -- 用户消息类型: text/image/file
    -- AI回复内容
                               ai_reply TEXT COMMENT 'AI回复的消息内容', -- AI回复的消息内容
                               ai_reply_type VARCHAR(20) DEFAULT 'text' COMMENT 'AI回复类型: text/image/file', -- AI回复类型: text/image/file
    -- 响应信息
                               response_status INT COMMENT 'HTTP状态码', -- HTTP状态码
                               response_body JSON COMMENT '响应体', -- 响应体
                               response_headers JSON COMMENT '响应头', -- 响应头
    -- 轮询信息
                               poll_count INT DEFAULT 0 COMMENT '轮询次数', -- 轮询次数
                               poll_start_time DATETIME COMMENT '轮询开始时间', -- 轮询开始时间
                               poll_end_time DATETIME COMMENT '轮询结束时间', -- 轮询结束时间
                               final_status VARCHAR(20) COMMENT '最终状态: completed/failed/timeout', -- 最终状态: completed/failed/timeout
    -- 状态和时间
                               status VARCHAR(20) COMMENT '调用状态: pending/success/failed/timeout', -- 调用状态: pending/success/failed/timeout
                               start_time DATETIME COMMENT '开始时间', -- 开始时间
                               end_time DATETIME COMMENT '结束时间', -- 结束时间
                               duration_ms INT COMMENT '耗时（毫秒）', -- 耗时（毫秒）
    -- 使用统计
                               prompt_tokens INT DEFAULT 0 COMMENT '输入Token数', -- 输入Token数
                               completion_tokens INT DEFAULT 0 COMMENT '输出Token数', -- 输出Token数
                               total_tokens INT DEFAULT 0 COMMENT '总Token数', -- 总Token数
                               cost DECIMAL(10, 6) DEFAULT 0.000000 COMMENT '费用', -- 费用
    -- 功能调用信息
                               function_calls JSON COMMENT '函数调用记录', -- 函数调用记录
                               function_results JSON COMMENT '函数调用结果', -- 函数调用结果
    -- 错误信息
                               error_code VARCHAR(50) COMMENT '错误代码', -- 错误代码
                               error_message TEXT COMMENT '错误信息', -- 错误信息
    -- 扩展信息
                               client_ip VARCHAR(45) COMMENT '客户端IP', -- 客户端IP
                               user_agent TEXT COMMENT '用户代理', -- 用户代理
                               session_id VARCHAR(100) COMMENT '会话ID', -- 会话ID
                               trace_id VARCHAR(100) COMMENT '追踪ID', -- 追踪ID
                               metadata JSON COMMENT '扩展元数据', -- 扩展元数据
    -- 公共字段
                               create_by VARCHAR(64) COMMENT '创建人ID', -- 创建人ID
                               create_time DATETIME  DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', -- 创建时间
                               update_by VARCHAR(64) COMMENT '更新人ID', -- 更新人ID
                               update_time DATETIME  DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', -- 更新时间
                               is_deleted TINYINT  DEFAULT 0 COMMENT '是否删除: 0-未删除, 1-已删除', -- 是否删除: 0-未删除, 1-已删除
                               remarks VARCHAR(500) COMMENT '备注' -- 备注
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'Coze API调用记录表 - 完整版本 (t_coze_api_call)';

-- ============================================================================
-- 5. 情绪分析表 (emotion_analysis)
-- ============================================================================
DROP TABLE IF EXISTS t_emotion_analysis;
CREATE TABLE t_emotion_analysis (
                                  id VARCHAR(64) PRIMARY KEY COMMENT 'UUID主键', -- UUID主键
                                  user_id VARCHAR(64) COMMENT '用户ID', -- 用户ID
                                  message_id VARCHAR(64) COMMENT '关联消息ID', -- 关联消息ID
                                  text TEXT COMMENT '分析文本', -- 分析文本
                                  primary_emotion VARCHAR(50) COMMENT '主要情绪', -- 主要情绪
                                  intensity DECIMAL(3, 2) COMMENT '情绪强度', -- 情绪强度
                                  polarity VARCHAR(20) COMMENT '情绪极性: positive-积极, negative-消极, neutral-中性', -- 情绪极性: positive-积极, negative-消极, neutral-中性
                                  confidence DECIMAL(3, 2) COMMENT '置信度', -- 置信度
                                  emotions JSON COMMENT '情绪分布详情', -- 情绪分布详情
                                  keywords JSON COMMENT '关键词列表', -- 关键词列表
                                  suggestion TEXT COMMENT '建议', -- 建议
                                  analysis_time DATETIME  DEFAULT CURRENT_TIMESTAMP COMMENT '分析时间', -- 分析时间
                                  metadata JSON COMMENT '扩展元数据', -- 扩展元数据
    -- 公共字段
                                  create_by VARCHAR(64) COMMENT '创建人ID', -- 创建人ID
                                  create_time DATETIME  DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', -- 创建时间
                                  update_by VARCHAR(64) COMMENT '更新人ID', -- 更新人ID
                                  update_time DATETIME  DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', -- 更新时间
                                  is_deleted TINYINT  DEFAULT 0 COMMENT '是否删除: 0-未删除, 1-已删除', -- 是否删除: 0-未删除, 1-已删除
                                  remarks VARCHAR(500) COMMENT '备注' -- 备注
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '情绪分析表 (t_emotion_analysis)';

-- ============================================================================
-- 6. 情绪记录表 (emotion_record)
-- ============================================================================
DROP TABLE IF EXISTS t_emotion_record;
CREATE TABLE t_emotion_record (
                                id VARCHAR(64) PRIMARY KEY COMMENT 'UUID主键', -- UUID主键
                                user_id VARCHAR(64) COMMENT '用户ID', -- 用户ID
                                record_date DATE COMMENT '记录日期', -- 记录日期
                                emotion_type VARCHAR(50) COMMENT '情绪类型', -- 情绪类型
                                intensity DECIMAL(3, 2) COMMENT '情绪强度', -- 情绪强度
                                triggers TEXT COMMENT '触发因素', -- 触发因素
                                description TEXT COMMENT '描述', -- 描述
                                tags JSON COMMENT '标签', -- 标签
                                weather VARCHAR(50) COMMENT '天气', -- 天气
                                location VARCHAR(100) COMMENT '地点', -- 地点
                                activity VARCHAR(100) COMMENT '活动', -- 活动
                                people VARCHAR(200) COMMENT '相关人物', -- 相关人物
                                notes TEXT COMMENT '备注', -- 备注
    -- 公共字段
                                create_by VARCHAR(64) COMMENT '创建人ID', -- 创建人ID
                                create_time DATETIME  DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', -- 创建时间
                                update_by VARCHAR(64) COMMENT '更新人ID', -- 更新人ID
                                update_time DATETIME  DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', -- 更新时间
                                is_deleted TINYINT  DEFAULT 0 COMMENT '是否删除: 0-未删除, 1-已删除', -- 是否删除: 0-未删除, 1-已删除
                                remarks VARCHAR(500) COMMENT '备注' -- 备注
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '情绪记录表 (t_emotion_record)';

-- ============================================================================
-- 7. 成长课题表 (growth_topic)
-- ============================================================================
DROP TABLE IF EXISTS t_growth_topic;
CREATE TABLE t_growth_topic (
                              id VARCHAR(64) PRIMARY KEY COMMENT 'UUID主键', -- UUID主键
                              title VARCHAR(100) COMMENT '课题标题', -- 课题标题
                              category VARCHAR(50) COMMENT '分类', -- 分类
                              difficulty VARCHAR(20) COMMENT '难度: easy-简单, medium-中等, hard-困难', -- 难度: easy-简单, medium-中等, hard-困难
                              description TEXT COMMENT '描述', -- 描述
                              content TEXT COMMENT '内容', -- 内容
                              duration_days INT COMMENT '持续天数', -- 持续天数
                              unlock_conditions JSON COMMENT '解锁条件', -- 解锁条件
                              is_unlocked TINYINT  DEFAULT 1 COMMENT '是否解锁', -- 是否解锁
                              progress DECIMAL(5, 2)  DEFAULT 0.00 COMMENT '进度百分比', -- 进度百分比
                              completed_time DATETIME COMMENT '完成时间', -- 完成时间
                              rewards JSON COMMENT '奖励', -- 奖励
    -- 公共字段
                              create_by VARCHAR(64) COMMENT '创建人ID', -- 创建人ID
                              create_time DATETIME  DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', -- 创建时间
                              update_by VARCHAR(64) COMMENT '更新人ID', -- 更新人ID
                              update_time DATETIME  DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', -- 更新时间
                              is_deleted TINYINT  DEFAULT 0 COMMENT '是否删除: 0-未删除, 1-已删除', -- 是否删除: 0-未删除, 1-已删除
                              remarks VARCHAR(500) COMMENT '备注' -- 备注
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '成长课题表 (t_growth_topic)';

-- ============================================================================
-- 8. 课题互动表 (topic_interaction)
-- ============================================================================
DROP TABLE IF EXISTS t_topic_interaction;
CREATE TABLE t_topic_interaction (
                                   id VARCHAR(64) PRIMARY KEY COMMENT 'UUID主键', -- UUID主键
                                   topic_id VARCHAR(64) COMMENT '课题ID', -- 课题ID
                                   type VARCHAR(50) COMMENT '互动类型', -- 互动类型
                                   content TEXT COMMENT '内容', -- 内容
                                   user_input TEXT COMMENT '用户输入', -- 用户输入
                                   ai_response TEXT COMMENT 'AI回应', -- AI回应
                                   rating INT COMMENT '评分', -- 评分
                                   feedback TEXT COMMENT '反馈', -- 反馈
                                   completed_time DATETIME COMMENT '完成时间', -- 完成时间
    -- 公共字段
                                   create_by VARCHAR(64) COMMENT '创建人ID', -- 创建人ID
                                   create_time DATETIME  DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', -- 创建时间
                                   update_by VARCHAR(64) COMMENT '更新人ID', -- 更新人ID
                                   update_time DATETIME  DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', -- 更新时间
                                   is_deleted TINYINT  DEFAULT 0 COMMENT '是否删除: 0-未删除, 1-已删除', -- 是否删除: 0-未删除, 1-已删除
                                   remarks VARCHAR(500) COMMENT '备注' -- 备注
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '课题互动表 (t_topic_interaction)';

-- ============================================================================
-- 9. 地点标记表 (location_pin)
-- ============================================================================
DROP TABLE IF EXISTS t_location_pin;
CREATE TABLE t_location_pin (
                              id VARCHAR(64) PRIMARY KEY COMMENT 'UUID主键', -- UUID主键
                              name VARCHAR(100) COMMENT '地点名称', -- 地点名称
                              type VARCHAR(50) COMMENT '地点类型', -- 地点类型
                              category VARCHAR(50) COMMENT '地点分类', -- 地点分类
                              latitude DECIMAL(10, 8) COMMENT '纬度', -- 纬度
                              longitude DECIMAL(11, 8) COMMENT '经度', -- 经度
                              address VARCHAR(200) COMMENT '地址', -- 地址
                              description TEXT COMMENT '描述', -- 描述
                              likes INT  DEFAULT 0 COMMENT '点赞数', -- 点赞数
                              visits INT  DEFAULT 0 COMMENT '访问数', -- 访问数
                              is_bookmarked TINYINT  DEFAULT 0 COMMENT '是否收藏', -- 是否收藏
                              last_visit_time DATETIME COMMENT '最后访问时间', -- 最后访问时间
    -- 公共字段
                              create_by VARCHAR(64) COMMENT '创建人ID', -- 创建人ID
                              create_time DATETIME  DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', -- 创建时间
                              update_by VARCHAR(64) COMMENT '更新人ID', -- 更新人ID
                              update_time DATETIME  DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', -- 更新时间
                              is_deleted TINYINT  DEFAULT 0 COMMENT '是否删除: 0-未删除, 1-已删除', -- 是否删除: 0-未删除, 1-已删除
                              remarks VARCHAR(500) COMMENT '备注' -- 备注
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '地点标记表 (t_location_pin)';

-- ============================================================================
-- 10. 社区帖子表 (community_post)
-- ============================================================================
DROP TABLE IF EXISTS t_community_post;
CREATE TABLE t_community_post (
                                id VARCHAR(64) PRIMARY KEY COMMENT 'UUID主键', -- UUID主键
                                user_id VARCHAR(64) COMMENT '用户ID', -- 用户ID
                                location_id VARCHAR(64) COMMENT '地点ID', -- 地点ID
                                title VARCHAR(200) COMMENT '标题', -- 标题
                                content TEXT COMMENT '内容', -- 内容
                                type VARCHAR(50) COMMENT '帖子类型', -- 帖子类型
                                images JSON COMMENT '图片列表', -- 图片列表
                                tags JSON COMMENT '标签', -- 标签
                                likes INT  DEFAULT 0 COMMENT '点赞数', -- 点赞数
                                view_count INT  DEFAULT 0 COMMENT '浏览数', -- 浏览数
                                comment_count INT  DEFAULT 0 COMMENT '评论数', -- 评论数
                                is_private TINYINT  DEFAULT 0 COMMENT '是否私密', -- 是否私密
    -- 公共字段
                                create_by VARCHAR(64) COMMENT '创建人ID', -- 创建人ID
                                create_time DATETIME  DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', -- 创建时间
                                update_by VARCHAR(64) COMMENT '更新人ID', -- 更新人ID
                                update_time DATETIME  DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', -- 更新时间
                                is_deleted TINYINT  DEFAULT 0 COMMENT '是否删除: 0-未删除, 1-已删除', -- 是否删除: 0-未删除, 1-已删除
                                remarks VARCHAR(500) COMMENT '备注' -- 备注
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '社区帖子表 (t_community_post)';

-- ============================================================================
-- 11. 评论表 (comment)
-- ============================================================================
DROP TABLE IF EXISTS t_comment;
CREATE TABLE t_comment (
                         id VARCHAR(64) PRIMARY KEY COMMENT 'UUID主键', -- UUID主键
                         post_id VARCHAR(64) COMMENT '帖子ID', -- 帖子ID
                         user_id VARCHAR(64) COMMENT '用户ID', -- 用户ID
                         content TEXT COMMENT '评论内容', -- 评论内容
                         reply_to_id VARCHAR(64) COMMENT '回复的评论ID', -- 回复的评论ID
                         likes INT  DEFAULT 0 COMMENT '点赞数', -- 点赞数
    -- 公共字段
                         create_by VARCHAR(64) COMMENT '创建人ID', -- 创建人ID
                         create_time DATETIME  DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', -- 创建时间
                         update_by VARCHAR(64) COMMENT '更新人ID', -- 更新人ID
                         update_time DATETIME  DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', -- 更新时间
                         is_deleted TINYINT  DEFAULT 0 COMMENT '是否删除: 0-未删除, 1-已删除', -- 是否删除: 0-未删除, 1-已删除
                         remarks VARCHAR(500) COMMENT '备注' -- 备注
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '评论表 (t_comment)';

-- ============================================================================
-- 12. 成就表 (achievement)
-- ============================================================================
DROP TABLE IF EXISTS t_achievement;
CREATE TABLE t_achievement (
                             id VARCHAR(64) PRIMARY KEY COMMENT 'UUID主键', -- UUID主键
                             title VARCHAR(100) COMMENT '成就标题', -- 成就标题
                             description TEXT COMMENT '描述', -- 描述
                             category VARCHAR(50) COMMENT '分类', -- 分类
                             icon VARCHAR(200) COMMENT '图标', -- 图标
                             rarity VARCHAR(20) COMMENT '稀有度', -- 稀有度
                             condition_type VARCHAR(50) COMMENT '条件类型', -- 条件类型
                             condition_value JSON COMMENT '条件值', -- 条件值
                             rewards JSON COMMENT '奖励', -- 奖励
                             unlocked_time DATETIME COMMENT '解锁时间', -- 解锁时间
                             progress DECIMAL(5, 2)  DEFAULT 0.00 COMMENT '进度', -- 进度
                             is_hidden TINYINT  DEFAULT 0 COMMENT '是否隐藏', -- 是否隐藏
    -- 公共字段
                             create_by VARCHAR(64) COMMENT '创建人ID', -- 创建人ID
                             create_time DATETIME  DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', -- 创建时间
                             update_by VARCHAR(64) COMMENT '更新人ID', -- 更新人ID
                             update_time DATETIME  DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', -- 更新时间
                             is_deleted TINYINT  DEFAULT 0 COMMENT '是否删除: 0-未删除, 1-已删除', -- 是否删除: 0-未删除, 1-已删除
                             remarks VARCHAR(500) COMMENT '备注' -- 备注
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '成就表 (t_achievement)';

-- ============================================================================
-- 13. 奖励表 (reward)
-- ============================================================================
DROP TABLE IF EXISTS t_reward;
CREATE TABLE t_reward (
                        id VARCHAR(64) PRIMARY KEY COMMENT 'UUID主键', -- UUID主键
                        topic_id VARCHAR(64) COMMENT '课题ID', -- 课题ID
                        achievement_id VARCHAR(64) COMMENT '成就ID', -- 成就ID
                        type VARCHAR(50) COMMENT '奖励类型', -- 奖励类型
                        name VARCHAR(100) COMMENT '奖励名称', -- 奖励名称
                        description TEXT COMMENT '描述', -- 描述
                        icon VARCHAR(200) COMMENT '图标', -- 图标
                        rarity VARCHAR(20) COMMENT '稀有度', -- 稀有度
                        value JSON COMMENT '奖励值', -- 奖励值
                        earned_time DATETIME COMMENT '获得时间', -- 获得时间
                        is_new TINYINT  DEFAULT 1 COMMENT '是否新获得', -- 是否新获得
    -- 公共字段
                        create_by VARCHAR(64) COMMENT '创建人ID', -- 创建人ID
                        create_time DATETIME  DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', -- 创建时间
                        update_by VARCHAR(64) COMMENT '更新人ID', -- 更新人ID
                        update_time DATETIME  DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', -- 更新时间
                        is_deleted TINYINT  DEFAULT 0 COMMENT '是否删除: 0-未删除, 1-已删除', -- 是否删除: 0-未删除, 1-已删除
                        remarks VARCHAR(500) COMMENT '备注' -- 备注
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '奖励表 (t_reward)';

-- ============================================================================
-- 14. 用户统计表 (user_stats)
-- ============================================================================
DROP TABLE IF EXISTS t_user_stats;
CREATE TABLE t_user_stats (
                            id VARCHAR(64) PRIMARY KEY COMMENT 'UUID主键', -- UUID主键
                            user_id VARCHAR(64)  UNIQUE COMMENT '用户ID', -- 用户ID
                            total_conversations INT  DEFAULT 0 COMMENT '总对话数', -- 总对话数
                            total_messages INT  DEFAULT 0 COMMENT '总消息数', -- 总消息数
                            total_emotions_recorded INT  DEFAULT 0 COMMENT '总情绪记录数', -- 总情绪记录数
                            topics_completed INT  DEFAULT 0 COMMENT '完成的课题数', -- 完成的课题数
                            achievements_unlocked INT  DEFAULT 0 COMMENT '解锁的成就数', -- 解锁的成就数
                            total_points INT  DEFAULT 0 COMMENT '总积分', -- 总积分
                            consecutive_days INT  DEFAULT 0 COMMENT '连续使用天数', -- 连续使用天数
                            max_consecutive_days INT  DEFAULT 0 COMMENT '最大连续天数', -- 最大连续天数
                            locations_visited INT  DEFAULT 0 COMMENT '访问的地点数', -- 访问的地点数
                            posts_created INT  DEFAULT 0 COMMENT '创建的帖子数', -- 创建的帖子数
                            comments_made INT  DEFAULT 0 COMMENT '评论数', -- 评论数
                            likes_received INT  DEFAULT 0 COMMENT '收到的点赞数', -- 收到的点赞数
                            social_interactions INT  DEFAULT 0 COMMENT '社交互动数', -- 社交互动数
                            -- 日记相关统计
                            diary_posts_created INT  DEFAULT 0 COMMENT '创建的日记数', -- 创建的日记数
                            diary_likes_received INT  DEFAULT 0 COMMENT '日记收到的点赞数', -- 日记收到的点赞数
                            diary_comments_received INT  DEFAULT 0 COMMENT '日记收到的评论数', -- 日记收到的评论数
                            diary_views_received INT  DEFAULT 0 COMMENT '日记收到的浏览数', -- 日记收到的浏览数
                            diary_shares_received INT  DEFAULT 0 COMMENT '日记收到的分享数', -- 日记收到的分享数
                            diary_comments_made INT  DEFAULT 0 COMMENT '发表的日记评论数', -- 发表的日记评论数
                            diary_likes_given INT  DEFAULT 0 COMMENT '给他人日记的点赞数', -- 给他人日记的点赞数
                            featured_diary_count INT  DEFAULT 0 COMMENT '精选日记数量', -- 精选日记数量
                            ai_comments_received INT  DEFAULT 0 COMMENT '收到的AI评论数', -- 收到的AI评论数
    -- 公共字段
                            create_by VARCHAR(64) COMMENT '创建人ID', -- 创建人ID
                            create_time DATETIME  DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', -- 创建时间
                            update_by VARCHAR(64) COMMENT '更新人ID', -- 更新人ID
                            update_time DATETIME  DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', -- 更新时间
                            is_deleted TINYINT  DEFAULT 0 COMMENT '是否删除: 0-未删除, 1-已删除', -- 是否删除: 0-未删除, 1-已删除
                            remarks VARCHAR(500) COMMENT '备注' -- 备注
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '用户统计表 (t_user_stats)';

-- ============================================================================
-- 16. 用户日记表 (t_diary_post) - 类似朋友圈功能
-- 关联说明: user_id 关联 t_user.id，通过代码逻辑维护关联关系
-- ============================================================================
DROP TABLE IF EXISTS t_diary_post;
CREATE TABLE t_diary_post (
                            id VARCHAR(64) PRIMARY KEY COMMENT 'UUID主键', -- UUID主键
                            user_id VARCHAR(64) COMMENT '用户ID (关联t_user.id)', -- 用户ID (关联t_user.id)
                            title VARCHAR(200) COMMENT '日记标题', -- 日记标题
                            content TEXT COMMENT '日记内容', -- 日记内容
                            images JSON COMMENT '图片列表 (存储图片URL数组)', -- 图片列表 (存储图片URL数组)
                            videos JSON COMMENT '视频列表 (存储视频URL数组)', -- 视频列表 (存储视频URL数组)
                            location VARCHAR(200) COMMENT '发布地点', -- 发布地点
                            latitude DECIMAL(10, 8) COMMENT '纬度', -- 纬度
                            longitude DECIMAL(11, 8) COMMENT '经度', -- 经度
                            weather VARCHAR(50) COMMENT '天气信息', -- 天气信息
                            mood VARCHAR(50) COMMENT '心情状态', -- 心情状态
                            mood_score DECIMAL(3, 2) COMMENT '心情评分 (0-10)', -- 心情评分 (0-10)
                            tags JSON COMMENT '标签列表', -- 标签列表
                            is_public TINYINT  DEFAULT 1 COMMENT '是否公开: 0-仅自己可见, 1-公开', -- 是否公开: 0-仅自己可见, 1-公开
                            is_anonymous TINYINT  DEFAULT 0 COMMENT '是否匿名发布: 0-实名, 1-匿名', -- 是否匿名发布: 0-实名, 1-匿名
                            view_count INT  DEFAULT 0 COMMENT '浏览数', -- 浏览数
                            like_count INT  DEFAULT 0 COMMENT '点赞数', -- 点赞数
                            comment_count INT  DEFAULT 0 COMMENT '评论数', -- 评论数
                            share_count INT  DEFAULT 0 COMMENT '分享数', -- 分享数
                            ai_comment TEXT COMMENT 'AI评论内容', -- AI评论内容
                            ai_comment_time DATETIME COMMENT 'AI评论时间', -- AI评论时间
                            ai_emotion_analysis JSON COMMENT 'AI情绪分析结果', -- AI情绪分析结果
                            ai_sentiment_score DECIMAL(3, 2) COMMENT 'AI情感评分 (-1到1)', -- AI情感评分 (-1到1)
                            ai_keywords JSON COMMENT 'AI提取的关键词', -- AI提取的关键词
                            ai_suggestions TEXT COMMENT 'AI建议', -- AI建议
                            publish_time DATETIME  DEFAULT CURRENT_TIMESTAMP COMMENT '发布时间', -- 发布时间
                            last_comment_time DATETIME COMMENT '最后评论时间', -- 最后评论时间
                            status VARCHAR(20)  DEFAULT 'published' COMMENT '状态: draft-草稿, published-已发布, hidden-隐藏, deleted-已删除', -- 状态: draft-草稿, published-已发布, hidden-隐藏, deleted-已删除
                            priority INT  DEFAULT 0 COMMENT '优先级 (用于置顶功能)', -- 优先级 (用于置顶功能)
                            featured TINYINT  DEFAULT 0 COMMENT '是否精选: 0-普通, 1-精选', -- 是否精选: 0-普通, 1-精选
                            metadata JSON COMMENT '扩展元数据', -- 扩展元数据
    -- 公共字段
                            create_by VARCHAR(64) COMMENT '创建人ID', -- 创建人ID
                            create_time DATETIME  DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', -- 创建时间
                            update_by VARCHAR(64) COMMENT '更新人ID', -- 更新人ID
                            update_time DATETIME  DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', -- 更新时间
                            is_deleted TINYINT  DEFAULT 0 COMMENT '是否删除: 0-未删除, 1-已删除', -- 是否删除: 0-未删除, 1-已删除
                            remarks VARCHAR(500) COMMENT '备注' -- 备注
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '用户日记表 - 类似朋友圈功能 (t_diary_post)';

-- ============================================================================
-- 17. 日记评论表 (t_diary_comment)
-- 关联说明: diary_id 关联 t_diary_post.id，user_id 关联 t_user.id，通过代码逻辑维护关联关系
-- ============================================================================
DROP TABLE IF EXISTS t_diary_comment;
CREATE TABLE t_diary_comment (
                               id VARCHAR(64) PRIMARY KEY COMMENT 'UUID主键', -- UUID主键
                               diary_id VARCHAR(64) COMMENT '日记ID (关联t_diary_post.id)', -- 日记ID (关联t_diary_post.id)
                               user_id VARCHAR(64) COMMENT '评论用户ID (关联t_user.id)', -- 评论用户ID (关联t_user.id)
                               parent_comment_id VARCHAR(64) COMMENT '父评论ID (用于回复功能)', -- 父评论ID (用于回复功能)
                               content TEXT COMMENT '评论内容', -- 评论内容
                               images JSON COMMENT '评论图片 (存储图片URL数组)', -- 评论图片 (存储图片URL数组)
                               comment_type VARCHAR(20)  DEFAULT 'user' COMMENT '评论类型: user-用户评论, ai-AI评论, system-系统评论', -- 评论类型: user-用户评论, ai-AI评论, system-系统评论
                               ai_comment_source VARCHAR(50) COMMENT 'AI评论来源 (如: emotion_analysis, sentiment_analysis)', -- AI评论来源 (如: emotion_analysis, sentiment_analysis)
                               like_count INT  DEFAULT 0 COMMENT '点赞数', -- 点赞数
                               reply_count INT  DEFAULT 0 COMMENT '回复数', -- 回复数
                               is_anonymous TINYINT  DEFAULT 0 COMMENT '是否匿名评论: 0-实名, 1-匿名', -- 是否匿名评论: 0-实名, 1-匿名
                               is_top TINYINT  DEFAULT 0 COMMENT '是否置顶: 0-普通, 1-置顶', -- 是否置顶: 0-普通, 1-置顶
                               status VARCHAR(20)  DEFAULT 'published' COMMENT '状态: published-已发布, hidden-隐藏, deleted-已删除', -- 状态: published-已发布, hidden-隐藏, deleted-已删除
                               publish_time DATETIME  DEFAULT CURRENT_TIMESTAMP COMMENT '发布时间', -- 发布时间
                               last_reply_time DATETIME COMMENT '最后回复时间', -- 最后回复时间
                               emotion_score DECIMAL(3, 2) COMMENT '情绪评分', -- 情绪评分
                               sentiment_score DECIMAL(3, 2) COMMENT '情感评分', -- 情感评分
                               metadata JSON COMMENT '扩展元数据', -- 扩展元数据
    -- 公共字段
                               create_by VARCHAR(64) COMMENT '创建人ID', -- 创建人ID
                               create_time DATETIME  DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', -- 创建时间
                               update_by VARCHAR(64) COMMENT '更新人ID', -- 更新人ID
                               update_time DATETIME  DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', -- 更新时间
                               is_deleted TINYINT  DEFAULT 0 COMMENT '是否删除: 0-未删除, 1-已删除', -- 是否删除: 0-未删除, 1-已删除
                               remarks VARCHAR(500) COMMENT '备注' -- 备注
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '日记评论表 (t_diary_comment)';

-- ============================================================================
-- 18. 访客用户表 (guest_user)
-- ============================================================================
DROP TABLE IF EXISTS t_guest_user;
CREATE TABLE t_guest_user (
                            id VARCHAR(64) PRIMARY KEY COMMENT 'UUID主键', -- UUID主键
                            guest_user_id VARCHAR(50)  UNIQUE COMMENT '访客用户ID (格式: guest_xxx)', -- 访客用户ID (格式: guest_xxx)
                            ip_address VARCHAR(45) COMMENT '客户端IP地址 (支持IPv6)', -- 客户端IP地址 (支持IPv6)
                            user_agent TEXT COMMENT '用户代理信息', -- 用户代理信息
                            nickname VARCHAR(50) COMMENT '访客昵称', -- 访客昵称
                            avatar VARCHAR(500) COMMENT '访客头像', -- 访客头像
                            last_active_time DATETIME  DEFAULT CURRENT_TIMESTAMP COMMENT '最后活跃时间', -- 最后活跃时间
                            conversation_count INT  DEFAULT 0 COMMENT '会话数量', -- 会话数量
                            message_count INT  DEFAULT 0 COMMENT '消息数量', -- 消息数量
                            location VARCHAR(100) COMMENT 'IP地址的地理位置信息', -- IP地址的地理位置信息
                            device_info VARCHAR(200) COMMENT '设备信息', -- 设备信息
    -- 公共字段
                            create_by VARCHAR(64) COMMENT '创建人ID', -- 创建人ID
                            create_time DATETIME  DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', -- 创建时间
                            update_by VARCHAR(64) COMMENT '更新人ID', -- 更新人ID
                            update_time DATETIME  DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', -- 更新时间
                            is_deleted TINYINT  DEFAULT 0 COMMENT '是否删除: 0-未删除, 1-已删除', -- 是否删除: 0-未删除, 1-已删除
                            remarks VARCHAR(500) COMMENT '备注' -- 备注
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '访客用户表 (t_guest_user)';

-- ============================================================================
-- 创建索引以提高查询性能
-- 注意: MySQL的CREATE INDEX不支持IF NOT EXISTS
-- 如果索引已存在，重复执行会产生警告但不会中断脚本执行
-- ============================================================================
-- t_user表索引
CREATE INDEX idx_user_account ON t_user (account);
CREATE INDEX idx_user_username ON t_user (username);
CREATE INDEX idx_user_email ON t_user (email);
CREATE INDEX idx_user_phone ON t_user (phone);
CREATE INDEX idx_user_last_active_time ON t_user (last_active_time);
CREATE INDEX idx_user_create_time ON t_user (create_time);
CREATE INDEX idx_user_member_level ON t_user (member_level);
CREATE INDEX idx_user_status ON t_user (status);
CREATE INDEX idx_user_is_verified ON t_user (is_verified);
CREATE INDEX idx_user_create_by ON t_user (create_by);
CREATE INDEX idx_user_update_by ON t_user (update_by);
CREATE INDEX idx_user_is_deleted ON t_user (is_deleted);
CREATE INDEX idx_user_third_party_id ON t_user (third_party_id);
CREATE INDEX idx_user_third_party_type ON t_user (third_party_type);

-- t_conversation表索引
CREATE INDEX idx_conversation_user_id ON t_conversation (user_id);
CREATE INDEX idx_conversation_start_time ON t_conversation (start_time);
CREATE INDEX idx_conversation_user_id_start_time ON t_conversation (user_id, start_time);
CREATE INDEX idx_conversation_primary_emotion ON t_conversation (primary_emotion);
CREATE INDEX idx_conversation_end_time ON t_conversation (end_time);
CREATE INDEX idx_conversation_create_time ON t_conversation (create_time);
CREATE INDEX idx_conversation_coze_conversation_id ON t_conversation (coze_conversation_id);
CREATE INDEX idx_conversation_status ON t_conversation (status);
CREATE INDEX idx_conversation_last_active_time ON t_conversation (last_active_time);
CREATE INDEX idx_conversation_create_by ON t_conversation (create_by);
CREATE INDEX idx_conversation_update_by ON t_conversation (update_by);
CREATE INDEX idx_conversation_is_deleted ON t_conversation (is_deleted);
CREATE INDEX idx_conversation_user_type ON t_conversation (user_type);
CREATE INDEX idx_conversation_emotion_trend ON t_conversation (emotion_trend);
CREATE INDEX idx_conversation_confidence ON t_conversation (confidence);
CREATE INDEX idx_conversation_client_ip ON t_conversation (client_ip);

-- t_message表索引
CREATE INDEX idx_message_conversation_id ON t_message (conversation_id);
CREATE INDEX idx_message_timestamp ON t_message (timestamp);
CREATE INDEX idx_message_conversation_id_timestamp ON t_message (conversation_id, timestamp);
CREATE INDEX idx_message_sender ON t_message (sender);
CREATE INDEX idx_message_type ON t_message (type);
CREATE INDEX idx_message_is_read ON t_message (is_read);
CREATE INDEX idx_message_create_time ON t_message (create_time);
CREATE INDEX idx_message_coze_chat_id ON t_message (coze_chat_id);
CREATE INDEX idx_message_status ON t_message (status);
CREATE INDEX idx_message_parent_message_id ON t_message (parent_message_id);
CREATE INDEX idx_message_create_by ON t_message (create_by);
CREATE INDEX idx_message_update_by ON t_message (update_by);
CREATE INDEX idx_message_is_deleted ON t_message (is_deleted);

-- t_coze_api_call表索引
CREATE INDEX idx_coze_api_call_conversation_id ON t_coze_api_call (conversation_id);
CREATE INDEX idx_coze_api_call_message_id ON t_coze_api_call (message_id);
CREATE INDEX idx_coze_api_call_coze_chat_id ON t_coze_api_call (coze_chat_id);
CREATE INDEX idx_coze_api_call_bot_id ON t_coze_api_call (bot_id);
CREATE INDEX idx_coze_api_call_user_id ON t_coze_api_call (user_id);
CREATE INDEX idx_coze_api_call_status ON t_coze_api_call (status);
CREATE INDEX idx_coze_api_call_final_status ON t_coze_api_call (final_status);
CREATE INDEX idx_coze_api_call_start_time ON t_coze_api_call (start_time);
CREATE INDEX idx_coze_api_call_request_type ON t_coze_api_call (request_type);
CREATE INDEX idx_coze_api_call_client_ip ON t_coze_api_call (client_ip);
CREATE INDEX idx_coze_api_call_session_id ON t_coze_api_call (session_id);
CREATE INDEX idx_coze_api_call_trace_id ON t_coze_api_call (trace_id);
CREATE INDEX idx_coze_api_call_user_status ON t_coze_api_call (user_id, status);
CREATE INDEX idx_coze_api_call_conversation_time ON t_coze_api_call (conversation_id, start_time);

-- t_emotion_analysis表索引
CREATE INDEX idx_emotion_analysis_user_id ON t_emotion_analysis (user_id);
CREATE INDEX idx_emotion_analysis_message_id ON t_emotion_analysis (message_id);
CREATE INDEX idx_emotion_analysis_primary_emotion ON t_emotion_analysis (primary_emotion);
CREATE INDEX idx_emotion_analysis_analysis_time ON t_emotion_analysis (analysis_time);
CREATE INDEX idx_emotion_analysis_create_time ON t_emotion_analysis (create_time);
CREATE INDEX idx_emotion_analysis_create_by ON t_emotion_analysis (create_by);
CREATE INDEX idx_emotion_analysis_update_by ON t_emotion_analysis (update_by);
CREATE INDEX idx_emotion_analysis_is_deleted ON t_emotion_analysis (is_deleted);

-- t_emotion_record表索引
CREATE INDEX idx_emotion_record_user_id ON t_emotion_record (user_id);
CREATE INDEX idx_emotion_record_date ON t_emotion_record (record_date);
CREATE INDEX idx_emotion_record_emotion_type ON t_emotion_record (emotion_type);
CREATE INDEX idx_emotion_record_user_id_date ON t_emotion_record (user_id, record_date);
CREATE INDEX idx_emotion_record_user_id_emotion_type ON t_emotion_record (user_id, emotion_type);
CREATE INDEX idx_emotion_record_intensity ON t_emotion_record (intensity);
CREATE INDEX idx_emotion_record_create_time ON t_emotion_record (create_time);
CREATE INDEX idx_emotion_record_create_by ON t_emotion_record (create_by);
CREATE INDEX idx_emotion_record_update_by ON t_emotion_record (update_by);
CREATE INDEX idx_emotion_record_is_deleted ON t_emotion_record (is_deleted);

-- t_growth_topic表索引
CREATE INDEX idx_growth_topic_category ON t_growth_topic (category);
CREATE INDEX idx_growth_topic_difficulty ON t_growth_topic (difficulty);
CREATE INDEX idx_growth_topic_is_unlocked ON t_growth_topic (is_unlocked);
CREATE INDEX idx_growth_topic_progress ON t_growth_topic (progress);
CREATE INDEX idx_growth_topic_completed_time ON t_growth_topic (completed_time);
CREATE INDEX idx_growth_topic_category_difficulty ON t_growth_topic (category, difficulty);
CREATE INDEX idx_growth_topic_create_time ON t_growth_topic (create_time);

-- t_topic_interaction表索引
CREATE INDEX idx_topic_interaction_topic_id ON t_topic_interaction (topic_id);
CREATE INDEX idx_topic_interaction_type ON t_topic_interaction (type);
CREATE INDEX idx_topic_interaction_completed_time ON t_topic_interaction (completed_time);
CREATE INDEX idx_topic_interaction_rating ON t_topic_interaction (rating);
CREATE INDEX idx_topic_interaction_topic_id_type ON t_topic_interaction (topic_id, type);
CREATE INDEX idx_topic_interaction_create_time ON t_topic_interaction (create_time);

-- t_location_pin表索引
CREATE INDEX idx_location_pin_latitude_longitude ON t_location_pin (latitude, longitude);
CREATE INDEX idx_location_pin_type ON t_location_pin (type);
CREATE INDEX idx_location_pin_category ON t_location_pin (category);
CREATE INDEX idx_location_pin_create_by ON t_location_pin (create_by);
CREATE INDEX idx_location_pin_likes ON t_location_pin (likes);
CREATE INDEX idx_location_pin_visits ON t_location_pin (visits);
CREATE INDEX idx_location_pin_is_bookmarked ON t_location_pin (is_bookmarked);
CREATE INDEX idx_location_pin_type_category ON t_location_pin (type, category);
CREATE INDEX idx_location_pin_create_time ON t_location_pin (create_time);
CREATE INDEX idx_location_pin_last_visit_time ON t_location_pin (last_visit_time);

-- t_community_post表索引
CREATE INDEX idx_community_post_user_id ON t_community_post (user_id);
CREATE INDEX idx_community_post_location_id ON t_community_post (location_id);
CREATE INDEX idx_community_post_create_time ON t_community_post (create_time);
CREATE INDEX idx_community_post_type ON t_community_post (type);
CREATE INDEX idx_community_post_likes ON t_community_post (likes);
CREATE INDEX idx_community_post_view_count ON t_community_post (view_count);
CREATE INDEX idx_community_post_is_private ON t_community_post (is_private);
CREATE INDEX idx_community_post_user_id_create_time ON t_community_post (user_id, create_time);
CREATE INDEX idx_community_post_type_create_time ON t_community_post (type, create_time);

-- t_comment表索引
CREATE INDEX idx_comment_post_id ON t_comment (post_id);
CREATE INDEX idx_comment_user_id ON t_comment (user_id);
CREATE INDEX idx_comment_reply_to_id ON t_comment (reply_to_id);
CREATE INDEX idx_comment_create_time ON t_comment (create_time);
CREATE INDEX idx_comment_likes ON t_comment (likes);
CREATE INDEX idx_comment_post_id_create_time ON t_comment (post_id, create_time);

-- t_achievement表索引
CREATE INDEX idx_achievement_category ON t_achievement (category);
CREATE INDEX idx_achievement_rarity ON t_achievement (rarity);
CREATE INDEX idx_achievement_unlocked_time ON t_achievement (unlocked_time);
CREATE INDEX idx_achievement_is_hidden ON t_achievement (is_hidden);
CREATE INDEX idx_achievement_progress ON t_achievement (progress);
CREATE INDEX idx_achievement_category_rarity ON t_achievement (category, rarity);
CREATE INDEX idx_achievement_create_time ON t_achievement (create_time);

-- t_reward表索引
CREATE INDEX idx_reward_topic_id ON t_reward (topic_id);
CREATE INDEX idx_reward_achievement_id ON t_reward (achievement_id);
CREATE INDEX idx_reward_type ON t_reward (type);
CREATE INDEX idx_reward_earned_time ON t_reward (earned_time);
CREATE INDEX idx_reward_rarity ON t_reward (rarity);
CREATE INDEX idx_reward_is_new ON t_reward (is_new);
CREATE INDEX idx_reward_type_earned_time ON t_reward (type, earned_time);
CREATE INDEX idx_reward_create_time ON t_reward (create_time);

-- t_user_stats表索引
CREATE INDEX idx_user_stats_user_id ON t_user_stats (user_id);
CREATE INDEX idx_user_stats_total_points ON t_user_stats (total_points);
CREATE INDEX idx_user_stats_consecutive_days ON t_user_stats (consecutive_days);
CREATE INDEX idx_user_stats_max_consecutive_days ON t_user_stats (max_consecutive_days);
CREATE INDEX idx_user_stats_social_interactions ON t_user_stats (social_interactions);
CREATE INDEX idx_user_stats_update_time ON t_user_stats (update_time);
CREATE INDEX idx_user_stats_create_time ON t_user_stats (create_time);

-- t_user_stats表日记相关索引
CREATE INDEX idx_user_stats_diary_posts_created ON t_user_stats (diary_posts_created);
CREATE INDEX idx_user_stats_diary_likes_received ON t_user_stats (diary_likes_received);
CREATE INDEX idx_user_stats_diary_comments_received ON t_user_stats (diary_comments_received);
CREATE INDEX idx_user_stats_diary_views_received ON t_user_stats (diary_views_received);
CREATE INDEX idx_user_stats_featured_diary_count ON t_user_stats (featured_diary_count);
CREATE INDEX idx_user_stats_ai_comments_received ON t_user_stats (ai_comments_received);

-- t_diary_post表索引
CREATE INDEX idx_diary_post_user_id ON t_diary_post (user_id);
CREATE INDEX idx_diary_post_publish_time ON t_diary_post (publish_time);
CREATE INDEX idx_diary_post_last_comment_time ON t_diary_post (last_comment_time);
CREATE INDEX idx_diary_post_status ON t_diary_post (status);
CREATE INDEX idx_diary_post_priority ON t_diary_post (priority);
CREATE INDEX idx_diary_post_featured ON t_diary_post (featured);
CREATE INDEX idx_diary_post_create_time ON t_diary_post (create_time);

-- t_diary_comment表索引
CREATE INDEX idx_diary_comment_diary_id ON t_diary_comment (diary_id);
CREATE INDEX idx_diary_comment_user_id ON t_diary_comment (user_id);
CREATE INDEX idx_diary_comment_parent_comment_id ON t_diary_comment (parent_comment_id);
CREATE INDEX idx_diary_comment_publish_time ON t_diary_comment (publish_time);
CREATE INDEX idx_diary_comment_last_reply_time ON t_diary_comment (last_reply_time);
CREATE INDEX idx_diary_comment_emotion_score ON t_diary_comment (emotion_score);
CREATE INDEX idx_diary_comment_sentiment_score ON t_diary_comment (sentiment_score);
CREATE INDEX idx_diary_comment_create_time ON t_diary_comment (create_time);

-- t_diary_post表复合索引和功能索引
CREATE INDEX idx_diary_post_user_publish ON t_diary_post (user_id, publish_time);
CREATE INDEX idx_diary_post_user_status ON t_diary_post (user_id, status);
CREATE INDEX idx_diary_post_public_publish ON t_diary_post (is_public, publish_time);
CREATE INDEX idx_diary_post_featured_publish ON t_diary_post (featured, publish_time);
CREATE INDEX idx_diary_post_mood_score ON t_diary_post (mood_score);
CREATE INDEX idx_diary_post_ai_sentiment ON t_diary_post (ai_sentiment_score);
CREATE INDEX idx_diary_post_location ON t_diary_post (latitude, longitude);
CREATE INDEX idx_diary_post_like_count ON t_diary_post (like_count);
CREATE INDEX idx_diary_post_comment_count ON t_diary_post (comment_count);
CREATE INDEX idx_diary_post_view_count ON t_diary_post (view_count);
CREATE INDEX idx_diary_post_create_by ON t_diary_post (create_by);
CREATE INDEX idx_diary_post_update_by ON t_diary_post (update_by);
CREATE INDEX idx_diary_post_is_deleted ON t_diary_post (is_deleted);

-- t_diary_comment表复合索引和功能索引
CREATE INDEX idx_diary_comment_diary_publish ON t_diary_comment (diary_id, publish_time);
CREATE INDEX idx_diary_comment_diary_type ON t_diary_comment (diary_id, comment_type);
CREATE INDEX idx_diary_comment_user_publish ON t_diary_comment (user_id, publish_time);
CREATE INDEX idx_diary_comment_parent_publish ON t_diary_comment (parent_comment_id, publish_time);
CREATE INDEX idx_diary_comment_type_publish ON t_diary_comment (comment_type, publish_time);
CREATE INDEX idx_diary_comment_status ON t_diary_comment (status);
CREATE INDEX idx_diary_comment_is_top ON t_diary_comment (is_top);
CREATE INDEX idx_diary_comment_like_count ON t_diary_comment (like_count);
CREATE INDEX idx_diary_comment_reply_count ON t_diary_comment (reply_count);
CREATE INDEX idx_diary_comment_ai_source ON t_diary_comment (ai_comment_source);
CREATE INDEX idx_diary_comment_create_by ON t_diary_comment (create_by);
CREATE INDEX idx_diary_comment_update_by ON t_diary_comment (update_by);
CREATE INDEX idx_diary_comment_is_deleted ON t_diary_comment (is_deleted);

-- t_guest_user表索引
CREATE INDEX idx_guest_user_guest_user_id ON t_guest_user (guest_user_id);
CREATE INDEX idx_guest_user_ip_address ON t_guest_user (ip_address);
CREATE INDEX idx_guest_user_last_active_time ON t_guest_user (last_active_time);
CREATE INDEX idx_guest_user_conversation_count ON t_guest_user (conversation_count);
CREATE INDEX idx_guest_user_message_count ON t_guest_user (message_count);
CREATE INDEX idx_guest_user_create_time ON t_guest_user (create_time);
CREATE INDEX idx_guest_user_create_by ON t_guest_user (create_by);
CREATE INDEX idx_guest_user_update_by ON t_guest_user (update_by);
CREATE INDEX idx_guest_user_is_deleted ON t_guest_user (is_deleted);

-- ============================================================================
-- 18. 管理员用户表 (admin)
-- ============================================================================
DROP TABLE IF EXISTS t_admin;
CREATE TABLE t_admin (
                       id VARCHAR(64) PRIMARY KEY COMMENT 'UUID主键', -- UUID主键
                       account VARCHAR(50) NOT NULL UNIQUE COMMENT '管理员账号', -- 管理员账号
                       password VARCHAR(255) NOT NULL COMMENT '密码(加密后)', -- 密码(加密后)
                       username VARCHAR(50) NOT NULL COMMENT '管理员姓名', -- 管理员姓名
                       email VARCHAR(100) UNIQUE COMMENT '邮箱', -- 邮箱
                       phone VARCHAR(20) UNIQUE COMMENT '手机号', -- 手机号
                       avatar VARCHAR(500) COMMENT '头像URL', -- 头像URL
                       role VARCHAR(20) NOT NULL DEFAULT 'admin' COMMENT '角色: super_admin-超级管理员, admin-管理员, operator-运营', -- 角色: super_admin-超级管理员, admin-管理员, operator-运营
                       permissions JSON COMMENT '权限列表', -- 权限列表
                       status TINYINT NOT NULL DEFAULT 1 COMMENT '状态: 0-禁用, 1-正常', -- 状态: 0-禁用, 1-正常
                       last_login_time DATETIME COMMENT '最后登录时间', -- 最后登录时间
                       last_login_ip VARCHAR(45) COMMENT '最后登录IP (支持IPv6)', -- 最后登录IP (支持IPv6)
                       login_count INT DEFAULT 0 COMMENT '登录次数', -- 登录次数
                       department VARCHAR(50) COMMENT '所属部门', -- 所属部门
                       position VARCHAR(50) COMMENT '职位', -- 职位
    -- 公共字段
                       create_by VARCHAR(64) COMMENT '创建人ID', -- 创建人ID
                       create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', -- 创建时间
                       update_by VARCHAR(64) COMMENT '更新人ID', -- 更新人ID
                       update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', -- 更新时间
                       is_deleted TINYINT NOT NULL DEFAULT 0 COMMENT '是否删除: 0-未删除, 1-已删除', -- 是否删除: 0-未删除, 1-已删除
                       remarks VARCHAR(500) COMMENT '备注' -- 备注
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '管理员用户表 (t_admin)';

-- 管理员表索引
CREATE INDEX idx_admin_account ON t_admin (account);
CREATE INDEX idx_admin_email ON t_admin (email);
CREATE INDEX idx_admin_phone ON t_admin (phone);
CREATE INDEX idx_admin_role ON t_admin (role);
CREATE INDEX idx_admin_status ON t_admin (status);
CREATE INDEX idx_admin_create_time ON t_admin (create_time);
CREATE INDEX idx_admin_update_time ON t_admin (update_time);
CREATE INDEX idx_admin_is_deleted ON t_admin (is_deleted);

-- 初始化管理员数据
-- 默认超级管理员账号: admin, 密码: admin123 (BCrypt加密后)
INSERT INTO t_admin (id, account, password, username, email, phone, avatar, role, permissions, status, login_count, department, position, create_time, update_time, is_deleted)
VALUES (
    REPLACE(UUID(), '-', ''),
    'admin',
    '$2a$10$N.zmdr9k7uOCQb376NoUnuTJ8iAt6Z2EHCYAKMRgAXMqV.N8VXXxu',
    '系统管理员',
    'admin@emotion-museum.com',
    '13800138000',
    NULL,
    'super_admin',
    '["*"]',
    1,
    0,
    '技术部',
    '系统管理员',
    NOW(),
    NOW(),
    0
);

-- ============================================================================
-- 数据库统计信息
-- ============================================================================
SELECT
    COUNT(*) as total_tables
FROM
    INFORMATION_SCHEMA.TABLES
WHERE
    TABLE_SCHEMA = 'emotion'
    AND TABLE_NAME LIKE 't\_%' ESCAPE '\\';

-- 显示创建的表
SELECT
    TABLE_NAME as table_name,
    TABLE_COMMENT as comment,
    ENGINE as engine
FROM
    INFORMATION_SCHEMA.TABLES
WHERE
    TABLE_SCHEMA = 'emotion'
    AND TABLE_NAME LIKE 't\_%' ESCAPE '\\'
ORDER BY
    TABLE_NAME;

-- ============================================================================
-- 19. AI接口配置表 (t_ai_config)
-- 用于存储各种AI接口的调用配置，支持从配置文件迁移到数据库管理
-- ============================================================================
DROP TABLE IF EXISTS t_ai_config;
CREATE TABLE t_ai_config (
    id VARCHAR(64) PRIMARY KEY COMMENT 'UUID主键',
    config_name VARCHAR(100) NOT NULL COMMENT '配置名称',
    config_key VARCHAR(100) NOT NULL UNIQUE COMMENT '配置键值 (唯一标识)',
    config_type VARCHAR(50) NOT NULL DEFAULT 'coze' COMMENT '配置类型: coze-扣子, openai-OpenAI, claude-Claude, gemini-Gemini等',
    provider VARCHAR(50) NOT NULL COMMENT '服务提供商: coze, openai, anthropic, google等',

    -- API基础配置
    api_base_url VARCHAR(500) NOT NULL COMMENT 'API基础URL',
    api_token VARCHAR(1000) NOT NULL COMMENT 'API访问令牌 (加密存储)',
    api_version VARCHAR(20) COMMENT 'API版本',

    -- OAuth认证配置
    client_id VARCHAR(200) COMMENT '客户端ID (OAuth认证)',
    client_secret VARCHAR(500) COMMENT '客户端密钥 (OAuth认证，加密存储)',
    grant_type VARCHAR(50) COMMENT '授权类型: client_credentials, authorization_code, password等',

    -- 模型配置
    model_name VARCHAR(100) COMMENT '模型名称',
    bot_id VARCHAR(100) COMMENT 'Bot ID (Coze专用)',
    workflow_id VARCHAR(100) COMMENT 'Workflow ID (Coze专用)',

    -- 请求配置
    timeout_ms INT DEFAULT 30000 COMMENT '超时时间(毫秒)',
    retry_count INT DEFAULT 3 COMMENT '重试次数',
    retry_delay_ms INT DEFAULT 1000 COMMENT '重试延迟(毫秒)',
    max_tokens INT DEFAULT 4000 COMMENT '最大Token数',
    temperature DECIMAL(3,2) DEFAULT 0.7 COMMENT '温度参数 (0.0-2.0)',
    top_p DECIMAL(3,2) DEFAULT 1.0 COMMENT 'Top-p参数 (0.0-1.0)',

    -- 功能配置
    support_stream TINYINT DEFAULT 1 COMMENT '是否支持流式输出: 0-不支持, 1-支持',
    support_function_call TINYINT DEFAULT 0 COMMENT '是否支持函数调用: 0-不支持, 1-支持',
    support_vision TINYINT DEFAULT 0 COMMENT '是否支持视觉理解: 0-不支持, 1-支持',
    support_file_upload TINYINT DEFAULT 0 COMMENT '是否支持文件上传: 0-不支持, 1-支持',

    -- 使用场景配置
    usage_scenario VARCHAR(100) NOT NULL COMMENT '使用场景: chat-聊天, summary-总结, emotion_analysis-情绪分析, content_generation-内容生成等',
    priority INT DEFAULT 0 COMMENT '优先级 (数值越大优先级越高)',

    -- 费用配置
    input_price_per_1k DECIMAL(10,6) DEFAULT 0.000000 COMMENT '输入Token价格(每1K)',
    output_price_per_1k DECIMAL(10,6) DEFAULT 0.000000 COMMENT '输出Token价格(每1K)',
    currency VARCHAR(10) DEFAULT 'USD' COMMENT '货币单位',

    -- 限制配置
    rate_limit_per_minute INT DEFAULT 60 COMMENT '每分钟请求限制',
    rate_limit_per_hour INT DEFAULT 3600 COMMENT '每小时请求限制',
    rate_limit_per_day INT DEFAULT 86400 COMMENT '每日请求限制',

    -- 状态配置
    is_enabled TINYINT DEFAULT 1 COMMENT '是否启用: 0-禁用, 1-启用',
    is_default TINYINT DEFAULT 0 COMMENT '是否为默认配置: 0-否, 1-是',
    environment VARCHAR(20) DEFAULT 'production' COMMENT '环境: development-开发, testing-测试, production-生产',

    -- 扩展配置
    custom_headers JSON COMMENT '自定义请求头',
    custom_params JSON COMMENT '自定义参数',
    webhook_url VARCHAR(500) COMMENT 'Webhook回调地址',

    -- 监控配置
    health_check_url VARCHAR(500) COMMENT '健康检查URL',
    health_check_interval_minutes INT DEFAULT 5 COMMENT '健康检查间隔(分钟)',

    -- 描述信息
    description TEXT COMMENT '配置描述',
    usage_notes TEXT COMMENT '使用说明',

    -- 公共字段
    create_by VARCHAR(64) COMMENT '创建人ID', -- 创建人ID
    create_time DATETIME  DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', -- 创建时间
    update_by VARCHAR(64) COMMENT '更新人ID', -- 更新人ID
    update_time DATETIME  DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', -- 更新时间
    is_deleted TINYINT  DEFAULT 0 COMMENT '是否删除: 0-未删除, 1-已删除', -- 是否删除: 0-未删除, 1-已删除
    remarks VARCHAR(500) COMMENT '备注' -- 备注
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'AI接口配置表 (t_ai_config)';

-- AI配置表索引
CREATE INDEX idx_ai_config_config_key ON t_ai_config (config_key);
CREATE INDEX idx_ai_config_config_type ON t_ai_config (config_type);
CREATE INDEX idx_ai_config_provider ON t_ai_config (provider);
CREATE INDEX idx_ai_config_usage_scenario ON t_ai_config (usage_scenario);
CREATE INDEX idx_ai_config_is_enabled ON t_ai_config (is_enabled);
CREATE INDEX idx_ai_config_is_default ON t_ai_config (is_default);
CREATE INDEX idx_ai_config_environment ON t_ai_config (environment);
CREATE INDEX idx_ai_config_priority ON t_ai_config (priority);
CREATE INDEX idx_ai_config_create_time ON t_ai_config (create_time);
CREATE INDEX idx_ai_config_update_time ON t_ai_config (update_time);
CREATE INDEX idx_ai_config_is_deleted ON t_ai_config (is_deleted);
CREATE INDEX idx_ai_config_scenario_enabled ON t_ai_config (usage_scenario, is_enabled);
CREATE INDEX idx_ai_config_type_enabled ON t_ai_config (config_type, is_enabled);

-- ============================================================================
-- AI配置初始化数据
-- 基于AiChatServiceImpl.java中的配置参数创建默认配置
-- ============================================================================

-- 1. Coze聊天配置 (默认聊天场景)
INSERT INTO t_ai_config (
    id, config_name, config_key, config_type, provider,
    api_base_url, api_token, api_version,
    client_id, client_secret, grant_type,
    bot_id, workflow_id,
    timeout_ms, retry_count, retry_delay_ms, max_tokens, temperature,
    support_stream, support_function_call, support_vision, support_file_upload,
    usage_scenario, priority, is_enabled, is_default, environment,
    input_price_per_1k, output_price_per_1k, currency,
    rate_limit_per_minute, rate_limit_per_hour, rate_limit_per_day,
    description, usage_notes,
    create_time, update_time, is_deleted
) VALUES (
    REPLACE(UUID(), '-', ''),
    'Coze聊天机器人配置',
    'coze.chat.default',
    'coze',
    'coze',
    'https://api.coze.cn',
    'sat_WgqusMh5gTfgRhsEFycGA5n9NailrJYV1rHeruJCHNB1gAvJz4laprLsvK8i2jEL',
    'v3',
    NULL, NULL, NULL,
    '7523042446285439016',
    '7523047462895796287',
    30000, 3, 1000, 4000, 0.7,
    1, 1, 0, 0,
    'chat', 100, 1, 1, 'production',
    0.001000, 0.002000, 'USD',
    60, 3600, 86400,
    'Coze平台的默认聊天机器人配置，用于日常情绪对话',
    '1. 需要配置有效的API Token\n2. 需要配置Bot ID和Workflow ID\n3. 支持流式输出和函数调用',
    NOW(), NOW(), 0
);

-- 2. Coze总结配置 (专用于对话总结)
INSERT INTO t_ai_config (
    id, config_name, config_key, config_type, provider,
    api_base_url, api_token, api_version,
    client_id, client_secret, grant_type,
    bot_id, workflow_id,
    timeout_ms, retry_count, retry_delay_ms, max_tokens, temperature,
    support_stream, support_function_call, support_vision, support_file_upload,
    usage_scenario, priority, is_enabled, is_default, environment,
    input_price_per_1k, output_price_per_1k, currency,
    rate_limit_per_minute, rate_limit_per_hour, rate_limit_per_day,
    description, usage_notes,
    create_time, update_time, is_deleted
) VALUES (
    REPLACE(UUID(), '-', ''),
    'Coze对话总结配置',
    'coze.summary.default',
    'coze',
    'coze',
    'https://api.coze.cn',
    'sat_WgqusMh5gTfgRhsEFycGA5n9NailrJYV1rHeruJCHNB1gAvJz4laprLsvK8i2jEL',
    'v3',
    NULL, NULL, NULL,
    '7529062814150295595',
    '7523047462895796287',
    30000, 3, 1000, 8000, 0.3,
    0, 0, 0, 0,
    'summary', 90, 1, 1, 'production',
    0.001000, 0.002000, 'USD',
    30, 1800, 43200,
    'Coze平台的对话总结配置，专门用于生成对话摘要和情绪分析',
    '1. 使用较低的temperature以获得更稳定的总结结果\n2. 增加max_tokens以支持长文本总结\n3. 不支持流式输出',
    NOW(), NOW(), 0
);

-- 3. Coze情绪分析配置 (专用于情绪分析)
INSERT INTO t_ai_config (
    id, config_name, config_key, config_type, provider,
    api_base_url, api_token, api_version,
    client_id, client_secret, grant_type,
    bot_id, workflow_id,
    timeout_ms, retry_count, retry_delay_ms, max_tokens, temperature,
    support_stream, support_function_call, support_vision, support_file_upload,
    usage_scenario, priority, is_enabled, is_default, environment,
    input_price_per_1k, output_price_per_1k, currency,
    rate_limit_per_minute, rate_limit_per_hour, rate_limit_per_day,
    description, usage_notes,
    create_time, update_time, is_deleted
) VALUES (
    REPLACE(UUID(), '-', ''),
    'Coze情绪分析配置',
    'coze.emotion_analysis.default',
    'coze',
    'coze',
    'https://api.coze.cn',
    'sat_WgqusMh5gTfgRhsEFycGA5n9NailrJYV1rHeruJCHNB1gAvJz4laprLsvK8i2jEL',
    'v3',
    NULL, NULL, NULL,
    '7529062814150295595', -- 复用总结bot，或配置专门的情绪分析bot
    '7523047462895796287', -- 复用总结workflow，或配置专门的情绪分析workflow
    45000, 3, 1500, 6000, 0.2,
    0, 1, 0, 0,
    'emotion_analysis', 95, 1, 1, 'production',
    0.001000, 0.002000, 'USD',
    20, 1200, 28800,
    'Coze平台的情绪分析配置，用于分析用户聊天记录的情绪状态',
    '1. 使用最低的temperature以获得准确的情绪分析\n2. 支持函数调用以获取结构化的分析结果\n3. 增加超时时间以处理复杂的情绪分析',
    NOW(), NOW(), 0
);

-- 4. 备用OpenAI配置 (作为备选方案)
INSERT INTO t_ai_config (
    id, config_name, config_key, config_type, provider,
    api_base_url, api_token, api_version,
    client_id, client_secret, grant_type,
    model_name,
    timeout_ms, retry_count, retry_delay_ms, max_tokens, temperature, top_p,
    support_stream, support_function_call, support_vision, support_file_upload,
    usage_scenario, priority, is_enabled, is_default, environment,
    input_price_per_1k, output_price_per_1k, currency,
    rate_limit_per_minute, rate_limit_per_hour, rate_limit_per_day,
    description, usage_notes,
    create_time, update_time, is_deleted
) VALUES (
    REPLACE(UUID(), '-', ''),
    'OpenAI GPT-4备用配置',
    'openai.gpt4.backup',
    'openai',
    'openai',
    'https://api.openai.com/v1',
    'sk-placeholder-openai-api-key-here', -- 需要配置实际的OpenAI API Key
    'v1',
    NULL, NULL, NULL,
    'gpt-4-turbo-preview',
    30000, 3, 2000, 4000, 0.7, 1.0,
    1, 1, 1, 1,
    'chat', 50, 0, 0, 'production', -- 默认禁用，作为备用
    0.010000, 0.030000, 'USD',
    60, 3600, 86400,
    'OpenAI GPT-4备用配置，当Coze服务不可用时的备选方案',
    '1. 需要配置有效的OpenAI API Key\n2. 支持视觉理解和文件上传\n3. 成本较高，建议作为备用方案',
    NOW(), NOW(), 0
);

-- 5. 开发环境测试配置
INSERT INTO t_ai_config (
    id, config_name, config_key, config_type, provider,
    api_base_url, api_token, api_version,
    client_id, client_secret, grant_type,
    bot_id, workflow_id,
    timeout_ms, retry_count, retry_delay_ms, max_tokens, temperature,
    support_stream, support_function_call, support_vision, support_file_upload,
    usage_scenario, priority, is_enabled, is_default, environment,
    input_price_per_1k, output_price_per_1k, currency,
    rate_limit_per_minute, rate_limit_per_hour, rate_limit_per_day,
    description, usage_notes,
    create_time, update_time, is_deleted
) VALUES (
    REPLACE(UUID(), '-', ''),
    'Coze开发环境测试配置',
    'coze.chat.development',
    'coze',
    'coze',
    'https://api.coze.cn',
    'sat_WgqusMh5gTfgRhsEFycGA5n9NailrJYV1rHeruJCHNB1gAvJz4laprLsvK8i2jEL', -- 开发环境可使用相同token或配置专门的开发token
    'v3',
    NULL, NULL, NULL,
    '7523042446285439016', -- 开发环境可使用相同bot-id或配置专门的开发bot-id
    '7523047462895796287', -- 开发环境可使用相同workflow-id或配置专门的开发workflow-id
    10000, 2, 500, 2000, 0.8,
    1, 1, 0, 0,
    'chat', 80, 1, 0, 'development',
    0.000500, 0.001000, 'USD',
    120, 7200, 172800,
    'Coze平台开发环境测试配置，用于开发和调试',
    '1. 开发环境专用配置\n2. 较短的超时时间和更高的请求限制\n3. 用于功能测试和调试',
    NOW(), NOW(), 0
);




-- ============================================================================
-- 19. 用户档案表 (t_user_profile)
-- ============================================================================
DROP TABLE IF EXISTS t_user_profile;
CREATE TABLE t_user_profile (
                                id VARCHAR(64) PRIMARY KEY COMMENT 'UUID主键',
                                user_id VARCHAR(64) COMMENT '用户ID (关联t_user.id)',
                                nickname VARCHAR(50) NOT NULL COMMENT '昵称 (必填)',
                                gender VARCHAR(20) DEFAULT 'secret' COMMENT '性别',
                                profession VARCHAR(100) COMMENT '职业',
                                zodiac VARCHAR(20) COMMENT '星座',
                                mbti VARCHAR(20) NOT NULL COMMENT 'MBTI人格类型 (必填)',
                                hobbies JSON COMMENT '兴趣爱好列表',
                                childhood_date DATE COMMENT '童年记忆日期',
                                childhood_content TEXT COMMENT '童年记忆内容',
                                peak_date DATE COMMENT '高光时刻日期',
                                peak_content TEXT COMMENT '高光时刻内容',
                                valley_date DATE COMMENT '低谷时刻日期',
                                valley_content TEXT COMMENT '低谷时刻内容',
                                future_vision TEXT COMMENT '未来愿景',
                                ideal_life TEXT COMMENT '理想生活状态',
                                scripts JSON COMMENT '生成的剧本列表 (JSON)',
                                paths JSON COMMENT '选择的路径列表 (JSON)',
                                status TINYINT DEFAULT 1 COMMENT '状态: 0-禁用, 1-正常',
                                -- 公共字段
                                create_by VARCHAR(64) COMMENT '创建人ID', -- 创建人ID
                                create_time DATETIME  DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', -- 创建时间
                                update_by VARCHAR(64) COMMENT '更新人ID', -- 更新人ID
                                update_time DATETIME  DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', -- 更新时间
                                is_deleted TINYINT  DEFAULT 0 COMMENT '是否删除: 0-未删除, 1-已删除', -- 是否删除: 0-未删除, 1-已删除
                                remarks VARCHAR(500) COMMENT '备注' -- 备注
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT '用户个人信息表 (t_user_profile)';

-- t_user_profile表索引
CREATE INDEX idx_user_profile_user_id ON t_user_profile (user_id);
CREATE INDEX idx_user_profile_create_time ON t_user_profile (create_time);


-- ============================================================================
-- 20. 生命事件表 (t_life_event)
-- 存储用户的人生轨迹事件，包括日期、标题、内容、AI回复等
-- 关联说明: user_id 关联 t_user.id
-- ============================================================================
DROP TABLE IF EXISTS t_life_event;
CREATE TABLE t_life_event (
    id VARCHAR(64) PRIMARY KEY COMMENT 'UUID主键',
    user_id VARCHAR(64) NOT NULL COMMENT '用户ID (关联t_user.id)',
    
    -- 事件信息
    event_type VARCHAR(50) DEFAULT 'daily_log' COMMENT '事件类型: daily_log-日常记录, milestone-里程碑',
    event_date DATETIME COMMENT '事件日期',
    title VARCHAR(200) COMMENT '事件标题',
    content TEXT COMMENT '事件内容',
    ai_reply TEXT COMMENT 'AI疗愈回复',
    
    -- 情绪分析
    emotion_type VARCHAR(50) COMMENT '情绪类型',
    emotion_score DECIMAL(3, 2) COMMENT '情绪评分',
    
    -- 标签
    tags JSON COMMENT '标签列表',
    
    -- 公共字段
    create_by VARCHAR(64) COMMENT '创建人ID',
    create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    update_by VARCHAR(64) COMMENT '更新人ID',
    update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    is_deleted TINYINT DEFAULT 0 COMMENT '是否删除: 0-未删除, 1-已删除',
    remarks VARCHAR(500) COMMENT '备注'
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '生命事件表 (t_life_event)';

-- t_life_event表索引
CREATE INDEX idx_life_event_user_id ON t_life_event (user_id);
CREATE INDEX idx_life_event_event_date ON t_life_event (event_date);
CREATE INDEX idx_life_event_user_date ON t_life_event (user_id, event_date);
CREATE INDEX idx_life_event_event_type ON t_life_event (event_type);
CREATE INDEX idx_life_event_create_time ON t_life_event (create_time);
CREATE INDEX idx_life_event_is_deleted ON t_life_event (is_deleted);


-- ============================================================================
-- 21. 爽文剧本表 (t_epic_script)
-- 存储用户生成的爽文剧本，包括主题、风格、剧情章节等
-- 关联说明: user_id 关联 t_user.id
-- ============================================================================
DROP TABLE IF EXISTS t_epic_script;
CREATE TABLE t_epic_script (
    id VARCHAR(64) PRIMARY KEY COMMENT 'UUID主键',
    user_id VARCHAR(64) NOT NULL COMMENT '用户ID (关联t_user.id)',
    
    -- 剧本基本信息
    title VARCHAR(200) COMMENT '剧本标题',
    theme TEXT COMMENT '剧本主题/渴望',
    style VARCHAR(50) COMMENT '剧本风格: career-职场逆袭, love-情感圆满, fantasy-玄幻觉醒',
    length VARCHAR(20) DEFAULT 'medium' COMMENT '篇幅长度: medium-标准篇, long-长篇',
    
    -- 剧情内容 (四章结构)
    plot_intro TEXT COMMENT '序幕：低谷回响',
    plot_turning TEXT COMMENT '转折：契机出现',
    plot_climax TEXT COMMENT '高潮：命运抉择',
    plot_ending TEXT COMMENT '结局：新的开始',
    
    -- 完整剧情JSON (备用)
    plot_json JSON COMMENT '完整剧情JSON结构',
    
    -- 状态
    is_selected TINYINT DEFAULT 0 COMMENT '是否当前选中: 0-否, 1-是',
    
    -- 公共字段
    create_by VARCHAR(64) COMMENT '创建人ID',
    create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    update_by VARCHAR(64) COMMENT '更新人ID',
    update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    is_deleted TINYINT DEFAULT 0 COMMENT '是否删除: 0-未删除, 1-已删除',
    remarks VARCHAR(500) COMMENT '备注'
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '爽文剧本表 (t_epic_script)';

-- t_epic_script表索引
CREATE INDEX idx_epic_script_user_id ON t_epic_script (user_id);
CREATE INDEX idx_epic_script_style ON t_epic_script (style);
CREATE INDEX idx_epic_script_user_selected ON t_epic_script (user_id, is_selected);
CREATE INDEX idx_epic_script_create_time ON t_epic_script (create_time);
CREATE INDEX idx_epic_script_is_deleted ON t_epic_script (is_deleted);


-- ============================================================================
-- 22. 实现路径表 (t_life_path)
-- 存储基于剧本生成的实现路径规划
-- 关联说明: user_id 关联 t_user.id, script_id 关联 t_epic_script.id
-- ============================================================================
DROP TABLE IF EXISTS t_life_path;
CREATE TABLE t_life_path (
    id VARCHAR(64) PRIMARY KEY COMMENT 'UUID主键',
    user_id VARCHAR(64) NOT NULL COMMENT '用户ID (关联t_user.id)',
    script_id VARCHAR(64) NOT NULL COMMENT '关联剧本ID (关联t_epic_script.id)',
    
    -- 路径基本信息
    title VARCHAR(200) COMMENT '路径标题',
    description TEXT COMMENT '路径描述',
    
    -- 路径步骤 (JSON数组)
    steps JSON COMMENT '路径步骤列表',
    
    -- 状态
    status VARCHAR(20) DEFAULT 'active' COMMENT '状态: active-进行中, completed-已完成, archived-已归档',
    progress DECIMAL(5, 2) DEFAULT 0.00 COMMENT '完成进度百分比',
    
    -- 公共字段
    create_by VARCHAR(64) COMMENT '创建人ID',
    create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    update_by VARCHAR(64) COMMENT '更新人ID',
    update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    is_deleted TINYINT DEFAULT 0 COMMENT '是否删除: 0-未删除, 1-已删除',
    remarks VARCHAR(500) COMMENT '备注'
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '实现路径表 (t_life_path)';

-- t_life_path表索引
CREATE INDEX idx_life_path_user_id ON t_life_path (user_id);
CREATE INDEX idx_life_path_script_id ON t_life_path (script_id);
CREATE INDEX idx_life_path_user_script ON t_life_path (user_id, script_id);
CREATE INDEX idx_life_path_status ON t_life_path (status);
CREATE INDEX idx_life_path_create_time ON t_life_path (create_time);
CREATE INDEX idx_life_path_is_deleted ON t_life_path (is_deleted);


-- ============================================================================
-- 23. 路径步骤表 (t_life_path_step) - 可选，用于更细粒度的步骤管理
-- 存储路径的每个步骤详情
-- 关联说明: path_id 关联 t_life_path.id
-- ============================================================================
DROP TABLE IF EXISTS t_life_path_step;
CREATE TABLE t_life_path_step (
    id VARCHAR(64) PRIMARY KEY COMMENT 'UUID主键',
    path_id VARCHAR(64) NOT NULL COMMENT '路径ID (关联t_life_path.id)',
    user_id VARCHAR(64) NOT NULL COMMENT '用户ID (关联t_user.id)',
    
    -- 步骤信息
    step_order INT DEFAULT 0 COMMENT '步骤顺序',
    phase VARCHAR(100) COMMENT '阶段名称',
    time_frame VARCHAR(50) COMMENT '时间范围',
    content TEXT COMMENT '核心策略内容',
    action TEXT COMMENT '关键行动',
    resources TEXT COMMENT '所需资源',
    habit TEXT COMMENT '养成习惯',
    
    -- 状态
    status VARCHAR(20) DEFAULT 'pending' COMMENT '状态: pending-待开始, in_progress-进行中, completed-已完成',
    completed_time DATETIME COMMENT '完成时间',
    
    -- 公共字段
    create_by VARCHAR(64) COMMENT '创建人ID',
    create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    update_by VARCHAR(64) COMMENT '更新人ID',
    update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    is_deleted TINYINT DEFAULT 0 COMMENT '是否删除: 0-未删除, 1-已删除',
    remarks VARCHAR(500) COMMENT '备注'
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '路径步骤表 (t_life_path_step)';

-- t_life_path_step表索引
CREATE INDEX idx_life_path_step_path_id ON t_life_path_step (path_id);
CREATE INDEX idx_life_path_step_user_id ON t_life_path_step (user_id);
CREATE INDEX idx_life_path_step_order ON t_life_path_step (path_id, step_order);
CREATE INDEX idx_life_path_step_status ON t_life_path_step (status);
CREATE INDEX idx_life_path_step_is_deleted ON t_life_path_step (is_deleted);

-- ============================================================================
-- 24. 字典表 (t_dictionary)
-- 用途：存储基础字段数据，如城市、星座、MBTI人格类型等
-- ============================================================================
DROP TABLE IF EXISTS t_dictionary;
CREATE TABLE t_dictionary (
    id VARCHAR(64) PRIMARY KEY COMMENT 'UUID主键', -- UUID主键
    dict_type VARCHAR(50) NOT NULL COMMENT '字典类型 (如: city, constellation, mbti)', -- 字典类型
    dict_code VARCHAR(100) NOT NULL COMMENT '字典编码', -- 字典编码
    dict_name VARCHAR(100) NOT NULL COMMENT '字典名称', -- 字典名称
    dict_value VARCHAR(200) COMMENT '字典值', -- 字典值
    sort_order INT DEFAULT 0 COMMENT '排序顺序', -- 排序顺序
    status TINYINT DEFAULT 1 COMMENT '状态: 0-禁用, 1-启用', -- 状态
    -- 公共字段
    create_by VARCHAR(64) COMMENT '创建人ID', -- 创建人ID
    create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', -- 创建时间
    update_by VARCHAR(64) COMMENT '更新人ID', -- 更新人ID
    update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', -- 更新时间
    is_deleted TINYINT DEFAULT 0 COMMENT '是否删除: 0-未删除, 1-已删除', -- 是否删除: 0-未删除, 1-已删除
    remarks VARCHAR(500) COMMENT '备注' -- 备注
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT '字典表 (t_dictionary)';

-- t_dictionary表索引
CREATE INDEX idx_dictionary_dict_type ON t_dictionary (dict_type);
CREATE INDEX idx_dictionary_dict_code ON t_dictionary (dict_code);
CREATE INDEX idx_dictionary_dict_type_status ON t_dictionary (dict_type, status);
CREATE INDEX idx_dictionary_dict_type_sort_order ON t_dictionary (dict_type, sort_order);
CREATE INDEX idx_dictionary_create_time ON t_dictionary (create_time);
CREATE INDEX idx_dictionary_is_deleted ON t_dictionary (is_deleted);


-- 鎻愪氦浜嬪姟
COMMIT;
