Files
wwjcloud/MIGRATION-STRATEGY-WORKFLOW.md
万物街 7a20a0c50a feat: 完成PHP到NestJS的100%功能迁移
- 迁移25个模块,包含95个控制器和160个服务
- 新增验证码管理、登录配置、云编译等模块
- 完善认证授权、会员管理、支付系统等核心功能
- 实现完整的队列系统、配置管理、监控体系
- 确保100%功能对齐和命名一致性
- 支持生产环境部署
2025-09-10 08:04:28 +08:00

12 KiB
Raw Blame History

NiuCloud PHP → NestJS 迁移策略智能体工作流

迁移概述

目标

将 NiuCloud PHP 版本完整迁移到 NestJS保持业务逻辑100%一致,同时充分利用 NestJS 现代化特性。

迁移范围

  • 核心模块:用户认证、站点管理、权限控制、系统配置
  • 业务模块:插件系统、文件管理、通知系统、日志系统
  • 基础设施:数据库、缓存、队列、事件系统
  • API接口:管理端 /adminapi、前台 /api 接口

智能体工作流设计

阶段1迁移分析体 (MigrationAnalyzer) - S1

职责

  • 分析 PHP 代码结构,识别核心模块和依赖关系
  • 制定迁移优先级和模块划分策略
  • 输出迁移计划和风险评估报告

工作内容

  1. 代码结构分析

    # 分析 PHP 项目结构
    - app/adminapi/controller/     # 管理端控制器
    - app/api/controller/          # 前台控制器
    - app/service/                 # 业务服务层
    - app/model/                   # 数据模型层
    - app/validate/                # 验证层
    - core/                        # 核心框架
    
  2. 依赖关系映射

    • 识别模块间依赖关系
    • 分析数据库表结构
    • 梳理配置项和常量定义
  3. 迁移优先级排序

    优先级1基础设施 (数据库、缓存、队列)
    优先级2核心模块 (用户、权限、站点)
    优先级3业务模块 (插件、文件、通知)
    优先级4扩展功能 (统计、报表、工具)
    

输出产物

  • 迁移分析报告
  • 模块依赖关系图
  • 数据库表结构映射
  • 迁移时间估算

阶段2架构设计体 (ArchitectureDesigner) - S2

职责

  • 设计 NestJS 项目架构
  • 定义模块边界和接口规范
  • 制定代码规范和目录结构

工作内容

  1. 项目结构设计

    wwjcloud/
    ├── src/
    │   ├── common/              # 通用模块
    │   │   ├── auth/            # 认证授权
    │   │   ├── guards/           # 守卫
    │   │   ├── interceptors/     # 拦截器
    │   │   └── pipes/            # 管道
    │   ├── site/                # 站点管理
    │   ├── user/                 # 用户管理
    │   ├── addon/                # 插件系统
    │   ├── config/               # 系统配置
    │   ├── file/                 # 文件管理
    │   └── notification/         # 通知系统
    ├── config/                   # 配置管理
    ├── core/                     # 核心基础设施
    └── vendor/                   # 第三方服务
    
  2. 接口规范定义

    • RESTful API 设计规范
    • 响应格式统一标准
    • 错误处理机制
  3. 数据模型设计

    • Entity 实体定义
    • DTO 数据传输对象
    • Repository 仓储接口

输出产物

  • 架构设计文档
  • API 接口规范
  • 数据模型设计
  • 代码规范指南

阶段3基础设施体 (InfrastructureBuilder) - S3

职责

  • 搭建 NestJS 基础框架
  • 配置数据库、缓存、队列等基础设施
  • 实现核心中间件和工具类

工作内容

  1. 项目初始化

    # 创建 NestJS 项目
    nest new wwjcloud
    npm install @nestjs/typeorm typeorm mysql2
    npm install @nestjs/config @nestjs/cache-manager
    npm install @nestjs/schedule @nestjs/queue
    
  2. 数据库配置

    // config/database.config.ts
    export const databaseConfig = {
      type: 'mysql',
      host: process.env.DB_HOST,
      port: parseInt(process.env.DB_PORT),
      username: process.env.DB_USERNAME,
      password: process.env.DB_PASSWORD,
      database: process.env.DB_DATABASE,
      entities: ['dist/**/*.entity{.ts,.js}'],
      synchronize: false,
      logging: process.env.NODE_ENV === 'development',
    };
    
  3. 核心中间件实现

    • 认证守卫 (JwtAuthGuard)
    • 权限守卫 (RolesGuard)
    • 请求日志拦截器
    • 响应转换拦截器

