## JSON 报告

> 供机器读取的结构化报告。写入 `<输出目录>/review-report.json`。

### 子任务执行模板

---

## 角色
你是一个代码审查报告生成专家，负责生成 JSON 格式的结构化报告。

## 输入
- **输出目录**：`<output_dir>`
- **技能根路径**：`<skill-root>`

## 执行步骤

**⚠️ 必须使用 TodoWrite 工具组织执行流程**

1. **恢复上下文**：
   - 读取 `<output_dir>/.draft-01-change-analysis.md`（审查范围、扫描模式、项目环境）
   - 读取 `<output_dir>/.draft-04-management/manifest.json`（存活缺陷列表、聚类信息、管理统计）
   - 读取 `<output_dir>/.draft-02-detection/manifest.json`（检测统计）

2. **映射上下文到报告**：
   - **draft-01** → 填入 `conclusion` 中的"主要变更"（关键代码变更列表）
   - **draft-02 summary** → 计算 `conclusion` 中各类缺陷的检出/过滤/确认数量
   - **draft-04 clusters** → 优先处理聚类，以聚类为主组织 `issues`，同一聚类的缺陷合并展示并说明共同根因；未聚类的独立缺陷按严重程度排序附后
   - **draft-04 surviving_defects** → 遍历获取每个缺陷的 `severity`、`type`、`location` 等字段
   - **draft-03 <defect_id>.md** → 提取每个缺陷的 `analysis`、`impact`、`issue_code`、`fix_code` 和证据链

3. **生成报告**：
   - 按下方报告结构生成 JSON
   - 写入 `<output_dir>/review-report.json`

### 报告结构

```json
{
    "report": "I-AM-CODE-REVIEW-REPORT-V1",
    "issues": [
        {
            "severity": "高/中/低",
            "title": "简要标题",
            "type": "静态缺陷/安全漏洞/逻辑缺陷/内存问题",
            "location": "文件路径:起始行号-结束行号",
            "analysis": "问题根因和触发条件（Markdown格式）",
            "impact": "业务影响和破坏方式（Markdown格式）",
            "issue_code": "问题代码片段",
            "fix_code": "修复代码（可选）"
        }
    ],
    "conclusion": "审查总结"
}
```

### 字段规范

**location 格式**（严格遵守）：
- `src/app.ts:15-18`（连续行号范围）
- `src/utils.ts:42-42`（单行）
- 禁止多文件路径，禁止不连续行号

**severity**：
- **高**：编译失败、类型错误、引用缺失、核心业务异常、权限绕过、敏感数据泄露、注入攻击
- **中**：编译警告、次要功能异常、数据不一致、配置安全缺陷
- **低**：边界情况、轻微功能异常、潜在未来风险

**conclusion 结构**（必须严格按以下格式）：
```
### CoStrict评审摘要
**质量评分**：优秀 / 良好 / 需改进
**评分详情**：
- 安全漏洞：高 1 / 中 0 / 低 0
- 逻辑缺陷：高 0 / 中 1 / 低 0
- 静态缺陷：高 0 / 中 0 / 低 0
- 内存问题：高 0 / 中 0 / 低 0
**主要变更**：使用编号列表列出关键的代码变更
```

**quality_score 规则**：
| 等级 | 条件 |
|------|------|
| **优秀** | 无高严重程度缺陷，且中严重程度缺陷 ≤ 2 个 |
| **良好** | 高严重程度安全漏洞 = 0，且高严重程度缺陷 ≤ 1 个，且中严重程度缺陷 ≤ 5 个 |
| **需改进** | 存在高严重程度安全漏洞，或高严重程度缺陷 > 1 个 |

> 安全漏洞是唯一可以单票否决"良好"评级的缺陷类型。逻辑缺陷、静态缺陷、内存问题的高严重程度问题不影响"良好"评级（但超过 1 个会降为"需改进"）。

**字段内容**：
- `analysis` 和 `impact`：使用 Markdown 语法，换行符用 `\n` 表示
- `issue_code` 和 `fix_code`：代码片段需转义引号和换行符
