背景:用户确认仓库只保留 main,不再创建任何远程分支或走 PR 合并。 改动: - 01-Git规范 V1.1:仅 main 直推,禁止非 main 分支推送、force push 与 Merge commit; - AGENTS V1.1:变更流程改为直接提交并推送 main; - 07-CodeReview:PR 模板改为提交说明,合并流程改为推送与推送后观察; - 03/06/工程规范 README 同步去除 PR 措辞; - CI 仅保留 push main 与 workflow_dispatch 触发。 影响面:仅流程与文档,无代码/数据/接口变更。 回滚方式:git revert 本提交即可恢复旧流程。 验证:format:check、lint、typecheck 全绿(10/10)。
This commit is contained in:
1 parent
046dad463e
commit
dd01b89214
7 files changed
+74
-81
No files matched your search
@@ -1,15 +1,17 @@
|
||||
# 07 · Code Review 与 PR 规范
|
||||
# 07 · Code Review 规范(main 直推)
|
||||
|
||||
| 项 | 内容 |
|
||||
| --- | --- |
|
||||
| 文档版本 | V1.0(2026-11-02) |
|
||||
| 文档版本 | V1.1(2026-11-02) |
|
||||
| 依据 | 技术架构 §10.1(工程约定)、§4.6(CI/CD) |
|
||||
| 适用范围 | 所有进入 `main` 的变更 |
|
||||
| 适用范围 | 所有直接推送到 `main` 的提交 |
|
||||
| 强制级别 | 强制 |
|
||||
|
||||
---
|
||||
|
||||
## 1 PR 描述模板(缺项即打回)
|
||||
## 1 提交说明模板(缺项不推送)
|
||||
|
||||
> 仓库仅保留 `main`,不再创建 PR。将下列模板写入提交说明正文(`git commit -m "type(scope): 标题" -m "背景…"`),Review 基于待推送的本地 diff 完成。
|
||||
|
||||
```markdown
|
||||
## 背景
|
||||
@@ -32,15 +34,17 @@
|
||||
- 迁移在 staging 的执行结果
|
||||
```
|
||||
|
||||
- `PR-01` 标题遵循 Conventional Commits 且**用中文**(Squash 时以 PR 标题为准,`scope` 保留英文,写法见 [01](01-Git规范.md) §2)。
|
||||
- `PR-02` 变更 ≤ 400 行(不含 lock / 生成代码);超出拆分为多个 PR 并在描述写依赖顺序。
|
||||
- `PR-03` 禁止在功能 PR 中混入无关重构、格式化、依赖升级。
|
||||
- `PR-04` Draft PR 可用于早期讨论,但**不得**在 CI 未绿时请求 Review。
|
||||
- `CR-01` 提交标题遵循 Conventional Commits 且**用中文**(`scope` 保留英文,写法见 [01](01-Git规范.md) §2)。
|
||||
- `CR-02` 单次提交变更 ≤ 400 行(不含 lock / 生成代码);超出拆为多个提交,并在说明写依赖顺序。
|
||||
- `CR-03` 禁止在功能提交中混入无关重构、格式化、依赖升级。
|
||||
- `CR-04` 本地门禁未全绿**不得**推送;高风险变更未完成走查不得推送。
|
||||
|
||||
---
|
||||
|
||||
## 2 Review 分工
|
||||
|
||||
> 无远程分支,Review 对象为待推送的本地提交(`git diff origin/main...HEAD`);高风险变更须在推送前完成双人走查。
|
||||
|
||||
| 变更类型 | 要求 |
|
||||
| --- | --- |
|
||||
| 普通业务代码 | ≥ 1 名同模块 Owner |
|
||||
@@ -51,9 +55,9 @@
|
||||
| 发布配置 / CI / 基础设施 | **2 人**(含运维) |
|
||||
| 仅文档 | 1 人(可为作者同组) |
|
||||
|
||||
- `PR-05` 作者不得自我批准;禁止「LGTM」式无内容批准。
|
||||
- `PR-06` 首轮 Review 时效 24 小时内;作者负责推动,超过 48 小时升级到模块负责人。
|
||||
- `PR-07` Review 意见分「必须改(blocking)/ 建议(non-blocking)」,作者逐条回复;未解决不得合并。
|
||||
- `CR-05` 作者不得自我批准;禁止「LGTM」式无内容批准。
|
||||
- `CR-06` 推送前 Review 时效 24 小时内;紧急变更允许推送后 24 小时内补走查,须在提交说明记录。
|
||||
- `CR-07` Review 意见分「必须改(blocking)/ 建议(non-blocking)」,作者逐条回复;blocking 未解决不得推送。
|
||||
|
||||
---
|
||||
|
||||
@@ -93,11 +97,11 @@
|
||||
|
||||
---
|
||||
|
||||
## 4 DoD(合并即完成的定义)
|
||||
## 4 DoD(推送即完成的定义)
|
||||
|
||||
同时满足才可合并:
|
||||
同时满足才可推送:
|
||||
|
||||
1. CI 全绿(含契约与集成),无豁免。
|
||||
1. 本地门禁全绿;推送后 CI 全绿(含契约与集成),无豁免。
|
||||
2. Review 通过,blocking 意见全部解决。
|
||||
3. 文档同步:PRD 规则编号、技术架构、OpenAPI、本目录细则(如涉及)。
|
||||
4. 迁移可回滚,或在描述说明为何不可回滚与前向修复方案。
|
||||
@@ -106,20 +110,18 @@
|
||||
|
||||
---
|
||||
|
||||
## 5 合并与合并后
|
||||
## 5 推送与推送后
|
||||
|
||||
- `PR-08` 统一 **Squash Merge**,提交信息用 PR 标题 + 描述要点。
|
||||
- `PR-09` 合并后删除分支;关注 CI 与错误率 15 分钟。
|
||||
- `PR-10` 合并后发现缺陷:优先前向修复;影响面大则按回滚预案执行,并补一次复盘(写 `docs/releases/` 或 issue)。
|
||||
- `PR-11` 禁止「合并后再补测试 / 再补文档」作为常态;确因紧急修复,须 24 小时内补齐并在 PR 记录追踪链接。
|
||||
- `CR-08` 推送前完成本地门禁(`format:check` / `lint` / `typecheck` / `test`);推送即进入主干,不再有 Squash 合并环节。
|
||||
- `CR-09` 直接 `git push origin main`;禁止 force push、禁止 Merge commit;推送后 15 分钟内确认 CI 与错误率。
|
||||
- `CR-10` 推送后发现缺陷:优先以新提交前向修复;影响面大时按回滚预案执行(回滚也用新提交,不回写历史),并补一次复盘(写 `docs/releases/` 或 issue)。
|
||||
- `CR-11` 禁止「先推后补测试 / 补文档」作为常态;紧急修复须 24 小时内以新提交补齐,并在提交说明记录。
|
||||
|
||||
---
|
||||
|
||||
## 6 反模式(Review 直接打回)
|
||||
## 6 反模式(走查直接打回)
|
||||
|
||||
| 反模式 | 原因 |
|
||||
| --- | --- |
|
||||
| 巨型 PR(> 800 行) | 无法有效 Review,缺陷率高 |
|
||||
| 巨型提交(> 800 行) | 无法有效 Review,缺陷率高 |
|
||||
| 「顺手」重构无关模块 | 混淆影响面,增加回滚难度 |
|
||||
| 用 `any` / `@ts-ignore` 绕过类型 | 把问题推到运行时 |
|
||||
| 在 Controller 写业务规则 | 破坏分层,无法复用与测试 |
|
||||
|
||||
Reference in new issue
Block a user