Coverage for aceflow_mcp_server\resources.py: 92%

59 statements  

« prev     ^ index     » next       coverage.py v7.10.1, created at 2025-08-03 13:42 +0800

1"""AceFlow MCP Resources implementation.""" 

2 

3from typing import Dict, Any 

4import json 

5from pathlib import Path 

6import os 

7 

8 

9class AceFlowResources: 

10 """AceFlow MCP Resources collection.""" 

11 

12 def __init__(self): 

13 """Initialize resources.""" 

14 pass 

15 

16 @staticmethod 

17 def _get_current_directory() -> Path: 

18 """Get current working directory.""" 

19 return Path.cwd() 

20 

21 @staticmethod 

22 def _find_aceflow_project_root(start_path: Path = None) -> Path: 

23 """Find the AceFlow project root directory.""" 

24 if start_path is None: 

25 start_path = AceFlowResources._get_current_directory() 

26 

27 current = start_path.resolve() 

28 

29 # Look for AceFlow indicators 

30 while current != current.parent: 

31 if (current / ".aceflow").exists() or (current / ".clinerules").exists(): 

32 return current 

33 current = current.parent 

34 

35 # If not found, return current directory 

36 return start_path 

37 

38 @staticmethod 

39 def project_state(project_id: str = "current") -> str: 

40 """Get current project state.""" 

41 try: 

42 project_root = AceFlowResources._find_aceflow_project_root() 

43 state_file = project_root / ".aceflow" / "current_state.json" 

44 

45 if state_file.exists(): 

46 with open(state_file, 'r', encoding='utf-8') as f: 

47 state = json.load(f) 

48 return json.dumps(state, indent=2, ensure_ascii=False) 

49 else: 

50 # Return default state if no project found 

51 default_state = { 

52 "project": { 

53 "name": "unknown", 

54 "mode": "UNKNOWN", 

55 "status": "not_initialized" 

56 }, 

57 "flow": { 

58 "current_stage": "unknown", 

59 "completed_stages": [], 

60 "progress_percentage": 0 

61 }, 

62 "metadata": { 

63 "message": "No AceFlow project found in current directory", 

64 "suggestion": "Use aceflow_init tool to initialize a project" 

65 } 

66 } 

67 return json.dumps(default_state, indent=2, ensure_ascii=False) 

68 

69 except Exception as e: 

70 error_state = { 

71 "error": str(e), 

72 "message": "Failed to get project state", 

73 "suggestion": "Check if you're in an AceFlow project directory" 

74 } 

75 return json.dumps(error_state, indent=2, ensure_ascii=False) 

76 

77 @staticmethod 

78 def workflow_config(config_id: str = "default") -> str: 

79 """Get workflow configuration.""" 

80 try: 

81 project_root = AceFlowResources._find_aceflow_project_root() 

82 template_file = project_root / ".aceflow" / "template.yaml" 

83 

84 if template_file.exists(): 

85 with open(template_file, 'r', encoding='utf-8') as f: 

86 config_content = f.read() 

87 

88 # Also include some parsed information 

89 config_info = { 

90 "template_file": str(template_file), 

91 "project_root": str(project_root), 

92 "template_content": config_content, 

93 "status": "found" 

94 } 

95 return json.dumps(config_info, indent=2, ensure_ascii=False) 

96 else: 

97 default_config = { 

98 "message": "No workflow configuration found", 

99 "template_file": str(project_root / ".aceflow" / "template.yaml"), 

100 "status": "not_found", 

101 "suggestion": "Initialize project with aceflow_init tool" 

102 } 

103 return json.dumps(default_config, indent=2, ensure_ascii=False) 

104 

105 except Exception as e: 

106 error_config = { 

107 "error": str(e), 

108 "message": "Failed to get workflow config", 

109 "suggestion": "Check if you're in an AceFlow project directory" 

110 } 

111 return json.dumps(error_config, indent=2, ensure_ascii=False) 

112 

113 @staticmethod 

114 def stage_guide(stage: str) -> str: 

115 """Get stage-specific guidance.""" 

116 try: 

117 # Stage guides based on common AceFlow stages 

