requirements-analysis
Version:
简化的需求分析MCP服务 - 基于AI软件工程(优化版)6步流程
133 lines (109 loc) • 4.72 kB
text/typescript
/**
* 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
};
}
}