feat(teacher-portal): v2 下游核查 + push-gateway 接入 + 测试扩展至 87 + ui-components 12/12

v2 核查结论:

- iam/push-gateway/api-gateway 已就绪

- teacher-bff teacher 域仍是 P2 占位(56/61 operations 不可用)

- 5 个 gRPC target 留空走降级模式 B

- 保留 MSW mock,记录 12 项 teacher-bff 待补工作到 nextstep-v2.md

v2 完成工作:

- push-gateway WebSocket 接入(环境变量 + URL query token + Reconnect 协议)

- 单元测试扩展(usePermission 15 + useAuth 9,总计 87/87 passed)

- ui-components 剩余 3 组件(Chart/Calendar/RichTextEditor,12/12)

- 设计令牌完整迁移(无 hsl/hex 字面量)

- i18n 5/55 页面 + 26 模块 key

- 性能优化(size-limit 9 项 + 5 页面懒加载)

- useAuth 迁移阻塞核查(iam 未实现 Set-Cookie,修正 v1 假设)

文档:新增 nextstep-v2.md;workline.md §5.7 添加 v2 工作记录。

验证:typecheck + lint + 87/87 tests + arch:scan 全部通过。
This commit is contained in:
SpecialX
2026-07-14 08:47:18 +08:00
parent ae6fe23be6
commit 0066afc55e
9 changed files with 1642 additions and 79 deletions

View File

@@ -350,6 +350,56 @@ gantt
---
### §5.7 v2 下游核查 + 剩余工作完成2026-07-14
**触发条件**:用户通知"所有下游服务已经完成 nextstep.md 工作",对 9 个下游服务teacher-bff / iam / push-gateway / api-gateway / core-edu / content / data-ana / msg / ai的 nextstep.md 进行核查。
#### §5.7.1 v2 核查结论
**核心发现**teacher-bff nextstep.md 声称完成 v2 扁平命名41 Query + 20 Mutation但实际核查发现
1. **schema 文件未更新**`packages/shared-ts/contracts/graphql/teacher-bff.schema.graphql` 仍是 v1admin 命名空间19 Query + 5 Mutation
2. **teacher 域 P3+ 查询仍是 P2 占位**`teacher.resolver.ts` 第 60-95 行 `exams` / `homework` / `grades` 仍抛 `BusinessError("not available in P2")`
3. **5 个 gRPC target 留空走降级模式 B**core-edu / content / data-ana / msg / ai 全部未对接
4. **56/61 GraphQL operations 不可用**:仅 5 个 P2 核心 Querydashboard / viewports / me / classes / class真实可用
**决策**:保留 MSW mock记录 12 项 teacher-bff 待补工作到 [nextstep-v2.md](../../../../apps/teacher-portal/nextstep-v2.md) §2.1。
#### §5.7.2 v2 完成工作清单
| # | 工作项 | 完成内容 |
| --- | ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ |
| 1 | useAuth 迁移核查 | 发现 iam REST 登录接口未实现 Set-Cookie修正 v1 的错误假设v1 假设 iam 已就绪。useAuth 迁移**阻塞于 iam 后端实现 Set-Cookie** |
| 2 | push-gateway WebSocket 接入 ✅ | 环境变量 `NEXT_PUBLIC_PUSH_GATEWAY_WS_URL` + URL query token + Reconnect 协议session_id + last_seq+ 兼容 push-gateway 事件格式 |
| 3 | 单元测试扩展 ✅ | usePermission 15 tests + useAuth 9 tests总计 87/87 passed从 v1 的 63 扩展到 87 |
| 4 | ui-components 剩余组件 ✅ | ChartSVG bar/line/pie+ Calendar月视图 + 事件标记)+ RichTextEditorcontentEditable 轻量实现),总计 12/12 组件 |
| 5 | 设计令牌完整迁移 ✅ | globals.css + tailwind.config.js 全部使用 `var(--*)`,无 hsl/hex 字面量ESLint tokens + a11y flat config 就绪 |
| 6 | i18n 扩展状态评估 | 已迁移 5/55 页面dashboard/grades/settings 等)+ 26 模块 key + LocaleSwitcher。剩余 50+ 页面待逐页替换 |
| 7 | 性能优化扩展 ✅ 基本完成 | size-limit 9 项性能预算 + 5 个重型页面懒加载lesson-plans/heatmap、grades/analytics、knowledge-graph、ParentPortalRemote、HeatmapMatrix |
| 8 | nextstep-v2.md 文档生成 | 完整记录 v2 核查结论 + 下游依赖 + 本模块待补工作 + 集成测试方案 + 已知问题 |
#### §5.7.3 验证结果
-`pnpm --filter @edu/teacher-portal typecheck` 通过tsc --noEmit 零错误)
-`pnpm --filter @edu/teacher-portal lint` 通过eslint src 零错误)
-`pnpm --filter @edu/teacher-portal test` 通过Test Files 8 passed / Tests 87 passed
-`pnpm run arch:scan` 完成TS 20 模块 / 3330 符号 + Go 2 模块 / 93 符号 + Python 2 模块 / 469 符号 + Protobuf 394 契约)
#### §5.7.4 v2 剩余阻塞项
| 阻塞项 | 依赖方 | 阻塞工作 |
| --------------------------------------------- | ----------------------- | ----------------------------------------- |
| teacher-bff teacher 域 P3+ 查询/mutation 实现 | ai03 + ai07/08/10/11/12 | MSW mock → 真实 API 切换56 operations |
| teacher-bff schema 文件同步为 v2 扁平命名 | ai03 | 契约一致性 |
| teacher-bff 5 个 gRPC target 配置 | ai03 | teacher 域扩展查询 |
| iam REST 登录接口实现 Set-Cookie | ai06 | useAuth 迁移到 httpOnly cookieF12 |
**无阻塞工作**可任意时间推进i18n 扩展剩余 50+ 页面、图片优化next/image、字体优化next/font、CI size-limit 阻断集成。
详细 v2 文档见 [apps/teacher-portal/nextstep-v2.md](../../../../apps/teacher-portal/nextstep-v2.md)。
---
## §6 全并行开发说明
按 [matrix.md](../matrix.md) §全并行模式: