feat(req): 新增 /req ci 命令 + dev→review quality_gate 门禁说明

- req 技能新增 /req ci 命令规范(CI 检查与自动修复循环)
- 补充 dev→review 阶段 quality_gate 门禁说明
- req-workflow 流程概览增加 7.5 /req ci 步骤

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-31 13:19:55 +10:30
parent 187f5621c9
commit b6bd4bbfed
2 changed files with 36 additions and 2 deletions

View File

@@ -92,7 +92,8 @@ Gate 4: 完整性检查 ── 三段式完整 + 验收标准 ≥ 2 条 + PRD
5. /req review pass → 评审通过 (approved, delivery_stage=analysis)
6. /req next → 推进到 design/dev 阶段
7. /req dev → 启动开发(创建【开发】任务, delivery_stage=dev
8. /req next推进到 review 阶段
7.5 /req ci CI 质量门禁检查与自动修复PR 提交后执行)
8. /req next → 推进到 review需 quality_gate 证据)
9. /req cr → 代码评审 + 约定检查 + bug约定建议⭐ harness 自动)
10. /req next → 推进到 testing 阶段
11. /req test → 测试验收Gate 0B 约定检查 ⭐ + Gate 1-5
@@ -307,6 +308,10 @@ Deploy Gate 3: 证据完整 ── 验收任务有文档,含检查项表格 +
5. 自动创建目标阶段建议任务
6. 展示:「✅ 已创建: #XXXX {任务名}。如需撤销请说明」
**dev → review 门禁**
- `pr_created`: PR 已创建
- `quality_gate`: CI 质量门禁通过记录质量门禁未通过时提示「CI 质量门禁未通过,请先运行 `/req ci`」)
**阶段顺序**`analysis → design → dev → review → testing → [待部署池] → released`
**`/req resume [REQ-ID]`** — 会话断点恢复:`ai-proj req get --id <id>` 获取 delivery_stage + 任务状态 + 建议操作
@@ -337,6 +342,34 @@ Deploy Gate 3: 证据完整 ── 验收任务有文档,含检查项表格 +
9. 展示发现摘要AskUserQuestion 确认是否创建 bug 修复任务
10. 若有 High/Critical 发现 → `ai-proj task create` 创建关联修复任务
**`/req ci [REQ-ID]`** — CI 质量门禁检查与自动修复:
1. `check-ci-status.sh` 检查当前分支 CI 状态
- 通过 → 写入 `quality_gate` 门禁证据(`gate-callback.sh`)→ 完成
- 运行中 → `--wait` 等待最多 5 分钟
- 失败 → 进入自动修复循环
2. 自动修复循环(最多 3 轮):
a. `fetch-ci-logs.sh --failed-only` 获取失败 job 日志
b. AI 诊断根因(见错误模式目录)
c. 自动修复代码
d. 本地验证(`go vet ./...` / `npx tsc --noEmit`
e. `git commit && git push`
f. `check-ci-status.sh --trigger --wait` 等待新 CI
g. 通过 → 写入门禁证据 → 完成
h. 仍失败 → 下一轮(超过 3 轮 → AskUserQuestion 是否继续)
- 参数:`--trigger` 手动触发 CI`--wait` 等待完成,`--no-fix` 仅诊断不修复
**错误模式目录**
| 失败 Job | 错误模式 | 修复策略 |
|----------|---------|---------|
| architecture-gate | 架构 ratchet 违规 | 读取违规文件,用 service 层替代直接 database import |
| backend-lint (go vet) | `file.go:42: unreachable code` | 读取文件,修复具体问题 |
| backend-lint (gofmt) | `Files need gofmt:` | 运行 `gofmt -s -w` |
| backend-lint (go test) | `--- FAIL: TestXxx` | 读取测试和实现,修复根因 |
| frontend-lint (ESLint) | `warnings N > 4600` | 对比 main只修复新增警告 |
| frontend-lint (Prettier) | `unformatted N > 1000` | `npx prettier --write` 变更文件 |
| frontend-lint (TS) | `errors N > 60` | 对比 main只修复新增类型错误 |
**`/req test [REQ-ID]`** — 测试(前置:代码评审通过),遵循 dev-test 技能的 5-Gate 流程
**`/req deploy [--project <name>] [--env production]`** — 项目级批量部署Staging 已自动化push develop 即触发):