# Laravel 题库管理功能说明 ## 📁 已创建的文件 ### 1. 服务类 - **`app/Services/QuestionServiceApi.php`** - 题库 API 客户端 - 提供题目 CRUD、搜索、统计等功能 - 支持缓存机制(5分钟 TTL) ### 2. Filament 资源 - **`app/Filament/Resources/QuestionResource.php`** - 题库管理资源 - 包含题目列表、筛选、搜索、批量操作 - 支持知识点、难度、来源等多维度筛选 ### 3. 页面类 - **`app/Filament/Resources/QuestionResource/Pages/ListQuestions.php`** - 题库列表页 - 包含 AI 生成题目、智能搜索、刷新统计等功能 - **`app/Filament/Resources/QuestionResource/Pages/ViewQuestion.php`** - 题目详情页 - 显示题目完整信息 - 支持查找相似题、删除等操作 - **`app/Filament/Resources/QuestionResource/Pages/CreateQuestion.php`** - 创建题目页面(预留) ### 4. 配置文件 - **`config/question_bank.php`** - 题库 API 配置 - 超时、缓存、重试等设置 ### 5. API 路由 - **`routes/api.php`** - 题库相关 API 端点 - GET /questions - 获取题目列表 - GET /questions/{id} - 获取题目详情 - POST /questions/search - 语义搜索 - POST /questions/generate - AI 生成题目 - DELETE /questions/{id} - 删除题目 ## 🎯 功能特性 ### 题目列表管理 - ✅ 分页显示(支持 10/25/50/100 每页) - ✅ 按知识点筛选 - ✅ 按难度筛选(基础/中等/拔高) - ✅ 搜索功能(题干、答案、解析) - ✅ 查看题目编号、知识点代码、题干摘要 - ✅ 难度标签(颜色区分) - ✅ 来源标识(AI 生成/手工录入) - ✅ 创建时间显示 - ✅ 自动刷新(每分钟) ### 题目详情查看 - ✅ 完整题干展示(支持 Markdown) - ✅ 标准答案(可复制) - ✅ 详细解析(支持 Markdown) - ✅ 难度标签和颜色 - ✅ 技能标签 - ✅ 创建/更新时间 ### AI 题目生成 - ✅ 选择知识点 - ✅ 设置关键词 - ✅ 设置题目数量(1-100) - ✅ 选择生成策略(自动/DeepSeek/Kimi) - ✅ 进度反馈和结果通知 ### 智能搜索 - ✅ 语义搜索相似题目 - ✅ 设置返回数量 - ✅ 实时显示搜索结果 ### 批量操作 - ✅ 批量删除题目 - ✅ 多选支持 ### 相似题目推荐 - ✅ 查看相似题目(基于向量检索) - ✅ 快速跳转到相似题 ### 统计信息 - ✅ 题库总数显示(导航徽章) - ✅ 实时刷新统计数据 ## 🚀 使用方法 ### 1. 配置 API 地址 编辑 `.env` 文件: ```bash QUESTION_BANK_API_BASE=http://localhost:5015 ``` ### 2. 启动服务 ```bash # 启动知识图谱服务 cd /Volumes/T9/code/math/apis/KnowledgeServic docker compose up -d # 启动题库服务 cd /Volumes/T9/code/math/apis/QuestionBankService docker compose up -d # 启动 Laravel 后台 cd /Volumes/T9/code/math/apis/FilamentAdmin herd serve ``` ### 3. 访问后台 ``` URL: http://filament-admin.test/admin ``` ### 4. AI 生成题目示例 在题目列表页,点击 "AI 生成题目" 按钮: - 选择知识点:因式分解 (KP1001) - 关键词:因式分解 - 数量:50 - 策略:自动选择模型 ### 5. 搜索相似题 在题目列表页,点击 "智能搜索": - 输入搜索内容:提取公因式的题目 - 返回数量:20 ## 🔌 API 对接 ### Laravel 调用题库 API ```php use App\Services\QuestionServiceApi; $service = app(QuestionServiceApi::class); // 获取题目列表 $questions = $service->listQuestions(1, 25, ['kp_code' => 'KP1001']); // 搜索题目 $results = $service->searchQuestions('因式分解计算', 20); // 生成题目 $result = $service->generateQuestions([ 'kp_code' => 'KP1001', 'keyword' => '因式分解', 'count' => 10, 'strategy' => 'auto', ]); ``` ### API 响应格式 ```json { "data": [ { "id": 1, "question_code": "KP1001-AI-ABC123", "kp_code": "KP1001", "stem": "因式分解题目内容", "answer": "标准答案", "solution": "详细解析", "difficulty": 0.6, "source": "ai::deepseek", "tags": "整数因数分解,提公因式策略", "created_at": "2025-11-15T10:00:00" } ], "meta": { "page": 1, "per_page": 25, "total": 100, "total_pages": 4 } } ``` ## 📊 数据流 ``` Laravel 后台 (Herd) ↓ HTTP API 调用 题库服务 (localhost:5015) ↓ 数据查询 PostgreSQL + pgvector (localhost:5442) ↓ AI 调用 DeepSeek/Kimi API ``` ## 🔐 安全措施 - ✅ API 超时保护(10秒) - ✅ 失败重试机制(2次) - ✅ 缓存机制(5分钟) - ✅ 错误日志记录 - ✅ XSS 防护(Filament 自动处理) ## 🐛 故障排查 ### 问题 1: API 调用失败 **症状**:页面显示空白或错误信息 **解决方案**: ```bash # 检查题库服务状态 curl http://localhost:5015/health # 检查 Laravel 日志 tail -f storage/logs/laravel.log # 检查 API 配置 cat .env | grep QUESTION_BANK_API_BASE ``` ### 问题 2: 缓存问题 **症状**:数据不更新 **解决方案**: ```bash # 清理 Laravel 缓存 php artisan cache:clear php artisan config:clear php artisan route:clear # 手动刷新缓存(API 层) # 修改 QuestionServiceApi 中的 cacheTtl 设置 ``` ### 问题 3: 题目生成失败 **症状**:AI 生成功能报错 **解决方案**: ```bash # 检查 AI API Key 配置 docker compose exec question_bank_api env | grep API_KEY # 使用 dry_run 模式测试 python scripts/seed_ai_questions.py --keyword "因式分解" --count 5 --dry-run ``` ## 🎨 UI 界面 ### 导航结构 ``` 题库系统 ├── 题库管理 └── 知识点管理 ``` ### 颜色编码 - **主色**:#4163ff (蓝色) - **难度**: - 基础:绿色 - 中等:黄色 - 拔高:红色 - **来源**: - AI 生成:蓝色标签 - 手工录入:灰色标签 ## 📈 性能优化 ### 1. 缓存策略 - 题目列表缓存:5分钟 - 统计信息缓存:5分钟 - 搜索结果缓存:5分钟 ### 2. 分页优化 - 默认每页 25 条 - 最大 100 条每页 - 自动刷新:60 秒 ### 3. API 优化 - 超时设置:10 秒 - 重试机制:2 次 - 重试延迟:200ms ## 🔮 后续规划 1. **增加题目编辑功能**:支持在线编辑题目 2. **添加题目审核流程**:三级审核机制 3. **优化相似题算法**:基于学习路径的推荐 4. **增加题目导出**:支持导出 Word/PDF 5. **添加题目统计**:使用情况、错误率等 6. **支持题目复用**:复制和模板功能 ## 📝 注意事项 1. **API 地址**:确保使用正确的端口(5015) 2. **缓存清理**:数据更新后记得清理缓存 3. **并发限制**:注意 API 调用频率限制 4. **错误处理**:所有 API 调用都有异常捕获 5. **日志记录**:所有错误都有详细日志 --- **更新日期**:2025-11-15 **版本**:v1.0 **维护者**:Claude Code