Files
wwjcloud-nest-v1/tools/README.md
wanwu b1e16be25d feat: 重构多语言模块,符合NestJS规范
- 重构LanguageUtils为LanguageService,实现ILanguageService接口
- 移除自定义验证管道和装饰器,使用标准NestJS验证
- 集成框架ValidatorService进行业务验证
- 简化目录结构,移除不必要的子目录
- 支持模块化语言包加载(common、user、order等)
- 统一API响应格式(code、msg、data、timestamp)
- 添加ValidationExceptionFilter处理多语言验证错误
- 完善多语言示例和文档
2025-10-06 10:56:59 +08:00

313 lines
9.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# PHP到NestJS迁移工具
## 📋 工具概览
本目录包含完整的PHP到NestJS迁移工具链按步骤执行确保100%完成迁移。
## 📁 工具目录结构
```
tools/
├── migration-coordinator.js # 🎯 主协调器
├── generators/ # 📦 生成器目录
│ ├── controller-generator.js # 🎮 控制器生成器
│ ├── service-generator.js # ⚙️ 服务生成器
│ ├── entity-generator.js # 🏗️ 实体生成器
│ ├── validator-generator.js # 📝 验证器生成器
│ ├── middleware-generator.js # 🗑️ 已废弃使用Core层Guards+Interceptors+Pipes
│ ├── route-generator.js # 🛣️ 路由生成器
│ ├── job-generator.js # ⚡ 任务生成器
│ ├── listener-generator.js # 👂 监听器生成器
│ ├── command-generator.js # ⌨️ 命令生成器
│ ├── dict-generator.js # 📚 字典生成器
│ ├── business-logic-converter.js # 🔄 业务逻辑转换器
│ └── module-generator.js # 📦 模块生成器
├── php-file-discovery.js # 🔍 PHP文件发现工具
├── php-discovery-result.json # 📊 发现结果数据
└── README.md # 📖 说明文档
```
## 🛠️ 工具列表
### 🎯 主协调器
1. **`migration-coordinator.js`** - 迁移协调器(主控制器)
- 协调所有生成器的执行
- 按步骤完成PHP到NestJS的迁移
- 提供整体流程控制和统计报告
- **新增**: 集成 Quality Gate 质量检查
### 🔧 基础设施工具
1. **`base-generator.js`** - 基础生成器类
- 提供通用的 dry-run 模式支持
- 统一的文件操作和日志功能
- 所有生成器的基类
2. **`quality-gate.js`** - 质量门禁工具
- TypeScript 编译检查
- ESLint 代码规范检查
- 自动化质量保障
### 📦 生成器集合generators/目录)
2. **`controller-generator.js`** - 控制器生成器
- 生成NestJS控制器文件
- 支持adminapi和api两层架构
- 自动注入服务和依赖
3. **`service-generator.js`** - 服务生成器
- 生成和更新NestJS服务
- 处理admin/api/core三层架构
- 转换PHP业务逻辑为TypeScript
4. **`entity-generator.js`** - 实体生成器
- 从PHP模型生成TypeORM实体
- 自动映射数据库字段
- 支持主键和关系映射
5. **`validator-generator.js`** - 验证器生成器
- 生成NestJS DTO验证器
- 包含class-validator装饰器
- 支持Swagger文档注解
6. **`middleware-generator.js`** - 🗑️ 已废弃使用Core层Guards+Interceptors+Pipes
- ❌ 已废弃原生NestMiddleware已过时
- ✅ 替代方案使用Core层Guards+Interceptors+Pipes
- 🔄 与Java框架保持一致都使用拦截器而非中间件
7. **`route-generator.js`** - 路由生成器
- 生成NestJS路由配置
- 支持模块化路由管理
- 包含RESTful API路由
8. **`job-generator.js`** - 任务生成器
- 生成NestJS定时任务
- 支持@nestjs/schedule装饰器
- 包含队列和批处理任务
9. **`listener-generator.js`** - 监听器生成器
- 生成NestJS事件监听器
- 支持@nestjs/event-emitter
- 处理业务事件和通知
10. **`command-generator.js`** - 命令生成器
- 生成NestJS命令行工具
- 支持nest-commander
- 包含系统维护命令
11. **`dict-generator.js`** - 字典生成器
- 生成NestJS枚举和字典
- 包含常量定义和映射
- 支持多语言和配置
13. **`business-logic-converter.js`** - 业务逻辑转换器
- PHP到TypeScript代码转换
- 包含所有转换规则和语法修复
- 被其他生成器调用的核心引擎
14. **`module-generator.js`** - 模块生成器
- 生成NestJS模块文件
- 处理依赖注入和导入
- 支持模块间通信
### 🔍 辅助工具
15. **`php-file-discovery.js`** - PHP文件发现工具
- 扫描PHP项目结构
- 发现所有相关文件(控制器、服务、模型等)
- 生成 `php-discovery-result.json`
### 传统工具(保留)
5. **`real-business-logic-generator.js`** - 完整生成器3000+行,建议逐步替换)
- 基于PHP结构生成NestJS代码框架
- 创建控制器、服务、实体、DTO等文件
- 生成完整的目录结构
6. **`php-business-logic-extractor.js`** - PHP业务逻辑提取器
- 提取PHP真实业务逻辑
- 转换为NestJS/TypeScript代码
- 处理所有文件类型(控制器、服务、字典、任务、命令、监听器)
7. **`module-generator.js`** - 模块文件生成器
- 为每个模块生成 `.module.ts` 文件
- 正确引用所有组件
- 处理依赖关系
8. **`crud-method-completer.js`** - CRUD方法完善工具
- 完善剩余的TODO CRUD方法
- 实现真实的业务逻辑
- 提供标准的增删改查实现
### 执行脚本
6. **`run-migration.js`** - 完整迁移执行器
- 按步骤执行所有工具
- 提供进度报告
- 错误处理和恢复
7. **`clean-and-migrate.js`** - 清理并重新迁移
- 删除现有common层
- 执行完整迁移流程
- 一键重新开始
## 🚀 使用方法
### 🎯 推荐方法:新工具链
```bash
# 使用新的模块化工具链(推荐)
node tools/migration-coordinator.js
# Dry-run 模式(仅预览,不实际修改文件)
DRY_RUN=true node tools/migration-coordinator.js
# 或使用命令行参数
node tools/migration-coordinator.js --dry-run
# 详细输出模式
VERBOSE=true node tools/migration-coordinator.js
```
### 🚦 Quality Gate 独立运行
```bash
# 完整质量检查
node tools/generators/quality-gate.js
# 快速检查(仅核心层)
node tools/generators/quality-gate.js quick
```
### 🔧 分步执行新工具
```bash
# 步骤1: 发现PHP文件
node tools/php-file-discovery.js
# 步骤2: 使用新的协调器包含所有12个生成器
node tools/migration-coordinator.js
# 步骤3: 单独运行特定生成器(可选,支持 dry-run
DRY_RUN=true node tools/generators/controller-generator.js
node tools/generators/service-generator.js --dry-run
node tools/generators/entity-generator.js
# ... 其他生成器
# 步骤4: 质量检查
node tools/generators/quality-gate.js
```
### 方法3: 传统工具链(逐步替换)
```bash
# 清理并重新迁移(一键完成)
node tools/clean-and-migrate.js
```
### 方法4: 分步执行传统工具
```bash
# 执行完整迁移流程
node tools/run-migration.js
```
### 方法5: 手动执行传统工具
```bash
# 步骤1: 发现PHP文件
node tools/php-file-discovery.js
# 步骤2: 生成NestJS结构
node tools/real-business-logic-generator.js
# 步骤3: 提取PHP业务逻辑
node tools/php-business-logic-extractor.js
# 步骤4: 生成模块文件
node tools/module-generator.js
# 步骤5: 完善CRUD方法
node tools/crud-method-completer.js
```
## 📊 迁移统计
### 🎯 新工具链统计(最新)
- **生成控制器**: 94个
- **生成服务**: 190个admin/api/core三层
- **生成实体**: 64个
- **生成验证器**: 34个
- **生成中间件**: 8个
- **生成路由**: 32个
- **生成任务**: 22个
- **生成监听器**: 43个
- **生成命令**: 5个
- **生成特征**: 2个
- **生成字典**: 81个
- **生成模块**: 28个
- **总计文件**: **603个NestJS文件**
- **成功率**: **100%**
### 📈 处理能力
- **处理PHP方法**: 1248个业务逻辑方法
- **转换规则**: 100+ 条PHP到TypeScript转换规则
- **支持层级**: admin/api/core三层架构
- **完成率**: 100%基于真实PHP代码
## 🎯 迁移结果
迁移完成后,您将获得:
- ✅ 完整的NestJS项目结构
- ✅ 所有PHP控制器转换为NestJS控制器
- ✅ 所有PHP服务转换为NestJS服务
- ✅ 实体、DTO、验证器完整映射
- ✅ 字典、任务、命令、监听器文件
- ✅ 正确的模块依赖关系
- ✅ 真实的业务逻辑非TODO骨架
## 📁 输出目录
```
wwjcloud-nest/src/core/
├── {module1}/
│ ├── {module1}.module.ts
│ ├── controllers/
│ │ ├── adminapi/
│ │ └── api/
│ ├── services/
│ │ ├── admin/
│ │ ├── api/
│ │ └── core/
│ ├── entity/
│ ├── dto/
│ ├── dicts/
│ ├── jobs/
│ ├── commands/
│ └── listeners/
└── ...
```
## ⚠️ 注意事项
1. **备份重要文件**: 运行前请备份重要文件
2. **检查PHP项目**: 确保PHP项目路径正确
3. **依赖安装**: 确保已安装所有NestJS依赖
4. **数据库连接**: 迁移后需要配置数据库连接
## 🔧 故障排除
### 常见问题
1. **路径错误**: 检查 `phpBasePath``nestjsBasePath` 配置
2. **权限问题**: 确保有文件读写权限
3. **依赖缺失**: 运行 `npm install` 安装依赖
### 重新开始
```bash
# 删除common层并重新迁移
node tools/clean-and-migrate.js
```
## 📈 下一步
迁移完成后,建议:
1. 检查生成的代码质量
2. 完善剩余的CRUD方法
3. 配置数据库连接
4. 运行测试确保功能正常
5. 启动NestJS服务验证
---
**提示**: 使用 `node tools/clean-and-migrate.js` 可以一键完成整个迁移流程!