"use client" import { useEffect, useState } from "react" import { ProtectedRoute } from "@/components/protected-route" import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card" import { Button } from "@/components/ui/button" import { Badge } from "@/components/ui/badge" import { Progress } from "@/components/ui/progress" import { Brain, Lightbulb, BarChart3, Calendar, TrendingUp, Users, Eye, ArrowLeft } from "lucide-react" import Link from "next/link" import { useAuth } from "@/lib/hooks/use-auth" interface TestResult { type: "logic" | "creative" | "combined" score: number completedAt: string details?: any } export default function ResultsPage() { return ( ) } function ResultsContent() { const { user } = useAuth() const [results, setResults] = useState([]) const [stats, setStats] = useState({ totalTests: 0, averageScore: 0, bestScore: 0, lastTestDate: null as string | null, }) useEffect(() => { // Load all test results from localStorage const logicResults = localStorage.getItem("logicTestResults") const creativeResults = localStorage.getItem("creativeTestResults") const combinedResults = localStorage.getItem("combinedTestResults") const allResults: TestResult[] = [] if (logicResults) { const data = JSON.parse(logicResults) allResults.push({ type: "logic", score: data.score, completedAt: data.completedAt, details: data, }) } if (creativeResults) { const data = JSON.parse(creativeResults) allResults.push({ type: "creative", score: data.score, completedAt: data.completedAt, details: data, }) } if (combinedResults) { const data = JSON.parse(combinedResults) allResults.push({ type: "combined", score: data.overallScore, completedAt: data.completedAt, details: data, }) } // Sort by completion date (newest first) allResults.sort((a, b) => new Date(b.completedAt).getTime() - new Date(a.completedAt).getTime()) setResults(allResults) // Calculate statistics if (allResults.length > 0) { const totalScore = allResults.reduce((sum, result) => sum + result.score, 0) const averageScore = Math.round(totalScore / allResults.length) const bestScore = Math.max(...allResults.map((r) => r.score)) const lastTestDate = allResults[0].completedAt setStats({ totalTests: allResults.length, averageScore, bestScore, lastTestDate, }) } }, []) const getTestTypeInfo = (type: string) => { switch (type) { case "logic": return { name: "邏輯思維測試", icon: Brain, color: "bg-primary", textColor: "text-primary", link: "/results/logic", } case "creative": return { name: "創意能力測試", icon: Lightbulb, color: "bg-accent", textColor: "text-accent", link: "/results/creative", } case "combined": return { name: "綜合能力測試", icon: BarChart3, color: "bg-gradient-to-r from-primary to-accent", textColor: "text-primary", link: "/results/combined", } default: return { name: "未知測試", icon: BarChart3, color: "bg-muted", textColor: "text-muted-foreground", link: "#", } } } const getScoreLevel = (score: number) => { if (score >= 90) return { level: "優秀", color: "bg-green-500" } if (score >= 80) return { level: "良好", color: "bg-blue-500" } if (score >= 70) return { level: "中等", color: "bg-yellow-500" } if (score >= 60) return { level: "及格", color: "bg-orange-500" } return { level: "不及格", color: "bg-red-500" } } if (results.length === 0) { return (
{/* Header */}

我的測試結果

查看您的測試歷史和成績分析

暫無測試記錄

您還沒有完成任何測試,開始您的第一次評估吧!

) } return (
{/* Header */}

我的測試結果

查看您的測試歷史和成績分析

{/* User Info */} {user && (

{user.name}

{user.department} • {user.role === "admin" ? "管理員" : "一般用戶"}

)} {/* Statistics Overview */}
{stats.totalTests}
完成測試
{stats.averageScore}
平均分數
{stats.bestScore}
最高分數
{stats.lastTestDate ? new Date(stats.lastTestDate).toLocaleDateString("zh-TW") : "無"}
最近測試
{/* Test History */} 測試歷史
{results.map((result, index) => { const testInfo = getTestTypeInfo(result.type) const scoreLevel = getScoreLevel(result.score) const Icon = testInfo.icon return (

{testInfo.name}

完成時間:{new Date(result.completedAt).toLocaleString("zh-TW")}

{result.score}
{scoreLevel.level}
) })}
{/* Performance Chart */} 成績趨勢
{results.map((result, index) => { const testInfo = getTestTypeInfo(result.type) return (
{testInfo.name} {result.score}分
) })}
{/* Quick Actions */} 繼續測試
) }