1389 lines
91 KiB
SQL
1389 lines
91 KiB
SQL
-- ============================================================================
|
||
-- 情绪博物馆数据库完整部署脚本
|
||
-- 版本: 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版本',
|
||
|
||
-- 模型配置
|
||
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,
|
||
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',
|
||
'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,
|
||
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',
|
||
'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,
|
||
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',
|
||
'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,
|
||
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',
|
||
'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,
|
||
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',
|
||
'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 '性别',
|
||
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 '未来愿景',
|
||
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);
|
||
|
||
|
||
-- 提交事务
|
||
COMMIT;
|