|
|
@@ -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;
|
|
|
}
|
|
|
|