2026-04-29-22-49-38 - 修复WebSocket连接+项目状态异常+导入按钮无响应+后端WS路由

This commit is contained in:
2026-04-29 22:56:22 +08:00
parent 0f7b1ec31d
commit a4fb655841
8 changed files with 269 additions and 8 deletions

View File

@@ -0,0 +1,51 @@
# 实现方案 - 2026-04-29-22-49-38
## 对应需求
- 需求分析文档: `需求分析-2026-04-29-22-49-38.md`
## 方案概述
修复 4 个关联缺陷WebSocket 连接地址错误、后端缺少 WebSocket 路由、导入按钮无交互、项目状态映射不匹配。
## 修改文件清单
### 文件 1: `src/lib/websocket.ts`(修改)
- **修改类型**: 修改 URL
- **修改内容**: `ws://localhost:8000/ws/progress``ws://192.168.3.11:8000/ws/progress`
### 文件 2: `backend/main.py`(修改)
- **修改类型**: 新增 WebSocket 路由
- **修改内容**: 添加 `@app.websocket("/ws/progress")` 路由,支持:
- 客户端连接/断开日志
- 接收前端订阅消息
- 定期推送心跳(可选)
- 通过 Redis 发布/订阅桥接解析进度(预留接口)
### 文件 3: `src/components/ProjectLibrary.tsx`(修改)
- **修改类型**: 添加文件导入交互
- **修改内容**:
- 添加 `fileInputRef` 引用
- 为"导入多媒体资源"按钮添加 `onClick` 触发文件选择器
- 添加隐藏的 `<input type="file">`,支持 `accept="video/*,image/*"`
- `onChange` 时调用 `uploadMedia` API 上传文件
- 上传成功后刷新项目列表
### 文件 4: `backend/models.py`(修改)
- **修改类型**: 修改默认值
- **修改内容**: `Project.status` 默认值从 `"pending"` 改为 `"Ready"`
- **替代方案**: 若数据库已创建,同时修改 `schemas.py` 中返回状态映射
### 文件 5: `src/components/ProjectLibrary.tsx`(修改状态显示)
- **修改类型**: 扩展状态分支
- **修改内容**: 增加对 `'pending'` 状态的显示("待处理"
## 新增依赖
## 兼容性分析
- WebSocket 为新增路由,不影响现有 HTTP API
- 文件上传复用已有 `uploadMedia` API
- 状态默认值修改仅影响新项目
## 预估工作量
- 代码修改: 10 分钟
- 重启验证: 5 分钟