feat(req): 部署门禁制度 — PDV 验收任务 + Deploy Gate 1-3
在 /req deploy 流程中增加部署后 E2E 验收(Post-Deploy Verification)门禁: - 新增 verification linkRole 和【验收】任务命名规范 - Deploy Gate 1 健康检查 / Gate 2 PDV 任务完成 / Gate 3 证据完整 - PDV Playwright spec 模板(页面可达、菜单可见、API 连通) - 同步更新 req-workflow、dev-test、e2e-testing 相关文档 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -108,9 +108,23 @@ Gate 4: 完整性检查 ── 三段式完整 + 验收标准 ≥ 2 条 + PRD
|
||||
|------|--------|------|
|
||||
| PRD | 01-PRD.md | `req-prd` |
|
||||
| 测试 | 02-测试报告.md | 自动生成 |
|
||||
| 发布 | 03-发布记录.md | 自动生成 |
|
||||
| 发布 | 03-发布记录.md | 自动生成(含 PDV 验收章节) |
|
||||
| 归档 | 04-生命周期总结.md | 自动生成 |
|
||||
|
||||
**03-发布记录.md 中 PDV 章节模板**:
|
||||
|
||||
```markdown
|
||||
### 部署后验收 (PDV)
|
||||
| 检查项 | 结果 | 截图 |
|
||||
|--------|------|------|
|
||||
| 页面可达: /path/to/page | ✅ PASS | [截图] |
|
||||
| 菜单可见: {菜单名} | ✅ PASS | [截图] |
|
||||
| 基础渲染: 无白屏/JS 报错 | ✅ PASS | [截图] |
|
||||
| API: /api/v1/{路径} | ✅ PASS | — |
|
||||
|
||||
PDV 结论: ✅ 全部通过 / ❌ {N}项失败,阻断推进
|
||||
```
|
||||
|
||||
## 任务命名规范
|
||||
|
||||
| linkRole | 前缀 | 示例 |
|
||||
@@ -121,6 +135,7 @@ Gate 4: 完整性检查 ── 三段式完整 + 验收标准 ≥ 2 条 + PRD
|
||||
| code_review | 【代码评审】 | 【代码评审】CR: 代码审查 |
|
||||
| test | 【测试】 | 【测试】集成测试验证 |
|
||||
| deploy | 【部署】 | 【部署】部署到 staging |
|
||||
| verification | 【验收】 | 【验收】PDV: OKR 功能部署验收 |
|
||||
| documentation | 【文档】 | 【文档】API 文档更新 |
|
||||
|
||||
## 阶段内容门禁(防空转)
|
||||
@@ -135,6 +150,24 @@ Gate 4: 完整性检查 ── 三段式完整 + 验收标准 ≥ 2 条 + PRD
|
||||
|
||||
未通过 → AskUserQuestion(补充文档 or 强制跳过+记录原因)
|
||||
|
||||
### 部署门禁(推进到 released 前)
|
||||
|
||||
`/req deploy` 推进 `released` 前,必须通过 3 道门禁:
|
||||
|
||||
```
|
||||
Deploy Gate 1: 健康检查 ── /health 返回 200,服务存活
|
||||
Deploy Gate 2: PDV 验收 ── linkRole=verification 的【验收】任务存在且 completed
|
||||
Deploy Gate 3: 证据完整 ── 验收任务有文档,含检查项表格 + E2E 截图 + 通过/失败结论
|
||||
```
|
||||
|
||||
**PDV 验收任务生命周期**:
|
||||
1. `/req deploy` 步骤 6 自动创建:`ai-proj task create --title "【验收】PDV: {需求标题}"`
|
||||
2. 关联需求:`ai-proj req link --id <req_id> --task-ids <task_id> --link-role verification`
|
||||
3. 执行 Playwright PDV 冒烟测试
|
||||
4. 附加验收文档(检查项表格 + 截图证据 + 结论):`ai-proj task append-doc --id <task_id>`
|
||||
5. **全部通过** → `ai-proj task complete --id <task_id>` → 门禁放行
|
||||
6. **任一失败** → 任务保持 in_progress,阻断推进,报告失败项
|
||||
|
||||
### CR 五视角扫描法
|
||||
|
||||
**核心原则**:实现阶段关注"怎么让它跑通",评审阶段关注"怎么让它出错"。AI 必须**切换到对抗性思维**,逐一用以下 5 个视角扫描代码。
|
||||
@@ -309,16 +342,26 @@ Gate 4: 完整性检查 ── 三段式完整 + 验收标准 ≥ 2 条 + PRD
|
||||
**`/req deploy [--project <name>] [--env production]`** — 项目级批量部署(Staging 已自动化,push develop 即触发):
|
||||
1. 收集待部署需求(delivery_stage=testing + 全 test 任务 completed)
|
||||
2. AskUserQuestion 确认范围
|
||||
3. `ai-proj task create` 创建部署批次任务
|
||||
3. `ai-proj task create` 创建【部署】批次任务(linkRole=deploy)
|
||||
4. 部署前检查(变更检测、数据库迁移)
|
||||
5. 执行 `./scripts/build-and-push.sh prod --detect --deploy --wait --verify`
|
||||
6. 部署后验证(截图 + 定向验证)
|
||||
7. `ai-proj task append-doc` 记录部署文档 + 写入需求历史
|
||||
8. `ai-proj req advance --id <id> --to released` 批量推进
|
||||
6. **Deploy Gate 1: 健康检查** — `/health` 返回 200
|
||||
7. **Deploy Gate 2+3: PDV 验收**(为每个需求创建独立验收任务):
|
||||
a. `ai-proj task create --title "【验收】PDV: {需求标题}"` 创建验收任务
|
||||
b. `ai-proj req link --id <req_id> --task-ids <task_id> --link-role verification` 关联需求
|
||||
c. 从需求关联任务中提取前端变更范围(页面路由、菜单项、关键 API)
|
||||
d. 生成验收检查清单(页面可达 + 菜单可见 + 基础渲染 + API 连通)
|
||||
e. 用 Playwright 对部署环境执行冒烟测试:`E2E_BASE_URL=<部署环境URL> npx playwright test e2e/pdv/ --project=chromium`
|
||||
f. 收集截图证据
|
||||
g. `ai-proj task append-doc --id <task_id>` 附加验收文档(检查项表格 + 截图 + 结论)
|
||||
h. **全部通过** → `ai-proj task complete --id <task_id>` → Gate 2+3 放行
|
||||
i. **任一失败** → 任务保持 in_progress,**阻断推进**,报告失败项
|
||||
8. `ai-proj task append-doc` 记录【部署】任务文档(构建日志 + 健康检查 + PDV 结果摘要)
|
||||
9. `ai-proj req advance --id <id> --to released` 批量推进(仅 Gate 1-3 全部通过的需求)
|
||||
|
||||
**`/req done [REQ-ID]`** — 类型化归档门禁 + git commit + push + `ai-proj req archive --id <id>`:
|
||||
- **推断类型**:有 implementation → code;无 implementation 有 prd/test → skill;仅 deploy → ops
|
||||
- **code 检查**:delivery_stage=released + deploy 任务完成 + 部署文档 + 所有任务完成
|
||||
- **code 检查**:delivery_stage=released + deploy 任务完成 + verification 任务完成(PDV 通过) + 部署文档 + 所有任务完成
|
||||
- **skill 检查**:delivery_stage≥testing + 所有任务完成
|
||||
- **ops 检查**:deploy 任务完成 + 所有任务完成
|
||||
|
||||
@@ -347,6 +390,7 @@ ai-proj task append-doc --id 5214 --content "# PRD: 用户认证功能\n..."
|
||||
| review | 【约定】{约定名称}(bug 类需求,convention flow 自动创建) | documentation |
|
||||
| testing | 【测试】集成测试: {需求标题} | test |
|
||||
| deploy | 由 `/req deploy` 批量创建 | deploy |
|
||||
| released | 【验收】PDV: {需求标题}(`/req deploy` 自动创建) | verification |
|
||||
|
||||
## 测试环境流程
|
||||
|
||||
@@ -365,7 +409,8 @@ ai-proj task append-doc --id 5214 --content "# PRD: 用户认证功能\n..."
|
||||
| implementation | 【开发】 | dev | 50% |
|
||||
| code_review | 【代码评审】 | review | 5% |
|
||||
| test | 【测试】 | testing | 15% |
|
||||
| deploy | 【部署】 | staging/released | 10% |
|
||||
| deploy | 【部署】 | staging/released | 5% |
|
||||
| verification | 【验收】 | released | 5% |
|
||||
| documentation | 【文档】 | any | 5% |
|
||||
|
||||
## 标准任务结构
|
||||
@@ -378,7 +423,9 @@ ai-proj task append-doc --id 5214 --content "# PRD: 用户认证功能\n..."
|
||||
├── 🔍 review → 【代码评审】CR: {需求标题} (linkRole: code_review)
|
||||
├── 🧪 testing → 【测试】集成测试: {需求标题} (linkRole: test)
|
||||
├── 🚀 staging → 【部署】部署到 staging (linkRole: deploy)
|
||||
└── 🏁 released → 【部署】部署到 prod (linkRole: deploy)
|
||||
└── 🏁 released
|
||||
├── 【部署】部署到 prod (linkRole: deploy)
|
||||
└── 【验收】PDV: {需求标题} (linkRole: verification)
|
||||
```
|
||||
|
||||
## ai-proj CLI 速查
|
||||
@@ -402,7 +449,7 @@ ai-proj req tasks --id <id> # 查看关联任务
|
||||
|
||||
**开发阶段**: `backlog`, `analysis`, `design`, `dev`, `review`, `integration`, `testing`, `staging`, `released`
|
||||
|
||||
**linkRole**: `prd`, `design`, `implementation`, `code_review`, `test`, `deploy`, `regression`, `documentation`
|
||||
**linkRole**: `prd`, `design`, `implementation`, `code_review`, `test`, `deploy`, `verification`, `regression`, `documentation`
|
||||
|
||||
## 相关技能
|
||||
|
||||
|
||||
Reference in New Issue
Block a user