chore(repo): 移植 PR-First 提交流程门禁(脚本 + Gitea PR 模板)

对齐 novavis AGENTS.md §27,逐项按本仓实测改写,不照抄不存在的命令:
- scripts/check-pr-checklist.sh:三种模式(模板结构 / 单 PR 文件 / --pr-dir 扫描)
  与退出码 0/1/2 保持同源;模板根改为按脚本自身位置解析并保留 AGENT_PROJECT_DIR
  覆写;修上游 --pr-dir 的参数解析缺陷(for arg in "$@" 内 shift 不消费值,
  目录会被再当成 PR 文件),改 while+shift
- .gitea/PULL_REQUEST_TEMPLATE.md:30 项 checklist 全部换成本仓真实门禁命令
  (type-check / lint / test:unit / test:coverage 阈值 / Playwright / visual /
  check:contrast / check:headings / lighthouse / test:security:headers),并补
  CMS 字段-需重跑 seed 声明、:3000 旧预览不作数、暗黑 token、动效 180–280ms、
  品牌红触达、数字 basis 口径等本仓专有约束
- 文档同源:docs/development/quality-gates.md 新增「提交与 PR 流程」权威副本
  (AGENTS.md 被 .gitignore 排除,不可依赖)、CLAUDE.md 补 Submission Flow 节

门禁自检:脚本 bash -n 通过;11 个用例覆盖三模式 + 缺节/缺文件/子项不足/非 PR
文件/未知选項/--quiet 等负路径,均带正控制以防「匹配零的假绿」。
This commit is contained in:
2026-09-20 11:50:58 +08:00
parent 4dcc15ebd0
commit 03ed066c6c
4 changed files with 251 additions and 0 deletions
+17
View File
@@ -96,6 +96,23 @@ Closes #123
**通过标准**: 无类型错误
## 提交与 PR 流程(PR-First
`dev` / `main` 只接收来自功能分支的 PR,执行顺序固定:**同步 dev → rebase → push → PR 门禁 → rebase 合并**。
```bash
git fetch origin dev && git rebase origin/dev # 必须以 origin/dev 为准,本地 dev 可能已陈旧
git push -u origin <feature-branch> # rebase 改写哈希后仅用 --force-with-lease,禁裸 --force
bash scripts/check-pr-checklist.sh <PR描述文件> # 未通过不得创建 PR
```
- PR 模板:`.gitea/PULL_REQUEST_TEMPLATE.md`(三节:全链路检查 / 测试分层检查 / 质量门禁)。
- 门禁校验:模板三节完整 + checklist 子项 ≥ 20 + 描述文件所有子项已勾选;不适用项**仍须勾选**并注明 `N/A:理由`
- 功能分支合并方式统一选 Gitea 的 **Rebase**(保持线性历史),不选 Create merge commit。
- 破坏性/共享状态动作(seed 重跑、DB 写入、force push、合并、删分支、部署)须单独取得授权,不夹带在常规变更里。
> 注:`AGENTS.md` 被 `.gitignore` 排除(由 `next dev` 再生),本节是该流程在版本库中的权威副本。
## 如何绕过质量门禁
⚠️ **警告**: 仅在紧急情况下绕过质量门禁