# Knowledge Management System

基于 Spring Boot 3.2.5 的知识管理系统，提供用户管理、考试系统、文件管理、AI聊天等核心功能。

## 技术栈

- **框架**: Spring Boot 3.2.5
- **语言**: Java 17
- **数据库**: MySQL 8.0+
- **缓存**: Redis 6.0+
- **ORM**: MyBatis Plus 3.5.5
- **认证**: JWT
- **API文档**: SpringDoc OpenAPI 2.3.0
- **JSON处理**: FastJSON 2.0.43

## 功能模块

| 模块 | 描述 |
| :--- | :--- |
| **用户管理** | 用户注册、登录、信息管理 |
| **角色权限** | 角色管理、权限分配 |
| **考试系统** | 试卷生成、考试管理、成绩批阅 |
| **题目管理** | 题目CRUD、统计分析 |
| **文件管理** | 文件上传、下载、权限控制 |
| **AI聊天** | 基于RAG的智能问答 |
| **搜索功能** | 全文搜索 |
| **反馈管理** | 用户反馈收集与处理 |
| **FAQ管理** | 常见问题管理 |
| **错题管理** | 错题收集与重做 |

## 快速开始

### 环境要求

- JDK 17+
- Maven 3.8+
- MySQL 8.0+
- Redis 6.0+

### 数据库配置

1. 创建数据库：
```sql
CREATE DATABASE IF NOT EXISTS knowledge_management_system 
DEFAULT CHARACTER SET utf8mb4 
DEFAULT COLLATE utf8mb4_unicode_ci;
```

2. 执行数据库初始化脚本：
```bash
mysql -u root -p knowledge_management_system < docs/sql/knowledge_management_system.sql
```

### 运行方式

#### 开发环境

```bash
# 克隆项目
git clone <repository-url>
cd demo

# 编译运行
mvn spring-boot:run
```

#### 生产环境

```bash
# 打包
mvn clean package

# 运行
java -jar target/demo_1-0.0.1-SNAPSHOT.jar
```

#### Docker 部署

```bash
# 构建镜像
docker build -t knowledge-management-system .

# 运行容器
docker run -d -p 8080:8080 \
  -e DB_USERNAME=root \
  -e DB_PASSWORD=yourpassword \
  -e REDIS_HOST=redis \
  knowledge-management-system
```

### 配置说明

主要配置项（可通过环境变量覆盖）：

| 环境变量 | 默认值 | 说明 |
| :--- | :--- | :--- |
| `DB_USERNAME` | root | 数据库用户名 |
| `DB_PASSWORD` | 123456 | 数据库密码 |
| `REDIS_HOST` | redis | Redis 主机 |
| `REDIS_PORT` | 6379 | Redis 端口 |
| `JWT_SECRET` | your-secret-key... | JWT 密钥 |
| `SWAGGER_ENABLED` | true | 是否启用 Swagger |
| `CORS_ALLOWED_ORIGINS` | * | 允许的跨域来源 |

## API 文档

启动服务后访问：

- **Swagger UI**: http://localhost:8080/api/swagger-ui.html
- **OpenAPI JSON**: http://localhost:8080/api/v3/api-docs

## 项目结构

```
├── src/main/java/top/tqx/demo_1/
│   ├── controller/     # REST API 控制层
│   ├── service/        # 业务逻辑层
│   ├── mapper/         # 数据访问层
│   ├── entity/         # 数据库实体
│   ├── dto/            # 数据传输对象
│   ├── vo/             # 视图对象
│   ├── config/         # 配置类
│   ├── interceptor/    # 拦截器
│   ├── aspect/         # AOP切面
│   ├── exception/      # 异常处理
│   ├── util/           # 工具类
│   └── Demo1Application.java
├── src/main/resources/
│   ├── application.yml       # 主配置文件
│   ├── application-dev.yml   # 开发环境配置
│   └── application-prod.yml  # 生产环境配置
├── docs/              # 文档
│   ├── sql/           # 数据库脚本
│   └── api/           # API文档
├── uploads/           # 文件上传目录
├── logs/              # 日志目录
└── pom.xml            # Maven 配置
```

## 核心功能说明

### 1. 用户认证

- JWT Token 认证
- 密码加密存储 (BCrypt)
- 权限拦截器

### 2. 考试系统

- 智能试卷生成
- 考试流程管理
- AI 自动批阅
- 成绩统计分析

### 3. 文件管理

- 大文件上传支持
- 文件版本控制
- 访问权限控制

### 4. AI 集成

- RAG 知识库检索
- 流式问答响应
- 引用来源追踪

## 安全特性

- JWT 令牌认证
- 接口限流
- 权限校验
- SQL 注入防护
- CORS 跨域配置

## 日志管理

- 控制台日志
- 文件日志（按天分割）
- 最大保留 30 天

## 开发规范

- 代码风格：Google Java Style
- 异常处理：统一异常处理
- 日志记录：使用 SLF4J

## 许可证

MIT License

## 联系方式

如有问题或建议，请提交 Issue 或联系开发团队。