# 前端规范审查报告 v3 > 审查范围:`src/app/(dashboard)/{announcements,dashboard,management,messages,profile,settings}` 及相关 `modules/*/components` > 审查依据:项目规范(`.trae/rules/project_rules.md`)、`docs/standards/coding-standards.md`、React/Next.js 最佳实践、Web 界面规范 > 审查日期:2026-06-20 > 本次状态:**v3 已直接修正全部可修复问题**,lint 与 tsc 验证通过(仅余与本次修改无关的预存问题) --- ## 一、总体结论 | 指标 | v1 | v2 | v3 | |------|----|----|----| | 问题总数 | 64 | 52 | 0(已全部修复) | | 已修复 | 0 | 12 | 52 | | 待修复 | 64 | 40 | 0 | | lint 错误 | - | - | 0(仅 7 个预存 warning) | | tsc 错误(本次相关) | - | - | 0 | v3 在 v2 基础上完成全部剩余 40 个问题的直接修正,并对 v2 已修复的 12 个问题进行复核确认。本次修改通过 `npm run lint`(0 error)与 `npx tsc --noEmit`(本次相关 0 error)验证。 --- ## 二、本次(v3)修复清单 ### 2.1 ai-provider-settings-card.tsx | 编号 | 问题 | 修复方式 | |------|------|----------| | BUG-AI01 | UI 中文文案混用(`智谱`、`品牌方`、`填写基础地址...`、`不会回显历史 Key...`、`设为默认`) | 全部替换为英文:`Zhipu`、`Provider`、`Enter base URL without /chat/completions suffix.`、`Existing key won't be displayed. Leave blank to keep current.`、`Set as default` | | BUG-AI01b | `providerLabels` map 中 `zhipu: "智谱"` | 改为 `zhipu: "Zhipu"` | | LINT-01 | `won't` 未转义(react/no-unescaped-entities) | 改为 `won't` | ### 2.2 grade-classes-view.tsx | 编号 | 问题 | 修复方式 | |------|------|----------| | BUG-GC03 | 表头中文 `班主任`、`任课老师` | 改为 `Homeroom Teacher`、`Subject Teachers` | | BUG-GC03b | 表单 Label 中文 `班主任`(2 处)、`任课老师` | 同上替换 | | BUG-GC04 | `formatSubjectTeachers` 使用中文逗号 `,` 与无空格分隔 | 改为 `${subject}: ${name}` + `, ` 连接 | ### 2.3 messaging 组件 | 编号 | 文件 | 问题 | 修复方式 | |------|------|------|----------| | BUG-AL01 | announcement-list.tsx | `` 用于内部导航 | 改为 `` | | BUG-AD01 | announcement-detail.tsx | ``、`` | 改为 `` | | BUG-MD01 | message-detail.tsx | `` | 改为 `` | | BUG-MC01 | message-compose.tsx | `` | 改为 `` | | BUG-ML01 | message-list.tsx | 模板字符串拼接 className(`hover:bg-accent/50 ${unread ? ...}`) | 改为 `cn("transition-colors hover:bg-accent/50", unread && "border-primary/40")` | | BUG-ML01b | message-list.tsx | 同上(`text-sm font-medium ${unread ? "text-primary" : ""}`) | 改为 `cn("text-sm font-medium", unread && "text-primary")` | | BUG-NL01 | notification-list.tsx | 模板字符串拼接 className(2 处) | 改为 `cn()` | | BUG-NL01b | notification-dropdown.tsx | 模板字符串拼接 className | 改为 `cn()` | ### 2.4 announcements 组件 | 编号 | 文件 | 问题 | 修复方式 | |------|------|------|----------| | BUG-AC01 | announcement-card.tsx | 不必要的 `useMemo` 包裹静态 JSX | 移除 `useMemo`,直接返回 JSX | ### 2.5 notification-preferences-form.tsx | 编号 | 问题 | 修复方式 | |------|------|----------| | BUG-NPF03 | 中文注释(`通知渠道`、`通知类别`、`隐藏的 checkbox 用于表单提交`、`本地状态用于即时反馈 Switch 切换`) | 全部改为英文注释 | ### 2.6 layout/error/not-found | 编号 | 文件 | 问题 | 修复方式 | |------|------|------|----------| | BUG-NF01 | not-found.tsx | `` 手写按钮样式(重复 Button 组件样式) | 改为 `