# ColaFlow M2 阶段产品需求文档 (PRD)
# MCP Server 集成 - Model Context Protocol

**文档版本**: 1.0
**作者**: Product Manager Agent
**日期**: 2025-11-04
**目标阶段**: M2 (3-4个月)
**预计时间**: 2025-12-01 至 2026-03-31 (16周)

---

## 执行摘要

M2 阶段的核心目标是**实现 MCP (Model Context Protocol) Server**，让 AI 工具（Claude、ChatGPT、Cursor 等）能够通过标准化协议安全地读写 ColaFlow 项目数据。这是 ColaFlow 从传统项目管理系统向 **AI 原生协作平台** 转型的关键里程碑。

### 关键价值主张
- **AI 成为团队成员**: AI 工具能像真人一样操作任务、生成文档、汇报进度
- **安全可控**: 所有 AI 写操作需人工审批，支持 Diff Preview 和回滚
- **开放生态**: 基于 MCP 标准协议，任何 AI 工具都能接入
- **自动化加速**: 减少 50% 手动项目管理工作，提升 30% 团队效率

### M2 核心交付物
1. **MCP Server** - 完整的 MCP 协议实现（Resources, Tools, Prompts）
2. **Diff Preview 机制** - AI 操作预览 → 人工审批 → 自动执行
3. **Claude Desktop 集成** - PoC 级别的 AI 助手体验
4. **安全与审计** - 字段级权限控制 + 完整审计日志
5. **技术文档** - MCP API 文档、集成指南、最佳实践

---

## 一、背景与目标

### 1.1 项目背景

**M1 阶段完成情况** (Day 14, 85% 完成):
- ✅ Identity & RBAC Module - 生产就绪
- ✅ Issue Management Module - 完整实现 + 100% 测试通过
- ✅ Kanban Board - 全功能拖拽式看板
- ✅ SignalR Real-Time - 实时通信基础设施
- ✅ Multi-Tenant Security - CRITICAL 安全加固完成
- ✅ Audit Log 技术方案 - 15,000+ 字研究报告完成
- 🔄 Epic/Story Hierarchy - 计划中 (2-3天)
- 🔄 Sprint Management - 计划中 (3-4天)

**技术基础**:
- 后端: NestJS + TypeORM + PostgreSQL (Clean Architecture + CQRS + DDD)
- 前端: React + TypeScript + TailwindCSS
- 实时通信: SignalR (infrastructure ready)
- 安全: JWT + Refresh Token + Multi-Tenant Isolation + RBAC
- 性能: API < 100ms, DB Query < 5ms

**为什么现在是 M2 的最佳时机**:
1. **核心功能稳定**: M1 提供了坚实的数据基础（Projects, Issues, Sprints）
2. **安全机制完善**: Multi-tenant isolation + Audit Log 已就绪
3. **架构设计完成**: Day 10 已完成 MCP Server 详细架构设计
4. **市场机遇**: AI 工具爆发期，MCP 协议逐渐成为标准

### 1.2 商业目标

**短期目标 (M2 阶段)**:
- 实现首个 AI 工具集成（Claude Desktop），验证技术可行性
- 建立 AI 操作的安全机制和审批流程
- 积累 AI 辅助项目管理的使用数据和反馈

**长期目标 (M3-M6)**:
- M3: ChatGPT 集成 PoC，形成完整的 AI → PRD → 任务 闭环
- M4: 外部系统接入（GitHub, Slack, Calendar），构建协作生态
- M5: 企业试点部署，验证商业模式
- M6: 稳定版发布，SDK + 插件生态建设

### 1.3 用户目标

**目标用户群**:
1. **敏捷团队** - 使用 Scrum/Kanban 管理项目的开发团队
2. **AI 早期采用者** - 已使用 Claude/ChatGPT/Cursor 的技术团队
3. **效率优化者** - 追求自动化和流程优化的项目经理

**用户痛点**:
1. **重复劳动**: 手动创建任务、编写 PRD、更新进度报告（占用 30-50% PM 时间）
2. **信息孤岛**: AI 工具（ChatGPT）和项目系统（Jira）互不相通
3. **协作断层**: AI 生成的内容需要手动粘贴到项目系统
4. **安全顾虑**: 不敢让 AI 直接操作生产数据（缺乏审批机制）

**M2 解决方案**:
- **自动化**: AI 自动生成任务、PRD、进度报告（减少 50% 手动工作）
- **无缝集成**: AI 工具直接读写 ColaFlow 数据（无需复制粘贴）
- **安全可控**: Diff Preview + 人工审批机制（99% 安全保障）
- **审计追溯**: 完整的 AI 操作日志和回滚能力（符合企业合规要求）

---

## 二、产品范围与功能需求

### 2.1 核心功能 (MVP Scope)

#### 2.1.1 MCP Resources (只读数据暴露)

**目标**: 让 AI 工具能够读取 ColaFlow 项目数据

**资源列表** (11个核心 Resources):

| Resource ID | 描述 | API 对应 | 优先级 | 预计工时 |
|-------------|------|----------|--------|---------|
| `colaflow://projects.list` | 列出所有项目 | GET /api/projects | P0 | 2h |
| `colaflow://projects.get/{id}` | 获取项目详情 | GET /api/projects/{id} | P0 | 1h |
| `colaflow://issues.search` | 搜索任务（支持过滤） | GET /api/issues?filter=... | P0 | 3h |
| `colaflow://issues.get/{id}` | 获取任务详情 | GET /api/issues/{id} | P0 | 1h |
| `colaflow://epics.list` | 列出所有 Epic | GET /api/issues?type=Epic | P0 | 1h |
| `colaflow://stories.list` | 列出所有 Story | GET /api/issues?type=Story | P0 | 1h |
| `colaflow://tasks.list` | 列出所有 Task | GET /api/issues?type=Task | P0 | 1h |
| `colaflow://sprints.current` | 获取当前 Sprint | GET /api/sprints?status=Active | P0 | 2h |
| `colaflow://sprints.backlog` | 获取 Backlog | GET /api/issues?sprint=null | P0 | 1h |
| `colaflow://users.list` | 列出团队成员 | GET /api/roles/users | P0 | 1h |
| `colaflow://reports.burndown/{sprintId}` | 获取燃尽图数据 | GET /api/sprints/{id}/burndown | P1 | 2h |

**总工时**: 16 小时 (2 天)

**技术实现**:
```csharp
// MCP Resource 定义示例
public class ProjectsListResource : IMcpResource
{
    public string Uri => "colaflow://projects.list";
    public string Name => "Projects List";
    public string Description => "List all projects in current tenant";
    public string MimeType => "application/json";

    public async Task<McpResourceContent> GetContentAsync(
        McpResourceRequest request,
        CancellationToken cancellationToken)
    {
        var tenantId = _tenantContext.TenantId;
        var projects = await _projectRepository.GetAllAsync(tenantId);

        var content = new
        {
            projects = projects.Select(p => new
            {
                id = p.Id,
                name = p.Name,
                description = p.Description,
                status = p.Status,
                issueCount = p.IssueCount,
                createdAt = p.CreatedAt
            })
        };

        return new McpResourceContent
        {
            Uri = request.Uri,
            MimeType = "application/json",
            Text = JsonSerializer.Serialize(content)
        };
    }
}
```

**验收标准**:
- [ ] 所有 11 个 Resources 正确返回数据
- [ ] 租户隔离：用户只能看到自己租户的数据
- [ ] 性能：单次请求响应时间 < 200ms
- [ ] 缓存：热数据缓存命中率 > 80% (Redis)
- [ ] 错误处理：404/403/500 错误码正确返回
- [ ] 分页：`issues.search` 支持 limit/offset 参数

---

#### 2.1.2 MCP Tools (写操作暴露)

**目标**: 让 AI 工具能够创建、修改 ColaFlow 数据（需人工审批）

**工具列表** (10个核心 Tools):

| Tool Name | 描述 | 审批要求 | 优先级 | 预计工时 |
|-----------|------|----------|--------|---------|
| `create_project` | 创建新项目 | 必须审批 | P0 | 3h |
| `create_issue` | 创建新任务 | 必须审批 | P0 | 3h |
| `update_issue` | 更新任务详情 | 必须审批 | P0 | 3h |
| `update_status` | 更改任务状态 | 可配置 | P0 | 2h |
| `assign_issue` | 分配任务给用户 | 可配置 | P0 | 2h |
| `create_sprint` | 创建 Sprint | 必须审批 | P0 | 3h |
| `start_sprint` | 启动 Sprint | 必须审批 | P0 | 2h |
| `add_comment` | 添加评论 | 可选审批 | P1 | 2h |
| `create_epic` | 创建 Epic | 必须审批 | P0 | 2h |
| `link_issues` | 关联任务（父子关系） | 必须审批 | P0 | 3h |

**总工时**: 25 小时 (3 天)

