diff --git a/app/api/evaluate/route.ts b/app/api/evaluate/route.ts index 89ed0c8..de157f6 100644 --- a/app/api/evaluate/route.ts +++ b/app/api/evaluate/route.ts @@ -303,26 +303,33 @@ export async function POST(request: NextRequest) { // 各項標準的反饋 for (const result of evaluation.results) { - const criteriaItem = criteria.find(c => c.name === result.criteriaName); - if (!criteriaItem) continue; + // 使用更寬鬆的匹配方式,去除前後空格和不可見字符 + const cleanResultName = result.criteriaName.trim().replace(/[\u200B-\u200D\uFEFF]/g, ''); + const criteriaItem = criteria.find(c => { + const cleanCriteriaName = c.name.trim().replace(/[\u200B-\u200D\uFEFF]/g, ''); + return cleanCriteriaName === cleanResultName; + }); + + if (!criteriaItem) { + console.warn(`⚠️ 找不到對應的評分標準: "${result.criteriaName}"`); + continue; + } + + // 合併 feedback 和 details 為一條記錄 + let combinedContent = result.feedback; + if (result.details && result.details.trim()) { + combinedContent += `\n\n詳細說明:${result.details}`; + } - // 標準反饋 await EvaluationFeedbackService.create({ evaluation_id: evaluationId, criteria_item_id: criteriaItem.id, feedback_type: 'criteria', - content: result.feedback, - sort_order: sortOrder++ - }); - - // 詳細反饋 - await EvaluationFeedbackService.create({ - evaluation_id: evaluationId, - criteria_item_id: criteriaItem.id, - feedback_type: 'criteria', - content: result.details, + content: combinedContent, sort_order: sortOrder++ }); + + console.log(`✅ 創建 criteria feedback: ${criteriaItem.name} (ID: ${criteriaItem.id})`); } // 如果有 fullData,添加 strengths 和 improvements 反饋 diff --git a/uploads/projects/21/1758631225489_8g5whd8li.pptx b/uploads/projects/21/1758631225489_8g5whd8li.pptx new file mode 100644 index 0000000..8b38ba6 Binary files /dev/null and b/uploads/projects/21/1758631225489_8g5whd8li.pptx differ diff --git a/uploads/projects/22/1758631398314_vfgwct81t.pptx b/uploads/projects/22/1758631398314_vfgwct81t.pptx new file mode 100644 index 0000000..8b38ba6 Binary files /dev/null and b/uploads/projects/22/1758631398314_vfgwct81t.pptx differ