requirements-analysis
Version:
简化的需求分析MCP服务 - 基于AI软件工程(优化版)6步流程
160 lines (128 loc) • 5.49 kB
text/typescript
/**
* Step 2: AI智能分析项目全貌
*/
import { ProjectInfo, StepResult, STEP_DEFINITIONS, AnalysisSession } from '../types';
import { DocumentReferenceManager } from '../utils/document-reference-manager';
import { DocumentContentExtractor } from '../utils/document-content-extractor';
export class Step2 {
/**
* 生成第2步提示词(文档引用版)
*/
static async generatePrompt(session: AnalysisSession): Promise<string> {
const projectInfo = session.projectInfo;
// 使用文档引用管理器获取第1步内容
const docManager = new DocumentReferenceManager(projectInfo.projectName);
const contentExtractor = new DocumentContentExtractor();
let step1Content = '';
try {
const step1Doc = await docManager.getStepDocument(1);
step1Content = contentExtractor.extractKeyContent(step1Doc, 'conclusions');
} catch (error) {
console.warn('Step 1 document not available, proceeding without context');
step1Content = '第1步文档暂未生成,将基于项目基础信息进行分析';
}
return `现在你需要向投资委员会和项目团队展示这个${projectInfo.industry}项目的全面战略分析。作为拥有深厚行业洞察的资深专家,请运用你的专业知识和市场敏感度,为这个项目提供具有前瞻性的深度分析。
让我们一起深入探讨这个项目的战略价值和实施路径。你的分析将直接影响项目的战略方向和投资决策,请确保每个观点都有充分的行业依据和数据支撑。
想象你正在与项目投资人和核心团队进行战略研讨,请以专业而富有洞察力的方式,为他们展示这个项目的全貌和价值。
**项目概况**
- **项目名称**: ${projectInfo.projectName}
- **目标行业**: ${projectInfo.industry}
- **核心挑战**: ${projectInfo.background}
- **期望成果**: ${projectInfo.objectives}
**第1步验证结果**
${step1Content}
**深度分析框架**
请从战略高度进行六维度分析,每个维度都要提供具体的洞察和可执行的建议:
**1. 行业生态分析**
- ${projectInfo.industry}行业的发展趋势和技术演进方向
- 主要痛点和未被满足的市场需求
- 竞争格局和市场机会窗口
- 行业监管环境和政策影响
**2. 用户价值分析**
- 核心用户群体画像和需求层次分析
- 用户使用场景和行为路径设计
- 用户体验期望和满意度驱动因素
- 用户获取和留存策略建议
**3. 技术架构分析**
- 技术选型的最佳实践和风险评估
- 系统架构设计的可扩展性和稳定性
- 技术实现的复杂度和资源需求
- 技术发展趋势对项目的长期影响
**4. 产品功能规划**
- 核心功能模块的价值排序和依赖关系
- MVP功能定义和迭代路径规划
- 功能差异化和竞争优势构建
- 功能实现的技术难度和时间估算
**5. 实施策略建议**
- 分阶段实施的里程碑和交付计划
- 关键成功因素和风险缓解措施
- 团队能力要求和资源配置建议
- 项目管理和质量保证机制
**6. 商业价值评估**
- 投资回报率和财务模型分析
- 市场竞争优势和护城河构建
- 收入模式和盈利能力预测
- 长期价值创造和战略意义
**质量要求**
- **深度洞察**: 基于行业经验提供独到见解,避免泛泛而谈
- **数据支撑**: 每个判断都要有逻辑依据或行业数据支持
- **可操作性**: 建议要具体可执行,有明确的行动指导
- **前瞻性**: 考虑未来3-5年的发展趋势和变化
**输出格式**: 请用专业但易懂的语言,结构清晰地呈现分析结果,确保每个维度都有明确的结论和建议。总篇幅控制在3500字以内,重点突出关键洞察和核心建议。`;
}
/**
* 创建第2步结果
*/
static async createStepResult(session: AnalysisSession, result: string): Promise<StepResult> {
const stepDef = STEP_DEFINITIONS[1]; // 第2步
return {
stepNumber: stepDef.number,
stepName: stepDef.name,
prompt: await this.generatePrompt(session),
result,
timestamp: new Date(),
filePath: stepDef.fileName,
status: 'completed'
};
}
/**
* 验证第2步结果质量
*/
static validateResult(result: string): { isValid: boolean; score: number; issues: string[] } {
const issues: string[] = [];
let score = 100;
// 检查必要的分析维度
const requiredSections = [
'行业背景分析',
'用户需求分析',
'技术环境分析',
'功能规划建议',
'实施建议'
];
const missingSections = requiredSections.filter(section => !result.includes(section));
if (missingSections.length > 0) {
issues.push(`缺少分析维度:${missingSections.join(', ')}`);
score -= missingSections.length * 15;
}
// 检查内容深度
if (result.length < 2000) {
issues.push('分析内容过于简单,缺乏深度');
score -= 20;
}
// 检查是否包含具体建议
if (!result.includes('建议') && !result.includes('推荐')) {
issues.push('缺少具体的建议和推荐');
score -= 15;
}
// 检查是否包含风险分析
if (!result.includes('风险') && !result.includes('挑战')) {
issues.push('缺少风险分析');
score -= 10;
}
return {
isValid: score >= 70,
score: Math.max(0, score),
issues
};
}
}