**技术实现 (Diff Preview 模式)**:
```csharp
// MCP Tool 定义示例
public class CreateIssueTool : IMcpTool
{
    public string Name => "create_issue";
    public string Description => "Create a new issue in ColaFlow";
    public McpToolInputSchema InputSchema => new()
    {
        Type = "object",
        Properties = new Dictionary<string, object>
        {
            ["projectId"] = new { type = "string", description = "Project ID" },
            ["title"] = new { type = "string", description = "Issue title" },
            ["description"] = new { type = "string", description = "Issue description" },
            ["type"] = new { type = "string", enum = new[] { "Story", "Task", "Bug", "Epic" } },
            ["priority"] = new { type = "string", enum = new[] { "Low", "Medium", "High", "Critical" } },
            ["assigneeId"] = new { type = "string", description = "Assignee user ID", nullable = true }
        },
        Required = new[] { "projectId", "title", "type", "priority" }
    };

    public async Task<McpToolResult> ExecuteAsync(
        McpToolCall toolCall,
        CancellationToken cancellationToken)
    {
        // 1. 解析输入参数
        var input = JsonSerializer.Deserialize<CreateIssueInput>(toolCall.Arguments);

        // 2. 生成 Diff Preview (before/after)
        var diffPreview = new DiffPreview
        {
            ToolName = "create_issue",
            Operation = "CREATE",
            EntityType = "Issue",
            BeforeData = null, // 创建操作无 before
            AfterData = new
            {
                projectId = input.ProjectId,
                title = input.Title,
                description = input.Description,
                type = input.Type,
                priority = input.Priority,
                assigneeId = input.AssigneeId,
                status = "Backlog",
                createdBy = _currentUser.Id,
                createdAt = DateTime.UtcNow
            },
            RequiresApproval = true
        };

        // 3. 存储 pending change 到数据库
        var pendingChange = await _pendingChangeRepository.CreateAsync(new PendingChange
        {
            TenantId = _tenantContext.TenantId,
            UserId = _currentUser.Id,
            ToolName = toolCall.Name,
            Operation = "CREATE",
            EntityType = "Issue",
            EntityId = null,
            BeforeData = null,
            AfterData = JsonSerializer.Serialize(diffPreview.AfterData),
            Status = PendingChangeStatus.PendingApproval,
            CreatedAt = DateTime.UtcNow,
            ExpiresAt = DateTime.UtcNow.AddHours(24) // 24小时过期
        });

        // 4. 发送 WebSocket 通知（需人工审批）
        await _realtimeService.NotifyUserAsync(
            _currentUser.Id,
            "PendingChangeCreated",
            new { pendingChangeId = pendingChange.Id, diffPreview });

        // 5. 返回 Diff Preview 结果
        return new McpToolResult
        {
            Content = new[]
            {
                new McpToolResultContent
                {
                    Type = "text",
                    Text = $"Issue creation queued for approval. Pending Change ID: {pendingChange.Id}\n\n" +
                           $"**Diff Preview**:\n" +
                           $"```json\n{JsonSerializer.Serialize(diffPreview, new JsonSerializerOptions { WriteIndented = true })}\n```\n\n" +
                           $"Please review and approve/reject this change in the ColaFlow dashboard."
                }
            },
            IsError = false
        };
    }
}
```

**审批流程 API**:
```csharp
// GET /api/mcp/pending-changes - 列出待审批的变更
// GET /api/mcp/pending-changes/{id} - 获取变更详情
// POST /api/mcp/pending-changes/{id}/approve - 审批通过（自动执行操作）
// POST /api/mcp/pending-changes/{id}/reject - 拒绝（记录日志）
// DELETE /api/mcp/pending-changes/{id} - 取消（未审批前可取消）
```

**审批通过后自动执行**:
```csharp
public async Task ApproveAsync(Guid pendingChangeId, Guid approverId)
{
    var pendingChange = await _repository.GetByIdAsync(pendingChangeId);
    if (pendingChange.Status != PendingChangeStatus.PendingApproval)
        throw new InvalidOperationException("Change is not pending approval");

    // 1. 执行实际操作
    var result = await ExecuteToolOperationAsync(pendingChange);

    // 2. 更新状态
    pendingChange.Status = PendingChangeStatus.Approved;
    pendingChange.ApprovedBy = approverId;
    pendingChange.ApprovedAt = DateTime.UtcNow;
    pendingChange.ExecutedAt = DateTime.UtcNow;
    pendingChange.ResultData = JsonSerializer.Serialize(result);

    await _repository.UpdateAsync(pendingChange);

    // 3. 记录审计日志
    await _auditLogService.LogAsync(new AuditLog
    {
        TenantId = pendingChange.TenantId,
        UserId = approverId,
        Action = "ApprovedMcpChange",
        EntityType = pendingChange.EntityType,
        EntityId = result.EntityId,
        BeforeData = pendingChange.BeforeData,
        AfterData = pendingChange.AfterData,
        Metadata = new { pendingChangeId, toolName = pendingChange.ToolName }
    });

    // 4. 通知用户（WebSocket）
    await _realtimeService.NotifyUserAsync(
        pendingChange.UserId,
        "PendingChangeApproved",
        new { pendingChangeId, result });
}
```

**验收标准**:
- [ ] 所有 10 个 Tools 正确生成 Diff Preview
- [ ] Diff Preview 准确显示 before/after 数据
- [ ] 审批通过后自动执行操作
- [ ] 审批拒绝后记录日志（不执行操作）
- [ ] 24小时内未审批自动过期
- [ ] WebSocket 实时通知工作正常
- [ ] 审批记录在审计日志中可追溯
- [ ] 租户隔离：用户只能审批自己租户的变更

---

#### 2.1.3 MCP Prompts (AI 提示词模板)

**目标**: 为 AI 工具提供预设的任务模板，提升交互效率

**Prompt 列表** (8个核心 Prompts):

| Prompt Name | 描述 | 使用场景 | 优先级 | 预计工时 |
|-------------|------|----------|--------|---------|
| `generate_prd` | 生成产品需求文档 | 用户描述功能 → AI 生成 PRD | P0 | 3h |
| `split_epic_to_stories` | 将 Epic 拆分为 Stories | Epic 创建后 → AI 自动拆分 | P0 | 3h |
| `estimate_story_points` | 估算 Story Points | Story 创建后 → AI 估算工作量 | P1 | 2h |
| `generate_acceptance_criteria` | 生成验收标准 | Story 缺少 AC → AI 生成候选 AC | P0 | 2h |
| `detect_risks` | 检测项目风险 | 定期扫描 → AI 生成风险报告 | P1 | 3h |
| `generate_standup_summary` | 生成站会纪要 | Sprint 中 → AI 汇总团队进度 | P1 | 2h |
| `suggest_next_sprint_items` | 建议下个 Sprint 任务 | Sprint 规划 → AI 推荐优先级任务 | P2 | 2h |
| `analyze_burndown` | 分析燃尽图趋势 | Sprint 进行中 → AI 分析进度 | P2 | 2h |

**总工时**: 19 小时 (2.5 天)

**技术实现**:
```csharp
// MCP Prompt 定义示例
public class GeneratePrdPrompt : IMcpPrompt
{
    public string Name => "generate_prd";
    public string Description => "Generate a Product Requirements Document (PRD) from a feature description";
    public McpPromptArgument[] Arguments => new[]
    {
        new McpPromptArgument
        {
            Name = "feature_description",
            Description = "A brief description of the feature to be implemented",
            Required = true
        },
        new McpPromptArgument
        {
            Name = "target_users",
            Description = "Target user personas (e.g., 'developers', 'project managers')",
            Required = false
        },
        new McpPromptArgument
        {
            Name = "success_metrics",
            Description = "How to measure success (e.g., 'reduce task creation time by 30%')",
            Required = false
        }
    };

    public Task<McpPromptMessage[]> GetMessagesAsync(
        McpPromptGetRequest request,
        CancellationToken cancellationToken)
    {
        var featureDescription = request.Arguments["feature_description"];
        var targetUsers = request.Arguments.GetValueOrDefault("target_users", "all users");
        var successMetrics = request.Arguments.GetValueOrDefault("success_metrics", "user satisfaction");

        var systemPrompt = new McpPromptMessage
        {
            Role = "system",
            Content = new McpPromptContent
            {
                Type = "text",
                Text = "You are a Product Manager AI assistant for ColaFlow. " +
                       "Your task is to generate a well-structured PRD based on the provided feature description. " +
                       "Follow this structure:\n\n" +
                       "# [Feature Name] PRD\n\n" +
                       "## 1. Background & Goals\n" +
                       "- Business context\n" +
                       "- User pain points\n" +
                       "- Objectives\n\n" +
                       "## 2. Requirements\n" +
                       "### Core Functionality\n" +
                       "- Functional requirement 1\n" +
                       "- Functional requirement 2\n\n" +
                       "### User Scenarios\n" +
                       "- Scenario 1: [User action] → [Expected outcome]\n\n" +
                       "### Priority Levels\n" +
                       "- P0 (Must have): [Requirements]\n" +
                       "- P1 (Should have): [Requirements]\n" +
                       "- P2 (Nice to have): [Requirements]\n\n" +
                       "## 3. Acceptance Criteria\n" +
                       "- [ ] Criterion 1\n" +
                       "- [ ] Performance: [Metric] < [Target]\n\n" +
                       "## 4. Timeline\n" +
                       "- Estimated effort: [X weeks]\n" +
                       "- Target milestone: M[X]"
            }
        };

        var userPrompt = new McpPromptMessage
        {
            Role = "user",
            Content = new McpPromptContent
            {
                Type = "text",
                Text = $"**Feature Description**: {featureDescription}\n\n" +
                       $"**Target Users**: {targetUsers}\n\n" +
                       $"**Success Metrics**: {successMetrics}\n\n" +
                       "Please generate a comprehensive PRD for this feature."
            }
        };

        return Task.FromResult(new[] { systemPrompt, userPrompt });
    }
}
```

**验收标准**:
- [ ] 所有 8 个 Prompts 正确返回提示词消息
- [ ] Prompts 生成的内容符合 ColaFlow 的业务规范
- [ ] AI 使用 Prompts 后输出质量提升 50%+
- [ ] Prompts 支持动态参数（如 featureDescription）
- [ ] Prompts 可通过配置文件自定义（JSON/YAML）

---

#### 2.1.4 API Key 管理与认证

**目标**: 为 MCP 客户端提供安全的认证机制

**核心功能**:

| 功能 | 描述 | API 端点 | 优先级 | 预计工时 |
|------|------|----------|--------|---------|
| 创建 API Key | 生成新的 MCP API Key | POST /api/mcp/keys | P0 | 2h |
| 列出 API Keys | 查看所有 API Keys | GET /api/mcp/keys | P0 | 1h |
| 撤销 API Key | 禁用 API Key | DELETE /api/mcp/keys/{id} | P0 | 1h |
| 刷新 API Key | 重新生成 Key 值 | POST /api/mcp/keys/{id}/refresh | P1 | 2h |
| 设置权限范围 | 限制 Key 的操作范围（只读/读写） | PUT /api/mcp/keys/{id}/permissions | P0 | 3h |
| 设置 IP 白名单 | 限制 Key 的访问 IP | PUT /api/mcp/keys/{id}/ip-whitelist | P1 | 2h |
| API Key 使用统计 | 查看调用次数、成功率 | GET /api/mcp/keys/{id}/stats | P1 | 2h |

