70 KiB
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 核心交付物
- MCP Server - 完整的 MCP 协议实现(Resources, Tools, Prompts)
- Diff Preview 机制 - AI 操作预览 → 人工审批 → 自动执行
- Claude Desktop 集成 - PoC 级别的 AI 助手体验
- 安全与审计 - 字段级权限控制 + 完整审计日志
- 技术文档 - 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 的最佳时机:
- 核心功能稳定: M1 提供了坚实的数据基础(Projects, Issues, Sprints)
- 安全机制完善: Multi-tenant isolation + Audit Log 已就绪
- 架构设计完成: Day 10 已完成 MCP Server 详细架构设计
- 市场机遇: 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 用户目标
目标用户群:
- 敏捷团队 - 使用 Scrum/Kanban 管理项目的开发团队
- AI 早期采用者 - 已使用 Claude/ChatGPT/Cursor 的技术团队
- 效率优化者 - 追求自动化和流程优化的项目经理
用户痛点:
- 重复劳动: 手动创建任务、编写 PRD、更新进度报告(占用 30-50% PM 时间)
- 信息孤岛: AI 工具(ChatGPT)和项目系统(Jira)互不相通
- 协作断层: AI 生成的内容需要手动粘贴到项目系统
- 安全顾虑: 不敢让 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 可用性
集成步骤:
- 配置 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: 自然语言创建任务 (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 仪表板审批此变更。
- 测试场景 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_issuetool 生成 Diff Preview - 用户在 ColaFlow 仪表板看到待审批变更
- 用户点击"批准",任务自动创建在 Backlog
- 整个流程 < 2 分钟(含审批时间)
优先级: P0 预计工时: 已包含在 MCP Tools 实现中
User Story 2: AI 自动生成 PRD
作为 产品经理 我想要 AI 根据我的功能描述自动生成 PRD 草稿 以便于 减少 70% 的文档编写时间
验收标准:
- 用户在 Claude 中输入功能描述
- Claude 调用
generate_prdprompt - 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.getresource) - Claude 调用
split_epic_to_storiesprompt - Claude 生成 3-8 个 Story 建议(包含标题、描述、验收标准)
- 用户选择需要的 Stories,Claude 批量创建(调用
create_issuetool) - 所有 Stories 自动关联到 Epic(调用
link_issuestool)
优先级: P0 预计工时: 已包含在功能实现中
User Story 4: AI 检测项目风险
作为 项目经理 我想要 AI 定期扫描项目并生成风险报告 以便于 提前识别进度延误和资源瓶颈
验收标准:
- 用户在 Claude 中输入"检测项目 #456 的风险"
- Claude 调用
detect_risksprompt - 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 小时
- 创建 3 张表:
-
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- 列出所有 Epicstories.list- 列出所有 Storytasks.list- 列出所有 Task- 预计工时: 12 小时
-
Day 15-16: Sprints & Users Resources (4个)
sprints.current- 获取当前 Sprintsprints.backlog- 获取 Backlogusers.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- 创建 Sprintstart_sprint- 启动 Sprintcreate_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- 生成 PRDsplit_epic_to_stories- 拆分 Epicestimate_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
应对策略:
- 缓解措施:
- Week 1-2 提前验证 SDK 核心功能(Resources/Tools/Prompts)
- 准备 Fallback 方案:如果 SDK 不可用,自己实现 MCP 协议(基于 JSON-RPC 2.0)
- 与 MCP 社区保持联系,及时反馈问题
- 应急计划:
- 如果 SDK 严重不可用(Week 4 前发现),切换到自研 MCP 实现
- 预留 2 周 buffer 时间用于 SDK 问题处理
- 监控指标:
- SDK bug 数量(目标: < 5 个 CRITICAL bugs)
- SDK 功能完整性(目标: 100% 核心功能可用)
风险 2: Diff Preview 性能问题
描述: JSON Diff 计算可能较慢,影响用户体验
影响: 中 概率: 中 (30%) 严重程度: LOW
应对策略:
- 缓解措施:
- 使用高性能 Diff 库(如
JsonDiffPatch.Net) - 对大对象(> 10KB)进行异步 Diff 计算
- 前端使用虚拟滚动(react-window)优化大 Diff 显示
- 使用高性能 Diff 库(如
- 应急计划:
- 如果 Diff 计算 > 5s,改为后台异步计算 + WebSocket 通知
- 提供"简化 Diff"模式(仅显示关键字段变更)
- 监控指标:
- Diff 计算时间(目标: P95 < 500ms)
- 用户投诉率(目标: < 5%)
风险 3: 数据库性能瓶颈
描述: 1000+ users, 10000+ issues 场景下,数据库查询可能较慢
影响: 高 概率: 低 (20%) 严重程度: MEDIUM
应对策略:
- 缓解措施:
- Week 6 开始性能压测(提前发现瓶颈)
- 添加更多复合索引(针对 MCP Resources 常用查询)
- 使用 Redis 缓存热数据(Projects, Issues)
- 考虑读写分离(CQRS 架构已就绪)
- 应急计划:
- 如果查询 > 100ms,启用 PostgreSQL 查询优化(EXPLAIN ANALYZE)
- 如果仍不够快,引入 Elasticsearch 做全文搜索
- 监控指标:
- 数据库查询时间(目标: P95 < 10ms)
- 慢查询数量(目标: < 1% queries)
6.2 安全风险
风险 4: AI 误操作导致数据损坏
描述: AI 生成错误的 Tool 参数,导致数据被错误修改或删除
影响: 高 概率: 中 (30%) 严重程度: HIGH
应对策略:
- 缓解措施:
- 所有写操作强制人工审批(Diff Preview 机制)
- 关键操作(删除、批量修改)增加二次确认
- 完整的审计日志 + 7 天回滚能力
- 字段级权限控制(敏感字段 AI 不可修改)
- 应急计划:
- 如果发生误操作,立即使用回滚功能恢复数据
- 提供"撤销"按钮(5 分钟内可一键撤销)
- 定期数据库备份(每日全量 + 每小时增量)
- 监控指标:
- 误操作率(目标: < 1%)
- 回滚使用率(目标: < 5%)
- 审批拒绝率(目标: 5-10%,说明 AI 有错误但被拦截)
风险 5: API Key 泄露
描述: 用户不慎将 API Key 泄露到公共代码库(如 GitHub)
影响: 高 概率: 中 (40%) 严重程度: CRITICAL
应对策略:
- 缓解措施:
- API Key 创建时显示安全提示("请妥善保管,仅显示一次")
- 实现 API Key 前缀明文存储(方便识别哪个 Key 泄露)
- 提供"紧急撤销"功能(一键撤销所有 Keys)
- IP 白名单功能(限制 Key 只能从特定 IP 访问)
- 集成 GitHub Secret Scanning(自动检测泄露的 Keys)
- 应急计划:
- 如果检测到 Key 泄露,立即自动撤销并通知用户
- 提供"泄露通知"邮件(告知风险和修复步骤)
- 监控指标:
- API Key 泄露检测率(目标: 100% 检测到)
- 泄露后撤销时间(目标: < 5 分钟)
- 用户安全意识评分(目标: ≥ 4.0/5.0)
6.3 进度风险
风险 6: M2 完成时间延期
描述: 16 周计划过于乐观,可能延期至 18-20 周
影响: 中 概率: 高 (50%) 严重程度: MEDIUM
应对策略:
- 缓解措施:
- 预留 2 周 buffer 时间(实际规划 14 周核心功能)
- 优先完成 P0 功能,P1/P2 功能可延后至 M2.5
- 每 2 周进行 Sprint 回顾,及时调整计划
- 前后端并行开发,减少依赖阻塞
- 应急计划:
- 如果 Week 10 进度 < 60%,考虑砍掉部分 P2 功能
- 如果 Week 14 无法完成,延后至 Week 18(M2.5 小版本)
- 监控指标:
- Sprint 燃尽图趋势(目标: 线性递减)
- 每周完成任务数(目标: 10+ tasks/week)
- M2 完成度(Week 8: 50%, Week 12: 75%, Week 16: 100%)
风险 7: 人力资源不足
描述: 后端/前端开发人员不足,导致进度延误
影响: 高 概率: 中 (30%) 严重程度: HIGH
应对策略:
- 缓解措施:
- 提前招聘 1-2 名后端开发工程师(Week 4 前到岗)
- 外包部分 UI 开发工作(Diff Preview UI, API Key 管理页)
- 使用低代码工具加速前端开发(如 Ant Design Pro)
- 自动化测试(减少人工测试工作量)
- 应急计划:
- 如果人力不足,优先完成 P0 功能
- 延后 P1/P2 功能至 M2.5 或 M3
- 监控指标:
- 团队人数(目标: 2 后端 + 1 前端 + 1 QA)
- 人均任务数(目标: < 10 tasks/person)
- 加班时间(目标: < 10h/week)
6.4 业务风险
风险 8: AI 输出质量不达标
描述: AI 生成的 PRD/Story/风险报告质量不高,用户不信任 AI
影响: 高 概率: 中 (40%) 严重程度: MEDIUM
应对策略:
- 缓解措施:
- Week 11 开始进行 AI 输出质量评估(5+ 样本)
- 优化 Prompts(增加示例、约束条件)
- 提供"AI 助手模式"(AI 生成草稿,人工润色)
- 收集用户反馈,持续迭代 Prompts
- 应急计划:
- 如果准确率 < 70%,暂停发布 AI 功能
- 进行 Prompts 专项优化(2-3 周)
- 考虑切换到更强的 AI 模型(如 GPT-4o)
- 监控指标:
- AI 输出准确率(目标: ≥ 80%)
- 用户编辑率(目标: < 30%,说明 AI 输出质量高)
- 用户满意度(目标: ≥ 4.0/5.0)
风险 9: 用户采用率低
描述: 用户不习惯使用 AI 助手,仍然手动操作
影响: 中 概率: 中 (30%) 严重程度: LOW
应对策略:
- 缓解措施:
- Week 15-16 制作详细的培训材料(视频 + 文档)
- 内部试点(5+ 用户),收集反馈并优化
- 提供"新手引导"(首次使用时逐步教学)
- 提供"快捷操作"提示(在合适的时机推荐使用 AI)
- 应急计划:
- 如果采用率 < 30%,进行用户调研(找出阻碍因素)
- 优化 UX(降低学习成本)
- 提供激励机制(使用 AI 完成任务获得徽章)
- 监控指标:
- 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 成功的标志
-
技术成功:
- Claude Desktop 能完整执行读写操作(5 个测试场景)
- 所有 KPIs 达标(性能、安全、质量)
- 无 P0/P1 bugs
-
业务成功:
- 5+ 内部用户试用并提供正面反馈
- AI 减少手动工作量 ≥ 50%(对比 M1)
- 用户满意度 ≥ 4.0/5.0
-
项目管理成功:
- 按时完成(2026-03-31 前)
- 预算控制(< $50,000)
- 团队士气高(无加班、无冲突)
九、下一步行动
9.1 立即行动 (Week 0, 准备阶段)
-
产品需求确认 (Day 1-2)
- 产品经理与主协调器确认 PRD
- 架构师评审技术可行性
- 确认预算和人力资源
- 输出: 最终版 M2 PRD
-
团队招募 (Day 3-7)
- 招聘 1-2 名后端开发工程师
- 招聘 1 名 QA 工程师
- 确认前端开发资源(内部或外包)
- 输出: 团队组建完成
-
技术准备 (Day 8-10)
- 安装 ModelContextProtocol SDK v0.4.0
- 验证 SDK 核心功能(Resources/Tools/Prompts)
- 准备开发环境(Docker, PostgreSQL, Redis)
- 输出: 技术验证报告
-
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 实施。