- 14 个 issue.md 状态字段更新为"已裁决" - 对应 coord.md ARB-001~022 章节 - 共 104 处状态字段更新 - 新增 integration-test-phase.md - 集成测试与部署验证阶段(P7)规划 - 6 个批次任务分解 - 8 条核心 E2E 链路定义 - 验收标准和退出标准 Coord-AI
161 lines
7.7 KiB
Markdown
161 lines
7.7 KiB
Markdown
# 集成测试与部署验证阶段(P7)
|
||
|
||
> 日期:2026-07-10
|
||
> 前置条件:所有模块 P2-P6 代码完成,lint/typecheck/go vet/ruff 全通过,ARB-001~022 全部已裁决
|
||
> 目标:从"代码完成"到"系统可用",验证端到端功能链路
|
||
|
||
---
|
||
|
||
## 1. 阶段概述
|
||
|
||
15 AI 全并行开发模式下,各模块独立编码,使用 mock 桩进行本地验证。本阶段目标是**将所有模块集成到真实基础设施中,验证端到端功能链路**。
|
||
|
||
### 前置状态
|
||
|
||
| 检查项 | 状态 |
|
||
| ------------------------------------ | --------------------------- |
|
||
| lint(pnpm run lint) | ✅ 全通过 |
|
||
| typecheck(pnpm run typecheck) | ✅ 16 包/服务全通过 |
|
||
| go vet(api-gateway + push-gateway) | ✅ 全通过 |
|
||
| ruff check(ai + data-ana) | ✅ 全通过 |
|
||
| proto 契约(buf lint) | ✅ 通过 |
|
||
| 仲裁(ARB-001~022) | ✅ 95 条全部已裁决 |
|
||
| packages/contracts | ✅ 已建立(ADMIN_* 权限点) |
|
||
|
||
### 当前差距
|
||
|
||
- 各模块使用 mock 桩,尚未在真实 gRPC/MySQL/Redis/Kafka 环境中验证
|
||
- 服务间 gRPC 调用链路未实际跑通
|
||
- 前端与 BFF 的 GraphQL 通信未端到端验证
|
||
- Docker Compose 全量部署未验证
|
||
- 健康检查端点(/healthz + /readyz)未在容器环境验证
|
||
|
||
---
|
||
|
||
## 2. 阶段任务分解
|
||
|
||
### 批次 0:基础设施就绪
|
||
|
||
**目标**:确保 Docker Compose 全量基础设施可启动。
|
||
|
||
| 任务 | 验证标准 |
|
||
| -------------------------------------------------------- | ----------------------------------------- |
|
||
| MySQL + Redis + Kafka + Neo4j + ClickHouse + ES 容器健康 | `docker compose up -d` 全量容器 `healthy` |
|
||
| 数据库 schema 初始化脚本 | 各服务 schema 迁移脚本可执行 |
|
||
| Kafka topic 创建脚本 | 全部 topic(ARB-013 命名)可创建 |
|
||
| Debezium CDC connector 配置 | MySQL → Kafka CDC 链路通畅 |
|
||
|
||
### 批次 1:后端服务启动
|
||
|
||
**目标**:每个后端服务能在 Docker 环境中启动并通过健康检查。
|
||
|
||
| 服务 | 端口 | 验证标准 |
|
||
| ----------------------------- | ---- | ---------------------- |
|
||
| api-gateway(Go) | 8080 | /healthz 返回 200 |
|
||
| push-gateway(Go) | 8081 | /healthz 返回 200 |
|
||
| iam(TS/gRPC 50052) | 3001 | /healthz + gRPC 可连接 |
|
||
| classes(TS) | 3002 | /healthz 返回 200 |
|
||
| core-edu(TS/gRPC 50053) | 3004 | /healthz + gRPC 可连接 |
|
||
| content(TS/gRPC 50054) | 3005 | /healthz + gRPC 可连接 |
|
||
| msg(TS/gRPC 50056) | 3006 | /healthz + gRPC 可连接 |
|
||
| data-ana(Python/gRPC 50055) | 3007 | /healthz + gRPC 可连接 |
|
||
| ai(Python/gRPC 50058) | 3008 | /healthz + gRPC 可连接 |
|
||
|
||
### 批次 2:BFF 层启动
|
||
|
||
**目标**:3 个 BFF 能启动并连接下游 gRPC 服务。
|
||
|
||
| 服务 | 端口 | 验证标准 |
|
||
| ---------------------- | ---- | -------------------------- |
|
||
| teacher-bff(GraphQL) | 3003 | /graphql Playground 可访问 |
|
||
| student-bff(GraphQL) | 3009 | /graphql Playground 可访问 |
|
||
| parent-bff(GraphQL) | 3010 | /graphql Playground 可访问 |
|
||
|
||
### 批次 3:前端启动
|
||
|
||
**目标**:4 个前端能启动并连接对应 BFF。
|
||
|
||
| 应用 | 端口 | 验证标准 |
|
||
| -------------- | ---- | ------------ |
|
||
| teacher-portal | 4000 | 登录页可访问 |
|
||
| student-portal | 4001 | 登录页可访问 |
|
||
| parent-portal | 4002 | 登录页可访问 |
|
||
| admin-portal | 4003 | 登录页可访问 |
|
||
|
||
### 批次 4:端到端功能验证
|
||
|
||
**目标**:核心业务链路端到端跑通。
|
||
|
||
| 链路 | 涉及服务 | 验证标准 |
|
||
| -------- | --------------------------------------- | ------------------------------ |
|
||
| 教师登录 | teacher-portal → api-gateway → iam | 获取 JWT → 侧边栏按角色渲染 |
|
||
| 创建考试 | teacher-portal → teacher-bff → core-edu | 考试落库 → Outbox 事件 → Kafka |
|
||
| 学生作答 | student-portal → student-bff → core-edu | 提交落库 → 事件发布 |
|
||
| 教师批改 | teacher-portal → teacher-bff → core-edu | 成绩落库 → GradeReleased 事件 |
|
||
| 学情分析 | student-portal → student-bff → data-ana | ClickHouse 宽表查询 < 5s |
|
||
| 知识图谱 | teacher-portal → teacher-bff → content | Neo4j 查询秒级返回 |
|
||
| 消息推送 | msg → push-gateway → WebSocket | 在线学生实时收到通知 |
|
||
| AI 辅助 | teacher-portal → teacher-bff → ai | 流式 SSE 正常返回 |
|
||
|
||
### 批次 5:可观测性验证
|
||
|
||
**目标**:三支柱(日志 + 指标 + 链路)在集成环境中可用。
|
||
|
||
| 检查项 | 验证标准 |
|
||
| --------------- | --------------------------------------- |
|
||
| Prometheus 抓取 | 所有服务 /metrics 端点可抓取 |
|
||
| Grafana 面板 | 核心指标面板可查看 |
|
||
| 全链路 trace | 一个请求的 trace 可在 Jaeger 追踪全链路 |
|
||
| 结构化日志 | 所有服务日志 JSON 格式输出到 stdout |
|
||
|
||
---
|
||
|
||
## 3. 执行策略
|
||
|
||
### 并行度
|
||
|
||
```
|
||
批次 0(基础设施) → 批次 1(后端) → 批次 2(BFF) → 批次 3(前端) → 批次 4(E2E) → 批次 5(可观测性)
|
||
| | | | | |
|
||
独立 9 服务并行 3 BFF 并行 4 前端并行 8 链路并行 独立
|
||
```
|
||
|
||
### 问题修复策略
|
||
|
||
- 发现的问题记录到 `docs/troubleshooting/known-issues.md` 对应模块分区
|
||
- 跨模块问题通过 `docs/architecture/issues/objections/[模块名]_issue.md` 提请仲裁
|
||
- coord 负责仲裁,开发 AI 在各自分支修复
|
||
|
||
### 风险点
|
||
|
||
| 风险 | 影响 | 缓解策略 |
|
||
| ----------------------------- | ---------------- | ---------------------------- |
|
||
| gRPC proto 生成代码版本不一致 | 服务间调用失败 | 批次 1 统一 `buf generate` |
|
||
| MySQL schema 冲突 | 数据库初始化失败 | 批次 0 逐服务验证 schema |
|
||
| Kafka topic 命名不一致 | 消费者收不到事件 | 对照 ARB-013 统一检查 |
|
||
| 端口冲突 | 服务无法启动 | 对照 port-allocation.md 检查 |
|
||
| 前端 MF 配置不匹配 | 微前端加载失败 | 批次 3 验证 MF config |
|
||
|
||
---
|
||
|
||
## 4. 验收标准
|
||
|
||
| 验收项 | 标准 |
|
||
| ----------------------- | -------------------------------------- |
|
||
| Docker Compose 全量启动 | 所有容器 `healthy` |
|
||
| 核心链路 E2E | 8 条核心链路全部跑通 |
|
||
| 健康检查 | 所有服务 /healthz + /readyz 返回 200 |
|
||
| 可观测性 | Prometheus + Grafana + Jaeger 数据可见 |
|
||
| 错误处理 | ActionState 信封格式一致 |
|
||
| 权限校验 | 未授权请求返回 401/403 |
|
||
|
||
---
|
||
|
||
## 5. 退出标准
|
||
|
||
- 全量 Docker Compose 启动成功
|
||
- 8 条核心业务链路端到端跑通
|
||
- 三支柱可观测性可用
|
||
- 无阻塞性 bug
|
||
- 打 tag `v0.6.0-integration`
|