| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- <?php
- use App\Http\Controllers\ImportStreamController;
- use App\Http\Controllers\MenuVisibilityController;
- use App\Http\Controllers\NotificationController;
- use App\Services\KatexRenderer;
- use App\Services\KnowledgeExplanationService;
- use Illuminate\Http\Request;
- use Illuminate\Support\Facades\Route;
- use Livewire\Mechanisms\FrontendAssets\FrontendAssets;
- /*
- | Livewire v4 脚本走 /livewire-{hash}/livewire.min.js;部分 CDN/浏览器仍请求 v2/v3 旧路径
- | /livewire/livewire.min.js,导致 404。此处注册兼容路由,返回与官方脚本路由相同的文件。
- */
- Route::middleware('web')->group(function () {
- Route::get('livewire/livewire.min.js', [FrontendAssets::class, 'returnJavaScriptAsFile']);
- Route::get('livewire/livewire.js', [FrontendAssets::class, 'returnJavaScriptAsFile']);
- });
- Route::get('/', function () {
- return redirect()->route('filament.admin.pages.dashboard');
- });
- Route::get('/test-math', function () {
- return view('test-math');
- });
- Route::get('/test-case', function () {
- return view('test-case');
- });
- Route::view('/knowledge-mindmap-public', 'public.knowledge-mindmap');
- Route::get('/admin/intelligent-exam/pdf/{paper_id}', [\App\Http\Controllers\ExamPdfController::class, 'show'])->name('filament.admin.auth.intelligent-exam.pdf');
- Route::get('/admin/intelligent-exam/grading/{paper_id}', [\App\Http\Controllers\ExamPdfController::class, 'showGrading'])->name('filament.admin.auth.intelligent-exam.grading');
- Route::get('/admin/intelligent-exam/knowledge-explanation/{paper_id}', [\App\Http\Controllers\ExamPdfController::class, 'showKnowledgeExplanation'])->name('filament.admin.auth.intelligent-exam.knowledge-explanation');
- // 服务端渲染预览(与 PDF 生成效果一致,用于调试)
- Route::get('/preview/exam/pdf-server/{paper_id}', [\App\Http\Controllers\ExamPdfController::class, 'showServerRendered'])->name('preview.exam.pdf-server');
- Route::get('/preview/exam/grading-server/{paper_id}', [\App\Http\Controllers\ExamPdfController::class, 'showGradingServerRendered'])->name('preview.exam.grading-server');
- Route::get('/admin/exam-analysis/pdf', [\App\Http\Controllers\ExamAnalysisPdfController::class, 'show'])->name('filament.admin.auth.exam-analysis.pdf');
- // 检查通知的路由
- Route::get('/admin/question-management/check-notifications', [NotificationController::class, 'checkNotifications']);
- // 菜单可见性切换路由
- Route::post('/admin/toggle-menu-visibility', [MenuVisibilityController::class, 'toggle'])
- ->name('filament.admin.auth.toggle-menu-visibility');
- // Livewire测试路由
- Route::get('/test-livewire', function () {
- return view('test-livewire');
- })->name('test.livewire');
- // 教材删除路由 - 通过URL参数传递ID,完全绕过Filament的$record传递问题
- // 使用GET方法避免CSRF问题
- Route::get('/admin/textbooks/{id}/delete', [\App\Http\Controllers\TextbookController::class, 'delete'])
- ->name('filament.admin.resources.textbooks.delete');
- Route::get('/admin/markdown-imports/stream', [ImportStreamController::class, 'stream'])
- ->name('filament.admin.markdown-imports.stream');
- // 题目预览验证工具(公开访问,无需登录)
- Route::get('/tools/question-preview', [\App\Http\Controllers\QuestionPreviewController::class, 'index'])
- ->name('tools.question-preview');
- Route::post('/tools/question-preview/pdf', [\App\Http\Controllers\QuestionPreviewController::class, 'generatePdf'])
- ->name('tools.question-preview.pdf');
- // 知识点讲解模板本地预览(仅本地环境,避免影响线上)
- Route::get('/tools/knowledge-explanation-preview', function (Request $request, KnowledgeExplanationService $knowledgeExplanationService, KatexRenderer $katexRenderer) {
- abort_unless(app()->environment('local'), 404);
- $kpCodes = (string) $request->query('kp_codes', 'M04A');
- $payload = [
- 'kp_codes' => array_values(array_filter(array_map('trim', explode(',', $kpCodes)))),
- 'student_id' => (string) $request->query('student_id', '1764913911'),
- 'teacher_id' => (string) $request->query('teacher_id', '45'),
- 'difficulty_category' => $request->query('difficulty_category') !== null
- ? (int) $request->query('difficulty_category')
- : null,
- ];
- $prepared = $knowledgeExplanationService->previewKnowledgeExplanation($payload);
- $knowledgeId = (string) ($prepared['knowledge_id'] ?? '');
- $displayCode = (string) preg_replace('/^(knowledge_|paper_)/', '', $knowledgeId);
- $html = view('pdf.knowledge-explanation-standalone', [
- 'knowledgeId' => $knowledgeId,
- 'knowledgePoints' => (array) ($prepared['knowledge_points'] ?? []),
- 'studentName' => (string) ($prepared['student_id'] ?? ''),
- 'teacherName' => (string) ($prepared['teacher_id'] ?? ''),
- 'generateDateTime' => now()->format('Y年m月d日 H:i:s'),
- 'pdfMeta' => ['header_title' => $displayCode !== '' ? $displayCode : $knowledgeId],
- 'examCode' => $displayCode !== '' ? $displayCode : $knowledgeId,
- ])->render();
- // 与 PDF 生成链路一致:服务端 KaTeX 预渲染,避免预览页出现原始 $...$ 公式
- $html = $katexRenderer->renderHtml($html);
- return response($html);
- })->name('tools.knowledge-explanation-preview');
|