# 金融数据中台 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