20260429_231526-fix: upload field mismatch, WebSocket StrictMode crash, project list refresh after upload

This commit is contained in:
2026-04-29 23:17:09 +08:00
parent 4ec917efe7
commit d7d1e3225f
12 changed files with 260 additions and 10 deletions

View File

@@ -0,0 +1,41 @@
# 实现方案 - 2026-04-29-23-10-27
## 对应需求
- 需求分析文档: `需求分析-2026-04-29-23-10-27.md`
## 方案概述
修复前后端数据结构不匹配、上传后未创建项目、WebSocket 连接状态处理不当三个问题。
## 修改文件清单
### 文件 1: `src/lib/api.ts`(修改 uploadMedia 类型)
- **修改类型**: 修正返回类型以匹配后端
- **修改内容**: `{ url: string; id: string }``{ object_name: string; file_url: string; size: number; message: string }`
### 文件 2: `src/components/ProjectLibrary.tsx`(修改上传逻辑)
- **修改类型**: 修复字段引用 + 上传后创建项目
- **修改内容**:
- `result.url``result.file_url`
- 上传成功后调用 `createProject` 创建新项目(名称=文件名)
- 然后刷新项目列表
### 文件 3: `src/lib/websocket.ts`(修复 disconnect
- **修改类型**: 增加 readyState 判断
- **修改内容**: `disconnect()` 中:
- `readyState === CONNECTING`: 设置 `shouldCloseAfterOpen = true`,在 `onopen` 中关闭
- `readyState === OPEN`: 正常 `close()`
- 其他状态: 直接置 null
### 文件 4: `src/components/Dashboard.tsx`(增加清理保护)
- **修改类型**: 延迟 connect / 增加 mounted 标志
- **修改内容**: useEffect 中增加 `mounted` ref卸载时置 false避免卸载后回调执行
## 新增依赖
## 兼容性分析
- 返回类型修改需确保调用方同步更新
- WebSocket 修复不影响正常连接流程
## 预估工作量
- 10 分钟