4.5 KiB
4.5 KiB
評分機制後端實現文檔
概述
本文檔描述了AI展示平台評分機制的後端實現,包括資料庫設計、API端點和前端整合。
資料庫設計
評分相關表格
-
app_judge_scores - 應用評分表
- 存儲評審對應用的評分記錄
- 包含創新性、技術性、實用性、展示效果、影響力等評分項目
- 自動計算總分
-
proposal_judge_scores - 提案評分表
- 存儲評審對提案的評分記錄
- 包含問題識別、解決方案可行性、創新性、影響力、展示效果等評分項目
- 自動計算總分
-
competition_judges - 競賽評審關聯表
- 管理競賽與評審的關聯關係
-
competition_apps - 競賽應用關聯表
- 管理競賽與應用的關聯關係
-
competition_proposals - 競賽提案關聯表
- 管理競賽與提案的關聯關係
API端點
1. 評分管理 API (/api/admin/scoring
)
GET - 獲取評分記錄
GET /api/admin/scoring?competitionId={id}&judgeId={id}&status={status}&search={query}
參數:
competitionId
(必需): 競賽IDjudgeId
(可選): 評審ID,用於篩選特定評審的評分status
(可選): 狀態篩選 (all/completed/pending)search
(可選): 搜尋關鍵字
回應:
{
"success": true,
"message": "評分記錄獲取成功",
"data": {
"scores": [...],
"stats": {...},
"total": 10
}
}
POST - 提交評分
POST /api/admin/scoring
請求體:
{
"judgeId": "judge_id",
"participantId": "app_id",
"participantType": "app",
"scores": {
"innovation_score": 8,
"technical_score": 7,
"usability_score": 9,
"presentation_score": 8,
"impact_score": 7
},
"comments": "評審意見"
}
2. 評分記錄管理 API (/api/admin/scoring/[id]
)
PUT - 更新評分記錄
PUT /api/admin/scoring/{id}
DELETE - 刪除評分記錄
DELETE /api/admin/scoring/{id}?type={app|proposal}
3. 評分統計 API (/api/admin/scoring/stats
)
GET - 獲取評分統計
GET /api/admin/scoring/stats?competitionId={id}
回應:
{
"success": true,
"message": "評分統計獲取成功",
"data": {
"totalScores": 20,
"completedScores": 15,
"pendingScores": 5,
"completionRate": 75,
"totalParticipants": 10
}
}
後端服務
ScoringService 類別
提供以下主要方法:
- submitAppScore() - 提交應用評分
- submitProposalScore() - 提交提案評分
- getCompetitionScores() - 獲取競賽所有評分記錄
- getCompetitionScoreStats() - 獲取競賽評分統計
- getJudgeScores() - 獲取評審的評分記錄
- updateAppScore() - 更新應用評分
- updateProposalScore() - 更新提案評分
- deleteScore() - 刪除評分記錄
前端整合
組件更新
-
ScoringManagement 組件
- 更新
loadScoringData()
方法以使用API - 更新
handleSubmitScore()
方法以提交到後端 - 添加評分統計功能
- 更新
-
CompetitionContext 上下文
- 更新
submitJudgeScore()
方法以使用API - 保持向後兼容性
- 更新
數據流程
- 用戶選擇競賽
- 前端調用
/api/admin/scoring/stats
獲取統計數據 - 前端調用
/api/admin/scoring
獲取評分記錄 - 用戶提交評分時調用 POST
/api/admin/scoring
- 後端更新資料庫並返回結果
- 前端重新載入數據以顯示最新狀態
評分規則
應用評分項目
- 創新性 (innovation_score): 1-10分
- 技術性 (technical_score): 1-10分
- 實用性 (usability_score): 1-10分
- 展示效果 (presentation_score): 1-10分
- 影響力 (impact_score): 1-10分
提案評分項目
- 問題識別 (problem_identification_score): 1-10分
- 解決方案可行性 (solution_feasibility_score): 1-10分
- 創新性 (innovation_score): 1-10分
- 影響力 (impact_score): 1-10分
- 展示效果 (presentation_score): 1-10分
總分計算
總分 = (所有評分項目之和) / 評分項目數量
測試
資料庫測試
node scripts/test-scoring.js
API測試
node scripts/test-scoring-api.js
部署注意事項
- 確保資料庫表格已創建
- 確保觸發器正常工作(自動計算總分)
- 檢查API端點權限設置
- 驗證前端組件與API的整合
未來改進
- 添加評分權重配置
- 實現評分審核流程
- 添加評分歷史記錄
- 實現批量評分功能
- 添加評分導出功能