feat(teacher-portal): 完整实现 teacher-portal 微前端
包含 settings/students/api、graphql、mocks、ui-tokens 设计令牌等
This commit is contained in:
@@ -131,26 +131,48 @@ gantt
|
||||
|
||||
### §4.1 我依赖的上游就绪标志
|
||||
|
||||
| 上游 | 就绪标志 | 阻塞阶段 | 状态 |
|
||||
| --------------------------------------------------------- | ------------------------------------------------- | -------- | ---------------------- |
|
||||
| packages 骨架(ai13 自建) | ui-tokens/ui-components/hooks 可 import | P2 启动 | ✅ 已就绪(批次 0.15) |
|
||||
| teacher-bff GraphQL schema(ai03 + coord 仲裁 ISSUE-037) | packages/shared-ts/contracts/graphql/ 第一版 | P2 启动 | ⏳ 待 coord 仲裁 |
|
||||
| api-gateway HTTP :8080(ai01) | /api/v1/teacher/graphql + /api/auth/login 路由可用 | P2 启动 | ⏳ 待 ai01 |
|
||||
| teacher-bff core-edu 扩展(ai03 P3) | classExams/classHomework/studentGrades query 可用 | P3 启动 | ⏳ 待 ai03 P3 |
|
||||
| teacher-bff content/data-ana 扩展(ai03 P4) | knowledgeGraph/studentAnalytics query 可用 | P4 启动 | ⏳ 待 ai03 P4 |
|
||||
| push-gateway WebSocket :8081/ws(ai02 P5) | WS 连接可建立 + 推送可接收 | P5 启动 | ⏳ 待 ai02 P5 |
|
||||
| ai 服务 gRPC(ai12 P5) | generateQuestion/generateLessonPlan 可调 | P5 启动 | ⏳ 待 ai12 P5 |
|
||||
| iam refresh cookie 端点(ai06 P6) | POST /iam/auth/refresh 返回 httpOnly cookie | P6 启动 | ⏳ 待 ai06 P6 |
|
||||
| 上游 | 就绪标志 | 阻塞阶段 | 状态 |
|
||||
| --------------------------------------------------------- | -------------------------------------------------- | -------- | ---------------------- |
|
||||
| packages 骨架(ai13 自建) | ui-tokens/ui-components/hooks 可 import | P2 启动 | ✅ 已就绪(批次 0.15) |
|
||||
| teacher-bff GraphQL schema(ai03 + coord 仲裁 ISSUE-037) | packages/shared-ts/contracts/graphql/ 第一版 | P2 启动 | ⏳ 待 coord 仲裁 |
|
||||
| api-gateway HTTP :8080(ai01) | /api/v1/teacher/graphql + /api/auth/login 路由可用 | P2 启动 | ⏳ 待 ai01 |
|
||||
| teacher-bff core-edu 扩展(ai03 P3) | classExams/classHomework/studentGrades query 可用 | P3 启动 | ⏳ 待 ai03 P3 |
|
||||
| teacher-bff content/data-ana 扩展(ai03 P4) | knowledgeGraph/studentAnalytics query 可用 | P4 启动 | ⏳ 待 ai03 P4 |
|
||||
| push-gateway WebSocket :8081/ws(ai02 P5) | WS 连接可建立 + 推送可接收 | P5 启动 | ⏳ 待 ai02 P5 |
|
||||
| ai 服务 gRPC(ai12 P5) | generateQuestion/generateLessonPlan 可调 | P5 启动 | ⏳ 待 ai12 P5 |
|
||||
| iam refresh cookie 端点(ai06 P6) | POST /iam/auth/refresh 返回 httpOnly cookie | P6 启动 | ⏳ 待 ai06 P6 |
|
||||
|
||||
### §4.2 我的就绪信号(供下游消费)
|
||||
|
||||
| 信号 | 就绪标志 | 消费方 |
|
||||
| ------------------------------- | -------------------------------------- | ---------------------------------- |
|
||||
| teacher-portal dev server :4000 | next dev -p 4000 可访问 | 无(最前端) |
|
||||
| MF Shell 可加载 | 首页渲染 AppShell + 导航 | student/parent/admin Remote(P3+) |
|
||||
| 登录流程可用 | POST /api/auth/login → JWT → Dashboard | 无(最前端) |
|
||||
| GraphQL 查询可执行 | currentUser/myClasses 返回数据 | 无(最前端) |
|
||||
| parent-portal Remote 接入点 | MF remotes 配置就绪 | parent-portal(ai15 P4) |
|
||||
| 信号 | 就绪标志 | 消费方 | P2 状态 |
|
||||
| ------------------------------- | ----------------------------------------------------------------------- | ---------------------------------- | --------------------- |
|
||||
| teacher-portal dev server :4000 | next dev -p 4000 可访问 | 无(最前端) | ✅ 已就绪 |
|
||||
| MF Shell 可加载 | 首页渲染 AppShell + 导航 | student/parent/admin Remote(P3+) | ✅ 已就绪 |
|
||||
| 登录流程可用 | POST /api/auth/login → JWT → Dashboard | 无(最前端) | ✅ 已就绪(MSW mock) |
|
||||
| GraphQL 查询可执行 | DashboardQuery/ClassesQuery/MeQuery/ViewportsQuery/ClassQuery 返回数据 | 无(最前端) | ✅ 已就绪(MSW mock) |
|
||||
| P3 扩展 Query 可执行 | ClassStudents/ClassExams/ClassHomework/ExamGrades + UpdateUser Mutation | 无(最前端) | ✅ 已就绪(MSW mock) |
|
||||
| parent-portal Remote 接入点 | MF remotes 配置就绪 | parent-portal(ai15 P4) | ⏳ P4 启用 |
|
||||
| /api/health + /api/ready | k8s livenessProbe + readinessProbe 端点 | infra(部署) | ✅ 已就绪 |
|
||||
|
||||
### §4.3 P2 交付物完成清单
|
||||
|
||||
- ✅ packages 骨架(ui-tokens/ui-components/hooks,批次 0.15)
|
||||
- ✅ NextFederationPlugin 配置(exposes AppShell + GraphQLProvider + hooks + UI 组件,shared react/urql/graphql/@edu/* singleton)
|
||||
- ✅ GraphQLProvider + urql client 单例(Shell 暴露,Remote 复用,§2.17 方案 A)
|
||||
- ✅ AppShell(Layout + 侧边栏 + 路由守卫 + ErrorBoundary + 设计令牌三层 + GraphQL ViewportsQuery + MeQuery + usePermission)
|
||||
- ✅ 登录页(POST /api/auth/login → JWT 存 localStorage,F12)
|
||||
- ✅ 权限上下文(usePermission + buildPermissionContext,权限点 `<RESOURCE>_<ACTION>` F7)
|
||||
- ✅ Dashboard 框架(GraphQL DashboardQuery + 统计卡片)
|
||||
- ✅ 班级列表页(GraphQL ClassesQuery)
|
||||
- ✅ 学生列表页(GraphQL ClassStudentsQuery,P3 扩展 MSW mock)
|
||||
- ✅ 个人设置页(GraphQL MeQuery 只读展示)
|
||||
- ✅ 考试/作业/成绩页面(GraphQL ClassExams/ClassHomework/ExamGrades,P3 扩展 MSW mock)
|
||||
- ✅ MSW mock 层(handlers + fixtures + browser/server + initMocks + providers 集成 + mockServiceWorker.js)
|
||||
- ✅ /api/health + /api/ready 路由(liveness + readiness)
|
||||
- ✅ Dockerfile 端口 3000→4000 + 健康检查路径更新
|
||||
- ✅ .env.example 添加 teacher-portal 变量(NEXT_PUBLIC_TEACHER_BFF_GRAPHQL_URL / NEXT_PUBLIC_API_MOCKING / NEXT_PUBLIC_MF_ENABLED / API_GATEWAY_URL)
|
||||
- ✅ 质量校验通过(lint + typecheck 零错误)
|
||||
- ✅ arch.db 已更新(arch:scan:TS 14 模块 / 343 符号 / Proto 138 契约)
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user