195 lines
4.3 KiB
Markdown
195 lines
4.3 KiB
Markdown
|
|
# 工作流模板和导入导出功能说明
|
|||
|
|
|
|||
|
|
## ✅ 已完成
|
|||
|
|
|
|||
|
|
已实现工作流模板功能、导入导出功能和执行历史优化。
|
|||
|
|
|
|||
|
|
## 功能特性
|
|||
|
|
|
|||
|
|
### 1. 工作流模板功能
|
|||
|
|
|
|||
|
|
#### 预设模板
|
|||
|
|
|
|||
|
|
系统提供4个预设模板:
|
|||
|
|
|
|||
|
|
1. **简单LLM工作流** (`simple_llm`)
|
|||
|
|
- 开始 → LLM → 结束
|
|||
|
|
- 适合简单的LLM调用场景
|
|||
|
|
|
|||
|
|
2. **条件判断LLM工作流** (`conditional_llm`)
|
|||
|
|
- 开始 → 条件判断 → [True分支LLM / False分支LLM] → 结束
|
|||
|
|
- 适合根据条件调用不同LLM的场景
|
|||
|
|
|
|||
|
|
3. **数据转换+LLM工作流** (`data_transform_llm`)
|
|||
|
|
- 开始 → 数据转换 → LLM → 结束
|
|||
|
|
- 适合需要先转换数据再处理场景
|
|||
|
|
|
|||
|
|
4. **多LLM链式工作流** (`multi_llm_chain`)
|
|||
|
|
- 开始 → LLM1 → LLM2 → LLM3 → 结束
|
|||
|
|
- 适合需要多步LLM处理的场景
|
|||
|
|
|
|||
|
|
#### API端点
|
|||
|
|
|
|||
|
|
- `GET /api/v1/workflows/templates` - 获取模板列表
|
|||
|
|
- `GET /api/v1/workflows/templates/{template_id}` - 获取模板详情
|
|||
|
|
- `POST /api/v1/workflows/templates/{template_id}/create` - 从模板创建工作流
|
|||
|
|
|
|||
|
|
### 2. 工作流导入导出功能
|
|||
|
|
|
|||
|
|
#### 导出工作流
|
|||
|
|
|
|||
|
|
**API端点**: `GET /api/v1/workflows/{workflow_id}/export`
|
|||
|
|
|
|||
|
|
**响应格式**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"id": "workflow-id",
|
|||
|
|
"name": "工作流名称",
|
|||
|
|
"description": "工作流描述",
|
|||
|
|
"nodes": [...],
|
|||
|
|
"edges": [...],
|
|||
|
|
"version": 1,
|
|||
|
|
"status": "active",
|
|||
|
|
"exported_at": "2024-01-17T01:00:00"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 导入工作流
|
|||
|
|
|
|||
|
|
**API端点**: `POST /api/v1/workflows/import`
|
|||
|
|
|
|||
|
|
**请求格式**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"name": "导入的工作流",
|
|||
|
|
"description": "工作流描述",
|
|||
|
|
"nodes": [...],
|
|||
|
|
"edges": [...]
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**特性**:
|
|||
|
|
- 自动重新生成节点ID(避免ID冲突)
|
|||
|
|
- 自动更新边的源节点和目标节点ID
|
|||
|
|
- 自动验证工作流结构
|
|||
|
|
- 验证失败时返回详细错误信息
|
|||
|
|
|
|||
|
|
### 3. 执行历史优化
|
|||
|
|
|
|||
|
|
#### 分页功能
|
|||
|
|
|
|||
|
|
- `skip`: 跳过记录数(默认0)
|
|||
|
|
- `limit`: 每页记录数(默认100,最大100)
|
|||
|
|
|
|||
|
|
#### 筛选功能
|
|||
|
|
|
|||
|
|
- `workflow_id`: 按工作流ID筛选
|
|||
|
|
- `status`: 按状态筛选(pending, running, completed, failed)
|
|||
|
|
|
|||
|
|
#### 搜索功能
|
|||
|
|
|
|||
|
|
- `search`: 搜索关键词
|
|||
|
|
- 搜索范围:执行ID、工作流ID、任务ID
|
|||
|
|
|
|||
|
|
#### API端点
|
|||
|
|
|
|||
|
|
`GET /api/v1/executions?skip=0&limit=20&workflow_id=xxx&status=completed&search=keyword`
|
|||
|
|
|
|||
|
|
## 使用示例
|
|||
|
|
|
|||
|
|
### 1. 获取模板列表
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
curl -X GET "http://localhost:8037/api/v1/workflows/templates" \
|
|||
|
|
-H "Authorization: Bearer {token}"
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**响应**:
|
|||
|
|
```json
|
|||
|
|
[
|
|||
|
|
{
|
|||
|
|
"id": "simple_llm",
|
|||
|
|
"name": "简单LLM工作流",
|
|||
|
|
"description": "一个简单的LLM调用工作流..."
|
|||
|
|
},
|
|||
|
|
...
|
|||
|
|
]
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. 从模板创建工作流
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
curl -X POST "http://localhost:8037/api/v1/workflows/templates/simple_llm/create?name=我的工作流" \
|
|||
|
|
-H "Authorization: Bearer {token}"
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. 导出工作流
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
curl -X GET "http://localhost:8037/api/v1/workflows/{workflow_id}/export" \
|
|||
|
|
-H "Authorization: Bearer {token}" \
|
|||
|
|
-o workflow.json
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 4. 导入工作流
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
curl -X POST "http://localhost:8037/api/v1/workflows/import" \
|
|||
|
|
-H "Authorization: Bearer {token}" \
|
|||
|
|
-H "Content-Type: application/json" \
|
|||
|
|
-d @workflow.json
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 5. 获取执行历史(带筛选和搜索)
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
curl -X GET "http://localhost:8037/api/v1/executions?skip=0&limit=20&status=completed&search=test" \
|
|||
|
|
-H "Authorization: Bearer {token}"
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 前端集成建议
|
|||
|
|
|
|||
|
|
### 模板选择界面
|
|||
|
|
|
|||
|
|
1. 显示模板列表(卡片式布局)
|
|||
|
|
2. 点击模板查看详情
|
|||
|
|
3. 一键从模板创建工作流
|
|||
|
|
|
|||
|
|
### 导入导出功能
|
|||
|
|
|
|||
|
|
1. **导出**:
|
|||
|
|
- 在工作流详情页添加"导出"按钮
|
|||
|
|
- 点击后下载JSON文件
|
|||
|
|
|
|||
|
|
2. **导入**:
|
|||
|
|
- 在工作流列表页添加"导入"按钮
|
|||
|
|
- 选择JSON文件上传
|
|||
|
|
- 显示导入结果
|
|||
|
|
|
|||
|
|
### 执行历史优化
|
|||
|
|
|
|||
|
|
1. **分页组件**:使用Element Plus的Pagination组件
|
|||
|
|
2. **筛选器**:下拉选择状态、工作流
|
|||
|
|
3. **搜索框**:实时搜索
|
|||
|
|
4. **表格**:显示筛选和搜索后的结果
|
|||
|
|
|
|||
|
|
## 优势
|
|||
|
|
|
|||
|
|
1. **快速创建**:使用模板快速创建工作流
|
|||
|
|
2. **工作流复用**:通过导入导出复用工作流
|
|||
|
|
3. **高效查询**:执行历史支持分页、筛选、搜索
|
|||
|
|
4. **数据安全**:导入时自动重新生成ID,避免冲突
|
|||
|
|
|
|||
|
|
## 后续计划
|
|||
|
|
|
|||
|
|
- [ ] 前端模板选择界面
|
|||
|
|
- [ ] 前端导入导出功能
|
|||
|
|
- [ ] 执行历史前端优化
|
|||
|
|
- [ ] 模板市场(用户分享模板)
|
|||
|
|
- [ ] 工作流版本对比
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
**状态**: ✅ 后端已完成
|
|||
|
|
**时间**: 2024年
|