52 lines
1.9 KiB
Markdown
52 lines
1.9 KiB
Markdown
# 实现方案 - 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 分钟
|