Files

115 lines
3.2 KiB
TypeScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { NextRequest, NextResponse } from 'next/server'
import { createCombinedTestResult } from '@/lib/database/models/combined_test_result'
export async function POST(request: NextRequest) {
let body: any
try {
body = await request.json()
const {
userId,
logicScore,
creativityScore,
overallScore,
level,
description,
logicBreakdown,
creativityBreakdown,
balanceScore,
completedAt
} = body
// 驗證必要欄位
if (!userId || logicScore === undefined || creativityScore === undefined ||
overallScore === undefined || !level || !completedAt) {
return NextResponse.json(
{ success: false, error: '缺少必要欄位' },
{ status: 400 }
)
}
console.log('🔄 開始建立綜合測試結果...')
console.log('用戶ID:', userId)
console.log('邏輯分數:', logicScore)
console.log('創意分數:', creativityScore)
console.log('總分:', overallScore)
console.log('等級:', level)
// 統一使用台灣時間格式
// 將 UTC 時間轉換為台灣時間,然後轉換為 MySQL 格式
const utcDate = new Date(completedAt)
const taiwanTime = new Date(utcDate.getTime() + (8 * 60 * 60 * 1000)) // UTC + 8 小時
const mysqlCompletedAt = taiwanTime.toISOString().replace('Z', '').replace('T', ' ')
// 建立綜合測試結果
const testResult = await createCombinedTestResult({
user_id: userId,
logic_score: logicScore,
creativity_score: creativityScore,
overall_score: overallScore,
level: level,
description: description || null,
logic_breakdown: logicBreakdown || null,
creativity_breakdown: creativityBreakdown || null,
balance_score: balanceScore || 0,
completed_at: mysqlCompletedAt
})
if (!testResult) {
return NextResponse.json(
{ success: false, error: '建立綜合測試結果失敗' },
{ status: 500 }
)
}
console.log('✅ 綜合測試結果建立成功ID:', testResult.id)
return NextResponse.json({
success: true,
data: {
testResult
}
})
} catch (error) {
console.error('上傳綜合測試結果失敗:', error)
return NextResponse.json(
{
success: false,
error: '伺服器錯誤',
details: error instanceof Error ? error.message : '未知錯誤'
},
{ status: 500 }
)
}
}
export async function GET(request: NextRequest) {
try {
const { searchParams } = new URL(request.url)
const userId = searchParams.get('userId')
if (!userId) {
return NextResponse.json(
{ success: false, error: '缺少用戶ID' },
{ status: 400 }
)
}
// 獲取用戶的綜合測試結果
const { getCombinedTestResultsByUserId } = await import('@/lib/database/models/combined_test_result')
const results = await getCombinedTestResultsByUserId(userId)
return NextResponse.json({
success: true,
data: results
})
} catch (error) {
console.error('獲取綜合測試結果失敗:', error)
return NextResponse.json(
{ success: false, error: '伺服器錯誤' },
{ status: 500 }
)
}
}