# 配置选项

相关源文件

- [](https://github.com/Ubanillx/smartclass-backend/blob/0873c502/src/main/java/com/ubanillx/smartclass/config/DifyConfig.java)
- [](https://github.com/Ubanillx/smartclass-backend/blob/0873c502/src/main/java/com/ubanillx/smartclass/model/dto/dify/DifyStreamChunk.java)
- [](https://github.com/Ubanillx/smartclass-backend/blob/0873c502/src/main/resources/application-prod.yml)
- [](https://github.com/Ubanillx/smartclass-backend/blob/0873c502/src/main/resources/application-test.yml)
- [](https://github.com/Ubanillx/smartclass-backend/blob/0873c502/src/main/resources/application.yml)

本页面记录了 SmartClass 后端系统的可用配置选项。它涵盖了环境特定的配置、核心应用程序设置以及与外部服务（如 Dify AI、微信和云存储）的集成。有关 Docker 部署的信息，请参阅 [Docker 部署](https://deepwiki.com/Ubanillx/smartclass-backend/7.1-docker-deployment)。

## 配置概览

SmartClass 后端使用 Spring Boot 的 profile 机制来管理不同环境的分层配置方法。系统按优先级顺序从以下来源加载配置：

1. 环境特定的配置文件（例如 `application-prod.yml`）
2. 基础配置文件 (`application.yml`)
3. Java-based 配置类

来源：[src/main/resources/application.yml](https://github.com/Ubanillx/smartclass-backend/blob/0873c502/src/main/resources/application.yml) [src/main/resources/application-prod.yml](https://github.com/Ubanillx/smartclass-backend/blob/0873c502/src/main/resources/application-prod.yml) [src/main/resources/application-test.yml](https://github.com/Ubanillx/smartclass-backend/blob/0873c502/src/main/resources/application-test.yml) [src/main/java/com/ubanillx/smartclass/config/DifyConfig.java](https://github.com/Ubanillx/smartclass-backend/blob/0873c502/src/main/java/com/ubanillx/smartclass/config/DifyConfig.java)

## 环境配置

系统通过 Spring profiles 支持多种环境：

| Profile | 目的 | 配置文件 |
|--------|------|---------|
| `dev` | 开发环境（默认） | 基础配置 + 开发者特定设置 |
| `test` | 测试环境 | `application-test.yml` |
| `prod` | 生产部署 | `application-prod.yml` |

要设置活动 profile，可以修改 `application.yml` 的第 7 行或设置 `spring.profiles.active` 环境变量。

来源：[src/main/resources/application.yml5-7](https://github.com/Ubanillx/smartclass-backend/blob/0873c502/src/main/resources/application.yml#L5-L7)

## 核心应用设置

### 服务器配置

| 设置 | 描述 | 默认值 |
|-----|------|-------|
| `server.address` | 绑定地址 | `0.0.0.0` |
| `server.port` | HTTP 端口 | `12345`（开发），`8101`（生产/测试） |
| `server.servlet.context-path` | 基础 URL 路径 | `/api` |

来源：[src/main/resources/application.yml45-53](https://github.com/Ubanillx/smartclass-backend/blob/0873c502/src/main/resources/application.yml#L45-L53) [src/main/resources/application-prod.yml2-3](https://github.com/Ubanillx/smartclass-backend/blob/0873c502/src/main/resources/application-prod.yml#L2-L3) [src/main/resources/application-test.yml2-3](https://github.com/Ubanillx/smartclass-backend/blob/0873c502/src/main/resources/application-test.yml#L2-L3)

### 应用信息

| 设置 | 描述 | 默认值 |
|-----|------|-------|
| `spring.application.name` | 应用名称 | `smartclass-ubanillx` |

来源：[src/main/resources/application.yml2-4](https://github.com/Ubanillx/smartclass-backend/blob/0873c502/src/main/resources/application.yml#L2-L4)

## 数据库配置

系统使用 MySQL 作为主要数据库，通过以下参数进行配置：

| 设置 | 描述 | 开发默认值 | 生产默认值 |
|-----|------|-----------|------------|
| `spring.datasource.driver-class-name` | JDBC 驱动 | `com.mysql.cj.jdbc.Driver` | 相同 |
| `spring.datasource.url` | JDBC URL | `jdbc:mysql://localhost:3306/smart_class` | `jdbc:mysql://1Panel-mysql-hMmB:3306/smart_class` |
| `spring.datasource.username` | 数据库用户名 | `root` | `root` |
| `spring.datasource.password` | 数据库密码 | `root123456` | `mysql_5TDxKc` |

来源：[src/main/resources/application.yml18-24](https://github.com/Ubanillx/smartclass-backend/blob/0873c502/src/main/resources/application.yml#L18-L24) [src/main/resources/application-prod.yml4-11](https://github.com/Ubanillx/smartclass-backend/blob/0873c502/src/main/resources/application-prod.yml#L4-L11) [src/main/resources/application-test.yml4-11](https://github.com/Ubanillx/smartclass-backend/blob/0873c502/src/main/resources/application-test.yml#L4-L11)

## Redis 配置

Redis 用于分布式会话管理和缓存：

| 设置 | 描述 | 开发默认值 | 生产默认值 |
|-----|------|-----------|------------|
| `spring.redis.database` | Redis 数据库索引 | `0` | `0` |
| `spring.redis.host` | Redis 服务器主机 | `localhost` | `1Panel-redis-kOgw` |
| `spring.redis.port` | Redis 服务器端口 | `6379` | `6379` |
| `spring.redis.timeout` | 连接超时时间（毫秒） | `5000` | `5000` |
| `spring.redis.password` | Redis 密码 | 可选（已注释） | `redis_wKaQkb` |

来源：[src/main/resources/application.yml25-32](https://github.com/Ubanillx/smartclass-backend/blob/0873c502/src/main/resources/application.yml#L25-L32) [src/main/resources/application-prod.yml12-19](https://github.com/Ubanillx/smartclass-backend/blob/0873c502/src/main/resources/application-prod.yml#L12-L19) [src/main/resources/application-test.yml12-19](https://github.com/Ubanillx/smartclass-backend/blob/0873c502/src/main/resources/application-test.yml#L12-L19)

## 会话管理

应用程序使用 Redis 进行分布式会话存储，并具有以下设置：

| 设置 | 描述 | 默认值 |
|-----|------|-------|
| `spring.session.store-type` | 会话存储后端 | `redis` |
| `spring.session.timeout` | 会话超时时间 | `2592000`（30 天） |
| `server.servlet.session.cookie.max-age` | Cookie 过期时间 | `2592000`（30 天） |

来源：[src/main/resources/application.yml12-17](https://github.com/Ubanillx/smartclass-backend/blob/0873c502/src/main/resources/application.yml#L12-L17) [src/main/resources/application.yml50-53](https://github.com/Ubanillx/smartclass-backend/blob/0873c502/src/main/resources/application.yml#L50-L53)

## 文件上传配置

系统支持文件上传，并有以下限制：

| 设置 | 描述 | 默认值 |
|-----|------|-------|
| `spring.servlet.multipart.max-file-size` | 最大文件大小 | `100MB` |
| `spring.servlet.multipart.max-request-size` | 最大请求大小 | `100MB` |

此外，云存储配置指定了更详细的文件大小限制和允许的文件类型：

| 设置 | 描述 | 默认值 |
|-----|------|-------|
| `cos.client.upload.max-avatar-size` | 最大头像大小 | `2MB` |
| `cos.client.upload.max-video-size` | 最大视频大小 | `100MB` |
| `cos.client.upload.max-document-size` | 最大文档大小 | `20MB` |
| `cos.client.upload.max-material-size` | 最大学习材料大小 | `50MB` |
| `cos.client.upload.allowed-video-types` | 允许的视频格式 | `mp4,avi,mov,flv,wmv` |
| `cos.client.upload.allowed-document-types` | 允许的文档格式 | `pdf,doc,docx,ppt,pptx,xls,xlsx,txt` |
| `cos.client.upload.allowed-material-types` | 允许的学习材料格式 | `pdf,doc,docx,ppt,pptx,xls,xlsx,txt,zip,rar,7z` |

来源：[src/main/resources/application.yml39-44](https://github.com/Ubanillx/smartclass-backend/blob/0873c502/src/main/resources/application.yml#L39-L44) [src/main/resources/application.yml92-102](https://github.com/Ubanillx/smartclass-backend/blob/0873c502/src/main/resources/application.yml#L92-L102)

# MyBatis-Plus 配置

MyBatis-Plus 使用以下设置进行配置：

| 设置 | 描述 | 默认值 |
|-----|------|-------|
| `mybatis-plus.configuration.map-underscore-to-camel-case` | 将数据库中的 snake_case 映射到 Java 中的 camelCase | `false` |
| `mybatis-plus.configuration.log-impl` | SQL 日志实现 | `org.apache.ibatis.logging.stdout.StdOutImpl`（开发），空字符串（生产） |
| `mybatis-plus.global-config.db-config.logic-delete-field` | 逻辑删除字段名 | `isDelete` |
| `mybatis-plus.global-config.db-config.logic-delete-value` | 已删除记录的值 | `1` |
| `mybatis-plus.global-config.db-config.logic-not-delete-value` | 活动记录的值 | `0` |

来源：[src/main/resources/application.yml54-62](https://github.com/Ubanillx/smartclass-backend/blob/0873c502/src/main/resources/application.yml#L54-L62) [src/main/resources/application-prod.yml26-29](https://github.com/Ubanillx/smartclass-backend/blob/0873c502/src/main/resources/application-prod.yml#L26-L29)

## 外部服务集成

### Dify AI 集成

SmartClass 后端通过以下配置与 Dify AI 集成以实现 AI 虚拟形象聊天功能：

| 属性 | 描述 | 默认值 |
|-----|------|-------|
| `dify.baseUrl` | Dify API 基础 URL | `http://10.0.124.181/v1` |
| `dify.chat-messages-path` | 聊天的 API 端点路径 | `/chat-messages` |
| `dify.user-prefix` | 用户标识符前缀 | `smartclass_user_` |
| `dify.enable-streaming-verbose-log` | 启用详细的流日志 | `false` |

来源：[src/main/resources/application.yml114-123](https://github.com/Ubanillx/smartclass-backend/blob/0873c502/src/main/resources/application.yml#L114-L123) [src/main/java/com/ubanillx/smartclass/config/DifyConfig.java](https://github.com/Ubanillx/smartclass-backend/blob/0873c502/src/main/java/com/ubanillx/smartclass/config/DifyConfig.java)

### 微信集成

系统通过微信公众平台（MP）和开放平台 API 与微信集成：

#### 微信公众平台（MP）

| 设置 | 描述 | 默认值 |
|-----|------|-------|
| `wx.mp.token` | 微信 MP 验证 token | 占位符（`xxx`） |
| `wx.mp.aesKey` | 消息加密密钥 | 占位符（`xxx`） |
| `wx.mp.appId` | 微信 MP 应用 ID | 占位符（`xxx`） |
| `wx.mp.secret` | 微信 MP 应用密钥 | 占位符（`xxx`） |
| `wx.mp.config-storage.type` | 配置存储类型 | `Memory` |

#### 微信开放平台

| 设置 | 描述 | 默认值 |
|-----|------|-------|
| `wx.open.appId` | 微信开放平台应用 ID | 占位符（`xxx`） |
| `wx.open.appSecret` | 微信开放平台应用密钥 | 占位符（`xxx`） |

来源：[src/main/resources/application.yml63-83](https://github.com/Ubanillx/smartclass-backend/blob/0873c502/src/main/resources/application.yml#L63-L83)

### 云对象存储

系统使用云对象存储（根据前缀判断可能是腾讯 COS）来上传文件：

| 设置 | 描述 | 默认值 |
|-----|------|-------|
| `cos.client.accessKey` | 存储服务访问密钥 | 空 |
| `cos.client.secretKey` | 存储服务密钥 | 空 |
| `cos.client.region` | 存储服务区域 | 空 |
| `cos.client.bucket` | 存储桶名称 | 空 |

来源：[src/main/resources/application.yml84-91](https://github.com/Ubanillx/smartclass-backend/blob/0873c502/src/main/resources/application.yml#L84-L91)

## API 文档配置

系统使用 Knife4j 进行 API 文档管理，并具有以下设置：

| 设置 | 描述 | 默认/开发值 | 生产值 |
|-----|------|-------------|--------|
| `knife4j.enable` | 启用 API 文档 | `true` | `true` |
| `knife4j.openapi.title` | API 文档标题 | `接口文档` | 相同 |
| `knife4j.openapi.version` | API 版本 | `1.0` | 相同 |
| `knife4j.basic.enable` | 启用基本身份验证 | 未设置 | `true` |
| `knife4j.basic.username` | 文档登录用户名 | 未设置 | `root` |
| `knife4j.basic.password` | 文档登录密码 | 未设置 | `123456` |

来源：[src/main/resources/application.yml103-113](https://github.com/Ubanillx/smartclass-backend/blob/0873c502/src/main/resources/application.yml#L103-L113) [src/main/resources/application-prod.yml30-35](https://github.com/Ubanillx/smartclass-backend/blob/0873c502/src/main/resources/application-prod.yml#L30-L35)

## 日志配置

应用程序为关键组件配置了特定的日志级别：

| 设置                                                                        | 描述               | 默认值    |
| ------------------------------------------------------------------------- | ---------------- | ------ |
| `logging.level.com.ubanillx.smartclass.service.impl.DifyServiceImpl`      | Dify 服务日志级别      | `info` |
| `logging.level.com.ubanillx.smartclass.controller.AiAvatarChatController` | AI 虚拟形象聊天控制器日志级别 | `info` |

来源：[src/main/resources/application.yml120-124](https://github.com/Ubanillx/smartclass-backend/blob/0873c502/src/main/resources/application.yml#L120-L124)

## 配置最佳实践

在部署 SmartClass 后端时，请遵循以下配置最佳实践：

1. **不要在生产环境中使用默认占位符值**
    
    - 替换所有占位符值（标记为 `xxx` 或 `todo` 注释）为实际值
    - 特别注意数据库密码和 API 密钥等安全敏感值
2. **环境适配的设置**
    
    - 在生产部署中使用 `application-prod.yml`
    - 为不同环境使用不同的数据库凭据
3. **敏感信息处理**
    
    - 考虑对敏感信息使用环境变量而不是配置文件
    - 确保包含密钥的配置文件不提交到版本控制中
4. **数据库和 Redis**
    
    - 确保数据库和 Redis 实例得到适当保护
    - 在生产环境中使用强密码
5. **外部服务**
    
    - 为 Dify AI、微信和云存储配置正确的凭据
    - 验证应用程序与外部服务之间的网络连接