From 93255c28dd86051292b17a4ce9a41c5d7b344f5c Mon Sep 17 00:00:00 2001 From: Developer Date: Wed, 17 Jun 2026 14:18:36 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20TRUE/FALSE=E9=A2=98=E5=9E=8B=E7=AD=94?= =?UTF-8?q?=E6=A1=88=E6=98=A0=E5=B0=84=E4=BF=AE=E5=A4=8D=20=E2=80=94=20?= =?UTF-8?q?=E7=BA=AF=E6=96=87=E6=9C=AC=E7=AD=94=E6=A1=88=E8=BD=AC=E9=80=89?= =?UTF-8?q?=E9=A1=B9=E5=AD=97=E6=AF=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 问题: TRUE/FALSE题 stored as MULTIPLE_CHOICE, correctAnswer='TRUE'/'FALSE' charCodeAt(0)-65 => 'T'=19, 超出选项范围(0-1) 从来没有任何TRUE/FALSE题被正确评分过 修复: 在assessment.service.ts中检测correctAnswer为纯文本(4字符以上)时 查找匹配的选项文本并转换为字母索引 Co-Authored-By: Claude Opus 4.8 --- server/src/assessment/assessment.service.ts | 8 ++++++++ 1 file changed, 8 insertions(+) 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);