# Quality Standards

代码审查质量标准。

## When to Use

| Phase | Usage | Section |
|-------|-------|---------|
| action-generate-report | 质量评估 | Quality Dimensions |
| action-complete | 最终评分 | Quality Gates |

---

## Quality Dimensions

### 1. Completeness (完整性) - 25%

**评估审查覆盖的完整程度**

| Score | Criteria |
|-------|----------|
| 100% | 所有维度审查完成，所有高风险文件检查 |
| 80% | 核心维度完成，主要文件检查 |
| 60% | 部分维度完成 |
| < 60% | 审查不完整 |

**检查点**:
- [ ] 6 个维度全部审查
- [ ] 高风险区域重点检查
- [ ] 关键文件覆盖

---

### 2. Accuracy (准确性) - 25%

**评估发现问题的准确程度**

| Score | Criteria |
|-------|----------|
| 100% | 问题定位准确，分类正确，无误报 |
| 80% | 偶有分类偏差，定位准确 |
| 60% | 存在误报或漏报 |
| < 60% | 准确性差 |

**检查点**:
- [ ] 问题行号准确
- [ ] 严重程度合理
- [ ] 分类正确

---

### 3. Actionability (可操作性) - 25%

**评估建议的实用程度**

| Score | Criteria |
|-------|----------|
| 100% | 每个问题都有具体可执行的修复建议 |
| 80% | 大部分问题有清晰建议 |
| 60% | 建议较笼统 |
| < 60% | 缺乏可操作建议 |

**检查点**:
- [ ] 提供具体修复建议
- [ ] 包含代码示例
- [ ] 说明修复优先级

---

### 4. Consistency (一致性) - 25%

**评估审查标准的一致程度**

| Score | Criteria |
|-------|----------|
| 100% | 相同问题相同处理，标准统一 |
| 80% | 基本一致，偶有差异 |
| 60% | 标准不太统一 |
| < 60% | 标准混乱 |

**检查点**:
- [ ] ID 格式统一
- [ ] 严重程度标准一致
- [ ] 描述风格统一

---

## Quality Gates

### Review Quality Gate

| Gate | Overall Score | Action |
|------|---------------|--------|
| **Excellent** | ≥ 90% | 高质量审查 |
| **Good** | ≥ 80% | 合格审查 |
| **Acceptable** | ≥ 70% | 基本可接受 |
| **Needs Improvement** | < 70% | 需要改进 |

### Code Quality Gate (Based on Findings)

| Gate | Condition | Recommendation |
|------|-----------|----------------|
| **Block** | Critical > 0 | 禁止合并，必须修复 |
| **Warn** | High > 3 | 需要团队讨论 |
| **Caution** | Medium > 10 | 建议改进 |
| **Pass** | 其他 | 可以合并 |

---

## Report Quality Checklist

### Structure

- [ ] 包含审查概览
- [ ] 包含问题统计
- [ ] 包含高风险区域
- [ ] 包含问题详情
- [ ] 包含修复建议

### Content

- [ ] 问题描述清晰
- [ ] 文件位置准确
- [ ] 代码片段有效
- [ ] 修复建议具体
- [ ] 优先级明确

### Format

- [ ] Markdown 格式正确
- [ ] 表格对齐
- [ ] 代码块语法正确
- [ ] 链接有效
- [ ] 无拼写错误

---

## Validation Function

```javascript
function validateReviewQuality(state) {
  const scores = {
    completeness: 0,
    accuracy: 0,
    actionability: 0,
    consistency: 0
  };
  
  // 1. Completeness
  const dimensionsReviewed = state.reviewed_dimensions?.length || 0;
  scores.completeness = (dimensionsReviewed / 6) * 100;
  
  // 2. Accuracy (需要人工验证或后续反馈)
  // 暂时基于有无错误来估算
  scores.accuracy = state.error_count === 0 ? 100 : Math.max(0, 100 - state.error_count * 20);
  
  // 3. Actionability
  const findings = Object.values(state.findings).flat();
  const withRecommendations = findings.filter(f => f.recommendation).length;
  scores.actionability = findings.length > 0 
    ? (withRecommendations / findings.length) * 100 
    : 100;
  
  // 4. Consistency (检查 ID 格式等)
  const validIds = findings.filter(f => /^(CORR|SEC|PERF|READ|TEST|ARCH)-\d{3}$/.test(f.id)).length;
  scores.consistency = findings.length > 0 
    ? (validIds / findings.length) * 100 
    : 100;
  
  // Overall
  const overall = (
    scores.completeness * 0.25 +
    scores.accuracy * 0.25 +
    scores.actionability * 0.25 +
    scores.consistency * 0.25
  );
  
  return {
    scores,
    overall,
    gate: overall >= 90 ? 'excellent' :
          overall >= 80 ? 'good' :
          overall >= 70 ? 'acceptable' : 'needs_improvement'
  };
}
```

---

## Improvement Recommendations

### If Completeness is Low

- 增加扫描的文件范围
- 确保所有维度都被审查
- 重点关注高风险区域

### If Accuracy is Low

- 提高规则精度
- 减少误报
- 验证行号准确性

### If Actionability is Low

- 为每个问题添加修复建议
- 提供代码示例
- 说明修复步骤

### If Consistency is Low

- 统一 ID 格式
- 标准化严重程度判定
- 使用模板化描述
