2026-04-29-22-49-38 - 修复WebSocket连接+项目状态异常+导入按钮无响应+后端WS路由
This commit is contained in:
51
工程分析/实现方案-2026-04-29-22-49-38.md
Normal file
51
工程分析/实现方案-2026-04-29-22-49-38.md
Normal 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 分钟
|
||||
Reference in New Issue
Block a user