"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 { Brain, Lightbulb, BarChart3, Home, RotateCcw, TrendingUp, Target, Award } from "lucide-react" import Link from "next/link" import { getRecommendations } from "@/lib/utils/score-calculator" 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 CreativeQuestion { id: number statement: string category: 'innovation' | 'imagination' | 'flexibility' | 'originality' is_reverse: boolean created_at: string } interface CombinedTestResults { type: string logicScore: number creativityScore: number overallScore: number level: string description: string breakdown: { logic: number creativity: number balance: number } logicAnswers: Record creativeAnswers: Record logicCorrect: number creativityTotal: number creativityMaxScore: number completedAt: string } export default function CombinedResultsPage() { const [results, setResults] = useState(null) const [logicQuestions, setLogicQuestions] = useState([]) const [creativeQuestions, setCreativeQuestions] = useState([]) const [isLoading, setIsLoading] = useState(true) useEffect(() => { const loadData = async () => { try { // Load test results const savedResults = localStorage.getItem("combinedTestResults") if (savedResults) { setResults(JSON.parse(savedResults)) } // Load questions from database const logicResponse = await fetch('/api/logic-questions') const logicData = await logicResponse.json() const creativeResponse = await fetch('/api/creative-questions') const creativeData = await creativeResponse.json() if (logicData.success && creativeData.success) { setLogicQuestions(logicData.questions) setCreativeQuestions(creativeData.questions) } else { console.error('Failed to load questions:', logicData.error || creativeData.error) } } catch (error) { console.error('Error loading data:', error) } finally { setIsLoading(false) } } loadData() }, []) if (isLoading) { return (

載入結果中...

) } if (!results) { return (

未找到測試結果

) } const recommendations = getRecommendations(results.logicScore, results.creativityScore) 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 getLogicLevel = (score: number) => { if (score >= 100) return { level: "邏輯巔峰者", color: "bg-purple-600", description: "近乎完美的邏輯典範!你像一台「推理引擎」,嚴謹又高效,幾乎不受陷阱干擾。", suggestion: "多和他人分享你的思考路徑,能幫助團隊整體邏輯力提升。" } if (score >= 80) return { level: "邏輯大師", color: "bg-blue-500", description: "你的思維如同精密儀器,能快速抓住題目關鍵,並做出有效推理。常常是團隊中「冷靜的分析者」。", suggestion: "挑戰更高層次的難題,讓你的邏輯力更加精進。" } if (score >= 60) return { level: "邏輯高手", color: "bg-green-500", description: "邏輯清晰穩定,大部分情境都能正確判斷。偶爾會因粗心錯過陷阱。", suggestion: "在思維縝密之餘,更加留心細節,就能把錯誤率降到最低。" } if (score >= 30) return { level: "邏輯學徒", color: "bg-yellow-500", description: "已經抓到一些邏輯規律,能解決中等難度的問題。遇到複雜情境時,仍可能卡關。", suggestion: "嘗試將問題拆解成小步驟,就像組裝樂高,每一塊拼好,答案就自然浮現。" } return { level: "邏輯探險新手", color: "bg-red-500", description: "還在邏輯森林的入口徘徊。思考時可能忽略細節,或被陷阱誤導。", suggestion: "多練習經典邏輯題,像是在拼拼圖般,慢慢建立清晰的分析步驟。" } } const getCreativityLevel = (score: number) => { if (score >= 90) return { level: "創意巔峰者", color: "bg-purple-600", description: "創意力近乎無窮,你是團隊裡的靈感源泉,總能帶來突破性的想法。", suggestion: "你不只創造靈感,更能影響他人。如果能結合執行力,你將成為真正的創新領袖。" } if (score >= 75) return { level: "創意引領者", color: "bg-blue-500", description: "你是靈感的推動者!總是能在團體中主動拋出新想法,激發別人跟進。", suggestion: "持續累積學習,讓你的靈感不僅是點子,而能帶動真正的行動。" } if (score >= 55) return { level: "創意實踐者", color: "bg-green-500", description: "靈感已經隨手可得,在團體中也常被認為是「有創意的人」。", suggestion: "再給自己一點勇氣,不要害怕挑戰慣例,你的創意將更有力量。" } if (score >= 35) return { level: "創意開拓者", color: "bg-yellow-500", description: "你其實有自己的想法,但有時習慣跟隨大多數人的步伐。", suggestion: "試著勇敢說出腦中天馬行空的念頭,你會發現,這些點子或許就是團隊需要的突破口。" } return { level: "創意萌芽者", color: "bg-red-500", description: "還在創意旅程的起點。雖然暫時表現平淡,但這正是無限潛力的開端!", suggestion: "觀察生活小事,或閱讀不同領域的內容,讓靈感一點一滴積累。" } } return (
{/* Header */}

綜合能力測試結果

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

{/* Overall Score */}
{results.overallScore}
綜合評估完成!
{results.level}

{results.description}

{results.logicScore}
邏輯思維
{results.creativityScore}
創意能力
{results.breakdown.balance}
能力平衡
{/* Detailed Breakdown */}
{/* Logic Results */} 邏輯思維測試
得分 {results.logicScore}
{results.logicCorrect}
答對題數
{logicQuestions.length}
總題數
{/* Logic Level Assessment */} {(() => { const logicLevel = getLogicLevel(results.logicScore) return (
{logicLevel.level}

{logicLevel.description}

👉 建議: {logicLevel.suggestion}
) })()}
{/* Creative Results */} 創意能力測試
得分 {results.creativityScore}
{results.creativityTotal}
原始得分
{results.creativityMaxScore}
滿分
{/* Creative Level Assessment */} {(() => { const creativityLevel = getCreativityLevel(results.creativityScore) return (
{creativityLevel.level}

{creativityLevel.description}

👉 建議: {creativityLevel.suggestion}
) })()}
{/* Ability Analysis */} 能力分析

邏輯思維

{results.logicScore}分

{results.logicScore >= 80 ? "表現優秀" : results.logicScore >= 60 ? "表現良好" : "需要提升"}

創意能力

{results.creativityScore}分

{results.creativityScore >= 80 ? "表現優秀" : results.creativityScore >= 60 ? "表現良好" : "需要提升"}

能力平衡

{results.breakdown.balance}分

{results.breakdown.balance >= 80 ? "非常均衡" : results.breakdown.balance >= 60 ? "相對均衡" : "發展不均"}

{/* Recommendations */} {recommendations.length > 0 && ( 發展建議
{recommendations.map((recommendation, index) => (
{index + 1}

{recommendation}

))}
)} {/* Actions */}
) }