diff --git a/src/components/layout/AppShell.tsx b/src/components/layout/AppShell.tsx index 40d46e2..eab14dc 100644 --- a/src/components/layout/AppShell.tsx +++ b/src/components/layout/AppShell.tsx @@ -6,7 +6,6 @@ import { Topbar } from "./Topbar"; import { HomePage } from "@/components/pages/HomePage"; import { AssistantPage } from "@/components/pages/AssistantPage"; -import { AssistantWorkflowPage } from "@/components/pages/AssistantWorkflowPage"; import { ComponentsModelsPage } from "@/components/pages/ComponentsModelsPage"; import { ComponentsKnowledgePage } from "@/components/pages/ComponentsKnowledgePage"; import { ComponentsToolsPage } from "@/components/pages/ComponentsToolsPage"; @@ -17,8 +16,7 @@ import { ProfilePage } from "@/components/pages/ProfilePage"; export type NavKey = | "home" - | "assistant-prompt" - | "assistant-workflow" + | "assistants" | "components-models" | "components-knowledge" | "components-tools" @@ -46,10 +44,7 @@ export function AppShell() {
{active === "home" && } - - {active === "assistant-prompt" && } - {active === "assistant-workflow" && } - + {active === "assistants" && } {active === "components-models" && } {active === "components-knowledge" && } {active === "components-tools" && } diff --git a/src/components/layout/Sidebar.tsx b/src/components/layout/Sidebar.tsx index b09cd0a..d3d0434 100644 --- a/src/components/layout/Sidebar.tsx +++ b/src/components/layout/Sidebar.tsx @@ -9,7 +9,6 @@ import { Clock3, Database, Wrench, - FileText, Home, PlayCircle, Video, @@ -34,15 +33,6 @@ const mainItems: Array<{ { key: "test", label: "测试助手", icon: PlayCircle }, ]; -const assistantSubItems: Array<{ - key: NavKey; - label: string; - icon: React.ComponentType<{ size?: number }>; -}> = [ - { key: "assistant-prompt", label: "提示词模式", icon: FileText }, - { key: "assistant-workflow", label: "工作流模式", icon: Workflow }, -]; - const componentSubItems: Array<{ key: NavKey; label: string; @@ -59,8 +49,7 @@ export function Sidebar({ onNavigate, onToggle, }: SidebarProps) { - const assistantActive = - active === "assistant-prompt" || active === "assistant-workflow"; + const assistantActive = active === "assistants"; const componentActive = active === "components-models" || active === "components-knowledge" || active === "components-tools"; @@ -106,46 +95,14 @@ export function Sidebar({ label="控制台" onClick={() => onNavigate("home")} /> -
- {collapsed ? ( - - ) : ( -
- - 创建助手 -
- )} - -
- {assistantSubItems.map((item) => ( - onNavigate(item.key)} - small - /> - ))} -
+ onNavigate("assistants")} + />
diff --git a/src/components/pages/AssistantPage.tsx b/src/components/pages/AssistantPage.tsx index a451344..ac27d6d 100644 --- a/src/components/pages/AssistantPage.tsx +++ b/src/components/pages/AssistantPage.tsx @@ -1,13 +1,19 @@ "use client"; -import { useState } from "react"; import { Bot, Brain, + Database, Mic, + MoreHorizontal, + Pencil, + Plus, Rocket, Save, + Search, Sparkles, + Trash2, + Volume2, } from "lucide-react"; import { Button } from "@/components/ui/button"; @@ -28,6 +34,7 @@ import { CardHeader, CardTitle, } from "@/components/ui/card"; +import { useState } from "react"; type AssistantForm = { name: string; @@ -40,6 +47,47 @@ type AssistantForm = { enableInterrupt: boolean; }; +type AssistantType = "提示词" | "工作流" | "Dify" | "FastGPT"; + +type AssistantListItem = { + id: string; + name: string; + type: AssistantType; + status: "运行中" | "草稿" | "已停用"; + updatedAt: string; +}; + +const mockAssistants: AssistantListItem[] = [ + { + id: "asst_001", + name: "政务视频咨询助手", + type: "提示词", + status: "运行中", + updatedAt: "2026-06-05 18:20", + }, + { + id: "asst_002", + name: "热线工单辅助助手", + type: "工作流", + status: "草稿", + updatedAt: "2026-06-04 15:12", + }, + { + id: "asst_003", + name: "Dify 知识库问答助手", + type: "Dify", + status: "运行中", + updatedAt: "2026-06-02 09:48", + }, + { + id: "asst_004", + name: "FastGPT 售后咨询助手", + type: "FastGPT", + status: "已停用", + updatedAt: "2026-05-29 11:06", + }, +]; + export function AssistantPage() { const [form, setForm] = useState({ @@ -53,6 +101,8 @@ export function AssistantPage() { knowledgeBase: "政务政策知识库", enableInterrupt: true, }); + const [view, setView] = useState<"list" | "create">("list"); + const [openMenuId, setOpenMenuId] = useState(null); function updateForm( key: K, @@ -63,7 +113,125 @@ export function AssistantPage() { [key]: value, })); } - + if (view === "list") { + return ( +
+
+
+
+ +

创建助手

+
+

+ 管理已有的视频助手,支持提示词、工作流、Dify 和 FastGPT 类型。 +

+
+ + +
+ +
+
+
+
助手列表
+
+ 共 {mockAssistants.length} 个助手 +
+
+ +
+ + 搜索助手名称... +
+
+ +
+
+
助手名称
+
助手类型
+
状态
+
更新时间
+
操作
+
+ +
+ {mockAssistants.map((assistant) => ( +
+
+
+ {assistant.name} +
+
+ {assistant.id} +
+
+ +
+ + {assistant.type} + +
+ +
+ + {assistant.status} + +
+ +
{assistant.updatedAt}
+ +
+ + + + + {openMenuId === assistant.id && ( +
+ +
+ )} +
+
+ ))} +
+
+
+
+ ); + } return (
@@ -78,6 +246,14 @@ export function AssistantPage() {
+