---
name: 0004-define-requirements
description: 需求定义与入库，创建需求文档并更新索引
---

# 技能：需求定义与入库 (Define Requirements)

## 元数据 (Metadata)

- **name**: define-requirements
- **description**: 需求定义与入库，创建需求文档并更新索引
- **version**: 1.0.0
- **author**: SSOT Architect
- **lastUpdated**: 2026-01-15

## 触发与定位 (Triggers & Scope)

### 触发条件 (Triggers)
当以下情况发生时，AI 应当"觉醒"本技能：

1. **新功能需求**: 用户提出新的功能需求
2. **Bug 修复需求**: 用户报告 Bug 并要求修复
3. **性能优化需求**: 用户要求优化系统性能
4. **技术债务清理**: 用户要求清理技术债务
5. **工作流阶段 1**: 用户进入工作流的"需求定义与入库"阶段

### 定位范围 (Scope)
- **适用模块**: 所有 Datai 项目模块
- **影响文件**: `docs/requirements/REQ-XXX.md`, `docs/index.md`
- **相关技能**: skill-architecture-decision, skill-prompt-engineering

## 核心指令集 (Instructions)

### 架构约束 (Architecture Constraints)

1. **需求文档命名规范**:
   - 格式: `REQ-XXX.md`
   - XXX: 三位数字，从 001 开始递增
   - 示例: `REQ-001.md`, `REQ-002.md`

2. **需求文档必须包含**:
   - 需求编号和标题
   - 需求类型（功能/非功能）
   - 优先级（高/中/低）
   - 用户故事
   - 验收标准（AC）
   - 相关文档链接
   - 状态（Draft/In Progress/Completed）

3. **必须同步更新 docs/index.md**:
   - 将新需求添加到"需求文档"表格
   - 标记需求状态
   - 包含需求描述和更新日期

### 业务逻辑 SOP (Business Logic SOP)

#### 步骤 1: 解析用户原始需求
```markdown
## 需求解析

### 原始需求
[用户提供的原始需求描述]

### 需求类型
- [ ] 功能需求
- [ ] 非功能需求（性能/安全/可用性等）

### 优先级
- [ ] 高
- [ ] 中
- [ ] 低

### 影响范围
- [ ] 前端
- [ ] 后端
- [ ] 数据库
- [ ] API
- [ ] 文档
```

#### 步骤 2: 编写用户故事
```markdown
## 用户故事

### 用户角色
[目标用户角色]

### 用户目标
[用户想要达成的目标]

### 用户价值
[用户为什么需要这个功能]

### 用户故事格式
作为一个 [用户角色]，
我想要 [用户目标]，
以便于 [用户价值]。
```

#### 步骤 3: 定义验收标准（AC）
```markdown
## 验收标准 (Acceptance Criteria)

### 功能验收标准
- [ ] AC1: [具体的验收标准]
- [ ] AC2: [具体的验收标准]
- [ ] AC3: [具体的验收标准]

### 非功能验收标准
- [ ] 性能要求: [具体的性能指标]
- [ ] 安全要求: [具体的安全要求]
- [ ] 可用性要求: [具体的可用性要求]

### 测试用例
| 用例编号 | 用例描述 | 预期结果 |
|----------|----------|----------|
| TC-001 | [测试用例描述] | [预期结果] |
| TC-002 | [测试用例描述] | [预期结果] |
```

