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