import { EvaluationUploadService, defaultAIEvaluationResult } from '../lib/services/evaluation-upload'; /** * 使用範例:上傳 AI 評分結果到資料庫 */ // 範例 1: 使用預設的 AI 評分結果 async function uploadDefaultEvaluation() { try { console.log('🚀 開始上傳預設的 AI 評分結果...'); const projectId = 1; // 假設專案 ID 為 1 const analysisDuration = 120; // 分析耗時 2 分鐘 const aiModelVersion = 'gemini-1.5-pro'; const evaluationId = await EvaluationUploadService.uploadEvaluationResult( projectId, defaultAIEvaluationResult, analysisDuration, aiModelVersion ); console.log(`✅ 上傳成功!Evaluation ID: ${evaluationId}`); console.log(`📊 評分結果: ${defaultAIEvaluationResult.overallScore}/${defaultAIEvaluationResult.totalPossible} (${defaultAIEvaluationResult.grade})`); } catch (error) { console.error('❌ 上傳失敗:', error); } } // 範例 2: 使用自定義的 AI 評分結果 async function uploadCustomEvaluation() { try { console.log('🚀 開始上傳自定義的 AI 評分結果...'); const customAIResult = { projectTitle: "自定義專案", overallScore: 85.0, totalPossible: 100, grade: "A", performanceStatus: "表現優秀", recommendedStars: 5, analysisDate: "2024-10-27", criteria: [ { name: "應用實務性", score: 9, maxScore: 10, weight: 30, weightedScore: 27, feedback: "專案具有很高的實務價值", strengths: ["解決了實際問題", "具備良好的可行性"], improvements: ["可以增加更多案例"] }, { name: "創新性", score: 8, maxScore: 10, weight: 15, weightedScore: 12, feedback: "展現了良好的創新思維", strengths: ["技術創新", "應用創新"], improvements: ["可以探索更多創新點"] } ], overview: { excellentItems: 2, improvementItems: 0, overallPerformance: 85 }, detailedAnalysis: { summary: "整體表現優秀,各項指標都達到高水準", keyFindings: ["創新性強", "實務價值高"] }, improvementSuggestions: { overallSuggestions: "繼續保持現有優勢,可以考慮擴大應用範圍", maintainStrengths: [ { title: "創新思維", description: "保持創新的思維方式" } ], keyImprovements: [ { title: "擴大應用", description: "考慮將專案應用到更多領域", suggestions: ["研究其他應用場景", "建立合作夥伴關係"] } ], actionPlan: [ { phase: "短期目標", description: "完善現有功能" } ] } }; const projectId = 2; const evaluationId = await EvaluationUploadService.uploadEvaluationResult( projectId, customAIResult ); console.log(`✅ 自定義評分結果上傳成功!Evaluation ID: ${evaluationId}`); } catch (error) { console.error('❌ 上傳失敗:', error); } } // 範例 3: 更新 criteria_item_id 對應關係 async function updateCriteriaMapping() { try { console.log('🔄 更新 criteria_item_id 對應關係...'); // 假設您有新的 criteria_items 表,ID 有所不同 const newMapping = { "應用實務性": 101, "創新性": 102, "成效與效益": 103, "擴散與可複用性": 104, "簡報與表達": 105 }; EvaluationUploadService.updateCriteriaMapping(newMapping); // 驗證更新 const currentMapping = EvaluationUploadService.getCriteriaMapping(); console.log('✅ 對應關係已更新:', currentMapping); } catch (error) { console.error('❌ 更新失敗:', error); } } // 範例 4: 在 API 路由中使用 export async function handleEvaluationUpload(projectId: number, aiResult: any) { try { // 驗證必要欄位 if (!aiResult.projectTitle || !aiResult.overallScore || !aiResult.criteria) { throw new Error('AI 評分結果缺少必要欄位'); } // 上傳到資料庫 const evaluationId = await EvaluationUploadService.uploadEvaluationResult( projectId, aiResult ); return { success: true, evaluationId, message: '評分結果上傳成功' }; } catch (error) { console.error('處理評分結果上傳時發生錯誤:', error); return { success: false, error: error instanceof Error ? error.message : '未知錯誤' }; } } // 執行範例(如果直接運行此文件) if (require.main === module) { async function runExamples() { console.log('📚 開始執行上傳範例...\n'); // 範例 1: 上傳預設評分結果 await uploadDefaultEvaluation(); console.log('\n' + '='.repeat(50) + '\n'); // 範例 2: 上傳自定義評分結果 await uploadCustomEvaluation(); console.log('\n' + '='.repeat(50) + '\n'); // 範例 3: 更新對應關係 await updateCriteriaMapping(); console.log('\n🎉 所有範例執行完成!'); } runExamples().catch(console.error); }