359 lines
8.4 KiB
Markdown
359 lines
8.4 KiB
Markdown
# 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
|
||
**向后兼容**: 是
|
||
**需要后端更新**: 否
|