192 lines
4.9 KiB
Markdown
192 lines
4.9 KiB
Markdown
# 知识管理系统
|
||
|
||
基于 Spring Boot 3.2.5 构建的知识管理系统后端服务,提供用户管理、文件管理、AI问答、考试系统等核心功能。
|
||
|
||
## 技术栈
|
||
|
||
- **框架**: Spring Boot 3.2.5
|
||
- **语言**: Java 17
|
||
- **数据库**: MySQL 8.0+
|
||
- **ORM**: MyBatis Plus 3.5.5
|
||
- **缓存**: Redis
|
||
- **认证**: JWT
|
||
- **API文档**: SpringDoc OpenAPI (Swagger)
|
||
|
||
## 快速开始
|
||
|
||
### 环境要求
|
||
|
||
- JDK 17+
|
||
- Maven 3.8+
|
||
- MySQL 8.0+
|
||
- Redis 6.0+
|
||
|
||
### 数据库配置
|
||
|
||
1. 创建数据库:
|
||
```sql
|
||
CREATE DATABASE knowledge_management_system CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||
```
|
||
|
||
2. 导入初始化SQL脚本:
|
||
```bash
|
||
mysql -u root -p knowledge_management_system < docs/sql/knowledge_management_system.sql
|
||
```
|
||
|
||
### 运行项目
|
||
|
||
**方式一:Maven 运行**
|
||
```bash
|
||
cd demo_1
|
||
mvn spring-boot:run
|
||
```
|
||
|
||
**方式二:打包运行**
|
||
```bash
|
||
mvn clean package
|
||
java -jar target/demo_1-0.0.1-SNAPSHOT.jar
|
||
```
|
||
|
||
**方式三:Docker Compose**
|
||
```bash
|
||
docker-compose up -d
|
||
```
|
||
|
||
### 访问地址
|
||
|
||
- **应用地址**: http://localhost:8080/api
|
||
- **Swagger文档**: http://localhost:8080/api/swagger-ui.html
|
||
- **API文档**: http://localhost:8080/api/v3/api-docs
|
||
|
||
## 项目结构
|
||
|
||
```
|
||
src/main/java/top/tqx/demo_1/
|
||
├── annotation/ # 自定义注解(限流、权限)
|
||
├── aspect/ # AOP切面(日志、限流)
|
||
├── common/ # 通用响应封装
|
||
├── config/ # 配置类(数据源、Redis、CORS等)
|
||
├── constant/ # 常量定义
|
||
├── controller/ # REST API控制层
|
||
├── dto/ # 数据传输对象
|
||
├── entity/ # 数据库实体模型
|
||
├── enums/ # 枚举定义
|
||
├── exception/ # 自定义异常
|
||
├── handler/ # 全局异常处理
|
||
├── interceptor/ # 拦截器(权限验证)
|
||
├── mapper/ # MyBatis Mapper接口
|
||
├── service/ # 业务逻辑层
|
||
│ └── impl/ # 服务实现类
|
||
├── util/ # 工具类
|
||
├── vo/ # 视图对象
|
||
└── Demo1Application.java
|
||
```
|
||
|
||
## 核心功能模块
|
||
|
||
| 模块 | Controller | 说明 |
|
||
|------|------------|------|
|
||
| 用户管理 | UserController | 用户增删改查、登录、权限管理 |
|
||
| 角色权限 | RoleController / PermissionController | 角色管理、权限分配 |
|
||
| 部门管理 | DepartmentController | 部门组织结构管理 |
|
||
| 文件管理 | FileController | 文件上传、下载、权限控制 |
|
||
| AI聊天 | AIChatController | 智能问答、RAG检索 |
|
||
| 考试系统 | ExamController / FormalExamController | 试卷生成、考试管理 |
|
||
| 题目管理 | QuestionController | 题库管理、题目统计 |
|
||
| FAQ管理 | FAQController | 常见问题管理 |
|
||
| 搜索功能 | SearchController | 全文检索 |
|
||
| 错题管理 | WrongQuestionController | 错题收集、重做 |
|
||
| 反馈管理 | FeedbackController | 用户反馈收集 |
|
||
|
||
## API接口分类
|
||
|
||
### 认证接口
|
||
- `POST /api/auth/login` - 用户登录
|
||
- `POST /api/auth/logout` - 用户登出
|
||
|
||
### 用户管理
|
||
- `GET /api/users` - 获取用户列表
|
||
- `POST /api/users` - 创建用户
|
||
- `GET /api/users/{id}` - 获取用户详情
|
||
- `PUT /api/users/{id}` - 更新用户信息
|
||
- `DELETE /api/users/{id}` - 删除用户
|
||
|
||
### 文件管理
|
||
- `POST /api/files/upload` - 文件上传
|
||
- `GET /api/files/{id}` - 获取文件信息
|
||
- `GET /api/files/{id}/download` - 文件下载
|
||
- `DELETE /api/files/{id}` - 删除文件
|
||
|
||
### AI聊天
|
||
- `POST /api/ai/chat` - AI问答
|
||
- `POST /api/ai/stream` - 流式问答
|
||
|
||
### 考试管理
|
||
- `POST /api/exam/generate` - 生成试卷
|
||
- `POST /api/exam/submit` - 提交答卷
|
||
- `GET /api/exam/records` - 获取考试记录
|
||
|
||
## 配置说明
|
||
|
||
### 环境变量
|
||
|
||
| 变量名 | 默认值 | 说明 |
|
||
|--------|--------|------|
|
||
| DB_USERNAME | root | 数据库用户名 |
|
||
| DB_PASSWORD | 123456 | 数据库密码 |
|
||
| REDIS_HOST | redis | Redis地址 |
|
||
| REDIS_PORT | 6379 | Redis端口 |
|
||
| JWT_SECRET | your-secret-key... | JWT密钥 |
|
||
| AI_HOST | localhost | AI服务地址 |
|
||
| AI_PORT | 5001 | AI服务端口 |
|
||
|
||
### 配置文件
|
||
|
||
- `application.yml` - 主配置文件
|
||
- `application-dev.yml` - 开发环境配置
|
||
- `application-prod.yml` - 生产环境配置
|
||
|
||
## 开发指南
|
||
|
||
### 添加新功能
|
||
|
||
1. 创建实体类 (`entity/`)
|
||
2. 创建Mapper接口 (`mapper/`)
|
||
3. 创建Service接口和实现 (`service/` 和 `service/impl/`)
|
||
4. 创建DTO和VO (`dto/` 和 `vo/`)
|
||
5. 创建Controller (`controller/`)
|
||
|
||
### 日志配置
|
||
|
||
日志文件位于 `/app/logs/file-management-system.log`,支持按天轮转,保留30天历史。
|
||
|
||
## 部署说明
|
||
|
||
### Docker部署
|
||
|
||
```dockerfile
|
||
# 使用官方JDK 17镜像
|
||
FROM openjdk:17-jdk-slim
|
||
|
||
WORKDIR /app
|
||
|
||
COPY target/demo_1-0.0.1-SNAPSHOT.jar app.jar
|
||
|
||
EXPOSE 8080
|
||
|
||
ENTRYPOINT ["java", "-jar", "app.jar"]
|
||
```
|
||
|
||
### 健康检查
|
||
|
||
```bash
|
||
curl http://localhost:8080/api/actuator/health
|
||
```
|
||
|
||
## License
|
||
|
||
MIT License
|
||
|
||
## 联系信息
|
||
|
||
如有问题请联系开发者。 |