功能细节优化

This commit is contained in:
2026-06-15 01:26:39 +08:00
parent e524a3589a
commit 964c17c200
33 changed files with 6990 additions and 210 deletions

118
backend/ENV_CONFIG.md Normal file
View File

@@ -0,0 +1,118 @@
# 环境变量配置说明
## 新增配置项(三大核心功能)
### Redis 缓存配置
```bash
# Redis 连接配置
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_DB=0
REDIS_PASSWORD= # 如果 Redis 设置了密码则填写
```
### 认证系统配置
```bash
# JWT 密钥(生产环境务必修改)
SECRET_KEY=your-secret-key-change-in-production
# Token 过期时间(分钟)
ACCESS_TOKEN_EXPIRE_MINUTES=10080 # 默认7天
# API Key 模式(可选,用于外部调用,逗号分隔多个)
API_KEYS=your-api-key-1,your-api-key-2
# 默认管理员账号(首次启动时创建)
DEFAULT_ADMIN_USERNAME=admin
DEFAULT_ADMIN_PASSWORD=admin123 # 首次启动后务必修改密码
```
## 安装 RedisWSL 环境)
```bash
# 安装 Redis
sudo apt update
sudo apt install -y redis-server
# 启动 Redis
sudo service redis-server start
# 验证 Redis 是否运行
redis-cli ping
# 应返回 PONG
# 设置 Redis 开机自启(可选)
sudo systemctl enable redis-server
```
## 安全建议
1. **SECRET_KEY**: 生产环境必须使用强随机字符串,可用以下命令生成:
```bash
python -c "import secrets; print(secrets.token_urlsafe(32))"
```
2. **默认密码**: 首次登录后立即修改 admin 密码
3. **API_KEYS**: 仅在需要外部调用时配置,妥善保管
4. **Redis 密码**: 生产环境建议为 Redis 设置密码:
```bash
# 编辑 Redis 配置
sudo nano /etc/redis/redis.conf
# 找到 requirepass 行,取消注释并设置密码
requirepass your-strong-password
# 重启 Redis
sudo service redis-server restart
```
## 功能说明
### 1. Redis 缓存
- 替代内存缓存,支持持久化和跨进程共享
- 自动降级Redis 不可用时使用内存缓存
- 默认过期时间根据数据类型自动设置行情数据1分钟基本面数据1天
### 2. 统一鉴权
- **JWT Token 模式**: 用户登录获取 Token适合前端应用
- **API Key 模式**: 用于外部系统调用,配置在 HTTP Header `X-API-Key`
- 管理接口(`/api/admin/*`)需要管理员权限
### 3. 统一异常处理
- 业务异常返回友好错误信息
- 数据源异常自动降级
- 数据库异常统一处理
- 所有异常记录日志便于排查
## API 使用示例
### 登录
```bash
curl -X POST http://localhost:8000/api/auth/login \
-H "Content-Type: application/json" \
-d '{"username":"admin","password":"admin123"}'
```
### 使用 Token 访问受保护接口
```bash
curl -X GET http://localhost:8000/api/admin/status \
-H "Authorization: Bearer YOUR_TOKEN_HERE"
```
### 使用 API Key 访问
```bash
curl -X GET http://localhost:8000/api/admin/status \
-H "X-API-Key: your-api-key-1"
```
## 注意事项
1. WSL 环境下,每次重启后需要手动启动服务:
```bash
sudo service postgresql start
sudo service redis-server start
```
2. Redis 连接失败不会影响系统运行,会自动降级到内存缓存
3. 未配置鉴权时,所有接口默认不需要认证(开发模式)