# Quality Gates

> 本文档定义 CCW Skills 各阶段的质量门禁标准和评分规则。

## 概述

质量门禁确保每个阶段完成前达到最低质量标准。门禁标准涵盖内容完整性、格式规范性、可执行性等方面。

## 质量门禁矩阵

### Phase 1: Discovery

| 检查项 | 标准 | 权重 | 通过条件 |
|--------|------|------|----------|
| 输出文件存在 | `discovery-context.json` | 20% | 文件存在且格式正确 |
| 代码库覆盖 | 至少扫描 3 个目录 | 20% | 扫描目录 ≥ 3 |
| 关键发现 | 识别关键模式/问题 | 30% | 发现项 ≥ 5 |
| 技术栈识别 | 正确识别语言/框架 | 15% | 识别准确 |
| 可执行性 | 下一步可基于发现执行 | 15% | 可行动建议 ≥ 3 |

**最低通过分数**: 70/100

---

### Phase 2: Product Brief

| 检查项 | 标准 | 权重 | 通过条件 |
|--------|------|------|----------|
| 输出文件存在 | `product-brief.md` | 15% | 文件存在 |
| 问题陈述清晰度 | Pain Point 明确 | 20% | 至少 3 个 Pain Point |
| 目标用户定义 | Target Audience 具体 | 15% | 用户画像清晰 |
| MoSCoW 分析 | 优先级分类完整 | 20% | Must/Should/Could 完整 |
| 可行性评估 | 技术可行性讨论 | 15% | 评估合理 |
| 格式规范 | 符合模板格式 | 15% | 符合模板 |

**最低通过分数**: 75/100

---

### Phase 3: Requirements (PRD)

| 检查项 | 标准 | 权重 | 通过条件 |
|--------|------|------|----------|
| 输出文件存在 | `requirements/` 目录 | 10% | 目录结构完整 |
| 索引文件 | `_index.md` 完整 | 15% | 包含摘要、MoSCoW、追溯 |
| 功能需求 | `REQ-*.md` 数量 | 20% | 需求 ≥ 3 个 |
| 需求完整性 | Who/What/Why/How | 20% | 所有字段完整 |
| 非功能需求 | `NFR-*.md` 数量 | 15% | 至少 1 个 |
| 追溯性 | 从 Brief 到需求的链接 | 10% | 链接有效 |
| 格式规范 | 符合模板格式 | 10% | 符合模板 |

**最低通过分数**: 75/100

---

### Phase 4: Architecture

| 检查项 | 标准 | 权重 | 通过条件 |
|--------|------|------|----------|
| 输出文件存在 | `architecture/` 目录 | 10% | 目录结构完整 |
| 索引文件 | `_index.md` 完整 | 15% | 包含组件、技术栈 |
| ADR 数量 | `ADR-*.md` 数量 | 20% | 决策记录 ≥ 2 |
| 决策质量 | Context/Decision/Consequence | 20% | 结构完整 |
| 技术栈选择 | 有理由支持 | 15% | 评估合理 |
| 追溯性 | 从 PRD 到架构的链接 | 10% | 链接有效 |
| 格式规范 | 符合模板格式 | 10% | 符合模板 |

**最低通过分数**: 75/100

---

### Phase 5: Epics

| 检查项 | 标准 | 权重 | 通过条件 |
|--------|------|------|----------|
| 输出文件存在 | `epics/` 目录 | 10% | 目录结构完整 |
| 索引文件 | `_index.md` 完整 | 15% | 包含 Epic 表、依赖图 |
| Epic 数量 | `EPIC-*.md` 数量 | 20% | Epic ≥ 2 |
| Story 质量 | User Story 格式 | 20% | 作为...我想要...以便... |
| 依赖关系 | Epic 间依赖清晰 | 15% | 依赖图或说明 |
| MVP 范围 | MVP 定义明确 | 10% | MVP Epic 标记 |
| 追溯性 | 从架构到 Epic 的链接 | 10% | 链接有效 |

**最低通过分数**: 75/100

---

### Phase 6: Readiness Check

| 检查项 | 标准 | 权重 | 通过条件 |
|--------|------|------|----------|
| 就绪报告 | `readiness-report.md` | 30% | 文件存在且完整 |
| 摘要文档 | `spec-summary.md` | 20% | 一页摘要 |
| 质量评分 | 所有阶段通过 | 30% | 所有阶段 ≥ 最低分 |
| 移交选项 | Handoff 选项清晰 | 10% | 选项明确 |
| 格式规范 | 符合模板格式 | 10% | 符合模板 |

**最低通过分数**: 80/100

---

## 质量评分计算

### 自动检查项

```bash
# 文件存在性
if [ -f "$expected_file" ]; then score=$((score + weight)); fi

# 格式验证
if markdownlint "$file"; then score=$((score + weight)); fi

# 链接有效性
if check-links "$file"; then score=$((score + weight)); fi
```

### 手动评审项

- 内容质量
- 逻辑连贯性
- 可执行性
- 实用性

### 综合评分

```
最终得分 = 自动检查得分 × 60% + 手动评审得分 × 40%
```

## 质量等级

| 等级 | 分数范围 | 描述 |
|------|----------|------|
| **A - 优秀** | 90-100 | 超出标准，可直接移交 |
| **B - 良好** | 80-89 | 满足标准，可移交 |
| **C - 及格** | 70-79 | 基本达标，需要改进 |
| **D - 不及格** | < 70 | 未达标，需要返工 |

## 不合格处理

### 返工流程

1. **识别问题**: 在就绪报告中列出不合格项
2. **修复**: 返回对应阶段进行修复
3. **重新评估**: 重新执行质量检查
4. **记录**: 记录修复过程和结果

### 豁免条件

- 探索性项目（POC）
- 时间受限的快速原型
- 明确标注为"草稿"的输出

## 参考

- [Document Standards](document-standards.md)
- [Quality Standards](quality-standards.md)
