You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
fin_data_unify_plat/BUG_FIX_TASKS_ARCH_REVIEW.md

221 lines
5.0 KiB

# 金融数据中台 v2.1 - Bug 修复任务单
**优先级**: 🔴 P0 - 紧急
**创建时间**: 2026-04-06 02:05
**要求完成**: 2026-04-06 18:00 (16 小时内)
**执行人**: Agent Developer
---
## 🐛 Bug 列表(来自架构审查)
### Bug #001: API 限流保护缺失 🔴
**严重级别**: Major
**位置**: `backend/app/api/v2/*.py`
**问题**: 所有 API 接口未实现限流保护
**影响**: 安全风险,可能被 DDoS 攻击
**修复方案**:
```python
# 1. 安装 slowapi
pip install slowapi
# 2. 在 main.py 中添加
from slowapi import Limiter
from slowapi.util import get_remote_address
limiter = Limiter(key_func=get_remote_address)
app.state.limiter = limiter
app.add_exception_handler(RateLimitExceeded, _rate_limit_exceeded_handler)
# 3. 在 API 路由中添加装饰器
@router.get("/alert/rules")
@limiter.limit("100/minute")
async def get_alert_rules(request: Request):
...
```
**涉及文件**:
- `backend/app/main.py`
- `backend/app/api/v2/alert.py`
- `backend/app/api/v2/quality.py`
- `backend/app/api/v2/websocket.py`
**预计时间**: 2 小时
---
### Bug #002: WebSocket 连接数未限制 🔴
**严重级别**: Major
**位置**: `backend/app/websocket/connection_manager.py`
**问题**: 未设置最大连接数限制
**影响**: 性能风险,大量连接时服务器可能崩溃
**修复方案**:
```python
class ConnectionManager:
MAX_CONNECTIONS = 1000 # 类常量
async def connect(self, websocket: WebSocket, token: str, user_id: str):
# 添加连接数检查
if len(self.active_connections) >= self.MAX_CONNECTIONS:
await websocket.close(code=1013, reason="Too many connections")
logger.warning(f"Connection rejected: max connections ({self.MAX_CONNECTIONS}) reached")
return
await websocket.accept()
self.active_connections[user_id] = websocket
```
**涉及文件**:
- `backend/app/websocket/connection_manager.py`
**预计时间**: 1 小时
---
### Bug #003: 数据库连接池配置缺失 🟡
**严重级别**: Minor
**位置**: `backend/app/db/database.py`
**问题**: 未显式配置数据库连接池大小
**影响**: 高并发时可能连接不足
**修复方案**:
```python
# 在 create_engine 中添加参数
engine = create_engine(
DATABASE_URL,
pool_size=20, # 连接池大小
max_overflow=10, # 最大溢出连接数
pool_pre_ping=True, # 连接前检查
pool_recycle=3600 # 连接回收时间
)
```
**涉及文件**:
- `backend/app/db/database.py`
**预计时间**: 1 小时
---
### Bug #004: 日志记录不完整 🟡
**严重级别**: Minor
**位置**: 多个文件
**问题**: 关键操作缺少日志记录
**修复方案**:
```python
# 在关键操作中添加日志
logger.info(f"Alert rule created: {rule_id}, user: {user_id}")
logger.info(f"Alert triggered: {rule_id}, symbol: {symbol}, price: {price}")
logger.info(f"Notification sent: {notification_id}, channel: {channel}")
```
**涉及文件**:
- `backend/app/api/v2/alert.py`
- `backend/app/services/alert_engine.py`
- `backend/app/services/alert_notification.py`
**预计时间**: 3 小时
---
### Bug #005: 前端错误提示不友好 🟡
**严重级别**: Minor
**位置**: `frontend/src/views/alert/*.vue`
**问题**: API 调用失败时错误提示不够详细
**修复方案**:
```javascript
// 优化错误处理
try {
await api.createAlert(ruleData)
ElMessage.success('创建成功')
} catch (error) {
// 显示详细错误信息
const errorMsg = error.response?.data?.detail || error.message || '操作失败'
ElMessage.error(`创建失败:${errorMsg}`)
}
```
**涉及文件**:
- `frontend/src/views/alert/AlertCreate.vue`
- `frontend/src/views/alert/AlertEdit.vue`
**预计时间**: 2 小时
---
## 📋 修复步骤
### 步骤 1: API 限流2 小时)
```bash
# 1. 安装依赖
pip install slowapi
# 2. 修改 main.py
# 3. 修改各 API 文件
# 4. 测试限流功能
```
### 步骤 2: WebSocket 连接数限制1 小时)
```bash
# 1. 修改 connection_manager.py
# 2. 添加 MAX_CONNECTIONS 常量
# 3. 添加连接数检查逻辑
# 4. 测试连接限制
```
### 步骤 3: 数据库连接池1 小时)
```bash
# 1. 修改 database.py
# 2. 添加连接池参数
# 3. 测试连接池配置
```
### 步骤 4: 日志完善3 小时)
```bash
# 1. 在各模块添加日志
# 2. 统一日志格式
# 3. 测试日志输出
```
### 步骤 5: 前端错误提示2 小时)
```bash
# 1. 修改前端错误处理
# 2. 优化错误提示
# 3. 测试错误场景
```
---
## ✅ 完成标准
1. 所有 Major 问题修复 ✅
2. 所有 Minor 问题修复 ✅
3. 代码审查通过 ✅
4. 回归测试通过 ✅
---
## 📢 完成后通知
修复完成后,请通知:
1. Agent Coordinator - 更新项目状态
2. Agent Architect - 复审
3. Agent Tester - 回归测试
---
**任务创建人**: Agent Coordinator
**创建时间**: 2026-04-06 02:05
**任务状态**: ⏳ 待执行
**优先级**: 🔴 P0 - 紧急
**截止时间**: 2026-04-06 18:00