|
| 1 | +# Flowgram 可视化工作流集成进度 (Flowgram Visual Workflow Integration Progress) |
| 2 | + |
| 3 | +## 当前状态 (Current Status) |
| 4 | + |
| 5 | +### ✅ 已完成 (Completed - Commit: fffc1e4) |
| 6 | + |
| 7 | +1. **依赖安装** (Dependencies Installed) |
| 8 | + - `@flowgram.ai/[email protected]` |
| 9 | + - `@flowgram.ai/[email protected]` |
| 10 | + - `@flowgram.ai/[email protected]` |
| 11 | + |
| 12 | +2. **数据模型更新** (Data Model Updates) |
| 13 | + - 添加 `workflowGraph` 字段到 Scenario 模型 |
| 14 | + - 保留旧字段以保持向后兼容 |
| 15 | + - 数据库迁移脚本已更新 |
| 16 | + |
| 17 | +3. **API 层更新** (API Layer Updates) |
| 18 | + - `triggerType` 从必需改为可选 |
| 19 | + - 添加 `workflowGraph` 参数支持 |
| 20 | + - Create 和 Update 端点已更新 |
| 21 | + |
| 22 | +4. **前端基础** (Frontend Foundation) |
| 23 | + - 创建新的 `flowgramModal.tsx` 组件 |
| 24 | + - 主页面更新使用新的模态框 |
| 25 | + - 基础工作流结构定义 |
| 26 | + |
| 27 | +### 🔄 需要完成 (To Be Completed) |
| 28 | + |
| 29 | +#### 1. 完善 Flowgram 编辑器集成 (Complete Flowgram Editor Integration) |
| 30 | + |
| 31 | +**当前问题**: Flowgram.ai 的详细 API 文档不完全公开。需要: |
| 32 | +- 研究 Flowgram API 的正确使用方式 |
| 33 | +- 实现自定义节点渲染器 |
| 34 | +- 添加节点工具栏和配置面板 |
| 35 | + |
| 36 | +**临时方案**: |
| 37 | +- 可以使用 React Flow 或其他开源流程图库作为替代 |
| 38 | +- 或等待 Flowgram 官方文档/示例 |
| 39 | + |
| 40 | +#### 2. 自定义节点类型实现 (Custom Node Types) |
| 41 | + |
| 42 | +需要实现以下节点类型: |
| 43 | + |
| 44 | +```typescript |
| 45 | +// Trigger Nodes (触发器节点) |
| 46 | +- TimeT riggerNode: 时间触发配置 |
| 47 | +- WebhookTriggerNode: Webhook 触发配置 |
| 48 | +- VariableTriggerNode: 变量监听配置 |
| 49 | +- TaskStatusTriggerNode: 任务状态触发 |
| 50 | +- SystemEventTriggerNode: 系统事件触发 |
| 51 | + |
| 52 | +// Condition Nodes (条件节点) |
| 53 | +- ConditionNode: 条件判断配置 |
| 54 | +- LogicGateNode: AND/OR 逻辑门 |
| 55 | + |
| 56 | +// Action Nodes (动作节点) |
| 57 | +- RunTaskNode: 运行任务配置 |
| 58 | +- SetVariableNode: 设置变量配置 |
| 59 | +- ExecuteCommandNode: 执行命令配置 |
| 60 | +- SendNotificationNode: 发送通知配置 |
| 61 | + |
| 62 | +// Control Flow Nodes (控制流节点) |
| 63 | +- DelayNode: 延迟执行 |
| 64 | +- RetryNode: 重试策略 |
| 65 | +- CircuitBreakerNode: 熔断器 |
| 66 | +``` |
| 67 | + |
| 68 | +#### 3. 节点配置面板 (Node Configuration Panels) |
| 69 | + |
| 70 | +每个节点类型需要自己的配置表单: |
| 71 | +- 双击节点打开配置面板 |
| 72 | +- 表单验证 |
| 73 | +- 实时预览 |
| 74 | + |
| 75 | +#### 4. 后端执行引擎重写 (Backend Execution Engine Rewrite) |
| 76 | + |
| 77 | +当前 `ScenarioService.executeScenario()` 是线性执行。需要: |
| 78 | + |
| 79 | +```typescript |
| 80 | +// 新的图执行引擎 |
| 81 | +class GraphExecutor { |
| 82 | + async execute(workflowGraph: any, triggerData: any) { |
| 83 | + // 1. 查找入口节点(触发器节点) |
| 84 | + // 2. 遍历图结构 |
| 85 | + // 3. 评估条件节点 |
| 86 | + // 4. 执行动作节点 |
| 87 | + // 5. 处理分支和合并 |
| 88 | + // 6. 记录执行轨迹 |
| 89 | + } |
| 90 | +} |
| 91 | +``` |
| 92 | + |
| 93 | +#### 5. 工作流验证 (Workflow Validation) |
| 94 | + |
| 95 | +- 检查是否有有效的触发器节点 |
| 96 | +- 验证节点连接的完整性 |
| 97 | +- 检测循环 |
| 98 | +- 验证节点配置 |
| 99 | + |
| 100 | +#### 6. 测试和调试 (Testing & Debugging) |
| 101 | + |
| 102 | +- 单元测试 |
| 103 | +- 集成测试 |
| 104 | +- UI 测试 |
| 105 | +- 性能测试 |
| 106 | + |
| 107 | +## 实现建议 (Implementation Recommendations) |
| 108 | + |
| 109 | +### 方案 A: 完整 Flowgram 集成 (推荐如有文档) |
| 110 | +如果能获取 Flowgram 完整文档和示例: |
| 111 | +1. 参考官方示例实现自定义节点 |
| 112 | +2. 使用 Flowgram 的插件系统 |
| 113 | +3. 利用 Flowgram 的内置功能 |
| 114 | + |
| 115 | +### 方案 B: 使用 React Flow (备选方案) |
| 116 | +如果 Flowgram 文档不足: |
| 117 | +1. 使用 React Flow (`reactflow` npm package) |
| 118 | +2. 成熟的文档和社区支持 |
| 119 | +3. 更容易实现自定义节点 |
| 120 | +4. 保持相同的数据结构 |
| 121 | + |
| 122 | +### 方案 C: 混合方案 |
| 123 | +1. 前端继续改进表单界面 |
| 124 | +2. 后端同时支持表单数据和图数据 |
| 125 | +3. 渐进式迁移 |
| 126 | + |
| 127 | +## 预估工作量 (Estimated Effort) |
| 128 | + |
| 129 | +- **方案 A** (Flowgram): 20-30 小时(假设有文档) |
| 130 | +- **方案 B** (React Flow): 15-20 小时 |
| 131 | +- **方案 C** (渐进式): 10-15 小时初始,后续持续 |
| 132 | + |
| 133 | +## 下一步建议 (Next Steps Recommendations) |
| 134 | + |
| 135 | +1. **立即**: 确认是否有 Flowgram 官方文档或示例代码 |
| 136 | +2. **短期**: 实现一个简单的节点(如触发器节点)作为 POC |
| 137 | +3. **中期**: 完成所有节点类型和配置面板 |
| 138 | +4. **长期**: 重写执行引擎并测试 |
| 139 | + |
| 140 | +## 技术债务注意 (Technical Debt Notes) |
| 141 | + |
| 142 | +- 旧的表单数据结构被标记为 deprecated 但仍保留 |
| 143 | +- 需要在未来版本中清理 |
| 144 | +- 数据库包含两套结构的字段 |
| 145 | + |
| 146 | +## 联系和协作 (Contact & Collaboration) |
| 147 | + |
| 148 | +如需加速开发,建议: |
| 149 | +1. 获取 Flowgram 官方支持或文档 |
| 150 | +2. 提供 Flowgram 集成的参考示例 |
| 151 | +3. 或考虑使用 React Flow 等替代方案 |
0 commit comments