diff --git a/server/src/assessment/assessment.service.ts b/server/src/assessment/assessment.service.ts index 6756199..f294139 100644 --- a/server/src/assessment/assessment.service.ts +++ b/server/src/assessment/assessment.service.ts @@ -570,6 +570,14 @@ private async getModel(tenantId: string): Promise { if (item.questionType === 'MULTIPLE_CHOICE' && options && options.length > 0 && correctAnswer) { const labels = ['A', 'B', 'C', 'D']; const optTexts = options.map((o: string) => o.replace(/^[A-D][.)、]\s*/, '')); + // 修复: 当 correctAnswer 是文本(TRUE/FALSE)而非字母(A-D)时, + // 找到匹配的选项文本并转换为字母 + if (/^[A-Z]{4,}$/i.test(correctAnswer!)) { + const textIdx = optTexts.findIndex(t => t.trim().toUpperCase() === correctAnswer!.toUpperCase()); + if (textIdx >= 0) { + correctAnswer = labels[textIdx]; + } + } const correctIdx = correctAnswer.charCodeAt(0) - 65; const correctText = correctIdx >= 0 && correctIdx < optTexts.length ? optTexts[correctIdx] : null; const indices = optTexts.map((_: any, i: number) => i);