UNPKG

requirements-analysis

Version:

简化的需求分析MCP服务 - 基于AI软件工程(优化版)6步流程

133 lines (109 loc) 4.72 kB
/** * Step 1: 项目基础信息填写 */ import { ProjectInfo, StepResult, STEP_DEFINITIONS } from '../types'; export class Step1 { /** * 生成第1步提示词(质量增强版) */ static generatePrompt(projectInfo: ProjectInfo): string { return `你是一位拥有15年经验的资深需求分析专家,曾成功主导过100+个${projectInfo.industry}领域的项目。现在,请运用你的专业经验和敏锐洞察力,对以下项目信息进行深入分析和验证。 想象你正在与${projectInfo.industry}行业的项目负责人进行初次会谈,你需要以专业、严谨但易懂的方式,为项目团队提供有价值的分析结果。 **项目信息** - 名称:${projectInfo.projectName} - 类型:${projectInfo.projectType} - 行业:${projectInfo.industry} - 背景:${projectInfo.background} - 目标:${projectInfo.objectives} ${projectInfo.budget ? `- 预算:${projectInfo.budget}` : ''} ${projectInfo.timeline ? `- 周期:${projectInfo.timeline}` : ''} ${projectInfo.teamSize ? `- 团队:${projectInfo.teamSize}` : ''} ${projectInfo.deployment ? `- 部署:${projectInfo.deployment}` : ''} ${projectInfo.specialRequirements ? `- 特殊要求:${projectInfo.specialRequirements}` : ''} **分析任务** 请从专业角度深入分析,提供有洞察力的验证结果: 1. **项目信息验证**:评估信息的完整性、明确度、可行性和潜在风险 2. **标准化整理**:将信息标准化为规范格式 3. **专业建议**:基于行业经验提供3-5条具体可行的建议 **质量标准** - **逻辑清晰**:每个观点都有支撑论据和行业依据 - **内容充实**:避免空泛表述,提供具体分析和数据支撑 - **结构完整**:包含验证、标准化、建议三个完整部分 - **表达流畅**:使用专业但易懂的语言,条理清晰 **输出示例格式** \`\`\` === 标准化项目信息 === 【项目基本信息】 - 项目名称:智能客服系统(经验证,名称明确具体,符合行业命名规范) - 项目类型:新建系统(符合当前业务发展阶段和技术成熟度) - 所属行业:金融科技(目标市场明确,技术需求匹配度高) - 项目背景:[完善后的背景描述,包含现状分析和问题识别] - 核心目标:[量化后的目标,包含具体指标和时间节点] 【约束条件】 - 项目预算:100-150万(预算合理,符合同类项目投入水平) - 项目周期:6个月(时间安排紧凑但可行,建议分阶段实施) ... 【验证结果】 - 信息完整度:85%(缺少具体的技术架构要求) - 目标明确度:高(目标量化清晰,可衡量性强) - 可行性评估:高(技术成熟,市场需求明确) - 风险等级:中(主要风险在于集成复杂度和用户接受度) === 验证完成 === \`\`\` 请以这种深度和专业性进行分析,确保输出对项目团队具有实际指导价值。`; } /** * 创建第1步结果 */ static createStepResult(projectInfo: ProjectInfo, result: string): StepResult { const stepDef = STEP_DEFINITIONS[0]; // 第1步 return { stepNumber: stepDef.number, stepName: stepDef.name, prompt: this.generatePrompt(projectInfo), result, timestamp: new Date(), filePath: stepDef.fileName, status: 'completed' }; } /** * 验证第1步结果质量 */ static validateResult(result: string): { isValid: boolean; score: number; issues: string[] } { const issues: string[] = []; let score = 100; // 检查是否包含标准化项目信息 if (!result.includes('=== 标准化项目信息 ===')) { issues.push('缺少标准化项目信息部分'); score -= 20; } // 检查是否包含验证结果 if (!result.includes('【验证结果】')) { issues.push('缺少验证结果部分'); score -= 15; } // 检查是否包含后续建议 if (!result.includes('后续建议') && !result.includes('建议')) { issues.push('缺少后续建议'); score -= 10; } // 检查内容长度 if (result.length < 500) { issues.push('内容过于简单'); score -= 15; } // 检查是否包含关键词 const keywords = ['项目名称', '项目类型', '行业', '背景', '目标']; const missingKeywords = keywords.filter(keyword => !result.includes(keyword)); if (missingKeywords.length > 0) { issues.push(`缺少关键信息:${missingKeywords.join(', ')}`); score -= missingKeywords.length * 5; } return { isValid: score >= 70, score: Math.max(0, score), issues }; } }