feat(chat): 实现新的对话接口和相关功能模块

- 添加了 AI 对话请求 VO 类 (AiChatReqVO),支持模型名称、温度等参数
- 新增 AI 响应实体类 (AiResponse)用于封装返回结果
- 创建 API 操作日志注解 (@ApiOperationLog) 和切面类 (ApiOperationLogAspect)
- 配置数据源使用 P6Spy 驱动并优化 HikariCP 连接池设置
- 更新 DashScope 模型配置,调整默认模型为 qwen-plus 及温度值
- 引入全局异常处理机制,包括基础异常接口和业务异常类- 新增对话控制器 (ChatController) 支持新建对话及流式交互- 创建对话及相关消息的数据访问对象 (ChatDO, ChatMessageDO) 和映射器
- 实现聊天服务接口及其实现类,支持创建新对话记录
- 添加自定义流式日志顾问 (CustomStreamLoggerAdvisor) 用于调试输出
- 删除旧版控制器和相关模型类,移除冗余配置项
- 增加日期常量工具类统一时间格式管理
- 修改 .gitignore 忽略 /logs/ 目录避免日志文件被提交
This commit is contained in:
2025-11-02 21:24:03 +08:00
parent 594adcc48d
commit f3f320f390
50 changed files with 1193 additions and 997 deletions

100
pom.xml
View File

@@ -17,39 +17,27 @@
<spring-ai.version>1.0.3</spring-ai.version>
<commons-lang3.version>3.19.0</commons-lang3.version>
<lombok.version>1.18.40</lombok.version>
<jsonschema-generator.version>4.38.0</jsonschema-generator.version>
<p6spy.version>3.9.1</p6spy.version>
<guava.version>33.0.0-jre</guava.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<!-- 排除默认的 Logback 依赖 -->
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>3.0.5</version>
</dependency>
<!-- Deepseek 模型 -->
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-model-deepseek</artifactId>
</dependency>
<!-- Ollama -->
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-model-ollama</artifactId>
</dependency>
<!-- 智谱AI -->
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-model-zhipuai</artifactId>
</dependency>
<!-- OpenAI -->
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-model-openai</artifactId>
</dependency>
<!-- 阿里云AI -->
<dependency>
<groupId>com.alibaba.cloud.ai</groupId>
@@ -65,19 +53,6 @@
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- 阿里百炼 SDK -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dashscope-sdk-java</artifactId>
<version>2.21.13</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
@@ -88,6 +63,53 @@
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</dependency>
<dependency>
<groupId>com.github.victools</groupId>
<artifactId>jsonschema-generator</artifactId>
<version>${jsonschema-generator.version}</version>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-vector-store-pgvector</artifactId>
</dependency>
<!-- Mybatis Plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-spring-boot3-starter</artifactId>
</dependency>
<!-- p6spy 组件 -->
<dependency>
<groupId>p6spy</groupId>
<artifactId>p6spy</artifactId>
<version>${p6spy.version}</version>
</dependency>
<!-- AOP 切面 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<!-- Log4j2 日志 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
<!-- 参数校验 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
<!-- 相关工具类 -->
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>${guava.version}</version>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
@@ -105,6 +127,14 @@
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- Mybatis Plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-bom</artifactId>
<version>3.5.14</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>