refactor(docs): 移除 ai07 classes 合并到 core-edu,16 AI 降为 15 AI

This commit is contained in:
SpecialX
2026-07-10 14:04:49 +08:00
parent 6051f84a65
commit 9ba368477d
9 changed files with 457 additions and 2289 deletions

View File

@@ -1,102 +1,126 @@
# AI 分配方案与架构设计外包流程
> 版本:1.1
> 版本:2.0
> 日期2026-07-10
> 适用范围Edu 微服务项目(架构设计外包三阶段已实施,进入持续开发阶段
> 关联文档:[多 AI 协作指南](../standards/multi-ai-collaboration.md)、[004 架构影响地图](./004_architecture_impact_map.md)、[待开发功能路线图](./roadmap/pending-features.md)
> 适用范围Edu 微服务项目(15 AI + 1 coord 全并行开发模式
> 关联文档:[多 AI 协作指南](../standards/multi-ai-collaboration.md)、[004 架构影响地图](./004_architecture_impact_map.md)、[待开发功能路线图](./roadmap/pending-features.md)、[总裁最终裁决](./president-final-rulings.md)、[AI 工作顺序协同规划](./ai-work-orchestration.md)、[coord 仲裁汇总](./issues/coord.md)、[总工作安排](./issues/workline.md)、[上下游对接总矩阵](./issues/matrix.md)
>
> **状态说明**:架构设计外包三阶段(模块理解 → 模块架构设计 → 按图实施)已实施完成,各模块设计文档见 `services/<service>/docs/` 与 `apps/<app>/docs/`。当前进入持续开发阶段,所有 AI 工作默认按多 AI 协作模式进行
> **状态说明**:架构设计外包三阶段(模块理解 → 模块架构设计 → 按图实施)已实施完成。当前进入**全并行开发模式**:各 AI 一口气完成自己模块从 P2 到 P6 的所有代码,开发期间用 mock最后统一集成测试
---
## 1. 外包总流程:三阶段(已实施)
## 1. 全并行开发模式
```
阶段 1模块理解 阶段 2模块架构设计 阶段 3按图实施
(每个 AI 独立) (每个 AI 独立) (并行开发)
│ │
按需阅读模块架构文档 产出模块内部架构图 按自己画的图写代码
理解边界与契约 定义内部模块/数据流 coord 定期巡检一致性
理解与其他模块的接口 标注与其他模块的交互点 遇到偏差更新架构图
│ │
▼ ▼ ▼
交付:理解确认书 交付:模块架构设计文档 交付:代码 + 更新图
各 AI 独立开发(全并行) coord 协调
读取自己的 contract.md 维护 proto 契约
在 workline.md 规划全阶段任务 仲裁异议objections/
开发期间用 mock见 contract.md §4 汇总就绪信号matrix.md §8
│ │
交付:完整代码 + 就绪信号 交付:契约 + 仲裁 + 总矩阵
└──────────► 统一集成测试 ◄─────────────┘
```
> **三阶段已实施完成**。阶段 1 产出见各模块 `docs/01-understanding.md`,阶段 2 产出见各模块 `docs/02-architecture-design.md`,阶段 3 持续进行中。
**核心原则**
**阶段 1 目标**:每个 AI 读懂自己负责的模块在架构中的位置、边界、契约(按需阅读,见 §4
**阶段 2 目标**:每个 AI 产出自己模块的内部架构设计,经过 coord 交叉审查后放行。
**阶段 3 目标**按设计文档写代码coord 定期巡检一致性。
- 各 AI 一口气完成自己模块从 P2 到 P6 的所有代码
- 开发期间消费上游的 mockgRPC mock / MSW / Kafka mock
- 上游就绪后在 `issues/matrix.md` §8 更新就绪信号
- 所有模块就绪后统一集成测试(见 `issues/matrix.md` §9 检查清单)
---
## 2. 完整服务清单
| 类别 | 服务名 | 语言/框架 | 限界上下文 | 阶段 | 状态 |
| ---- | -------------- | ---------------- | ---------------------- | ------ | ----------------- |
| 网关 | api-gateway | Go (Gin) | API 网关 | P1 | ✅ 已实现 |
| 网关 | push-gateway | Go (Gin) | 推送网关 | P5 | 📐 需设计 |
| BFF | teacher-bff | TS (NestJS) | 教学场景域聚合 | P2 | ✅ 已实现 |
| BFF | student-bff | TS (NestJS) | 学习场景域聚合 | P3 | 📐 需设计 |
| BFF | parent-bff | TS (NestJS) | 家长场景域聚合 | P4 | 📐 需设计 |
| 业务 | iam | TS (NestJS) | 身份认证 | P2 | ✅ 已实现 |
| 业务 | core-edu | TS (NestJS) | 教学核心(含 classes | P3 | 📐 待合并 classes |
| 业务 | content | TS (NestJS) | 内容资源 | P4 | 📐 需设计 |
| 业务 | msg | TS (NestJS) | 消息通知 | P5 | 📐 需设计 |
| 业务 | data-ana | Python (FastAPI) | 数据分析 | P4 | 📐 需设计 |
| 业务 | ai | Python (FastAPI) | AI 网关 | P5 | 📐 需设计 |
| 前端 | teacher-portal | TS (Next.js) | 教学场景域前端 | P2 | ✅ 已实现 |
| 前端 | student-portal | TS (Next.js) | 学习场景域前端 | P3 | 📐 需设计 |
| 前端 | parent-portal | TS (Next.js) | 家长场景域前端 | P4 | 📐 需设计 |
| 前端 | admin-portal | TS (Next.js) | 管理场景域前端 | P6 | 📐 需设计 |
| 共享 | shared-proto | protobuf | 契约 | 跨阶段 | ✅ 部分 |
| 共享 | shared-ts | TS | TS 共享工具 | 跨阶段 | — |
| 共享 | shared-go | Go | Go 共享工具 | 跨阶段 | — |
| 共享 | shared-py | Python | Python 共享工具 | 跨阶段 | — |
| 基础 | infra | — | K8s/Grafana/WAF | 跨阶段 | ✅ 部分 |
| 类别 | 服务名 | 语言/框架 | 限界上下文 | 阶段 | HTTP 端口 | gRPC 端口 | 负责 AI |
| ---- | -------------- | ---------------- | ---------------------- | ------ | --------- | --------- | ------- |
| 网关 | api-gateway | Go (Gin) | API 网关 | P2 | 8080 | — | ai01 |
| 网关 | push-gateway | Go (Gin) | 推送网关 | P5 | 8081 | — | ai02 |
| BFF | teacher-bff | TS (NestJS) | 教学场景域聚合 | P2 | 3003 | — | ai03 |
| BFF | student-bff | TS (NestJS) | 学习场景域聚合 | P3 | 3009 | — | ai04 |
| BFF | parent-bff | TS (NestJS) | 家长场景域聚合 | P4 | 3010 | — | ai05 |
| 业务 | iam | TS (NestJS) | 身份认证 | P2 | 3002 | 50052 | ai06 |
| 业务 | core-edu | TS (NestJS) | 教学核心(含 classes | P3 | 3004 | 50053 | ai08 |
| 业务 | content | TS (NestJS) | 内容资源 | P4 | 3005 | 50054 | ai09 |
| 业务 | msg | TS (NestJS) | 消息通知 | P5 | 3007 | 50056 | ai10 |
| 业务 | data-ana | Python (FastAPI) | 数据分析 | P4 | 3006 | 50055 | ai11 |
| 业务 | ai | Python (FastAPI) | AI 网关 | P5 | 3008 | 50057 | ai12 |
| 前端 | teacher-portal | TS (Next.js) | 教学场景域前端 | P2 | 4000 | — | ai13 |
| 前端 | student-portal | TS (Next.js) | 学习场景域前端 | P3 | 4001 | — | ai14 |
| 前端 | parent-portal | TS (Next.js) | 家长场景域前端 | P4 | 4002 | — | ai15 |
| 前端 | admin-portal | TS (Next.js) | 管理场景域前端 | P6 | 4003 | — | ai16 |
| 共享 | shared-proto | protobuf | 契约 | 跨阶段 | — | — | coord |
| 共享 | shared-ts | TS | TS 共享工具 | 跨阶段 | — | — | coord |
| 共享 | shared-go | Go | Go 共享工具 | 跨阶段 | — | — | coord |
| 共享 | shared-py | Python | Python 共享工具 | 跨阶段 | — | — | coord |
| 共享 | ui-tokens | TS | 设计令牌 | 跨阶段 | | — | coord |
| 共享 | ui-components | TS | UI 组件库 | 跨阶段 | — | — | ai13 |
| 共享 | hooks | TS | React Hooks 库 | 跨阶段 | — | — | ai13 |
| 基础 | infra | — | K8s/Grafana/WAF | 跨阶段 | — | — | coord |
> 状态标记:✅ 已实现需审计 | 📐 需架构设计(本次外包核心产出)
> **注**classes 模块已合并到 core-eduai08 负责),不再独立分配 AI。
---
## 3. AI 分配方案(7 AI + 1 coord
## 3. AI 分配方案(15 AI + 1 coord
### 3.1 分配原则
- **同语言内聚**:一个 AI 负责多个同语言服务,学习成本只付一次
- **单一负责制**:每个模块(限界上下文)只有一个 AI 负责,禁止并行修改同一模块
- **同语言内聚**:一个 AI 负责同语言服务,学习成本只付一次
- **领域亲缘性**同类业务放一起BFF 归 BFF、Python 归 Python
- **工作负载均衡**Neo4j+ES 的内容服务、ClickHouse 的分析服务复杂度高,不绑太多其他服务
- **前端统一**Module Federation 微前端由一人设计,保证 shell + remote 架构一致
- **黄金模板对齐**:已实现的 services 负责 AI 需审计并对齐 classes 标准
- **工作负载均衡**复杂服务(Neo4j+ES 的 content、ClickHouse 的 data-ana独立分配
- **前端统一**Module Federation 微前端由各自 AI 负责teacher-portal 作为 Shell 由 ai13 统一设计
- **coord 不写业务代码**:专注契约管理 + 仲裁 + 共享包
### 3.2 分配矩阵
| AI 标识 | 语言 | 服务 | 数量 | 阶段归属 |
| --------- | ------ | ----------------------------------------------------------- | ---- | -------- |
| **ai01** | Go | api-gateway、push-gateway | 2 | P1 + P5 |
| **ai02** | TS | iam | 1 | P2 |
| **ai03** | TS | teacher-bff、core-edu | 2 | P2 + P3 |
| **ai04** | TS | student-bff、parent-bff | 2 | P3 + P4 |
| **ai05** | TS | content、msg | 2 | P4 + P5 |
| **ai06** | Python | data-ana、ai | 2 | P4 + P5 |
| **ai07** | TS | teacher-portal、student-portal、parent-portal、admin-portal | 4 | P2-P6 |
| **coord** | | shared-proto、shared-*、infra/、docs/、CI/CD | — | 跨阶段 |
| AI 标识 | 语言 | 服务 | 阶段 | gRPC 端口 |
| --------- | ------ | ----------------------- | --------- | --------- |
| **ai01** | Go | api-gateway | P2 | |
| **ai02** | Go | push-gateway | P5 | |
| **ai03** | TS | teacher-bff | P2+扩展 | |
| **ai04** | TS | student-bff | P3 | |
| **ai05** | TS | parent-bff | P4 | |
| **ai06** | TS | iam | P2.1+P2.2 | 50052 |
| **ai08** | TS | core-edu | P3 | 50053 |
| **ai09** | TS | content | P4 | 50054 |
| **ai10** | TS | msg | P5 | 50056 |
| **ai11** | Python | data-ana | P4 | 50055 |
| **ai12** | Python | ai | P5 | 50057 |
| **ai13** | TS | teacher-portal | P2+扩展 | — |
| **ai14** | TS | student-portal | P3 | — |
| **ai15** | TS | parent-portal | P4 | — |
| **ai16** | TS | admin-portal | P6 | — |
| **coord** | — | shared-* / infra / docs | 跨阶段 | — |
### 3.3 为什么这样拆
| 决策 | 理由 |
| ----------------------------- | ------------------------------------------------------------------------------- |
| ai02 独立负责 iam | RBAC 三层角色 + DataScope 6 级 + 视口 4 层是整个系统的权限中枢,复杂度最高 |
| ai03 teacher-bff + core-edu | 教学域全栈BFF 聚合 + 核心业务。考试/作业/成绩状态机在一个人手里,不跨 AI 协调 |
| ai04 student-bff + parent-bff | 两个 BFF 都是纯聚合层,技术同质(GraphQL + DataLoader),设计模式完全复用 |
| ai05 content + msg | 都依赖 EScontent 建索引、msg 查索引,一人设计避免 ES 索引冲突 |
| ai07 前端 4 端 | Module Federation shell + remote 架构需一人统一设计4 端共享组件库和权限体系 |
| coord 不写业务代码 | 专注契约管理 + 交叉审查,保证 7 份设计文档的接口一致性 |
| 决策 | 理由 |
| ---------------------------- | ------------------------------------------------------------------------------- |
| ai01 独立负责 api-gateway | Go 网关层,路由 + JWT 验签 + 限流,接入 shared-go |
| ai02 独立负责 push-gateway | Go 推送网关WebSocket/SSE + 多设备会话隔离 + 审计表 |
| ai03 独立负责 teacher-bff | 教学场景域 BFFGraphQL schema + DataLoader + ActionState + admin 命名空间 |
| ai04 独立负责 student-bff | 学习场景域 BFFGraphQL + 考试作答 + 作业提交 |
| ai05 独立负责 parent-bff | 家长场景域 BFFGraphQL + 多子女切换 + 成绩趋势 |
| ai06 独立负责 iam | RBAC + DataScope + JWT RS256 + gRPC 12 RPC + 审计日志,权限中枢复杂度最高 |
| ai08 独立负责 core-edu | 教学核心(含原 classes 模块5 Service 22 RPC + Outbox + 考试/作业/成绩状态机 |
| ai09 独立负责 content | 内容资源4 Service 18 RPC + Neo4j 知识图谱 + ES 题库检索 |
| ai10 独立负责 msg | 消息通知3 Service 13 RPC + Outbox + 多渠道通知 |
| ai11 独立负责 data-ana | Python 数据分析12 RPC + ClickHouse 宽表 + CDC 消费 |
| ai12 独立负责 ai | Python AI 网关6 RPC + ES 检索 + LLM 网关 + 流式响应 |
| ai13 独立负责 teacher-portal | MF Shell + GraphQL client 单例 + AppShell + 共享组件库 |
| ai14 独立负责 student-portal | MF Remote + 考试作答 + 作业提交 |
| ai15 独立负责 parent-portal | MF Remote + Dashboard + 多子女切换 |
| ai16 独立负责 admin-portal | MF Remote + 用户管理 + 角色权限 + 审计日志 |
| coord 不写业务代码 | 专注 proto 契约 + 仲裁 + shared-* 包 + infra + 文档体系 |
---
## 4. 各 AI 阶段 1 文档阅读清单(按需阅读)
## 4. 各 AI 文档阅读清单(按需阅读)
> **架构文档按需阅读原则**(见 [project_rules §10](../../.trae/rules/project_rules.md) 与 [multi-ai-collaboration §2.2](../standards/multi-ai-collaboration.md)
>
@@ -112,18 +136,27 @@
| 1 | [project_rules.md](../../.trae/rules/project_rules.md) | 项目强制约束(架构规则、编码规范、提交规范、多 AI 协作、分支开发) |
| 2 | [coding-standards.md](../standards/coding-standards.md) | 多语言编码标准 |
| 3 | [multi-ai-collaboration.md](../standards/multi-ai-collaboration.md) | 多 AI 协作指南§2.1 严格模块边界、§2.2 按需阅读、§3 分支开发规则) |
| 4 | [president-final-rulings.md](./president-final-rulings.md) | 总裁最终裁决70+ 问题逐个裁决 + 时间统筹 + 15 AI 工作清单) |
### 4.2 模块开发按需阅读(只读自己模块,禁止读其他模块内部实现)
| AI | 必读文档 | 说明 |
| ---- | ------------------------------------------------------------------------------------ | ------------------- |
| ai01 | `services/api-gateway/README.md``services/push-gateway/README.md`、004 §网关层章节 | Go 网关层架构 |
| ai02 | `services/iam/README.md`、004 §iam 章节 | 身份认证架构 |
| ai03 | `services/teacher-bff/README.md``services/core-edu/README.md`、004 §教学场景域章节 | 教学场景域架构 |
| ai04 | 004 §student-bff / parent-bff 章节(待建立服务,无 README | 学习+家长场景域 BFF |
| ai05 | 004 §content / msg 章节(待建立服务,无 README | 内容+通知架构 |
| ai06 | `services/data-ana/README.md``services/ai/README.md`、004 §数据分析/AI 章节 | Python 数据+AI 架构 |
| ai07 | `apps/teacher-portal/README.md`、004 §前端章节 | 前端 4 端架构 |
| AI | 必读文档 | 说明 |
| ---- | ------------------------------------------------------------------------------------------------------------------ | --------------- |
| ai01 | `services/api-gateway/README.md`004 §网关层章节、[contract](./issues/contracts/api-gateway_contract.md) | Go 网关层架构 |
| ai02 | `services/push-gateway/README.md`、004 §push-gateway 章节、[contract](./issues/contracts/push-gateway_contract.md) | Go 推送网关架构 |
| ai03 | `services/teacher-bff/README.md`004 §teacher-bff 章节、[contract](./issues/contracts/teacher-bff_contract.md) | 教学场景域 BFF |
| ai04 | 004 §student-bff 章节、[contract](./issues/contracts/student-bff_contract.md) | 学习场景域 BFF |
| ai05 | 004 §parent-bff 章节、[contract](./issues/contracts/parent-bff_contract.md) | 家长场景域 BFF |
| ai06 | `services/iam/README.md`004 §iam 章节、[contract](./issues/contracts/iam_contract.md) | 身份认证架构 |
| ai08 | `services/core-edu/README.md`、004 §core-edu 章节、[contract](./issues/contracts/core-edu_contract.md) | 教学核心架构 |
| ai09 | 004 §content 章节、[contract](./issues/contracts/content_contract.md) | 内容资源架构 |
| ai10 | 004 §msg 章节、[contract](./issues/contracts/msg_contract.md) | 消息通知架构 |
| ai11 | `services/data-ana/README.md`、004 §data-ana 章节、[contract](./issues/contracts/data-ana_contract.md) | Python 数据分析 |
| ai12 | 004 §ai 章节、[contract](./issues/contracts/ai_contract.md) | Python AI 网关 |
| ai13 | `apps/teacher-portal/README.md`、004 §前端章节、[contract](./issues/contracts/teacher-portal_contract.md) | 教师端前端 |
| ai14 | 004 §前端章节、[contract](./issues/contracts/student-portal_contract.md) | 学生端前端 |
| ai15 | 004 §前端章节、[contract](./issues/contracts/parent-portal_contract.md) | 家长端前端 |
| ai16 | 004 §前端章节、[contract](./issues/contracts/admin-portal_contract.md) | 管理端前端 |
> **禁止越界阅读**:上表只列自己模块。如需确认与某模块的契约,走 §4.4 跨模块契约阅读,不读对方内部源码与 README。
@@ -135,245 +168,203 @@
| 2 | [MIGRATION_GUIDE.md](../../MIGRATION_GUIDE.md) | 迁移指南 |
| 3 | [004 架构影响地图](./004_architecture_impact_map.md) 全文 | 全局架构与依赖coord 必读;模块开发只读 §4.2 章节) |
| 4 | [pending-features.md](./roadmap/pending-features.md) | 六阶段路线图 |
> 模块开发 AI **不需要**通读上述全局文档,仅在任务涉及跨模块协调、基础设施变更、文档体系维护时按需阅读。
| 5 | [ai-work-orchestration.md](./ai-work-orchestration.md) | AI 工作顺序协同规划 |
| 6 | [issues/coord.md](./issues/coord.md) | coord 仲裁汇总 |
| 7 | [issues/matrix.md](./issues/matrix.md) | 上下游对接总矩阵 |
### 4.4 跨模块契约按需阅读(仅涉及 proto 变更或确认接口时)
| 场景 | 必读文档 |
| ----------------------- | ----------------------------------------------------------------------------------------------------- |
| 修改/新增 proto message | `packages/shared-proto/proto/` 中**相关** .proto 文件(不读全部,只读变更涉及的文件) |
| 确认与其他模块的接口 | 004 §跨模块交互章节 + 对方服务的**对外接口**proto / API 端点 / Kafka 事件名),**不读对方内部实现** |
| 场景 | 必读文档 |
| ----------------------- | --------------------------------------------------------------------------------------- |
| 修改/新增 proto message | `packages/shared-proto/proto/` 中**相关** .proto 文件(不读全部,只读变更涉及的文件) |
| 确认与其他模块的接口 | [issues/contracts/](./issues/contracts/) 中对方模块的 contract.md + 004 §跨模块交互章节 |
| 确认上下游依赖 | [issues/matrix.md](./issues/matrix.md) §1 服务依赖图 + §2-§5 接口矩阵 |
### 4.5 黄金模板参考(仅 TS 服务首次实现新服务时)
| AI | 参考文档 |
| ------------------ | ---------------------------------------------------------------------------------- |
| ai02-05TS 服务) | `services/classes/src/` 黄金模板源码(首次实现新服务时参考横切关注点,不强制全读) |
| ai01 / ai06 / ai07 | 按需参考 classes 的横切关注点实现模式(错误处理/可观测/健康检查等),不强制读源码 |
| AI | 参考文档 |
| ---------------------------- | ---------------------------------------------------------------------------------- |
| ai03-05, ai08-10TS 服务) | `services/classes/src/` 黄金模板源码(首次实现新服务时参考横切关注点,不强制全读) |
| ai01 / ai02 / ai06 / ai11-16 | 按需参考 classes 的横切关注点实现模式(错误处理/可观测/健康检查等),不强制读源码 |
---
## 5. 各 AI 阶段 2 设计重点
## 5. 各 AI 阶段设计重点
### ai01 — Go 网关层
### ai01 — api-gatewayGo
| 服务 | 设计重点 |
| ------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| api-gateway | 路由表矩阵(路径 → 下游服务 + 端口,需覆盖全部 6 个业务服务 + 3 个 BFF限流策略表每路由 QPS熔断阈值配置错误率/延迟阈值JWT RS256 公钥校验流程CORS 白名单;请求 ID 注入 |
| push-gateway | WebSocket 连接生命周期(认证 → 心跳 → 断线重连);与 msg 的 gRPC 推送通道协议;用户 session 映射(在线用户 → WebSocket 连接水平扩展方案Redis Pub/Sub 跨实例广播) |
| 设计重点 |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 路由表矩阵(路径 → 下游服务 + 端口,需覆盖全部 6 个业务服务 + 3 个 BFF限流策略表每路由 QPS熔断阈值配置错误率/延迟阈值JWT RS256 公钥校验流程shared-go/jwksCORS 白名单;请求 ID 注入;接入 shared-goenv/logger/tracer |
### ai02 — 身份认证
### ai02 — push-gatewayGo
| 服务 | 设计重点 |
| ---- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| iam | RBAC 权限点枚举(全部模块的 CRUD 权限常量);三层角色模型(系统/组织/临时权限合并规则DataScope 6 级 SQL WHERE 注入规则(每级对应的过滤条件);视口 4 层配置表设计(导航/路由/组件/数据JWT RS256 私钥签发 + 公钥暴露端点refresh_token 轮换策略;权限解析 APIgetEffectivePermissions → permissions + viewports + dataScope |
| 设计重点 |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| HTTP /internal/* + Kafka 双通道WebSocket/SSE 连接生命周期(认证 → 心跳 → 断线重连多设备会话隔离策略Redis Pub/Sub 跨实例广播X-Internal-Key 认证审计表6 字段ActionState 信封响应 |
### ai03 — 教学场景域
### ai03 — teacher-bffTS
| 服务 | 设计重点 |
| ----------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| teacher-bff | GraphQL schemaQuery/Mutation按场景域组织DataLoader 批量去重策略;并行 gRPC 调用编排;聚合结果缓存 TTL 策略5-30s 短缓存);教师角色差异化(教师 vs 教导主任 vs 教研组长 → 视口推导) |
| core-edu | classes 模块黄金模板对齐;考试生命周期状态机(草稿 → 已发布 → 作答中 → 批改中 → 已出分 → 已归档Outbox 事件定义ExamPublished、HomeworkSubmitted、GradeRecorded成绩计算公式与配置化作业提交高并发优化Redis 分布式锁 + 排队);排课/考勤数据模型 |
| 设计重点 |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| GraphQL schemaSDL-first存放 packages/shared-ts/contracts/graphql/DataLoader 批量去重策略;并行 gRPC 调用编排ActionState 信封 + 降级模式 Badmin schema 命名空间预留P6DownstreamClient 抽象depth ≤ 7 + cost ≤ 1000 |
### ai04 — 学习 + 家长场景域 BFF
### ai04 — student-bffTS
| 服务 | 设计重点 |
| ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| student-bff | 学生端 GraphQL schema(与 teacher-bff 对比差异)DataLoader 复用 teacher-bff 模式权限区分学生只能看自己的数据DataScope=SELF考试/作业/成绩的学生视角 API |
| parent-bff | 家长端 GraphQL schema与 iam 的学生-家长关联查询;多子女账户切换设计;家长通知偏好配置 |
| 设计重点 |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 学生端 GraphQL schemaDataLoader 复用 teacher-bff 模式权限区分学生只能看自己的数据DataScope=SELF考试/作业/成绩的学生视角 APIDownstreamClient 复用 |
### ai05 — 内容 + 通知
### ai05 — parent-bffTS
| 服务 | 设计重点 |
| ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| content | Neo4j 图模型(知识点 → 知识点前置依赖 → 教材关联ES 索引 mapping 设计(题库全文检索 + 标签过滤);题库 CRUD 完整 API含批量导入与 ai 服务的 gRPC 接口(查询知识点/题库用于 AI 出题);教材/章节结构树 |
| msg | 通知渠道抽象(站内信/邮件/短信策略模式ES 降级查询策略DB 不可用时走 ESKafka 消费幂等设计event_id 去重);与 push-gateway 的推送通道协议;通知模板管理;已读/未读状态管理 |
| 设计重点 |
| --------------------------------------------------------------------------------------------------------------------------------------- |
| 家长端 GraphQL schema与 iam 的学生-家长关联查询GetChildrenByParent多子女账户切换设计家长通知偏好配置DataScope=CHILDREN 过滤 |
### ai06 — Python 数据 + AI
### ai06 — iamTS
| 服务 | 设计重点 |
| -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| data-ana | ClickHouse 宽表设计(考试、作业、成绩、掌握度、出勤 5 张宽表CDC 消费者架构Debezium → Kafka → ClickHouse学情分析 API班级统计/个人趋势/预警阈值掌握度计算算法加权滑动平均Dashboard 数据聚合 |
| ai | LLM Provider 适配器模式OpenAI/百川/本地模型SSE 流式响应(题目逐字生成);出题 Prompt 模板管理;备课工作流(分析学情 → 推荐知识点 → 生成题目 → 教师审核 → 入库);用量计费/频率限制 |
| 设计重点 |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| RBAC 权限点枚举(全部模块的 CRUD 权限常量);三层角色模型(系统/组织/临时权限合并规则DataScope 6 级 SQL WHERE 注入规则;视口 4 层配置表设计JWT RS256 私钥签发 + 公钥暴露端点GetPublicKey RPCgRPC 50052 + 12 RPCiam_student_guardians 表审计日志AuditEvent + topic edu.iam.audit.createdshared-ts Outbox 接入;/readyz 5 项依赖检查 |
### ai07前端 4 端
### ai08core-eduTS
| 服务 | 设计重点 |
| -------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| teacher-portal | 现有代码审计对齐黄金标准Module Federation shell 暴露的共享组件 |
| 全部 4 端 | Module Federation shell + remote 架构设计路由骨架4 端路由表对照);共享组件库(错误边界 ErrorBoundary、Loading 骨架屏、Empty 空态、权限控制组件);`usePermission().hasPermission()` 统一权限 HookAPI 请求层统一错误处理toast 提示4 端差异化对比表(导航菜单/路由/组件/数据 4 层差异) |
| 设计重点 |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| classes 模块黄金模板对齐gRPC 50053 + 5 Service 22 RPCClassService + ExamService + HomeworkService + GradeService + AttendanceService考试生命周期状态机Outbox 事件定义ExamEvent/HomeworkEvent/GradeEvent/ClassEventTOPIC_MAP 修订edu.teaching.* 命名);成绩计算公式与配置化 |
### ai09 — contentTS
| 设计重点 |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| gRPC 50054 + 4 Service 18 RPCTextbookService + ChapterService + KnowledgeGraphService + QuestionServiceNeo4j 图模型(知识点 → 前置依赖 → 教材关联ES 索引 mapping 设计(题库全文检索 + 标签过滤OutboxKnowledgePointEvent + QuestionEventNeo4j Sync Worker + ES Sync Worker/readyzMySQL + Neo4j + Kafka |
### ai10 — msgTS
| 设计重点 |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| gRPC 50056 + 3 Service 13 RPCNotificationService + NotificationPreferenceService + NotificationTemplateService通知渠道抽象站内信/邮件/短信策略模式Kafka 消费幂等设计event_id 去重OutboxNotificationEvent与 push-gateway 的 /internal/push 通道;通知模板管理;已读/未读状态管理 |
### ai11 — data-anaPython
| 设计重点 |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| gRPC 50055 + 12 RPC含 Server Streaming SubscribeMasteryUpdateClickHouse 宽表设计(考试、作业、成绩、掌握度、出勤 5 张宽表CDC 消费者架构Debezium → Kafka → ClickHouse学情分析 API班级统计/个人趋势/预警阈值掌握度计算算法加权滑动平均Dashboard 数据聚合降级模式ClickHouse 不可用时降级MasteryEvent + AIUsageEvent豁免 Outbox |
### ai12 — aiPython
| 设计重点 |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| gRPC 50057 + 6 RPC含 StreamGenerateQuestion + StreamChatLLM Provider 适配器模式OpenAI/百川/本地模型SSE 流式响应(题目逐字生成);出题 Prompt 模板管理;备课工作流(分析学情 → 推荐知识点 → 生成题目 → 教师审核 → 入库);用量计费/频率限制AIUsageEvent豁免 Outbox接入 content + data-ana gRPC |
### ai13 — teacher-portalTS
| 设计重点 |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Module Federation Shell 配置exposes + shared无 remotesGraphQLProvider + urql client 单例AppShell 改造REST → GraphQL登录页 + Dashboard + 班级列表共享组件库packages/ui-components + packages/hooks + packages/ui-tokensfeature flag NEXT_PUBLIC_MF_ENABLEDP3+ 扩展(考试/作业/成绩/学情/推送/AI 页面) |
### ai14 — student-portalTS
| 设计重点 |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| MF Remote7 页dashboard/homework/exams/take/result/grades/my-schedule复用 teacher-portal Shell 暴露的 GraphQLProvider + AppShell + 共享组件学生端权限DataScope=SELF |
### ai15 — parent-portalTS
| 设计重点 |
| ----------------------------------------------------------------------------------------------------------------------------------------------- |
| MF RemoteDashboard + 孩子列表 + 考试/作业/成绩 + 通知偏好 UI 占位;复用 teacher-portal Shell多子女切换 UI家长端权限DataScope=CHILDREN |
### ai16 — admin-portalTS
| 设计重点 |
| --------------------------------------------------------------------------------------------------------------------------------------------------------- |
| MF Remote用户管理 + 角色权限管理 + 学校设置 + 组织管理 + 审计日志消费;复用 teacher-bff GraphQL endpointadmin 命名空间admin 权限点ADMIN_ 前缀) |
### coord — 协调 AI
| 职责 | 具体内容 |
| ---------------- | ------------------------------------------------------------------------------------------------------- |
| proto 契约维护 | 统一管理 `packages/shared-proto/`,跨 AI 的 proto 变更唯一入口 |
| 设计文档交叉审查 | 审查 7 份模块架构设计文档的跨模块接口一致性接口签名匹配、topic 不重复、端口不冲突、错误码前缀不重叠) |
| 黄金模板维护 | 维护 classes 黄金模板标准,审查其他服务对齐情况 |
| 架构文档同步 | 各 AI 产出设计文档后,同步更新 `004_architecture_impact_map.md` |
| 共享包管理 | shared-ts / shared-go / shared-py 建立与维护 |
| CI/CD | `.github/workflows/ci.yml` 覆盖全部 15 服务 |
| 基础设施 | `infra/` K8s/Grafana/WAF/灾备(可由 SRE AI 协助) |
| 职责 | 具体内容 |
| -------------- | ----------------------------------------------------------------------------- |
| proto 契约维护 | 统一管理 `packages/shared-proto/`,跨 AI 的 proto 变更唯一入口 |
| 仲裁汇总 | 审阅 `issues/objections/` 各 AI 提请的异议,在 `issues/coord.md` 写入仲裁结果 |
| 总矩阵维护 | 维护 `issues/matrix.md` 上下游对接总矩阵 + 就绪信号跟踪 |
| 共享包管理 | shared-proto / shared-ts / shared-go / shared-py / ui-tokens 建立与维护 |
| 架构文档同步 | 各 AI 产出后,同步更新 `004_architecture_impact_map.md` |
| CI/CD | `.github/workflows/ci.yml` 覆盖全部 15 服务 |
| 基础设施 | `infra/` K8s/Grafana/WAF/灾备(可由 SRE AI 协助) |
---
## 6. 阶段 1 交付物模板
## 6. 协作文档体系
每个 AI 按需阅读完 §4 对应文档后,必须产出以下确认书:
### 6.1 目录结构
```markdown
## 模块理解确认书 — [模块名]
### 1. 我在架构中的位置
- 层级Gateway / BFF / Service / Data / Frontend
- 上游:谁调用我?
- 下游:我调用谁?
- 通信方式HTTP / gRPC / Kafka / WebSocket / 直接 DB
### 2. 我的限界上下文
- 我负责哪些聚合/实体?
- 我的数据属于哪个业务领域D1-D6 中的哪个)?
- 我不负责什么(明确边界外的东西)?
### 3. 我与外部的契约
- 我消费哪些 proto message从 shared-proto
- 我暴露哪些 API 端点或 gRPC 方法或 Kafka 事件?
- 错误码前缀是什么?
### 4. 我的技术栈
- 语言 / 框架 / ORM / 存储
### 5. 我的阶段归属
- 属于 P1-P6 哪个阶段?
- 当前阶段目标是什么?
- 依赖哪些上游阶段的产出?
### 6. 我需要对齐的黄金模板项(对照 classes 服务)
- [ ] 权限装饰器 @RequirePermission(全部 Controller 方法)
- [ ] 错误码前缀统一
- [ ] logger / metrics / tracer 三支柱
- [ ] /healthz + /readyz 健康检查
- [ ] 优雅关闭SIGTERM
- [ ] 测试覆盖率 ≥ 80%
- [ ] Dockerfile 多阶段构建
- [ ] Zod 输入验证
- [ ] GlobalErrorFilter 统一兜底
```
docs/architecture/issues/
├── coord.md # coord 仲裁汇总
├── workline.md # 总工作安排15 AI 甘特图)
├── matrix.md # 上下游对接总矩阵
├── objections/ # 各模块问题/异议AI 提请coord 仲裁)
│ ├── [模块名]_issue.md # 15 个模块各一个
│ └── cross_issue.md # 跨模块问题
├── worklines/ # 各模块工作排期AI 自己写,覆盖 P2-P6 全阶段)
│ └── [模块名]_workline.md # 15 个模块各一个
└── contracts/ # 各模块对接契约(我提供什么 + 我消费什么 + mock 策略)
└── [模块名]_contract.md # 15 个模块各一个
```
---
### 6.2 三类文档职责
## 7. 阶段 2 交付物模板
| 文档类型 | 子文件夹 | 维护方 | 内容 |
| ---------------- | ------------- | ---------------------- | ---------------------------------------------- |
| issue异议 | `objections/` | 各 AI 提请coord 仲裁 | 遇到问题时追加条目coord 仲裁后更新状态 |
| workline排期 | `worklines/` | 各 AI 自己写 | 全阶段甘特图 + 详细任务 + 依赖与就绪信号 |
| contract契约 | `contracts/` | 各 AI 维护 | 我提供什么 + 我消费什么 + mock 策略 + 就绪信号 |
每个 AI 在阶段 1 确认书通过 coord 审核后,产出以下架构设计文档:
### 6.3 全并行开发工作流
```markdown
## 模块架构设计文档 — [模块名]
1. 各 AI 读取自己的 `contracts/[模块名]_contract.md` 了解上下游接口
2. 各 AI 在 `worklines/[模块名]_workline.md` 详细规划全阶段任务
3. 开发期间消费上游的 mock见 contract.md §4 mock 策略)
4. 上游就绪后在 `matrix.md` §8 更新就绪信号
5. 所有模块就绪后统一集成测试(见 `matrix.md` §9 检查清单)
### 1. 模块内部分层图
### 6.4 遇到问题
[画图Controller → Guard → Service → Repository → DB 调用链]
[标注中间件、Guard、Filter 的拦截点]
### 2. 领域模型
- 聚合根:有哪些?
- 实体/值对象:有哪些?
- 聚合间如何通信?(同服务内直接调用 / 跨服务走事件)
### 3. 数据模型
- 有哪些表?(列出 schema标注字段类型、约束
- 每张表的索引策略(主键、唯一索引、查询索引)
- 读写分离策略(哪些走主库、哪些走读模型)
### 4. API 设计
| method | path | 权限 | 请求/响应结构 | 说明 |
| ------ | ---- | ---------- | ------------- | ---- |
| POST | /xxx | XXX_CREATE | { ... } | ... |
### 5. 事件设计(如适用)
- 我发布哪些领域事件?触发时机是什么?
- 我消费哪些外部事件?消费后做什么?
- 事件 Topic 名称(遵循 `edu.<domain>.<aggregate>.<action>` 格式)
### 6. 横切关注点对齐清单
- [ ] 权限装饰器(列出所有端点及对应权限常量)
- [ ] 错误码清单(带前缀,每个错误码 → 触发条件 → HTTP 状态码)
- [ ] Logger 初始化位置与配置pino/zap/structlog
- [ ] Metrics 指标清单(指标名 / 类型 / 标签 / 描述)
- [ ] Tracer 初始化位置OTLP endpoint
- [ ] /healthz 检查逻辑
- [ ] /readyz 检查逻辑DB SELECT 1 / Redis PING / Kafka 连接)
- [ ] 优雅关闭顺序HTTP server → DB → Redis → Kafka
### 7. 与其他模块的交互点(契约清单)
| 方向 | 对方服务 | 协议 | 接口/事件 | 用途 |
| ------ | -------- | ----- | --------- | ---- |
| 调用 | xxx | gRPC | XxxMethod | ... |
| 被调用 | xxx | gRPC | YyyMethod | ... |
| 发布 | — | Kafka | topic 名 | ... |
| 消费 | — | Kafka | topic 名 | ... |
### 8. 风险与假设
- 我假设 [某服务] 提供了 [某接口],如果没提供我的 fallback 是什么?
- 我的模块有哪些技术风险?(性能瓶颈、数据一致性、外部依赖)
- 有哪些未决的设计决策需要协调 AI 仲裁?
```
各 AI 在 `objections/[模块名]_issue.md` 追加异议条目 → coord 审阅 → 在 `coord.md` 写入仲裁结果 → 各 AI 按仲裁结果执行。
---
## 8. 交叉审查规则
## 7. 交叉审查规则
coord 收到全部 7 份设计文档后,执行以下审查:
### 7.1 coord 定期审查
### 8.1 接口一致性检查
coord 收到各 AI 的 contract.md 后,执行以下审查:
```markdown
| 服务 A 说 | 服务 B 说 | 是否匹配 |
| --------------------------------------------------------- | ---------------------------------------------- | --------- |
| ai02 iam: 暴露 getUserInfo(userId) | ai03 teacher-bff: 调用 iam.getUserInfo(userId) | ✅ |
| ai03 core-edu: 调用 content.getKnowledgePoints(subjectId) | ai05 content: ??? | ⚠️ 待确认 |
```
| 检查项 | 检查方式 |
| -------------------- | --------------------------------------------------------------- |
| 端口不冲突 | 对照 [port-allocation](../../infra/port-allocation.md) 端口矩阵 |
| gRPC 端口不冲突 | 50052-50057 一一对应 |
| Topic 不重复 | 汇总全部 AI 的 Kafka 事件,去重检查(见 matrix.md §4 |
| 错误码前缀不重叠 | 汇总全部 AI 的错误码前缀,唯一性检查(见 matrix.md §6 |
| Proto message 不遗漏 | 检查全部"跨模块交互点"是否在 proto 中有对应定义 |
| 就绪信号可验证 | 检查每个 AI 的就绪信号是否可验证(见 matrix.md §8 |
### 8.2 全局冲突检查
### 7.2 AI 间契约确认
| 检查项 | 检查方式 |
| -------------------- | ---------------------------------------------------------------------- |
| 端口不冲突 | 对照 [full-stack-runbook](../standards/full-stack-runbook.md) 端口矩阵 |
| Topic 不重复 | 汇总全部 AI 的 §5 事件设计,去重检查 |
| 错误码前缀不重叠 | 汇总全部 AI 的 §6 错误码清单,前缀唯一性检查 |
| Proto message 不遗漏 | 检查全部"跨模块交互点"是否在 proto 中有对应定义 |
当 AI A 需要确认与 AI B 的接口时:
### 8.3 黄金模板对齐检查
| 检查项 | 全部 TS NestJS 服务 |
| ----------------------- | ---------------------- |
| @RequirePermission 覆盖 | 每个 Controller 方法 |
| 错误码前缀 | 用服务名大写前缀 |
| /healthz + /readyz | 存在且逻辑正确 |
| Zod 输入验证 | Controller 层解析 body |
| GlobalErrorFilter | 注册到 AppModule |
| Dockerfile 多阶段 | builder + runtime |
1. 读 AI B 的 `contracts/[B模块名]_contract.md`
2. 如有疑问,在 `objections/cross_issue.md` 追加条目
3. coord 仲裁后在 `coord.md` 写入结论
---
## 9. 协作规则
## 8. 协作规则
> **默认多 AI 协作**:所有 AI 工作默认按多 AI 合作模式进行,详见 [multi-ai-collaboration.md](../standards/multi-ai-collaboration.md)。
### 9.1 分支并行开发
### 8.1 分支并行开发
采用**分支开发**模式,人类决策者维护分支:
@@ -384,7 +375,7 @@ coord 收到全部 7 份设计文档后,执行以下审查:
- `packages/shared-proto/` 仅 coord 修改,其他 AI 只读
- `docs/``.trae/``infra/``.github/` 仅 coord 修改
### 9.2 唯一冲突文件处理
### 8.2 唯一冲突文件处理
`pnpm-lock.yaml` 是唯一可能多 AI 同时修改的文件,冲突时由**人类决策者**在合并时解决:
@@ -399,33 +390,29 @@ git add pnpm-lock.yaml
git commit
```
### 9.3 提交规范
### 8.3 提交规范
```bash
# 每个 AI 在自己的服务目录内工作(在分配的分支上)
git add services/<service>/...
git commit -m "docs(<service>): 模块架构设计文档"
# 或
git commit -m "docs(<service>): 阶段1理解确认书"
# 完成后通知人类决策者合并
git commit -m "feat(<service>): 模块架构设计文档"
```
> **不标注 AI 身份**commit message 不追加 `AI-Agent:` 等身份字段,经验沉淀不出现 AI 标识。
### 9.4 proto 变更流程
### 8.4 proto 变更流程
任何 AI 需要新增/修改 proto
1.共享协调渠道声明需求(格式:`# proto-change: <描述>`
1. `objections/cross_issue.md` 声明需求
2. coord 统一修改 `packages/shared-proto/`
3. coord 通知受影响 AI 更新设计文档
3. coord 通知受影响 AI 更新 contract.md
---
## 10. 审计模板(阶段 1 自检用)
## 9. 审计模板(自检用)
每个 AI 审计自己负责的已实现服务时,填写下表:
每个 AI 审计自己负责的服务时,填写下表:
```markdown
## 服务审计表 — [AI标识]
@@ -437,10 +424,18 @@ git commit -m "docs(<service>): 阶段1理解确认书"
---
## 11. 相关文档
## 10. 相关文档
- [多 AI 协作指南](../standards/multi-ai-collaboration.md) — 日常开发协作流程
- [004 架构影响地图](./004_architecture_impact_map.md) — 全局架构与依赖
- [总裁最终裁决](./president-final-rulings.md) — 70+ 问题逐个裁决 + 时间统筹 + 15 AI 工作清单
- [AI 工作顺序协同规划](./ai-work-orchestration.md) — 6 批次并行规划(历史参考)
- [coord 强制裁决](./coord-final-decisions.md) — 80+ 项强制裁决
- [coord 交叉审查](./coord-cross-review.md) — 交叉审查结果
- [coord 仲裁汇总](./issues/coord.md) — 新流程仲裁记录
- [总工作安排](./issues/workline.md) — 15 AI 甘特图
- [上下游对接总矩阵](./issues/matrix.md) — 服务依赖 + 接口矩阵 + mock 策略
- [项目规则](../../.trae/rules/project_rules.md) — 强制约束
- [编码规范](../standards/coding-standards.md) — 多语言编码标准
- [待开发功能路线图](./roadmap/pending-features.md) — 六阶段目标
- [端口分配](../../infra/port-allocation.md) — 端口矩阵