TraceStudio-dev/docs/web1.1_filemanager/UPDATE_v0.2.1.md

359 lines
8.4 KiB
Markdown
Raw Normal View History

# TraceStudio v0.2.1 更新说明
## 🎉 多用户功能完善
### ✨ 新增功能
#### 1. 工作流标题管理
- **位置**: HeaderBar 顶部栏
- **功能**:
- 显示当前工作流名称
- 点击标题可编辑
- 支持 Enter 确认、Escape 取消
- 默认标题: "未命名工作流"
#### 2. 工作流保存
- **保存位置**: `cloud/users/{username}/workflows/`
- **文件格式**: `.utrace` (JSON)
- **保存内容**:
- 工作流标题
- 所有节点和连线
- 全局设置
- 保存时间戳
- **操作方式**: 点击标题旁边的 💾 按钮
- **提示**: 保存成功后显示完整路径
#### 3. 工作流加载
- **方式**: 在文件浏览器中双击 `.utrace` 文件
- **效果**: 自动加载所有节点、连线和设置
- **提示**: 加载成功后显示工作流名称
#### 4. 增强的用户切换器
##### 新增输入框创建用户
```
┌─────────────────────────┐
│ 切换用户空间 │
├─────────────────────────┤
│ 创建/切换用户 │
│ [输入用户名...] [] │
├─────────────────────────┤
│ ✓ guest │
│ admin │
│ dev │
│ test │
└─────────────────────────┘
```
##### 操作方式
1. **下拉框**: 点击用户按钮展开菜单
2. **创建**: 在输入框输入用户名,按 Enter 或点击
3. **切换**: 点击列表中的用户名
4. **预设用户**: guest, admin, dev, test
##### 特性
- 输入即创建,无需确认
- 自动创建用户目录结构
- 切换后文件浏览器自动刷新
#### 5. 文件路径复制功能
##### 右键菜单新增选项
```
┌─────────────┐
│ 📥 下载 │
│ 📋 复制路径 │ ← 新增
│ ✏️ 重命名 │
│ 🗑️ 删除 │
└─────────────┘
```
##### 复制的路径格式
- **格式**: 相对于根目录的相对路径
- **示例**: `users/guest/data/sample.csv`
- **用途**: 填入节点参数(如 CSVLoader 的 file_path
##### 使用流程
```
步骤1: 右键点击文件或文件夹
步骤2: 点击"📋 复制路径"
步骤3: 路径已复制到剪贴板
步骤4: 粘贴到节点参数输入框
```
---
## 📖 完整工作流
### 场景:数据分析工作流
#### 1. 创建用户空间
```
点击用户按钮 → 输入 "analyst" → Enter
系统自动创建: users/analyst/workflows/
```
#### 2. 上传数据文件
```
切换到"📁 文件"标签
导航到 users/analyst/data/
点击"📤 上传" → 选择 sales_data.csv
```
#### 3. 创建工作流
```
拖拽 sales_data.csv 到画布
自动生成 CSVLoader 节点
file_path 自动填充: users/analyst/data/sales_data.csv
```
#### 4. 编辑工作流标题
```
点击顶部"未命名工作流"
输入"销售数据分析"
按 Enter 确认
```
#### 5. 添加处理节点
```
从节点面板拖入 Transform 节点
连接到 CSVLoader 输出
配置转换参数
```
#### 6. 保存工作流
```
点击标题旁 💾 按钮
工作流保存到: users/analyst/workflows/销售数据分析.utrace
显示成功提示: ✅ 工作流已保存到: users/analyst/workflows/销售数据分析.utrace
```
#### 7. 下次加载
```
切换到"📁 文件"标签
导航到 users/analyst/workflows/
双击 销售数据分析.utrace
工作流自动加载
```
---
## 🔧 技术细节
### 工作流文件格式 (.utrace)
```json
{
"title": "销售数据分析",
"nodes": [
{
"id": "n_123_456",
"type": "universal",
"function": "Loader",
"position": { "x": 100, "y": 100 },
"data": {
"label": "CSV 数据加载器",
"file_path": "users/analyst/data/sales_data.csv",
"delimiter": ",",
"meta": { ... }
}
}
],
"edges": [ ... ],
"globalSettings": {
"sampleRate": 0.1,
"timeRange": { "start": 0, "end": 1000 }
},
"savedAt": "2026-01-07T12:34:56.789Z"
}
```
### 路径规范
所有路径均为**相对于 `cloud/` 目录的相对路径**
| 类型 | 路径格式 | 示例 |
|------|---------|------|
| 共享资源 | `shared/...` | `shared/examples/sample.csv` |
| 用户数据 | `users/{username}/data/...` | `users/guest/data/test.csv` |
| 工作流 | `users/{username}/workflows/...` | `users/admin/workflows/分析.utrace` |
| 结果 | `users/{username}/results/...` | `users/dev/results/output.csv` |
| 临时文件 | `temp/...` | `temp/cache_123.tmp` |
### API 调用
#### 保存工作流
```typescript
const saveWorkflow = async () => {
const blob = new Blob([JSON.stringify(workflowData)], {
type: 'application/json'
})
const file = new File([blob], `${title}.utrace`, {
type: 'application/json'
})
const formData = new FormData()
formData.append('file', file)
await fetch(`/api/files/upload?path=users/${user}/workflows&username=${user}`, {
method: 'POST',
body: formData
})
}
```
#### 加载工作流
```typescript
const loadWorkflow = async (path: string) => {
const response = await fetch(`/api/files/download?path=${encodeURIComponent(path)}`)
const workflowData = await response.json()
// 恢复状态
setNodes(workflowData.nodes)
setEdges(workflowData.edges)
setWorkflowTitle(workflowData.title)
setGlobalSettings(workflowData.globalSettings)
}
```
#### 复制路径
```typescript
const copyPath = async (path: string) => {
await navigator.clipboard.writeText(path)
// 路径格式: users/guest/data/file.csv
}
```
---
## 🎯 使用技巧
### 1. 工作流命名建议
- ✅ 使用描述性名称: `销售数据分析`
- ✅ 包含日期: `数据清洗_20260107`
- ✅ 区分版本: `模型训练_v1`, `模型训练_v2`
- ❌ 避免特殊字符: `/\:*?"<>|`
### 2. 文件组织建议
```
users/analyst/
├── workflows/
│ ├── 销售分析.utrace
│ ├── 库存统计.utrace
│ └── 月度报告.utrace
├── data/
│ ├── raw/ # 原始数据
│ ├── processed/ # 处理后的数据
│ └── backup/ # 备份
└── results/
├── 2026-01/ # 按月归档
└── 2026-02/
```
### 3. 快捷键
- `Enter`: 确认编辑(标题、用户名)
- `Escape`: 取消编辑
- `双击`: 加载 .utrace 工作流
- `右键`: 打开文件菜单
### 4. 路径使用示例
#### CSVLoader 节点
```
file_path: users/guest/data/sales.csv
```
#### Transform 节点(如果需要输出)
```
output_path: users/guest/results/transformed.csv
```
#### 共享数据
```
file_path: shared/examples/sample.csv
```
---
## 🐛 故障排除
### 问题1: 工作流保存失败
**症状**: 点击 💾 按钮后显示"❌ 保存失败"
**原因**:
- 后端服务未启动
- 用户目录不存在
**解决**:
```bash
# 检查后端是否运行
python -m uvicorn server.main:app --reload
# 检查 cloud 目录结构
ls cloud/users/{username}/workflows
```
### 问题2: 工作流加载失败
**症状**: 双击 .utrace 文件无响应
**原因**:
- 文件格式错误
- 文件损坏
**解决**:
- 用文本编辑器检查 .utrace 文件是否为有效 JSON
- 重新保存工作流
### 问题3: 路径复制不工作
**症状**: 右键点击"复制路径"无反应
**原因**:
- 浏览器不支持剪贴板 API
- 权限不足
**解决**:
- 使用现代浏览器Chrome, Edge, Firefox
- 允许剪贴板权限
- 降级方案会自动使用 execCommand
### 问题4: 用户切换后文件不见了
**症状**: 切换用户后文件列表为空
**原因**:
- 新用户目录尚未创建
- 正常隔离机制
**解决**:
- 上传文件到新用户空间
- 或从共享目录访问公共资源
---
## 📊 版本对比
| 功能 | v0.2.0 | v0.2.1 |
|------|--------|--------|
| 用户切换 | ✅ 按钮菜单 | ✅ 下拉框 + 输入框 |
| 工作流标题 | ❌ | ✅ 可编辑 |
| 工作流保存 | ❌ | ✅ 保存到服务器 |
| 工作流加载 | ❌ | ✅ 双击加载 |
| 路径复制 | ❌ | ✅ 右键菜单 |
| 文件浏览器 | ✅ 基础功能 | ✅ 增强交互 |
---
## 🚀 下一步计划
- [ ] 工作流版本管理(自动备份)
- [ ] 工作流模板系统
- [ ] 用户间共享工作流
- [ ] 工作流执行历史
- [ ] 文件搜索功能
- [ ] 批量文件操作
- [ ] 工作流预览图生成
---
**版本**: v0.2.1
**更新日期**: 2026-01-07
**向后兼容**: 是
**需要后端更新**: 否