實作綜合題型結果與資料庫整合
This commit is contained in:
108
app/api/test-results/combined/route.ts
Normal file
108
app/api/test-results/combined/route.ts
Normal 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 }
|
||||
)
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user