Files
backend/交接文档.md
2025-07-28 13:31:52 +08:00

168 lines
5.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 云大智能问答系统 - 项目交接文档
## 项目概述
云大智能问答系统(backserver)是一个基于Spring Boot 3.2.4的后端服务主要功能是提供智能问答和深度研究服务。系统采用前后端分离架构支持用户注册、登录、聊天会话管理和AI问答等功能。
### 技术栈
- **框架**: Spring Boot 3.2.4 + Spring Security + Spring AI
- **数据层**: MyBatis-Flex + MySQL
- **认证**: JWT Token
- **AI集成**: Spring AI OpenAI (使用GPT-4o-mini模型)
- **文档**: SpringDoc OpenAPI 3.0 + Swagger UI
- **构建工具**: Maven
## 已实现功能
### 1. 用户认证模块 (`com.yundage.chat.controller.AuthController`)
- **用户注册**: 支持邮箱验证码注册
- **用户登录**: JWT Token认证
- **密码重置**: 邮件验证码重置密码
- **登录状态检查**: 验证用户登录状态
**核心文件**:
- `src/main/java/com/yundage/chat/controller/AuthController.java`
- `src/main/java/com/yundage/chat/service/UserService.java`
- `src/main/java/com/yundage/chat/util/JwtUtil.java`
### 2. 智能问答模块 (`com.yundage.chat.controller.ChatController`)
- **智能问答**: `/qa/ask` - 支持普通聊天和深度研究两种模式
- **流式输出**: `/qa/ask/stream` - 支持Server-Sent Events的流式回复
- **会话管理**: 获取用户会话列表和消息历史
**功能特点**:
- 支持两种问答模式: `chat`(普通聊天) 和 `research`(深度研究)
- 会话持久化存储
- 消息序列化管理
- Token使用统计
**核心文件**:
- `src/main/java/com/yundage/chat/controller/ChatController.java:24`
- `src/main/java/com/yundage/chat/service/ChatService.java:30`
- `src/main/java/com/yundage/chat/dto/ChatRequest.java`
- `src/main/java/com/yundage/chat/dto/ChatResponse.java`
### 3. 用户管理模块 (`com.yundage.chat.controller.UserController`)
- **个人信息**: 获取和更新用户基本信息
- **用户类型**: 支持普通用户和高级用户类型
### 4. 数据模型
- **User**: 用户信息表,包含认证提供商、用户类型等字段
- **Conversation**: 会话表,支持不同聊天模式
- **Message**: 消息表,支持用户和助手消息
- **PasswordResetToken**: 密码重置令牌表
## 数据库配置
当前使用MySQL数据库连接信息在 `application.yml:4` 中配置:
```yaml
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://101.200.154.78:3306/yunda_qa
username: root
password: mysql_Jt3yzh
```
## AI模型配置
当前使用第三方OpenAI API服务配置在 `application.yml:20-26`:
```yaml
spring:
ai:
openai:
api-key: sk-5gAxnpuwJ9KIsea51cD05e21F1Ac4b6a99C8A97278C1F837
base-url: https://www.jzhengda-api.com
chat:
options:
model: gpt-4o-mini
```
## 需要优化的部分
### 1. 🔴 Token管理优化 (高优先级)
**现状问题**:
- JWT Token存储在内存中无法跨实例共享
- 缺乏Token黑名单机制
- 无法实现用户强制下线功能
**建议方案**:
```xml
<!-- 在pom.xml中添加Redis依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
```
**需要修改的文件**:
- `src/main/java/com/yundage/chat/util/JwtUtil.java:39` - 添加Redis Token存储
- `src/main/java/com/yundage/chat/config/JwtAuthenticationFilter.java` - 增加Token验证逻辑
- `application.yml` - 添加Redis配置
### 2. 🟡 AI响应优化 (中优先级)
**现状问题**:
- `ChatService.java:234-238` 中AI响应生成逻辑过于简单
- 缺乏错误重试机制
- Token统计不准确
**需要改进**:
- 完善AI响应生成逻辑
- 添加响应缓存机制
- 实现更精确的Token计算
### 3. 🟡 数据库连接池优化 (中优先级)
**建议**:
- 配置HikariCP连接池参数
- 添加数据库连接监控
- 实现读写分离
### 4. 🟢 邮件服务配置 (低优先级)
**现状**: `application.yml:8-19` 中邮件配置使用的是示例配置
**需要**: 配置真实的SMTP服务
### 5. 🟢 日志和监控 (低优先级)
**建议**:
- 添加业务日志记录
- 集成APM监控
- 添加健康检查端点
## API接口文档
系统已集成Swagger UI可通过以下地址访问:
- Swagger UI: `http://localhost:8080/swagger-ui.html`
- OpenAPI文档: `http://localhost:8080/api-docs`
详细的接口设计说明请参考 `docs/chat.md`
## 部署信息
项目包含Docker配置:
- `Dockerfile` - 容器化配置
- `docker-compose.yml` - 本地开发环境
- `deploy.sh` - 部署脚本
## 开发环境启动
1. 确保MySQL服务运行
2. 配置 `application.yml` 中的数据库连接
3. 运行 `mvn spring-boot:run` 启动服务
4. 访问 `http://localhost:8080/swagger-ui.html` 查看API文档
## 安全注意事项
⚠️ **重要**: 当前配置中包含敏感信息,生产环境需要:
- 使用环境变量替换硬编码的密码和API密钥
- 更新JWT密钥为更安全的值
- 配置HTTPS访问
- 限制数据库访问权限
---
*文档生成时间: 2025-07-28*
*当前版本: 0.0.1-SNAPSHOT*