Files
Edu/apps/teacher-portal/docs/00-ai13-audit-report.md
SpecialX faaaf29f67 docs: ai 协作文档体系重构与多 ai 仲裁结果落地
1.AI 协作文档体系重构(objections/worklines/contracts+matrix.md)

2.coord 仲裁文档(final-decisions/cross-review/final-rulings/orchestration)

3.各服务 01/02 文档补全

4.共享包初始化(shared-ts/shared-go/hooks/ui-components/ui-tokens)

5.Proto 契约补全

6.004 架构影响地图更新

7.端口分配表

8.设计规格文档
2026-07-10 12:58:22 +08:00

200 lines
15 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ai13 审核 report — teacher-portal 现有文档遗漏分析
> AIai13TS/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 | ai13ai-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 整改 #174 处端点不一致)
| 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 | RUMReal User Monitoring方案、长任务监听、卡顿追踪 |
| 用户行为分析 | 无 | 哪些事件需要埋点、埋点规范、隐私合规 |
| Session Replay | 无 | Sentry Replay / LogRocket 选型、隐私区域遮罩 |
| 前端日志聚合 | 仅 console | 浏览器日志如何汇聚到 Lokipino-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 ComposeP1-P5→ K8sP6演进路径 |
| 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 mockMSW、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离线批改作业
- 是否需要后续原生 AppReact 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)