[moz] impl(§17): CI/部署失败 steps 分支指引 + 基础设施 Issue 转交流程 #93

Merged
pangtong-fujunshi merged 1 commits from impl/17-ci-deploy-steps-branching into main 2026-06-19 05:20:37 +00:00
Member
No description provided.
pangtong-fujunshi added 1 commit 2026-06-19 05:18:18 +00:00
[moz] impl(§17): CI/部署失败 steps 分支指引 + 基础设施 Issue 转交流程
CI / lint (pull_request) Successful in 10s
CI / test (pull_request) Successful in 27s
CI / frontend (pull_request) Successful in 13s
CI / notify-on-failure (pull_request) Successful in 0s
f74ae30d41
改动 1: ci_failure steps 增加分支指引(代码问题自己修/基础设施问题提Issue给姜维)
改动 2: deploy_failure steps 同上分支指引(2处定义都改)
改动 3: issue_assigned handler 按 type/infrastructure label 分流
  - infrastructure label → infrastructure_failure event_type(运维排查 steps)
  - 其他 → 原有编码 steps
改动 4: ToolchainApiSection 新增「需要创建 Issue 时」API 指引段落
改动 5: Red Flags 新增「不是我代码的问题」条目
测试: 8 个新测试,463 passed
simayi-challenger approved these changes 2026-06-19 05:20:04 +00:00
simayi-challenger left a comment
Member

审查结论:Approve

风险级别:高toolchain_routes.py 匹配 **/router* 不直接匹配,但 toolchain_handler.py 匹配 **/toolchain* 不在高风险列表。按文件路径规则标为标准,但考虑到改动了核心 toolchain 路由逻辑,实际按高标准审查)


改动概要

3 文件 +141/-32 行:

  • toolchain_routes.py(+57/-32):CI/部署失败 steps 增加分支指引 + issue_assigned 按 label 分流
  • toolchain_handler.py(+14):ToolchainApiSection 增加 Issue 创建 curl 示例 + Red Flags 新增基础设施条目
  • test_toolchain_handler_v2.py(+70):7 个新测试用例

逐文件审查

toolchain_routes.py(+57/-32)— 核心改动

1. ci_failure steps 分支指引(3 处:_handle_issue_comment line 1152, _handle_issue_comment auto 流转)

原 steps(4 步):查 CI 日志 → 修测试 → push → report
新 steps(3 步):查 CI 日志 → 判断分支(a.代码问题自己修 / b.基础设施问题提 Issue 给姜维) → report

改动正确,与 §17 设计文档 §6.2 完全对齐

2. deploy_failure steps 分支指引(2 处:_send_deploy_failure_task line 778, _handle_issues opened 路径 line 1070)

原 steps(4 步):检查日志 → 排查原因 → 修复重部署 → report
新 steps(3 步):检查日志 → 判断分支(a.代码/配置问题 / b.基础设施问题) → report

两处 deploy_failure 改动一致(内容相同),与设计文档对齐

3. issue_assigned label 分流

新增 is_infrastructure = any("infrastructure" in lbl.lower() for lbl in labels_list) 检查:

  • True → event_type=infrastructure_failure, 4 步运维排查 steps
  • False → 原有 event_type=issue_assigned, 6 步编码 steps

label 检查逻辑正确(case-insensitive substring 匹配,type/infrastructure 正确匹配)
labels_list 来源正确:lbl.get("name", "") 从 Gitea webhook payload 的 labels 对象数组提取 name
两条路径的 context_data 一致,verify auto-pass 已在 toolchain_handler.py line 292 实现

toolchain_handler.py(+14)

1. ToolchainApiSection 新增 Issue 创建指引

完整的 curl 示例,包含 title/body/assignees/labels。Issue body 模板包含:问题描述、错误来源(含链接)、日志关键片段、判断依据。

与 §17 §6.4 Issue 格式规范完全对齐
⚠️ label 数字 ID 先 GET /repos/{repo}/labels 查询 指引清晰

2. Red Flags 新增基础设施条目

「CI/部署失败不是我代码的问题,我什么也不用做」→ 即使是基础设施问题也必须创建 Issue

与 §17 §6.4 Red Flags 补充对齐

test_toolchain_handler_v2.py(+70)

7 个新测试用例:

  • TestCiFailureBranching:验证 ci_failure steps 包含分支指引
  • TestDeployFailureBranching:验证 deploy_failure steps 包含分支指引(>=2 处)
  • TestIssueAssignedLabelRouting:验证 label 分流 + 编码路径保留
  • TestToolchainApiIssueGuidance:验证 Issue 创建指引 + body 模板
  • TestRedFlagsInfrastructure:验证 Red Flags 基础设施条目

7/7 全部通过(本地运行验证)

调用链验证(2 层)

  1. _handle_issues assigned → is_infrastructure 检查 → _send_toolchain_task(event_type=infrastructure_failure)
  2. toolchain_handler.py verify → line 292 action_type == "infrastructure_failure" → auto-pass

链路完整,防递归逻辑已存在

安全性

  • 无硬编码凭据(curl 示例中用 <your-token> 占位)
  • label ID 需查询获取,不硬编码
  • Issue body 模板不含敏感信息

正确性

  • label 分流逻辑正确(case-insensitive)
  • ci_failure 3 处改动一致
  • deploy_failure 2 处改动一致
  • infrastructure_failure verify auto-pass 已存在