#### 步骤 4: 创建需求文档
```markdown
---
name: REQ-001
description: [需求描述]
---

# 需求: [需求标题]

## 元数据 (Metadata)

- **需求编号**: REQ-001
- **需求标题**: [需求标题]
- **需求类型**: [功能需求/非功能需求]
- **优先级**: [高/中/低]
- **状态**: [Draft/In Progress/Completed]
- **创建日期**: YYYY-MM-DD
- **最后更新**: YYYY-MM-DD
- **创建人**: [创建人姓名]
- **负责人**: [负责人姓名]

## 需求描述 (Description)

### 背景
[需求背景和上下文]

### 问题陈述
[当前存在的问题]

### 目标
[需求要达成的目标]

## 用户故事 (User Story)

作为一个 [用户角色]，
我想要 [用户目标]，
以便于 [用户价值]。

## 验收标准 (Acceptance Criteria)

### 功能验收标准
- [ ] AC1: [具体的验收标准]
- [ ] AC2: [具体的验收标准]
- [ ] AC3: [具体的验收标准]

### 非功能验收标准
- [ ] 性能要求: [具体的性能指标]
- [ ] 安全要求: [具体的安全要求]
- [ ] 可用性要求: [具体的可用性要求]

## 技术要求 (Technical Requirements)

### 技术栈
- [ ] Java 17/21
- [ ] Spring Boot 3.x
- [ ] MyBatis Plus
- [ ] Salesforce API

### 接口要求
- [ ] REST API
- [ ] SOAP API
- [ ] GraphQL API

### 数据库要求
- [ ] MySQL
- [ ] PostgreSQL
- [ ] Oracle

## 依赖关系 (Dependencies)

### 前置需求
- [REQ-XXX](./REQ-XXX.md) - [前置需求描述]

### 后续需求
- [REQ-XXX](./REQ-XXX.md) - [后续需求描述]

### 外部依赖
- [外部系统/服务] - [依赖描述]

## 相关文档 (Related Documents)

- [设计文档](../design/DES-XXX.md)
- [ADR 文档](../decisions/adr/ADR-XXX.md)
- [提示词文档](../prompts/PROMPT-XXX.md)

## 变更历史 (Change History)

| 日期 | 版本 | 变更内容 | 变更人 |
|------|------|----------|--------|
| YYYY-MM-DD | 1.0.0 | 初始版本 | [姓名] |
```

#### 步骤 5: 更新 docs/index.md
```markdown
### 📝 需求文档 (Requirements)
| 文档 | 状态 | 描述 | 更新日期 |
|------|------|------|----------|
| [REQ-001](requirements/REQ-001.md) | 🔄 In Progress | [需求描述] | 2026-01-15 |
```

### 工具调用 (Tool Usage)

1. **需求编号生成工具**:
   - 使用 `Grep` 工具搜索 `docs/requirements/` 目录
   - 查找最大的 REQ 编号
   - 生成新的 REQ 编号

2. **文件创建工具**:
   - 使用 `Write` 工具创建需求文档
   - 确保文件路径正确

3. **索引更新工具**:
   - 使用 `Read` 工具读取 `docs/index.md`
   - 使用 `SearchReplace` 工具更新索引

## 错误陷阱与验证 (Anti-Patterns & Checklist)

### 常见错误 (Anti-Patterns)

1. **错误**: 需求描述过于模糊
   - **后果**: 无法准确理解需求，导致开发偏差
   - **修正**: 使用具体的、可量化的描述

2. **错误**: 验收标准不完整
   - **后果**: 无法验证需求是否满足
   - **修正**: 确保每个功能点都有对应的验收标准

3. **错误**: 忘记更新 docs/index.md
   - **后果**: 产生孤儿文件，违反 SSOT 原则
   - **修正**: 创建需求文档后必须更新索引

4. **错误**: 用户故事格式不规范
   - **后果**: 难以理解用户需求
   - **修正**: 使用标准格式：作为一个...我想要...以便于...

5. **错误**: 缺少非功能需求
   - **后果**: 系统性能、安全性等无法保证
   - **修正**: 必须包含性能、安全、可用性等非功能需求

### 验收清单 (Acceptance Checklist)

- [ ] 需求文档已创建
- [ ] 需求编号符合规范
- [ ] 需求类型已明确
- [ ] 优先级已设定
- [ ] 用户故事已编写
- [ ] 验收标准已定义
- [ ] 技术要求已明确
- [ ] 依赖关系已列出
- [ ] docs/index.md 已更新
- [ ] 相关文档已链接

### Correct vs Incorrect 对比

#### Correct 示例
```markdown
## 用户故事

作为一个系统管理员，
我想要批量导入用户数据，
以便于快速初始化系统用户。

## 验收标准

- [ ] AC1: 支持 CSV 格式的批量导入
- [ ] AC2: 单次导入最多支持 1000 条记录
- [ ] AC3: 导入失败时提供详细的错误信息
- [ ] AC4: 导入耗时不超过 30 秒（1000 条记录）
```

#### Incorrect 示例
```markdown
## 用户故事

用户想要批量导入数据。

## 验收标准

- [ ] 支持批量导入
- [ ] 导入速度快
```

**问题**: 用户故事格式不规范，验收标准不具体、不可量化。

## 相关文档 (Related Documents)

- [工作流提示词](../prompts/03-创建工作流提示词.md#阶段-1-需求定义与入库-requirements)
- [架构决策技能](./0005-architecture-decision.md)
- [提示词资产化技能](./0006-prompt-engineering.md)
- [需求模板](../prompts/03-创建工作流提示词.md#阶段-1-需求定义与入库-requirements)
