import { NextRequest, NextResponse } from 'next/server';
import { ProjectService, EvaluationService, ProjectFileService } from '@/lib/services/database';

export async function GET(request: NextRequest) {
  try {
    console.log('📊 開始獲取歷史記錄數據...');

    // 獲取所有專案及其評審結果
    const projects = await ProjectService.getAll();
    console.log(`📋 找到 ${projects.length} 個專案`);

    const historyData = [];

    for (const project of projects) {
      // 獲取該專案的最新評審結果
      const latestEvaluation = await EvaluationService.findByProjectId(project.id);

      // 獲取該專案的文件信息
      const projectFiles = await ProjectFileService.findByProjectId(project.id);
      
      // 判斷文件類型
      let fileType = 'Unknown';
      if (projectFiles.length > 0) {
        const fileTypeFromDB = projectFiles[0].file_type;
        if (fileTypeFromDB) {
          // 根據 file_type 判斷文件類型
          if (fileTypeFromDB.toLowerCase().includes('ppt') || fileTypeFromDB.toLowerCase().includes('powerpoint')) {
            fileType = 'PPT';
          } else if (fileTypeFromDB.toLowerCase().includes('mp4') || fileTypeFromDB.toLowerCase().includes('avi') || fileTypeFromDB.toLowerCase().includes('mov')) {
            fileType = 'Video';
          } else if (fileTypeFromDB.toLowerCase().includes('pdf')) {
            fileType = 'PDF';
          } else if (fileTypeFromDB.toLowerCase().includes('html') || fileTypeFromDB.toLowerCase().includes('htm')) {
            fileType = 'Website';
          } else {
            // 如果無法從 file_type 判斷，嘗試從檔名判斷
            const fileName = projectFiles[0].original_name.toLowerCase();
            if (fileName.includes('.ppt') || fileName.includes('.pptx')) {
              fileType = 'PPT';
            } else if (fileName.includes('.mp4') || fileName.includes('.avi') || fileName.includes('.mov')) {
              fileType = 'Video';
            } else if (fileName.includes('.pdf')) {
              fileType = 'PDF';
            } else if (fileName.includes('.html') || fileName.includes('.htm')) {
              fileType = 'Website';
            } else {
              fileType = fileTypeFromDB.toUpperCase();
            }
          }
        }
      } else {
        // 如果沒有文件記錄，嘗試從專案標題判斷
        if (project.title.includes('PPT') || project.title.includes('簡報')) {
          fileType = 'PPT';
        } else if (project.title.includes('網站') || project.title.includes('Website')) {
          fileType = 'Website';
        } else if (project.title.includes('影片') || project.title.includes('Video')) {
          fileType = 'Video';
        }
      }

      // 格式化日期
      const formatDate = (date: Date) => {
        return new Date(date).toISOString().split('T')[0];
      };

      historyData.push({
        id: project.id.toString(),
        title: project.title,
        type: fileType,
        score: latestEvaluation?.overall_score ? Number(latestEvaluation.overall_score) : 0,
        grade: latestEvaluation?.grade || '-',
        date: formatDate(project.created_at),
        status: project.status === 'completed' ? 'completed' : 'processing',
        evaluation_id: latestEvaluation?.id || null,
        description: project.description || '',
        created_at: project.created_at,
        updated_at: project.updated_at
      });
    }

    // 按創建時間倒序排列
    historyData.sort((a, b) => new Date(b.created_at).getTime() - new Date(a.created_at).getTime());

    console.log(`✅ 成功獲取 ${historyData.length} 條歷史記錄`);

    return NextResponse.json({
      success: true,
      data: historyData
    });

  } catch (error) {
    console.error('❌ 獲取歷史記錄失敗:', error);
    return NextResponse.json(
      { success: false, error: '獲取歷史記錄失敗' },
      { status: 500 }
    );
  }
}
