# AI Review 数据盘点 · 2026-05-11（近 30 天）

**生成时间**: 2026-05-11 12:40 +0800
**数据源**: Gitea API · FFAIWorkspace/workspace
**窗口**: 2026-04-11 12:40 → 2026-05-11 12:40 (30 天)
**采样**: 窗口内活跃 PR 222 个，其中 109 个跑过 AI Review

> 本报告**只列事实**。基于此报告做的 review 工作流优化决策见 issue #259。

---

## 1. 概览

| 指标 | 值 |
|---|---|
| 跑过 AI Review 的 PR | 109 |
| AI Review 评论总数 | 213 |
| 每 PR 平均 review 次数 | 1.95 |
| 单 PR 最多 review 次数 | 10 (PR #247) |
| DRY RUN 期评论 | 213 (100%) |

### Review 次数分布（按 PR）

| 次数 | PR 数 |
|---|---|
| 1 | 57 |
| 2 | 34 |
| 3 | 7 |
| 4 | 2 |
| 5 | 2 |
| 6 | 4 |
| 7 | 1 |
| 8 | 1 |
| 10 | 1 |

### Verdict 分布（按评论）

| verdict | 次数 | 占比 |
|---|---|---|
| pass | 143 | 67% |
| pass_with_risk | 63 | 30% |
| needs_fix | 3 | 1% |
| block | 3 | 1% |
| _(未解析出 verdict)_ | 1 | 0% |

### Mode 分布（按评论）

| mode | 次数 |
|---|---|
| hard-rules-block | 190 |
| batch-summary | 15 |
| release-risk | 7 |

### Base 分支分布（按 PR）

| base | PR 数 |
|---|---|
| develop | 96 |
| staging | 8 |
| production | 5 |

> 解析质量：ok=212, partial=0, unparseable=1
> (老格式评论或 PR 描述里被 quote 的 AI Review 节选可能算 partial/unparseable)

## 2. 重复指控 Top（同 PR 内同 finding 跨 ≥2 次 review 出现）

> **state 缺失的硬证据**：同一个问题在同一 PR 被反复指出，但 AI 不知道前一轮已指出过。

共 2 组重复指控。Top 20：

| PR | category | message (≤60 字) | 出现次数 |
|---|---|---|---|
| #290 | docs | `.learnings/2026-05-10-check-existing-infra-before-judgin... | 2 |
| #218 | security | CreateFlowDiagramDto / UpdateFlowDiagramDto 的 mermaidSour... | 2 |

## 3. PR 详表（review ≥2 次的 PR）

verdicts/findings 按时序排列；findings 列为 `hard/risk/sugg` 元组。

| PR | base | state | reviews | verdicts | findings 演化 |
|---|---|---|---|---|---|
| [#308](http://43.130.59.228/FFAIWorkspace/workspace/pulls/308) chore(deploy): #273 saga 收口 7 项 — cit... | develop | merged | 2 | pass → pass | (0/2/2) → (0/3/2) |
| [#304](http://43.130.59.228/FFAIWorkspace/workspace/pulls/304) feat(weekly-retro): W20 候选改进 — weekly... | develop | open | 5 | pass → pass → pass → pass → pass_with_risk | (0/0/3) → (0/0/4) → (0/2/1) → (0/2/3) → (0/2/2) |
| [#303](http://43.130.59.228/FFAIWorkspace/workspace/pulls/303) feat(organization): 新增组织架构暗色网格视图（Phas... | develop | open | 6 | pass_with_risk → pass_with_risk → pass_with_risk → pass_with_risk → pass_with_risk → pass_with_risk | (0/1/4) → (0/2/5) → (0/2/3) → (0/2/2) → (0/3/3) → (0/3/2) |
| [#301](http://43.130.59.228/FFAIWorkspace/workspace/pulls/301) feat(pr-workflow): 模板 v2 / AI Review ... | develop | merged | 6 | pass → pass → pass_with_risk → pass → pass → pass | (0/0/0) → (0/0/1) → (0/0/3) → (0/0/2) → (0/0/2) → (0/0/2) |
| [#297](http://43.130.59.228/FFAIWorkspace/workspace/pulls/297) fix(ai-review): 用 claude --json-schem... | develop | merged | 2 | pass → pass | (0/0/3) → (0/0/2) |
| [#296](http://43.130.59.228/FFAIWorkspace/workspace/pulls/296) chore(workflow): 收尾 #242 + 第一性原理方法论 +... | develop | merged | 2 | pass_with_risk → pass_with_risk | (0/0/5) → (0/2/4) |
| [#293](http://43.130.59.228/FFAIWorkspace/workspace/pulls/293) refactor(audit): 后端 IntegrityService ... | develop | merged | 2 | pass_with_risk → pass_with_risk | (0/2/2) → (0/1/3) |
| [#292](http://43.130.59.228/FFAIWorkspace/workspace/pulls/292) feat(agent-client): Demo v0.1 — Web 三... | develop | merged | 2 | pass_with_risk → pass_with_risk | (0/4/3) → (0/4/3) |
| [#290](http://43.130.59.228/FFAIWorkspace/workspace/pulls/290) chore(logging-system): simplify 内部实现 ... | develop | merged | 2 | pass → pass | (0/0/3) → (0/0/3) |
| [#288](http://43.130.59.228/FFAIWorkspace/workspace/pulls/288) fix(agent-pool): heartbeat 自动同步 task_... | develop | merged | 6 | pass → pass → pass → pass → pass → pass | (0/0/2) → (0/0/2) → (0/0/1) → (0/0/2) → (0/0/2) → (0/0/2) |
| [#286](http://43.130.59.228/FFAIWorkspace/workspace/pulls/286) fix(ci): CI/CD 审计 6 项修复（B3 timeout / ... | develop | merged | 2 | pass → pass | (0/0/3) → (0/0/3) |
| [#285](http://43.130.59.228/FFAIWorkspace/workspace/pulls/285) feat(agent-pool): 固化路径 + .code-worksp... | develop | merged | 2 | pass → pass | (0/0/4) → (0/0/4) |
| [#283](http://43.130.59.228/FFAIWorkspace/workspace/pulls/283) docs(ci): 重整 CI/CD 文档体系，分层「设计 vs 实施」 | develop | merged | 2 | pass → pass | (0/0/3) → (0/0/2) |
| [#281](http://43.130.59.228/FFAIWorkspace/workspace/pulls/281) feat(weekly-retro): 架构 doc + skill or... | develop | merged | 8 | pass → pass → pass → pass → pass → pass → pass → pass_with_risk | (0/0/2) → (0/0/3) → (0/0/5) → (0/0/3) → (0/0/4) → (0/0/3) → (0/0/3) → (0/2/2) |
| [#277](http://43.130.59.228/FFAIWorkspace/workspace/pulls/277) fix(ci): 补 PR #272 cutover 后 CI 工作流漏（... | develop | merged | 3 | pass → pass → pass | (0/0/0) → (0/0/1) → (0/0/1) |
| [#275](http://43.130.59.228/FFAIWorkspace/workspace/pulls/275) feat(workflow): 周复盘机制——Gitea Actions ... | develop | merged | 2 | pass → pass | (0/0/3) → (0/0/3) |
| [#272](http://43.130.59.228/FFAIWorkspace/workspace/pulls/272) refactor(env): dev 环境重命名 test，部署到独立机器... | develop | merged | 7 | pass → pass → pass → pass → pass_with_risk → pass_with_risk → pass | (0/0/3) → (0/1/2) → (0/0/2) → (0/0/4) → (0/1/3) → (0/2/3) → (0/0/2) |
| [#271](http://43.130.59.228/FFAIWorkspace/workspace/pulls/271) docs(daily-reports): lijian 2026-05-0... | develop | merged | 2 | pass → pass | (0/0/0) → (0/0/0) |
| [#268](http://43.130.59.228/FFAIWorkspace/workspace/pulls/268) fix(logging): 文档漂移 + 写入兜底 + dropOverf... | develop | merged | 2 | pass → pass | (0/0/2) → (0/0/2) |
| [#266](http://43.130.59.228/FFAIWorkspace/workspace/pulls/266) feat(agent-pool): 开发 agent 池——常驻 work... | develop | merged | 3 | pass_with_risk → pass → pass | (0/0/5) → (0/0/4) → (0/0/5) |
| [#263](http://43.130.59.228/FFAIWorkspace/workspace/pulls/263) chore: 删除未使用的 core TemporalService（0 ... | develop | merged | 2 | pass → pass | (0/0/0) → (0/0/2) |
| [#258](http://43.130.59.228/FFAIWorkspace/workspace/pulls/258) staging | production | merged | 2 | pass → pass | (0/0/1) → (0/0/2) |
| [#257](http://43.130.59.228/FFAIWorkspace/workspace/pulls/257) develop | staging | merged | 2 | pass → pass | (0/0/1) → (0/0/1) |
| [#255](http://43.130.59.228/FFAIWorkspace/workspace/pulls/255) docs(learnings): ERR-006 dev swap 100... | develop | merged | 2 | pass → pass | (0/0/2) → (0/0/2) |
| [#254](http://43.130.59.228/FFAIWorkspace/workspace/pulls/254) release: staging → production | production | merged | 2 | pass_with_risk → pass_with_risk | (0/5/2) → (2/4/2) |
| [#253](http://43.130.59.228/FFAIWorkspace/workspace/pulls/253) develop | staging | merged | 2 | pass_with_risk → pass_with_risk | (0/4/4) → (0/4/3) |
| [#248](http://43.130.59.228/FFAIWorkspace/workspace/pulls/248) chore(workflow): 产品哲学元规则 + 修 worktree... | develop | merged | 3 | pass → pass → pass | (0/0/0) → (0/0/2) → (0/0/0) |
| [#247](http://43.130.59.228/FFAIWorkspace/workspace/pulls/247) feat(audit): 详情页 4 项 P0 优化 + Sensitiv... | develop | merged | 10 | pass_with_risk → pass_with_risk → pass_with_risk → pass_with_risk → pass_with_risk → pass_with_risk → pass_with_risk → pass_with_risk → pass_with_risk → pass_with_risk | (0/2/4) → (0/4/4) → (0/2/3) → (0/3/4) → (0/4/4) → (0/2/3) → (0/3/4) → (0/2/2) → (0/1/4) → (0/3/3) |
| [#245](http://43.130.59.228/FFAIWorkspace/workspace/pulls/245) fix(site-attendance): 打卡页登录态用 /users/... | develop | merged | 2 | pass → pass | (0/0/2) → (0/0/2) |
| [#243](http://43.130.59.228/FFAIWorkspace/workspace/pulls/243) chore(ops): 统一基线 Node 22（CI/engines/d... | develop | merged | 3 | pass → pass → pass | (0/0/3) → (0/0/2) → (0/0/3) |
| [#237](http://43.130.59.228/FFAIWorkspace/workspace/pulls/237) chore(release): develop → staging（sit... | staging | merged | 2 | pass → pass | (0/0/2) → (0/0/3) |
| [#235](http://43.130.59.228/FFAIWorkspace/workspace/pulls/235) ci(deploy-uat): 跳过 production→staging... | develop | merged | 3 | pass → pass → pass | (0/0/0) → (0/0/1) → (0/0/2) |
| [#234](http://43.130.59.228/FFAIWorkspace/workspace/pulls/234) staging | production | merged | 2 | ? → needs_fix | (0/0/0) → (2/7/3) |
| [#232](http://43.130.59.228/FFAIWorkspace/workspace/pulls/232) develop | staging | merged | 2 | pass_with_risk → pass_with_risk | (0/3/3) → (0/2/3) |
| [#228](http://43.130.59.228/FFAIWorkspace/workspace/pulls/228) develop | staging | merged | 2 | needs_fix → needs_fix | (2/7/3) → (1/4/2) |
| [#221](http://43.130.59.228/FFAIWorkspace/workspace/pulls/221) fix(ci): backend-integration job 每 PR... | develop | merged | 2 | pass → pass | (0/0/0) → (0/0/1) |
| [#220](http://43.130.59.228/FFAIWorkspace/workspace/pulls/220) fix(ci): 修 detect-affected-modules si... | develop | merged | 2 | pass → pass | (0/0/1) → (0/0/1) |
| [#218](http://43.130.59.228/FFAIWorkspace/workspace/pulls/218) feat(flow-diagram): AI 流程图生成器 v1 全栈实现 | develop | merged | 6 | pass_with_risk → pass_with_risk → pass_with_risk → pass_with_risk → pass_with_risk → pass_with_risk | (0/3/3) → (0/4/2) → (0/4/2) → (0/4/3) → (0/3/3) → (0/3/3) |
| [#217](http://43.130.59.228/FFAIWorkspace/workspace/pulls/217) feat(forms): M11 渲染器补齐 7 个字段类型 + TipT... | develop | merged | 2 | pass_with_risk → pass_with_risk | (0/3/5) → (0/5/3) |
| [#216](http://43.130.59.228/FFAIWorkspace/workspace/pulls/216) docs(approval-engine): 补 admin resume... | develop | merged | 2 | pass → pass | (0/0/0) → (0/0/0) |
| [#214](http://43.130.59.228/FFAIWorkspace/workspace/pulls/214) feat(form-management): L1 基线 + 实例 RBA... | develop | merged | 4 | pass_with_risk → pass_with_risk → pass_with_risk → block | (0/3/2) → (0/4/5) → (0/4/4) → (1/2/5) |
| [#208](http://43.130.59.228/FFAIWorkspace/workspace/pulls/208) refactor(approval-form): 打磨 + 5 项 P0/... | develop | merged | 2 | pass_with_risk → pass_with_risk | (0/7/3) → (0/4/2) |
| [#207](http://43.130.59.228/FFAIWorkspace/workspace/pulls/207) feat(ops-center): M365 休眠账号 v1（运营中心首期能力） | develop | merged | 4 | block → block → pass_with_risk → pass_with_risk | (1/4/3) → (2/3/2) → (0/4/3) → (0/4/3) |
| [#195](http://43.130.59.228/FFAIWorkspace/workspace/pulls/195) infra(runner): act_runner 主力迁出 Gitea ... | develop | merged | 3 | pass → pass → pass | (0/0/2) → (0/0/0) → (0/0/2) |
| [#193](http://43.130.59.228/FFAIWorkspace/workspace/pulls/193) fix(testing): 解锁本地 commit + 修正 module... | develop | merged | 5 | pass → pass → pass → pass → pass | (0/0/2) → (0/0/1) → (0/0/2) → (0/0/1) → (0/0/1) |
| [#192](http://43.130.59.228/FFAIWorkspace/workspace/pulls/192) fix(ci): 修复 deploy CI 假阳性 + 前端 env 漂移检测 | develop | merged | 3 | pass_with_risk → pass → pass | (0/2/2) → (0/0/3) → (0/0/3) |
| [#187](http://43.130.59.228/FFAIWorkspace/workspace/pulls/187) develop | staging | merged | 2 | pass_with_risk → pass_with_risk | (0/2/2) → (0/4/2) |
| [#186](http://43.130.59.228/FFAIWorkspace/workspace/pulls/186) fix(site-attendance): 多周期签到 30s 防重错杀 ... | develop | merged | 2 | pass → pass | (0/0/3) → (0/0/3) |
| [#181](http://43.130.59.228/FFAIWorkspace/workspace/pulls/181) fix(scripts/dev): cleanup 兼容老 marker ... | develop | merged | 2 | pass → pass | (0/0/2) → (0/0/3) |
| [#180](http://43.130.59.228/FFAIWorkspace/workspace/pulls/180) develop | staging | merged | 2 | pass_with_risk → pass_with_risk | (0/4/4) → (2/5/4) |
| [#179](http://43.130.59.228/FFAIWorkspace/workspace/pulls/179) feat(site-attendance): 今日在岗时长 + workt... | develop | merged | 2 | pass_with_risk → pass_with_risk | (0/2/3) → (0/3/2) |
| [#175](http://43.130.59.228/FFAIWorkspace/workspace/pulls/175) docs(workflow): 加入 PR 批量节奏约定（1-2 小时一批... | develop | merged | 2 | pass → pass | (0/0/0) → (0/0/2) |

## 4. 关键发现

- 窗口内 **109 个 PR** 跑过 AI Review，共 213 条评论，平均每 PR **1.95** 次
- **52 个 PR (48%)** 跑了 ≥2 次 review —— **触发收敛 + state 去重的主要收益面**
- **2 个 PR 内部存在跨 review 重复指控**，共 2 组 —— state header 落地后这部分理论可清零
- **全部 213 条评论标 DRY RUN**，verdict=block 出现 3 次但**未实际阻断合并**（待 #171 转正后才生效）
- 单 PR 最多跑了 **10 次** review（PR #247）—— 重复消耗集中点

## 5. 数据局限

- **采纳率没真值**：DRY RUN 期没有强制反馈通道，「finding 在下次 review 消失」既可能是被修了、也可能是 AI 这次没指出。本报告**不推断采纳率**，留给人工抽样
- **误报率没真值**：同上，需要 sample ~20 条人工标注（5 verdict=pass + 5 verdict=needs_fix + 10 finding 抽样）
- **finding 文本指纹**：用 (category, message 前 60 字 lower-cased) 模糊去重，AI 偶尔换措辞会算成两条，这部分误差未量化
- **老格式评论**：schema 化（PR #297）前的评论 verdict 解析为空，归入 `_(未解析)_`

---

_Generated by `scripts/ops/ai-review-stats.py`. 跟踪 [#259](http://43.130.59.228/FFAIWorkspace/workspace/issues/259)._
