"use client"; import { useState, useEffect } from "react"; import { usePathname, useRouter } from "next/navigation"; import Link from "next/link"; import { Book, ChevronRight, FileText, MessageSquare, LogOut, Menu, Search, User, } from "lucide-react"; import Breadcrumb from "@/components/ui/breadcrumb"; import { cn } from "@/lib/utils"; type NavigationItem = { name: string; icon: React.ComponentType<{ className?: string }>; href?: string; children?: Array<{ name: string; href: string; }>; }; export default function DashboardLayout({ children, }: { children: React.ReactNode; }) { const router = useRouter(); const pathname = usePathname(); const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false); const [isDocProcessingOpen, setIsDocProcessingOpen] = useState( pathname.startsWith("/dashboard/doc-processing") ); useEffect(() => { const token = localStorage.getItem("token"); if (!token) { router.push("/login"); } }, [router]); const handleLogout = () => { localStorage.removeItem("token"); router.push("/login"); }; useEffect(() => { if (pathname.startsWith("/dashboard/doc-processing")) { setIsDocProcessingOpen(true); } }, [pathname]); const navigation: NavigationItem[] = [ { name: "知识库", href: "/dashboard/knowledge", icon: Book }, { name: "对话", href: "/dashboard/chat", icon: MessageSquare }, { name: "文档处理", icon: FileText, children: [ { name: "需求提取", href: "/dashboard/doc-processing/extract" }, { name: "测试用例生成", href: "/dashboard/doc-processing/test-case-gen", }, ], }, { name: "一致性分析", href: "/dashboard/consistency-analysis", icon: Search, }, { name: "API 密钥", href: "/dashboard/api-keys", icon: User }, ]; return (