import { Module } from '@nestjs/common';
import { BullBoardModule } from '@bull-board/nestjs';
import { ExpressAdapter } from '@bull-board/express';
import { BullMQAdapter } from '@bull-board/api/bullMQAdapter';
import { BullModule } from '@nestjs/bullmq';
import { QueueName } from './queue-names';

/**
 * Bull Board UI — 挂到 /admin/queues 路径,可视化队列状态(active/waiting/failed)。
 *
 * 安全:本路由由 NestJS 路由系统接管;需要走全局 JwtAuthGuard。
 * 后续可加 @RequirePermission(Permission.ADMIN_PLATFORM_*) 收口管理员可见。
 */
@Module({
  imports: [
    BullBoardModule.forRoot({
      route: '/admin/queues',
      adapter: ExpressAdapter,
    }),
    BullBoardModule.forFeature(
      { name: QueueName.PERSONA_RECOMPUTE, adapter: BullMQAdapter },
      { name: QueueName.PLAN_RECOMPUTE, adapter: BullMQAdapter },
      { name: QueueName.PLAN_ASSET_GENERATE, adapter: BullMQAdapter },
    ),
    // 必须重新 import,Bull Board 内部要读到对应 BullQueue token
    BullModule.registerQueue(
      { name: QueueName.PERSONA_RECOMPUTE },
      { name: QueueName.PLAN_RECOMPUTE },
      { name: QueueName.PLAN_ASSET_GENERATE },
    ),
  ],
})
export class QueuesBullBoardModule {}
