Browse Source

错题本【追练】出题,不需要补充题目

yemeishu 16 hours ago
parent
commit
7e91f2e68c
1 changed files with 12 additions and 58 deletions
  1. 12 58
      app/Services/LearningAnalyticsService.php

+ 12 - 58
app/Services/LearningAnalyticsService.php

@@ -1380,72 +1380,26 @@ class LearningAnalyticsService
             $allQuestions = $priorityQuestions;
             $isMistakeBook = ($assembleType === 5); // 错题本类型
 
-            // 如果是错题本类型,且有错题但数量不足,获取原卷子的所有题目
-            if ($isMistakeBook && !empty($priorityQuestions) && count($priorityQuestions) < 5 && !empty($params['paper_ids'])) {
-                Log::info('LearningAnalyticsService: 错题本错题不足,获取原卷子题目补充', [
+            // 【修改】错题本类型严格按错题组卷,不补充题目
+            if ($isMistakeBook) {
+                // 记录错题本组卷信息
+                Log::info('LearningAnalyticsService: 错题本严格按错题组卷,不补充题目', [
                     'mistake_count' => count($priorityQuestions),
-                    'paper_ids' => $params['paper_ids']
+                    'assemble_type' => $assembleType,
+                    'action' => '只使用学生错题,不从原卷子补充'
                 ]);
 
-                // 获取原卷子的所有题目
-                $paperQuestionIds = $this->getPaperAllQuestions($params['paper_ids']);
-                if (!empty($paperQuestionIds)) {
-                    Log::info('LearningAnalyticsService: 获取原卷子题目', [
-                        'paper_question_count' => count($paperQuestionIds)
+                // 如果完全没有错题,抛出异常
+                if (empty($priorityQuestions)) {
+                    Log::warning('LearningAnalyticsService: 错题本无错题', [
+                        'student_id' => $studentId,
+                        'paper_ids' => $params['paper_ids'] ?? []
                     ]);
 
-                    // 使用原卷子题目补充到目标数量
-                    $additionalNeeded = max(5, count($priorityQuestions)) - count($priorityQuestions);
-                    $paperQuestionIds = array_diff($paperQuestionIds, array_column($priorityQuestions, 'id'));
-                    $additionalPaperQuestions = $this->getQuestionsFromBank([], [], $studentId, $questionTypeRatio, $additionalNeeded, $paperQuestionIds, [], null, null);
-
-                    $allQuestions = array_merge($priorityQuestions, $additionalPaperQuestions);
-                    Log::info('LearningAnalyticsService: 错题本题目补充完成', [
-                        'final_count' => count($allQuestions)
-                    ]);
+                    throw new \Exception('抱歉,您在这个卷子中没有错题记录,无法生成错题本。请确认卷子ID是否正确或联系管理员。');
                 }
             }
 
-            // 如果是错题本类型,但完全没有错题,使用原卷子的所有题目
-            if ($isMistakeBook && empty($priorityQuestions) && !empty($params['paper_ids'])) {
-                Log::info('LearningAnalyticsService: 错题本无错题,使用原卷子题目', [
-                    'paper_ids' => $params['paper_ids']
-                ]);
-
-                // 获取原卷子的所有题目
-                $paperQuestionIds = $this->getPaperAllQuestions($params['paper_ids']);
-                if (!empty($paperQuestionIds)) {
-                    $allQuestions = $this->getQuestionsFromBank([], [], $studentId, $questionTypeRatio, $maxQuestions, $paperQuestionIds, [], null, null);
-
-                    // 检查是否获取到题目
-                    if (empty($allQuestions)) {
-                        Log::warning('LearningAnalyticsService: 错题本无法获取任何题目', [
-                            'paper_ids' => $params['paper_ids'],
-                            'paper_question_ids' => $paperQuestionIds,
-                            'reason' => '原卷子题目在题库中不存在或已删除'
-                        ]);
-
-                        throw new \Exception('抱歉,您选择的卷子中的题目在题库中不存在或已被删除,无法生成错题本。请选择其他卷子或联系管理员更新题库。');
-                    }
-
-                    Log::info('LearningAnalyticsService: 错题本使用原卷子题目', [
-                        'question_count' => count($allQuestions)
-                    ]);
-                } else {
-                    throw new \Exception('抱歉,指定的卷子中没有找到题目,无法生成错题本。');
-                }
-            }
-
-            // 错题本类型但既无错题又无卷子题目
-            if ($isMistakeBook && empty($priorityQuestions) && empty($allQuestions)) {
-                Log::warning('LearningAnalyticsService: 错题本既无错题又无卷子题目', [
-                    'student_id' => $studentId,
-                    'paper_ids' => $params['paper_ids'] ?? []
-                ]);
-
-                throw new \Exception('抱歉,您在这个卷子中没有错题记录,且卷子题目无法获取,无法生成错题本。请确认卷子ID是否正确或联系管理员。');
-            }
-
             if (!$isMistakeBook && count($priorityQuestions) < $totalQuestions) {
                 try {
                     // 【优化】教材出卷(assemble_type=3)保留知识点筛选,但额外使用章节筛选