# SOP-003: 推送评审标准作业流程

**适用**: 任何 commit 推 Gitea / PR 评审 / workbuddy 推送
**耗时**: 5-15 分钟
**关联**: [[CONTRIBUTING]] / [[scripts/pre-commit-check.sh]] / [[风险跟踪表]] 第九/十/十一节

---

## 1. 推送前自检(4 件套)

```bash
cd D:\资料\03-项目开发\wecom_it_smart_desk

# 必跑
bash scripts/pre-commit-check.sh --branch

# 严格模式(任何 warn 失败)
bash scripts/pre-commit-check.sh --branch --strict
```

**通过标准**:
- ✅ PASS ≥ 检查项数
- ⚠️ WARN 看是否影响评审
- ❌ FAIL 必修

## 2. Commit 规范

格式: `<type>(<scope>): <subject>`

| type | 用途 |
|---|---|
| `feat` | 新功能 |
| `fix` | Bug 修复 |
| `refactor` | 重构(无新功能 / 无 Bug 修复) |
| `docs` | 文档 |
| `chore` | 构建/工具/依赖 |
| `security` | 安全 |
| `perf` | 性能 |
| `test` | 测试 |

**subject**: 中文,祈使句,≤50 字
**body**: 详细说明,每行 ≤72 字
**footer**: 关联 Issue / workbuddy 任务

## 3. 推送流程

### 3.1 workbuddy 推送

1. workbuddy 客户端启动 → 读 `config.json` + `memory/`
2. 接任务(W-1 / W-2 / ...)
3. 写代码 → 本地 commit
4. 推 `feature/xxx` 分支(不走 main,需 PR)
5. 通知 Claude 评审

### 3.2 simon 推送(自己改)

1. 本地改 + commit
2. 推 `feature/xxx` 分支
3. Gitea Web 开 PR
4. 自己 approve + merge(因 `block_admin_merge: false`)

## 4. 评审流程

### 4.1 Claude 评审(主)

1. 收到 workbuddy 推送通知
2. Read 文件 + diff
3. 检查 4 件套
4. 写评审报告 `docs/评审报告/workbuddy-{date}-{topic}.md`
5. 评级:
   - 🟢 通过 → 通知合并
   - 🟡 留 P1/P2 修 → 评审报告列遗留
   - 🔴 拒绝 → 评审报告列阻断

### 4.2 simon 合并

1. 评审通过 → Gitea Web 合并 PR
2. 触发 Gitea Actions CI(待配)
3. CI 绿 → 删 feature 分支

## 5. 评审失败处理

| 评级 | 处理 |
|---|---|
| 🟢 通过 | 合并 + 部署 |
| 🟡 留 P1 | 合并 + 写遗留表 + workbuddy 下一轮修 |
| 🔴 拒绝 | workbuddy 修 → 重新评审 |

## 6. 评审报告格式

`docs/评审报告/workbuddy-{YYYY-MM-DD}-{topic}.md`:

```markdown
# 评审: {topic}

**推送日期**: {date}
**评审日期**: {date}
**评审人**: Claude
**关联 PR**: feature/xxx → main
**关联 commit**: N 个

## ⭐ 一句话结论
...

## 📊 评审结果
| # | 项 | 评级 | 备注 |
|---|---|---|---|

## ✅ 已正确完成
...

## 🟡 半成品(留 P2 优化)
...

## ❌ 错误
...

## 📁 变更清单(N commit)
...

## 🔄 下一轮任务清单
...

## 🔗 推 Gitea 状态
- 远端分支: feature/xxx (HEAD = xxx)
- 评审: ✅ 通过 / 🟡 通过 + 留 / 🔴 拒绝
```

## 7. 不允许

- ❌ 跳过评审直推 main
- ❌ 评审失败强行合并
- ❌ 评审未消化前叠加新功能
- ❌ 改评审报告原文(只加节)
