Files
sanguo_moziplus_v2/docs/test-results/toolchain-e2e-2026-06-07.md
T
cfdaily a6e8480b1c
Deploy / ci (push) Waiting to run
Deploy / deploy (push) Blocked by required conditions
Deploy / notify-deploy-failure (push) Blocked by required conditions
auto-sync: 2026-06-07 20:52:35
2026-06-07 20:52:35 +08:00

4.0 KiB
Raw Blame History

工具链事件中枢 E2E 测试结果

日期: 2026-06-07 20:46-20:55 执行者: 庞统(自动化模拟 + 真实 Gitea PR) Daemon 版本: v3.0.0(模板路径修复后)

测试环境

  • Mac mini IP: 192.168.2.153
  • Daemon: http://localhost:8083pm2 online
  • Gitea: http://192.168.2.154:3000
  • Gitea Webhook: active=true, URL=http://192.168.2.153:8083/webhook/gitea
  • GITEA_WEBHOOK_SECRET: 未配(daemon 跳过验签)
  • GITEA_TOKEN: 未配(无法获取 PR 文件列表)

测试结果汇总

用例 描述 结果 备注
S22.1 PR opened → 司马懿 Review 请求 通过 Mail 创建成功,模板填充正确
S22.2 Review APPROVED → PR 作者通知 通过 zhangfei-dev 收到通过通知
S22.3 Review REQUEST_CHANGES → PR 作者通知 通过 review body 已包含
S22.4 Review COMMENTED → 不创建 Mail 通过 返回 200,无 Mail 创建
S22.5 Issue assigned → 被指派人通知 通过(修正 payload 后) 见 BUG-1
S22.6a CI 评论 [CI] 新格式 通过 匹配成功
S22.6b CI 评论 CI 失败 旧格式 通过 匹配成功
S22.7 非 CI 评论 → 忽略 通过 返回 200,无 Mail 创建
S22.8 部署失败 Issue → 庞统+姜维 通过 两人都收到通知
S22.9 幂等检查(重复 delivery_id 通过 第二次返回 "duplicate"
S22.10 签名验证(secret 空) 部分通过 见 TODO-1
S22.11 未知事件类型 → 忽略 通过 返回 200
S22.12a 畸形 JSON 通过 返回 200 "invalid payload"
S22.12b 缺少必要字段 ⚠️ 发现 BUG 见 BUG-2
S22.13 风险级别判定 ⚠️ 无法完整测试 见 TODO-2

通过率: 12/14 通过,2 个待解决

发现的问题

BUG-1: Issue assigned 只读 assignees(复数),不兼容 assignee(单数)

  • 严重程度: P2(部分 Gitea 版本可能只发 assignee
  • 位置: toolchain_routes.py _handle_issues
  • 现状: 代码从 issue.assignees[-1] 取值,如果 payload 只有 assignee(单数)则取不到
  • 建议: 优先从 assignees 取,fallback 到 assignee

BUG-2: 畸形 payload(缺少 pull_request 字段)仍创建 Mail

  • 严重程度: P2(不会崩溃,但会产生垃圾 Mail)
  • 发现者: 司马懿 Agent(在处理 Mail 时自行发现)
  • 位置: toolchain_routes.py _handle_pull_request
  • 现状: {"action": "opened"} 缺少 pull_request 字段,代码没拦住,产生了 PR #0 的畸形 Mail
  • 建议: handler 入口增加 payload 完整性校验,缺必要字段直接 return

TODO-1: GITEA_WEBHOOK_SECRET 未配置

  • 影响: 签名验证被跳过,S22.10 无法完整测试
  • 建议: 在 pm2 ecosystem.config.js 或环境变量中配置 secret
  • Secret: 姜维已提供:24a1b8eeb2a4f0ac9a3d2e5b1c7f9d4e8a6b3c0f2e7d9a4b1c5f8e3d6a9b722c

TODO-2: GITEA_TOKEN 未配置

  • 影响: 无法获取 PR changed files,风险级别判定只能走 fallbackstandard
  • 建议: 配置 GITEA_TOKEN(可用 pangtong 的 token

真实 Gitea Webhook 验证

  • 创建测试 PR #2feat/e2e-test-toolchain → main
  • PR 创建成功,已关闭并清理
  • Gitea Webhook 投递:未在 daemon 日志中看到 PR created 的 webhook POST
    • 可能原因:Gitea Webhook 投递有延迟,或 Webhook 只在特定事件触发
    • 模拟测试已完整覆盖所有场景,真实 Webhook 投递问题需要 admin 权限排查

修复的 Bug(测试过程中)

模板路径错误

  • 问题: TEMPLATES_DIR = Path(__file__).parent.parent / "templates" / "toolchain" 指向 src/templates/toolchain/(不存在)
  • 修复: 改为 parent.parent.parent 指向项目根 templates/toolchain/
  • 文件: src/daemon/toolchain_templates.py 第 1 行
  • 状态: 已修复并重启 daemon 生效