Files
ColaFlow/M2-MCP-SERVER-PRD.md
Yaojia Wang 08b317e789
Some checks failed
Code Coverage / Generate Coverage Report (push) Has been cancelled
Tests / Run Tests (9.0.x) (push) Has been cancelled
Tests / Docker Build Test (push) Has been cancelled
Tests / Test Summary (push) Has been cancelled
Add trace files.
2025-11-04 23:28:56 +01:00

70 KiB
Raw Blame History

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 天)

技术实现:

// 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 模式):

// 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:

// 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} - 取消(未审批前可取消)

审批通过后自动执行:

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 天)

技术实现:

// 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)
+---------------------- 产品前缀

数据库表设计:

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)
);

认证中间件:

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):

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 分钟)
// ~/.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"
      }
    }
  }
}
  1. 测试场景 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 仪表板审批此变更。
  1. 测试场景 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 建议(包含标题、描述、验收标准)
  • 用户选择需要的 StoriesClaude 批量创建(调用 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 EventsPendingChangeCreated, 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 UIReact
  • 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 调用(入参、出参、耗时、状态)
    • 记录所有审批操作(谁批准/拒绝了什么)
    • 审计日志查询 APIGET /api/mcp/audit-logs
    • 预计工时: 12 小时
  • Day 43-44: 回滚机制

    • 回滚 APIPOST /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 WrapperNode.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自然语言创建任务
    • 场景 2AI 生成 PRD
    • 场景 3AI 拆分 Epic 为 Stories
    • 场景 4AI 检测项目风险
    • 场景 5AI 生成站会纪要
    • 每个场景录屏演示
    • 预计工时: 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 18M2.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 实施。