前端统一接口响应处理,注册/登录/验证码逻辑修正,兼容后端标准出参格式

This commit is contained in:
2025-07-24 16:05:38 +08:00
parent e554a287f9
commit 6560e66959
10 changed files with 334 additions and 2028 deletions
@@ -22,11 +22,11 @@ SET
time_zone = "+00:00";
-- 创建数据库
CREATE DATABASE IF NOT EXISTS emotion_museum DEFAULT CHARACTER
SET
CREATE DATABASE IF NOT EXISTS emotion DEFAULT CHARACTER
SET
utf8mb4 COLLATE utf8mb4_unicode_ci;
USE emotion_museum;
USE emotion;
-- ============================================================================
-- 数据库设计原则
@@ -74,39 +74,39 @@ DROP TABLE IF EXISTS user;
-- 1. 用户表 (user)
-- ============================================================================
CREATE TABLE user (
id VARCHAR(36) PRIMARY KEY, -- UUID主键
account VARCHAR(50) NOT NULL UNIQUE, -- 账号
password VARCHAR(255) NOT NULL, -- 密码(加密后)
username VARCHAR(50) NOT NULL UNIQUE, -- 用户名
email VARCHAR(100) NOT NULL UNIQUE, -- 邮箱
phone VARCHAR(20) UNIQUE, -- 手机号
avatar VARCHAR(500), -- 头像URL
nickname VARCHAR(50) NOT NULL, -- 昵称
birth_date DATE, -- 生日
location VARCHAR(100), -- 所在地
bio TEXT, -- 个人简介
member_level VARCHAR(20) NOT NULL DEFAULT 'free', -- 会员等级
total_days INT NOT NULL DEFAULT 0, -- 使用天数
id VARCHAR(36) PRIMARY KEY, -- UUID主键
account VARCHAR(50) UNIQUE, -- 账号
password VARCHAR(255) , -- 密码(加密后)
username VARCHAR(50) UNIQUE, -- 用户名
email VARCHAR(100) UNIQUE, -- 邮箱
phone VARCHAR(20) UNIQUE, -- 手机号
avatar VARCHAR(500), -- 头像URL
nickname VARCHAR(50) , -- 昵称
birth_date DATE, -- 生日
location VARCHAR(100), -- 所在地
bio TEXT, -- 个人简介
member_level VARCHAR(20) DEFAULT 'free', -- 会员等级
total_days INT DEFAULT 0, -- 使用天数
-- 成长数据
self_awareness DECIMAL(5, 2) NOT NULL DEFAULT 50.00, -- 自我感知
emotional_resilience DECIMAL(5, 2) NOT NULL DEFAULT 50.00, -- 情绪韧性
action_power DECIMAL(5, 2) NOT NULL DEFAULT 50.00, -- 行动力
empathy DECIMAL(5, 2) NOT NULL DEFAULT 50.00, -- 共情力
life_enthusiasm DECIMAL(5, 2) NOT NULL DEFAULT 50.00, -- 生活热度
self_awareness DECIMAL(5, 2) DEFAULT 50.00, -- 自我感知
emotional_resilience DECIMAL(5, 2) DEFAULT 50.00, -- 情绪韧性
action_power DECIMAL(5, 2) DEFAULT 50.00, -- 行动力
empathy DECIMAL(5, 2) DEFAULT 50.00, -- 共情力
life_enthusiasm DECIMAL(5, 2) DEFAULT 50.00, -- 生活热度
-- 状态字段
status TINYINT NOT NULL DEFAULT 1, -- 状态: 0-禁用, 1-正常
is_verified TINYINT NOT NULL DEFAULT 0, -- 是否已验证: 0-未验证, 1-已验证
last_active_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, -- 最后活跃时间
status TINYINT DEFAULT 1, -- 状态: 0-禁用, 1-正常
is_verified TINYINT DEFAULT 0, -- 是否已验证: 0-未验证, 1-已验证
last_active_time DATETIME DEFAULT CURRENT_TIMESTAMP, -- 最后活跃时间
-- 第三方登录字段
third_party_id VARCHAR(128), -- 第三方平台ID
third_party_type VARCHAR(32), -- 第三方平台类型: wechat, qq, wechat-mp
third_party_id VARCHAR(128), -- 第三方平台ID
third_party_type VARCHAR(32), -- 第三方平台类型: wechat, qq, wechat-mp
-- 公共字段
create_by VARCHAR(36), -- 创建人ID
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, -- 创建时间
update_by VARCHAR(36), -- 更新人ID
update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, -- 更新时间
is_deleted TINYINT NOT NULL DEFAULT 0, -- 是否删除: 0-未删除, 1-已删除
remarks VARCHAR(500) -- 备注
create_by VARCHAR(36), -- 创建人ID
create_time DATETIME DEFAULT CURRENT_TIMESTAMP, -- 创建时间
update_by VARCHAR(36), -- 更新人ID
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, -- 更新时间
is_deleted TINYINT DEFAULT 0, -- 是否删除: 0-未删除, 1-已删除
remarks VARCHAR(500) -- 备注
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '用户表';
-- ============================================================================
@@ -114,41 +114,41 @@ CREATE TABLE user (
-- 关联说明: user_id 关联 user.id,通过代码逻辑维护关联关系
-- ============================================================================
CREATE TABLE conversation (
id VARCHAR(36) PRIMARY KEY, -- UUID主键
user_id VARCHAR(36) NOT NULL, -- 用户ID (关联user.id)
user_type VARCHAR(20) NOT NULL DEFAULT 'registered', -- 用户类型: registered-注册用户, guest-访客用户
title VARCHAR(200), -- 对话标题
type VARCHAR(50) NOT NULL DEFAULT 'emotion_chat', -- 对话类型
status VARCHAR(20) NOT NULL DEFAULT 'active', -- 状态: active-活跃, ended-结束, archived-归档
coze_conversation_id VARCHAR(100), -- Coze对话ID
bot_id VARCHAR(50), -- 使用的Bot ID
workflow_id VARCHAR(50), -- 使用的Workflow ID
initial_message TEXT, -- 初始消息
context TEXT, -- 上下文信息
primary_emotion VARCHAR(50), -- 主要情绪
emotion_intensity DECIMAL(3, 2), -- 情绪强度
emotion_trend VARCHAR(50), -- 情绪趋势
keywords JSON, -- 关键词
ai_insights TEXT, -- AI洞察
confidence DECIMAL(3, 2), -- 分析置信度
start_time DATETIME, -- 开始时间
end_time DATETIME, -- 结束时间
last_active_time DATETIME DEFAULT CURRENT_TIMESTAMP, -- 最后活跃时间
message_count INT NOT NULL DEFAULT 0, -- 消息数量
total_tokens INT DEFAULT 0, -- 总Token使用量
total_cost DECIMAL(10, 4) DEFAULT 0.0000, -- 总费用
client_ip VARCHAR(45), -- 客户端IP地址 (支持IPv6)
user_agent TEXT, -- 用户代理信息
summary TEXT, -- 对话摘要
tags JSON, -- 标签
metadata JSON, -- 扩展元数据
id VARCHAR(36) PRIMARY KEY, -- UUID主键
user_id VARCHAR(36) , -- 用户ID (关联user.id)
user_type VARCHAR(20) DEFAULT 'registered', -- 用户类型: registered-注册用户, guest-访客用户
title VARCHAR(200), -- 对话标题
type VARCHAR(50) DEFAULT 'emotion_chat', -- 对话类型
status VARCHAR(20) DEFAULT 'active', -- 状态: active-活跃, ended-结束, archived-归档
coze_conversation_id VARCHAR(100), -- Coze对话ID
bot_id VARCHAR(50), -- 使用的Bot ID
workflow_id VARCHAR(50), -- 使用的Workflow ID
initial_message TEXT, -- 初始消息
context TEXT, -- 上下文信息
primary_emotion VARCHAR(50), -- 主要情绪
emotion_intensity DECIMAL(3, 2), -- 情绪强度
emotion_trend VARCHAR(50), -- 情绪趋势
keywords JSON, -- 关键词
ai_insights TEXT, -- AI洞察
confidence DECIMAL(3, 2), -- 分析置信度
start_time DATETIME, -- 开始时间
end_time DATETIME, -- 结束时间
last_active_time DATETIME DEFAULT CURRENT_TIMESTAMP, -- 最后活跃时间
message_count INT DEFAULT 0, -- 消息数量
total_tokens INT DEFAULT 0, -- 总Token使用量
total_cost DECIMAL(10, 4) DEFAULT 0.0000, -- 总费用
client_ip VARCHAR(45), -- 客户端IP地址 (支持IPv6)
user_agent TEXT, -- 用户代理信息
summary TEXT, -- 对话摘要
tags JSON, -- 标签
metadata JSON, -- 扩展元数据
-- 公共字段
create_by VARCHAR(36), -- 创建人ID
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, -- 创建时间
update_by VARCHAR(36), -- 更新人ID
update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, -- 更新时间
is_deleted TINYINT NOT NULL DEFAULT 0, -- 是否删除: 0-未删除, 1-已删除
remarks VARCHAR(500) -- 备注
create_by VARCHAR(36), -- 创建人ID
create_time DATETIME DEFAULT CURRENT_TIMESTAMP, -- 创建时间
update_by VARCHAR(36), -- 更新人ID
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, -- 更新时间
is_deleted TINYINT DEFAULT 0, -- 是否删除: 0-未删除, 1-已删除
remarks VARCHAR(500) -- 备注
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '对话表';
-- ============================================================================
@@ -156,368 +156,368 @@ CREATE TABLE conversation (
-- 关联说明: conversation_id 关联 conversation.id,通过代码逻辑维护关联关系
-- ============================================================================
CREATE TABLE message (
id VARCHAR(36) PRIMARY KEY, -- UUID主键
conversation_id VARCHAR(36) NOT NULL, -- 对话ID (关联conversation.id)
content TEXT NOT NULL, -- 消息内容
type VARCHAR(50) NOT NULL DEFAULT 'text', -- 消息类型
sender VARCHAR(20) NOT NULL, -- 发送者: user-用户, assistant-AI助手
timestamp DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, -- 消息时间戳
coze_chat_id VARCHAR(50), -- Coze平台的聊天ID
coze_message_id VARCHAR(50), -- Coze平台的消息ID
status VARCHAR(20) DEFAULT 'sent', -- 消息状态: sending/sent/failed/processing
error_message TEXT, -- 错误信息
emotion_score DECIMAL(3, 2), -- 情绪评分
emotion_type VARCHAR(50), -- 情绪类型
emotion_confidence DECIMAL(3, 2), -- 情绪分析置信度
prompt_tokens INT DEFAULT 0, -- 输入Token数
completion_tokens INT DEFAULT 0, -- 输出Token数
total_tokens INT DEFAULT 0, -- 总Token数
api_cost DECIMAL(10, 6) DEFAULT 0.000000, -- API调用费用
is_read TINYINT NOT NULL DEFAULT 0, -- 是否已读: 0-未读, 1-已读
parent_message_id VARCHAR(36), -- 父消息ID(用于回复链)
emotion_analysis JSON, -- 情绪分析结果
metadata JSON, -- 扩展元数据
id VARCHAR(36) PRIMARY KEY, -- UUID主键
conversation_id VARCHAR(36) , -- 对话ID (关联conversation.id)
content TEXT , -- 消息内容
type VARCHAR(50) DEFAULT 'text', -- 消息类型
sender VARCHAR(20) , -- 发送者: user-用户, assistant-AI助手
timestamp DATETIME DEFAULT CURRENT_TIMESTAMP, -- 消息时间戳
coze_chat_id VARCHAR(50), -- Coze平台的聊天ID
coze_message_id VARCHAR(50), -- Coze平台的消息ID
status VARCHAR(20) DEFAULT 'sent', -- 消息状态: sending/sent/failed/processing
error_message TEXT, -- 错误信息
emotion_score DECIMAL(3, 2), -- 情绪评分
emotion_type VARCHAR(50), -- 情绪类型
emotion_confidence DECIMAL(3, 2), -- 情绪分析置信度
prompt_tokens INT DEFAULT 0, -- 输入Token数
completion_tokens INT DEFAULT 0, -- 输出Token数
total_tokens INT DEFAULT 0, -- 总Token数
api_cost DECIMAL(10, 6) DEFAULT 0.000000, -- API调用费用
is_read TINYINT DEFAULT 0, -- 是否已读: 0-未读, 1-已读
parent_message_id VARCHAR(36), -- 父消息ID(用于回复链)
emotion_analysis JSON, -- 情绪分析结果
metadata JSON, -- 扩展元数据
-- 公共字段
create_by VARCHAR(36), -- 创建人ID
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, -- 创建时间
update_by VARCHAR(36), -- 更新人ID
update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, -- 更新时间
is_deleted TINYINT NOT NULL DEFAULT 0, -- 是否删除: 0-未删除, 1-已删除
remarks VARCHAR(500) -- 备注
create_by VARCHAR(36), -- 创建人ID
create_time DATETIME DEFAULT CURRENT_TIMESTAMP, -- 创建时间
update_by VARCHAR(36), -- 更新人ID
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, -- 更新时间
is_deleted TINYINT DEFAULT 0, -- 是否删除: 0-未删除, 1-已删除
remarks VARCHAR(500) -- 备注
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '消息表';
-- ============================================================================
-- 4. Coze API调用记录表 (coze_api_call) - 优化版本
-- ============================================================================
CREATE TABLE coze_api_call (
id VARCHAR(36) PRIMARY KEY, -- UUID主键
conversation_id VARCHAR(36), -- 对话ID
message_id VARCHAR(36), -- 消息ID
id VARCHAR(36) PRIMARY KEY, -- UUID主键
conversation_id VARCHAR(36), -- 对话ID
message_id VARCHAR(36), -- 消息ID
-- Coze API 信息
coze_chat_id VARCHAR(50), -- Coze聊天ID
coze_conversation_id VARCHAR(50), -- Coze对话ID
bot_id VARCHAR(50) NOT NULL, -- Bot ID
workflow_id VARCHAR(50), -- Workflow ID
user_id VARCHAR(36) NOT NULL, -- 用户ID
coze_chat_id VARCHAR(50), -- Coze聊天ID
coze_conversation_id VARCHAR(50), -- Coze对话ID
bot_id VARCHAR(50) , -- Bot ID
workflow_id VARCHAR(50), -- Workflow ID
user_id VARCHAR(36) , -- 用户ID
-- 请求信息
request_type VARCHAR(20) NOT NULL, -- 请求类型: chat/stream/retrieve/messages
request_url VARCHAR(500), -- 请求URL
request_body JSON, -- 请求体
request_headers JSON, -- 请求头
request_type VARCHAR(20) , -- 请求类型: chat/stream/retrieve/messages
request_url VARCHAR(500), -- 请求URL
request_body JSON, -- 请求体
request_headers JSON, -- 请求头
-- 用户消息内容
user_message TEXT, -- 用户输入的消息内容
user_message_type VARCHAR(20) DEFAULT 'text', -- 用户消息类型: text/image/file
user_message TEXT, -- 用户输入的消息内容
user_message_type VARCHAR(20) DEFAULT 'text', -- 用户消息类型: text/image/file
-- AI回复内容
ai_reply TEXT, -- AI回复的消息内容
ai_reply_type VARCHAR(20) DEFAULT 'text', -- AI回复类型: text/image/file
ai_reply TEXT, -- AI回复的消息内容
ai_reply_type VARCHAR(20) DEFAULT 'text', -- AI回复类型: text/image/file
-- 响应信息
response_status INT, -- HTTP状态码
response_body JSON, -- 响应体
response_headers JSON, -- 响应头
response_status INT, -- HTTP状态码
response_body JSON, -- 响应体
response_headers JSON, -- 响应头
-- 轮询信息
poll_count INT DEFAULT 0, -- 轮询次数
poll_start_time DATETIME, -- 轮询开始时间
poll_end_time DATETIME, -- 轮询结束时间
final_status VARCHAR(20), -- 最终状态: completed/failed/timeout
poll_count INT DEFAULT 0, -- 轮询次数
poll_start_time DATETIME, -- 轮询开始时间
poll_end_time DATETIME, -- 轮询结束时间
final_status VARCHAR(20), -- 最终状态: completed/failed/timeout
-- 状态和时间
status VARCHAR(20) NOT NULL, -- 调用状态: pending/success/failed/timeout
start_time DATETIME NOT NULL, -- 开始时间
end_time DATETIME, -- 结束时间
duration_ms INT, -- 耗时(毫秒)
status VARCHAR(20) , -- 调用状态: pending/success/failed/timeout
start_time DATETIME , -- 开始时间
end_time DATETIME, -- 结束时间
duration_ms INT, -- 耗时(毫秒)
-- 使用统计
prompt_tokens INT DEFAULT 0, -- 输入Token数
completion_tokens INT DEFAULT 0, -- 输出Token数
total_tokens INT DEFAULT 0, -- 总Token数
cost DECIMAL(10, 6) DEFAULT 0.000000, -- 费用
prompt_tokens INT DEFAULT 0, -- 输入Token数
completion_tokens INT DEFAULT 0, -- 输出Token数
total_tokens INT DEFAULT 0, -- 总Token数
cost DECIMAL(10, 6) DEFAULT 0.000000, -- 费用
-- 功能调用信息
function_calls JSON, -- 函数调用记录
function_results JSON, -- 函数调用结果
function_calls JSON, -- 函数调用记录
function_results JSON, -- 函数调用结果
-- 错误信息
error_code VARCHAR(50), -- 错误代码
error_message TEXT, -- 错误信息
error_code VARCHAR(50), -- 错误代码
error_message TEXT, -- 错误信息
-- 扩展信息
client_ip VARCHAR(45), -- 客户端IP
user_agent TEXT, -- 用户代理
session_id VARCHAR(100), -- 会话ID
trace_id VARCHAR(100), -- 追踪ID
metadata JSON, -- 扩展元数据
client_ip VARCHAR(45), -- 客户端IP
user_agent TEXT, -- 用户代理
session_id VARCHAR(100), -- 会话ID
trace_id VARCHAR(100), -- 追踪ID
metadata JSON, -- 扩展元数据
-- 公共字段
create_by VARCHAR(36), -- 创建人ID
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, -- 创建时间
update_by VARCHAR(36), -- 更新人ID
update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, -- 更新时间
is_deleted TINYINT NOT NULL DEFAULT 0, -- 是否删除: 0-未删除, 1-已删除
remarks VARCHAR(500) -- 备注
create_by VARCHAR(36), -- 创建人ID
create_time DATETIME DEFAULT CURRENT_TIMESTAMP, -- 创建时间
update_by VARCHAR(36), -- 更新人ID
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, -- 更新时间
is_deleted TINYINT DEFAULT 0, -- 是否删除: 0-未删除, 1-已删除
remarks VARCHAR(500) -- 备注
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'Coze API调用记录表 - 完整版本';
-- ============================================================================
-- 5. 情绪分析表 (emotion_analysis)
-- ============================================================================
CREATE TABLE emotion_analysis (
id VARCHAR(36) PRIMARY KEY, -- UUID主键
user_id VARCHAR(36) NOT NULL, -- 用户ID
message_id VARCHAR(36), -- 关联消息ID
text TEXT NOT NULL, -- 分析文本
primary_emotion VARCHAR(50), -- 主要情绪
intensity DECIMAL(3, 2), -- 情绪强度
polarity VARCHAR(20), -- 情绪极性: positive-积极, negative-消极, neutral-中性
confidence DECIMAL(3, 2), -- 置信度
emotions JSON, -- 情绪分布详情
keywords JSON, -- 关键词列表
suggestion TEXT, -- 建议
analysis_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, -- 分析时间
metadata JSON, -- 扩展元数据
id VARCHAR(36) PRIMARY KEY, -- UUID主键
user_id VARCHAR(36) , -- 用户ID
message_id VARCHAR(36), -- 关联消息ID
text TEXT , -- 分析文本
primary_emotion VARCHAR(50), -- 主要情绪
intensity DECIMAL(3, 2), -- 情绪强度
polarity VARCHAR(20), -- 情绪极性: positive-积极, negative-消极, neutral-中性
confidence DECIMAL(3, 2), -- 置信度
emotions JSON, -- 情绪分布详情
keywords JSON, -- 关键词列表
suggestion TEXT, -- 建议
analysis_time DATETIME DEFAULT CURRENT_TIMESTAMP, -- 分析时间
metadata JSON, -- 扩展元数据
-- 公共字段
create_by VARCHAR(36), -- 创建人ID
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, -- 创建时间
update_by VARCHAR(36), -- 更新人ID
update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, -- 更新时间
is_deleted TINYINT NOT NULL DEFAULT 0, -- 是否删除: 0-未删除, 1-已删除
remarks VARCHAR(500) -- 备注
create_by VARCHAR(36), -- 创建人ID
create_time DATETIME DEFAULT CURRENT_TIMESTAMP, -- 创建时间
update_by VARCHAR(36), -- 更新人ID
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, -- 更新时间
is_deleted TINYINT DEFAULT 0, -- 是否删除: 0-未删除, 1-已删除
remarks VARCHAR(500) -- 备注
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '情绪分析表';
-- ============================================================================
-- 6. 情绪记录表 (emotion_record)
-- ============================================================================
CREATE TABLE emotion_record (
id VARCHAR(36) PRIMARY KEY, -- UUID主键
user_id VARCHAR(36) NOT NULL, -- 用户ID
record_date DATE NOT NULL, -- 记录日期
emotion_type VARCHAR(50) NOT NULL, -- 情绪类型
intensity DECIMAL(3, 2) NOT NULL, -- 情绪强度
triggers TEXT, -- 触发因素
description TEXT, -- 描述
tags JSON, -- 标签
weather VARCHAR(50), -- 天气
location VARCHAR(100), -- 地点
activity VARCHAR(100), -- 活动
people VARCHAR(200), -- 相关人物
notes TEXT, -- 备注
id VARCHAR(36) PRIMARY KEY, -- UUID主键
user_id VARCHAR(36) , -- 用户ID
record_date DATE , -- 记录日期
emotion_type VARCHAR(50) , -- 情绪类型
intensity DECIMAL(3, 2) , -- 情绪强度
triggers TEXT, -- 触发因素
description TEXT, -- 描述
tags JSON, -- 标签
weather VARCHAR(50), -- 天气
location VARCHAR(100), -- 地点
activity VARCHAR(100), -- 活动
people VARCHAR(200), -- 相关人物
notes TEXT, -- 备注
-- 公共字段
create_by VARCHAR(36), -- 创建人ID
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, -- 创建时间
update_by VARCHAR(36), -- 更新人ID
update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, -- 更新时间
is_deleted TINYINT NOT NULL DEFAULT 0, -- 是否删除: 0-未删除, 1-已删除
remarks VARCHAR(500) -- 备注
create_by VARCHAR(36), -- 创建人ID
create_time DATETIME DEFAULT CURRENT_TIMESTAMP, -- 创建时间
update_by VARCHAR(36), -- 更新人ID
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, -- 更新时间
is_deleted TINYINT DEFAULT 0, -- 是否删除: 0-未删除, 1-已删除
remarks VARCHAR(500) -- 备注
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '情绪记录表';
-- ============================================================================
-- 7. 成长课题表 (growth_topic)
-- ============================================================================
CREATE TABLE growth_topic (
id VARCHAR(36) PRIMARY KEY, -- UUID主键
title VARCHAR(100) NOT NULL, -- 课题标题
category VARCHAR(50) NOT NULL, -- 分类
difficulty VARCHAR(20) NOT NULL, -- 难度: easy-简单, medium-中等, hard-困难
description TEXT, -- 描述
content TEXT, -- 内容
duration_days INT, -- 持续天数
unlock_conditions JSON, -- 解锁条件
is_unlocked TINYINT NOT NULL DEFAULT 1, -- 是否解锁
progress DECIMAL(5, 2) NOT NULL DEFAULT 0.00, -- 进度百分比
completed_time DATETIME, -- 完成时间
rewards JSON, -- 奖励
id VARCHAR(36) PRIMARY KEY, -- UUID主键
title VARCHAR(100) , -- 课题标题
category VARCHAR(50) , -- 分类
difficulty VARCHAR(20) , -- 难度: easy-简单, medium-中等, hard-困难
description TEXT, -- 描述
content TEXT, -- 内容
duration_days INT, -- 持续天数
unlock_conditions JSON, -- 解锁条件
is_unlocked TINYINT DEFAULT 1, -- 是否解锁
progress DECIMAL(5, 2) DEFAULT 0.00, -- 进度百分比
completed_time DATETIME, -- 完成时间
rewards JSON, -- 奖励
-- 公共字段
create_by VARCHAR(36), -- 创建人ID
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, -- 创建时间
update_by VARCHAR(36), -- 更新人ID
update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, -- 更新时间
is_deleted TINYINT NOT NULL DEFAULT 0, -- 是否删除: 0-未删除, 1-已删除
remarks VARCHAR(500) -- 备注
create_by VARCHAR(36), -- 创建人ID
create_time DATETIME DEFAULT CURRENT_TIMESTAMP, -- 创建时间
update_by VARCHAR(36), -- 更新人ID
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, -- 更新时间
is_deleted TINYINT DEFAULT 0, -- 是否删除: 0-未删除, 1-已删除
remarks VARCHAR(500) -- 备注
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '成长课题表';
-- ============================================================================
-- 8. 课题互动表 (topic_interaction)
-- ============================================================================
CREATE TABLE topic_interaction (
id VARCHAR(36) PRIMARY KEY, -- UUID主键
topic_id VARCHAR(36) NOT NULL, -- 课题ID
type VARCHAR(50) NOT NULL, -- 互动类型
content TEXT, -- 内容
user_input TEXT, -- 用户输入
ai_response TEXT, -- AI回应
rating INT, -- 评分
feedback TEXT, -- 反馈
completed_time DATETIME, -- 完成时间
id VARCHAR(36) PRIMARY KEY, -- UUID主键
topic_id VARCHAR(36) , -- 课题ID
type VARCHAR(50) , -- 互动类型
content TEXT, -- 内容
user_input TEXT, -- 用户输入
ai_response TEXT, -- AI回应
rating INT, -- 评分
feedback TEXT, -- 反馈
completed_time DATETIME, -- 完成时间
-- 公共字段
create_by VARCHAR(36), -- 创建人ID
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, -- 创建时间
update_by VARCHAR(36), -- 更新人ID
update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, -- 更新时间
is_deleted TINYINT NOT NULL DEFAULT 0, -- 是否删除: 0-未删除, 1-已删除
remarks VARCHAR(500) -- 备注
create_by VARCHAR(36), -- 创建人ID
create_time DATETIME DEFAULT CURRENT_TIMESTAMP, -- 创建时间
update_by VARCHAR(36), -- 更新人ID
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, -- 更新时间
is_deleted TINYINT DEFAULT 0, -- 是否删除: 0-未删除, 1-已删除
remarks VARCHAR(500) -- 备注
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '课题互动表';
-- ============================================================================
-- 9. 地点标记表 (location_pin)
-- ============================================================================
CREATE TABLE location_pin (
id VARCHAR(36) PRIMARY KEY, -- UUID主键
name VARCHAR(100) NOT NULL, -- 地点名称
type VARCHAR(50) NOT NULL, -- 地点类型
category VARCHAR(50), -- 地点分类
latitude DECIMAL(10, 8) NOT NULL, -- 纬度
longitude DECIMAL(11, 8) NOT NULL, -- 经度
address VARCHAR(200), -- 地址
description TEXT, -- 描述
created_by VARCHAR(36), -- 创建者
likes INT NOT NULL DEFAULT 0, -- 点赞数
visits INT NOT NULL DEFAULT 0, -- 访问数
is_bookmarked TINYINT NOT NULL DEFAULT 0, -- 是否收藏
last_visit_time DATETIME, -- 最后访问时间
id VARCHAR(36) PRIMARY KEY, -- UUID主键
name VARCHAR(100) , -- 地点名称
type VARCHAR(50) , -- 地点类型
category VARCHAR(50), -- 地点分类
latitude DECIMAL(10, 8) , -- 纬度
longitude DECIMAL(11, 8) , -- 经度
address VARCHAR(200), -- 地址
description TEXT, -- 描述
created_by VARCHAR(36), -- 创建者
likes INT DEFAULT 0, -- 点赞数
visits INT DEFAULT 0, -- 访问数
is_bookmarked TINYINT DEFAULT 0, -- 是否收藏
last_visit_time DATETIME, -- 最后访问时间
-- 公共字段
create_by VARCHAR(36), -- 创建人ID
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, -- 创建时间
update_by VARCHAR(36), -- 更新人ID
update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, -- 更新时间
is_deleted TINYINT NOT NULL DEFAULT 0, -- 是否删除: 0-未删除, 1-已删除
remarks VARCHAR(500) -- 备注
create_by VARCHAR(36), -- 创建人ID
create_time DATETIME DEFAULT CURRENT_TIMESTAMP, -- 创建时间
update_by VARCHAR(36), -- 更新人ID
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, -- 更新时间
is_deleted TINYINT DEFAULT 0, -- 是否删除: 0-未删除, 1-已删除
remarks VARCHAR(500) -- 备注
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '地点标记表';
-- ============================================================================
-- 10. 社区帖子表 (community_post)
-- ============================================================================
CREATE TABLE community_post (
id VARCHAR(36) PRIMARY KEY, -- UUID主键
user_id VARCHAR(36) NOT NULL, -- 用户ID
location_id VARCHAR(36), -- 地点ID
title VARCHAR(200), -- 标题
content TEXT NOT NULL, -- 内容
type VARCHAR(50) NOT NULL, -- 帖子类型
images JSON, -- 图片列表
tags JSON, -- 标签
likes INT NOT NULL DEFAULT 0, -- 点赞数
view_count INT NOT NULL DEFAULT 0, -- 浏览数
comment_count INT NOT NULL DEFAULT 0, -- 评论数
is_private TINYINT NOT NULL DEFAULT 0, -- 是否私密
id VARCHAR(36) PRIMARY KEY, -- UUID主键
user_id VARCHAR(36) , -- 用户ID
location_id VARCHAR(36), -- 地点ID
title VARCHAR(200), -- 标题
content TEXT , -- 内容
type VARCHAR(50) , -- 帖子类型
images JSON, -- 图片列表
tags JSON, -- 标签
likes INT DEFAULT 0, -- 点赞数
view_count INT DEFAULT 0, -- 浏览数
comment_count INT DEFAULT 0, -- 评论数
is_private TINYINT DEFAULT 0, -- 是否私密
-- 公共字段
create_by VARCHAR(36), -- 创建人ID
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, -- 创建时间
update_by VARCHAR(36), -- 更新人ID
update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, -- 更新时间
is_deleted TINYINT NOT NULL DEFAULT 0, -- 是否删除: 0-未删除, 1-已删除
remarks VARCHAR(500) -- 备注
create_by VARCHAR(36), -- 创建人ID
create_time DATETIME DEFAULT CURRENT_TIMESTAMP, -- 创建时间
update_by VARCHAR(36), -- 更新人ID
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, -- 更新时间
is_deleted TINYINT DEFAULT 0, -- 是否删除: 0-未删除, 1-已删除
remarks VARCHAR(500) -- 备注
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '社区帖子表';
-- ============================================================================
-- 11. 评论表 (comment)
-- ============================================================================
CREATE TABLE comment (
id VARCHAR(36) PRIMARY KEY, -- UUID主键
post_id VARCHAR(36) NOT NULL, -- 帖子ID
user_id VARCHAR(36) NOT NULL, -- 用户ID
content TEXT NOT NULL, -- 评论内容
reply_to_id VARCHAR(36), -- 回复的评论ID
likes INT NOT NULL DEFAULT 0, -- 点赞数
id VARCHAR(36) PRIMARY KEY, -- UUID主键
post_id VARCHAR(36) , -- 帖子ID
user_id VARCHAR(36) , -- 用户ID
content TEXT , -- 评论内容
reply_to_id VARCHAR(36), -- 回复的评论ID
likes INT DEFAULT 0, -- 点赞数
-- 公共字段
create_by VARCHAR(36), -- 创建人ID
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, -- 创建时间
update_by VARCHAR(36), -- 更新人ID
update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, -- 更新时间
is_deleted TINYINT NOT NULL DEFAULT 0, -- 是否删除: 0-未删除, 1-已删除
remarks VARCHAR(500) -- 备注
create_by VARCHAR(36), -- 创建人ID
create_time DATETIME DEFAULT CURRENT_TIMESTAMP, -- 创建时间
update_by VARCHAR(36), -- 更新人ID
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, -- 更新时间
is_deleted TINYINT DEFAULT 0, -- 是否删除: 0-未删除, 1-已删除
remarks VARCHAR(500) -- 备注
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '评论表';
-- ============================================================================
-- 12. 成就表 (achievement)
-- ============================================================================
CREATE TABLE achievement (
id VARCHAR(36) PRIMARY KEY, -- UUID主键
title VARCHAR(100) NOT NULL, -- 成就标题
description TEXT, -- 描述
category VARCHAR(50) NOT NULL, -- 分类
icon VARCHAR(200), -- 图标
rarity VARCHAR(20) NOT NULL, -- 稀有度
condition_type VARCHAR(50), -- 条件类型
condition_value JSON, -- 条件值
rewards JSON, -- 奖励
unlocked_time DATETIME, -- 解锁时间
progress DECIMAL(5, 2) NOT NULL DEFAULT 0.00, -- 进度
is_hidden TINYINT NOT NULL DEFAULT 0, -- 是否隐藏
id VARCHAR(36) PRIMARY KEY, -- UUID主键
title VARCHAR(100) , -- 成就标题
description TEXT, -- 描述
category VARCHAR(50) , -- 分类
icon VARCHAR(200), -- 图标
rarity VARCHAR(20) , -- 稀有度
condition_type VARCHAR(50), -- 条件类型
condition_value JSON, -- 条件值
rewards JSON, -- 奖励
unlocked_time DATETIME, -- 解锁时间
progress DECIMAL(5, 2) DEFAULT 0.00, -- 进度
is_hidden TINYINT DEFAULT 0, -- 是否隐藏
-- 公共字段
create_by VARCHAR(36), -- 创建人ID
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, -- 创建时间
update_by VARCHAR(36), -- 更新人ID
update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, -- 更新时间
is_deleted TINYINT NOT NULL DEFAULT 0, -- 是否删除: 0-未删除, 1-已删除
remarks VARCHAR(500) -- 备注
create_by VARCHAR(36), -- 创建人ID
create_time DATETIME DEFAULT CURRENT_TIMESTAMP, -- 创建时间
update_by VARCHAR(36), -- 更新人ID
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, -- 更新时间
is_deleted TINYINT DEFAULT 0, -- 是否删除: 0-未删除, 1-已删除
remarks VARCHAR(500) -- 备注
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '成就表';
-- ============================================================================
-- 13. 奖励表 (reward)
-- ============================================================================
CREATE TABLE reward (
id VARCHAR(36) PRIMARY KEY, -- UUID主键
topic_id VARCHAR(36), -- 课题ID
achievement_id VARCHAR(36), -- 成就ID
type VARCHAR(50) NOT NULL, -- 奖励类型
name VARCHAR(100) NOT NULL, -- 奖励名称
description TEXT, -- 描述
icon VARCHAR(200), -- 图标
rarity VARCHAR(20), -- 稀有度
value JSON, -- 奖励值
earned_time DATETIME, -- 获得时间
is_new TINYINT NOT NULL DEFAULT 1, -- 是否新获得
id VARCHAR(36) PRIMARY KEY, -- UUID主键
topic_id VARCHAR(36), -- 课题ID
achievement_id VARCHAR(36), -- 成就ID
type VARCHAR(50) , -- 奖励类型
name VARCHAR(100) , -- 奖励名称
description TEXT, -- 描述
icon VARCHAR(200), -- 图标
rarity VARCHAR(20), -- 稀有度
value JSON, -- 奖励值
earned_time DATETIME, -- 获得时间
is_new TINYINT DEFAULT 1, -- 是否新获得
-- 公共字段
create_by VARCHAR(36), -- 创建人ID
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, -- 创建时间
update_by VARCHAR(36), -- 更新人ID
update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, -- 更新时间
is_deleted TINYINT NOT NULL DEFAULT 0, -- 是否删除: 0-未删除, 1-已删除
remarks VARCHAR(500) -- 备注
create_by VARCHAR(36), -- 创建人ID
create_time DATETIME DEFAULT CURRENT_TIMESTAMP, -- 创建时间
update_by VARCHAR(36), -- 更新人ID
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, -- 更新时间
is_deleted TINYINT DEFAULT 0, -- 是否删除: 0-未删除, 1-已删除
remarks VARCHAR(500) -- 备注
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '奖励表';
-- ============================================================================
-- 14. 访客用户表 (guest_user)
-- ============================================================================
CREATE TABLE guest_user (
id VARCHAR(36) PRIMARY KEY, -- UUID主键
guest_user_id VARCHAR(50) NOT NULL UNIQUE, -- 访客用户ID (格式: guest_xxx)
ip_address VARCHAR(45) NOT NULL, -- 客户端IP地址 (支持IPv6)
user_agent TEXT, -- 用户代理信息
nickname VARCHAR(50), -- 访客昵称
avatar VARCHAR(500), -- 访客头像
last_active_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, -- 最后活跃时间
conversation_count INT NOT NULL DEFAULT 0, -- 会话数量
message_count INT NOT NULL DEFAULT 0, -- 消息数量
location VARCHAR(100), -- IP地址的地理位置信息
device_info VARCHAR(200), -- 设备信息
id VARCHAR(36) PRIMARY KEY, -- UUID主键
guest_user_id VARCHAR(50) UNIQUE, -- 访客用户ID (格式: guest_xxx)
ip_address VARCHAR(45) , -- 客户端IP地址 (支持IPv6)
user_agent TEXT, -- 用户代理信息
nickname VARCHAR(50), -- 访客昵称
avatar VARCHAR(500), -- 访客头像
last_active_time DATETIME DEFAULT CURRENT_TIMESTAMP, -- 最后活跃时间
conversation_count INT DEFAULT 0, -- 会话数量
message_count INT DEFAULT 0, -- 消息数量
location VARCHAR(100), -- IP地址的地理位置信息
device_info VARCHAR(200), -- 设备信息
-- 公共字段
create_by VARCHAR(36), -- 创建人ID
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, -- 创建时间
update_by VARCHAR(36), -- 更新人ID
update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, -- 更新时间
is_deleted TINYINT NOT NULL DEFAULT 0, -- 是否删除: 0-未删除, 1-已删除
remarks VARCHAR(500) -- 备注
create_by VARCHAR(36), -- 创建人ID
create_time DATETIME DEFAULT CURRENT_TIMESTAMP, -- 创建时间
update_by VARCHAR(36), -- 更新人ID
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, -- 更新时间
is_deleted TINYINT DEFAULT 0, -- 是否删除: 0-未删除, 1-已删除
remarks VARCHAR(500) -- 备注
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '访客用户表';
-- ============================================================================
-- 15. 用户统计表 (user_stats)
-- ============================================================================
CREATE TABLE user_stats (
id VARCHAR(36) PRIMARY KEY, -- UUID主键
user_id VARCHAR(36) NOT NULL UNIQUE, -- 用户ID
total_conversations INT NOT NULL DEFAULT 0, -- 总对话数
total_messages INT NOT NULL DEFAULT 0, -- 总消息数
total_emotions_recorded INT NOT NULL DEFAULT 0, -- 总情绪记录数
topics_completed INT NOT NULL DEFAULT 0, -- 完成的课题数
achievements_unlocked INT NOT NULL DEFAULT 0, -- 解锁的成就数
total_points INT NOT NULL DEFAULT 0, -- 总积分
consecutive_days INT NOT NULL DEFAULT 0, -- 连续使用天数
max_consecutive_days INT NOT NULL DEFAULT 0, -- 最大连续天数
locations_visited INT NOT NULL DEFAULT 0, -- 访问的地点数
posts_created INT NOT NULL DEFAULT 0, -- 创建的帖子数
comments_made INT NOT NULL DEFAULT 0, -- 评论数
likes_received INT NOT NULL DEFAULT 0, -- 收到的点赞数
social_interactions INT NOT NULL DEFAULT 0, -- 社交互动数
id VARCHAR(36) PRIMARY KEY, -- UUID主键
user_id VARCHAR(36) UNIQUE, -- 用户ID
total_conversations INT DEFAULT 0, -- 总对话数
total_messages INT DEFAULT 0, -- 总消息数
total_emotions_recorded INT DEFAULT 0, -- 总情绪记录数
topics_completed INT DEFAULT 0, -- 完成的课题数
achievements_unlocked INT DEFAULT 0, -- 解锁的成就数
total_points INT DEFAULT 0, -- 总积分
consecutive_days INT DEFAULT 0, -- 连续使用天数
max_consecutive_days INT DEFAULT 0, -- 最大连续天数
locations_visited INT DEFAULT 0, -- 访问的地点数
posts_created INT DEFAULT 0, -- 创建的帖子数
comments_made INT DEFAULT 0, -- 评论数
likes_received INT DEFAULT 0, -- 收到的点赞数
social_interactions INT DEFAULT 0, -- 社交互动数
-- 公共字段
create_by VARCHAR(36), -- 创建人ID
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, -- 创建时间
update_by VARCHAR(36), -- 更新人ID
update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, -- 更新时间
is_deleted TINYINT NOT NULL DEFAULT 0, -- 是否删除: 0-未删除, 1-已删除
remarks VARCHAR(500) -- 备注
create_by VARCHAR(36), -- 创建人ID
create_time DATETIME DEFAULT CURRENT_TIMESTAMP, -- 创建时间
update_by VARCHAR(36), -- 更新人ID
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, -- 更新时间
is_deleted TINYINT DEFAULT 0, -- 是否删除: 0-未删除, 1-已删除
remarks VARCHAR(500) -- 备注
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '用户统计表';
-- ============================================================================
@@ -836,7 +836,7 @@ SELECT
FROM
INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'emotion_museum';
TABLE_SCHEMA = 'emotion';
-- 显示创建的表
SELECT
@@ -846,7 +846,7 @@ SELECT
FROM
INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'emotion_museum'
TABLE_SCHEMA = 'emotion'
ORDER BY
TABLE_NAME;