Skip to content

Issue 98 PR Center

clean edited this page Oct 8, 2026 · 1 revision

PR/MR 中心:跨仓库查看与审阅

背景与范围

原有 PR/MR 入口只服务单仓库。本次新增不依赖当前仓库的全局中心,汇总 Alune 已添加的本机与 SSH 仓库,并在中心内完成阅读、讨论与审阅。沿用现有组件、字体和深浅主题。原单仓库入口及创建流程保留,不扩展到账号下尚未添加的仓库。

本页记录原 PR/MR 能力的后续扩展;Issue #98 的历史交付与验收记录保持不变。

方案与取舍

  • 汇总 origin、upstream 等受支持远端,覆盖 GitHub、GitLab.com 与现有自建 GitLab;跨克隆和 worktree 按项目及请求编号去重。
  • 提供全部、我创建的、请求我审阅三个视图,以及关键词、项目多选、平台、账号与状态筛选。账号通过关联令牌的平台用户接口识别,未识别账号明确提示个人视图覆盖不完整。
  • 各来源独立分页并合并排序,每页最多 30 条、最多 4 个来源并发;筛选可扫描后续页面,未完成时显示「继续查找」,部分失败保留成功结果。
  • 中心全宽详情复用现有描述、Diff、讨论与审阅能力。操作账号可选,并固定远端和令牌关联版本;配置变化拒绝旧请求,写入失败不自动切换账号。
  • URL 保存筛选,缓存恢复已加载列表和滚动位置;超过 60 秒返回时刷新。来源面板支持配置和重试,设置页返回保留上下文。
  • 增加来源发现、聚合查询和详情上下文接口、回归测试及使用说明;保留单仓库入口,创建 PR/MR 继续使用仓库内流程。

页面与交互

主导航位于仓库入口下方,独立 /pull-requests 路由与中心详情路由不改变工作区选择。页头显示最近刷新时间、数据来源与刷新;列表按更新时间倒序,显示状态、草稿、项目、编号、作者、分支和浏览器入口。窄屏筛选折叠,详情使用全宽布局,Diff 独立横向滚动。

个人视图中的“我”来自已关联令牌的平台用户接口,不使用 Git 提交作者。账号以平台主机和用户名区分;请求我审阅仅指开放且直接指定该账号的请求,不承诺尚未审阅。未识别账号时提示覆盖不完整。

详情支持选择操作账号,沿用已有权限检查与确认。来源版本在读取和写操作时校验,配置变化后要求刷新,写入失败不会切换身份重试。操作更新中心与单仓库列表;不再匹配筛选的条目在返回后移除,当前详情保留。

来源面板区分可读取、已读取、待配置、不支持和错误,并提供重试与配置。分别显示没有仓库、没有受支持远端、无匹配、全部失败及部分失败;扫描未结束时不提前宣称没有匹配。

数据与接口

新增 POST /api/pull-request-center/sources、list 和 context,详情及写操作复用原仓库接口。来源包含仓库、远端、主机、规范化项目及平台账号,条目按平台、主机、项目和请求编号去重并保留多来源引用。

来源独立分页,合并排序输出最多 30 条;限制 4 个来源并发,沿用单来源 20 秒超时。关键词及个人筛选扫描后续平台页,未完成时返回扫描进度和继续游标,数量仅表示已加载。游标可重放,会话有界且在 10 分钟后失效。账号缓存随令牌版本变化失效;SSH 无法读取显示来源错误。

首次加载,返回时复用筛选、内容及滚动缓存;超过 60 秒后台刷新,手动刷新保留旧列表,首版无后台定时轮询。

验证记录

以下记录来自 2026-10-08 的本轮实现验收;托管平台 HTTP 响应由测试替身提供。

检查 / 场景 环境 结果
shared、server、web 构建 macOS 通过;Vite 保留现有的大 chunk 提示
npm test -w web macOS 280 项通过
npm test -w server -- --runInBand pull-request-center pull-requests.service pull-request-actions pull-request-details pull-request-creation access-tokens macOS 6 个套件、147 项通过
最终中心后端、前端中心与侧栏回归 macOS 后端 11 项、前端 21 项通过;分页调整后 store 4 项再次通过
node --test apps/web/tests/pull-request-center.integration.cjs apps/web/tests/pull-requests.integration.cjs 真实 Nest / SQLite / Git / 隔离 SSH,托管平台响应模拟 5 项通过
深浅主题、第二页 reviewer 筛选、全宽详情和 Diff、390px 窄屏、来源配置及设置往返 浏览器 / 隔离测试服务 通过;无渲染错误或页面横向溢出
git diff --check、commitlint、推送版本检查 macOS 通过

兼容性与风险

  • 无数据库迁移;来源和游标会话存于内存,有效期 10 分钟,过期后需刷新。首版不轮询、不发现账号下尚未添加的仓库、不展开团队 reviewer 请求。
  • 多来源读取受网络、权限与限流影响,界面分别提示未完成和失败,不把缺失来源当作无请求。
  • 本轮平台响应使用测试替身,未对真实托管平台执行评论、审阅、关闭或合并;Windows/Linux 原生桌面包未重新验收。
  • 回退代码后需单独核对 Wiki,Wiki 具有独立提交历史。

截图

新增中心的深色个人审阅视图,使用隔离测试数据;本次没有旧中心页面可作前后对照,原单仓库页面保持可用。

Alune PR/MR 中心深色列表

关联资料

Clone this wiki locally