# Phase 2.5: API Extraction 在项目探索后、并行分析前,自动提取 API 文档。 ## 核心原则 **使用成熟工具提取,确保输出格式与 wiki 模板兼容。** ## 执行流程 ```javascript const config = JSON.parse(Read(`${workDir}/manual-config.json`)); // 检查项目路径配置 const apiSources = config.api_sources || detectApiSources(config.project_path); // 执行 API 提取 Bash({ command: `python .claude/skills/software-manual/scripts/extract_apis.py -o "${workDir}" -p ${apiSources.join(' ')}` }); // 验证输出 const apiDocsDir = `${workDir}/api-docs`; const extractedFiles = Glob(`${apiDocsDir}/**/*.{json,md}`); console.log(`Extracted ${extractedFiles.length} API documentation files`); ``` ## 支持的项目类型 | 类型 | 检测方式 | 提取工具 | 输出格式 | |------|----------|----------|----------| | FastAPI | `app/main.py` + FastAPI import | OpenAPI JSON | `openapi.json` + `API_SUMMARY.md` | | Next.js | `package.json` + next | TypeDoc | `*.md` (Markdown) | | Python Module | `__init__.py` + setup.py/pyproject.toml | pdoc | `*.md` (Markdown) | | Express | `package.json` + express | swagger-jsdoc | `openapi.json` | | NestJS | `package.json` + @nestjs | @nestjs/swagger | `openapi.json` | ## 输出格式规范 ### Markdown 兼容性要求 确保输出 Markdown 与 wiki CSS 样式兼容: ```markdown # API Reference →

(wiki-base.css) ## Endpoints →

| Method | Path | Summary | → 蓝色表头 |--------|------|---------| | `GET` | `/api/...` | ... | → 红色高亮 ### GET /api/users →

\`\`\`json →
 深色背景
{
  "id": 1,
  "name": "example"
}
\`\`\`

- Parameter: `id` (required)       → 
  • + ``` ### 格式验证检查 ```javascript function validateApiDocsFormat(apiDocsDir) { const issues = []; const mdFiles = Glob(`${apiDocsDir}/**/*.md`); for (const file of mdFiles) { const content = Read(file); // 检查表格格式 if (content.includes('|') && !content.match(/\|.*\|.*\|/)) { issues.push(`${file}: 表格格式不完整`); } // 检查代码块语言标注 const codeBlocks = content.match(/```(\w*)\n/g) || []; const unlabeled = codeBlocks.filter(b => b === '```\n'); if (unlabeled.length > 0) { issues.push(`${file}: ${unlabeled.length} 个代码块缺少语言标注`); } // 检查标题层级 if (!content.match(/^# /m)) { issues.push(`${file}: 缺少一级标题`); } } return issues; } ``` ## 项目配置示例 在 `manual-config.json` 中配置 API 源: ```json { "software": { "name": "Hydro Generator Workbench", "type": "web" }, "api_sources": { "backend": { "path": "D:/dongdiankaifa9/backend", "type": "fastapi", "entry": "app.main:app" }, "frontend": { "path": "D:/dongdiankaifa9/frontend", "type": "typescript", "entries": ["lib", "hooks", "components"] }, "hydro_generator_module": { "path": "D:/dongdiankaifa9/hydro_generator_module", "type": "python" }, "multiphysics_network": { "path": "D:/dongdiankaifa9/multiphysics_network", "type": "python" } } } ``` ## 输出结构 ``` {workDir}/api-docs/ ├── backend/ │ ├── openapi.json # OpenAPI 3.0 规范 │ └── API_SUMMARY.md # Markdown 摘要(wiki 兼容) ├── frontend/ │ ├── modules.md # TypeDoc 模块文档 │ ├── classes/ # 类文档 │ └── functions/ # 函数文档 ├── hydro_generator/ │ ├── assembler.md # pdoc 模块文档 │ ├── blueprint.md │ └── builders/ └── multiphysics/ ├── analysis_domain.md ├── builders.md └── compilers.md ``` ## 质量门禁 - [ ] 所有配置的 API 源已提取 - [ ] Markdown 格式与 wiki CSS 兼容 - [ ] 表格正确渲染(蓝色表头) - [ ] 代码块有语言标注 - [ ] 无空文件或错误文件 ## 下一阶段 → [Phase 3: Parallel Analysis](03-parallel-analysis.md)