requirements-analysis
Version:
简化的需求分析MCP服务 - 基于AI软件工程(优化版)6步流程
170 lines (146 loc) • 6.95 kB
JavaScript
;
/**
* Step 5: 生成改进建议
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.Step5 = void 0;
const types_1 = require("../types");
const document_reference_manager_1 = require("../utils/document-reference-manager");
const document_content_extractor_1 = require("../utils/document-content-extractor");
class Step5 {
/**
* 生成第5步提示词(精简版)
*/
static async generatePrompt(session) {
const projectInfo = session.projectInfo;
// 使用文档引用管理器获取第4步质量分析结果
const docManager = new document_reference_manager_1.DocumentReferenceManager(projectInfo.projectName);
const contentExtractor = new document_content_extractor_1.DocumentContentExtractor();
let step4Content = '';
try {
const step4Doc = await docManager.getStepDocument(4);
step4Content = contentExtractor.extractKeyContent(step4Doc, 'full'); // 改进建议需要完整的质量分析
}
catch (error) {
console.warn('Step 4 document not available');
step4Content = '第4步质量分析结果暂未生成,无法提供改进建议';
}
return `你是一位专业的需求文档改进专家,拥有丰富的文档优化经验。现在,请基于质量分析结果,为需求分析文档提供详细的、可操作的改进建议。
你的建议将直接指导文档的修改工作,请确保每个建议都具体可行,每个示例都真实有效。
**质量分析结果**
${step4Content}
**改进建议编制指南**
请按照以下结构提供详细的改进建议,确保每个建议都有明确的执行路径:
**1. 高优先级改进建议** (必须立即解决)
针对影响项目成功的关键问题,提供具体的改进方案:
*改进项格式示例*:
\`\`\`
#### 改进项1:完善验收标准的BDD格式
- **问题描述**: 部分验收标准未使用标准BDD格式,影响测试用例编写
- **影响程度**: 高 (直接影响开发和测试)
- **所在位置**: 第3章功能需求部分,REQ-USER-001等需求
- **改进建议**: 将所有验收标准改写为"给定...当...那么..."格式
- **修改示例**:
原文: "用户登录功能应该快速响应"
修改为: "给定用户输入正确的用户名和密码,当点击登录按钮,那么系统应在2秒内完成认证并跳转到主页"
- **预期效果**: 提升需求可测试性,为测试团队提供明确指导
\`\`\`
**2. 中优先级改进建议** (建议尽快解决)
针对影响开发效率的问题,提供优化方案:
**3. 低优先级改进建议** (可选择性解决)
针对提升文档质量的细节问题,提供完善建议:
**4. 分阶段实施计划**
**第一轮改进** (必须完成,预计2-3小时)
- 改进内容: [列出所有高优先级改进项]
- 负责人建议: 需求分析师 + 技术负责人
- 验收标准: 高优先级问题全部解决,质量得分提升至85分以上
**第二轮改进** (建议完成,预计1-2小时)
- 改进内容: [列出中优先级改进项]
- 负责人建议: 需求分析师
- 验收标准: 文档可读性和可操作性显著提升
**第三轮优化** (可选完成,预计1小时)
- 改进内容: [列出低优先级改进项]
- 负责人建议: 文档管理员
- 验收标准: 文档格式规范,专业性提升
**5. 预期改进效果分析**
**质量提升预期**
- **改进前得分**: [当前总分]/100分
- **第一轮改进后预期得分**: [预期分数]/100分 (提升[X]分)
- **全部改进后预期得分**: [最终预期分数]/100分 (提升[X]分)
**各维度提升预期**
| 维度 | 改进前得分 | 改进后预期得分 | 提升幅度 | 主要改进措施 |
|------|------------|----------------|----------|--------------|
| 完整性 | [分数]/20 | [分数]/20 | +[分数]分 | [具体措施] |
| 准确性 | [分数]/20 | [分数]/20 | +[分数]分 | [具体措施] |
| 一致性 | [分数]/20 | [分数]/20 | +[分数]分 | [具体措施] |
| 可用性 | [分数]/20 | [分数]/20 | +[分数]分 | [具体措施] |
| 格式规范 | [分数]/20 | [分数]/20 | +[分数]分 | [具体措施] |
**6. 改进价值分析**
**业务价值**
- **风险降低**: [具体描述改进如何降低项目风险]
- **效率提升**: [具体描述改进如何提升开发效率]
- **质量保证**: [具体描述改进如何保证最终质量]
**技术价值**
- **可实施性提升**: [具体描述改进如何提升技术实施的可行性]
- **可维护性改善**: [具体描述改进如何改善文档和系统的可维护性]
- **可扩展性增强**: [具体描述改进如何增强系统的可扩展性]
**7. 改进验收标准**
为确保改进效果,建议采用以下验收标准:
- 所有高优先级问题必须解决
- 文档质量得分达到90分以上
- 开发团队确认需求清晰可执行
- 测试团队确认验收标准可测试
请确保所有改进建议都具体可操作,避免空泛的建议,为项目团队提供明确的改进路径。`;
}
/**
* 创建第5步结果
*/
static async createStepResult(session, result) {
const stepDef = types_1.STEP_DEFINITIONS[4]; // 第5步
return {
stepNumber: stepDef.number,
stepName: stepDef.name,
prompt: await this.generatePrompt(session),
result,
timestamp: new Date(),
filePath: stepDef.fileName,
status: 'completed'
};
}
/**
* 验证第5步结果质量
*/
static validateResult(result) {
const issues = [];
let score = 100;
// 检查是否包含优先级分类
const priorities = ['高优先级', '中优先级', '低优先级'];
const missingPriorities = priorities.filter(priority => !result.includes(priority));
if (missingPriorities.length > 0) {
issues.push(`缺少优先级分类:${missingPriorities.join(', ')}`);
score -= missingPriorities.length * 15;
}
// 检查是否包含修改示例
if (!result.includes('修改示例') && !result.includes('原文') && !result.includes('修改为')) {
issues.push('缺少具体的修改示例');
score -= 20;
}
// 检查是否包含实施计划
if (!result.includes('实施计划') && !result.includes('改进计划')) {
issues.push('缺少改进实施计划');
score -= 15;
}
// 检查是否包含预期效果
if (!result.includes('预期效果') && !result.includes('改进效果')) {
issues.push('缺少预期改进效果');
score -= 15;
}
return {
isValid: score >= 70,
score: Math.max(0, score),
issues
};
}
}
exports.Step5 = Step5;
//# sourceMappingURL=step5.js.map