feat: 系统优化和功能完善

主要更新:
- 调整并发配置为50人(数据库连接池30,Tomcat线程150,异步线程池5/20)
- 实现无界阻塞队列(LinkedBlockingQueue)任务处理
- 实现分镜视频保存功能(保存到uploads目录)
- 统一管理页面导航栏和右上角样式
- 添加日活用户统计功能
- 优化视频拼接和保存逻辑
- 添加部署文档和快速部署指南
- 更新.gitignore排除敏感配置文件
This commit is contained in:
AIGC Developer
2025-11-07 19:09:50 +08:00
parent b5820d9be2
commit 1e71ae6a26
146 changed files with 10720 additions and 3032 deletions

306
demo/CONFIGURATION_GUIDE.md Normal file
View File

@@ -0,0 +1,306 @@
# 系统配置指南
本文档列出了系统中所有需要手动配置的重要配置项。
## 📋 配置项分类
### 1. 🔐 数据库配置(必须)
**位置**: `application-dev.properties` / `application-prod.properties`
```properties
# 开发环境(直接配置)
spring.datasource.url=jdbc:mysql://localhost:3306/aigc_platform?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
spring.datasource.username=root
spring.datasource.password=你的数据库密码
# 生产环境(使用环境变量)
spring.datasource.url=${DB_URL}
spring.datasource.username=${DB_USERNAME}
spring.datasource.password=${DB_PASSWORD}
```
**说明**:
- 开发环境:直接修改配置文件中的数据库连接信息
- 生产环境:通过环境变量配置,更安全
---
### 2. 🔑 JWT配置必须
**位置**: `application-dev.properties` / `application-prod.properties`
```properties
# 开发环境
jwt.secret=你的JWT密钥至少128位建议256位
jwt.expiration=86400000 # 24小时单位毫秒
# 生产环境(使用环境变量)
jwt.secret=${JWT_SECRET}
jwt.expiration=${JWT_EXPIRATION:604800000} # 默认7天
```
**说明**:
- `jwt.secret`: 用于签名JWT token的密钥**必须修改为强随机字符串**
- `jwt.expiration`: Token过期时间毫秒
---
### 3. 🤖 AI API配置必须
**位置**: `application-dev.properties` / `application-prod.properties`
```properties
# Comfly API配置文生视频、图生视频、分镜视频
ai.api.base-url=https://ai.comfly.chat
ai.api.key=你的Comfly API密钥
# Comfly API配置文生图
ai.image.api.base-url=https://ai.comfly.chat
ai.image.api.key=你的Comfly API密钥
```
**说明**:
- 可通过 **API管理页面** 在线修改(推荐)
- 或直接修改配置文件
- 修改后需要重启应用
---
### 4. 💰 支付宝配置(可选,如需支付功能)
**位置**: `application-dev.properties` / `application-prod.properties`
```properties
# 开发环境(沙箱测试)
alipay.app-id=你的支付宝应用ID
alipay.private-key=你的应用私钥RSA2格式
alipay.public-key=支付宝公钥RSA2格式
alipay.gateway-url=https://openapi-sandbox.dl.alipaydev.com/gateway.do
alipay.notify-url=你的回调通知URL
alipay.return-url=你的支付返回URL
# 生产环境(使用环境变量)
alipay.app-id=${ALIPAY_APP_ID}
alipay.private-key=${ALIPAY_PRIVATE_KEY}
alipay.public-key=${ALIPAY_PUBLIC_KEY}
alipay.gateway-url=https://openapi.alipay.com/gateway.do
alipay.notify-url=${ALIPAY_NOTIFY_URL}
alipay.return-url=${ALIPAY_RETURN_URL}
```
**说明**:
- 开发环境使用支付宝沙箱进行测试
- 生产环境需要申请正式支付宝应用
- 私钥和公钥必须是RSA2格式
---
### 5. 📧 腾讯云SES邮件配置可选如需邮件功能
**位置**: `application-dev.properties` / `application-prod.properties`
```properties
# 开发环境
tencent.ses.secret-id=你的腾讯云SecretId
tencent.ses.secret-key=你的腾讯云SecretKey
tencent.ses.region=ap-hongkong
tencent.ses.from-email=你的发件邮箱
tencent.ses.from-name=AIGC平台
tencent.ses.template-id=你的邮件模板ID
# 生产环境(使用环境变量)
tencent.ses.secret-id=${TENCENT_SES_SECRET_ID}
tencent.ses.secret-key=${TENCENT_SES_SECRET_KEY}
tencent.ses.from-email=${TENCENT_SES_FROM_EMAIL}
tencent.ses.template-id=${TENCENT_SES_TEMPLATE_ID}
```
**说明**:
- 需要在腾讯云SES控制台创建邮件模板
- 如果`template-id`为0或未配置将使用开发模式仅记录日志
---
### 6. 🎬 FFmpeg配置可选如需视频拼接功能
**位置**: `application-dev.properties` / `application-prod.properties`
```properties
# 开发环境
app.ffmpeg.path=C:/Users/UI/AppData/Local/Microsoft/WinGet/Packages/Gyan.FFmpeg_Microsoft.Winget.Source_8wekyb3d8bbwe/ffmpeg-8.0-full_build/bin/ffmpeg.exe
app.temp.dir=./temp
# 生产环境(使用环境变量)
app.ffmpeg.path=${FFMPEG_PATH:ffmpeg} # 如果在PATH中直接使用"ffmpeg"
app.temp.dir=${TEMP_DIR:./temp}
```
**说明**:
- `app.ffmpeg.path`: FFmpeg可执行文件路径
- Windows: 使用完整路径,如 `C:\ffmpeg\bin\ffmpeg.exe`
- Linux/Mac: 如果在PATH中使用 `ffmpeg`;否则使用完整路径,如 `/usr/bin/ffmpeg`
- `app.temp.dir`: 临时文件目录(用于视频处理)
- 相对路径:基于应用运行目录
- 绝对路径:如 `/app/temp``C:\app\temp`
---
### 7. 🖥️ 服务器配置(可选,根据需求调整)
**位置**: `application-dev.properties` / `application-prod.properties`
```properties
# 服务器端口
server.port=8080
# Tomcat线程池配置支持并发
server.tomcat.threads.max=1000
server.tomcat.threads.min-spare=100
server.tomcat.max-connections=10000
server.tomcat.accept-count=500
# 请求体大小限制支持大图片Base64编码
server.tomcat.max-http-post-size=600MB
spring.servlet.multipart.max-file-size=500MB
spring.servlet.multipart.max-request-size=600MB
```
**说明**:
- 根据实际并发需求调整线程池配置
- 如果不需要处理大文件,可以减小请求体大小限制
---
### 8. 📊 数据库连接池配置(可选,根据需求调整)
**位置**: `application-dev.properties` / `application-prod.properties`
```properties
# HikariCP连接池配置
spring.datasource.hikari.maximum-pool-size=200
spring.datasource.hikari.minimum-idle=20
spring.datasource.hikari.idle-timeout=300000
spring.datasource.hikari.max-lifetime=1200000
spring.datasource.hikari.connection-timeout=30000
spring.datasource.hikari.leak-detection-threshold=60000
```
**说明**:
- 根据数据库服务器性能和并发需求调整
- 默认配置支持50人并发
---
### 9. 🗄️ JPA配置开发/生产环境不同)
**位置**: `application-dev.properties` / `application-prod.properties`
```properties
# 开发环境
spring.jpa.hibernate.ddl-auto=update # 自动更新表结构
spring.jpa.show-sql=true # 显示SQL语句
# 生产环境
spring.jpa.hibernate.ddl-auto=validate # 仅验证,不自动修改
spring.jpa.show-sql=false # 不显示SQL语句
```
**说明**:
- **生产环境必须使用 `validate`**,避免自动修改数据库结构
- 开发环境可以使用 `update` 方便开发
---
## 🚀 快速配置清单
### 开发环境必须配置:
- [ ] 数据库连接信息URL、用户名、密码
- [ ] JWT密钥修改为强随机字符串
- [ ] AI API密钥Comfly API
### 开发环境可选配置:
- [ ] 支付宝沙箱配置(如需测试支付)
- [ ] 腾讯云SES配置如需测试邮件
- [ ] FFmpeg路径如需视频拼接
### 生产环境必须配置(通过环境变量):
- [ ] `DB_URL` - 数据库连接URL
- [ ] `DB_USERNAME` - 数据库用户名
- [ ] `DB_PASSWORD` - 数据库密码
- [ ] `JWT_SECRET` - JWT密钥
- [ ] `ALIPAY_APP_ID` - 支付宝应用ID如需支付
- [ ] `ALIPAY_PRIVATE_KEY` - 支付宝私钥(如需支付)
- [ ] `ALIPAY_PUBLIC_KEY` - 支付宝公钥(如需支付)
- [ ] `ALIPAY_NOTIFY_URL` - 支付回调URL如需支付
- [ ] `ALIPAY_RETURN_URL` - 支付返回URL如需支付
- [ ] `TENCENT_SES_SECRET_ID` - 腾讯云SecretId如需邮件
- [ ] `TENCENT_SES_SECRET_KEY` - 腾讯云SecretKey如需邮件
- [ ] `TENCENT_SES_FROM_EMAIL` - 发件邮箱(如需邮件)
- [ ] `TENCENT_SES_TEMPLATE_ID` - 邮件模板ID如需邮件
- [ ] `FFMPEG_PATH` - FFmpeg路径如需视频拼接
- [ ] `TEMP_DIR` - 临时文件目录(如需视频拼接)
---
## ⚠️ 安全注意事项
1. **不要将生产环境配置提交到代码仓库**
- 使用环境变量或外部配置文件
- 将敏感信息添加到 `.gitignore`
2. **JWT密钥必须足够强**
- 至少128位建议256位
- 使用随机字符串生成器生成
3. **数据库密码**
- 使用强密码
- 生产环境必须通过环境变量配置
4. **API密钥**
- 定期更换
- 不要泄露给他人
---
## 📝 配置优先级
1. **环境变量** > 配置文件
2. **application-{profile}.properties** > **application.properties**
3. **外部配置文件** > **classpath配置文件**
---
## 🔄 配置更新方式
### 方式1直接修改配置文件开发环境
- 修改 `application-dev.properties`
- 重启应用
### 方式2通过管理页面推荐
- **API密钥**:通过"API管理"页面在线修改
- **会员价格**:通过"系统设置"页面在线修改
### 方式3环境变量生产环境
- 设置环境变量
- 重启应用
---
## 📞 配置问题排查
1. **配置不生效**
- 检查配置文件路径是否正确
- 检查环境变量是否正确设置
- 检查是否需要重启应用
2. **数据库连接失败**
- 检查数据库服务是否启动
- 检查连接URL、用户名、密码是否正确
- 检查防火墙设置
3. **API调用失败**
- 检查API密钥是否正确
- 检查网络连接
- 查看日志文件获取详细错误信息