7.8 KiB
7.8 KiB
NestJS 后端实施检查清单
🎯 项目目标
将现有的 Express 基础后端升级为企业级的 NestJS 架构,提供稳定、可扩展的 OpenAPI 到 MCP 转换服务。
✅ 第一阶段:项目搭建与基础配置 (预计:4-6小时)
🏗️ 项目初始化 (1小时)
- 运行自动化脚本
.\scripts\setup-nestjs.ps1 - 验证项目结构
packages/mcp-swagger-server-nestjs/ ├── src/ ├── test/ ├── package.json └── tsconfig.json
📦 依赖安装验证 (30分钟)
-
核心 NestJS 依赖
@nestjs/core- 核心框架@nestjs/common- 通用装饰器和工具@nestjs/platform-express- Express 适配器
-
API 和文档依赖
@nestjs/swagger- Swagger 集成@nestjs/config- 配置管理
-
业务逻辑依赖
swagger-parser- OpenAPI 解析@modelcontextprotocol/sdk- MCP 协议class-validator&class-transformer- 验证和转换
-
开发工具依赖
@nestjs/testing- 测试框架jest- 单元测试- TypeScript 类型定义
⚙️ 基础配置 (2.5小时)
应用入口配置 (45分钟)
-
修改
src/main.ts- 端口配置 (3322)
- CORS 设置
- 全局验证管道
- Swagger 文档配置
-
验证启动
npm run start:dev # 应该在 http://localhost:3322 启动 # Swagger 文档在 http://localhost:3322/docs
配置模块设置 (45分钟)
-
创建
src/config/configuration.ts- 端口和 CORS 配置
- API 超时和文件大小限制
- Swagger 文档配置
-
创建
src/config/validation.schema.ts- 环境变量验证规则
- 配置值类型检查
应用模块架构 (45分钟)
- 设计
src/app.module.ts- ConfigModule 导入
- 各业务模块导入
- 全局提供者配置
✅ 第二阶段:核心模块开发 (预计:2-3天)
📋 DTO 和类型定义 (4小时)
共享 DTO 创建
src/common/dto/api.dto.tsInputSourceDto- 输入源定义AuthDto- 认证信息ConvertConfigDto- 转换配置FilterConfigDto- 过滤选项ApiResponseDto- 统一响应格式
API 请求 DTO
src/common/dto/request.dto.tsValidateRequestDto- 验证请求PreviewRequestDto- 预览请求ConvertRequestDto- 转换请求
API 响应 DTO
src/common/dto/response.dto.tsValidationResultDto- 验证结果ApiPreviewDto- API 预览McpConfigDto- MCP 配置结果
🔧 OpenAPI 处理模块 (8小时)
模块结构创建
src/modules/openapi/openapi.module.ts- 服务提供者配置
- 控制器注册
核心服务实现
src/modules/openapi/openapi.service.tsvalidateSpec()- OpenAPI 规范验证parseSpecContent()- 内容解析extractEndpoints()- 端点提取previewApi()- API 预览生成
API 控制器
src/modules/openapi/openapi.controller.tsPOST /api/validate- 验证端点POST /api/preview- 预览端点- Swagger 文档注解
单元测试
src/modules/openapi/openapi.service.spec.ts- 验证功能测试
- 解析功能测试
- 错误处理测试
🔄 转换服务模块 (6小时)
转换服务实现
src/modules/conversion/conversion.service.tsconvertToMcp()- 主转换方法applyFilters()- 过滤器应用optimizeEndpoints()- 端点优化generateMcpTools()- MCP 工具生成
控制器实现
src/modules/conversion/conversion.controller.tsPOST /api/convert- 转换端点- 参数验证和错误处理
转换策略
src/modules/conversion/strategies/default.strategy.ts- 默认转换策略optimized.strategy.ts- 优化转换策略
🔌 MCP 协议模块 (4小时)
MCP 服务实现
src/modules/mcp/mcp.service.tsgenerateMcpConfig()- 配置生成validateMcpConfig()- 配置验证- 传输协议支持 (stdio, sse, streamable)
工具生成器
src/modules/mcp/tools/tool-generator.service.ts- 工具生成逻辑validation.helper.ts- 验证辅助函数
✅ 第三阶段:API 集成和测试 (预计:1-2天)
🔗 API 端点完整实现 (4小时)
端点功能验证
-
验证端点 (
POST /api/validate)- URL 输入支持
- 文件输入支持
- 文本输入支持
- 认证头处理
-
预览端点 (
POST /api/preview)- API 信息提取
- 端点列表生成
- 统计信息计算
-
转换端点 (
POST /api/convert)- 完整转换流程
- 配置选项应用
- MCP 格式输出
错误处理和验证
-
全局异常过滤器
src/common/filters/http-exception.filter.ts- 统一错误响应格式
-
验证管道配置
- 请求参数验证
- 类型转换
- 错误消息国际化
🧪 测试套件实现 (4小时)
单元测试
-
服务层测试
- OpenAPI 服务测试
- 转换服务测试
- MCP 服务测试
-
控制器测试
- API 端点测试
- 参数验证测试
- 错误处理测试
集成测试
- 端到端测试
test/openapi.e2e-spec.ts- 完整请求流程测试
- 真实 API 规范测试
测试覆盖率
- 运行测试套件
npm run test # 单元测试 npm run test:e2e # 集成测试 npm run test:cov # 覆盖率报告 - 目标覆盖率 > 80%
✅ 第四阶段:前后端集成 (预计:1天)
🔌 前端集成 (4小时)
API 客户端更新
- 修改
packages/mcp-swagger-ui/src/utils/api.ts- 更新 API 基础 URL (localhost:3322)
- 移除 demo 模式
- 添加真实 API 调用
类型定义同步
- 共享类型定义
- 复制 DTO 类型到前端
- 确保前后端类型一致性
错误处理
- 前端错误处理
- API 错误捕获
- 用户友好的错误消息
- 网络错误重试机制
✅ 集成测试 (2小时)
完整流程测试
-
上传 → 验证 → 预览 → 转换
- 测试完整用户流程
- 验证数据传递正确性
-
边界情况测试
- 大文件处理
- 无效输入处理
- 网络中断恢复
✅ 第五阶段:部署和文档 (预计:半天)
📦 部署准备 (2小时)
Docker 配置
-
创建
Dockerfile- Node.js 基础镜像
- 依赖安装
- 应用构建
-
docker-compose.yml更新- 后端服务配置
- 环境变量设置
- 端口映射
生产配置
- 环境变量配置
.env.production- 日志级别配置
- 性能优化设置
📚 文档更新 (1小时)
API 文档
- Swagger 文档完善
- 端点描述完整
- 示例请求/响应
- 错误代码说明
开发文档
- 更新开发指南
- NestJS 项目说明
- 本地开发指引
- 部署说明
🎯 验收标准
功能验收
- ✅ 所有 API 端点正常工作
- ✅ 前后端完整集成
- ✅ 错误处理完善
- ✅ 测试覆盖率 > 80%
性能验收
- ✅ API 响应时间 < 3秒
- ✅ 支持 10MB 以上文件
- ✅ 并发处理能力 > 10 用户
代码质量验收
- ✅ TypeScript 严格模式通过
- ✅ ESLint 检查通过
- ✅ 代码注释覆盖 > 70%
🚀 立即开始
第一步:运行搭建脚本
.\scripts\setup-nestjs.ps1
第二步:验证环境
cd packages\mcp-swagger-server-nestjs
npm run start:dev
第三步:开始开发 按照此检查清单逐步完成各个模块的开发和测试。
预计总开发时间:5-7 个工作日 预计代码质量:企业级标准 预计维护成本:低