/**
 * 表单引擎模块
 * 集成所有 Services 和 Controllers
 * 符合 API 文档规范 v2.0
 */

import { Module, forwardRef } from '@nestjs/common';
import { PrismaModule } from '@core/database/prisma/prisma.module';
import { ApprovalModule } from '@engines/approval/approval.module';

// Services
import {
  FormIdentifierResolverService,
  FormDefinitionService,
  FormVersionService,
  FormInstanceService,
  FormTranslationService,
  FormTemplateService,
} from './services';
import { FormApprovalIntegrationService } from './services/form-approval-integration.service';
import { FormBusinessKeyService } from './services/form-business-key.service';

// Controllers
import {
  FormsController,
  FormVersionsController,
  FormInstancesController,
  FormTranslationsController,
  FormTemplatesController,
} from './controllers';
import { FormApprovalCallbacksController } from './controllers/form-approval-callbacks.controller';
import { FormVersionReviewController } from './controllers/form-version-review.controller';

@Module({
  imports: [
    PrismaModule,
    forwardRef(() => ApprovalModule), // 使用 forwardRef 避免循环依赖
  ],
  controllers: [
    FormsController,
    FormVersionsController,
    FormVersionReviewController, // 🆕 版本审核管理
    FormInstancesController,
    FormTranslationsController,
    FormTemplatesController,
    FormApprovalCallbacksController,
  ],
  providers: [
    FormIdentifierResolverService,
    FormDefinitionService,
    FormVersionService,
    FormInstanceService,
    FormTranslationService,
    FormTemplateService,
    FormApprovalIntegrationService,
    FormBusinessKeyService, // 🆕 业务单号生成服务
  ],
  exports: [
    FormIdentifierResolverService,
    FormDefinitionService,
    FormVersionService,
    FormInstanceService,
    FormTranslationService,
    FormTemplateService,
    FormApprovalIntegrationService,
    FormBusinessKeyService, // 🆕
  ],
})
export class FormEngineModule {}

