Files
ai-scoring-application/INTEGRATION_SUMMARY.md

4.9 KiB
Raw Blame History

AI 評分整合功能總結

概述

已成功將 AI 評分結果整合到資料庫存儲系統中。當用戶上傳 PPT 文件並點擊「開始 AI 評審」按鈕時,系統會自動將所有相關資料上傳到資料庫的三個主要表中。

整合的資料庫表

1. projects 表

  • 用途: 儲存專案基本資訊
  • 創建時機: AI 分析開始前
  • 主要欄位:
    • id: 專案唯一識別碼
    • user_id: 用戶 ID
    • template_id: 評分標準模板 ID
    • title: 專案標題
    • description: 專案描述
    • status: 專案狀態 (analyzing → completed)
    • analysis_started_at: 分析開始時間
    • analysis_completed_at: 分析完成時間

2. project_files 表

  • 用途: 儲存上傳的文件資訊
  • 創建時機: 文件上傳後AI 分析前
  • 主要欄位:
    • id: 文件唯一識別碼
    • project_id: 關聯的專案 ID
    • original_name: 原始文件名稱
    • file_name: 儲存的文件名稱
    • file_path: 文件儲存路徑
    • file_size: 文件大小
    • file_type: 文件類型
    • mime_type: MIME 類型
    • upload_status: 上傳狀態
    • upload_progress: 上傳進度

3. evaluations 表

  • 用途: 儲存 AI 評審的基本資訊
  • 創建時機: AI 分析完成後
  • 主要欄位:
    • id: 評審唯一識別碼
    • project_id: 關聯的專案 ID
    • overall_score: 總分
    • max_possible_score: 滿分
    • grade: 等級評定
    • analysis_duration: 分析耗時
    • ai_model_version: AI 模型版本
    • status: 評審狀態
    • error_message: 錯誤訊息

4. evaluation_scores 表

  • 用途: 儲存各項評分標準的詳細分數
  • 創建時機: AI 分析完成後
  • 主要欄位:
    • id: 評分記錄唯一識別碼
    • evaluation_id: 關聯的評審 ID
    • criteria_item_id: 關聯的評分標準項目 ID
    • score: 得分
    • max_score: 滿分
    • weight: 權重
    • weighted_score: 加權分數
    • percentage: 得分百分比

5. evaluation_feedback 表

  • 用途: 儲存 AI 的評語和建議
  • 創建時機: AI 分析完成後
  • 主要欄位:
    • id: 反饋記錄唯一識別碼
    • evaluation_id: 關聯的評審 ID
    • criteria_item_id: 關聯的評分標準項目 ID (可為空)
    • feedback_type: 反饋類型 (overall/criteria/strength/improvement)
    • content: 反饋內容
    • sort_order: 排序順序

處理流程

1. 用戶操作

  1. 用戶訪問上傳頁面 (/upload)
  2. 上傳 PPT 文件
  3. 填寫專案標題和描述
  4. 點擊「開始 AI 評審」按鈕

2. 後端處理

  1. 驗證輸入: 檢查必填欄位和文件格式
  2. 載入評分標準: 從資料庫獲取評分標準模板
  3. 創建專案記錄: 在 projects 表中創建專案記錄
  4. 處理文件上傳: 在 project_files 表中創建文件記錄
  5. AI 分析: 使用 Gemini AI 分析 PPT 內容
  6. 上傳評審結果: 將 AI 分析結果上傳到資料庫
    • 創建 evaluations 記錄
    • 創建 evaluation_scores 記錄
    • 創建 evaluation_feedback 記錄
  7. 更新專案狀態: 將專案狀態設為完成
  8. 返回結果: 將評分結果返回給前端

3. 前端顯示

  1. 接收評分結果
  2. 儲存到 localStorage
  3. 導向到結果頁面 (/results)
  4. 顯示評分結果和圖表

技術實現

修改的文件

  • app/api/evaluate/route.ts: 主要的 API 端點,整合了資料庫上傳功能

關鍵功能

  • 錯誤處理: 即使資料庫上傳失敗,也會返回 AI 分析結果
  • 資料轉換: 將資料庫格式轉換為 AI 服務期望的格式
  • 完整日誌: 詳細的控制台日誌記錄整個處理過程
  • 狀態管理: 正確管理專案和評審的狀態

資料庫關聯

  • projectsproject_files (一對多)
  • projectsevaluations (一對一)
  • evaluationsevaluation_scores (一對多)
  • evaluationsevaluation_feedback (一對多)
  • criteria_itemsevaluation_scores (一對多)
  • criteria_itemsevaluation_feedback (一對多)

測試和驗證

測試腳本

  • scripts/test-integration.js: 提供完整的測試指南和檢查要點

驗證要點

  1. 控制台日誌顯示完整的處理流程
  2. 資料庫正確創建所有相關記錄
  3. 前端正確顯示評分結果
  4. 沒有錯誤或異常
  5. 處理時間在合理範圍內

使用方式

  1. 確保資料庫連線正常
  2. 確保有評分標準模板
  3. 啟動應用程式: npm run dev
  4. 訪問上傳頁面: http://localhost:3000/upload
  5. 上傳 PPT 文件並填寫專案資訊
  6. 點擊「開始 AI 評審」按鈕
  7. 查看結果頁面顯示的評分結果

注意事項

  • 所有資料庫操作都包含在 try-catch 區塊中
  • 即使資料庫上傳失敗AI 分析結果仍會返回給用戶
  • 專案狀態會正確更新為完成狀態
  • 支援多種文件格式 (PPT, PDF, 影片等)
  • 包含完整的錯誤處理和日誌記錄