Files
ai-scoring-application/app/api/history/stats/route.ts
2025-09-23 20:58:50 +08:00

57 lines
1.9 KiB
TypeScript

import { NextRequest, NextResponse } from 'next/server';
import { ProjectService, EvaluationService } from '@/lib/services/database';
export async function GET(request: NextRequest) {
try {
console.log('📊 開始獲取統計數據...');
// 獲取所有專案
const projects = await ProjectService.getAll();
console.log(`📋 找到 ${projects.length} 個專案`);
// 計算統計數據
const totalProjects = projects.length;
const completedProjects = projects.filter(p => p.status === 'completed').length;
const processingProjects = projects.filter(p => p.status === 'analyzing' || p.status === 'pending').length;
// 計算平均分數
let totalScore = 0;
let scoredProjects = 0;
for (const project of projects) {
if (project.status === 'completed') {
const evaluation = await EvaluationService.findByProjectId(project.id);
console.log(`專案 ${project.id} (${project.title}): 狀態=${project.status}, 評審=${evaluation ? '有' : '無'}, 分數=${evaluation?.overall_score || '無'}`);
if (evaluation && evaluation.overall_score) {
totalScore += evaluation.overall_score;
scoredProjects++;
}
}
}
const averageScore = scoredProjects > 0 ? Math.round(totalScore / scoredProjects) : 0;
console.log(`平均分數計算: 總分=${totalScore}, 有分數的專案數=${scoredProjects}, 平均分數=${averageScore}`);
const stats = {
totalProjects,
completedProjects,
processingProjects,
averageScore
};
console.log('✅ 統計數據:', stats);
return NextResponse.json({
success: true,
data: stats
});
} catch (error) {
console.error('❌ 獲取統計數據失敗:', error);
return NextResponse.json(
{ success: false, error: '獲取統計數據失敗' },
{ status: 500 }
);
}
}