From a0f2cab11b694c1d7d9af283ec3f8b76446aaf6e Mon Sep 17 00:00:00 2001 From: cfdaily Date: Sun, 7 Jun 2026 20:21:43 +0800 Subject: [PATCH] auto-sync: 2026-06-07 20:21:43 --- docs/test-plan-e2e-v27.md | 39 ++++++++++++++++++++++++++++++++++++--- 1 file changed, 36 insertions(+), 3 deletions(-) diff --git a/docs/test-plan-e2e-v27.md b/docs/test-plan-e2e-v27.md index a980f40..9e9f64b 100644 --- a/docs/test-plan-e2e-v27.md +++ b/docs/test-plan-e2e-v27.md @@ -107,6 +107,7 @@ | `src/api/mail_routes.py` | integration/test_api_mail | `pytest -m mail` | | `src/api/blackboard_routes.py` | integration/test_api_tasks + reviews | `pytest tests/integration/ -k task` | | `src/daemon/review.py` | unit/test_rebuttal + integration | `pytest -m review` | +| `src/api/toolchain_routes.py` | unit/test_toolchain + integration | `pytest tests/unit/test_toolchain.py tests/integration/ -k toolchain` | **快速验证**:`pytest -m "not e2e"`(~2-5 分钟,不含 E2E) @@ -324,7 +325,34 @@ E2E 测试能安全运行的前提: - S21.1 HTML 不缓存 - S21.2 JS/CSS immutable 缓存(原 2 个测试合并) -**场景测试合计:58 个测试** +#### S22: 工具链事件中枢(12 个测试)| 对应 design: #13 工具链与开发流程 §16 + +- S22.1 PR opened → 司马懿收到 Review 请求 Mail + - 验证:Webhook 返回 200,Mail 创建成功,收件人 simayi-challenger,模板填充正确(PR号、标题、作者、分支) +- S22.2 Review APPROVED → PR 作者收到通过通知 + - 验证:Mail 收件人正确(PR 作者),模板填充 review result +- S22.3 Review REQUEST_CHANGES → PR 作者收到不通过通知 + - 验证:Mail 包含 review body,收件人正确 +- S22.4 Review COMMENTED → 不创建 Mail(忽略普通评论) + - 验证:返回 200 但无 Mail 创建 +- S22.5 Issue assigned → 被指派人收到任务通知 + - 验证:Mail 收件人正确(被指派人),模板含 Issue 标题/编号信息 +- S22.6 CI 失败评论(`[CI]` 前缀)→ PR 作者收到 CI 失败通知 + - 验证:匹配 [CI] 前缀,Mail 含错误摘要,收件人为 PR 作者 +- S22.7 非 CI 评论 → 忽略不处理 + - 验证:不匹配 [CI] 前缀的评论不创建 Mail,返回 200 +- S22.8 部署失败 Issue(标题含"部署失败")→ 庞统+姜维收到通知 + - 验证:两个收件人都收到 Mail(pangtong-fujunshi、jiangwei-infra),模板含 Issue 信息 +- S22.9 幂等检查:同一 delivery_id 重复投递 → 忽略 + - 验证:第二次返回 duplicate/ignored,不重复创建 Mail +- S22.10 签名验证:错误签名 → 403 + - 验证:配置 secret 后,signature 不匹配返回 403;secret 为空时跳过验签 +- S22.11 未知事件类型 → 忽略返回 200 + - 验证:未知 event 不报错,返回 200,不创建 Mail +- S22.12 风险级别自动判定:改动含高风险文件 → high + - 验证:changed_files 包含 spawner/dispatcher/router 等高风险路径时 risk_level=high;普通文件为 normal + +**场景测试合计:70 个测试** ### 4.2 压力测试(ST1-ST3) @@ -383,6 +411,7 @@ tests/ │ ├── test_cli.py # CLI 命令 │ ├── test_skill_system.py # Skill 匹配/推荐 │ └── test_guardrails.py # Guardrail 规则(待创建,当前逻辑在 test_router.py + test_review_integration.py) +│ ├── test_toolchain.py # 工具链事件中枢:模板引擎 + 幂等检查 + 风险判定(#13 §16) ├── integration/ # 集成测试(不 spawn 真实 Agent) │ ├── test_api.py # 项目管理 + Daemon API │ ├── test_api_mail.py # 邮件 API(A1-A10 防御 + 功能) @@ -391,11 +420,12 @@ tests/ │ ├── test_review_integration.py # Review pipeline + scoring │ ├── test_ticker_integration.py # Ticker 主循环 + 广播 + 超时 + 依赖推进 │ ├── test_sse.py # SSE broker + hook manager +│ ├── test_toolchain_integration.py # 工具链 Webhook API 端点 + Mail 创建 │ └── test_v27_subtasks.py # 子任务集成 └── e2e/ # E2E 测试(spawn 真实 Agent) ├── conftest.py # E2E fixture:清理 API + atexit 兜底 + manifest ├── test_four_phase.py # #01 四相循环 - ├── test_e2e_scenarios.py # S1-S21 场景测试(串行) + ├── test_e2e_scenarios.py # S1-S22 场景测试(串行) ├── test_e2e_stress.py # ST1-ST3 压力测试(并行) └── test_spawner_e2e.py # Spawner 进程管理(timeout kill + spawn failure) ``` @@ -460,6 +490,7 @@ def pytest_configure(config): | **#04 黑板协作** | @mention、comment、产出、review | P1 | P0 | P1 | | **#10 T3 需求探索** | 苏格拉底式对话、需求规格化 | P1(暂无测试文件) | — | — | | **#12 Pipeline** | task_type 路由、状态机约束 | P2 | P2 | — | +| **#13 工具链与开发流程 §16** | Webhook 接收、事件路由、模板填充、Mail 创建、幂等检查、签名验证 | P0 | P0 | P1(S22) | ### 6.2 模块 → 测试层级 → 优先级 @@ -484,6 +515,7 @@ def pytest_configure(config): | SSE 推送 | P1 | P0 | — | architecture-v3.0 §15 | | Bootstrap 上下文 | P1 | P1 | — | architecture-v3.0 §10 | | PM2 恢复 | P1 | — | P0 | #06 | +| 工具链事件中枢 | P0 | P0 | P1 | #13 §16 | --- @@ -549,7 +581,7 @@ atexit.register(_emergency_cleanup) | 类别 | 标准 | |------|------| -| **场景测试(S1-S21)** | 58 个全部通过。失败必须分析根因并修复后才继续 | +| **场景测试(S1-S22)** | 70 个全部通过。失败必须分析根因并修复后才继续 | | **压力测试(ST1-ST3)** | 3 个全部通过。验证并发控制无死锁 | | **P0 必须全部通过** | S1-S8 + S10 + S11-S14 | | **P1 通过率 ≥ 80%** | S9 + S15-S21 + ST1-ST3(依赖真实 Agent,可能受网络/环境干扰) | @@ -646,6 +678,7 @@ atexit.register(_emergency_cleanup) | 2026-06-01 | v2.8 | 新增 E11-E15(庞统) | | 2026-06-05 | v3.0 | 全面重写:三层分离 + 主公四原则 + 背靠背 review 修正 + E14 编号冲突修复 + 场景/压力分离 + 串行执行策略(庞统综合,基于仲达 v30 草案) | | 2026-06-05 | v3.0.1 | 仲达 review 修订:修正幽灵文件 4 处 + 补 E15a/b 迁移映射 + 清理 API 状态改已实现 + S9.3 设计文档标注 + ST 验收标准细化 + #10 暂无文件标注 + S21 合并说明 | +| 2026-06-07 | v3.0.2 | 新增 S22 工具链事件中枢 E2E 测试设计(12 个测试),覆盖 #13 §16 事件处理矩阵 | ### v3.0 vs v2.8 关键变化