输出产物

  • 基础框架代码
  • 配置文件模板
  • 中间件实现
  • 工具类库

阶段4核心模块体 (CoreModuleMigrator) - S4

职责

  • 迁移核心业务模块
  • 实现数据模型和业务逻辑
  • 编写单元测试和集成测试

工作内容

  1. 用户认证模块迁移

    // src/common/auth/auth.module.ts
    @Module({
      imports: [JwtModule, PassportModule],
      providers: [AuthService, JwtStrategy],
      exports: [AuthService],
    })
    export class AuthModule {}
    
  2. 站点管理模块迁移

    // src/site/site.entity.ts
    @Entity('site')
    export class Site {
      @PrimaryGeneratedColumn()
      siteId: number;
    
      @Column({ length: 100 })
      siteName: string;
    
      @Column({ type: 'int', default: 1 })
      status: number;
    }
    
  3. 权限控制模块迁移

    • 角色权限管理
    • 菜单权限控制
    • 数据权限隔离

输出产物

  • 核心模块代码
  • 单元测试用例
  • API 接口实现
  • 数据库迁移脚本

阶段5业务模块体 (BusinessModuleMigrator) - S5

职责

  • 迁移业务功能模块
  • 实现复杂业务逻辑
  • 处理第三方服务集成

工作内容

  1. 插件系统迁移

    // src/addon/addon.service.ts
    @Injectable()
    export class AddonService {
      async installAddon(addonKey: string, siteId: number): Promise<void> {
        // 插件安装逻辑
        await this.validateAddon(addonKey);
        await this.installDependencies(addonKey);
        await this.executeInstallScript(addonKey, siteId);
      }
    }
    
  2. 文件管理模块迁移

    • 文件上传下载
    • 图片处理服务
    • 云存储集成
  3. 通知系统迁移

    • 消息推送
    • 邮件发送
    • 短信通知

输出产物

  • 业务模块代码
  • 第三方服务集成
  • 业务测试用例
  • 性能优化建议

阶段6API接口体 (ApiInterfaceMigrator) - S6

职责

  • 实现完整的 API 接口
  • 确保接口兼容性
  • 编写接口文档

工作内容

  1. 管理端接口迁移

    // src/site/site.controller.ts
    @Controller('adminapi/site')
    @UseGuards(JwtAuthGuard, RolesGuard)
    export class SiteController {
      @Get('site')
      @Roles('admin')
      async list(@Query() searchParam: SiteSearchParam): Promise<Result<PageResult<Site>>> {
        return Result.success(await this.siteService.list(searchParam));
      }
    }
    
  2. 前台接口迁移

    • 用户注册登录
    • 站点信息获取
    • 插件功能接口
  3. 接口文档生成

    • Swagger 文档配置
    • API 测试用例
    • 接口兼容性测试

输出产物

  • 完整 API 接口
  • Swagger 文档
  • 接口测试用例
  • 兼容性报告

阶段7数据迁移体 (DataMigrationEngineer) - S7

职责

  • 设计数据迁移策略
  • 实现数据转换脚本
  • 确保数据完整性

工作内容

  1. 数据库迁移脚本

    // migrations/001-initial-schema.ts
    export class InitialSchema implements MigrationInterface {
      async up(queryRunner: QueryRunner): Promise<void> {
        await queryRunner.createTable(new Table({
          name: 'site',
          columns: [
            { name: 'site_id', type: 'int', isPrimary: true, isGenerated: true },
            { name: 'site_name', type: 'varchar', length: '100' },
            { name: 'status', type: 'int', default: 1 },
          ]
        }));
      }
    }
    
  2. 数据转换脚本

    • PHP 数据格式转换
    • 字段映射关系处理
    • 数据验证和清理
  3. 迁移测试

    • 数据完整性验证
    • 性能测试
    • 回滚机制测试

