优化调整

This commit is contained in:
2025-07-26 00:37:18 +08:00
parent 08bbd4df0f
commit 0dfabc35d7
90 changed files with 3594 additions and 2294 deletions
@@ -3,6 +3,9 @@ package com.emotion.common;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.experimental.SuperBuilder;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
import java.io.Serializable;
import java.time.LocalDateTime;
@@ -14,6 +17,9 @@ import java.time.LocalDateTime;
* @date 2025-07-22
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class BaseEntity implements Serializable {
private static final long serialVersionUID = 1L;
@@ -0,0 +1,45 @@
package com.emotion.config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import java.util.concurrent.Executor;
/**
* 多线程异步任务线程池配置
*/
@Configuration
@EnableAsync
public class AsyncConfig {
@Value("${async.core-pool-size:10}")
private int corePoolSize;
@Value("${async.max-pool-size:50}")
private int maxPoolSize;
@Value("${async.queue-capacity:200}")
private int queueCapacity;
@Value("${async.keep-alive-seconds:60}")
private int keepAliveSeconds;
@Value("${async.thread-name-prefix:single-async-}")
private String threadNamePrefix;
@Bean(name = "taskExecutor")
public Executor taskExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(corePoolSize);
executor.setMaxPoolSize(maxPoolSize);
executor.setQueueCapacity(queueCapacity);
executor.setKeepAliveSeconds(keepAliveSeconds);
executor.setThreadNamePrefix(threadNamePrefix);
executor.setRejectedExecutionHandler(new java.util.concurrent.ThreadPoolExecutor.CallerRunsPolicy());
executor.initialize();
return executor;
}
}
@@ -8,7 +8,8 @@ import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.scheduling.annotation.Async;
import java.util.concurrent.CompletableFuture;
import java.util.Map;
/**
@@ -29,16 +30,11 @@ public class EmotionSummaryController {
@Operation(summary = "生成用户当天的情绪记录总结", description = "基于用户当天的聊天记录生成情绪分析和记录")
@PostMapping("/generate")
public Result<Map<String, Object>> generateEmotionSummary() {
try {
// 从上下文中获取当前用户ID
String userId = CurrentUserUtil.requireCurrentUserId();
log.info("收到生成情绪记录总结请求: userId={}", userId);
// 调用AI服务生成情绪总结
Map<String, Object> result = aiChatService.generateEmotionSummary(userId);
// 调用AI服务异步生成情绪总结(阻塞获取结果)
Map<String, Object> result = aiChatService.generateEmotionSummaryAsync(userId).get();
if ((Boolean) result.get("success")) {
log.info("情绪记录总结生成成功: userId={}", userId);
return Result.success("情绪记录总结生成成功", result);
@@ -47,7 +43,6 @@ public class EmotionSummaryController {
log.warn("情绪记录总结生成失败: userId={}, message={}", userId, message);
return Result.error(message);
}
} catch (IllegalStateException e) {
log.warn("用户认证失败: {}", e.getMessage());
return Result.error(e.getMessage());
@@ -2,11 +2,11 @@ package com.emotion.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.emotion.common.BaseEntity;
import lombok.experimental.SuperBuilder;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@@ -19,7 +19,7 @@ import java.time.LocalDateTime;
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Builder
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@TableName("achievement")
@@ -2,11 +2,11 @@ package com.emotion.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.emotion.common.BaseEntity;
import lombok.experimental.SuperBuilder;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
/**
* 评论实体类
@@ -16,7 +16,7 @@ import lombok.NoArgsConstructor;
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Builder
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@TableName("comment")
@@ -2,11 +2,11 @@ package com.emotion.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.emotion.common.BaseEntity;
import lombok.experimental.SuperBuilder;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
/**
* 社区帖子实体类
@@ -16,7 +16,7 @@ import lombok.NoArgsConstructor;
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Builder
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@TableName("community_post")
@@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.annotation.*;
import com.emotion.common.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.Builder;
import lombok.experimental.SuperBuilder;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
@@ -19,7 +19,7 @@ import java.time.LocalDateTime;
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Builder
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@TableName("conversation")
@@ -3,7 +3,7 @@ package com.emotion.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.emotion.common.BaseEntity;
import lombok.Data;
import lombok.Builder;
import lombok.experimental.SuperBuilder;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
import lombok.EqualsAndHashCode;
@@ -19,7 +19,7 @@ import java.time.LocalDateTime;
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Builder
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@TableName("coze_api_call")
@@ -2,11 +2,11 @@ package com.emotion.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.emotion.common.BaseEntity;
import lombok.experimental.SuperBuilder;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@@ -19,7 +19,7 @@ import java.time.LocalDateTime;
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Builder
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@TableName("emotion_analysis")
@@ -2,11 +2,11 @@ package com.emotion.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.emotion.common.BaseEntity;
import lombok.experimental.SuperBuilder;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
import java.time.LocalDate;
@@ -19,7 +19,7 @@ import java.time.LocalDate;
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Builder
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@TableName("emotion_record")
@@ -2,11 +2,11 @@ package com.emotion.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.emotion.common.BaseEntity;
import lombok.experimental.SuperBuilder;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@@ -19,7 +19,7 @@ import java.time.LocalDateTime;
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Builder
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@TableName("growth_topic")
@@ -2,11 +2,11 @@ package com.emotion.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.emotion.common.BaseEntity;
import lombok.experimental.SuperBuilder;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import java.time.LocalDateTime;
@@ -18,7 +18,7 @@ import java.time.LocalDateTime;
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Builder
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@TableName("guest_user")
@@ -2,11 +2,11 @@ package com.emotion.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.emotion.common.BaseEntity;
import lombok.experimental.SuperBuilder;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@@ -19,7 +19,7 @@ import java.time.LocalDateTime;
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Builder
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@TableName("location_pin")
@@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.annotation.*;
import com.emotion.common.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.Builder;
import lombok.experimental.SuperBuilder;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
@@ -19,7 +19,7 @@ import java.time.LocalDateTime;
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Builder
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@TableName("message")
@@ -2,11 +2,11 @@ package com.emotion.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.emotion.common.BaseEntity;
import lombok.experimental.SuperBuilder;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import java.time.LocalDateTime;
@@ -18,7 +18,7 @@ import java.time.LocalDateTime;
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Builder
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@TableName("reward")
@@ -2,11 +2,11 @@ package com.emotion.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.emotion.common.BaseEntity;
import lombok.experimental.SuperBuilder;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import java.time.LocalDateTime;
@@ -18,7 +18,7 @@ import java.time.LocalDateTime;
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Builder
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@TableName("topic_interaction")
@@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.annotation.*;
import com.emotion.common.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.Builder;
import lombok.experimental.SuperBuilder;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
@@ -20,7 +20,7 @@ import java.time.LocalDateTime;
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Builder
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@TableName("user")
@@ -2,11 +2,11 @@ package com.emotion.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.emotion.common.BaseEntity;
import lombok.experimental.SuperBuilder;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
/**
* 用户统计实体类
@@ -16,7 +16,7 @@ import lombok.NoArgsConstructor;
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Builder
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@TableName("user_stats")
@@ -1,76 +1,110 @@
package com.emotion.service;
import java.util.Map;
/**
* AI聊天服务接口
*
*
* @author emotion-museum
* @date 2025-07-24
*/
public interface AiChatService {
/**
* 发送聊天消息
* 发送聊天消息(保存用户消息和AI回复)
* @param conversationId 会话ID
* @param message 用户消息内容
* @param userId 用户ID
* @return AI回复内容
*/
String sendChatMessage(String conversationId, String message, String userId);
/**
* 发送聊天消息(仅获取AI回复,不保存用户消息
* 用于WebSocket场景,避免重复保存用户消息
* WebSocket方式发送聊天消息(只保存AI回复)
* @param conversationId 会话ID
* @param message 用户消息内容
* @param userId 用户ID
* @return AI回复内容
*/
String sendChatMessageForWebSocket(String conversationId, String message, String userId);
/**
* 生成对话总结
* @param conversationId 会话ID
* @param userId 用户ID
* @return 总结内容
*/
String generateConversationSummary(String conversationId, String userId);
/**
* 检查服务是否可用
* 检查AI服务是否可用
* @return 可用返回true,否则false
*/
boolean isServiceAvailable();
/**
* 获取服务状态
* 获取AI服务状态
* @return "available" 或 "unavailable"
*/
String getServiceStatus();
/**
* 发送消息到Coze AI
* 发送消息到Coze AI(不保存消息,仅AI交互)
* @param conversationId 会话ID
* @param userMessage 用户消息内容
* @param userId 用户ID
* @return AI回复内容
*/
String sendMessage(String conversationId, String userMessage, String userId);
/**
* 访客聊天(不需要登录)
* 访客聊天(不登录情况下
* @param message 用户消息内容
* @param clientIp 客户端IP
* @return 包含AI回复等信息的Map
*/
Map<String, Object> guestChat(String message, String clientIp);
java.util.Map<String, Object> guestChat(String message, String clientIp);
/**
* 创建对话
* 创建对话
* @param userId 用户ID
* @param title 对话标题
* @return 包含对话信息的Map
*/
Map<String, Object> createConversation(String userId, String title);
java.util.Map<String, Object> createConversation(String userId, String title);
/**
* 获取访客用户信息
* @param clientIp 客户端IP
* @return 包含访客信息的Map
*/
Map<String, Object> getGuestUserInfo(String clientIp);
java.util.Map<String, Object> getGuestUserInfo(String clientIp);
/**
* 流式聊天
* 流式聊天(暂时降级为普通聊天)
* @param conversationId 会话ID
* @param message 用户消息内容
* @param userId 用户ID
* @return AI回复内容
*/
String streamChat(String conversationId, String message, String userId);
/**
* 健康检查
* @return 健康返回true,否则false
*/
boolean healthCheck();
/**
* 生成用户当天的情绪记录总结
*
* 生成用户情绪记录总结
* @param userId 用户ID
* @return 情绪记录结果
* @return 包含情绪总结等信息的Map
*/
Map<String, Object> generateEmotionSummary(String userId);
java.util.Map<String, Object> generateEmotionSummary(String userId);
/**
* 异步生成用户情绪记录总结
* @param userId 用户ID
* @return 包含情绪总结等信息的CompletableFuture
*/
java.util.concurrent.CompletableFuture<java.util.Map<String, Object>> generateEmotionSummaryAsync(String userId);
}
@@ -24,6 +24,8 @@ import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import org.springframework.scheduling.annotation.Async;
import java.util.concurrent.CompletableFuture;
import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal;
@@ -34,6 +36,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import java.util.Arrays;
/**
* AI聊天服务实现类
@@ -1017,12 +1020,12 @@ public class AiChatServiceImpl implements AiChatService {
String chatHistory = integrateChatHistory(todayMessages);
log.info("聊天记录整合完成,总长度: {}", chatHistory.length());
// 构建情绪分析提示词
String emotionPrompt = buildEmotionAnalysisPrompt(chatHistory);
// Coze 中已经在工作流设置了提示词,目前不需要构建情绪分析提示词
// String emotionPrompt = buildEmotionAnalysisPrompt(chatHistory);
// 调用Coze API进行情绪分析总结
String conversationId = "emotion_summary_" + userId + "_" + today.format(DateTimeFormatter.ofPattern("yyyyMMdd"));
String emotionSummary = sendSummaryMessage(conversationId, emotionPrompt, userId);
String emotionSummary = sendSummaryMessage(conversationId, chatHistory, userId);
log.info("情绪分析总结生成完成: {}", emotionSummary);
// 解析AI返回的情绪分析结果
@@ -1049,6 +1052,13 @@ public class AiChatServiceImpl implements AiChatService {
return result;
}
@Override
@Async("taskExecutor")
public CompletableFuture<Map<String, Object>> generateEmotionSummaryAsync(String userId) {
Map<String, Object> result = generateEmotionSummary(userId);
return CompletableFuture.completedFuture(result);
}
/**
* 整合聊天记录
*/
@@ -1106,7 +1116,7 @@ public class AiChatServiceImpl implements AiChatService {
return EmotionAnalysis.builder()
.primaryEmotion(json.getString("primaryEmotion"))
.intensity(BigDecimal.valueOf(json.getDoubleValue("intensity")))
.keywords(json.getString("triggers"))
.keywords(JSON.toJSONString(Arrays.asList(json.getString("triggers"))))
.suggestion(json.getString("suggestions"))
.text(summary)
.polarity(determinePolarity(json.getString("primaryEmotion")))
@@ -1122,7 +1132,7 @@ public class AiChatServiceImpl implements AiChatService {
return EmotionAnalysis.builder()
.primaryEmotion("平静")
.intensity(BigDecimal.valueOf(0.5))
.keywords("日常对话")
.keywords(JSON.toJSONString(Arrays.asList("日常对话")))
.suggestion("保持当前的积极状态")
.text(summary)
.polarity("neutral")
@@ -1192,7 +1202,7 @@ public class AiChatServiceImpl implements AiChatService {
.triggers(analysisResult.getKeywords())
.description(analysisResult.getText())
.notes("基于当天聊天记录自动生成的情绪分析")
.tags("AI分析,聊天记录,情绪总结")
.tags(JSON.toJSONString(Arrays.asList("AI分析", "聊天记录", "情绪总结")))
.build();
emotionRecordService.save(record);
@@ -103,3 +103,10 @@ emotion:
- /api/actuator/**
- /api/websocket/**
- /api/ai/guest/**
async:
core-pool-size: 10
max-pool-size: 50
queue-capacity: 200
keep-alive-seconds: 60
thread-name-prefix: single-async-
@@ -74,7 +74,7 @@ DROP TABLE IF EXISTS user;
-- 1. 用户表 (user)
-- ============================================================================
CREATE TABLE user (
id VARCHAR(36) PRIMARY KEY COMMENT 'UUID主键', -- UUID主键
id VARCHAR(64) PRIMARY KEY COMMENT 'UUID主键', -- UUID主键
account VARCHAR(50) UNIQUE COMMENT '账号', -- 账号
password VARCHAR(255) COMMENT '密码(加密后)', -- 密码(加密后)
username VARCHAR(50) UNIQUE COMMENT '用户名', -- 用户名
@@ -101,9 +101,9 @@ CREATE TABLE user (
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(36) COMMENT '创建人ID', -- 创建人ID
create_by VARCHAR(64) COMMENT '创建人ID', -- 创建人ID
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', -- 创建时间
update_by VARCHAR(36) COMMENT '更新人ID', -- 更新人ID
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 '备注' -- 备注
@@ -114,8 +114,8 @@ CREATE TABLE user (
-- 关联说明: user_id 关联 user.id,通过代码逻辑维护关联关系
-- ============================================================================
CREATE TABLE conversation (
id VARCHAR(36) PRIMARY KEY COMMENT 'UUID主键', -- UUID主键
user_id VARCHAR(36) COMMENT '用户ID (关联user.id)', -- 用户ID (关联user.id)
id VARCHAR(64) PRIMARY KEY COMMENT 'UUID主键', -- UUID主键
user_id VARCHAR(64) COMMENT '用户ID (关联user.id)', -- 用户ID (关联user.id)
user_type VARCHAR(20) DEFAULT 'registered' COMMENT '用户类型: registered-注册用户, guest-访客用户', -- 用户类型: registered-注册用户, guest-访客用户
title VARCHAR(200) COMMENT '对话标题', -- 对话标题
type VARCHAR(50) DEFAULT 'emotion_chat' COMMENT '对话类型', -- 对话类型
@@ -143,9 +143,9 @@ CREATE TABLE conversation (
tags JSON COMMENT '标签', -- 标签
metadata JSON COMMENT '扩展元数据', -- 扩展元数据
-- 公共字段
create_by VARCHAR(36) COMMENT '创建人ID', -- 创建人ID
create_by VARCHAR(64) COMMENT '创建人ID', -- 创建人ID
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', -- 创建时间
update_by VARCHAR(36) COMMENT '更新人ID', -- 更新人ID
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 '备注' -- 备注
@@ -156,8 +156,8 @@ CREATE TABLE conversation (
-- 关联说明: conversation_id 关联 conversation.id,通过代码逻辑维护关联关系
-- ============================================================================
CREATE TABLE message (
id VARCHAR(36) PRIMARY KEY COMMENT 'UUID主键', -- UUID主键
conversation_id VARCHAR(36) COMMENT '对话ID (关联conversation.id)', -- 对话ID (关联conversation.id)
id VARCHAR(64) PRIMARY KEY COMMENT 'UUID主键', -- UUID主键
conversation_id VARCHAR(64) COMMENT '对话ID (关联conversation.id)', -- 对话ID (关联conversation.id)
content TEXT COMMENT '消息内容', -- 消息内容
type VARCHAR(50) DEFAULT 'text' COMMENT '消息类型', -- 消息类型
sender VARCHAR(20) COMMENT '发送者: user-用户, assistant-AI助手', -- 发送者: user-用户, assistant-AI助手
@@ -174,17 +174,17 @@ CREATE TABLE message (
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(36) COMMENT '父消息ID(用于回复链)', -- 父消息ID(用于回复链)
parent_message_id VARCHAR(64) COMMENT '父消息ID(用于回复链)', -- 父消息ID(用于回复链)
emotion_analysis JSON COMMENT '情绪分析结果', -- 情绪分析结果
metadata JSON COMMENT '扩展元数据', -- 扩展元数据
user_id VARCHAR(36) COMMENT '用户ID (注册用户或访客用户)', -- 用户ID (注册用户或访客用户)
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(36) COMMENT '创建人ID', -- 创建人ID
create_by VARCHAR(64) COMMENT '创建人ID', -- 创建人ID
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', -- 创建时间
update_by VARCHAR(36) COMMENT '更新人ID', -- 更新人ID
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 '备注' -- 备注
@@ -194,15 +194,15 @@ CREATE TABLE message (
-- 4. Coze API调用记录表 (coze_api_call) - 优化版本
-- ============================================================================
CREATE TABLE coze_api_call (
id VARCHAR(36) PRIMARY KEY COMMENT 'UUID主键', -- UUID主键
conversation_id VARCHAR(36) COMMENT '对话ID', -- 对话ID
message_id VARCHAR(36) COMMENT '消息ID', -- 消息ID
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(36) COMMENT '用户ID', -- 用户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
@@ -246,9 +246,9 @@ CREATE TABLE coze_api_call (
trace_id VARCHAR(100) COMMENT '追踪ID', -- 追踪ID
metadata JSON COMMENT '扩展元数据', -- 扩展元数据
-- 公共字段
create_by VARCHAR(36) COMMENT '创建人ID', -- 创建人ID
create_by VARCHAR(64) COMMENT '创建人ID', -- 创建人ID
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', -- 创建时间
update_by VARCHAR(36) COMMENT '更新人ID', -- 更新人ID
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 '备注' -- 备注
@@ -258,9 +258,9 @@ CREATE TABLE coze_api_call (
-- 5. 情绪分析表 (emotion_analysis)
-- ============================================================================
CREATE TABLE emotion_analysis (
id VARCHAR(36) PRIMARY KEY COMMENT 'UUID主键', -- UUID主键
user_id VARCHAR(36) COMMENT '用户ID', -- 用户ID
message_id VARCHAR(36) COMMENT '关联消息ID', -- 关联消息ID
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 '情绪强度', -- 情绪强度
@@ -272,9 +272,9 @@ CREATE TABLE emotion_analysis (
analysis_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '分析时间', -- 分析时间
metadata JSON COMMENT '扩展元数据', -- 扩展元数据
-- 公共字段
create_by VARCHAR(36) COMMENT '创建人ID', -- 创建人ID
create_by VARCHAR(64) COMMENT '创建人ID', -- 创建人ID
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', -- 创建时间
update_by VARCHAR(36) COMMENT '更新人ID', -- 更新人ID
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 '备注' -- 备注
@@ -284,8 +284,8 @@ CREATE TABLE emotion_analysis (
-- 6. 情绪记录表 (emotion_record)
-- ============================================================================
CREATE TABLE emotion_record (
id VARCHAR(36) PRIMARY KEY COMMENT 'UUID主键', -- UUID主键
user_id VARCHAR(36) COMMENT '用户ID', -- 用户ID
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 '情绪强度', -- 情绪强度
@@ -298,9 +298,9 @@ CREATE TABLE emotion_record (
people VARCHAR(200) COMMENT '相关人物', -- 相关人物
notes TEXT COMMENT '备注', -- 备注
-- 公共字段
create_by VARCHAR(36) COMMENT '创建人ID', -- 创建人ID
create_by VARCHAR(64) COMMENT '创建人ID', -- 创建人ID
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', -- 创建时间
update_by VARCHAR(36) COMMENT '更新人ID', -- 更新人ID
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 '备注' -- 备注
@@ -310,7 +310,7 @@ CREATE TABLE emotion_record (
-- 7. 成长课题表 (growth_topic)
-- ============================================================================
CREATE TABLE growth_topic (
id VARCHAR(36) PRIMARY KEY COMMENT 'UUID主键', -- UUID主键
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-困难
@@ -323,9 +323,9 @@ CREATE TABLE growth_topic (
completed_time DATETIME COMMENT '完成时间', -- 完成时间
rewards JSON COMMENT '奖励', -- 奖励
-- 公共字段
create_by VARCHAR(36) COMMENT '创建人ID', -- 创建人ID
create_by VARCHAR(64) COMMENT '创建人ID', -- 创建人ID
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', -- 创建时间
update_by VARCHAR(36) COMMENT '更新人ID', -- 更新人ID
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 '备注' -- 备注
@@ -335,8 +335,8 @@ CREATE TABLE growth_topic (
-- 8. 课题互动表 (topic_interaction)
-- ============================================================================
CREATE TABLE topic_interaction (
id VARCHAR(36) PRIMARY KEY COMMENT 'UUID主键', -- UUID主键
topic_id VARCHAR(36) COMMENT '课题ID', -- 课题ID
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 '用户输入', -- 用户输入
@@ -345,9 +345,9 @@ CREATE TABLE topic_interaction (
feedback TEXT COMMENT '反馈', -- 反馈
completed_time DATETIME COMMENT '完成时间', -- 完成时间
-- 公共字段
create_by VARCHAR(36) COMMENT '创建人ID', -- 创建人ID
create_by VARCHAR(64) COMMENT '创建人ID', -- 创建人ID
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', -- 创建时间
update_by VARCHAR(36) COMMENT '更新人ID', -- 更新人ID
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 '备注' -- 备注
@@ -357,7 +357,7 @@ CREATE TABLE topic_interaction (
-- 9. 地点标记表 (location_pin)
-- ============================================================================
CREATE TABLE location_pin (
id VARCHAR(36) PRIMARY KEY COMMENT 'UUID主键', -- UUID主键
id VARCHAR(64) PRIMARY KEY COMMENT 'UUID主键', -- UUID主键
name VARCHAR(100) COMMENT '地点名称', -- 地点名称
type VARCHAR(50) COMMENT '地点类型', -- 地点类型
category VARCHAR(50) COMMENT '地点分类', -- 地点分类
@@ -365,15 +365,15 @@ CREATE TABLE location_pin (
longitude DECIMAL(11, 8) COMMENT '经度', -- 经度
address VARCHAR(200) COMMENT '地址', -- 地址
description TEXT COMMENT '描述', -- 描述
created_by VARCHAR(36) COMMENT '创建者', -- 创建者
created_by VARCHAR(64) 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(36) COMMENT '创建人ID', -- 创建人ID
create_by VARCHAR(64) COMMENT '创建人ID', -- 创建人ID
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', -- 创建时间
update_by VARCHAR(36) COMMENT '更新人ID', -- 更新人ID
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 '备注' -- 备注
@@ -383,9 +383,9 @@ CREATE TABLE location_pin (
-- 10. 社区帖子表 (community_post)
-- ============================================================================
CREATE TABLE community_post (
id VARCHAR(36) PRIMARY KEY COMMENT 'UUID主键', -- UUID主键
user_id VARCHAR(36) COMMENT '用户ID', -- 用户ID
location_id VARCHAR(36) COMMENT '地点ID', -- 地点ID
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 '帖子类型', -- 帖子类型
@@ -396,9 +396,9 @@ CREATE TABLE community_post (
comment_count INT DEFAULT 0 COMMENT '评论数', -- 评论数
is_private TINYINT DEFAULT 0 COMMENT '是否私密', -- 是否私密
-- 公共字段
create_by VARCHAR(36) COMMENT '创建人ID', -- 创建人ID
create_by VARCHAR(64) COMMENT '创建人ID', -- 创建人ID
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', -- 创建时间
update_by VARCHAR(36) COMMENT '更新人ID', -- 更新人ID
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 '备注' -- 备注
@@ -408,16 +408,16 @@ CREATE TABLE community_post (
-- 11. 评论表 (comment)
-- ============================================================================
CREATE TABLE comment (
id VARCHAR(36) PRIMARY KEY COMMENT 'UUID主键', -- UUID主键
post_id VARCHAR(36) COMMENT '帖子ID', -- 帖子ID
user_id VARCHAR(36) COMMENT '用户ID', -- 用户ID
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(36) COMMENT '回复的评论ID', -- 回复的评论ID
reply_to_id VARCHAR(64) COMMENT '回复的评论ID', -- 回复的评论ID
likes INT DEFAULT 0 COMMENT '点赞数', -- 点赞数
-- 公共字段
create_by VARCHAR(36) COMMENT '创建人ID', -- 创建人ID
create_by VARCHAR(64) COMMENT '创建人ID', -- 创建人ID
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', -- 创建时间
update_by VARCHAR(36) COMMENT '更新人ID', -- 更新人ID
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 '备注' -- 备注
@@ -427,7 +427,7 @@ CREATE TABLE comment (
-- 12. 成就表 (achievement)
-- ============================================================================
CREATE TABLE achievement (
id VARCHAR(36) PRIMARY KEY COMMENT 'UUID主键', -- UUID主键
id VARCHAR(64) PRIMARY KEY COMMENT 'UUID主键', -- UUID主键
title VARCHAR(100) COMMENT '成就标题', -- 成就标题
description TEXT COMMENT '描述', -- 描述
category VARCHAR(50) COMMENT '分类', -- 分类
@@ -440,9 +440,9 @@ CREATE TABLE achievement (
progress DECIMAL(5, 2) DEFAULT 0.00 COMMENT '进度', -- 进度
is_hidden TINYINT DEFAULT 0 COMMENT '是否隐藏', -- 是否隐藏
-- 公共字段
create_by VARCHAR(36) COMMENT '创建人ID', -- 创建人ID
create_by VARCHAR(64) COMMENT '创建人ID', -- 创建人ID
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', -- 创建时间
update_by VARCHAR(36) COMMENT '更新人ID', -- 更新人ID
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 '备注' -- 备注
@@ -452,9 +452,9 @@ CREATE TABLE achievement (
-- 13. 奖励表 (reward)
-- ============================================================================
CREATE TABLE reward (
id VARCHAR(36) PRIMARY KEY COMMENT 'UUID主键', -- UUID主键
topic_id VARCHAR(36) COMMENT '课题ID', -- 课题ID
achievement_id VARCHAR(36) COMMENT '成就ID', -- 成就ID
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 '描述', -- 描述
@@ -464,9 +464,9 @@ CREATE TABLE reward (
earned_time DATETIME COMMENT '获得时间', -- 获得时间
is_new TINYINT DEFAULT 1 COMMENT '是否新获得', -- 是否新获得
-- 公共字段
create_by VARCHAR(36) COMMENT '创建人ID', -- 创建人ID
create_by VARCHAR(64) COMMENT '创建人ID', -- 创建人ID
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', -- 创建时间
update_by VARCHAR(36) COMMENT '更新人ID', -- 更新人ID
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 '备注' -- 备注
@@ -476,7 +476,7 @@ CREATE TABLE reward (
-- 14. 访客用户表 (guest_user)
-- ============================================================================
CREATE TABLE guest_user (
id VARCHAR(36) PRIMARY KEY COMMENT 'UUID主键', -- UUID主键
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 '用户代理信息', -- 用户代理信息
@@ -488,9 +488,9 @@ CREATE TABLE guest_user (
location VARCHAR(100) COMMENT 'IP地址的地理位置信息', -- IP地址的地理位置信息
device_info VARCHAR(200) COMMENT '设备信息', -- 设备信息
-- 公共字段
create_by VARCHAR(36) COMMENT '创建人ID', -- 创建人ID
create_by VARCHAR(64) COMMENT '创建人ID', -- 创建人ID
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', -- 创建时间
update_by VARCHAR(36) COMMENT '更新人ID', -- 更新人ID
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 '备注' -- 备注
@@ -500,8 +500,8 @@ CREATE TABLE guest_user (
-- 15. 用户统计表 (user_stats)
-- ============================================================================
CREATE TABLE user_stats (
id VARCHAR(36) PRIMARY KEY COMMENT 'UUID主键', -- UUID主键
user_id VARCHAR(36) UNIQUE COMMENT '用户ID', -- 用户ID
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 '总情绪记录数', -- 总情绪记录数
@@ -516,9 +516,9 @@ CREATE TABLE user_stats (
likes_received INT DEFAULT 0 COMMENT '收到的点赞数', -- 收到的点赞数
social_interactions INT DEFAULT 0 COMMENT '社交互动数', -- 社交互动数
-- 公共字段
create_by VARCHAR(36) COMMENT '创建人ID', -- 创建人ID
create_by VARCHAR(64) COMMENT '创建人ID', -- 创建人ID
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', -- 创建时间
update_by VARCHAR(36) COMMENT '更新人ID', -- 更新人ID
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 '备注' -- 备注