Files
ai-showcase-platform/scripts/test-scoring-summary.js
2025-09-18 18:34:31 +08:00

80 lines
3.1 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// =====================================================
// 測試評分完成度匯總功能
// =====================================================
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();