|
@@ -653,39 +653,8 @@ class QuestionBankService
|
|
|
$knowledgePoint = $question['kp_code'];
|
|
$knowledgePoint = $question['kp_code'];
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // 获取题目类型
|
|
|
|
|
- $questionType = $this->normalizeQuestionTypeValue($question['question_type'] ?? $question['type'] ?? 'answer');
|
|
|
|
|
- if (! $questionType) {
|
|
|
|
|
- // 如果没有类型,根据内容推断
|
|
|
|
|
- $content = $question['stem'] ?? $question['content'] ?? '';
|
|
|
|
|
- if (is_string($content)) {
|
|
|
|
|
- // 1. 优先检查填空题(下划线)
|
|
|
|
|
- if (strpos($content, '____') !== false || strpos($content, '______') !== false) {
|
|
|
|
|
- $questionType = 'fill';
|
|
|
|
|
- }
|
|
|
|
|
- // 2. 检查选择题(必须有选项 A. B. C. D.)
|
|
|
|
|
- elseif (preg_match('/[A-D]\s*\./', $content) || preg_match('/\([A-D]\)/', $content)) {
|
|
|
|
|
- if (preg_match('/A\./', $content) && preg_match('/B\./', $content)) {
|
|
|
|
|
- $questionType = 'choice';
|
|
|
|
|
- } else {
|
|
|
|
|
- // 只有括号没有选项,可能是填空
|
|
|
|
|
- if (strpos($content, '()') !== false || strpos($content, '()') !== false) {
|
|
|
|
|
- $questionType = 'fill';
|
|
|
|
|
- } else {
|
|
|
|
|
- $questionType = 'answer';
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- // 3. 检查纯括号填空
|
|
|
|
|
- elseif (strpos($content, '()') !== false || strpos($content, '()') !== false) {
|
|
|
|
|
- $questionType = 'fill';
|
|
|
|
|
- } else {
|
|
|
|
|
- $questionType = 'answer';
|
|
|
|
|
- }
|
|
|
|
|
- } else {
|
|
|
|
|
- $questionType = 'answer';
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ // 获取题目类型(以题库原始类型为准,不再二次推断/归一化)
|
|
|
|
|
+ $questionType = $question['question_type'] ?? $question['type'] ?? 'answer';
|
|
|
|
|
|
|
|
// 获取正确答案
|
|
// 获取正确答案
|
|
|
$questionBankId = $question['id'] ?? $question['question_id'] ?? null;
|
|
$questionBankId = $question['id'] ?? $question['question_id'] ?? null;
|