Kaynağa Gözat

学案报告

yemeishu 5 gün önce
ebeveyn
işleme
b93c19a1c0

+ 19 - 26
app/Services/LearningAnalyticsService.php

@@ -1213,7 +1213,6 @@ class LearningAnalyticsService
      */
     public function generateIntelligentExam(array $params): array
     {
-        $logFile = storage_path('logs/learning_analytics.log');
         $startTime = microtime(true);
 
         try {
@@ -1235,40 +1234,38 @@ class LearningAnalyticsService
             $difficultyLevels = $params['difficulty_levels'] ?? [];
             // 如果用户没有选择任何难度,difficultyLevels 为空数组,表示随机难度
 
-            $logMsg = "=== " . date('Y-m-d H:i:s') . " ===\n";
-            $logMsg .= "generateIntelligentExam 开始\n";
-            $logMsg .= "student_id: $studentId\n";
-            $logMsg .= "total_questions: $totalQuestions\n";
-            $logMsg .= "kp_codes: " . json_encode($kpCodes) . "\n";
-            $logMsg .= "skills: " . json_encode($skills) . "\n\n";
-            file_put_contents($logFile, $logMsg, FILE_APPEND);
+            Log::info("generateIntelligentExam 开始", [
+                'student_id' => $studentId,
+                'total_questions' => $totalQuestions,
+                'kp_codes' => $kpCodes,
+                'skills' => $skills,
+            ]);
 
             // 1. 如果指定了学生,获取学生的薄弱点
             $weaknessFilter = [];
             if ($studentId) {
-                $logMsg = "获取学生薄弱点: $studentId\n";
-                file_put_contents($logFile, $logMsg, FILE_APPEND);
+                Log::info("获取学生薄弱点: $studentId");
 
                 $weaknesses = $this->getStudentWeaknesses($studentId, 20);
-                $logMsg = "薄弱点数量: " . count($weaknesses) . "\n";
-                $logMsg .= "薄弱点: " . json_encode($weaknesses) . "\n\n";
-                file_put_contents($logFile, $logMsg, FILE_APPEND);
+                Log::info("薄弱点数量: " . count($weaknesses), [
+                    '薄弱点' => $weaknesses,
+                ]);
 
                 $weaknessFilter = array_column($weaknesses, 'kp_code');
 
                 // 如果用户没有指定知识点,使用学生的薄弱点
                 if (empty($kpCodes)) {
                     $kpCodes = $weaknessFilter;
-                    $logMsg = "用户未选择知识点,使用薄弱点作为kp_codes\n";
-                    $logMsg .= "最终kp_codes: " . json_encode($kpCodes) . "\n\n";
-                    file_put_contents($logFile, $logMsg, FILE_APPEND);
+                    Log::info("用户未选择知识点,使用薄弱点作为kp_codes", [
+                        '最终kp_codes' => $kpCodes,
+                    ]);
                 }
             }
 
-            $logMsg = "准备调用 getQuestionsFromBank\n";
-            $logMsg .= "kp_codes: " . json_encode($kpCodes) . "\n";
-            $logMsg .= "skills: " . json_encode($skills) . "\n\n";
-            file_put_contents($logFile, $logMsg, FILE_APPEND);
+            Log::info("准备调用 getQuestionsFromBank", [
+                'kp_codes' => $kpCodes,
+                'skills' => $skills,
+            ]);
 
             // 2. 调用题库API获取符合条件的所有题目
             try {
@@ -1282,14 +1279,10 @@ class LearningAnalyticsService
                 Log::info('getQuestionsFromBank 调用完成', [
                     'questions_count' => count($allQuestions),
                     'is_array' => is_array($allQuestions),
-                    'first_question_id' => !empty($allQuestions) ? ($allQuestions[0]['id'] ?? 'N/A') : 'N/A'
+                    'first_question_id' => !empty($allQuestions) ? ($allQuestions[0]['id'] ?? 'N/A') : 'N/A',
+                    '耗时' => round((microtime(true) - $startTime) * 1000, 2) . 'ms',
                 ]);
 
-                $logMsg = "getQuestionsFromBank 返回\n";
-                $logMsg .= "questions_count: " . count($allQuestions) . "\n";
-                $logMsg .= "耗时: " . round((microtime(true) - $startTime) * 1000, 2) . "ms\n\n";
-                file_put_contents($logFile, $logMsg, FILE_APPEND);
-
                 Log::info('getQuestionsFromBank 返回', [
                     'questions_count' => count($allQuestions),
                     'time_ms' => round((microtime(true) - $startTime) * 1000, 2)

+ 28 - 38
app/Services/QuestionBankService.php

@@ -468,7 +468,6 @@ class QuestionBankService
             return $this->local()->selectQuestionsForExam($totalQuestions, $filters);
         }
 
-        $logFile = __DIR__ . '/../../../../select_questions.log';
         $startTime = microtime(true);
 
         try {
@@ -477,43 +476,40 @@ class QuestionBankService
                 'filters' => $filters
             ];
 
-            $logMsg = "=== " . date('Y-m-d H:i:s') . " ===\n";
-            $logMsg .= "开始调用 selectQuestionsForExam\n";
-            $logMsg .= "baseUrl: " . $this->baseUrl . "\n";
-            $logMsg .= "totalQuestions: $totalQuestions\n";
-            $logMsg .= "filters: " . json_encode($filters) . "\n\n";
-            file_put_contents($logFile, $logMsg, FILE_APPEND);
+            \Log::info("开始调用 selectQuestionsForExam", [
+                'baseUrl' => $this->baseUrl,
+                'totalQuestions' => $totalQuestions,
+                'filters' => $filters,
+            ]);
 
             $response = Http::timeout(30)
                 ->post($this->baseUrl . '/exam/select-questions', $requestData);
 
-            $logMsg = "API响应:\n";
-            $logMsg .= "  status: " . $response->status() . "\n";
-            $logMsg .= "  successful: " . ($response->successful() ? 'true' : 'false') . "\n";
-            $logMsg .= "  body: " . $response->body() . "\n\n";
-            file_put_contents($logFile, $logMsg, FILE_APPEND);
+            \Log::info("API响应", [
+                'status' => $response->status(),
+                'successful' => $response->successful(),
+                'body' => $response->body(),
+            ]);
 
             if ($response->successful()) {
                 $data = $response->json('data', []);
-                $logMsg = "成功解析JSON:\n";
-                $logMsg .= "  data字段题目数量: " . count($data) . "\n";
-                $logMsg .= "  耗时: " . round((microtime(true) - $startTime) * 1000, 2) . "ms\n\n";
-                file_put_contents($logFile, $logMsg, FILE_APPEND);
+                \Log::info("成功解析JSON", [
+                    'data字段题目数量' => count($data),
+                    '耗时' => round((microtime(true) - $startTime) * 1000, 2) . 'ms',
+                ]);
                 return $data;
             }
 
-            $logMsg = "API调用失败! 状态码: " . $response->status() . "\n";
-            $logMsg .= "响应内容: " . $response->body() . "\n\n";
-            file_put_contents($logFile, $logMsg, FILE_APPEND);
+            \Log::error("API调用失败! 状态码: " . $response->status(), [
+                '响应内容' => $response->body(),
+            ]);
         } catch (\Exception $e) {
-            $logMsg = "异常: " . $e->getMessage() . "\n";
-            $logMsg .= "堆栈: " . $e->getTraceAsString() . "\n\n";
-            file_put_contents($logFile, $logMsg, FILE_APPEND);
+            \Log::error("异常: " . $e->getMessage(), [
+                '堆栈' => $e->getTraceAsString(),
+            ]);
         }
 
-        $logMsg = "返回空数组\n";
-        $logMsg .= "=== 结束 ===\n\n";
-        file_put_contents($logFile, $logMsg, FILE_APPEND);
+        \Log::info("返回空数组 - 结束");
 
         return [];
     }
@@ -523,22 +519,16 @@ class QuestionBankService
      */
     public function saveExamToDatabase(array $examData): ?string
     {
-        $logFile = __DIR__ . '/../../../../save_exam.log';
-        $logMsg = "=== " . date('Y-m-d H:i:s') . " ===\n";
-        $logMsg .= "saveExamToDatabase 被调用\n";
-        $logMsg .= "questions_count: " . count($examData['questions'] ?? []) . "\n";
-        $logMsg .= "paper_name: " . ($examData['paper_name'] ?? 'N/A') . "\n";
-        $logMsg .= "student_id: " . ($examData['student_id'] ?? 'N/A') . "\n";
-        if (!empty($examData['questions'])) {
-            $logMsg .= "first_question_id: " . ($examData['questions'][0]['id'] ?? 'N/A') . "\n";
-        }
-        file_put_contents($logFile, $logMsg, FILE_APPEND);
+        \Log::info("saveExamToDatabase 被调用", [
+            'questions_count' => count($examData['questions'] ?? []),
+            'paper_name' => $examData['paper_name'] ?? 'N/A',
+            'student_id' => $examData['student_id'] ?? 'N/A',
+            'first_question_id' => !empty($examData['questions']) ? ($examData['questions'][0]['id'] ?? 'N/A') : 'N/A',
+        ]);
 
         // 数据完整性检查
         if (empty($examData['questions'])) {
-            $logMsg = "❌ 题目为空,返回null!\n";
-            $logMsg .= "这是导致生成demo ID的原因!\n\n";
-            file_put_contents($logFile, $logMsg, FILE_APPEND);
+            \Log::warning("❌ 题目为空,返回null! 这是导致生成demo ID的原因!");
             return null;
         }