"use client" import { useState, useEffect, useRef } from "react" import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card" import { Button } from "@/components/ui/button" import { Brain, Lightbulb, BarChart3, Users, Settings, Menu, ChevronDown, Link as LinkIcon, CheckCircle } from "lucide-react" import { Sheet, SheetContent, SheetHeader, SheetTitle, SheetTrigger } from "@/components/ui/sheet" import Link from "next/link" import Image from "next/image" import { useAuth } from "@/lib/hooks/use-auth" import { useRouter } from "next/navigation" import { ProtectedRoute } from "@/components/protected-route" export default function HomePage() { const { user, logout } = useAuth() const router = useRouter() const [isDropdownOpen, setIsDropdownOpen] = useState(false) const [testCompletionStatus, setTestCompletionStatus] = useState({ logic: false, creative: false, combined: false }) const [isLoadingTests, setIsLoadingTests] = useState(true) const [questionCounts, setQuestionCounts] = useState({ logic: 0, creative: 0, total: 0 }) const dropdownRef = useRef(null) const handleLogout = () => { logout() router.push("/") } // 獲取題目數量 const fetchQuestionCounts = async () => { try { // 獲取邏輯題目數量 const logicResponse = await fetch('/api/logic-questions') const logicData = await logicResponse.json() const logicCount = logicData.success ? logicData.count || logicData.questions?.length || 0 : 0 // 獲取創意題目數量 const creativeResponse = await fetch('/api/creative-questions') const creativeData = await creativeResponse.json() const creativeCount = creativeData.success ? creativeData.questions?.length || 0 : 0 setQuestionCounts({ logic: logicCount, creative: creativeCount, total: logicCount + creativeCount }) } catch (error) { console.error('Error fetching question counts:', error) } } // 檢查用戶測驗完成狀態 const checkTestCompletionStatus = async () => { if (!user) return try { setIsLoadingTests(true) // 檢查邏輯測試 const logicResponse = await fetch(`/api/test-results/logic?userId=${user.id}`) const logicData = await logicResponse.json() const hasLogicTest = logicData.success && logicData.data && logicData.data.length > 0 // 檢查創意測試 const creativeResponse = await fetch(`/api/test-results/creative?userId=${user.id}`) const creativeData = await creativeResponse.json() const hasCreativeTest = creativeData.success && creativeData.data && creativeData.data.length > 0 // 檢查綜合測試 const combinedResponse = await fetch(`/api/test-results/combined?userId=${user.id}`) const combinedData = await combinedResponse.json() const hasCombinedTest = combinedData.success && combinedData.data && combinedData.data.length > 0 setTestCompletionStatus({ logic: hasLogicTest, creative: hasCreativeTest, combined: hasCombinedTest }) } catch (error) { console.error('Error checking test completion status:', error) } finally { setIsLoadingTests(false) } } // 獲取題目數量和檢查測驗完成狀態 useEffect(() => { fetchQuestionCounts() if (user) { checkTestCompletionStatus() } }, [user]) // 點擊外部關閉下拉選單 useEffect(() => { const handleClickOutside = (event: MouseEvent) => { if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) { setIsDropdownOpen(false) } } if (isDropdownOpen) { document.addEventListener('mousedown', handleClickOutside) } return () => { document.removeEventListener('mousedown', handleClickOutside) } }, [isDropdownOpen]) // 調試信息 console.log("Current user:", user) return (
{/* Header */}

HR 評估系統

員工能力測評平台

{/* Desktop Navigation */}
{/* Navigation Links */}
{user?.role === "admin" && ( <> 所有測試結果 部門分析 )}
{/* 自定義下拉選單 */}
{isDropdownOpen && (
{user?.role === "admin" && ( <> setIsDropdownOpen(false)} > 帳戶設定 setIsDropdownOpen(false)} > 用戶管理 setIsDropdownOpen(false)} > 題目管理 setIsDropdownOpen(false)} > 測驗連結
)}
)}
選單

{user?.name}

{user?.department}

{/* Navigation Links */} {user?.role === "admin" && ( <> )} {user?.role === "admin" && ( <> )}
{/* Hero Section */}

歡迎回來,{user?.name}

透過科學的邏輯思維測試和創意能力評估,全面了解您的綜合素質

{/* Test Cards / Admin Info Cards */}
{user?.role === "admin" ? ( // 管理者看到的介紹卡片
{/* 綜合測試介紹 */}
綜合測試 綜合測試包含邏輯思維和創意能力,附有完整分析報告,
全卷設定作答時間 30 分鐘。
總題目數 {questionCounts.total}題
預計時間 30分鐘
) : ( // 一般用戶看到的測試功能
{/* Combined Test */}
綜合測試 全卷設定作答時間 30 分鐘,
請誠實反映您平常的思考方式與感受,不需刻意迎合特定答案。
總題目數 {questionCounts.total}題
預計時間 30分鐘
{isLoadingTests ? ( ) : testCompletionStatus.combined ? ( ) : ( )}
)}
{/* Footer */}
) }