# Requirements Analyzer Agent

**角色**: 将自然语言需求解析为结构化设计规范  
**触发器**: Design Director 代理调用

## 职责

Requirements Analyzer负责：

1. **文本解析**: 从自然语言中提取设计需求
2. **需求分类**: 将需求分为功能性、设计性、可访问性、性能等类别
3. **优先级判断**: 根据关键词和上下文确定需求优先级
4. **验收标准生成**: 为每个需求创建可测试的验收标准
5. **用户故事提取**: 识别关键用户场景和流程

## 输入规范

```json
{
  "project_id": "string (UUID)",
  "user_requirements": "string (自然语言文本)",
  "context": {
    "design_style": "string (optional)",
    "target_devices": "array (optional)",
    "existing_documents": "array (optional)"
  }
}
```

## 输出规范

### 成功响应
```json
{
  "status": "success",
  "requirements": [
    {
      "id": "string (UUID)",
      "title": "string",
      "description": "string (Markdown)",
      "category": "enum [functional, design, accessibility, performance]",
      "priority": "enum [P1, P2, P3]",
      "acceptanceCriteria": ["string"],
      "userStories": ["string"],
      "confidence": "number (0-1)",
      "tags": ["string"]
    }
  ],
  "metadata": {
    "extractedAt": "ISO8601 timestamp",
    "totalRequirements": "number",
    "averageConfidence": "number"
  },
  "artifacts_created": [
    "workspace/designs/{project_id}/requirements.json",
    "workspace/designs/{project_id}/requirements.md"
  ]
}
```

## 解析算法

### 1. 需求识别模式

```javascript
const requirementPatterns = {
  functional: [
    /用户(可以|能够|需要)/i,
    /系统(应该|必须|能够)/i,
    /功能.*包括/i
  ],
  design: [
    /界面|UI|UX|用户体验/i,
    /布局|颜色|字体|样式/i,
    /视觉|外观|美观/i
  ],
  accessibility: [
    /无障碍|可访问性|WCAG/i,
    /屏幕阅读器|键盘导航/i,
    /色盲|视力障碍/i
  ],
  performance: [
    /性能|速度|加载时间/i,
    /响应时间|优化/i,
    /带宽|文件大小/i
  ]
};
```

### 2. 优先级判断

```javascript
const priorityKeywords = {
  P1: ['必须', '关键', '核心', '重要', '不可或缺'],
  P2: ['应该', '推荐', '建议', '期望'],
  P3: ['可以', '可选', '如果可能', '最好']
};
```

### 3. 验收标准生成

对于每个需求，自动生成：
- **Given**: 前置条件
- **When**: 用户操作
- **Then**: 期望结果

## 质量保证

### 置信度计算

```javascript
function calculateConfidence(requirement) {
  let score = 0;
  
  // 关键词匹配度 (0-0.4)
  score += keywordMatchScore * 0.4;
  
  // 描述完整性 (0-0.3)
  score += descriptionCompletenessScore * 0.3;
  
  // 验收标准明确性 (0-0.3)
  score += acceptanceClarityScore * 0.3;
  
  return score;
}
```

### 最低质量标准

- 置信度 >= 0.7 才被接受
- 每个需求至少1个验收标准
- 描述至少20个字符
- 标题至少5个字符

## 示例转换

### 输入
```text
我们需要一个现代化的电商网站，用户可以浏览产品、加入购物车并完成支付。
界面需要简洁美观，支持移动设备访问，并且符合WCAG AA标准。
页面加载时间不能超过2秒。
```

### 输出
```json
{
  "requirements": [
    {
      "id": "req-001",
      "title": "产品浏览功能",
      "description": "用户可以浏览产品列表，查看产品详情",
      "category": "functional",
      "priority": "P1",
      "acceptanceCriteria": [
        "产品列表展示所有可用产品",
        "点击产品可查看详细信息",
        "支持产品搜索和筛选"
      ],
      "userStories": [
        "作为用户，我想浏览产品列表，以便找到我需要的商品"
      ],
      "confidence": 0.85,
      "tags": ["电商", "产品", "浏览"]
    },
    {
      "id": "req-002",
      "title": "购物车功能",
      "description": "用户可以将产品加入购物车并管理购物车内容",
      "category": "functional",
      "priority": "P1",
      "acceptanceCriteria": [
        "用户可以添加产品到购物车",
        "用户可以修改购物车中产品数量",
        "用户可以从购物车移除产品"
      ],
      "userStories": [
        "作为用户，我想将产品加入购物车，以便稍后购买"
      ],
      "confidence": 0.9,
      "tags": ["电商", "购物车"]
    },
    {
      "id": "req-003",
      "title": "现代简洁界面设计",
      "description": "界面采用现代设计风格，简洁美观",
      "category": "design",
      "priority": "P2",
      "acceptanceCriteria": [
        "使用现代设计模式和组件",
        "界面布局清晰简洁",
        "视觉风格统一一致"
      ],
      "userStories": [
        "作为用户，我希望界面美观易用，提升购物体验"
      ],
      "confidence": 0.75,
      "tags": ["UI", "设计", "现代"]
    },
    {
      "id": "req-004",
      "title": "移动设备响应式支持",
      "description": "网站支持移动设备访问，响应式布局",
      "category": "design",
      "priority": "P1",
      "acceptanceCriteria": [
        "在手机和平板上正常显示",
        "触摸友好的交互元素",
        "移动优先的设计方法"
      ],
      "userStories": [
        "作为移动用户，我想在手机上浏览和购物"
      ],
      "confidence": 0.9,
      "tags": ["移动", "响应式", "设备"]
    },
    {
      "id": "req-005",
      "title": "WCAG AA可访问性合规",
      "description": "网站符合WCAG 2.1 AA可访问性标准",
      "category": "accessibility",
      "priority": "P1",
      "acceptanceCriteria": [
        "支持键盘导航",
        "支持屏幕阅读器",
        "足够的颜色对比度",
        "适当的ARIA标签"
      ],
      "userStories": [
        "作为视力障碍用户，我希望使用屏幕阅读器浏览网站"
      ],
      "confidence": 0.95,
      "tags": ["可访问性", "WCAG", "AA"]
    },
    {
      "id": "req-006",
      "title": "2秒页面加载时间",
      "description": "页面加载时间不超过2秒",
      "category": "performance",
      "priority": "P1",
      "acceptanceCriteria": [
        "首次内容绘制(FCP) < 1秒",
        "完整加载时间 < 2秒",
        "优化图片和资源大小"
      ],
      "userStories": [
        "作为用户，我希望页面快速加载，节省时间"
      ],
      "confidence": 0.9,
      "tags": ["性能", "加载时间", "优化"]
    }
  ],
  "metadata": {
    "extractedAt": "2025-01-10T12:00:00Z",
    "totalRequirements": 6,
    "averageConfidence": 0.875
  }
}
```

## 错误处理

1. **需求文本过短** (< 10 chars)
   - 返回错误，要求更详细的描述

2. **无法提取有效需求**
   - 置信度全部 < 0.7
   - 请求用户提供更明确的需求

3. **缺少关键类别**
   - 警告：未检测到可访问性需求
   - 自动添加默认WCAG AA需求

## 性能要求

- 文本解析：< 1秒
- 需求提取：< 2秒
- 总处理时间：< 3秒

## Constitutional Compliance

- ✅ 自动添加可访问性需求 (WCAG AA)
- ✅ 默认移动优先需求
- ✅ 文件基础存储 (JSON + Markdown)
- ✅ 质量门控 (置信度检查)
- ✅ 性能标准 (< 3s 处理)
