feat(dashboard): optimize teacher dashboard ui and layout
- Refactor layout: move Needs Grading to main column, Homework to sidebar - Enhance TeacherStats: replace static counts with actionable metrics (Needs Grading, Active Assignments, Avg Score, Submission Rate) - Update RecentSubmissions: table view with quick grade actions and late status - Update TeacherSchedule: vertical timeline view with scroll hints - Update TeacherHomeworkCard: compact list view - Integrate Recharts: add TeacherGradeTrends chart and shared chart component - Update documentation
This commit is contained in:
@@ -165,7 +165,7 @@ Seed 脚本已覆盖班级相关数据,以便在开发环境快速验证页面
|
||||
- 运行命令:`npm run db:seed`
|
||||
|
||||
### 6.5 开发过程中的问题与处理
|
||||
|
||||
|
||||
- 端口占用(EADDRINUSE):开发服务器端口被占用时,通过更换端口启动规避(例如 `next dev -p <port>`)。
|
||||
- Next dev 锁文件:出现 `.next/dev/lock` 无法获取锁时,需要确保只有一个 dev 实例在运行,并清理残留 lock。
|
||||
- 头像资源 404:移除 Header 中硬编码的本地头像资源引用,避免 `public/avatars/...` 不存在导致的 404 噪音(见 `src/modules/layout/components/site-header.tsx`)。
|
||||
@@ -199,33 +199,38 @@ Seed 脚本已覆盖班级相关数据,以便在开发环境快速验证页面
|
||||
**日期**: 2026-01-08
|
||||
**范围**: 为班级新增 6 位邀请码,支持学生通过输入邀请码加入班级;教师可查看与刷新邀请码
|
||||
|
||||
#### 6.7.1 数据结构
|
||||
- 表:`classes`
|
||||
- 字段:`invitation_code`(varchar(6),unique,可为空)
|
||||
- 迁移:`drizzle/0007_add_class_invitation_code.sql`
|
||||
---
|
||||
|
||||
#### 6.7.2 教师端能力
|
||||
- 在「我的班级」卡片中展示邀请码。
|
||||
- 提供“刷新邀请码”操作:生成新的 6 位码并写入数据库(确保唯一性)。
|
||||
## 7. 教师仪表盘体验优化 (2026-01-12)
|
||||
|
||||
#### 6.7.3 学生端能力
|
||||
- 提供“通过邀请码加入班级”的入口,输入 6 位码后完成报名。
|
||||
- 写库操作设计为幂等:重复提交同一个邀请码不会生成重复报名记录,已有记录会被更新为有效状态。
|
||||
**目标**: 提升教师仪表盘的信息密度与易用性,优化核心指标展示,调整布局以符合教师工作流。
|
||||
|
||||
#### 6.7.4 Seed 支持
|
||||
- `scripts/seed.ts` 为示例班级补充 `invitationCode`,便于在开发环境直接验证加入流程。
|
||||
### 7.1 核心指标卡片重构 (TeacherStats)
|
||||
- **原有问题**: 展示的总学生数、总课程数等静态指标对日常教学决策帮助有限。
|
||||
- **优化方案**: 替换为高频动态指标,并增强视觉提示。
|
||||
- **Needs Grading (待批改)**: 高亮显示待处理事项,使用 Amber 色彩引起注意。
|
||||
- **Active Assignments (活跃作业)**: 显示当前发布的作业数量,反映教学负载。
|
||||
- **Average Score (平均分)**: 展示近期作业平均分,快速了解学情。
|
||||
- **Submission Rate (提交率)**: 展示整体作业完成度,反映学生参与度。
|
||||
|
||||
### 6.8 更新记录(2026-01-09)
|
||||
### 7.2 布局调整 (Layout Restructuring)
|
||||
- **原有问题**: "Needs Grading" 位于侧边栏,空间受限;"Homework" 列表占据主栏,信息密度低。
|
||||
- **优化方案**:
|
||||
- **Needs Grading 移至主栏**: 给予更多宽幅空间,展示详细的学生、作业信息及操作按钮。
|
||||
- **Homework 移至侧边栏**: 改为紧凑列表视图,作为快速导航入口。
|
||||
- **Schedule 优化**: 引入时间轴 (Timeline) 视图,支持滚动提示与当前状态指示。
|
||||
|
||||
#### 6.8.1 班级创建权限收紧
|
||||
- 目标:仅允许年级组长与 admin 创建班级。
|
||||
- 后端:`createTeacherClassAction` 增加权限校验,非 admin 必须是对应年级的 `gradeHead`;`createAdminClassAction` 强制仅 admin 可调用(`src/modules/classes/actions.ts`)。
|
||||
- 前端:教师端「My Classes」页基于当前用户是否为任一年级 `gradeHead` 计算 `canCreateClass`,并禁用创建入口(`src/app/(dashboard)/teacher/classes/my/page.tsx`、`src/modules/classes/components/my-classes-grid.tsx`)。
|
||||
### 7.3 组件功能增强
|
||||
- **RecentSubmissions (Needs Grading)**:
|
||||
- 升级为 Table 视图,展示头像、作业名、提交时间。
|
||||
- 增加 "Grade" 快捷按钮,一键进入批改页面。
|
||||
- 增加 "Late" 状态标记。
|
||||
- **TeacherSchedule**:
|
||||
- 采用垂直时间轴设计。
|
||||
- 增加滚动提示 (Scroll Hint) 与 "No more classes" 状态提示。
|
||||
- **TeacherHomeworkCard**:
|
||||
- 优化为紧凑型列表,显示发布状态 (Published/Draft) 与截止日期。
|
||||
|
||||
#### 6.8.2 注册页面从演示提交改为真实注册
|
||||
- `/register` 增加服务端注册动作:校验输入、邮箱查重、插入 `users` 表,默认 `role=student`(`src/app/(auth)/register/page.tsx`)。
|
||||
- 注册表单接入注册动作并展示成功/失败提示,成功后跳转至 `/login`(`src/modules/auth/components/register-form.tsx`)。
|
||||
|
||||
#### 6.8.3 生产环境登录 UntrustedHost 修复
|
||||
- 问题:服务器上访问 `/api/auth/session` 报 `[auth][error] UntrustedHost`。
|
||||
- 修复:Auth.js 配置开启 `trustHost: true` 并显式设置 `secret`(`src/auth.ts`)。
|
||||
### 7.4 技术细节
|
||||
- 引入 `recharts` 替换手写 SVG 图表,统一图表风格。
|
||||
- 优化 Grid 布局响应式表现 (`lg:grid-cols-12`)。
|
||||
|
||||
Reference in New Issue
Block a user