// File: frontend/app/workflow/components/WorkflowSidebar.tsx // Description: 侧边栏组件,用于拖放节点 import React, { DragEvent } from 'react'; import { MessageSquareText, BrainCircuit, Database, LogOut, Play, CheckCircle } from 'lucide-react'; // 定义可拖拽的节点类型 (从 page.tsx 移动过来) const nodeTypesForPalette = [ { type: 'startNode', label: '开始流程', icon: Play, defaultData: { label: '开始' } }, { type: 'inputNode', label: '文本输入', icon: MessageSquareText, defaultData: { text: '用户输入...' } }, { type: 'llmNode', label: 'LLM 调用', icon: BrainCircuit, defaultData: { model: 'gpt-3.5-turbo', temperature: 0.7, systemPrompt: '你是一个乐于助人的 AI 助手。' } }, { type: 'ragNode', label: 'RAG 查询', icon: Database, defaultData: { query: '...', knowledgeBase: 'default' } }, { type: 'outputNode', label: '结束流程', icon: CheckCircle, defaultData: { label: '结束' } }, ]; export const WorkflowSidebar = () => { const onDragStart = (event: DragEvent, nodeType: string, defaultData: any) => { const nodeInfo = JSON.stringify({ nodeType, defaultData }); event.dataTransfer.setData('application/reactflow', nodeInfo); event.dataTransfer.effectAllowed = 'move'; console.log(`Drag Start: ${nodeType}`); }; return ( ); };