get('page', 1); $perPage = (int) request()->get('per_page', 25); $filters = [ 'kp_code' => request()->get('kp_code'), 'difficulty' => request()->get('difficulty'), 'search' => request()->get('search'), ]; $response = $service->listQuestions($page, $perPage, $filters); return response()->json($response); } catch (\Exception $e) { \Log::error('Failed to fetch questions: ' . $e->getMessage()); return response()->json([ 'data' => [], 'meta' => [ 'page' => 1, 'per_page' => 25, 'total' => 0, 'total_pages' => 0, ], 'error' => $e->getMessage(), ], 500); } }); // 获取题目统计信息 Route::get('/questions/statistics', function (QuestionServiceApi $service) { try { $stats = $service->getStatistics(); return response()->json($stats); } catch (\Exception $e) { \Log::error('Failed to get question statistics: ' . $e->getMessage()); return response()->json(['error' => $e->getMessage()], 500); } }); // 语义搜索题目 Route::post('/questions/search', function (QuestionServiceApi $service) { try { $data = request()->only(['query', 'limit']); $results = $service->searchQuestions($data['query'], $data['limit'] ?? 20); return response()->json($results); } catch (\Exception $e) { \Log::error('Question search failed: ' . $e->getMessage()); return response()->json(['error' => $e->getMessage()], 500); } }); // 获取单个题目详情 Route::get('/questions/{id}', function (int $id, QuestionServiceApi $service) { try { $question = $service->getQuestionById($id); if (!$question) { return response()->json(['error' => 'Question not found'], 404); } return response()->json($question); } catch (\Exception $e) { \Log::error("Failed to get question {$id}: " . $e->getMessage()); return response()->json(['error' => $e->getMessage()], 500); } }); // AI 生成题目 Route::post('/questions/generate', function (QuestionServiceApi $service) { try { $data = request()->only(['kp_code', 'keyword', 'count', 'strategy']); $result = $service->generateQuestions($data); return response()->json($result); } catch (\Exception $e) { \Log::error('Question generation failed: ' . $e->getMessage()); return response()->json([ 'success' => false, 'message' => $e->getMessage(), ], 500); } }); // 删除题目 Route::delete('/questions/{id}', function (int $id, QuestionServiceApi $service) { try { $deleted = $service->deleteQuestion($id); return response()->json([ 'success' => $deleted, 'message' => $deleted ? 'Question deleted' : 'Failed to delete', ]); } catch (\Exception $e) { \Log::error("Failed to delete question {$id}: " . $e->getMessage()); return response()->json([ 'success' => false, 'message' => $e->getMessage(), ], 500); } }); // 获取知识点选项 Route::get('/knowledge-points', function (QuestionServiceApi $service) { try { $points = $service->getKnowledgePointOptions(); return response()->json($points); } catch (\Exception $e) { \Log::error('Failed to get knowledge points: ' . $e->getMessage()); return response()->json([], 500); } }); /* |-------------------------------------------------------------------------- | MathRecSys 集成 API 路由 |-------------------------------------------------------------------------- */ use App\Http\Controllers\Api\StudentController; // 健康检查 Route::get('/mathrecsys/health', [StudentController::class, 'checkServiceHealth'])->name('api.mathrecsys.health'); // 学生相关 API Route::prefix('mathrecsys/students')->name('api.mathrecsys.students.')->group(function () { // 获取学生完整信息 Route::get('{studentId}', [StudentController::class, 'show'])->name('show'); // 获取个性化推荐 Route::get('{studentId}/recommendations', [StudentController::class, 'getRecommendations'])->name('recommendations'); // 获取学习轨迹 Route::get('{studentId}/trajectory', [StudentController::class, 'getTrajectory'])->name('trajectory'); // 获取学习建议 Route::get('{studentId}/suggestions', [StudentController::class, 'getSuggestions'])->name('suggestions'); // 智能分析题目 Route::post('{studentId}/analyze', [StudentController::class, 'analyzeQuestion'])->name('analyze'); // 更新掌握度 Route::put('{studentId}/mastery', [StudentController::class, 'updateMastery'])->name('update-mastery'); }); // 班级分析 API Route::prefix('mathrecsys/classes')->name('api.mathrecsys.classes.')->group(function () { Route::get('{classId}/analysis', [StudentController::class, 'classAnalysis'])->name('analysis'); }); // 测试 API Route::get('/mathrecsys/test', function () { return response()->json([ 'success' => true, 'message' => 'MathRecSys API integration is working', 'timestamp' => now()->toISOString() ]); })->name('api.mathrecsys.test');