UNPKG

requirements-analysis

Version:

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

170 lines (146 loc) 6.95 kB
"use strict"; /** * 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