完成評審評分機制

This commit is contained in:
2025-09-18 18:34:31 +08:00
parent 2101767690
commit ffa1e45f63
54 changed files with 5730 additions and 709 deletions

View File

@@ -0,0 +1,63 @@
import { NextRequest, NextResponse } from 'next/server';
import { ScoringService, JudgeService } from '@/lib/services/database-service';
// 獲取評審的評分任務
export async function GET(request: NextRequest) {
try {
const { searchParams } = new URL(request.url);
const judgeId = searchParams.get('judgeId');
const competitionId = searchParams.get('competitionId');
if (!judgeId) {
return NextResponse.json({
success: false,
message: '缺少評審ID',
error: 'judgeId 為必填參數'
}, { status: 400 });
}
// 獲取評審信息
const judge = await JudgeService.getJudgeById(judgeId);
if (!judge) {
return NextResponse.json({
success: false,
message: '評審不存在',
error: '找不到指定的評審'
}, { status: 404 });
}
// 獲取評審的評分任務
let scoringTasks = [];
if (competitionId) {
// 獲取特定競賽的評分任務
scoringTasks = await JudgeService.getJudgeScoringTasks(judgeId, competitionId);
} else {
// 獲取所有評分任務
scoringTasks = await JudgeService.getJudgeScoringTasks(judgeId);
}
return NextResponse.json({
success: true,
message: '評分任務獲取成功',
data: {
judge: {
id: judge.id,
name: judge.name,
title: judge.title,
department: judge.department,
specialty: judge.specialty || '評審專家'
},
tasks: scoringTasks
}
});
} catch (error) {
console.error('獲取評分任務失敗:', error);
return NextResponse.json({
success: false,
message: '獲取評分任務失敗',
error: error instanceof Error ? error.message : '未知錯誤'
}, { status: 500 });
}
}