feat(classes): optimize teacher dashboard ui and implement grade management

This commit is contained in:
SpecialX
2026-01-14 13:59:11 +08:00
parent ade8d4346c
commit 9bfc621d3f
104 changed files with 12793 additions and 2309 deletions

View File

@@ -153,7 +153,37 @@ type ExamNode = {
- `getExams(params)`: 支持按 `q/status` 在数据库侧过滤;`difficulty` 因当前存储在 `description` JSON 中,采用内存过滤
- `getExamById(id)`: 查询 exam 及其 `exam_questions`,并返回 `structure` 以用于构建器 Hydrate
## 7. 变更记录(合并 Homework
### 6.5 `getExamPreviewAction` (新增)
- **入参**: `examId` (string)
- **行为**:
- 查询指定 exam 及其关联的 questions (通过 `exam_questions` 关系)。
- 返回完整的 `structure` (JSON 树) 和扁平化的 `questions` 列表。
- 用于预览弹窗的数据加载。
## 7. 变更记录
**日期**2026-01-12 (当前)
- **列表页优化 (`/teacher/exams/all`)**:
- 移除了冗余的 "All Exams" 页面标题和描述。
- 重构了表格列 (`ExamColumns`)
- 合并标题、标签、科目、年级为 "Exam Info" 列。
- 合并题目数、总分、时长为 "Stats" 列。
- 合并创建时间和预定时间为 "Date" 列。
- 优化了状态 (Status) 和难度 (Difficulty) 的视觉样式 (Badge, Progress bar)。
- 优化了表格分页和布局 (`ExamDataTable`)。
- **预览功能增强**:
- 新增直接预览功能:在操作列添加了 "View" (眼睛图标) 按钮。
- 点击 "View" 触发 `getExamPreviewAction` 获取完整试卷数据。
- 弹窗 (`Dialog`) 直接展示试卷内容 (`ExamPaperPreview`),移除了冗余的头部描述,优化了滚动体验。
- 修复了可访问性问题 (DialogTitle)。
- **组卷页面升级 (`/teacher/exams/[id]/build`)**:
- **布局重构**: 扩展工作区高度,调整左右面板比例 (2:1),优化头部信息展示和进度可视化。
- **题库增强**: 实现了基于 Server Action (`getQuestionsAction`) 的分页加载和服务器端筛选,提升大数据量下的性能;优化了搜索和筛选器 UI。
- **预览优化**: 移除了内联预览,改为通过 "Preview" 按钮触发弹窗预览,避免干扰编辑流。
- **视觉降噪**: 移除了页面顶部冗余的标题和描述。
**日期**2025-12-31