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

5.0 KiB
Raw Blame History

云大智能问答系统 - 项目交接文档

项目概述

云大智能问答系统(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 中配置:

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:

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黑名单机制
  • 无法实现用户强制下线功能

建议方案:

<!-- 在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