# `src/app/(dashboard)/{announcements,dashboard,management,messages,profile,settings}` 规范核查报告 v2 > 核查日期:2026-06-18(第二轮) > 核查范围:`src/app/(dashboard)/` 下的 announcements、dashboard、management、messages、profile、settings 子路由及其直接依赖的模块组件 > 依据文档: > - [项目规则](../.trae/rules/project_rules.md) > - [编码规范](../docs/standards/coding-standards.md) > - [架构影响地图 004](../docs/architecture/004_architecture_impact_map.md) > - [架构数据 005](../docs/architecture/005_architecture_data.json) > 应用技能:`vercel-react-best-practices`、`web-design-guidelines`(`web-artifacts-builder` 加载失败,界面优化建议已合并至 web-design-guidelines 章节) > 前置版本:[others_bug.md](./others_bug.md) v1 --- ## 〇、v1 → v2 修复进度对比 ### 已修复问题(11 项) | 问题编号 | 描述 | 修复方式 | |----------|------|----------| | BUG-A01 | `announcements/page.tsx` 缺少权限校验 | ✅ 增加 `requirePermission(ANNOUNCEMENT_READ)` | | BUG-D01 | `dashboard/page.tsx` 使用权限反推角色 | ✅ 改用 `roles.includes("admin"/"student"/"parent")` | | BUG-M01 | `management/grade/classes/page.tsx` 缺少权限校验 | ✅ 增加 `requirePermission(GRADE_MANAGE)` | | BUG-M02 | `management/grade/classes/page.tsx` userId 兜底空字符串 | ✅ 改用 `ctx.userId` | | BUG-MSG01 相关 | `messages/page.tsx` 已有权限校验 | ✅ 保持 `requirePermission(MESSAGE_READ)` | | BUG-SS01 | `settings/security/page.tsx` 缺少权限校验 | ✅ 增加 `requireAuth()` | | BUG-S 部分 | `settings/page.tsx` 改用 `requireAuth()` | ⚠️ 部分修复(仍用权限反推角色) | | BUG-P 部分 | `profile/page.tsx` 改用 `requireAuth()` | ⚠️ 部分修复(仍用权限反推角色) | | BUG-NL03 | `notification-list.tsx` button 缺少 type 属性 | ✅ 已添加 `type="button"` | | BUG-PS 部分 | `profile-settings-form.tsx` 处理 result.success | ✅ 增加 result.success 分支处理 | | BUG-MI01 部分 | `management/grade/insights/page.tsx` 增加权限校验 | ⚠️ 使用 `requireAuth()` 而非 `requirePermission()` | ### 未修复问题(仍存在) v1 报告中的其余 53 项问题仍未修复,详见下文。 --- ## 一、核查文件清单 | 文件 | 行数 | 类型 | 用途 | |------|------|------|------| | [announcements/page.tsx](../src/app/(dashboard)/announcements/page.tsx) | 23 | RSC 页面 | 公告列表(普通用户) | | [dashboard/page.tsx](../src/app/(dashboard)/dashboard/page.tsx) | 16 | RSC 页面 | 角色路由分发 | | [management/grade/classes/page.tsx](../src/app/(dashboard)/management/grade/classes/page.tsx) | 32 | RSC 页面 | 年级班级管理 | | [management/grade/insights/page.tsx](../src/app/(dashboard)/management/grade/insights/page.tsx) | 245 | RSC 页面 | 年级作业洞察 | | [messages/page.tsx](../src/app/(dashboard)/messages/page.tsx) | 31 | RSC 页面 | 消息+通知列表 | | [messages/[id]/page.tsx](../src/app/(dashboard)/messages/[id]/page.tsx) | 30 | RSC 页面 | 消息详情 | | [messages/compose/page.tsx](../src/app/(dashboard)/messages/compose/page.tsx) | 34 | RSC 页面 | 撰写消息 | | [profile/page.tsx](../src/app/(dashboard)/profile/page.tsx) | 304 | RSC 页面 | 个人资料(学生/教师视图) | | [settings/page.tsx](../src/app/(dashboard)/settings/page.tsx) | 31 | RSC 页面 | 设置入口(按角色分发) | | [settings/security/page.tsx](../src/app/(dashboard)/settings/security/page.tsx) | 48 | RSC 页面 | 安全设置 | | [layout.tsx](../src/app/(dashboard)/layout.tsx) | 21 | RSC 布局 | Dashboard 通用布局 | | [error.tsx](../src/app/(dashboard)/error.tsx) | 22 | 客户端组件 | 错误边界 | | [not-found.tsx](../src/app/(dashboard)/not-found.tsx) | 23 | RSC 组件 | 404 页面 | | [modules/announcements/components/announcement-list.tsx](../src/modules/announcements/components/announcement-list.tsx) | 108 | 客户端组件 | 公告列表(含筛选) | | [modules/announcements/components/announcement-card.tsx](../src/modules/announcements/components/announcement-card.tsx) | 79 | 客户端组件 | 公告卡片 | | [modules/announcements/components/announcement-detail.tsx](../src/modules/announcements/components/announcement-detail.tsx) | 206 | 客户端组件 | 公告详情 | | [modules/messaging/components/message-list.tsx](../src/modules/messaging/components/message-list.tsx) | 117 | 客户端组件 | 消息列表 | | [modules/messaging/components/message-detail.tsx](../src/modules/messaging/components/message-detail.tsx) | 153 | 客户端组件 | 消息详情 | | [modules/messaging/components/message-compose.tsx](../src/modules/messaging/components/message-compose.tsx) | 146 | 客户端组件 | 撰写消息表单 | | [modules/messaging/components/notification-list.tsx](../src/modules/messaging/components/notification-list.tsx) | 141 | 客户端组件 | 通知列表 | | [modules/settings/components/admin-settings-view.tsx](../src/modules/settings/components/admin-settings-view.tsx) | 129 | 客户端组件 | 管理员设置视图 | | [modules/settings/components/teacher-settings-view.tsx](../src/modules/settings/components/teacher-settings-view.tsx) | 132 | 客户端组件 | 教师设置视图 | | [modules/settings/components/student-settings-view.tsx](../src/modules/settings/components/student-settings-view.tsx) | 120 | 客户端组件 | 学生设置视图 | | [modules/settings/components/password-change-form.tsx](../src/modules/settings/components/password-change-form.tsx) | 180 | 客户端组件 | 修改密码表单 | | [modules/settings/components/profile-settings-form.tsx](../src/modules/settings/components/profile-settings-form.tsx) | 202 | 客户端组件 | 资料编辑表单 | | [modules/settings/components/notification-preferences-form.tsx](../src/modules/settings/components/notification-preferences-form.tsx) | 260 | 客户端组件 | 通知偏好表单 | | [modules/settings/components/theme-preferences-card.tsx](../src/modules/settings/components/theme-preferences-card.tsx) | 60 | 客户端组件 | 主题偏好 | | [modules/settings/components/ai-provider-settings-card.tsx](../src/modules/settings/components/ai-provider-settings-card.tsx) | 405 | 客户端组件 | AI Provider 配置 | | [modules/classes/components/grade-classes-view.tsx](../src/modules/classes/components/grade-classes-view.tsx) | 455 | 客户端组件 | 年级班级管理视图 | --- ## 二、违规问题清单(仍未修复) ### 2.1 [dashboard/page.tsx](../src/app/(dashboard)/dashboard/page.tsx) — 严重度:中 #### BUG-D02:多重 `redirect` 调用难以维护(未修复) - **位置**:`src/app/(dashboard)/dashboard/page.tsx:12-15` - **问题**:4 个连续 `if + redirect` 缺乏优先级文档说明,新增角色时易遗漏 - **改进建议**:抽取为 `resolveDefaultPath(roles)` 单一函数(`proxy.ts` 已有类似实现),保持单一职责 --- ### 2.2 [management/grade/insights/page.tsx](../src/app/(dashboard)/management/grade/insights/page.tsx) — 严重度:高 #### BUG-MI01:权限校验不充分(部分修复) - **位置**:`src/app/(dashboard)/management/grade/insights/page.tsx:27` - **问题**:使用 `requireAuth()` 而非 `requirePermission()`,仅校验登录状态,未校验具体权限 - **规范依据**:项目规则「Server Action 必须使用 `requirePermission()` 进行权限校验」 - **改进建议**:应使用 `requirePermission(Permissions.HOMEWORK_READ)` 或对应年级负责人权限 #### BUG-MI02:使用原生 `` 元素,与项目其他页面使用的 shadcn `Select` 组件风格不一致 - **规范依据**:Web Interface Guidelines — Consistency;项目组件规范 - **影响**:视觉风格不统一,无障碍特性差异,主题切换时原生 select 样式无法跟随 - **改进建议**:替换为 shadcn `Select` 组件 #### BUG-MI03:`