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

180 lines
11 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.
# parent-bff 问题记录
> 负责人ai05
> 关联:[coord.md](../coord.md)、[contracts/parent-bff_contract.md](../contracts/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 --> Msg`matrix.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/viewports``GET /parent/dashboard``GET /parent/children` 等 REST 端点
- parent-bff 02 §4.1 明确 "不实现 REST 业务端点(仅保留 /healthz /readyz /metrics"
- parent-portal §3.1 还引用 `GET /iam/effective-permissions`C4 仲裁已改为 `/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 改为 GraphQL`POST /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.UserInfo``core_edu.v1.Grade[]``analytics.v1.StudentWeakness``msg.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 字段:
```proto
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
---
<!--
追加条目格式:
### ISSUE-[编号]-[AI标识][标题]
- **提请方**aiXX
- **日期**YYYY-MM-DD
- **类型**:契约不明确 / 工作量超批 / 前置依赖缺失 / 编号冲突 / 其他
- **描述**[详细描述问题]
- **建议方案**[AI 的建议]
- **状态**:已裁决(见 coord.md §X
-->