# ai13 审核 report — teacher-portal 现有文档遗漏分析 > AI:ai13(TS/React · teacher-portal 正式负责人,依据 ai-allocation.md §3.2) > 阶段:阶段 1/2 文档审核 + 长远架构补全 > 日期:2026-07-09 > 审核对象: > > - [01-understanding.md](./01-understanding.md)(ai07 于 2026-07-09 产出) > - [02-architecture-design.md](./02-architecture-design.md)(ai07 于 2026-07-09 产出) > > 关联裁决:[coord 交叉审查报告](../../../docs/architecture/coord-cross-review.md) §4.1/§5.2/§5.5/§6(整改项 #2/#5/#17/#18)、[004 架构影响地图](../../../docs/architecture/004_architecture_impact_map.md) §1.2/§4.2/§7.2/§11.4 --- ## 1. 归属与版本背景 | 维度 | ai07 版本(被审核) | ai13 版本(本次修正) | | -------- | --------------------------------------------- | ----------------------------------------- | | AI 标识 | ai07 | ai13(ai-allocation.md §3.2 正式负责人) | | 文档日期 | 2026-07-09 | 2026-07-09(同日审核+补全) | | 文档分支 | docs/teacher-portal-stage1-stage2-design-ai07 | docs/teacher-portal-ai13-audit-supplement | | 触发原因 | ai07 临时承接 4 端合并设计 | ai13 接管 teacher-portal 正式所有权 | > **背景说明**:ai-allocation.md §3.2 矩阵中 ai07 正式职责是 classes(黄金模板),ai13 才是 teacher-portal 的负责人。前期因并行加速,ai07 临时承担 4 端合并设计并产出 `apps/teacher-portal/README.md`(945 行)与 docs/01-02 两份文档。coord 已在 [coord-cross-review.md](../../../docs/architecture/coord-cross-review.md) §6 整改清单 #2/#17/#18 中列出多项需修正项,但整改责任原标注为 ai07。本次 ai13 正式接管并一次性完成审核 + 修正 + 长远架构补全。 --- ## 2. 需修正项(来自 coord 裁决) ### 2.1 P0 端口冲突修正(coord §4.1,整改 #2) | 项 | ai07 原文档 | 正确值 | 依据 | | -------------- | -------------------------- | ------------------------------------------------------------- | ---------------------------------- | | teacher-portal | 3000 | **4000** | 004 §1.2 + project_memory 端口约束 | | student-portal | 3001 | **4001** | 004 §1.2 | | parent-portal | 3002 | **4002** | 004 §1.2 | | admin-portal | 3003 | **4003** | 004 §1.2 | | MF remoteEntry | `localhost:3001/3002/3003` | `localhost:4001/4002/4003` | 与端口矩阵一致 | | 后端冲突说明 | "3001-3003 已被避让" | 删除(错误描述,3001-3003 仍被 classes/iam/teacher-bff 占用) | coord §4.1 表 | ### 2.2 P1 端点契约对齐(coord §6 整改 #17,4 处端点不一致) | ai07 原文档 | 正确值(以后端服务为准) | 依据 | | ------------------------------------------------------------ | ------------------------------------------------------------------------- | -------------- | | `GET /api/v1/ai/generate-questions`(SSE) | `POST /api/v1/ai/chat/stream`(SSE)+ `POST /api/v1/ai/generate/question` | coord §3 表 #1 | | `GET /iam/effective-permissions` | `GET /iam/permissions/effective` | coord §3 表 #2 | | `GET /iam/rbac/...` | `GET /iam/viewports`、`GET /iam/roles`、`GET /iam/permissions/*` | coord §3 表 #3 | | `POST /parent/switch-child`(家长端,不影响 teacher-portal) | `POST /parent/children/:childId/select` | coord §3 表 #4 | ### 2.3 P1 错误码前缀期望修正(coord §5.5,整改 #18) | ai07 原文档 | 正确值 | 依据 | | ---------------------------------------------- | ---------------------------------------------------------------------- | ---------- | | 期望 `EXAMS_` / `HOMEWORK_` / `GRADES_` 子前缀 | 删除,统一为 `CORE_EDU_*`(classes 模块保留 `CLASSES_*` 黄金模板遗留) | coord §5.5 | | BFF 错误码前缀 `BFF_TEACHER_` | 保留(coord §5.2 已裁决 3 BFF 统一为 `BFF_XXX_` 风格) | coord §5.2 | | 期望 `GW_` 前缀 | 保留(coord §5.4 已裁决 api-gateway 加 `GW_` 前缀) | coord §5.4 | --- ## 3. 长远架构遗漏分析(ai13 新增) ai07 原文档已覆盖阶段 1/2 模板要求(位置/限界/契约/技术栈/分层图/领域模型/数据模型/API/事件/横切/交互/风险),但**未充分覆盖以下"长远、全面、面向未来"的架构维度**。这些维度是通用前端架构标准(Next.js + Module Federation + 企业级 SaaS)必备项,本次审核需补全。 ### 3.1 演进路线缺失 | 维度 | ai07 原文档 | 缺失内容 | | ------------------- | --------------------- | ------------------------------------------------- | | 当前 → MF 迁移路径 | 仅描述目标态 | 当前单端部署如何演进到 Shell+Remote 的分步路径 | | 阶段间能力累积 | 仅 P2/P5/P6 三段 | P2/P3/P4/P5/P6 每阶段 teacher-portal 必备能力清单 | | 后端契约演进对齐 | 无 | 后端 P3 启用 gRPC 后前端是否需要切换、何时切换 | | REST → GraphQL 切换 | 提一句"待 coord 仲裁" | 切换的触发条件、迁移策略、灰度方案 | ### 3.2 安全架构缺失 | 维度 | ai07 原文档 | 缺失内容 | | ------------------- | ----------------- | --------------------------------------------------------------- | | Token 存储安全 | 仅说 localStorage | localStorage 的 XSS 风险 + httpOnly Cookie 替代方案 + CSRF 防护 | | CSP(内容安全策略) | 无 | Next.js `csp()` / `nonce()` 配置,限制 script/style/img 来源 | | XSS 防护 | 仅提 DOMPurify | Tiptap 富文本的 XSS 防护、`dangerouslySetInnerHTML` 白名单 | | CSRF 防护 | 无 | 若改用 Cookie 鉴权需 CSRF Token / SameSite | | 点击劫持防护 | 无 | X-Frame-Options: DENY + CSP frame-ancestors | | 子资源完整性 SRI | 无 | MF remoteEntry.js 的 SRI 校验、CDN 静态资源 integrity | | 敏感数据脱敏 | 无 | 日志/错误上报中 token/PII 脱敏 | ### 3.3 性能架构缺失 | 维度 | ai07 原文档 | 缺失内容 | | ------------------- | -------------- | ------------------------------------------------------------------ | | 性能预算(Budget) | 无 | JS bundle ≤ 200KB / CSS ≤ 50KB / LCP ≤ 2.5s / CLS ≤ 0.1 等具体目标 | | 路由级代码分割 | 无 | Next.js App Router 默认按路由分割 + 动态 import 重型组件 | | SSR/CSR 决策矩阵 | 仅提"优先 CSR" | 每类页面(dashboard/exam-taking/lesson-prep)的 SSR/CSR 选择标准 | | 字体加载策略 | 仅说 next/font | FOUT vs FOIT 选择、preload、font-display: swap | | 图片优化 | 无 | next/image + AVIF/WebP + 响应式 sizes + lazy load | | MF 共享依赖版本漂移 | 仅说 singleton | 共享依赖版本协商机制、peer deps 警告 | | Prefetch / Preload | 无 | 路由 prefetch 策略、关键资源 preload | | 长任务优化 | 无 | React 18 concurrent features、useTransition、useDeferredValue | ### 3.4 可观测性深度缺失 | 维度 | ai07 原文档 | 缺失内容 | | -------------- | -------------------- | ---------------------------------------------------------------- | | 错误上报 | 提"P6 接入 Sentry" | Sentry DSN 配置、release tracking、source maps、采样率、PII 过滤 | | 性能监控 | 仅列 4 项 Web Vitals | RUM(Real User Monitoring)方案、长任务监听、卡顿追踪 | | 用户行为分析 | 无 | 哪些事件需要埋点、埋点规范、隐私合规 | | Session Replay | 无 | Sentry Replay / LogRocket 选型、隐私区域遮罩 | | 前端日志聚合 | 仅 console | 浏览器日志如何汇聚到 Loki(pino-browser → Gateway → Loki) | | trace_id 透传 | 仅提"从响应头提取" | 浏览器入口生成 trace_id、写入后续请求 header、跨 MF 透传 | ### 3.5 a11y 实施细节缺失 | 维度 | ai07 原文档 | 缺失内容 | | ---------------- | --------------- | ------------------------------------------ | | WCAG 2.2 AA 清单 | 仅列工具集 | 逐条对照 WCAG 2.2 AA 13 项准则 + 实施方式 | | 键盘导航 | 仅提 focus-trap | 跳过链接、Tab 顺序、可见焦点、快捷键 | | 屏幕阅读器测试 | 无 | NVDA/JAWS/VoiceOver 测试矩阵 + ARIA 模式 | | 颜色对比度 | 无 | 自动化检测(axe-core)+ 设计令牌对比度审计 | | 移动端 a11y | 无 | 触摸目标 ≥ 44px、缩放支持、手势替代 | ### 3.6 i18n 实施细节缺失 | 维度 | ai07 原文档 | 缺失内容 | | -------------- | --------------- | ------------------------------------------------------ | | next-intl 配置 | 仅提"next-intl" | locale 路由策略(前缀 vs 域名)、SSR i18n、locale 检测 | | fallback 策略 | 无 | 缺失翻译时回退到默认语言、缺失 key 在 dev 环境警告 | | 复数/性别 | 无 | ICU MessageFormat 复数规则、性别变化 | | 日期/数字格式 | 无 | Intl.DateTimeFormat / Intl.NumberFormat 按 locale | | RTL 支持 | 无 | 是否需要支持阿拉伯语/希伯来语(影响布局) | | 翻译协作流程 | 无 | 翻译文件位置、协作工具(Crowdin/Transifex)、CI 校验 | ### 3.7 部署拓扑缺失 | 维度 | ai07 原文档 | 缺失内容 | | ------------- | ---------------- | ---------------------------------------------------- | | 部署目标 | 仅说 Docker | Docker Compose(P1-P5)→ K8s(P6)演进路径 | | CDN/Edge 缓存 | 无 | Next.js 静态资源 CDN、edge middleware、ISR 缓存 | | 多环境配置 | 无 | dev/staging/prod 环境变量管理、Next.js runtimeConfig | | 健康检查端点 | 仅说 /api/health | /api/health vs /api/ready 区别、K8s probe 配置 | | 灰度发布 | 无 | MF remoteEntry 版本协商、灰度发布策略 | | 回滚策略 | 仅说 git revert | 前端回滚特殊性:CDN 缓存失效、用户会话保持 | ### 3.8 测试策略细节缺失 | 维度 | ai07 原文档 | 缺失内容 | | -------------- | --------------- | ------------------------------------------------------- | | 单元测试 | 仅说 Vitest | 测试什么(hooks/utils/pure components)、mocking 策略 | | 集成测试 | 无 | 组件树集成、API mock(MSW)、TanStack Query 集成测试 | | E2E 测试 | 仅说 Playwright | 关键路径(登录/dashboard/班级 CRUD)、CI 并发、稳定策略 | | 视觉回归测试 | 无 | Storybook + Chromatic / Percy 选型 | | 覆盖率目标分层 | 仅说 ≥80% | hooks ≥90% / utils ≥90% / components ≥80% / pages ≥60% | | 性能测试 | 无 | Lighthouse CI / WebPageTest 集成 | ### 3.9 文件/目录结构目标态缺失 ai07 原文档 §6/§7 列出共享组件库/Hooks/令牌的"待建包",但**未给出 teacher-portal 自身的目录结构目标态**(当前 vs 目标对比)。 ### 3.10 移动端策略缺失 ai07 原文档未提及: - 是否需要响应式适配(教师在家备课用手机查看)? - 是否需要 PWA / Service Worker(离线批改作业)? - 是否需要后续原生 App(React Native / Electron 桌面端)? - 移动端手势、触摸目标规范 ### 3.11 MF 演进策略缺失 ai07 原文档描述了 MF 2.0 目标态,但**未回答关键演进问题**: - 当前 teacher-portal 是单端部署(无 MF),何时引入 MF? - 引入 MF 后如何保持现有路由不被破坏? - MF 失败时的降级方案(remoteEntry.js 加载失败怎么办)? - MF 版本协商(Shell 与 Remote 的合约版本)? ### 3.12 数据流与乐观更新缺失 ai07 原文档 §4.2 提了 TanStack Query mutation,但**未覆盖**: - 乐观更新策略(提交作业、批改成绩时如何乐观更新 UI) - 冲突解决(多教师同时批改同一作业) - 失败回滚机制 - 缓存失效链路(mutate A 后哪些 B/C/D 需要失效) --- ## 4. 本次审核产出 ai13 本次审核产出 **3 份文档**: 1. **本报告**:`apps/teacher-portal/docs/00-ai13-audit-report.md`(审核报告,永久保留作为审核凭证) 2. **更新** `apps/teacher-portal/docs/01-understanding.md`:修正归属/端口/端点/前缀,补充长远维度 3. **更新** `apps/teacher-portal/docs/02-architecture-design.md`:修正归属/端口/端点/前缀,补充横切与演进章节 4. **新建** `apps/teacher-portal/docs/03-long-term-architecture.md`:长远架构补全(演进/安全/性能/可观测/a11y/i18n/部署/测试/移动端/MF 演进) --- **AI Agent**: ai13 (teacher-portal) **Branch**: docs/teacher-portal-ai13-audit-supplement **Coordinator**: coord-ai **Audited**: ai07 stage1+2 outputs (2026-07-09)