import { Module } from '@nestjs/common';
import { ConfigModule } from '@nestjs/config';
import configuration from '@/config/configuration';
import { PrismaModule } from '@core/database/prisma/prisma.module';
import { NotificationModule } from '@core/messaging/notification/notification.module';
import { LoggingModule } from '@core/observability/logging/logging.module';
import { BusinessTypeRegistry } from '@engines/approval/business-type-registry.service';
import { FormBusinessTypeProvider } from '@engines/form/form-management/form-business-type.provider';

/**
 * Worker Module
 * 
 * 这是一个最小化的模块，只包含 Temporal Worker 运行所需的依赖
 * 
 * 不包括：
 * - HTTP 服务器
 * - 定时任务
 * - 其他业务模块
 */
@Module({
  imports: [
    // 配置模块
    ConfigModule.forRoot({
      isGlobal: true,
      load: [configuration],
    }),
    
    // 数据库
    PrismaModule,
    
    // 通知服务（审批需要发送通知）
    NotificationModule,
    
    // 日志服务
    LoggingModule,
  ],
  providers: [
    // 业务类型注册表（用于获取表单数据）
    BusinessTypeRegistry,
    
    // 表单业务类型提供者（注册 FORM_INSTANCE 类型）
    FormBusinessTypeProvider,
  ],
  exports: [
    PrismaModule,
    NotificationModule,
    BusinessTypeRegistry,
    LoggingModule,
  ],
})
export class WorkerModule {}

