Bladeren bron

教材相关

yemeishu 1 week geleden
bovenliggende
commit
3a6d5954d7
1 gewijzigde bestanden met toevoegingen van 6 en 67 verwijderingen
  1. 6 67
      app/Services/LearningAnalyticsService.php

+ 6 - 67
app/Services/LearningAnalyticsService.php

@@ -1244,81 +1244,20 @@ class LearningAnalyticsService
                 }
             }
 
-            // 如果仍然没有知识点(例如新学生无薄弱点),根据年级从知识图谱获取知识点
-            if (empty($kpCodes)) {
-                $filters = [];
-
-                // 优先使用用户选择的年级,其次使用学生的年级
-                $effectiveGrade = $grade;
-                if (!$effectiveGrade && $studentId) {
-                    $student = \App\Models\Student::find($studentId);
-                    if ($student && $student->grade) {
-                        $effectiveGrade = $student->grade;
-                    }
-                }
-
-                if ($effectiveGrade) {
-                    $standardizedGrade = $effectiveGrade;
-
-                    // 标准化年级名称(不更新数据库)
-                    if ($standardizedGrade === '初一') {
-                        $standardizedGrade = '七年级';
-                    } elseif ($standardizedGrade === '初二') {
-                        $standardizedGrade = '八年级';
-                    } elseif ($standardizedGrade === '初三') {
-                        $standardizedGrade = '九年级';
-                    }
-
-                    // 映射年级到学段 (phase)
-                    if ($standardizedGrade === '初中' || str_contains($standardizedGrade, '七年级') || str_contains($standardizedGrade, '八年级') || str_contains($standardizedGrade, '九年级')) {
-                        $filters['phase'] = '初中';
-                    } elseif (str_contains($standardizedGrade, '高')) {
-                        $filters['phase'] = '高中';
-                    }
-
-                    Log::info('Using grade for knowledge points filter', [
-                        'original_grade' => $effectiveGrade,
-                        'standardized_grade' => $standardizedGrade,
-                        'filters' => $filters
-                    ]);
-                }
-
-                // 调用API获取过滤后的知识点
-                $filteredKps = $this->getKnowledgePoints($filters);
-
-                if (!empty($filteredKps)) {
-                    // 随机选择 5 个知识点
-                    $kpKeys = array_column($filteredKps, 'kp_code');
-                    if (empty($kpKeys)) {
-                         $kpKeys = array_column($filteredKps, 'code');
-                    }
-
-                    if (!empty($kpKeys)) {
-                        $randomKeys = array_rand(array_flip($kpKeys), min(5, count($kpKeys)));
-                        $kpCodes = is_array($randomKeys) ? $randomKeys : [$randomKeys];
-
-                        Log::info('Randomly selected KPs for student based on grade (API)', [
-                            'student_id' => $studentId,
-                            'grade' => $student->grade ?? 'unknown',
-                            'filters' => $filters,
-                            'kps' => $kpCodes
-                        ]);
-                    }
-                }
-            }
+            // 如果没有指定知识点,直接从题库随机选择题目(不限制知识点)
+            // 这样可以确保总能找到题目,而不是依赖知识图谱中的知识点
 
         // 2. 调用题库API获取符合条件的所有题目
         $allQuestions = $this->getQuestionsFromBank($kpCodes, $skills, $studentId, $questionTypeRatio, $difficultyRatio, 200);
 
             if (empty($allQuestions)) {
-                // 只有在选择了知识点但题库为空时才报错
-                // 如果没有选择知识点,系统会从所有题目中选择,不应该报错
+                // 如果指定了知识点但题库为空,给出明确提示
                 if (!empty($kpCodes)) {
                     $message = '题库中暂无可用题目。您可以选择其他知识点,或点击"生成练习题"按钮先补充题库。';
                 } else {
-                    // 没有选择知识点时,从所有题目中选择,这里不应该出现空的情况
-                    // 如果出现,说明API调用失败,返回通用错误
-                    $message = '题库服务异常,请稍后重试。';
+                    // 没有选择知识点时,从所有题目中选择
+                    // 如果仍然没有题目,说明题库为空,提示补充题库
+                    $message = '题库为空,请先添加题目到题库。您可以点击"生成练习题"按钮或手动上传题目。';
                 }
 
                 Log::warning('智能出卷失败 - 未找到题目', [