"use client" import { useState, useEffect } from "react" import { ProtectedRoute } from "@/components/protected-route" import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card" import { Button } from "@/components/ui/button" import { Progress } from "@/components/ui/progress" import { Badge } from "@/components/ui/badge" import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select" import { Brain, Lightbulb, BarChart3, ArrowLeft, TrendingUp, Users, Award, Target } from "lucide-react" import Link from "next/link" import { useAuth, type User } from "@/lib/hooks/use-auth" interface DepartmentStats { department: string totalUsers: number participatedUsers: number participationRate: number averageLogicScore: number averageCreativeScore: number averageCombinedScore: number overallAverage: number topPerformer: string | null testCounts: { logic: number creative: number combined: number } } interface TestResult { userId: string userName: string userDepartment: string type: "logic" | "creative" | "combined" score: number completedAt: string } export default function AnalyticsPage() { return ( ) } function AnalyticsContent() { const { user } = useAuth() const [departmentStats, setDepartmentStats] = useState([]) const [selectedDepartment, setSelectedDepartment] = useState("all") const [overallStats, setOverallStats] = useState({ totalUsers: 0, totalParticipants: 0, overallParticipationRate: 0, averageScore: 0, totalTests: 0, }) useEffect(() => { loadAnalyticsData() }, []) const loadAnalyticsData = async () => { try { const response = await fetch('/api/admin/analytics/departments') const data = await response.json() if (data.success) { setDepartmentStats(data.data.departmentStats) setOverallStats(data.data.overallStats) } else { console.error('獲取部門分析數據失敗:', data.message) } } catch (error) { console.error('獲取部門分析數據錯誤:', error) } } const getScoreColor = (score: number) => { if (score >= 90) return "text-green-600" if (score >= 80) return "text-blue-600" if (score >= 70) return "text-yellow-600" if (score >= 60) return "text-orange-600" return "text-red-600" } const getParticipationColor = (rate: number) => { if (rate >= 80) return "text-green-600" if (rate >= 60) return "text-blue-600" if (rate >= 40) return "text-yellow-600" return "text-red-600" } const filteredStats = selectedDepartment === "all" ? departmentStats : departmentStats.filter((stat) => stat.department === selectedDepartment) return (
{/* Header */}

部門分析

查看各部門的測試結果統計和分析

{/* Overall Statistics */}
{overallStats.totalUsers}
總用戶數
{overallStats.totalParticipants}
參與用戶
{overallStats.overallParticipationRate}%
參與率
{overallStats.averageScore}
平均分數
{overallStats.totalTests}
總測試次數
{/* Department Filter */} 部門篩選
{/* Department Statistics */}
{filteredStats.map((stat) => ( {stat.department} {stat.participatedUsers}/{stat.totalUsers} 人參與 參與率: {stat.participationRate}% {/* Participation Rate */}
參與率 {stat.participationRate}%
{/* Test Scores */}
{stat.averageLogicScore || "-"}
邏輯思維
({stat.testCounts.logic} 次)
{stat.averageCreativeScore || "-"}
創意能力
({stat.testCounts.creative} 次)
{stat.averageCombinedScore || "-"}
綜合能力
({stat.testCounts.combined} 次)
{/* Overall Average */}
部門平均分數 {stat.overallAverage || "-"}
{/* Top Performer */} {stat.topPerformer && (
表現最佳 {stat.topPerformer}
)}
))}
{filteredStats.length === 0 && (
{selectedDepartment === "all" ? "暫無部門數據" : "該部門暫無數據"}
)}
) }