From dc7fa2bd417bbdad1af30fdfa28e75c5f8ab2c6f Mon Sep 17 00:00:00 2001 From: mlogclub Date: Sun, 28 Jun 2026 12:35:06 +0800 Subject: [PATCH] feat: simplify WorkflowNodeMeta by removing label and accent class handling --- .../_components/workflow-node-card.tsx | 10 +---- .../_components/workflow-node-meta.ts | 45 +++++++------------ 2 files changed, 16 insertions(+), 39 deletions(-) diff --git a/web/app/dashboard/ai-workflows/_components/workflow-node-card.tsx b/web/app/dashboard/ai-workflows/_components/workflow-node-card.tsx index 4a0d24e..3090652 100644 --- a/web/app/dashboard/ai-workflows/_components/workflow-node-card.tsx +++ b/web/app/dashboard/ai-workflows/_components/workflow-node-card.tsx @@ -2,7 +2,7 @@ import type { ReactNode } from "react" import { cn } from "@/lib/utils" import type { AIWorkflowNodeSpec } from "@/lib/api/admin" -import { getWorkflowNodeAccentClass, getWorkflowNodeMeta } from "./workflow-node-meta" +import { getWorkflowNodeMeta } from "./workflow-node-meta" import { WorkflowNodeIcon } from "./workflow-node-icon" export function WorkflowNodeCard({ @@ -40,14 +40,6 @@ export function WorkflowNodeCard({ {title}
- - {meta.label} - {nodeType} diff --git a/web/app/dashboard/ai-workflows/_components/workflow-node-meta.ts b/web/app/dashboard/ai-workflows/_components/workflow-node-meta.ts index efe3ab4..86b003e 100644 --- a/web/app/dashboard/ai-workflows/_components/workflow-node-meta.ts +++ b/web/app/dashboard/ai-workflows/_components/workflow-node-meta.ts @@ -30,42 +30,27 @@ export type WorkflowNodeTone = export type WorkflowNodeMeta = { icon: LucideIcon tone: WorkflowNodeTone - label: string } const workflowNodeMetaByType: Record = { - start: { icon: PlayCircleIcon, tone: "blue", label: "入口" }, - conversation_understanding: { icon: MessageCircleIcon, tone: "indigo", label: "理解" }, - reply_policy: { icon: ShieldCheckIcon, tone: "violet", label: "策略" }, - knowledge_retrieve: { icon: BookOpenIcon, tone: "emerald", label: "知识" }, - answerability_gate: { icon: HelpCircleIcon, tone: "cyan", label: "判断" }, - llm_reply: { icon: BotIcon, tone: "indigo", label: "生成" }, - condition: { icon: GitBranchIcon, tone: "cyan", label: "分支" }, - analyze_conversation: { icon: SearchIcon, tone: "blue", label: "分析" }, - prepare_ticket_draft: { icon: ClipboardListIcon, tone: "amber", label: "工单" }, - human_confirm: { icon: UserCheckIcon, tone: "amber", label: "确认" }, - create_ticket: { icon: TicketIcon, tone: "rose", label: "工单" }, - handoff_to_human: { icon: HeadphonesIcon, tone: "amber", label: "人工" }, - send_reply: { icon: SendIcon, tone: "emerald", label: "发送" }, - end: { icon: FlagIcon, tone: "slate", label: "结束" }, + start: { icon: PlayCircleIcon, tone: "blue" }, + conversation_understanding: { icon: MessageCircleIcon, tone: "indigo" }, + reply_policy: { icon: ShieldCheckIcon, tone: "violet" }, + knowledge_retrieve: { icon: BookOpenIcon, tone: "emerald" }, + answerability_gate: { icon: HelpCircleIcon, tone: "cyan" }, + llm_reply: { icon: BotIcon, tone: "indigo" }, + condition: { icon: GitBranchIcon, tone: "cyan" }, + analyze_conversation: { icon: SearchIcon, tone: "blue" }, + prepare_ticket_draft: { icon: ClipboardListIcon, tone: "amber" }, + human_confirm: { icon: UserCheckIcon, tone: "amber" }, + create_ticket: { icon: TicketIcon, tone: "rose" }, + handoff_to_human: { icon: HeadphonesIcon, tone: "amber" }, + send_reply: { icon: SendIcon, tone: "emerald" }, + end: { icon: FlagIcon, tone: "slate" }, } export function getWorkflowNodeMeta(type: string): WorkflowNodeMeta { - return workflowNodeMetaByType[type] ?? { icon: FileTextIcon, tone: "slate", label: "节点" } -} - -export function getWorkflowNodeAccentClass(tone: WorkflowNodeTone) { - const classes: Record = { - blue: "border-blue-200/80 bg-blue-50 text-blue-700 dark:border-blue-900/60 dark:bg-blue-950/50 dark:text-blue-300", - cyan: "border-cyan-200/80 bg-cyan-50 text-cyan-700 dark:border-cyan-900/60 dark:bg-cyan-950/50 dark:text-cyan-300", - emerald: "border-emerald-200/80 bg-emerald-50 text-emerald-700 dark:border-emerald-900/60 dark:bg-emerald-950/50 dark:text-emerald-300", - indigo: "border-indigo-200/80 bg-indigo-50 text-indigo-700 dark:border-indigo-900/60 dark:bg-indigo-950/50 dark:text-indigo-300", - amber: "border-amber-200/80 bg-amber-50 text-amber-700 dark:border-amber-900/60 dark:bg-amber-950/50 dark:text-amber-300", - violet: "border-violet-200/80 bg-violet-50 text-violet-700 dark:border-violet-900/60 dark:bg-violet-950/50 dark:text-violet-300", - rose: "border-rose-200/80 bg-rose-50 text-rose-700 dark:border-rose-900/60 dark:bg-rose-950/50 dark:text-rose-300", - slate: "border-slate-200/80 bg-slate-50 text-slate-700 dark:border-slate-800 dark:bg-slate-900/60 dark:text-slate-300", - } - return classes[tone] + return workflowNodeMetaByType[type] ?? { icon: FileTextIcon, tone: "slate" } } export function getWorkflowNodeIconClass(tone: WorkflowNodeTone) {