[任务 ] 修改MR 的Merge Box 逻辑,完成Merge前的一系列校验工作
[任务分值 ] 25 分
[背景描述 ]
当前 Mono 项目的 PR 合并流程中,前端 UI 的 Merge Box(合并按钮与相关信息展示区域)逻辑较为简单
校验逻辑分散
部分关键检查(例如 GPG 签名、提交规范检查、分支保护规则)依赖人工判断缺乏及时反馈。
用户体验不佳
当开发者点击“Merge”后才收到错误提示(例如签名无效、PR 未更新至最新目标分支),会造成额外的操作成本。
可维护性低
Merge Box UI 与校验逻辑的耦合度低,缺乏统一的检查机制,不利于后续扩展更多合并前规则。
[需求描述 ]
在前端 Merge Box 逻辑中,集成一套可扩展的合并前校验机制,确保在执行 Merge 前完成所有规则验证。
校验范围
提交签名验证(如 GPG 签名是否存在且有效)
分支保护规则(是否符合受保护分支策略,例如禁止直接合并到 main,必须先经过 squash/rebase)
提交信息规范(是否符合 Conventional Commits 或内部约定格式)
PR 更新状态(是否基于目标分支最新提交,是否需要 rebase)
冲突检测(确认 PR 分支与目标分支无冲突)
CI 检查结果(所有必须通过的流水线已通过)
代码审查状态(所需的 reviewer 审批已完成)
UI 交互要求
实时校验:在 PR 页面加载时立即执行校验,并在 Merge Box 中逐条展示结果。
动态刷新:当用户 rebase、更新分支或提交新代码后,自动重新触发校验。
分级提示:
检查中:黄色标识,提示“正在进行检查”
通过:绿色标识,提示“已通过”
阻止:红色标识,禁用 Merge 按钮并给出原因
详细信息:点击提示可展开查看具体失败原因和解决建议。
技术实现要求
在 Merge Box 模块新增 preMergeChecks 机制,支持并行执行多个检查
支持配置化加载检查项,便于后续扩展
结果通过状态对象传递给 UI,统一渲染
flowchart TD
A[PR 页面加载] --> B[调用后端合并前校验 API]
B --> C{校验结果返回}
C -->|所有检查通过| D[渲染 Merge Box: 按钮可用 + 全绿状态]
C -->|部分警告| E[渲染 Merge Box: 按钮可用 + 黄标提示]
C -->|有阻塞项| F[渲染 Merge Box: 按钮禁用 + 红色错误提示]
%% 动态刷新逻辑
G[用户操作: 更新分支 / Rebase / 新提交] --> H[重新调用校验 API]
H --> C
%% 合并按钮点击前
I[用户点击 Merge] --> J[再次触发合并前校验]
J --> K{结果是否全通过}
K -->|是| L[发送合并请求到后端]
K -->|否| M[阻止合并 + 展示错误详情]
%% UI 交互
E --> N[点击提示查看警告详情和解决建议]
F --> O[点击提示查看阻塞原因和解决建议]
Loading
[代码标准 ]
所有 PR 提交必须签署 Signed-off-by 和 使用 GPG 签名,即提交代码时(使用 git commit 命令时)至少使用 -s -S 两个参数,参考 Contributing Guide ;
所有 PR 提交必须通过 GitHub Actions 自动化测试,提交 PR 后请关注 GitHub Actions 结果;
代码注释均需要使用英文;
[PR 提交地址 ] 提交到 mega 仓库的 main 分支 `` 目录;
[开发指导 ]
认领任务参考 r2cn 开源实习计划 - 任务认领与确认;
[导师及邮箱 ] 请申请此题目的同学使用邮件联系导师,或加入到 R2CN Discord 后在 #p-meta 频道和导师交流。
Quanyi Ma genedna@gmail.com
Tianxing Ye yetianxing2014@gmail.com
[备注 ]
认领实习任务的同学,必须完成测试任务和注册流程,请参考: r2cn 开源实习计划 - 测试任务 和 r2cn 开源实习计划 - 学生注册与审核
[任务] 修改MR 的Merge Box 逻辑,完成Merge前的一系列校验工作
[任务分值] 25 分
[背景描述]
当前 Mono 项目的 PR 合并流程中,前端 UI 的 Merge Box(合并按钮与相关信息展示区域)逻辑较为简单
校验逻辑分散
部分关键检查(例如 GPG 签名、提交规范检查、分支保护规则)依赖人工判断缺乏及时反馈。
用户体验不佳
当开发者点击“Merge”后才收到错误提示(例如签名无效、PR 未更新至最新目标分支),会造成额外的操作成本。
可维护性低
Merge Box UI 与校验逻辑的耦合度低,缺乏统一的检查机制,不利于后续扩展更多合并前规则。
[需求描述]
在前端 Merge Box 逻辑中,集成一套可扩展的合并前校验机制,确保在执行 Merge 前完成所有规则验证。
flowchart TD A[PR 页面加载] --> B[调用后端合并前校验 API] B --> C{校验结果返回} C -->|所有检查通过| D[渲染 Merge Box: 按钮可用 + 全绿状态] C -->|部分警告| E[渲染 Merge Box: 按钮可用 + 黄标提示] C -->|有阻塞项| F[渲染 Merge Box: 按钮禁用 + 红色错误提示] %% 动态刷新逻辑 G[用户操作: 更新分支 / Rebase / 新提交] --> H[重新调用校验 API] H --> C %% 合并按钮点击前 I[用户点击 Merge] --> J[再次触发合并前校验] J --> K{结果是否全通过} K -->|是| L[发送合并请求到后端] K -->|否| M[阻止合并 + 展示错误详情] %% UI 交互 E --> N[点击提示查看警告详情和解决建议] F --> O[点击提示查看阻塞原因和解决建议][代码标准]
Signed-off-by和 使用GPG签名,即提交代码时(使用git commit命令时)至少使用-s -S两个参数,参考 Contributing Guide;GitHub Actions自动化测试,提交 PR 后请关注GitHub Actions结果;[PR 提交地址] 提交到 mega 仓库的
main分支 `` 目录;[开发指导]
[导师及邮箱] 请申请此题目的同学使用邮件联系导师,或加入到 R2CN Discord 后在
#p-meta频道和导师交流。[备注]