coord.md 新增 ARB-019/020/021 三章仲裁章节,修正 ARB-001。 - coord.md: 新增 ARB-019/020/021(student/parent/admin-portal 24 项) - coord.md: 修正 ARB-001(admin P2 预留/schema 文件名/classes 数据源) - 004 §4: 依赖图加 PBFF→DataAna+Msg - 004 §7.2: push-gateway→Redis 软失败标注 - 004 §11.4: 错误码前缀矩阵(11 服务+i18n key) - 004 §11.5: ActionState 信封规范(降级模式方案 B) - matrix §1: 依赖矩阵加 PBFF 边 - matrix §2: 移除 api-gateway 为 iam gRPC 消费方 - matrix §4: admin-portal→teacher-bff - matrix §5: 移除 /sse+鉴权头统一 - matrix §6: 错误码表补 i18n key 列 - 15 个 issue.md: 仲裁结论回写 - push-gateway_contract: 移除 /sse+鉴权头改 X-Internal-Token - packages/contracts: 新建包 ADMIN_* 权限点常量 AI: coord
12 KiB
12 KiB
admin-portal 问题记录
负责人:ai16 关联:coord.md、contracts/admin-portal_contract.md、matrix.md、ai-allocation.md §5 ai16 规则:AI 遇到问题时在此追加条目,coord 仲裁后更新状态
§0 已有仲裁核查(ai16 复核)
任务要求:对 coord 已有仲裁进行核查。以下为 ai16 对照 admin-portal 实际职责逐条复核结论。
0.1 ARB-001(teacher-bff GraphQL schema 第一版)— 核查结论:✅ 通过,但存在依赖缺口
- 核查点:ARB-001 §1.3 裁决"admin 命名空间 P2 不包含,P6 admin-portal 阶段新增 admin 命名空间"。
- 核查结论:裁决方向正确(admin-portal 复用 teacher-bff + admin schema 命名空间,与 ai-allocation §5 ai16 设计重点一致)。
- 发现的缺口:teacher-bff 当前 02-architecture-design.md 未定义 admin 命名空间的 GraphQL schema(全文仅 1 处 audit 提及,无 adminUsers/adminRoles/auditLogs/adminDashboard 等 Query)。admin-portal P6 的全部业务查询依赖该 schema,属前置依赖缺失。
- 建议:请 coord 仲裁 admin 命名空间 schema 的归属与时间点——是否由 ai03(teacher-bff)在 P6 启动前补齐
packages/shared-ts/contracts/graphql/teacher-bff.graphql的 admin 命名空间部分(参照本模块 contract §2.4 的 Query 清单)。 - 状态:待 coord 仲裁(见新异议 ISSUE-005)
0.2 ARB-002(MF Shell 暴露清单)— 核查结论:✅ 通过,但 01/02 文档未跟进
- 核查点:ARB-002 §2.2 Shell 暴露清单含
GraphQLProvider/useGraphQLClient/useAuth/usePermission/AppShell/ErrorBoundary/Loading/Empty/RequirePermission,不含useApi/ApiClient。 - 核查结论:裁决正确。admin-portal 应通过
useGraphQLClient()消费 teacher-bff GraphQL,而非 REST ApiClient。 - 发现的问题:本模块 01-understanding.md 与 02-architecture-design.md 仍基于 REST
useApi()/ApiClient编写,未跟进 ARB-002。属本模块文档与仲裁不同步(见新异议 ISSUE-003)。 - 状态:本模块文档待修订(见 ISSUE-003)
0.3 未仲裁但影响 admin-portal 的关键项
ARB-001/ARB-002 均未明确仲裁以下三项,而它们直接影响 admin-portal 实现,建议 coord 补充裁决:
| 待裁决项 | 当前依据 | 影响 |
|---|---|---|
| admin-portal 端口 | matrix.md / ai-allocation.md = 4003 | 01/02 文档误用 3003(与 teacher-bff 冲突) |
| admin-portal 是否消费 push-gateway WebSocket | 同类 portal(parent-portal)契约 = 消费 | 01/02 文档误声明"不消费推送" |
| 审计日志消费机制(iam Kafka → teacher-bff → GraphQL auditLogs) | matrix.md §4 列 admin-portal 为 edu.iam.audit.created 消费方 | 前端不直连 Kafka,需经 teacher-bff 聚合,matrix.md 表述不精确 |
问题列表
ISSUE-001-ai16:01/02 模块文档归属错误(ai07 → ai16)
- 提请方:ai16
- 日期:2026-07-10
- 类型:编号冲突 / 文档归属
- 描述:01-understanding.md 与 02-architecture-design.md 头部均标注"AI:ai07(TS/React · 管理场景域前端 remote)",分支名
docs/admin-portal-stage1-stage2-design-ai07。但 ai-allocation.md §5 第 54/97/118/159/278 行明确 admin-portal 归属 ai16,ai07 实际负责 classes → core-edu 交接(见 workline.md §4.7)。 - 建议方案:将 01/02 文档头部 AI 标识与分支命名更正为 ai16;ai07 在 admin-portal 的产出视为历史草稿,由 ai16 接管修订。
- 状态:待 coord 仲裁
ISSUE-002-ai16:01/02 文档端口错误(3003 → 4003),且 3003 与 teacher-bff 冲突
- 提请方:ai16
- 日期:2026-07-10
- 类型:契约不明确 / 编号冲突
- 描述:01 §1 与 02 §12.1 声明 admin-portal 端口 3003,并称"与 full-stack-runbook 端口矩阵对齐"。但 full-stack-runbook §2.1 中 3003 = teacher-bff,admin-portal 未列入该 runbook。coord 维护的 matrix.md §1 与 ai-allocation.md 统一采用 4000 段:teacher-portal :4000 / student-portal :4001 / parent-portal :4002 / admin-portal :4003。
- 建议方案:确认 admin-portal 端口为 4003;同步更新 full-stack-runbook §2.1 补齐 4 个 portal 的 4000 段端口(消除 runbook 与 matrix.md 的端口双轨制)。
- 状态:待 coord 仲裁
ISSUE-003-ai16:01/02 文档通信协议与 ARB-001/ARB-002 不一致(REST → GraphQL)
- 提请方:ai16
- 日期:2026-07-10
- 类型:契约不明确 / 前置依赖缺失
- 描述:01 §3.1 / 02 §1、§4 全文基于 REST(
/api/v1/iam/*+/api/v1/admin/*+useApi()+ApiClient)。但 ARB-001 已裁决 admin-portal 复用 teacher-bff GraphQL admin 命名空间,ARB-002 已裁决 Shell 暴露GraphQLProvider+useGraphQLClient(不含useApi)。02 §11.3 仍将"GraphQL vs REST"列为未决,与仲裁结论冲突。根因:01/02 文档参照的 teacher-portal 02 文档(同样基于 REST、将 GraphQL 列为未决)早于 ARB-001/002(2026-07-09),未跟进仲裁。 - 建议方案:admin-portal 通信协议统一为 GraphQL(
POST /api/admin/graphql→ teacher-bff admin 命名空间);删除useApi/ApiClient依赖,改用useGraphQLClient();02 §11.3 移除已裁决项。本模块 contract.md 已按 GraphQL 编写,作为修订基准。 - 状态:待 coord 仲裁
ISSUE-004-ai16:01/02 文档遗漏审计日志与学校设置(ai-allocation §5 明确职责)
- 提请方:ai16
- 日期:2026-07-10
- 类型:工作量超批 / 契约不明确
- 描述:ai-allocation.md §5 ai16 第 282 行明确 admin-portal 设计重点含"用户管理 + 角色权限管理 + 学校设置 + 组织管理 + 审计日志消费"。但 01 §2.1/§L1 导航/§L2 路由表均无审计日志、无学校设置(仅有 dashboard/users/roles/permissions/viewports/organization/monitoring 7 个视口)。本模块 contract.md §1.2/§2.4 已含 audit-logs / system 路由与 auditLogs Query,与 01/02 不一致。
- 建议方案:admin-portal 视口补齐为 9 个:dashboard / users / roles / permissions / viewports / organization / classes / teachers / students / audit-logs / system(按 ai-allocation §5 + contract §1.2 对齐);审计日志经 teacher-bff GraphQL
auditLogsQuery 消费(聚合 iamAuditEvent)。 - 状态:待 coord 仲裁
ISSUE-005-ai16:teacher-bff 缺 admin 命名空间 GraphQL schema(前置依赖缺失)
- 提请方:ai16
- 日期:2026-07-10
- 类型:前置依赖缺失
- 描述:ARB-001 裁决 P6 新增 admin 命名空间,但 teacher-bff 02-architecture-design.md 未定义该 schema(无 adminUsers / adminRoles / adminClasses / adminTeachers / adminStudents / auditLogs / adminDashboard 等 Query/Mutation)。admin-portal P6 全部业务查询依赖此 schema,且需 SDL-first 存放于
packages/shared-ts/contracts/graphql/teacher-bff.graphql(ARB-001 §1.3)。 - 建议方案:请 coord 仲裁——由 ai03 在 P6 启动前补齐 teacher-bff admin 命名空间 schema(参照本模块 contract §2.4 Query 清单),作为 admin-portal P6 的前置就绪信号;并更新 matrix.md §3 teacher-bff 行的 schema 文件状态。
- 状态:待 coord 仲裁
ISSUE-006-ai16:01/02 文档推送策略与同类 portal 契约不一致(轮询 → WebSocket)
- 提请方:ai16
- 日期:2026-07-10
- 类型:契约不明确
- 描述:01 §3.3 / 02 §5 声明 admin-portal"不消费 WebSocket/SSE,采用轮询"。但同类 portal 契约(parent-portal_contract.md §2.3)消费 push-gateway
GET /ws,本模块 contract.md §2.3 亦声明消费 WebSocket 实时通知。matrix.md §5 列 push-gateway WS 消费方含全部 portal。管理端审计告警/异常登录等场景对实时性有合理需求。 - 建议方案:admin-portal 接入 push-gateway WebSocket(与同类 portal 一致),用于审计告警、异常登录、系统异常等实时通知;保留轮询仅用于监控指标(60s)与统计(5min)这类天然适合轮询的低频数据。
- 状态:待 coord 仲裁
ISSUE-007-ai16:matrix.md §4 将 admin-portal 列为 Kafka 直消费方,与前端层级矛盾
- 提请方:ai16
- 日期:2026-07-10
- 类型:契约不明确
- 描述:matrix.md §4 第 111 行将 admin-portal 列为
edu.iam.audit.created的消费方。但前端不直连 Kafka(contract.md §2.2 已明确审计日志经 GraphQL 查询)。实际链路应为:iam → Kafka → teacher-bff 消费 → GraphQLauditLogsQuery → admin-portal。 - 建议方案:matrix.md §4 该行消费方更正为 teacher-bff(admin-portal 经 teacher-bff 间接消费),避免误导架构分层。
- 状态:待 coord 仲裁
§1 历史问题
1.1 仲裁结论汇总(coord 2026-07-10)
详见 coord.md §23 ARB-021 完整仲裁章节
| ISSUE | 标题 | 仲裁结论摘要 | 执行方 |
|---|---|---|---|
| 001 | 01/02 模块文档归属错误(ai07 → ai16) | ✅ 修正为 ai16;ai07 产出视为历史草稿 | ai16 修 01/02 头部 |
| 002 | 01/02 端口错误(3003 → 4003) | ✅ 确认 admin-portal 端口 4003;同步更新 full-stack-runbook §2.1 补齐 4 个 portal 4000 段 | ai16 修 01/02 + coord 修 runbook |
| 003 | 01/02 通信协议与 ARB-001/002 不一致(REST → GraphQL) | ✅ 统一 GraphQL(POST /api/admin/graphql → teacher-bff admin 命名空间);删除 useApi/ApiClient |
ai16 修 01/02 全文 |
| 004 | 01/02 遗漏审计日志与学校设置 | ✅ 视口补齐为 11 个:dashboard/users/roles/permissions/viewports/organization/classes/teachers/students/audit-logs/system | ai16 修 01/02 |
| 005 | teacher-bff 缺 admin 命名空间 GraphQL schema | ✅ ai03 在 P6 启动前补齐 teacher-bff admin 命名空间 schema(参照 contract §2.4) | ai03 补 schema |
| 006 | 01/02 推送策略与同类 portal 不一致(轮询 → WebSocket) | ✅ admin-portal 接入 push-gateway WebSocket(审计告警/异常登录/系统异常);保留轮询仅用于监控指标 | ai16 修 01/02 |
| 007 | matrix.md §4 将 admin-portal 列为 Kafka 直消费方 | ✅ 修正为 teacher-bff(admin-portal 经 teacher-bff 间接消费,链路:iam → Kafka → teacher-bff → GraphQL → admin-portal) | coord 修 matrix.md §4 |