80 lines
3.1 KiB
JavaScript
80 lines
3.1 KiB
JavaScript
// =====================================================
|
||
// 測試評分完成度匯總功能
|
||
// =====================================================
|
||
|
||
async function testScoringSummary() {
|
||
console.log('🔧 測試評分完成度匯總功能...\n');
|
||
|
||
try {
|
||
// 等待服務器啟動
|
||
console.log('⏳ 等待服務器啟動...');
|
||
await new Promise(resolve => setTimeout(resolve, 5000));
|
||
|
||
// 獲取競賽列表
|
||
console.log('📊 獲取競賽列表...');
|
||
const competitionsResponse = await fetch('http://localhost:3000/api/competitions');
|
||
const competitionsData = await competitionsResponse.json();
|
||
|
||
if (!competitionsData.success || !competitionsData.data || competitionsData.data.length === 0) {
|
||
console.log('❌ 沒有找到競賽數據');
|
||
return;
|
||
}
|
||
|
||
const competition = competitionsData.data[0];
|
||
console.log('✅ 找到競賽:', competition.name, '(ID:', competition.id + ')');
|
||
|
||
// 測試評分完成度匯總 API
|
||
console.log('\n📊 測試評分完成度匯總 API...');
|
||
const summaryResponse = await fetch(`http://localhost:3000/api/admin/scoring/summary?competitionId=${competition.id}`);
|
||
const summaryData = await summaryResponse.json();
|
||
|
||
console.log('📊 評分完成度匯總 API 回應:');
|
||
console.log('狀態碼:', summaryResponse.status);
|
||
console.log('回應數據:', JSON.stringify(summaryData, null, 2));
|
||
|
||
if (summaryData.success) {
|
||
console.log('✅ 評分完成度匯總獲取成功!');
|
||
|
||
const { judges, apps, overallStats } = summaryData.data;
|
||
|
||
console.log('\n📈 總體統計:');
|
||
console.log(`- 評審總數: ${overallStats.totalJudges}`);
|
||
console.log(`- 參賽APP數: ${overallStats.totalApps}`);
|
||
console.log(`- 已完成評分: ${overallStats.completedScores}`);
|
||
console.log(`- 總完成率: ${overallStats.overallCompletionRate}%`);
|
||
|
||
console.log('\n👨⚖️ 評審完成度:');
|
||
judges.forEach((judge, index) => {
|
||
console.log(`${index + 1}. ${judge.name} (${judge.email})`);
|
||
console.log(` - 完成度: ${judge.completedCount}/${judge.totalCount} (${judge.completionRate}%)`);
|
||
console.log(` - 狀態: ${judge.status}`);
|
||
if (judge.lastScoredAt) {
|
||
console.log(` - 最後評分時間: ${judge.lastScoredAt}`);
|
||
}
|
||
});
|
||
|
||
console.log('\n📱 參賽APP完成度:');
|
||
apps.forEach((app, index) => {
|
||
console.log(`${index + 1}. ${app.name}${app.teamName ? ` (團隊: ${app.teamName})` : ''}`);
|
||
console.log(` - 完成度: ${app.scoredCount}/${app.totalJudges} 評審 (${app.completionRate}%)`);
|
||
console.log(` - 狀態: ${app.status}`);
|
||
if (app.averageScore) {
|
||
console.log(` - 平均分: ${app.averageScore}`);
|
||
}
|
||
});
|
||
|
||
} else {
|
||
console.log('❌ 評分完成度匯總獲取失敗:', summaryData.message);
|
||
if (summaryData.error) {
|
||
console.log('錯誤詳情:', summaryData.error);
|
||
}
|
||
}
|
||
|
||
} catch (error) {
|
||
console.error('❌ 測試失敗:', error.message);
|
||
}
|
||
}
|
||
|
||
// 執行測試
|
||
testScoringSummary();
|