UNPKG

requirements-analysis

Version:

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

201 lines (174 loc) 7.32 kB
"use strict"; /** * Step 6: 生成最终文档 */ Object.defineProperty(exports, "__esModule", { value: true }); exports.Step6 = 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 Step6 { /** * 生成第6步提示词(精简版) */ static async generatePrompt(session) { const projectInfo = session.projectInfo; // 使用文档引用管理器获取第3步和第5步内容 const docManager = new document_reference_manager_1.DocumentReferenceManager(projectInfo.projectName); const contentExtractor = new document_content_extractor_1.DocumentContentExtractor(); let step3Content = ''; let step5Content = ''; try { const step3Doc = await docManager.getStepDocument(3); step3Content = contentExtractor.extractKeyContent(step3Doc, 'full'); // 最终文档需要完整的原始需求 } catch (error) { console.warn('Step 3 document not available'); step3Content = '第3步需求文档暂未生成'; } try { const step5Doc = await docManager.getStepDocument(5); step5Content = contentExtractor.extractKeyContent(step5Doc, 'recommendations'); // 提取改进建议 } catch (error) { console.warn('Step 5 document not available'); step5Content = '第5步改进建议暂未生成'; } return `现在是项目需求分析的最后阶段,你需要将前期的所有分析成果和改进建议整合,生成一份可以直接指导产品设计和开发的高质量需求分析文档。 作为专业的需求文档专家,请运用你的经验和技能,确保最终文档达到行业标杆水平,成为项目成功的坚实基础。 **文档改进背景** **原始需求分析文档** ${step3Content} **专业改进建议** ${step5Content} **文档改进任务** 请严格按照改进建议对原始文档进行全面优化,确保最终文档质量达到95+分的行业标杆水平: **1. 改进执行优先级** - **必须执行**: 所有高优先级改进建议(影响项目成功) - **建议执行**: 中优先级改进建议(提升开发效率) - **可选执行**: 低优先级改进建议(完善文档质量) **2. 文档结构保持** - 保持原有的8个主要章节结构 - 优化章节内容的组织和表达 - 确保信息层次清晰、逻辑流畅 **3. 质量提升目标** - **完整性**: 确保所有必要信息都包含且充分 - **准确性**: 消除歧义,确保技术可行性 - **一致性**: 统一格式、术语和表达方式 - **可用性**: 提升可读性、可操作性和可维护性 - **规范性**: 严格遵循行业标准和格式要求 **4. 具体改进要求** **格式规范化** - 需求ID: 严格使用REQ-[模块缩写]-[三位数字]格式 - 优先级: 明确标记P0(必须有)、P1(应该有)、P2(可以有) - 验收标准: 全部使用"给定...当...那么..."的BDD格式 **内容充实化** - 每个需求都要包含完整的描述、输入、处理、输出、业务规则 - 非功能需求要有具体的量化指标 - 约束条件要明确具体,避免模糊表达 **逻辑一致性** - 确保文档内部没有矛盾或冲突 - 需求间的依赖关系要清晰 - 术语使用要统一一致 **5. 输出要求** **完整的改进后需求分析文档** 请输出完整的、经过改进的需求分析文档,包含所有8个章节的完整内容。 **文档改进说明** 在文档末尾添加详细的改进说明: \`\`\`markdown ## 文档改进说明 ### 改进版本信息 - 原版本: v1.0 - 改进版本: v1.1 - 改进日期: [当前日期] - 改进依据: AI质量分析和专业改进建议 ### 主要改进内容 1. **高优先级改进**: [列出具体改进内容] 2. **中优先级改进**: [列出具体改进内容] 3. **格式规范化**: [列出格式改进内容] ### 改进效果预期 - 预期质量得分: 从[原分数]分提升到[目标分数]分 - 主要提升维度: [列出主要提升的质量维度] - 改进价值: [描述改进带来的具体价值] ### 质量保证 - 所有高优先级问题已解决 - 文档格式完全规范化 - 内容逻辑完全一致 - 可直接用于产品设计和开发指导 ### 后续建议 - 建议开发团队和测试团队评审确认 - 建议建立文档版本管理和变更控制机制 - 建议定期回顾和更新需求文档 \`\`\` **6. 质量验收标准** 最终文档必须达到以下标准: - **总体质量得分**: 95分以上 - **格式规范性**: 100%符合标准 - **内容完整性**: 覆盖所有必要需求 - **逻辑一致性**: 无内部矛盾或冲突 - **可操作性**: 开发团队可直接基于此文档进行设计和开发 **7. 专业要求** - **严格执行**: 必须按照改进建议进行修改,不得随意增删 - **保持风格**: 修改时要保持与原文一致的专业写作风格 - **确保实用**: 所有改进都要以提升文档实用性为目标 - **注重细节**: 特别关注格式、术语、逻辑的一致性 请以专业、严谨的态度完成这份最终需求分析文档,确保它能够成为项目成功的重要基石。`; } /** * 创建第6步结果 */ static async createStepResult(session, result) { const stepDef = types_1.STEP_DEFINITIONS[5]; // 第6步 return { stepNumber: stepDef.number, stepName: stepDef.name, prompt: await this.generatePrompt(session), result, timestamp: new Date(), filePath: stepDef.fileName, status: 'completed' }; } /** * 验证第6步结果质量 */ static validateResult(result) { const issues = []; 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.includes('文档改进说明') && !result.includes('改进版本信息')) { issues.push('缺少文档改进说明'); score -= 15; } // 检查是否包含改进内容 if (!result.includes('主要改进内容') && !result.includes('改进效果')) { issues.push('缺少改进内容说明'); score -= 10; } // 检查文档长度(应该是完整的需求文档) if (result.length < 6000) { issues.push('最终文档内容过于简单'); score -= 20; } return { isValid: score >= 70, score: Math.max(0, score), issues }; } } exports.Step6 = Step6; //# sourceMappingURL=step6.js.map