**总工时**: 13 小时 (1.5 天)

**API Key 格式**:
```
colaflow_sk_live_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6
^          ^   ^    ^
|          |   |    |
|          |   |    +-- 40字符随机字符串（SHA-256 后存储）
|          |   +------- 环境标识 (live/test)
|          +----------- Key 类型 (sk = Secret Key)
+---------------------- 产品前缀
```

**数据库表设计**:
```sql
CREATE TABLE mcp_api_keys (
    id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    tenant_id UUID NOT NULL REFERENCES tenants(id) ON DELETE CASCADE,
    user_id UUID NOT NULL REFERENCES users(id) ON DELETE CASCADE,
    key_hash VARCHAR(64) NOT NULL UNIQUE, -- SHA-256(key)
    key_prefix VARCHAR(16) NOT NULL, -- 前16字符明文（用于识别）
    name VARCHAR(255) NOT NULL,
    description TEXT,
    permissions JSONB NOT NULL, -- { "resources": ["*"], "tools": ["create_issue"], "read_only": false }
    ip_whitelist JSONB, -- ["192.168.1.0/24", "10.0.0.1"]
    rate_limit_per_minute INT DEFAULT 60,
    last_used_at TIMESTAMPTZ,
    expires_at TIMESTAMPTZ,
    is_active BOOLEAN DEFAULT true,
    created_at TIMESTAMPTZ DEFAULT NOW(),
    updated_at TIMESTAMPTZ DEFAULT NOW(),

    INDEX idx_mcp_api_keys_tenant_id (tenant_id),
    INDEX idx_mcp_api_keys_key_hash (key_hash),
    INDEX idx_mcp_api_keys_user_id (user_id)
);

CREATE TABLE mcp_api_key_usage (
    id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    api_key_id UUID NOT NULL REFERENCES mcp_api_keys(id) ON DELETE CASCADE,
    request_id UUID NOT NULL,
    endpoint VARCHAR(255) NOT NULL, -- "resources/projects.list" or "tools/create_issue"
    method VARCHAR(10) NOT NULL, -- "GET", "POST"
    status_code INT NOT NULL,
    response_time_ms INT NOT NULL,
    ip_address VARCHAR(45) NOT NULL,
    user_agent TEXT,
    error_message TEXT,
    created_at TIMESTAMPTZ DEFAULT NOW(),

    INDEX idx_mcp_api_key_usage_api_key_id (api_key_id),
    INDEX idx_mcp_api_key_usage_created_at (created_at)
);
```

**认证中间件**:
```csharp
public class McpApiKeyAuthenticationMiddleware
{
    public async Task InvokeAsync(HttpContext context, RequestDelegate next)
    {
        // 1. 从 Header 提取 API Key
        if (!context.Request.Headers.TryGetValue("X-MCP-Api-Key", out var apiKeyValue))
        {
            context.Response.StatusCode = 401;
            await context.Response.WriteAsJsonAsync(new { error = "Missing API Key" });
            return;
        }

        // 2. 验证 API Key 格式
        var apiKey = apiKeyValue.ToString();
        if (!apiKey.StartsWith("colaflow_sk_"))
        {
            context.Response.StatusCode = 401;
            await context.Response.WriteAsJsonAsync(new { error = "Invalid API Key format" });
            return;
        }

        // 3. 查询数据库（缓存优化）
        var keyHash = ComputeSha256Hash(apiKey);
        var apiKeyRecord = await _cache.GetOrSetAsync(
            $"mcp_api_key:{keyHash}",
            async () => await _repository.GetByKeyHashAsync(keyHash),
            TimeSpan.FromMinutes(5));

        if (apiKeyRecord == null || !apiKeyRecord.IsActive)
        {
            context.Response.StatusCode = 401;
            await context.Response.WriteAsJsonAsync(new { error = "Invalid or inactive API Key" });
            return;
        }

        // 4. 检查过期时间
        if (apiKeyRecord.ExpiresAt.HasValue && apiKeyRecord.ExpiresAt < DateTime.UtcNow)
        {
            context.Response.StatusCode = 401;
            await context.Response.WriteAsJsonAsync(new { error = "API Key expired" });
            return;
        }

        // 5. 检查 IP 白名单
        var clientIp = context.Connection.RemoteIpAddress?.ToString();
        if (apiKeyRecord.IpWhitelist != null && apiKeyRecord.IpWhitelist.Count > 0)
        {
            if (!IsIpAllowed(clientIp, apiKeyRecord.IpWhitelist))
            {
                context.Response.StatusCode = 403;
                await context.Response.WriteAsJsonAsync(new { error = "IP not whitelisted" });
                return;
            }
        }

        // 6. 速率限制检查
        var rateLimitKey = $"mcp_rate_limit:{apiKeyRecord.Id}";
        var currentCount = await _cache.IncrementAsync(rateLimitKey, TimeSpan.FromMinutes(1));
        if (currentCount > apiKeyRecord.RateLimitPerMinute)
        {
            context.Response.StatusCode = 429;
            await context.Response.WriteAsJsonAsync(new { error = "Rate limit exceeded" });
            return;
        }

        // 7. 设置当前租户上下文
        _tenantContext.SetTenantId(apiKeyRecord.TenantId);
        _currentUser.SetUser(apiKeyRecord.UserId);

        // 8. 更新最后使用时间（异步，不阻塞请求）
        _ = Task.Run(async () =>
        {
            apiKeyRecord.LastUsedAt = DateTime.UtcNow;
            await _repository.UpdateAsync(apiKeyRecord);
        });

        // 9. 记录使用日志（异步）
        _ = Task.Run(async () =>
        {
            await _usageRepository.CreateAsync(new McpApiKeyUsage
            {
                ApiKeyId = apiKeyRecord.Id,
                RequestId = context.TraceIdentifier,
                Endpoint = context.Request.Path,
                Method = context.Request.Method,
                IpAddress = clientIp,
                UserAgent = context.Request.Headers["User-Agent"]
            });
        });

        // 10. 继续处理请求
        await next(context);
    }
}
```

**验收标准**:
- [ ] API Key 创建/撤销功能正常
- [ ] API Key 认证中间件正确拦截未授权请求
- [ ] IP 白名单功能正确工作
- [ ] 速率限制功能正确工作（60 req/min）
- [ ] API Key 使用日志完整记录
- [ ] 租户隔离：API Key 只能访问自己租户的数据
- [ ] 缓存优化：热 API Keys 响应时间 < 10ms

---

#### 2.1.5 Diff Preview UI (人工审批界面)

**目标**: 提供友好的 Web UI，让用户审批 AI 的操作

**核心页面**:

| 页面 | 描述 | 功能 | 优先级 | 预计工时 |
|------|------|------|--------|---------|
| Pending Changes 列表页 | 显示所有待审批变更 | 列表、过滤、排序 | P0 | 4h |
| Diff Preview 详情页 | 显示单个变更的 before/after | 高亮差异、JSON 格式化 | P0 | 6h |
| 审批操作面板 | 批准/拒绝/取消按钮 | 批量操作、审批备注 | P0 | 3h |
| AI 操作历史页 | 查看所有 AI 操作记录 | 时间线、过滤、导出 | P1 | 4h |
| API Key 管理页 | 创建/撤销 API Keys | CRUD 操作、权限设置 | P0 | 5h |

**总工时**: 22 小时 (2.5 天)

**UI 原型 (Pending Changes 列表页)**:
```
┌─────────────────────────────────────────────────────────────────┐
│ Pending AI Changes (3)                       [Approve All] [↻]  │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│ ⏳ PENDING  ·  2 minutes ago  ·  AI Agent: Claude Desktop       │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ CREATE Issue: "Implement MCP Server authentication"         │ │
│ │                                                             │ │
│ │ Tool: create_issue                                          │ │
│ │ Project: ColaFlow Core                                      │ │
│ │                                                             │ │
│ │ Changes:                                                    │ │
│ │ + title: "Implement MCP Server authentication"              │ │
│ │ + type: Task                                                │ │
│ │ + priority: High                                            │ │
│ │ + assignee: @john.doe                                       │ │
│ │                                                             │ │
│ │ [View Diff] [✓ Approve] [✕ Reject]                          │ │
│ └─────────────────────────────────────────────────────────────┘ │
│                                                                 │
│ ⏳ PENDING  ·  5 minutes ago  ·  AI Agent: ChatGPT             │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ UPDATE Issue: "Fix login bug" → Status: Done               │ │
│ │                                                             │ │
│ │ Tool: update_status                                         │ │
│ │ Project: ColaFlow Web                                       │ │
│ │                                                             │ │
│ │ Changes:                                                    │ │
│ │ ~ status: InProgress → Done                                 │ │
│ │                                                             │ │
│ │ [View Diff] [✓ Approve] [✕ Reject]                          │ │
│ └─────────────────────────────────────────────────────────────┘ │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘
```

**Diff Viewer 组件 (JSON Diff)**:
```typescript
import ReactDiffViewer from 'react-diff-viewer-continued';

interface DiffPreviewProps {
  beforeData: any;
  afterData: any;
}

export function DiffPreview({ beforeData, afterData }: DiffPreviewProps) {
  const oldValue = beforeData
    ? JSON.stringify(beforeData, null, 2)
    : '// No previous data (CREATE operation)';
  const newValue = JSON.stringify(afterData, null, 2);

  return (
    <div className="diff-preview">
      <ReactDiffViewer
        oldValue={oldValue}
        newValue={newValue}
        splitView={true}
        showDiffOnly={false}
        useDarkTheme={false}
        leftTitle="Before"
        rightTitle="After"
      />
    </div>
  );
}
```

**验收标准**:
- [ ] Pending Changes 列表正确显示待审批项
- [ ] Diff Preview 正确高亮 before/after 差异
- [ ] 批准操作成功触发后端执行
- [ ] 拒绝操作正确记录日志
- [ ] WebSocket 实时更新（新变更自动出现）
- [ ] 过滤和排序功能正常
- [ ] 批量审批功能正常（选中 3+ 项批量批准）
- [ ] 响应式设计（支持移动端）

---

#### 2.1.6 Claude Desktop 集成 (PoC)

