import { Module } from '@nestjs/common';
import { PrismaModule } from '@core/database/prisma/prisma.module';

// Import 工具模块（M1: PO importer）
import { ImportModule } from './import/import.module';

// Core controllers
import { RobotAdminController } from './robot-admin.controller';
import { RobotReportController } from './robot-report.controller';
import { RobotSearchController } from './robot-search.controller';
import { RobotUnitController } from './robot-unit.controller';

// L3 controllers
import { PurchaseOrderController } from './l3-business/purchase-order.controller';
import { SalesOrderController } from './l3-business/sales-order.controller';
import { DeliveryController } from './l3-business/delivery.controller';
import { PaymentController } from './l3-business/payment.controller';
import { ServiceTicketController } from './l3-business/service-ticket.controller';
import { RentalController } from './l3-business/rental.controller';
import { RobotRecordsController } from './l3-business/robot-records.controller';

// Core services
import { RobotUnitService } from './services/robot-unit.service';
import { RobotLifecycleService } from './services/robot-lifecycle.service';
import { LifecycleGuardsService } from './services/lifecycle-guards.service';
import { SnapshotProjectorService } from './services/snapshot-projector.service';
import { RobotReportService } from './services/robot-report.service';

// Admin services
import { RobotSystemConfigService } from './services/robot-system-config.service';
import { RobotModelService } from './services/robot-model.service';
import { RobotSkuService } from './services/robot-sku.service';
import { RobotSearchService } from './services/robot-search.service';

// L3 services
import { PurchaseOrderService } from './l3-business/purchase-order.service';
import { SalesOrderService } from './l3-business/sales-order.service';
import { DeliveryService } from './l3-business/delivery.service';
import { PaymentService } from './l3-business/payment.service';
import { ServiceTicketService } from './l3-business/service-ticket.service';
import { RentalService } from './l3-business/rental.service';
import { RobotRecordsService } from './l3-business/robot-records.service';

@Module({
  imports: [PrismaModule, ImportModule],
  controllers: [
    // ⚠️ NestJS 顺序匹配：更具体路由先注册，避免被 :id 通配拦截
    RobotAdminController, // /robot-manager/admin/*
    RobotReportController, // /robot-manager/reports/*
    RobotSearchController, // /robot-manager/search
    PurchaseOrderController, // /robot-manager/purchase-orders/*
    SalesOrderController, // /robot-manager/sales-orders/*
    DeliveryController, // /robot-manager/delivery-requests/* + /delivery-fulfillments/*
    PaymentController, // /robot-manager/payments/*
    ServiceTicketController, // /robot-manager/service-tickets/*
    RentalController, // /robot-manager/rentals/*
    RobotRecordsController, // /robot-manager/:robotId/(labels|readiness|inspections|legs|compliance)
    RobotUnitController, // /robot-manager, /robot-manager/:id, /:id/change-stage, ...
  ],
  providers: [
    RobotUnitService,
    RobotLifecycleService,
    LifecycleGuardsService,
    SnapshotProjectorService,
    RobotReportService,
    RobotSystemConfigService,
    RobotModelService,
    RobotSkuService,
    RobotSearchService,
    // L3
    PurchaseOrderService,
    SalesOrderService,
    DeliveryService,
    PaymentService,
    ServiceTicketService,
    RentalService,
    RobotRecordsService,
  ],
  exports: [
    RobotUnitService,
    RobotLifecycleService,
    RobotReportService,
    RobotSystemConfigService,
    RobotModelService,
    RobotSkuService,
    PurchaseOrderService,
    SalesOrderService,
    DeliveryService,
    PaymentService,
    ServiceTicketService,
    RentalService,
  ],
})
export class RobotManagerModule {}
