"use client" import { useEffect, useState } from "react" 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 { CheckCircle, XCircle, Brain, Home, RotateCcw } from "lucide-react" import Link from "next/link" interface LogicQuestion { id: number question: string option_a: string option_b: string option_c: string option_d: string option_e: string correct_answer: 'A' | 'B' | 'C' | 'D' | 'E' explanation?: string created_at: string } interface LogicTestResults { type: string score: number correctAnswers: number totalQuestions: number answers: Record completedAt: string } export default function LogicResultsPage() { const [results, setResults] = useState(null) const [questions, setQuestions] = useState([]) const [isLoading, setIsLoading] = useState(true) useEffect(() => { const loadData = async () => { try { // 載入測試結果 const savedResults = localStorage.getItem("logicTestResults") if (savedResults) { setResults(JSON.parse(savedResults)) } // 載入題目資料 const response = await fetch('/api/logic-questions') const data = await response.json() if (data.success) { setQuestions(data.questions) } else { console.error('Failed to load questions:', data.error) } } catch (error) { console.error('Error loading data:', error) } finally { setIsLoading(false) } } loadData() }, []) if (isLoading) { return (

載入結果中...

) } if (!results) { return (

未找到測試結果

) } const getScoreLevel = (score: number) => { if (score === 100) return { level: "邏輯巔峰者", color: "bg-purple-600", description: "近乎完美的邏輯典範!你像一台「推理引擎」,嚴謹又高效,幾乎不受陷阱干擾。", suggestion: "多和他人分享你的思考路徑,能幫助團隊整體邏輯力提升。" } if (score >= 80) return { level: "邏輯大師", color: "bg-green-500", description: "你的思維如同精密儀器,能快速抓住題目關鍵,並做出有效推理。常常是團隊中「冷靜的分析者」。", suggestion: "挑戰更高層次的難題,讓你的邏輯力更加精進。" } if (score >= 60) return { level: "邏輯高手", color: "bg-blue-500", description: "邏輯清晰穩定,大部分情境都能正確判斷。偶爾會因粗心錯過陷阱。", suggestion: "在思維縝密之餘,更加留心細節,就能把錯誤率降到最低。" } if (score >= 30) return { level: "邏輯學徒", color: "bg-yellow-500", description: "已經抓到一些邏輯規律,能解決中等難度的問題。遇到複雜情境時,仍可能卡關。", suggestion: "嘗試將問題拆解成小步驟,就像組裝樂高,每一塊拼好,答案就自然浮現。" } return { level: "邏輯探險新手", color: "bg-red-500", description: "還在邏輯森林的入口徘徊。思考時可能忽略細節,或被陷阱誤導。", suggestion: "多練習經典邏輯題,像是在拼拼圖般,慢慢建立清晰的分析步驟。" } } const scoreLevel = getScoreLevel(results.score) return (
{/* Header */}

邏輯思維測試結果

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

{/* Score Overview */}
{results.score}
測試完成!
{scoreLevel.level}

{scoreLevel.description}

👉 建議: {scoreLevel.suggestion}

{results.correctAnswers}
答對題數
{results.totalQuestions}
總題數
{Math.round((results.correctAnswers / results.totalQuestions) * 100)}%
正確率
{/* Detailed Results */} 詳細結果
{questions.map((question, index) => { const userAnswer = results.answers[index] const isCorrect = userAnswer === question.correct_answer // 根據選項字母獲取對應的選項文字 const getOptionText = (option: string) => { switch (option) { case 'A': return question.option_a case 'B': return question.option_b case 'C': return question.option_c case 'D': return question.option_d case 'E': return question.option_e default: return "未作答" } } const correctOptionText = getOptionText(question.correct_answer) const userOptionText = userAnswer ? getOptionText(userAnswer) : "未作答" return (
{isCorrect ? ( ) : ( )}

第{index + 1}題:{question.question}

你的答案: {userAnswer ? `${userAnswer}. ${userOptionText}` : "未作答"}
{!isCorrect && (
正確答案: {question.correct_answer}. {correctOptionText}
)} {question.explanation && (
解析: {question.explanation}
)}
) })}
{/* Actions */}
) }