{%- set prd = prd_management if prd_management else {} -%}
{%- set prd_file = prd.get('prd_file', 'docs/PRD.md') -%}
# 十三、产品需求文档 (PRD) 管理

## 13.1 PRD 的作用

> **我们虽然是一个启发式对话，需求在对话中推进，不过我们目前没有一个记录原始需求和变化的 PRD.md。我认为项目需求也在随着对话变化和成长。**

PRD.md 用于：
- 📝 **记录原始需求**: 保存用户最初提出的需求描述
- 📊 **跟踪需求变化**: 记录需求在对话中的演进过程
- 🔍 **需求追溯**: 了解每个需求从提出到实现的完整历程
- 📈 **需求统计**: 了解项目需求的状态分布

## 13.2 PRD 文档结构

PRD.md 位于 `{{ prd_file }}`，包含以下内容：

### 需求列表

每个需求包含：
- **需求 ID**: REQ-001, REQ-002, ...
- **需求标题**: 简洁的需求名称
- **原始描述**: 用户最初提出的需求描述
- **当前描述**: 经过澄清和演进后的需求描述
- **状态**: draft / confirmed / in_progress / completed / cancelled
- **优先级**: high / medium / low
- **创建时间**: 需求首次记录的时间
- **更新时间**: 需求最后修改的时间
- **需求变化历史**: 记录需求描述的变化轨迹

### 需求统计

自动统计各状态需求的数量。

## 13.3 PRD 使用流程

### 需求提出阶段

1. **用户提出需求**: 在对话中描述需求
2. **AI 记录需求**: 
   - 使用需求澄清协议，将模糊描述转化为结构化需求
   - 在 PRD.md 中创建新需求条目（REQ-XXX）
   - 记录原始描述和当前描述

### 需求演进阶段

1. **需求澄清**: 在对话中进一步明确需求细节
2. **更新 PRD**: 
   - 更新需求的当前描述
   - 在变化历史中记录变化原因
   - 更新需求状态（如从 draft → confirmed）

### 需求实现阶段

1. **开始实现**: 将需求状态更新为 in_progress
2. **完成实现**: 将需求状态更新为 completed
3. **记录关联**: 在需求中关联对应的 TASK-ID

## 13.4 PRD 管理触发词

在对话中使用以下触发词，AI 应主动管理 PRD：

- "记录需求"
- "更新 PRD"
- "查看需求"
- "需求状态"
- "PRD"
- "需求文档"

## 13.5 PRD 与需求澄清协议的关系

PRD 是需求澄清协议的**输出产物**：

```
用户提出需求
    ↓
需求澄清协议（结构化需求）
    ↓
记录到 PRD.md
    ↓
需求演进和实现
```

## 13.6 PRD 更新时机

AI 应在以下时机更新 PRD：

1. **新需求提出时**: 创建新需求条目
2. **需求澄清后**: 更新当前描述和变化历史
3. **需求状态变化时**: 更新状态字段
4. **需求实现完成时**: 更新状态为 completed，关联 TASK-ID

## 13.7 PRD 最佳实践

### 需求描述规范
- **原始描述**: 保持用户原话，不做修改
- **当前描述**: 经过澄清后的结构化描述
- **变化原因**: 清晰说明为什么需求发生变化

### 需求状态流转
```
draft → confirmed → in_progress → completed
  ↓                    ↓
cancelled          cancelled
```

### 需求关联
- 需求可以关联到 TASK-ID
- 一个需求可能对应多个任务
- 在需求中记录关联的任务 ID

---