118 stage_guides = { 

119 "user_stories": """# 用户故事分析阶段指南 

120 

121## 目标 

122分析和定义用户需求,创建清晰的用户故事。 

123 

124## 主要任务 

1251. **用户角色识别** 

126 - 确定主要用户群体 

127 - 分析用户特征和需求 

128 - 创建用户画像 

129 

1302. **用户故事编写** 

131 - 使用标准格式:作为[用户角色],我希望[功能],以便[价值] 

132 - 确保故事具体、可测试、有价值 

133 - 添加验收标准 

134 

1353. **优先级排序** 

136 - 评估商业价值 

137 - 考虑技术实现难度 

138 - 确定开发顺序 

139 

140## 输出要求 

141- 用户故事列表 (aceflow_result/user_stories.md) 

142- 用户画像文档 (aceflow_result/user_personas.md) 

143- 需求优先级矩阵 (aceflow_result/priority_matrix.md) 

144 

145## 质量标准 

146- 每个用户故事包含明确的验收标准 

147- 故事之间逻辑清晰,无重叠 

148- 覆盖主要业务场景 

149 

150## 下一阶段 

151完成后进入"任务分解"阶段,将用户故事转化为具体开发任务。""", 

152 

153 "task_breakdown": """# 任务分解阶段指南 

154 

155## 目标 

156将用户故事分解为可执行的开发任务。 

157 

158## 主要任务 

1591. **技术分析** 

160 - 确定技术实现方案 

161 - 识别技术依赖和风险 

162 - 评估开发工作量 

163 

1642. **任务创建** 

165 - 将用户故事分解为具体任务 

166 - 确保任务颗粒度适中(1-3天完成) 

167 - 定义任务之间的依赖关系 

168 

1693. **资源规划** 

170 - 评估所需技能和人力 

171 - 安排开发时间线 

172 - 识别潜在瓶颈 

173 

174## 输出要求 

175- 任务分解文档 (aceflow_result/task_breakdown.md) 

176- 技术实现方案 (aceflow_result/technical_approach.md) 

177- 开发计划 (aceflow_result/development_plan.md) 

178 

179## 质量标准 

180- 任务定义明确,可量化完成 

181- 工作量估算合理 

182- 依赖关系清晰 

183 

184## 下一阶段 

185完成后进入"测试用例设计"阶段。""", 

186 

187 "test_design": """# 测试用例设计阶段指南 

188 

189## 目标 

190设计全面的测试用例,确保质量保证。 

191 

192## 主要任务 

1931. **测试策略制定** 

194 - 确定测试类型和范围 

195 - 制定测试环境要求 

196 - 定义通过标准 

197 

1982. **测试用例编写** 

199 - 基于用户故事创建功能测试用例 

200 - 设计边界条件和异常场景测试 

201 - 编写自动化测试脚本 

202 

2033. **测试数据准备** 

204 - 准备测试数据集 

205 - 设计数据验证方案 

206 - 确保数据安全性 

207 

208## 输出要求 

209- 测试计划 (aceflow_result/test_plan.md) 

210- 测试用例文档 (aceflow_result/test_cases.md) 

211- 自动化测试脚本 (aceflow_result/automated_tests/) 

212 

213## 质量标准 

214- 测试覆盖率达到设计要求 

215- 测试用例具体可执行 

216- 自动化程度符合项目需求 

217 

218## 下一阶段 

219完成后进入"功能实现"阶段。""", 

220 

221 "implementation": """# 功能实现阶段指南 

222 

223## 目标 

224根据设计和任务分解实现核心功能。 

225 

226## 主要任务 

2271. **代码开发** 

228 - 按照任务分解进行编码 

229 - 遵循代码规范和最佳实践 

230 - 实现核心业务逻辑 

231 

2322. **代码质量** 

233 - 编写清晰的注释和文档 

234 - 进行代码自检和重构 

235 - 确保代码可维护性 

236 

2373. **集成开发** 

238 - 模块间接口对接 

239 - 处理系统集成问题 

240 - 确保整体功能一致性 

241 

242## 输出要求 

243- 源代码 (aceflow_result/src/) 

244- 技术文档 (aceflow_result/technical_docs/) 

245- API文档 (aceflow_result/api_docs/) 

246 

247## 质量标准 

248- 代码符合规范,注释完整 

249- 核心功能正常工作 

250- 模块间接口稳定 

251 

252## 下一阶段 

253完成后进入"单元测试"阶段。""", 

254 

255 "unit_test": """# 单元测试阶段指南 

256 

257## 目标 

258对实现的功能进行单元测试验证。 

259 

260## 主要任务 

2611. **测试执行** 

262 - 运行设计的测试用例 

263 - 执行自动化测试脚本 

264 - 验证功能正确性 

265 

2662. **问题修复** 

267 - 记录和分析测试失败 

268 - 修复发现的缺陷 

269 - 重新测试验证修复 

270 

2713. **覆盖率分析** 

272 - 统计测试覆盖率 

273 - 补充遗漏的测试场景 

274 - 确保质量标准达成 

275 

276## 输出要求 

277- 测试执行报告 (aceflow_result/test_report.md) 

278- 缺陷修复记录 (aceflow_result/bug_fixes.md) 

279- 测试覆盖率报告 (aceflow_result/coverage_report.md) 

280 

281## 质量标准 

282- 主要功能测试通过 

283- 测试覆盖率达到要求 

284- 关键缺陷已修复 

285 

286## 下一阶段 

287完成后进入"集成测试"阶段。""", 

288 

289 "integration_test": """# 集成测试阶段指南 

290 

291## 目标 

292验证系统各部分的集成和整体功能。 

293 

294## 主要任务 

2951. **系统集成** 

296 - 验证模块间集成 

297 - 测试端到端流程 

298 - 检查数据流转 

299 

3002. **环境测试** 

301 - 在目标环境中测试 

302 - 验证部署配置 

303 - 检查性能表现 

304 

3053. **用户验收** 

306 - 基于用户故事验收 

307 - 收集用户反馈 

308 - 确认业务价值实现 

309 

310## 输出要求 

311- 集成测试报告 (aceflow_result/integration_report.md) 

312- 性能测试结果 (aceflow_result/performance_report.md) 

313- 用户验收记录 (aceflow_result/acceptance_record.md) 

314 

315## 质量标准 

316- 集成功能正常工作 

317- 性能指标达到要求 

318- 用户验收通过 

319 

320## 下一阶段 

321完成后进入"代码审查"阶段。""", 

322 

323 "code_review": """# 代码审查阶段指南 

324 

325## 目标 

326全面审查代码质量和设计合理性。 

327 

328## 主要任务 

3291. **代码质量审查** 

330 - 检查代码规范遵循 

331 - 评估代码可读性 

332 - 验证最佳实践应用 

333 

3342. **架构设计审查** 

335 - 评估设计合理性 

336 - 检查扩展性和维护性 

337 - 确认安全性考虑 

338 

3393. **文档完整性** 

340 - 检查技术文档完整性 

341 - 验证API文档准确性 

342 - 确保注释清晰有用 

343 

344## 输出要求 

345- 代码审查报告 (aceflow_result/code_review.md) 

346- 改进建议 (aceflow_result/improvement_suggestions.md) 

347- 最终代码版本 (aceflow_result/final_code/) 

348 

349## 质量标准 

350- 代码质量达到团队标准 

351- 设计问题已解决 

352- 文档完整准确 

353 

354## 下一阶段 

355完成后进入"功能演示"阶段。""", 

356 

357 "demo": """# 功能演示阶段指南 

358 

359## 目标 

360准备和执行项目功能演示。 

361 

362## 主要任务 

3631. **演示准备** 

364 - 准备演示脚本和数据 

365 - 设置演示环境 

366 - 预演和优化流程 

367 

3682. **功能展示** 

369 - 演示核心功能 

370 - 突出项目价值 

371 - 收集反馈意见 

372 

3733. **项目总结** 

374 - 整理项目成果 

375 - 总结经验教训 

376 - 制定后续计划 

377 

378## 输出要求 

379- 演示脚本 (aceflow_result/demo_script.md) 

380- 演示录制/截图 (aceflow_result/demo_materials/) 

381- 项目总结报告 (aceflow_result/project_summary.md) 

382 

383## 质量标准 

384- 演示流程顺畅 

385- 功能展示完整 

386- 项目价值清晰 

387 

388## 项目完成 

389这是标准工作流的最后阶段,项目完成!""" 

390 } 

391 

392 guide = stage_guides.get(stage.lower()) 

393 if guide: 

394 return guide 

395 else: 

396 return f"""# {stage.title()} 阶段指南 

397 

398## 说明 

399暂未找到阶段 '{stage}' 的详细指南。 

400 

401## 可用阶段指南 

402- user_stories (用户故事分析) 

403- task_breakdown (任务分解) 

404- test_design (测试用例设计) 

405- implementation (功能实现) 

406- unit_test (单元测试) 

407- integration_test (集成测试) 

408- code_review (代码审查) 

409- demo (功能演示) 

410 

411## 建议 

412请使用正确的阶段名称,或联系管理员添加新的阶段指南。""" 

413 

414 except Exception as e: 

415 return f"""# 错误 

416 

417获取阶段 '{stage}' 指南时发生错误: {str(e)} 

418 

419请检查阶段名称是否正确,或重试操作。"""