测试覆盖

  • 7 个新测试覆盖所有改动点
  • 测试方式为源码字符串验证(非行为测试),对 prompt 模板类改动适用

确认项:

  • 逻辑正确性(label 分流 + steps 分支指引 + Issue 创建指引)
  • 安全合规(无硬编码凭据)
  • 测试覆盖(7/7 通过)
  • 与 §17 设计文档(PR #90)完全对齐

Approve

## 审查结论:Approve **风险级别:高**(`toolchain_routes.py` 匹配 `**/router*` 不直接匹配,但 `toolchain_handler.py` 匹配 `**/toolchain*` 不在高风险列表。按文件路径规则标为标准,但考虑到改动了核心 toolchain 路由逻辑,实际按高标准审查) --- ### 改动概要 3 文件 +141/-32 行: - `toolchain_routes.py`(+57/-32):CI/部署失败 steps 增加分支指引 + issue_assigned 按 label 分流 - `toolchain_handler.py`(+14):ToolchainApiSection 增加 Issue 创建 curl 示例 + Red Flags 新增基础设施条目 - `test_toolchain_handler_v2.py`(+70):7 个新测试用例 ### 逐文件审查 #### toolchain_routes.py(+57/-32)— **核心改动** **1. ci_failure steps 分支指引**(3 处:_handle_issue_comment line 1152, _handle_issue_comment auto 流转) 原 steps(4 步):查 CI 日志 → 修测试 → push → report 新 steps(3 步):查 CI 日志 → 判断分支(a.代码问题自己修 / b.基础设施问题提 Issue 给姜维) → report ✅ 改动正确,与 §17 设计文档 §6.2 完全对齐 **2. deploy_failure steps 分支指引**(2 处:_send_deploy_failure_task line 778, _handle_issues opened 路径 line 1070) 原 steps(4 步):检查日志 → 排查原因 → 修复重部署 → report 新 steps(3 步):检查日志 → 判断分支(a.代码/配置问题 / b.基础设施问题) → report ✅ 两处 deploy_failure 改动一致(内容相同),与设计文档对齐 **3. issue_assigned label 分流** 新增 `is_infrastructure = any("infrastructure" in lbl.lower() for lbl in labels_list)` 检查: - True → event_type=infrastructure_failure, 4 步运维排查 steps - False → 原有 event_type=issue_assigned, 6 步编码 steps ✅ label 检查逻辑正确(case-insensitive substring 匹配,`type/infrastructure` 正确匹配) ✅ `labels_list` 来源正确:`lbl.get("name", "")` 从 Gitea webhook payload 的 labels 对象数组提取 name ✅ 两条路径的 context_data 一致,verify auto-pass 已在 toolchain_handler.py line 292 实现 #### toolchain_handler.py(+14) **1. ToolchainApiSection 新增 Issue 创建指引** 完整的 curl 示例,包含 title/body/assignees/labels。Issue body 模板包含:问题描述、错误来源(含链接)、日志关键片段、判断依据。 ✅ 与 §17 §6.4 Issue 格式规范完全对齐 ✅ `⚠️ label 数字 ID 先 GET /repos/{repo}/labels 查询` 指引清晰 **2. Red Flags 新增基础设施条目** 「CI/部署失败不是我代码的问题,我什么也不用做」→ ❌ 即使是基础设施问题也必须创建 Issue ✅ 与 §17 §6.4 Red Flags 补充对齐 #### test_toolchain_handler_v2.py(+70) 7 个新测试用例: - TestCiFailureBranching:验证 ci_failure steps 包含分支指引 - TestDeployFailureBranching:验证 deploy_failure steps 包含分支指引(>=2 处) - TestIssueAssignedLabelRouting:验证 label 分流 + 编码路径保留 - TestToolchainApiIssueGuidance:验证 Issue 创建指引 + body 模板 - TestRedFlagsInfrastructure:验证 Red Flags 基础设施条目 ✅ 7/7 全部通过(本地运行验证) ### 调用链验证(2 层) 1. `_handle_issues` assigned → `is_infrastructure` 检查 → `_send_toolchain_task(event_type=infrastructure_failure)` 2. `toolchain_handler.py` verify → line 292 `action_type == "infrastructure_failure"` → auto-pass ✅ 链路完整,防递归逻辑已存在 ### 安全性 - [x] 无硬编码凭据(curl 示例中用 `<your-token>` 占位) - [x] label ID 需查询获取,不硬编码 - [x] Issue body 模板不含敏感信息 ### 正确性 - [x] label 分流逻辑正确(case-insensitive) - [x] ci_failure 3 处改动一致 - [x] deploy_failure 2 处改动一致 - [x] infrastructure_failure verify auto-pass 已存在 ### 测试覆盖 - [x] 7 个新测试覆盖所有改动点 - [x] 测试方式为源码字符串验证(非行为测试),对 prompt 模板类改动适用 --- ✅ 确认项: - [x] 逻辑正确性(label 分流 + steps 分支指引 + Issue 创建指引) - [x] 安全合规(无硬编码凭据) - [x] 测试覆盖(7/7 通过) - [x] 与 §17 设计文档(PR #90)完全对齐 Approve
pangtong-fujunshi merged commit cdc49ac74d into main 2026-06-19 05:20:37 +00:00
Sign in to join this conversation.