输出产物

  • 数据库迁移脚本
  • 数据转换工具
  • 迁移测试报告
  • 回滚方案

阶段8质量保证体 (QualityAssuranceGuard) - S8

职责

  • 代码质量检查
  • 功能完整性验证
  • 性能和安全测试

工作内容

  1. 代码质量检查

    # ESLint 检查
    npm run lint
    
    # TypeScript 类型检查
    npm run type-check
    
    # 测试覆盖率检查
    npm run test:cov
    
  2. 功能完整性验证

    • 核心功能测试
    • 边界条件测试
    • 异常情况处理
  3. 性能和安全测试

    • 接口性能测试
    • 安全漏洞扫描
    • 负载压力测试

输出产物

  • 质量检查报告
  • 测试结果汇总
  • 性能优化建议
  • 安全评估报告

阶段9部署上线体 (DeploymentManager) - S9

职责

  • 制定部署策略
  • 实现 CI/CD 流程
  • 监控和运维支持

工作内容

  1. 部署配置

    # docker-compose.yml
    version: '3.8'
    services:
      app:
        build: .
        ports:
          - "3000:3000"
        environment:
          - NODE_ENV=production
          - DB_HOST=mysql
        depends_on:
          - mysql
          - redis
    
  2. CI/CD 流程

    • GitHub Actions 配置
    • 自动化测试
    • 自动化部署
  3. 监控和日志

    • 应用性能监控
    • 错误日志收集
    • 健康检查接口

输出产物

  • 部署配置文件
  • CI/CD 流程文档
  • 监控配置
  • 运维手册

迁移检查点

检查点1基础框架 (完成 S3 后)

  • NestJS 项目结构完整
  • 数据库连接正常
  • 基础中间件可用
  • 配置文件正确

检查点2核心功能 (完成 S4 后)

  • 用户认证功能正常
  • 站点管理功能完整
  • 权限控制有效
  • 单元测试通过

检查点3业务功能 (完成 S5 后)

  • 插件系统可用
  • 文件管理正常
  • 通知系统工作
  • 第三方服务集成

检查点4接口完整 (完成 S6 后)

  • 所有 API 接口实现
  • 接口文档完整
  • 兼容性测试通过
  • 性能测试达标

检查点5数据迁移 (完成 S7 后)

  • 数据迁移成功
  • 数据完整性验证
  • 回滚机制可用
  • 迁移性能达标

检查点6质量保证 (完成 S8 后)

  • 代码质量达标
  • 功能测试通过
  • 安全测试通过
  • 性能测试通过

检查点7部署上线 (完成 S9 后)

  • 部署配置正确
  • CI/CD 流程正常
  • 监控系统工作
  • 运维文档完整

验收标准

功能完整性

  • 100% 功能迁移完成
  • 所有 API 接口可用
  • 数据操作正常
  • 第三方服务集成

性能要求

  • 接口响应时间 < 200ms
  • 并发用户数 > 1000
  • 数据库查询优化
  • 缓存命中率 > 80%

质量要求

  • 代码覆盖率 > 80%
  • ESLint 无错误
  • TypeScript 类型安全
  • 安全漏洞为 0

兼容性要求

  • 前端接口兼容
  • 数据库结构兼容
  • 配置文件兼容
  • 第三方服务兼容

风险控制

技术风险

  • 数据丢失风险:建立完整的数据备份和回滚机制
  • 性能下降风险:进行充分的性能测试和优化
  • 兼容性问题:保持接口和数据结构兼容性

进度风险

  • 时间延期风险:设置里程碑检查点,及时调整计划
  • 资源不足风险:合理分配开发资源,优先核心功能
  • 质量风险:建立质量门禁,确保代码质量

业务风险

  • 功能缺失风险:建立功能清单,确保完整迁移
  • 用户体验风险:保持接口一致性,避免用户体验下降
  • 运维风险:建立完善的监控和运维体系

总结

这个迁移策略智能体工作流确保了从 PHP 到 NestJS 的完整迁移,通过 9 个阶段的系统化工作,每个阶段都有明确的职责、工作内容和输出产物,同时设置了 7 个关键检查点来保证迁移质量。整个流程注重风险控制和质量保证,确保迁移后的系统功能完整、性能优良、质量可靠。