**目标**: 实现首个 AI 工具集成，验证 MCP Server 可用性

**集成步骤**:

1. **配置 Claude Desktop** (5 分钟)
```json
// ~/.config/claude/mcp_config.json
{
  "mcpServers": {
    "colaflow": {
      "command": "node",
      "args": ["/path/to/colaflow-mcp-server/dist/index.js"],
      "env": {
        "COLAFLOW_API_URL": "https://api.colaflow.com",
        "COLAFLOW_API_KEY": "colaflow_sk_live_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6"
      }
    }
  }
}
```

2. **测试场景 1: 自然语言创建任务** (15 分钟)
```
User: "帮我在 ColaFlow 创建一个任务：实现 MCP Server 的 API Key 管理功能，优先级 High，分配给 @john"

Claude: [调用 colaflow://issues.search 查询是否存在类似任务]
Claude: 我没有找到相似的任务，我将为您创建新任务。

[Claude 调用 create_issue tool]

Claude: 我已为您生成任务创建请求：

**任务详情**:
- 标题: 实现 MCP Server 的 API Key 管理功能
- 类型: Task
- 优先级: High
- 分配给: @john

**待审批**: 请在 ColaFlow 仪表板审批此变更。
```

3. **测试场景 2: AI 生成 PRD** (20 分钟)
```
User: "帮我生成一个 PRD，功能是：让用户能够导出项目的燃尽图为 PNG 图片"

Claude: [调用 generate_prd prompt]

Claude: 我已为您生成 PRD 草稿：

# 导出燃尽图为 PNG 图片 - PRD

## 1. Background & Goals
**业务背景**: 用户需要在汇报会议中展示项目进度，但目前 ColaFlow 的燃尽图只能在系统内查看，无法方便地导出到 PPT 或邮件。

**用户痛点**:
- 需要手动截图，图片质量不佳
- 无法批量导出多个 Sprint 的燃尽图
- 无法自定义导出的分辨率和样式

**目标**:
- 支持一键导出燃尽图为 PNG/JPEG/SVG 格式
- 支持自定义分辨率（1920x1080, 3840x2160）
- 导出时间 < 3 秒

## 2. Requirements
### Core Functionality
- [ ] 燃尽图页面添加"导出"按钮
- [ ] 支持 3 种格式：PNG（默认）、JPEG、SVG
- [ ] 支持 3 种分辨率：HD (1280x720), Full HD (1920x1080), 4K (3840x2160)
- [ ] 导出文件自动命名：`{projectName}_{sprintName}_burndown_{date}.png`

### User Scenarios
- Scenario 1: 项目经理在周会前导出当前 Sprint 燃尽图 → 3秒内获得高质量 PNG 文件
- Scenario 2: 批量导出所有 Sprint 燃尽图用于季度汇报 → ZIP 文件下载

### Priority Levels
- P0 (Must have): 单个燃尽图导出 PNG, 默认分辨率 1920x1080
- P1 (Should have): 多格式支持（JPEG, SVG）, 自定义分辨率
- P2 (Nice to have): 批量导出, 自定义样式（颜色、字体）

## 3. Acceptance Criteria
- [ ] 导出功能在所有燃尽图页面可用
- [ ] 导出时间 < 3 秒 (1920x1080 PNG)
- [ ] 导出图片包含完整图例和坐标轴标签
- [ ] 图片质量清晰，适合投影仪展示
- [ ] 多租户隔离：用户只能导出自己租户的燃尽图

## 4. Timeline
- Estimated effort: 3-4 days
- Target milestone: M2

User: 很好！请帮我基于这个 PRD 创建一个 Epic 任务。

Claude: [调用 create_issue tool, type=Epic]

Claude: 我已为您生成 Epic 创建请求，待审批。
```

**验收标准**:
- [ ] Claude Desktop 成功连接 ColaFlow MCP Server
- [ ] Claude 能正确调用所有 Resources（读取数据）
- [ ] Claude 能正确调用所有 Tools（生成 Diff Preview）
- [ ] Claude 能使用 Prompts 生成高质量内容
- [ ] 用户能在 Claude 中自然对话式操作 ColaFlow
- [ ] 所有操作都需人工审批（安全机制生效）

**预计工时**: 8 小时 (1 天) - 集成 + 测试

---

### 2.2 次要功能 (P1 优先级)

#### 2.2.1 MCP Server 性能优化
- [ ] Redis 缓存热数据（Resources）
- [ ] 数据库查询优化（索引、分页）
- [ ] 压缩响应（Gzip/Brotli）
- [ ] CDN 加速（静态资源）

**预计工时**: 8 小时 (1 天)

#### 2.2.2 MCP Server 监控与告警
- [ ] API 调用量监控（Grafana）
- [ ] 错误率告警（> 5% 触发告警）
- [ ] 性能监控（P95 响应时间）
- [ ] 审批通过率跟踪

**预计工时**: 12 小时 (1.5 天)

#### 2.2.3 MCP Client SDK (TypeScript)
- [ ] npm 包：`@colaflow/mcp-client`
- [ ] 封装所有 Resources/Tools/Prompts
- [ ] TypeScript 类型定义
- [ ] 使用示例和文档

**预计工时**: 16 小时 (2 天)

---

### 2.3 未来功能 (P2 优先级, 延后至 M3)

#### 2.3.1 ChatGPT 集成
- [ ] MCP Client for ChatGPT Plugin
- [ ] OAuth 认证流程
- [ ] 聊天上下文保持

**预计工时**: 16 小时 (2 天)

#### 2.3.2 Cursor IDE 集成
- [ ] Cursor MCP 扩展
- [ ] 代码注释 → Issue 自动创建
- [ ] Git commit → Issue 状态自动更新

**预计工时**: 20 小时 (2.5 天)

#### 2.3.3 Batch Operations (批量操作)
- [ ] 批量创建 Issues
- [ ] 批量更新 Status
- [ ] 批量分配 Assignee

**预计工时**: 12 小时 (1.5 天)

---

## 三、用户故事与验收标准

### 3.1 核心用户故事

#### User Story 1: 自然语言创建任务
**作为** 项目经理
**我想要** 在 Claude Desktop 中用自然语言描述任务
**以便于** 快速创建任务而无需打开 ColaFlow Web 界面

**验收标准**:
- [ ] 用户在 Claude 中输入"创建一个任务：修复登录 bug，优先级 High"
- [ ] Claude 调用 `create_issue` tool 生成 Diff Preview
- [ ] 用户在 ColaFlow 仪表板看到待审批变更
- [ ] 用户点击"批准"，任务自动创建在 Backlog
- [ ] 整个流程 < 2 分钟（含审批时间）

**优先级**: P0
**预计工时**: 已包含在 MCP Tools 实现中

---

#### User Story 2: AI 自动生成 PRD
**作为** 产品经理
**我想要** AI 根据我的功能描述自动生成 PRD 草稿
**以便于** 减少 70% 的文档编写时间

**验收标准**:
- [ ] 用户在 Claude 中输入功能描述
- [ ] Claude 调用 `generate_prd` prompt
- [ ] Claude 返回结构化的 PRD（包含背景、需求、验收标准、时间线）
- [ ] PRD 内容准确度 ≥ 80%（人工评估）
- [ ] 用户可直接复制到 Notion/Confluence

**优先级**: P0
**预计工时**: 已包含在 MCP Prompts 实现中

---

#### User Story 3: AI 拆分 Epic 为 Stories
**作为** 开发团队 Lead
**我想要** AI 自动将大 Epic 拆分为多个可执行的 Stories
**以便于** 团队能快速开始 Sprint 规划

**验收标准**:
- [ ] 用户在 Claude 中输入"将 Epic #123 拆分为 Stories"
- [ ] Claude 读取 Epic 详情（调用 `issues.get` resource）
- [ ] Claude 调用 `split_epic_to_stories` prompt
- [ ] Claude 生成 3-8 个 Story 建议（包含标题、描述、验收标准）
- [ ] 用户选择需要的 Stories，Claude 批量创建（调用 `create_issue` tool）
- [ ] 所有 Stories 自动关联到 Epic（调用 `link_issues` tool）

**优先级**: P0
**预计工时**: 已包含在功能实现中

---

#### User Story 4: AI 检测项目风险
**作为** 项目经理
**我想要** AI 定期扫描项目并生成风险报告
**以便于** 提前识别进度延误和资源瓶颈

**验收标准**:
- [ ] 用户在 Claude 中输入"检测项目 #456 的风险"
- [ ] Claude 调用 `detect_risks` prompt
- [ ] Claude 分析以下数据：
  - 未完成任务数量和截止日期
  - 团队成员工作负载
  - Sprint 燃尽图趋势
  - 高优先级 Bug 数量
- [ ] Claude 生成风险报告（包含风险等级、影响、建议）
- [ ] 风险报告准确率 ≥ 75%（对比人工评估）

**优先级**: P1
**预计工时**: 已包含在 MCP Prompts 实现中

---

#### User Story 5: 审批 AI 操作
**作为** 项目管理员
**我想要** 在批准 AI 的操作前看到详细的 Diff Preview
**以便于** 确保 AI 不会误操作重要数据

**验收标准**:
- [ ] AI 执行写操作后，用户在 ColaFlow 收到 WebSocket 通知
- [ ] 用户打开 Pending Changes 页面，看到待审批项
- [ ] 用户点击"View Diff"，看到 JSON 格式的 before/after 对比
- [ ] 差异高亮显示（绿色=新增，红色=删除，黄色=修改）
- [ ] 用户点击"批准"，操作立即执行（< 1 秒）
- [ ] 用户点击"拒绝"，操作取消并记录日志

**优先级**: P0
**预计工时**: 已包含在 Diff Preview UI 实现中

---

### 3.2 次要用户故事 (P1)

#### User Story 6: 批量审批 AI 操作
**作为** 项目管理员
**我想要** 批量批准多个低风险的 AI 操作
**以便于** 提高审批效率

**验收标准**:
- [ ] 用户在 Pending Changes 页面选中 3+ 待审批项
- [ ] 用户点击"批量批准"按钮
- [ ] 系统并行执行所有操作（总耗时 < 5 秒）
- [ ] 成功/失败结果分别显示
- [ ] 失败的操作不影响成功的操作

