# 题库管理优化方案 ## 目标 优化 FilamentAdmin 中的题库管理界面,提升用户体验并利用新开发的后端能力(难度分级、题目类型)。 ## 需要用户审查 - **UI 重构**:界面将迁移使用 DaisyUI 组件,打造更现代、更“高级”的外观。 - **新功能**:增加“难度”和“题目类型”的筛选和生成选项。 ## 建议变更 ### FilamentAdmin #### [修改] [QuestionServiceApi.php](file:///Volumes/T9/code/math/apis/FilamentAdmin/app/Services/QuestionServiceApi.php) - 更新 `listQuestions` 方法,使其能够接收并传递 `type`(题目类型)筛选参数到后端 API。 #### [修改] [QuestionManagement.php](file:///Volumes/T9/code/math/apis/FilamentAdmin/app/Filament/Pages/QuestionManagement.php) - 添加公共属性 `$selectedType`。 - 为生成模态框添加公共属性 `$generateDifficulty` 和 `$generateType`。 - 更新 `questions()` 和 `meta()` 方法,将 `type` 加入筛选条件。 - 更新 `executeGenerate()` 方法,将 `difficulty` 和 `type` 传递给 `QuestionBankService`。 - 添加 `getQuestionTypeOptions()` 方法,为 UI 提供选项数据。 #### [修改] [question-management.blade.php](file:///Volumes/T9/code/math/apis/FilamentAdmin/resources/views/filament/pages/question-management.blade.php) - **UI 重设计**:使用 DaisyUI 组件替换标准的 Tailwind 类: - `card` 用于统计和筛选区域。 - `table` 配合 `table-zebra` 用于题目列表。 - `badge` 用于显示难度和类型指示器。 - `modal` 用于生成对话框。 - **筛选器**:添加“题目类型”下拉菜单。 - **生成模态框**:添加“难度”和“题目类型”的下拉菜单。 - **视觉效果**:改进间距、排版和空状态展示。 ## 验证计划 ### 自动化测试 - **单元测试**: - 创建 `tests/Unit/Services/QuestionServiceApiTest.php`,验证 `listQuestions` 是否正确处理 `type` 和 `difficulty` 筛选参数。 - 创建 `tests/Feature/Livewire/QuestionManagementTest.php`,验证: - 组件是否正确挂载。 - 筛选器是否更新 `questions` 属性。 - “生成”操作是否触发服务方法。 - **浏览器测试**(使用 Agent 工具): - 验证“生成题目”模态框能否正常打开和关闭。 - 验证“题目类型”下拉菜单是否显示并可用。 ### 手动验证 1. **UI 检查**: - 打开 `/admin/question-management`。 - 验证页面是否加载了新的 DaisyUI 样式。 - 检查统计卡片是否显示正确。 2. **筛选功能**: - 选择一个“题目类型”(例如:选择题),验证列表是否更新。 - 选择一个“难度”,验证列表是否更新。 3. **生成功能**: - 点击“生成题目”。 - 选择知识点、技能、难度和类型。 - 点击“开始生成”。 - 验证成功通知和任务状态监控。 4. **响应式检查**: - 调整浏览器窗口大小,检查移动端视图兼容性。 ## 开发惯例:测试标准 对于每一个新功能或优化: 1. **单元/功能测试**:必须创建或更新以覆盖业务逻辑。 2. **UI/页面测试**:验证渲染和响应式表现。 3. **功能测试**:验证端到端流程(例如:生成 -> 回调 -> 列表更新)。