Files
wwjcloud-nest-v1/tools-v1/php-tools/MIGRATION-RULES.md
wanwujie b5826ee469 feat: 发布 v1 智能框架 0.1.0 版本
🚀 新增功能:
- wwjcloud-nest-v1: 完整的 NestJS 智能框架
- AI 自愈机制: @wwjcloud/auto-healing 模块
- 智能代码生成: tools-v1/php-tools 迁移工具链
- AI 能力规划: v1/docs/AI-CAPABILITY-ROADMAP.md

📦 核心模块:
- libs/wwjcloud-ai: AI 策略和恢复服务
- libs/wwjcloud-boot: 启动和配置管理
- libs/wwjcloud-core: 核心基础设施
- libs/wwjcloud-addon: 插件系统

🏗️ 架构特性:
- 分层渐进式 AI 策略
- 微服务导向的模块化设计
- 与 PHP 项目 100% 业务一致性
- Docker 容器化部署支持

📋 版本信息:
- 版本: v0.1.0
- 发布日期: 2025-01-25
- 分支: v1
2025-10-19 19:55:52 +08:00

4.2 KiB

WWJCloud Migration Tooling Rules

Purpose: Standardize PHP→NestJS migration for AI-friendly, repeatable generation. Tools only; do not hand-edit generated outputs.

— Scope & Principles —

  • NestJS compliance: Follow official module/controller/service/entity/DTO patterns; DI-first; guards/pipes/interceptors.
  • Core-only: Generators write strictly under libs/wwjcloud-core/src/{module}/.... Do NOT create/modify src/common, src/vendor, or src/config.
  • Business-first: Migrate PHP business logic (services/controllers/models/validators). Replace PHP infra calls with src/common/* capabilities.
  • Java-structure reference: Organize per module with controllers/, services/, entity/, dto/; controllers orchestrate, services hold business, entities map DB only.

— Contracts & Compatibility —

  • Database alignment: Table/column/index/types must match PHP 100%. No new/renamed/removed fields.
  • Method alignment: Service method names map 1:1 with PHP. Do not invent names.
  • Routing: Keep /adminapi and /api prefixes and controller segmentation consistent with PHP.
  • Validation: Map PHP validators to DTO + class-validator/pipes. Behaviorally equivalent.

— Naming & Paths —

  • Files: kebab-case filenames
    • Controllers: *.controller.ts
    • Services: *.service.ts
    • Entities: *.entity.ts
  • Classes: PascalCase.
  • Aliases (tsconfig): @wwjCommon/*, @wwjCore/*, @wwjVendor/*, @/*.

— Infrastructure Mapping —

  • Replace PHP infra with Common layer:
    • Guards: @wwjCommon/guards/* (e.g., jwt-auth.guard, roles.guard, optional-auth.guard)
    • Decorators: @wwjCommon/decorators/* (e.g., roles.decorator, public.decorator)
    • Exceptions: @wwjCommon/exceptions/business.exception
    • Pipes: @wwjCommon/validation/pipes/* (e.g., parse-diy-form.pipe, json-transform.pipe)
    • Cache/Queue/DB utilities under @wwjCommon/*
    • Do not reference @wwjCore/* for infra.

— Module Generation —

  • Generate libs/wwjcloud-core/src/{module}/{module}.module.ts registering discovered controllers/services.
  • Entities: detect *.entity.ts; optionally include TypeOrmModule.forFeature([...]) (feature flag).
  • Filter non-business directories by default (whitelist/blacklist). Avoid generating modules for technical directories like job/, queue/, workerman/, lang/, etc.

— Generation Stages (feature flags) —

  • Commands: disabled by default (we do not use nest-commander).
  • Jobs/Listeners: configurable; ensure no duplicate suffixes (avoid JobJob/ListenerListener).
  • Routes: no separate route files (NestJS uses decorators).

— Idempotency & Safety —

  • Re-runnable: Same inputs → same outputs. Overwrite files in place; create missing directories; never delete parent folders.
  • Dry-run mode: Output plan without writing files; provide diff-like summary.
  • Logging: Summarize counts for modules/controllers/services/entities/validators, skipped items, and errors.

— Security & Multitenancy —

  • Guards: apply standard guards in controllers; enforce role checks and optional auth where applicable.
  • Tenant isolation: preserve site_id semantics; avoid exposing sensitive fields in responses.

— Quality Gates —

  • After generation (tool-side), optionally run TypeScript compile and ESLint checks. Fail fast and report.
  • Remove duplicate imports; standardize import order; ensure resolved alias paths.

— Temporary Artifacts —

  • All temporary scripts/docs/reports stay in tools-v1/php-tools/. Clean up when done. Never write temp files outside tools-v1/php-tools/.

— Enforcement —

  • “Only fix tools, not generated files.” If outputs are wrong, update tools and re-run.

— Versioning & Extensibility —

  • Keep infra replacement map versioned and extensible to support future modules and AI evolution.

— Quick Checklist —

  • Files are kebab-case; classes are PascalCase
  • Controllers only orchestrate/validate; services hold business logic
  • Entities map DB 1:1 with PHP schema
  • All infra imports use @wwjCommon/*
  • /adminapi and /api controllers generated correctly
  • Modules register found controllers/services; optional TypeORM feature import
  • Commands disabled; jobs/listeners gated; no duplicate suffixes
  • Safe write, idempotent, dry-run available; logs emitted