**预计工时**: 4 小时

---

#### User Story 7: API Key 管理
**作为** 租户管理员
**我想要** 创建多个 API Keys 并设置不同的权限
**以便于** 为不同的 AI 工具提供差异化的访问控制

**验收标准**:
- [ ] 管理员在设置页面点击"创建 API Key"
- [ ] 管理员输入名称、描述、权限范围（只读/读写）
- [ ] 系统生成 API Key 并显示（仅显示一次）
- [ ] 管理员可以撤销 API Key（立即失效）
- [ ] 管理员可以查看 API Key 使用统计（调用次数、错误率）

**预计工时**: 已包含在 API Key 管理实现中

---

## 四、时间规划与里程碑

### 4.1 M2 总体时间线

**M2 阶段**: 2025-12-01 至 2026-03-31 (16 周)

**阶段划分**:
- **Phase 1: Foundation** (Week 1-2) - 基础设施搭建
- **Phase 2: Resources** (Week 3-4) - 只读 API 实现
- **Phase 3: Tools + Diff Preview** (Week 5-8) - 写操作 + 审批流程
- **Phase 4: Security & Audit** (Week 9-10) - 安全加固
- **Phase 5: Claude Integration** (Week 11-12) - AI 工具集成
- **Phase 6: Testing & Optimization** (Week 13-14) - 全面测试
- **Phase 7: Documentation** (Week 15-16) - 文档和培训

---

### 4.2 详细周计划

#### Week 1-2: Phase 1 - Foundation (基础设施搭建)

**目标**: 搭建 MCP Server 项目结构，完成数据库设计和基础认证

