TraceStudio-dev/docs/studio1.3/FUNCTION_NESTING_OVERVIEW.md

314 lines
6.7 KiB
Markdown
Raw Normal View History

# 🎯 函数节点嵌套 - 新功能说明
> **新增功能发布**: 支持工作流函数化和多层嵌套编辑
## 📢 功能亮点
### 什么是函数节点嵌套?
将任何工作流**保存为可复用的函数节点**,并支持**无限层嵌套编辑**。
### 核心特性
| 特性 | 说明 |
|------|------|
| 📦 **函数封装** | 将工作流转为可复用的函数节点 |
| 🔄 **即插即用** | 拖拽函数到其他工作流中使用 |
| 🔍 **双击编辑** | 双击进入函数内部进行编辑 |
| 📍 **面包屑导航** | 清晰定位当前所在层级 |
| 🌳 **多层嵌套** | 函数中可以包含其他函数 |
| 💾 **自动保存** | 所有修改自动保存到磁盘 |
---
## 🚀 5分钟快速开始
### 步骤 1: 创建函数
```
1. 在画布中设计任何工作流
2. 右键 → "保存为函数"
3. 输入函数名: my_function
4. 输入显示名: 我的函数
5. ✅ 完成!
```
### 步骤 2: 使用函数
```
1. 从 NodePalette 找到函数
2. 拖拽到新工作流
3. 连接输入/输出
4. ✅ 完成!
```
### 步骤 3: 编辑函数
```
1. 双击函数节点
2. 看到面包屑: 主工作流 / my_function (L1)
3. 编辑内部工作流
4. 点击面包屑或返回按钮退出
5. ✅ 完成!
```
---
## 📚 详细文档
### 快速开始 (15 分钟)
👉 [FUNCTION_NESTING_QUICKSTART.md](FUNCTION_NESTING_QUICKSTART.md)
- 5分钟快速上手
- 常见问题解答
- 最佳实践建议
- 命名规范说明
### 完整实现指南 (1 小时)
👉 [FUNCTION_NESTING_IMPLEMENTATION.md](FUNCTION_NESTING_IMPLEMENTATION.md)
- 完整的架构设计
- 后端实现详解
- 前端实现详解
- API 文档
- 代码示例
- 测试场景
- 调试指南
### 完成总结 (了解项目)
👉 [COMPLETION_SUMMARY.md](COMPLETION_SUMMARY.md)
- 交付物清单
- 代码统计
- 文档清单
- 技术亮点
- 下一步计划
---
## 🎓 使用场景
### 场景 1: 数据处理工厂
```
主工作流
├─ 加载数据节点
├─ extract_columns 函数 (可复用)
├─ transform_data 函数 (可复用)
└─ 保存结果节点
```
**优势**:
- 每个函数独立维护
- 在不同工作流中复用
- 易于测试和调试
### 场景 2: 业务流程编排
```
主工作流 (采购流程)
├─ 创建订单 (函数)
├─ 验证库存 (函数)
│ ├─ 查询库存 (函数)
│ └─ 计算可用量 (函数)
├─ 生成采购单 (函数)
└─ 发送通知 (函数)
```
**优势**:
- 业务逻辑清晰
- 功能模块化
- 支持多层嵌套
### 场景 3: 数据分析管道
```
分析工作流
├─ 数据加载 (函数)
├─ 数据清洗 (函数)
│ ├─ 去重 (内部函数)
│ ├─ 填充缺失 (内部函数)
│ └─ 异常检测 (内部函数)
├─ 特征工程 (函数)
└─ 模型预测 (函数)
```
**优势**:
- 流程透明
- 易于复用
- 支持版本管理
---
## 🔧 关键技术
### 后端
- **Python**: FastAPI 框架
- **设计模式**: 工厂模式(动态创建节点类)
- **参数传递**: Context 特殊键 (`__function_input_*`, `__function_output_*`)
### 前端
- **状态管理**: Zustand (栈式结构)
- **组件**: React Hooks
- **交互**: 双击进入、右键保存、面包屑导航
### 存储
- **格式**: JSON
- **位置**: `cloud/custom_nodes/functions/`
- **持久化**: 磁盘 + localStorage
---
## 📊 API 接口
### 保存函数
```
POST /api/functions/save
Content-Type: application/json
{
"function_name": "extract_data",
"display_name": "提取数据",
"description": "从源数据中提取列",
"nodes": [...],
"edges": [...],
"inputs": [],
"outputs": []
}
```
### 获取函数列表
```
GET /api/functions/list
响应:
{
"success": true,
"data": [
{
"function_name": "extract_data",
"display_name": "提取数据",
...
}
]
}
```
### 获取函数详情
```
GET /api/functions/extract_data
响应:
{
"success": true,
"data": {
"function_name": "extract_data",
"nodes": [...],
"edges": [...],
...
}
}
```
完整 API 文档见: [FUNCTION_NESTING_IMPLEMENTATION.md](FUNCTION_NESTING_IMPLEMENTATION.md#-api-文档)
---
## ✨ 新增内容
### 后端新增
- `server/app/core/function_nodes.py` (281 行)
- InputNode, OutputNode, FunctionNode, 工厂函数
- `server/app/core/node_loader.py` 修改 (67 行新增)
- 函数节点加载器
- `server/app/api/endpoints_graph.py` 修改 (120 行新增)
- 3 个 API 端点
- `cloud/custom_nodes/functions/` 目录
- 函数存储目录
### 前端新增
- `web/src/stores/useStore.ts` 修改 (130 行新增)
- 函数嵌套状态管理
- `web/src/components/Workspace.tsx` 修改 (95 行新增)
- 双击进入、右键保存功能
- `web/src/components/BreadcrumbNav.tsx` (148 行)
- 面包屑导航组件
### 文档新增
- `FUNCTION_NESTING_QUICKSTART.md` (700+ 行)
- `FUNCTION_NESTING_IMPLEMENTATION.md` (2,300+ 行)
- `COMPLETION_SUMMARY.md` (800+ 行)
---
## ❓ 常见问题
### Q: 如何创建第一个函数?
A: 见 [快速开始](FUNCTION_NESTING_QUICKSTART.md#第1步-创建一个函数)
### Q: 如何进入函数编辑?
A: 双击函数节点即可进入。见 [双击进入](FUNCTION_NESTING_QUICKSTART.md#第3步-进入函数编辑)
### Q: 支持多少层嵌套?
A: 理论无限制,建议不超过 5 层。
### Q: 函数修改后如何保存?
A: 自动保存到 localStorage可右键"保存工作流"永久保存。
### Q: 如何分享函数?
A: 导出 `functions/*.json` 文件,发给其他用户。他们放入同目录即可使用。
更多问题见: [常见问题](FUNCTION_NESTING_QUICKSTART.md#-常见问题)
---
## 🎯 下一步
### 立即体验
1. 阅读 [快速开始](FUNCTION_NESTING_QUICKSTART.md)
2. 创建第一个函数
3. 尝试多层嵌套
### 深入学习
1. 阅读 [完整实现指南](FUNCTION_NESTING_IMPLEMENTATION.md)
2. 查看代码实现
3. 理解架构设计
### 贡献改进
1. 提出功能建议
2. 报告 Bug
3. 贡献代码
---
## 📞 获取帮助
| 问题类型 | 查看文档 |
|---------|--------|
| 快速上手 | [快速开始](FUNCTION_NESTING_QUICKSTART.md) |
| 常见问题 | [常见问题](FUNCTION_NESTING_QUICKSTART.md#-常见问题) |
| 完整文档 | [实现指南](FUNCTION_NESTING_IMPLEMENTATION.md) |
| API 接口 | [API 文档](FUNCTION_NESTING_IMPLEMENTATION.md#-api-文档) |
| 最佳实践 | [最佳实践](FUNCTION_NESTING_QUICKSTART.md#💡-最佳实践) |
| 项目总结 | [完成总结](COMPLETION_SUMMARY.md) |
---
## 🎉 功能发布信息
- **版本**: v1.0.0
- **发布日期**: 2024-01-15
- **状态**: ✅ 生产就绪
- **代码行数**: ~843 行
- **文档行数**: ~3,800 行
- **API 端点**: 3 个
- **测试场景**: 8 个
---
**开始体验新功能吧!** 🚀
👉 [立即开始](FUNCTION_NESTING_QUICKSTART.md)