2026-06-28 11:52:32 +08:00
|
|
|
import {
|
|
|
|
|
BookOpenIcon,
|
|
|
|
|
BotIcon,
|
|
|
|
|
ClipboardListIcon,
|
|
|
|
|
FileTextIcon,
|
|
|
|
|
FlagIcon,
|
|
|
|
|
GitBranchIcon,
|
|
|
|
|
HeadphonesIcon,
|
|
|
|
|
HelpCircleIcon,
|
|
|
|
|
MessageCircleIcon,
|
|
|
|
|
PlayCircleIcon,
|
|
|
|
|
SearchIcon,
|
|
|
|
|
SendIcon,
|
|
|
|
|
ShieldCheckIcon,
|
|
|
|
|
TicketIcon,
|
|
|
|
|
UserCheckIcon,
|
|
|
|
|
type LucideIcon,
|
|
|
|
|
} from "lucide-react"
|
|
|
|
|
|
|
|
|
|
export type WorkflowNodeMeta = {
|
|
|
|
|
icon: LucideIcon
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const workflowNodeMetaByType: Record<string, WorkflowNodeMeta> = {
|
2026-06-28 12:51:03 +08:00
|
|
|
start: { icon: PlayCircleIcon },
|
|
|
|
|
conversation_understanding: { icon: MessageCircleIcon },
|
|
|
|
|
reply_policy: { icon: ShieldCheckIcon },
|
|
|
|
|
knowledge_retrieve: { icon: BookOpenIcon },
|
|
|
|
|
answerability_gate: { icon: HelpCircleIcon },
|
|
|
|
|
llm_reply: { icon: BotIcon },
|
|
|
|
|
condition: { icon: GitBranchIcon },
|
|
|
|
|
analyze_conversation: { icon: SearchIcon },
|
|
|
|
|
prepare_ticket_draft: { icon: ClipboardListIcon },
|
|
|
|
|
human_confirm: { icon: UserCheckIcon },
|
|
|
|
|
create_ticket: { icon: TicketIcon },
|
|
|
|
|
handoff_to_human: { icon: HeadphonesIcon },
|
|
|
|
|
send_reply: { icon: SendIcon },
|
|
|
|
|
end: { icon: FlagIcon },
|
2026-06-28 11:52:32 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export function getWorkflowNodeMeta(type: string): WorkflowNodeMeta {
|
2026-06-28 12:51:03 +08:00
|
|
|
return workflowNodeMetaByType[type] ?? { icon: FileTextIcon }
|
2026-06-28 11:52:32 +08:00
|
|
|
}
|