Files
Edu/docs/architecture/issues/objections/parent-bff_issue.md
SpecialX c6362f4b04
Some checks failed
CI / quality-ts (push) Failing after 53s
CI / quality-go (push) Failing after 7s
CI / quality-proto (push) Failing after 3s
CI / deploy (push) Has been skipped
docs(docs): 更新 issue 仲裁状态 + 生成集成测试阶段规划
- 14 个 issue.md 状态字段更新为"已裁决"
  - 对应 coord.md ARB-001~022 章节
  - 共 104 处状态字段更新
- 新增 integration-test-phase.md
  - 集成测试与部署验证阶段(P7)规划
  - 6 个批次任务分解
  - 8 条核心 E2E 链路定义
  - 验收标准和退出标准

Coord-AI
2026-07-10 22:05:37 +08:00

11 KiB
Raw Blame History

parent-bff 问题记录

负责人ai05 关联:coord.mdcontracts/parent-bff_contract.md 规则AI 遇到问题时在此追加条目coord 仲裁后更新状态


§0 已有仲裁核查结论ai05 复审2026-07-10

对 parent-bff 相关的已仲裁决策(用户 U1-U4 + coord C1-C6 + coord-final-decisions I6逐项核查执行情况。

0.1 核查通过项(已正确执行)

仲裁 主题 核查结论
U2 push-gateway 豁免 gRPCHTTP /internal/push 02 §5.3/§7.1 已执行 HTTP 调用 push-gateway
C2 端口 3010不暴露 gRPC 02 §7.2 + matrix.md §3 已执行
C3 core-edu 错误码 CORE_EDU_* 02 §6.2 已执行
C5 Kafka topic edu.notification.sent/read/recalled/failed 02 §5.2 已执行004 §7.2 同步属 coord 待办 #7不阻塞 parent-bff

0.2 核查发现的问题(仲裁已裁决但文档未同步/执行有偏差)

以下问题均为"仲裁结论正确,但相关文档未同步"或"文档内部不一致",提请 coord 确认处理方式。


问题列表

ISSUE-001-ai0501-understanding.md 未同步 ai05 接手与多项仲裁

  • 提请方ai05
  • 日期2026-07-10
  • 类型:文档同步缺失
  • 描述01-understanding.md 头部仍标 "AI 标识ai04"、"状态:待 coord 审核",未反映 ai05 已正式接手ai-allocation.md §3.2)。同时以下仲裁已裁决但 01 未同步:
    • U3GraphQL P2 引入01 §4.1 仍建议"P4 先对齐 teacher-bff REST 现状",与 U3 仲裁冲突
    • U4BFF 豁免 @RequirePermission01 §6 表格"权限装饰器"行标"⚠️ 不对齐",未引用 U4 仲裁
    • C1错误码前缀 BFF_PARENT_01 §3.3 仍用 PARENT_BFF_ 旧前缀
  • 建议方案01-understanding.md 头部更新为 ai05 复审版,同步 U3/U4/C1 仲裁结论;或由 coord 确认 01 作为"阶段 1 历史快照"保留原样,以 02 为准
  • 状态:已裁决(见 coord.md §20

ISSUE-002-ai0502 文档内部 ChildGuard 缓存 TTL 不一致

  • 提请方ai05
  • 日期2026-07-10
  • 类型:文档内部不一致
  • 描述02-architecture-design.md 内部 ChildGuard 绑定列表缓存 TTL 三处不一致:
    • §3.1.1 Redis 缓存 Schema 表:写 "60s"coord 推断原值)
    • §9 #2 ai05 review 结论:调整为 "30s + 主动失效"
    • §13 #7 黄金模板对齐表:写 "30s" §3.1.1 表格未同步 §9 的调整,导致同一文档内 60s 与 30s 并存。
  • 建议方案§3.1.1 表格 ChildGuard 行 TTL 改为 "30s",与 §9 #2 + §13 #7 一致
  • 状态:已裁决(见 coord.md §20

ISSUE-003-ai05contract.md 仲裁引用编号错误I3 → I6

  • 提请方ai05
  • 日期2026-07-10
  • 类型:契约引用错误
  • 描述contracts/parent-bff_contract.md §2.1 表格 + §3.1 引用 "I3/ISSUE-047 裁决" 作为 GetChildrenByParent 的仲裁依据。但核查 coord-final-decisions.md 发现:
    • I3 是 "PermissionGuard 本地 map → DB 驱动" 裁决,与家长-学生关联无关
    • I6 才是 "家长-学生关联P2 即补全 iam_student_guardians 表 + GetChildrenByParent RPC" 裁决
    • 全仓库未检索到 "ISSUE-047" 编号grep 无结果),疑为虚构编号
  • 建议方案contract.md 将 "I3/ISSUE-047 裁决" 修正为 "I6 裁决coord-final-decisions.md §1"
  • 状态:已裁决(见 coord.md §20

ISSUE-004-ai05004 §4 服务依赖图与 matrix.md §1 未同步 C6 仲裁

  • 提请方ai05
  • 日期2026-07-10
  • 类型:架构图未同步
  • 描述C6 仲裁将 parent-bff 依赖扩展为 iam + core-edu + data-ana + msg
    • 004_architecture_impact_map.md §4 服务依赖图line 376-377仍只画 PBFF --> IAM + PBFF --> CoreEdu,未加 DataAna + Msg
    • matrix.md §1 服务依赖矩阵line 64-65同样只画 PBFF --> IAM + PBFF --> CORE
    • 02 §0.1 C6 行已标注 "004 §4 待 coord 同步更新",但至今未同步 此差异导致新接手的 AI 看 004/matrix 会误以为 parent-bff 不依赖 data-ana/msg与 02 设计冲突。
  • 建议方案coord 在 004 §4 服务依赖图补 PBFF --> DataAna + PBFF --> Msgmatrix.md §1 同步;更新 004 时按 project_rules §1 "改码必同步图" 执行
  • 状态:已裁决(见 coord.md §20

ISSUE-005-ai05parent-portal 01 文档与 parent-bff GraphQL 决策跨模块冲突

  • 提请方ai05
  • 日期2026-07-10
  • 类型:跨模块契约冲突
  • 描述U3 仲裁决定 parent-bff P4 直接用 GraphQL02 §4 已执行),但 parent-portal 01-understanding.md §3.1 仍按 REST 设计消费 parent-bff
    • parent-portal §3.1 列 GET /parent/viewportsGET /parent/dashboardGET /parent/children 等 REST 端点
    • parent-bff 02 §4.1 明确 "不实现 REST 业务端点(仅保留 /healthz /readyz /metrics"
    • parent-portal §3.1 还引用 GET /iam/effective-permissionsC4 仲裁已改为 /iam/permissions/effective
    • parent-portal §3.1 标 "BFF 对接parent-bffai04 设计)"ai04 已过时(现 ai05 此冲突若不解决parent-portalai15会按 REST 实现 frontend client与 parent-bff GraphQL 端点不兼容。
  • 建议方案coord 协调 ai15 将 parent-portal 01/02 文档的 parent-bff 消费契约从 REST 改为 GraphQLPOST /api/v1/parent/graphql),同步 C4 iam 路径仲裁;此属跨模块契约,按 project_rules §14.4 跨模块变更顺序处理
  • 状态:已裁决(见 coord.md §20

ISSUE-006-ai05proto 包名引用不一致(缺失 next_edu_cloud 前缀)

  • 提请方ai05
  • 日期2026-07-10
  • 类型:契约引用错误
  • 描述02-architecture-design.md §3.3 DTO 映射表引用 proto message 为 iam.v1.UserInfocore_edu.v1.Grade[]analytics.v1.StudentWeaknessmsg.v1.Notification[]。但实际 proto 文件包名均带 next_edu_cloud. 前缀:
    • iam.proto: package next_edu_cloud.iam.v1;
    • core_edu.proto: package next_edu_cloud.core_edu.v1;
    • analytics.proto: package next_edu_cloud.analytics.v1;
    • msg.proto: package next_edu_cloud.msg.v1; 引用不一致会导致 gRPC client 代码生成时 package 路径错误。
  • 建议方案02 §3.3 DTO 映射表 proto message 列全部补 next_edu_cloud. 前缀;或确认是否统一去掉前缀(需 buf.yaml 配置一致)
  • 状态:已裁决(见 coord.md §20

ISSUE-007-ai05GraphQL Notification.childId 字段在 msg.proto 缺失

  • 提请方ai05
  • 日期2026-07-10
  • 类型:契约缺口
  • 描述02 §4.2 GraphQL schema 定义 Notification type 含 childId: ID 字段(家长场景需知道通知关联哪个孩子)。但 msg.proto 的 Notification message 无 childId 字段:
    message Notification {
      string id = 1;
      string user_id = 2;
      string type = 3;
      string title = 4;
      string content = 5;
      string channel = 6;
      bool is_read = 7;
      int64 created_at = 8;
    }
    
    parent-bff 无法从 msg 服务获取通知关联的孩子 ID影响"按孩子过滤通知"场景。
  • 建议方案coord 协调 ai10 在 msg.proto Notification message 补 string child_id = 9; 字段(可选,非家长通知为空);或 parent-bff 从 notification.content 解析(脆弱,不推荐)
  • 状态:已裁决(见 coord.md §20

ISSUE-008-ai05core_edu.proto 缺 ClassService02 §7.1 列为已有

  • 提请方ai05
  • 日期2026-07-10
  • 类型:契约缺口
  • 描述02 §7.1 交互矩阵列 core-edu ClassService.GetClass(查孩子班级信息)状态为 " 已有"。但核查 core_edu.proto 实际只有 ExamService / HomeworkService / GradeService 三个 service无 ClassService。matrix.md §2 却声称 core-edu 有 "ClassService + ExamService + HomeworkService + GradeService + AttendanceService" 共 22 RPC。proto 与 matrix.md 不一致,且 02 错误标注为"已有"。 另core_edu.proto 的 Grade.score 是 string 类型02 GraphQL Grade.score 是 Float!string→Float 转换规则未在 §3.3 说明。
  • 建议方案
    1. coord 确认 ClassService 归属core-edu 还是 classes 服务),补 proto
    2. 02 §7.1 ClassService.GetClass 状态从 " 已有" 改为 " 待补"
    3. 02 §3.3 补 Grade.score string→Float 转换规则说明
  • 状态:已裁决(见 coord.md §20

ISSUE-009-ai05ai-allocation iam 责任方与 01/02 文档不一致

  • 提请方ai05
  • 日期2026-07-10
  • 类型:责任方引用过时
  • 描述01-understanding.md §7.1/§7.3 多处提"推动 ai02 在 iam 补接口"02 §8.1 P0 阻塞项 + §14.1 P0-1 也标 iam 责任方为 "ai06iam 现归属)" 但 §7.3 #1 仍标 ai02。实际 ai-allocation.md §3.2 确认 iam 归属 ai06。01 文档未同步。
  • 建议方案01 §7.1/§7.3 将 "ai02" 改为 "ai06"02 §7.3 #1 同步
  • 状态:已裁决(见 coord.md §20

ISSUE-010-ai0502 缺少 ADR / NFR / 容量规划 / 威胁建模(业界规范差距)

  • 提请方ai05
  • 日期2026-07-10
  • 类型:架构文档规范缺失
  • 描述:对照业界通用架构文档规范(如 C4 model + ADR + NFR02-architecture-design.md 存在以下规范差距:
    1. ADR 缺失:虽有"已仲裁决策"表,但未按 ADR 格式Context/Decision/Consequences记录关键决策如 GraphQL vs REST、ChildGuard 位置、多子女切换方案)。建议补 ADR 索引章节。
    2. NFR 未量化§10.4 P6 提"SLO 监控"但文档前部未明确非功能性需求P95 延迟、可用性、吞吐量目标)。业界规范要求架构文档开头列 NFR。
    3. 容量规划缺失:未估算家长端 QPS、并发数、数据量家长数 × 孩子数 × 成绩数),无法指导 HPA 副本数和 Redis 容量规划。
    4. 安全威胁建模缺失§6.2 列错误码但未做威胁建模STRIDE。家长场景涉及未成年人数据COPPA/FERPA/PIPL应补威胁模型。
    5. 数据流图DFD缺失§1.2 只有 Dashboard 时序图,缺少 DFD 展示数据跨信任边界流动。
  • 建议方案coord 确认是否在 02 补全上述章节,或作为 P6 硬化阶段补全;当前不阻塞 P4 实施
  • 状态:已裁决(见 coord.md §20