**任务列表**:
- [ ] **Day 1-2**: MCP Server 项目初始化
  - 安装 ModelContextProtocol SDK v0.4.0 (C# 版本)
  - 创建 ColaFlow.McpServer 项目（Clean Architecture 结构）
  - 配置 DI 容器（Services, Repositories, DbContext）
  - 配置日志（Serilog + Application Insights）
  - 预计工时: 12 小时

- [ ] **Day 3-4**: 数据库设计与 Migration
  - 创建 3 张表：`mcp_api_keys`, `mcp_pending_changes`, `mcp_api_key_usage`
  - 设计索引和外键约束
  - 编写 EF Core Migration
  - 编写数据库 Seed 脚本（测试数据）
  - 预计工时: 12 小时

- [ ] **Day 5-6**: API Key 认证系统
  - 实现 API Key 生成逻辑（SHA-256 + Redis 缓存）
  - 实现认证中间件（McpApiKeyAuthenticationMiddleware）
  - 实现速率限制（基于 Redis）
  - 实现 IP 白名单验证
  - 预计工时: 12 小时

- [ ] **Day 7**: API Key 管理 API
  - 7 个 API 端点（Create, List, Revoke, Refresh, Permissions, IP Whitelist, Stats）
  - 单元测试（90% 覆盖率）
  - 预计工时: 6 小时

- [ ] **Day 8-9**: MCP Server 基础架构
  - 实现 McpServerBuilder 配置
  - 实现 IMcpResource 接口和基类
  - 实现 IMcpTool 接口和基类
  - 实现 IMcpPrompt 接口和基类
  - 实现 McpRequestHandler（路由请求到对应 Resource/Tool/Prompt）
  - 预计工时: 12 小时

- [ ] **Day 10**: 集成测试 + Phase 1 验收
  - 端到端测试：API Key 创建 → 认证 → 调用 MCP Server
  - 性能测试：1000+ requests/s 压测
  - 文档：Phase 1 技术文档
  - 预计工时: 6 小时

**Phase 1 交付物**:
- ✅ MCP Server 项目骨架（Clean Architecture）
- ✅ 数据库 Schema + Migration
- ✅ API Key 认证系统（含速率限制、IP 白名单）
- ✅ API Key 管理 API (7 endpoints)
- ✅ MCP Server 基础架构（Resource/Tool/Prompt 接口）

**Phase 1 验收标准**:
- [ ] API Key 认证中间件正确拦截未授权请求
- [ ] 速率限制功能正确工作（60 req/min）
- [ ] IP 白名单功能正确工作
- [ ] 集成测试通过率 ≥ 95%
- [ ] API 响应时间 < 50ms (P95)

---

#### Week 3-4: Phase 2 - Resources (只读 API 实现)

**目标**: 实现所有 MCP Resources，让 AI 工具能读取 ColaFlow 数据

**任务列表**:
- [ ] **Day 11-12**: Projects Resources (2个)
  - `projects.list` - 列出所有项目
  - `projects.get` - 获取项目详情
  - Redis 缓存优化（5 分钟 TTL）
  - 单元测试 + 集成测试
  - 预计工时: 8 小时

- [ ] **Day 13-14**: Issues Resources (4个)
  - `issues.search` - 搜索任务（支持过滤、分页）
  - `issues.get` - 获取任务详情
  - `epics.list` - 列出所有 Epic
  - `stories.list` - 列出所有 Story
  - `tasks.list` - 列出所有 Task
  - 预计工时: 12 小时

- [ ] **Day 15-16**: Sprints & Users Resources (4个)
  - `sprints.current` - 获取当前 Sprint
  - `sprints.backlog` - 获取 Backlog
  - `users.list` - 列出团队成员
  - `reports.burndown` - 获取燃尽图数据
  - 预计工时: 10 小时

- [ ] **Day 17**: Resource 缓存优化
  - 实现 Redis 缓存层（IResourceCache）
  - 热数据预加载（用户登录时加载常用 Resources）
  - 缓存失效策略（写操作自动失效相关缓存）
  - 预计工时: 6 小时

- [ ] **Day 18-19**: 集成测试 + Phase 2 验收
  - Claude Desktop 集成测试（读取项目/任务数据）
  - 性能测试：1000+ issues 场景，响应时间 < 200ms
  - 租户隔离测试：跨租户数据访问验证
  - 文档：Resources API 文档（OpenAPI/Swagger）
  - 预计工时: 10 小时

**Phase 2 交付物**:
- ✅ 11 个 MCP Resources 实现
- ✅ Redis 缓存优化（命中率 > 80%）
- ✅ Resources API 文档（Swagger）
- ✅ Claude Desktop PoC（只读操作）

**Phase 2 验收标准**:
- [ ] 所有 Resources 正确返回数据
- [ ] 租户隔离 100% 验证通过
- [ ] 性能：P95 响应时间 < 200ms
- [ ] 缓存命中率 > 80%
- [ ] Claude Desktop 能成功读取 ColaFlow 数据

---

#### Week 5-8: Phase 3 - Tools + Diff Preview (写操作 + 审批流程)

**目标**: 实现所有 MCP Tools，搭建 Diff Preview 机制和人工审批流程

**任务列表**:
- [ ] **Day 20-22**: Pending Changes 数据库设计
  - `mcp_pending_changes` 表 Schema 优化
  - Pending Change 状态机（Pending → Approved/Rejected → Executed/Cancelled）
  - Domain Events（PendingChangeCreated, Approved, Rejected, Expired）
  - 预计工时: 12 小时

- [ ] **Day 23-25**: Core Tools 实现 (4个)
  - `create_project` - 创建新项目
  - `create_issue` - 创建新任务
  - `update_issue` - 更新任务详情
  - `update_status` - 更改任务状态
  - Diff Preview 生成逻辑（JSON Diff）
  - 预计工时: 18 hours

- [ ] **Day 26-28**: Assignment & Sprint Tools (4个)
  - `assign_issue` - 分配任务
  - `create_sprint` - 创建 Sprint
  - `start_sprint` - 启动 Sprint
  - `create_epic` - 创建 Epic
  - 预计工时: 14 小时

- [ ] **Day 29-30**: Advanced Tools (2个)
  - `add_comment` - 添加评论
  - `link_issues` - 关联任务（父子关系）
  - 预计工时: 8 小时

- [ ] **Day 31-33**: 审批流程 API (5个端点)
  - GET /api/mcp/pending-changes - 列出待审批变更
  - GET /api/mcp/pending-changes/{id} - 获取变更详情
  - POST /api/mcp/pending-changes/{id}/approve - 批准（自动执行）
  - POST /api/mcp/pending-changes/{id}/reject - 拒绝
  - DELETE /api/mcp/pending-changes/{id} - 取消
  - 审批后自动执行 Tool 操作
  - 预计工时: 14 小时

- [ ] **Day 34-36**: Diff Preview UI (前端)
  - Pending Changes 列表页（React）
  - Diff Preview 详情页（react-diff-viewer-continued）
  - 审批操作面板（批准/拒绝/批量操作）
  - WebSocket 实时更新（SignalR 集成）
  - 预计工时: 20 小时

- [ ] **Day 37-38**: 集成测试 + Phase 3 验收
  - 端到端测试：AI 创建任务 → 人工审批 → 自动执行
  - 审批拒绝测试：确保拒绝后不执行操作
  - 过期测试：24 小时未审批自动过期
  - WebSocket 实时性测试：通知延迟 < 1 秒
  - Claude Desktop PoC：完整读写流程
  - 预计工时: 12 小时

**Phase 3 交付物**:
- ✅ 10 个 MCP Tools 实现
- ✅ Diff Preview 机制（JSON Diff）
- ✅ 审批流程 API (5 endpoints)
- ✅ Diff Preview UI（React）
- ✅ Claude Desktop PoC（读写操作）

**Phase 3 验收标准**:
- [ ] 所有 Tools 正确生成 Diff Preview
- [ ] 审批通过后自动执行操作（成功率 ≥ 99%）
- [ ] 审批拒绝后不执行操作（100% 验证）
- [ ] 24 小时未审批自动过期
- [ ] WebSocket 通知延迟 < 1 秒
- [ ] Claude Desktop 能完整执行读写操作

---

#### Week 9-10: Phase 4 - Security & Audit (安全加固)

**目标**: 实现字段级权限控制、审计日志、回滚机制

**任务列表**:
- [ ] **Day 39-40**: 字段级权限控制
  - 白名单配置（JSON）：哪些字段可以被 AI 读写
  - 运行时权限验证（Middleware）
  - 敏感字段保护（如 API Keys, Passwords）
  - 预计工时: 10 小时

- [ ] **Day 41-42**: MCP Audit Log (MCP 操作日志)
  - `mcp_audit_logs` 表设计
  - 记录所有 Tool 调用（入参、出参、耗时、状态）
  - 记录所有审批操作（谁批准/拒绝了什么）
  - 审计日志查询 API（GET /api/mcp/audit-logs）
  - 预计工时: 12 小时

- [ ] **Day 43-44**: 回滚机制
  - 回滚 API：POST /api/mcp/pending-changes/{id}/rollback
  - 补偿事务模式：回滚操作本身也记录审计日志
  - 回滚限制：只能回滚 7 天内的操作
  - 版本冲突检测：回滚前检查数据是否被修改
  - 预计工时: 12 小时

- [ ] **Day 45-46**: 安全测试
  - OWASP Top 10 安全扫描（SQL Injection, XSS, CSRF）
  - 租户隔离安全测试（100+ 场景）
  - API Key 泄露测试（撤销后立即失效）
  - 速率限制测试（1000+ req/s 攻击）
  - 预计工时: 12 小时

- [ ] **Day 47-48**: Phase 4 验收
  - 渗透测试报告
  - 安全审计报告
  - 性能测试报告（1000+ users, 10000+ issues）
  - 文档：安全最佳实践指南
  - 预计工时: 8 小时

**Phase 4 交付物**:
- ✅ 字段级权限控制
- ✅ MCP Audit Log（完整日志）
- ✅ 回滚机制（7 天内可回滚）
- ✅ 安全测试报告（无 CRITICAL 漏洞）

**Phase 4 验收标准**:
- [ ] 字段级权限正确拦截未授权操作
- [ ] 审计日志完整记录所有 MCP 操作
- [ ] 回滚功能正确工作（10+ 测试场景）
- [ ] OWASP Top 10 无 CRITICAL 漏洞
- [ ] 租户隔离 100% 验证通过

---

#### Week 11-12: Phase 5 - Claude Integration (AI 工具集成)

**目标**: 实现 Claude Desktop 集成，验证完整的 AI 辅助工作流

**任务列表**:
- [ ] **Day 49-50**: Claude Desktop 配置
  - 编写 MCP Server Wrapper（Node.js）
  - 配置 mcp_config.json
  - 本地测试：Claude Desktop 连接 ColaFlow
  - 预计工时: 10 小时

- [ ] **Day 51-52**: MCP Prompts 实现 (8个)
  - `generate_prd` - 生成 PRD
  - `split_epic_to_stories` - 拆分 Epic
  - `estimate_story_points` - 估算工作量
  - `generate_acceptance_criteria` - 生成验收标准
  - `detect_risks` - 风险检测
  - `generate_standup_summary` - 站会纪要
  - `suggest_next_sprint_items` - 推荐 Sprint 任务
  - `analyze_burndown` - 分析燃尽图
  - 预计工时: 16 小时

- [ ] **Day 53-54**: 端到端测试场景
  - 场景 1：自然语言创建任务
  - 场景 2：AI 生成 PRD
  - 场景 3：AI 拆分 Epic 为 Stories
  - 场景 4：AI 检测项目风险
  - 场景 5：AI 生成站会纪要
  - 每个场景录屏演示
  - 预计工时: 12 小时

- [ ] **Day 55-56**: Phase 5 验收
  - Claude Desktop 集成测试报告
  - 用户体验测试（5+ 内部用户）
  - AI 输出质量评估（准确率 ≥ 80%）
  - 文档：Claude Desktop 集成指南
  - 预计工时: 8 小时

**Phase 5 交付物**:
- ✅ Claude Desktop 集成（完整配置）
- ✅ 8 个 MCP Prompts 实现
- ✅ 5 个端到端测试场景（含录屏）
- ✅ Claude Desktop 集成指南

**Phase 5 验收标准**:
- [ ] Claude Desktop 成功连接 ColaFlow
- [ ] 所有 Prompts 正确返回提示词
- [ ] 5 个测试场景全部通过
- [ ] AI 输出质量准确率 ≥ 80%
- [ ] 用户体验评分 ≥ 4.0/5.0

---

#### Week 13-14: Phase 6 - Testing & Optimization (全面测试)

**目标**: 全面测试、性能优化、Bug 修复

**任务列表**:
- [ ] **Day 57-59**: 性能测试
  - 1000+ concurrent users
  - 10000+ issues
  - 1000+ MCP requests/minute
  - 数据库查询优化（EXPLAIN ANALYZE）
  - Redis 缓存优化
  - 预计工时: 18 小时

- [ ] **Day 60-62**: 负载测试
  - Apache JMeter 压测（1000+ req/s）
  - WebSocket 并发测试（100+ connections）
  - 内存泄漏检测（dotMemory）
  - CPU 瓶颈分析（dotTrace）
  - 预计工时: 18 小时

- [ ] **Day 63-65**: Bug 修复
  - 修复性能测试中发现的问题
  - 修复负载测试中发现的问题
  - 修复用户反馈的 UI 问题
  - 回归测试（确保修复没有引入新问题）
  - 预计工时: 18 小时

- [ ] **Day 66-67**: Phase 6 验收
  - 性能测试报告（所有指标达标）
  - 负载测试报告（无崩溃、无内存泄漏）
  - Bug 修复报告（所有 P0/P1 bugs 已修复）
  - 预计工时: 10 小时

**Phase 6 交付物**:
- ✅ 性能测试报告（所有 KPIs 达标）
- ✅ 负载测试报告（1000+ req/s 稳定）
- ✅ Bug 修复报告（0 P0 bugs）

**Phase 6 验收标准**:
- [ ] API 响应时间：P95 < 200ms, P99 < 500ms
- [ ] 并发支持：1000+ users 稳定运行
- [ ] 内存使用：< 2GB (1000+ users 场景)
- [ ] CPU 使用：< 60% (正常负载)
- [ ] 无崩溃、无内存泄漏

---

#### Week 15-16: Phase 7 - Documentation (文档和培训)

**目标**: 完善技术文档、用户指南、培训材料

**任务列表**:
- [ ] **Day 68-70**: API 文档
  - MCP Resources 文档（11个 Resources）
  - MCP Tools 文档（10个 Tools）
  - MCP Prompts 文档（8个 Prompts）
  - OpenAPI/Swagger 规范
  - Postman Collection
  - 预计工时: 18 小时

- [ ] **Day 71-73**: 集成指南
  - Claude Desktop 集成指南（详细步骤 + 截图）
  - ChatGPT 集成指南（准备 M3）
  - Cursor IDE 集成指南（准备 M3）
  - MCP Client SDK 使用指南（TypeScript）
  - 预计工时: 18 小时

- [ ] **Day 74-76**: 用户指南
  - 管理员指南（API Key 管理、权限设置）
  - 用户指南（如何使用 AI 助手）
  - 最佳实践（如何编写高质量 Prompts）
  - 故障排除（常见问题 FAQ）
  - 预计工时: 18 小时

- [ ] **Day 77-79**: 培训材料
  - 视频教程（5 个场景演示，共 30 分钟）
  - 幻灯片（M2 产品发布会 PPT）
  - 发布公告（博客文章、社交媒体）
  - 预计工时: 18 小时

- [ ] **Day 80**: M2 完成验收
  - 最终验收测试（所有 KPIs 达标）
  - 产品发布会准备
  - M2 阶段回顾报告
  - M3 规划启动
  - 预计工时: 8 小时

**Phase 7 交付物**:
- ✅ 完整 API 文档（Swagger + Postman）
- ✅ 集成指南（Claude Desktop + ChatGPT + Cursor）
- ✅ 用户指南（管理员 + 用户 + 最佳实践）
- ✅ 培训材料（视频 + PPT + 博客）

**Phase 7 验收标准**:
- [ ] API 文档完整（100% 覆盖所有接口）
- [ ] 集成指南可操作（任何人可按指南完成集成）
- [ ] 用户指南清晰（用户可自助解决 90% 问题）
- [ ] 培训材料质量高（视频播放量 > 100, 点赞率 > 90%）

---

### 4.3 关键里程碑

| 里程碑 | 日期 | 交付物 | 验收标准 |
|--------|------|--------|---------|
| M2.1: Foundation Complete | Week 2 (2025-12-14) | MCP Server 基础架构 + API Key 认证 | 集成测试通过率 ≥ 95% |
| M2.2: Resources Complete | Week 4 (2025-12-28) | 11 个 MCP Resources 实现 | Claude Desktop 能读取数据 |
| M2.3: Tools Complete | Week 8 (2026-01-25) | 10 个 MCP Tools + Diff Preview UI | Claude Desktop 能执行写操作 |
| M2.4: Security Complete | Week 10 (2026-02-08) | 字段级权限 + 审计日志 + 回滚 | 无 CRITICAL 安全漏洞 |
| M2.5: Claude Integration | Week 12 (2026-02-22) | Claude Desktop 完整集成 + 8 Prompts | 5 个测试场景全部通过 |
| M2.6: Testing Complete | Week 14 (2026-03-08) | 性能测试 + 负载测试 + Bug 修复 | 所有 KPIs 达标 |
| M2.7: M2 Release | Week 16 (2026-03-22) | 完整文档 + 培训材料 + 产品发布 | M2 验收通过 |

---

## 五、验收标准与 KPI

### 5.1 功能完整性 KPI

| 指标 | 目标 | 测量方法 |
|------|------|---------|
| MCP Resources 实现率 | 100% (11/11) | 单元测试 + 集成测试 |
| MCP Tools 实现率 | 100% (10/10) | Diff Preview 生成成功率 |
| MCP Prompts 实现率 | 100% (8/8) | AI 输出质量评估 |
| API Key 管理功能 | 100% (7/7 endpoints) | 功能测试 |
| Diff Preview UI 完整性 | 100% (所有功能) | UI 测试 |

---

### 5.2 性能 KPI

| 指标 | 目标 | 测量方法 |
|------|------|---------|
| API 响应时间（P95） | < 200ms | Apache JMeter 压测 |
| API 响应时间（P99） | < 500ms | Apache JMeter 压测 |
| 并发支持 | 1000+ users | 负载测试 |
| MCP 请求吞吐量 | 1000+ req/min | 压测 + 监控 |
| 数据库查询时间 | < 10ms (单次查询) | EF Core 日志分析 |
| Redis 缓存命中率 | > 80% | Redis Monitoring |
| WebSocket 通知延迟 | < 1s | SignalR 监控 |

---

### 5.3 安全 KPI

| 指标 | 目标 | 测量方法 |
|------|------|---------|
| 租户隔离验证通过率 | 100% | 安全测试（100+ 场景） |
| OWASP Top 10 漏洞 | 0 CRITICAL | 安全扫描工具 |
| API Key 认证成功率 | 100% | 集成测试 |
| 审批通过率 | ≥ 90% | 用户行为分析 |
| 回滚成功率 | 100% | 功能测试（10+ 场景） |
| 审计日志完整性 | 100% | 日志审计 |

---

### 5.4 AI 输出质量 KPI

| 指标 | 目标 | 测量方法 |
|------|------|---------|
| PRD 生成准确率 | ≥ 80% | 人工评估（5+ 样本） |
| Epic 拆分合理性 | ≥ 75% | 人工评估（5+ 样本） |
| 风险检测准确率 | ≥ 75% | 对比人工评估 |
| Story Points 估算误差 | ≤ 30% | 对比实际完成时间 |
| 验收标准生成质量 | ≥ 80% | 人工评估（5+ 样本） |

---

### 5.5 用户体验 KPI

| 指标 | 目标 | 测量方法 |
|------|------|---------|
| AI 操作成功率 | ≥ 95% | 系统日志分析 |
| 审批流程完成时间 | < 2 分钟 (平均) | 用户行为分析 |
| 用户满意度 | ≥ 4.0/5.0 | 用户调查问卷（5+ 用户） |
| AI 减少手动工作量 | ≥ 50% | 时间追踪对比 |
| Diff Preview 可读性 | ≥ 4.5/5.0 | 用户调查问卷 |

---

### 5.6 项目管理 KPI

| 指标 | 目标 | 测量方法 |
|------|------|---------|
| M2 按时完成率 | 100% (16周内完成) | 项目进度跟踪 |
| Sprint 燃尽图趋势 | 线性递减 | Sprint 回顾 |
| Bug 修复及时性 | P0 bugs < 24h, P1 bugs < 3 days | Bug 追踪系统 |
| 代码审查覆盖率 | 100% (所有 PR) | GitHub PR 统计 |
| 测试覆盖率 | ≥ 80% | Code Coverage 工具 |

---

## 六、风险识别与应对策略

### 6.1 技术风险

#### 风险 1: MCP SDK 不成熟
**描述**: ModelContextProtocol SDK v0.4.0 是新技术，可能缺少必要功能或存在 bug

**影响**: 高
**概率**: 中 (40%)
**严重程度**: MEDIUM

**应对策略**:
1. **缓解措施**:
   - Week 1-2 提前验证 SDK 核心功能（Resources/Tools/Prompts）
   - 准备 Fallback 方案：如果 SDK 不可用，自己实现 MCP 协议（基于 JSON-RPC 2.0）
   - 与 MCP 社区保持联系，及时反馈问题
2. **应急计划**:
   - 如果 SDK 严重不可用（Week 4 前发现），切换到自研 MCP 实现
   - 预留 2 周 buffer 时间用于 SDK 问题处理
3. **监控指标**:
   - SDK bug 数量（目标: < 5 个 CRITICAL bugs）
   - SDK 功能完整性（目标: 100% 核心功能可用）

---

#### 风险 2: Diff Preview 性能问题
**描述**: JSON Diff 计算可能较慢，影响用户体验

**影响**: 中
**概率**: 中 (30%)
**严重程度**: LOW

**应对策略**:
1. **缓解措施**:
   - 使用高性能 Diff 库（如 `JsonDiffPatch.Net`）
   - 对大对象（> 10KB）进行异步 Diff 计算
   - 前端使用虚拟滚动（react-window）优化大 Diff 显示
2. **应急计划**:
   - 如果 Diff 计算 > 5s，改为后台异步计算 + WebSocket 通知
   - 提供"简化 Diff"模式（仅显示关键字段变更）
3. **监控指标**:
   - Diff 计算时间（目标: P95 < 500ms）
   - 用户投诉率（目标: < 5%）

---

#### 风险 3: 数据库性能瓶颈
**描述**: 1000+ users, 10000+ issues 场景下，数据库查询可能较慢

**影响**: 高
**概率**: 低 (20%)
**严重程度**: MEDIUM

**应对策略**:
1. **缓解措施**:
   - Week 6 开始性能压测（提前发现瓶颈）
   - 添加更多复合索引（针对 MCP Resources 常用查询）
   - 使用 Redis 缓存热数据（Projects, Issues）
   - 考虑读写分离（CQRS 架构已就绪）
2. **应急计划**:
   - 如果查询 > 100ms，启用 PostgreSQL 查询优化（EXPLAIN ANALYZE）
   - 如果仍不够快，引入 Elasticsearch 做全文搜索
3. **监控指标**:
   - 数据库查询时间（目标: P95 < 10ms）
   - 慢查询数量（目标: < 1% queries）

---

### 6.2 安全风险

#### 风险 4: AI 误操作导致数据损坏
**描述**: AI 生成错误的 Tool 参数，导致数据被错误修改或删除

**影响**: 高
**概率**: 中 (30%)
**严重程度**: HIGH

**应对策略**:
1. **缓解措施**:
   - 所有写操作强制人工审批（Diff Preview 机制）
   - 关键操作（删除、批量修改）增加二次确认
   - 完整的审计日志 + 7 天回滚能力
   - 字段级权限控制（敏感字段 AI 不可修改）
2. **应急计划**:
   - 如果发生误操作，立即使用回滚功能恢复数据
   - 提供"撤销"按钮（5 分钟内可一键撤销）
   - 定期数据库备份（每日全量 + 每小时增量）
3. **监控指标**:
   - 误操作率（目标: < 1%）
   - 回滚使用率（目标: < 5%）
   - 审批拒绝率（目标: 5-10%，说明 AI 有错误但被拦截）

---

#### 风险 5: API Key 泄露
**描述**: 用户不慎将 API Key 泄露到公共代码库（如 GitHub）

**影响**: 高
**概率**: 中 (40%)
**严重程度**: CRITICAL

**应对策略**:
1. **缓解措施**:
   - API Key 创建时显示安全提示（"请妥善保管，仅显示一次"）
   - 实现 API Key 前缀明文存储（方便识别哪个 Key 泄露）
   - 提供"紧急撤销"功能（一键撤销所有 Keys）
   - IP 白名单功能（限制 Key 只能从特定 IP 访问）
   - 集成 GitHub Secret Scanning（自动检测泄露的 Keys）
2. **应急计划**:
   - 如果检测到 Key 泄露，立即自动撤销并通知用户
   - 提供"泄露通知"邮件（告知风险和修复步骤）
3. **监控指标**:
   - API Key 泄露检测率（目标: 100% 检测到）
   - 泄露后撤销时间（目标: < 5 分钟）
   - 用户安全意识评分（目标: ≥ 4.0/5.0）

---

### 6.3 进度风险

#### 风险 6: M2 完成时间延期
**描述**: 16 周计划过于乐观，可能延期至 18-20 周

**影响**: 中
**概率**: 高 (50%)
**严重程度**: MEDIUM

**应对策略**:
1. **缓解措施**:
   - 预留 2 周 buffer 时间（实际规划 14 周核心功能）
   - 优先完成 P0 功能，P1/P2 功能可延后至 M2.5
   - 每 2 周进行 Sprint 回顾，及时调整计划
   - 前后端并行开发，减少依赖阻塞
2. **应急计划**:
   - 如果 Week 10 进度 < 60%，考虑砍掉部分 P2 功能
   - 如果 Week 14 无法完成，延后至 Week 18（M2.5 小版本）
3. **监控指标**:
   - Sprint 燃尽图趋势（目标: 线性递减）
   - 每周完成任务数（目标: 10+ tasks/week）
   - M2 完成度（Week 8: 50%, Week 12: 75%, Week 16: 100%）

---

#### 风险 7: 人力资源不足
**描述**: 后端/前端开发人员不足，导致进度延误

**影响**: 高
**概率**: 中 (30%)
**严重程度**: HIGH

**应对策略**:
1. **缓解措施**:
   - 提前招聘 1-2 名后端开发工程师（Week 4 前到岗）
   - 外包部分 UI 开发工作（Diff Preview UI, API Key 管理页）
   - 使用低代码工具加速前端开发（如 Ant Design Pro）
   - 自动化测试（减少人工测试工作量）
2. **应急计划**:
   - 如果人力不足，优先完成 P0 功能
   - 延后 P1/P2 功能至 M2.5 或 M3
3. **监控指标**:
   - 团队人数（目标: 2 后端 + 1 前端 + 1 QA）
   - 人均任务数（目标: < 10 tasks/person）
   - 加班时间（目标: < 10h/week）

---

### 6.4 业务风险

#### 风险 8: AI 输出质量不达标
**描述**: AI 生成的 PRD/Story/风险报告质量不高，用户不信任 AI

**影响**: 高
**概率**: 中 (40%)
**严重程度**: MEDIUM

**应对策略**:
1. **缓解措施**:
   - Week 11 开始进行 AI 输出质量评估（5+ 样本）
   - 优化 Prompts（增加示例、约束条件）
   - 提供"AI 助手模式"（AI 生成草稿，人工润色）
   - 收集用户反馈，持续迭代 Prompts
2. **应急计划**:
   - 如果准确率 < 70%，暂停发布 AI 功能
   - 进行 Prompts 专项优化（2-3 周）
   - 考虑切换到更强的 AI 模型（如 GPT-4o）
3. **监控指标**:
   - AI 输出准确率（目标: ≥ 80%）
   - 用户编辑率（目标: < 30%，说明 AI 输出质量高）
   - 用户满意度（目标: ≥ 4.0/5.0）

---

#### 风险 9: 用户采用率低
**描述**: 用户不习惯使用 AI 助手，仍然手动操作

**影响**: 中
**概率**: 中 (30%)
**严重程度**: LOW

**应对策略**:
1. **缓解措施**:
   - Week 15-16 制作详细的培训材料（视频 + 文档）
   - 内部试点（5+ 用户），收集反馈并优化
   - 提供"新手引导"（首次使用时逐步教学）
   - 提供"快捷操作"提示（在合适的时机推荐使用 AI）
2. **应急计划**:
   - 如果采用率 < 30%，进行用户调研（找出阻碍因素）
   - 优化 UX（降低学习成本）
   - 提供激励机制（使用 AI 完成任务获得徽章）
3. **监控指标**:
   - AI 操作数量（目标: ≥ 50% 任务通过 AI 创建）
   - 活跃用户数（目标: ≥ 80% 用户使用 AI 功能）
   - 用户留存率（目标: ≥ 90% 用户持续使用）

---

## 七、依赖与约束

### 7.1 技术依赖

| 依赖项 | 状态 | 风险等级 | 应对措施 |
|--------|------|---------|---------|
| M1 核心功能完成 | ✅ 85% 完成 (Day 14) | LOW | M1 剩余任务在 M2 Week 1 前完成 |
| ModelContextProtocol SDK v0.4.0 | ⏳ 待验证 | MEDIUM | Week 1 验证，准备 Fallback 方案 |
| PostgreSQL 16+ | ✅ 已部署 | LOW | 稳定版本，性能达标 |
| Redis 7+ | ⏳ 待部署 | LOW | Week 2 前部署，用于缓存和速率限制 |
| Claude Desktop 最新版 | ⏳ 待测试 | MEDIUM | Week 11 开始测试，确保兼容性 |

---

### 7.2 团队依赖

| 角色 | 人数 | 时间投入 | 风险 |
|------|------|---------|------|
| 后端开发工程师 | 2 人 | 100% (16周) | MEDIUM - 人力不足 |
| 前端开发工程师 | 1 人 | 80% (12周) | LOW - 可外包部分工作 |
| QA 工程师 | 1 人 | 60% (10周) | LOW - 自动化测试 |
| 架构师 | 1 人 | 20% (3周) | LOW - 技术评审和指导 |
| 产品经理 | 1 人 | 30% (5周) | LOW - 需求澄清和验收 |

**总人力**: 2 后端 + 1 前端 + 1 QA + 0.2 架构 + 0.3 PM = **4.5 人月 × 4 月 = 18 人月**

---

### 7.3 外部约束

| 约束项 | 描述 | 影响 |
|--------|------|------|
| 预算限制 | M2 预算上限 $50,000 | MEDIUM - 可能需要砍掉部分 P2 功能 |
| 时间限制 | M2 必须在 2026-03-31 前完成 | HIGH - 影响 M3 启动时间 |
| 合规要求 | GDPR + SOC 2 合规（企业客户要求） | HIGH - 必须满足 |
| 技术栈限制 | 必须使用 .NET 9 + PostgreSQL | LOW - 已确定 |
| AI 模型限制 | Claude/ChatGPT API 调用额度 | LOW - 按需扩展 |

---

## 八、成功标准

### 8.1 M2 完成的定义 (Definition of Done)

**功能完整性**:
- [ ] 11 个 MCP Resources 全部实现且测试通过
- [ ] 10 个 MCP Tools 全部实现且测试通过
- [ ] 8 个 MCP Prompts 全部实现且测试通过
- [ ] API Key 管理功能完整（7 个端点）
- [ ] Diff Preview UI 完整（列表页 + 详情页 + 审批面板）
- [ ] Claude Desktop 集成成功（5 个测试场景）

**性能指标**:
- [ ] API 响应时间 P95 < 200ms
- [ ] 并发支持 1000+ users
- [ ] 数据库查询 < 10ms
- [ ] Redis 缓存命中率 > 80%
- [ ] WebSocket 通知延迟 < 1s

**安全指标**:
- [ ] 租户隔离 100% 验证通过
- [ ] OWASP Top 10 无 CRITICAL 漏洞
- [ ] 审计日志完整性 100%
- [ ] 回滚功能正确工作（10+ 场景）

**AI 质量指标**:
- [ ] PRD 生成准确率 ≥ 80%
- [ ] Epic 拆分合理性 ≥ 75%
- [ ] 风险检测准确率 ≥ 75%
- [ ] 用户满意度 ≥ 4.0/5.0

**文档完整性**:
- [ ] API 文档完整（Swagger + Postman）
- [ ] 集成指南完整（Claude Desktop + ChatGPT）
- [ ] 用户指南完整（管理员 + 用户）
- [ ] 培训材料完整（视频 + PPT + 博客）

**测试覆盖率**:
- [ ] 单元测试覆盖率 ≥ 80%
- [ ] 集成测试通过率 ≥ 95%
- [ ] 端到端测试 5 个场景全部通过

---

### 8.2 M2 成功的标志

1. **技术成功**:
   - Claude Desktop 能完整执行读写操作（5 个测试场景）
   - 所有 KPIs 达标（性能、安全、质量）
   - 无 P0/P1 bugs

2. **业务成功**:
   - 5+ 内部用户试用并提供正面反馈
   - AI 减少手动工作量 ≥ 50%（对比 M1）
   - 用户满意度 ≥ 4.0/5.0

3. **项目管理成功**:
   - 按时完成（2026-03-31 前）
   - 预算控制（< $50,000）
   - 团队士气高（无加班、无冲突）

---

## 九、下一步行动

### 9.1 立即行动 (Week 0, 准备阶段)

1. **产品需求确认** (Day 1-2)
   - 产品经理与主协调器确认 PRD
   - 架构师评审技术可行性
   - 确认预算和人力资源
   - 输出: 最终版 M2 PRD

2. **团队招募** (Day 3-7)
   - 招聘 1-2 名后端开发工程师
   - 招聘 1 名 QA 工程师
   - 确认前端开发资源（内部或外包）
   - 输出: 团队组建完成

3. **技术准备** (Day 8-10)
   - 安装 ModelContextProtocol SDK v0.4.0
   - 验证 SDK 核心功能（Resources/Tools/Prompts）
   - 准备开发环境（Docker, PostgreSQL, Redis）
   - 输出: 技术验证报告

4. **M2 启动会** (Day 11)
   - 产品经理宣讲 M2 目标和计划
   - 架构师讲解技术架构
   - 团队讨论风险和依赖
   - 输出: M2 启动会纪要

---

### 9.2 Week 1 行动计划

**Week 1 目标**: 完成 MCP Server 项目初始化 + API Key 认证系统

**具体任务**:
- [ ] Day 1-2: MCP Server 项目结构搭建
- [ ] Day 3-4: 数据库设计 + Migration
- [ ] Day 5-6: API Key 认证中间件实现
- [ ] Day 7: API Key 管理 API 实现
- [ ] Day 8-9: MCP Server 基础架构实现
- [ ] Day 10: 集成测试 + Phase 1 验收

**负责人**:
- 后端开发: Backend Team (2 人)
- 架构评审: Architect Agent
- 测试验证: QA Engineer

**验收标准**:
- [ ] API Key 认证中间件正确拦截未授权请求
- [ ] 速率限制功能正确工作（60 req/min）
- [ ] 集成测试通过率 ≥ 95%

---

### 9.3 M3 规划预告

**M3 目标** (2026-04-01 至 2026-06-30, 3个月):
- ChatGPT 集成 PoC
- AI → PRD → 任务 完整闭环
- 外部系统接入准备（GitHub, Slack）

**M3 准备工作** (M2 期间):
- Week 10: 研究 ChatGPT Plugin 开发
- Week 12: 研究 GitHub OAuth + Webhook
- Week 14: 设计 M3 架构方案

---

## 十、附录

### 10.1 术语表

| 术语 | 定义 |
|------|------|
| MCP | Model Context Protocol - AI 工具与应用系统的标准通信协议 |
| Resource | MCP 中的只读数据暴露接口（如 `projects.list`） |
| Tool | MCP 中的写操作接口（如 `create_issue`） |
| Prompt | MCP 中的 AI 提示词模板（如 `generate_prd`） |
| Diff Preview | AI 操作的 before/after 数据对比预览 |
| Pending Change | 等待人工审批的 AI 操作 |
| API Key | MCP 客户端的认证凭证 |
| Tenant | 租户（多租户系统中的独立组织） |

---

### 10.2 参考文档

| 文档 | 路径 |
|------|------|
| 项目计划书 | `c:\Users\yaoji\git\ColaCoder\product-master\product.md` |
| M1 剩余任务清单 | `c:\Users\yaoji\git\ColaCoder\product-master\M1_REMAINING_TASKS.md` |
| 后端进度报告 | `c:\Users\yaoji\git\ColaCoder\product-master\BACKEND_PROGRESS_REPORT.md` |
| Audit Log 技术方案 | (Day 14 完成, 15,000+ 字研究报告) |
| MCP 协议官方文档 | https://modelcontextprotocol.io/ |
| headless-pm 参考项目 | https://github.com/headless-pm (MCP Server 参考实现) |

---

### 10.3 联系人

| 角色 | 姓名 | 职责 |
|------|------|------|
| 产品经理 | Product Manager Agent | M2 规划、需求管理、验收 |
| 技术负责人 | Architect Agent | 架构设计、技术评审 |
| 后端负责人 | Backend Agent | MCP Server 开发、API 实现 |
| 前端负责人 | Frontend Agent | Diff Preview UI、API Key 管理页 |
| QA 负责人 | QA Agent | 测试计划、质量保证 |
| 主协调器 | Main Coordinator | 整体协调、进度跟踪 |

---

### 10.4 变更记录

| 日期 | 版本 | 变更说明 | 责任人 |
|------|------|---------|--------|
| 2025-11-04 | 1.0 | 初始版本 - M2 完整 PRD | Product Manager Agent |

---

**文档结束**

**下一步**: 请主协调器审核此 PRD，确认后开始 M2 Phase 1 实施。
