實作綜合題型結果與資料庫整合

This commit is contained in:
2025-09-29 17:24:31 +08:00
parent a3b46b4430
commit f6610013ef
21 changed files with 1341 additions and 92 deletions

View File

@@ -0,0 +1,108 @@
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)
// 建立綜合測試結果
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: completedAt
})
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 }
)
}
}