import { BullModule } from '@nestjs/bullmq';
import { Module } from '@nestjs/common';
import { AiConfigModule } from 'src/ai-dashboard/ai-config/ai-config.module';
import { AiProviderService } from 'src/ai-dashboard/ai-provider/ai-provider.service';
import { AiUsageModule } from 'src/ai-usage/ai-usage.module';
import { RedisModule } from 'src/redis/redis.module';
import { BuscadorSerperService } from './buscador-serper.service';
import { BusquedasService, IMAGENES_IA_QUEUE } from './busquedas.service';
import { ImagenesIaController } from './imagenes-ia.controller';
import { ImagenesIaProcessor } from './imagenes-ia.processor';
import { PipelineProductoService } from './pipeline-producto.service';
import { StorageSugeridasService } from './storage-sugeridas.service';
import { SugerenciasService } from './sugerencias.service';

/**
 * Imágenes de productos con IA (submódulo addon INV_IMAGENES_IA).
 * PrismaModule y AuditModule son globales; RedisModule no (lo usa BuscadorSerperService). AiConfigModule + AiUsageModule
 * alimentan AiProviderService (mismo patrón que ConciliacionBancariaIaModule).
 */
@Module({
  imports: [AiConfigModule, AiUsageModule, RedisModule, BullModule.registerQueue({ name: IMAGENES_IA_QUEUE })],
  controllers: [ImagenesIaController],
  providers: [
    AiProviderService,
    BuscadorSerperService,
    StorageSugeridasService,
    PipelineProductoService,
    BusquedasService,
    SugerenciasService,
    ImagenesIaProcessor,
  ],
})
export class ImagenesIaModule {}
