import db from '../../config/database';
import { logger } from '../../utils/logger';

// Imports for domain initializations
// import { SummaryAggregationService } from '../../domains/Analytics/SummaryAggregationService';
// import { BillingService } from '../../domains/Billing/BillingService';
// import { AdOptimizerService } from '../../domains/Finance/AdOptimizerService';
// import { BillingEngine } from '../../domains/Finance/BillingEngine';
// import { CACThresholdService } from '../../domains/Finance/CACThresholdService';
// import { CampaignHealthService } from '../../domains/Finance/CampaignHealthService';
// import { CashflowPredictor } from '../../domains/Finance/CashflowPredictor';
// import { ClaimFraudService } from '../../domains/Finance/ClaimFraudService';
// import { CommissionService } from '../../domains/Finance/CommissionService';
// import { ComplianceAIGuard } from '../../domains/Finance/ComplianceAIGuard';
// import { CreditMonitorService } from '../../domains/Finance/CreditMonitorService';
// import { CurrencyRiskService } from '../../domains/Finance/CurrencyRiskService';
// import { DynamicShippingService } from '../../domains/Finance/DynamicShippingService';
// import { ExpenseService } from '../../domains/Finance/ExpenseService';
// import { FinancialAuditService } from '../../domains/Finance/FinancialAuditService';
// import { FinancialPlanner } from '../../domains/Finance/FinancialPlanner';
// import { GlobalBalanceSheet } from '../../domains/Finance/GlobalBalanceSheet';
// import { InventoryValueService } from '../../domains/Finance/InventoryValueService';
// import { InvoicingService } from '../../domains/Finance/InvoicingService';
// import { LegalTaxService } from '../../domains/Finance/LegalTaxService';
// import { MarginProtector } from '../../domains/Finance/MarginProtector';
// import { MaterialRiskService } from '../../domains/Finance/MaterialRiskService';
// import { MultiAssetSettlementService } from '../../domains/Finance/MultiAssetSettlementService';
// import { OrderProfitService } from '../../domains/Finance/OrderProfitService';
// import { PaymentRiskService } from '../../domains/Finance/PaymentRiskService';
// import { PaymentTermsService } from '../../domains/Finance/PaymentTermsService';
// import { PayoutCycleService } from '../../domains/Finance/PayoutCycleService';
// import { PayoutOptimizer } from '../../domains/Finance/PayoutOptimizer';
// import { PricingAuditService } from '../../domains/Finance/PricingAuditService';
// import { RebateService } from '../../domains/Finance/RebateService';
// import { ReconciliationService } from '../../domains/Finance/ReconciliationService';
// import { RefundAuditService } from '../../domains/Finance/RefundAuditService';
// import { RefundRiskService } from '../../domains/Finance/RefundRiskService';
// import { RemitPathService } from '../../domains/Finance/RemitPathService';
// import { SavingTrackerService } from '../../domains/Finance/SavingTrackerService';
// import { SKUEfficiencyService } from '../../domains/Finance/SKUEfficiencyService';
// import { SovereignCreditPoolService } from '../../domains/Finance/SovereignCreditPoolService';
// import { StockAuditService } from '../../domains/Finance/StockAuditService';
// import { TaxComplianceService } from '../../domains/Finance/TaxComplianceService';
// import { TaxFilingAdvisor } from '../../domains/Finance/TaxFilingAdvisor';
// import { TaxPlanningService } from '../../domains/Finance/TaxPlanningService';
// import { TenantHealthService } from '../../domains/Finance/TenantHealthService';
// import { TrueROASService } from '../../domains/Finance/TrueROASService';
// import { TurnoverWatchdog } from '../../domains/Finance/TurnoverWatchdog';
// import { VendorCreditService } from '../../domains/Finance/VendorCreditService';
// import { WarrantyService } from '../../domains/Finance/WarrantyService';

// import { CongestionFailoverService } from '../../domains/Logistics/CongestionFailoverService';
// import { FreightAuditService } from '../../domains/Logistics/FreightAuditService';
// import { GlobalFulfillmentService } from '../../domains/Logistics/GlobalFulfillmentService';
// import { LastMileAIService } from '../../domains/Logistics/LastMileAIService';
// import { LastMileOptimizerService } from '../../domains/Logistics/LastMileOptimizerService';
// import { LogisticTelemetryService } from '../../domains/Logistics/LogisticTelemetryService';
// import { SupplierScoringService } from '../../domains/Logistics/SupplierScoringService';

// import { GreenSupplyChainService } from '../../domains/Trade/GreenSupplyChainService';
// import { InventoryForecastService } from '../../domains/Trade/InventoryForecastService';
// import { SovereignCrisisService } from '../../domains/Trade/SovereignCrisisService';
// import { TradeComplianceService } from '../../domains/Trade/TradeComplianceService';

// import { CustomerService } from '../../domains/Customer/CustomerService';

// import { KOLService } from '../../domains/Marketing/KOLService';
// import { MarketingCalendarService } from '../../domains/Marketing/MarketingCalendarService';
// import { SocialPulseService } from '../../domains/Marketing/SocialPulseService';
// import { AutoRedTeamingService } from '../../services/AutoRedTeamingService';
// import { CreditLimitService } from '../../services/CreditLimitService';
// import { DisputeResolverService } from '../../services/DisputeResolverService';
// import { ExperimentService } from '../../services/ExperimentService';
// import { FinanceService } from '../../services/FinanceService';
// import { FXHedgingService } from '../../services/FXHedgingService';
// import { InventoryService } from '../../services/InventoryService';
// import { LogisticsInsuranceService } from '../../services/LogisticsInsuranceService';
// import { LogisticsIntelligenceService } from '../../services/LogisticsIntelligenceService';
// import { LogisticTTLService } from '../../services/LogisticTTLService';
// import { ProductService } from '../../services/ProductService';
// import { ReplenishmentService } from '../../services/ReplenishmentService';
// import { SelfHealingService } from '../../services/SelfHealingService';
// import { SKUMappingService } from '../../services/SKUMappingService';
// import { SupplierService } from '../../services/SupplierService';
// import { TaxReportService } from '../../services/TaxReportService';
// import { UnifiedTaskService } from '../../services/UnifiedTaskService';
// import { AgentSelfAwarenessService } from '../ai/AgentSelfAwarenessService';
// import { AGILegalComplianceService } from '../ai/AGILegalComplianceService';
// import { AutoCircuitBreakerService } from '../ai/AutoCircuitBreakerService';
// import { FederatedNodeService } from '../ai/FederatedNodeService';
// import { InfinityComputeService } from '../ai/InfinityComputeService';
// import { ResourceReservationService } from '../ai/ResourceReservationService';
// import { SandboxROIAdvisor } from '../ai/SandboxROIAdvisor';
// import { SovereignReputationV2Service } from '../ai/SovereignReputationV2Service';
// import { TXSentinelService } from '../pipeline/TXSentinelService';
// import { AutonomousSandboxService } from '../sandbox/AutonomousSandboxService';
// import { ApprovalService } from '../security/approvals/ApprovalService';
// import { PrivateAuditService } from '../security/PrivateAuditService';
// import { SecurityProfilingService } from '../security/SecurityProfilingService';
// import { AutoDiagnosticsService } from '../telemetry/AutoDiagnosticsService';
// import { TracingTopoService } from '../telemetry/TracingTopoService';

// import { DecisionExplainabilityEngine } from '../ai/DecisionExplainabilityEngine'; // 不存在的模块
// import { FeatureToggleService } from '../governance/FeatureToggleService';
// import { S3QuotaManager } from '../governance/S3QuotaManager';
// import { HomomorphicService } from '../security/HomomorphicService'; // 不存在的模块
// import { HomomorphicSumService } from '../security/HomomorphicSumService'; // 不存在的模块
// import { DBShardingService } from './DBShardingService';

// import { DisputeArbitrationService } from '../../domains/Customer/DisputeArbitrationService';
// import { GlobalDisputeRouter } from '../../domains/Customer/GlobalDisputeRouter';
// import { CrossNodeSettlementService } from '../../domains/Finance/CrossNodeSettlementService';
// import { DIDSettlementService } from '../../domains/Finance/DIDSettlementService';
// import { MultiCurrencyHedgingReconService } from '../../domains/Finance/MultiCurrencyHedgingReconService';
// import { NodeLiquidityForecastService } from '../../domains/Finance/NodeLiquidityForecastService';
// import { SovereignPrivateLCService } from '../../domains/Finance/SovereignPrivateLCService';
// import { TradeInsuranceService } from '../../domains/Finance/TradeInsuranceService';
// import { CarbonCreditTradingService } from '../../domains/Logistics/CarbonCreditTradingService';
// import { CourierCreditService } from '../../domains/Logistics/CourierCreditService';
// import { CrowdsourcedLogisticsService } from '../../domains/Logistics/CrowdsourcedLogisticsService';
// import { DynamicRoutingFailoverService } from '../../domains/Logistics/DynamicRoutingFailoverService';
// import { IntermodalFailoverService } from '../../domains/Logistics/IntermodalFailoverService';
// import { ArbitrageAGIService } from '../../domains/Marketing/ArbitrageAGIService';
// import { MembershipLTVService } from '../../domains/Marketing/MembershipLTVService';
// import { MultiTouchAttributionService } from '../../domains/Marketing/MultiTouchAttributionService';
// import { AgingInventoryService } from '../../domains/Trade/AgingInventoryService';
// import { CarbonPledgeService } from '../../domains/Trade/CarbonPledgeService';
// import { ComplianceCertificateService } from '../../domains/Trade/ComplianceCertificateService';
// import { InventoryRLOptimizerService } from '../../domains/Trade/InventoryRLOptimizerService';
// import { SupplierCapacityWatchService } from '../../domains/Trade/SupplierCapacityWatchService';
// import { AgentSwarmService } from '../../services/AgentSwarmService';
// import { AutonomousWarehousingService } from '../../services/AutonomousWarehousingService';
// import { BondedWarehouseService } from '../../services/BondedWarehouseService';
// import { ChannelStatusService } from '../../services/ChannelStatusService';
// import { DisputeAdvisorService } from '../../services/DisputeAdvisorService';
// import { DynamicPricingService } from '../../services/DynamicPricingService';
// import { FraudSharedService } from '../../services/FraudSharedService';
// import { FreightAuditor } from '../../services/FreightAuditor';
// import { OmniStockService } from '../../services/OmniStockService';
// import { PriorityTicketService } from '../../services/PriorityTicketService';
// import { ProductHealthService } from '../../services/ProductHealthService';
// import { StockPlannerService } from '../../services/StockPlannerService';
// import { SupplyChainService } from '../../services/SupplyChainService';
// import { TaxRoutingOptimizerService } from '../../services/TaxRoutingOptimizerService'; // 不存在的模块
// import { PredictiveHealthService } from '../../services/telemetry/PredictiveHealthService';
// import { TrackingFraudDetector } from '../../services/TrackingFraudDetector';
// import { WMSAdvisor } from '../../services/WMSAdvisor';

/**
 * [ARCH_CLEANUP] 遗留表初始化器 (Legacy Table Initializer)
 */
export class LegacyTableInitializer {
  static async init() {
    logger.info('[LegacyTableInitializer] Starting table initializations...');

    try {
      // await FeatureToggleService.initTable();
      // await DBShardingService.initTable();
      // await S3QuotaManager.initTable();
      // await DynamicPricingService.initTable();
      // await SupplyChainService.initTable();
      // await ChannelStatusService.initTable();
      // await DecisionExplainabilityEngine.initTable(); // 不存在的模块
      // await DisputeAdvisorService.initTable(); // 不存在的服务
      // await TrackingFraudDetector.initTable(); // 不存在的服务
      // await PriorityTicketService.initTable(); // 不存在的服务
      // await StockPlannerService.initTable(); // 不存在的服务
      // await FraudSharedService.initTable(); // 不存在的服务
      // await OmniStockService.initTable(); // 不存在的服务
      // await FreightAuditor.initTable(); // 不存在的服务
      // await WMSAdvisor.initTable(); // 不存在的服务
      // await ProductHealthService.initTable(); // 不存在的服务
      // await ApprovalService.initTable(); // 不存在的服务
      // await PrivateAuditService.initTable(); // 不存在的服务
      // await InfinityComputeService.initTable(); // 不存在的模块
      // await AgentSelfAwarenessService.initTable(); // 不存在的模块
      // await AGILegalComplianceService.initTable(); // 不存在的模块
      // await SovereignReputationV2Service.initTable(); // 不存在的模块
      // await LogisticsIntelligenceService.initTable(); // 不存在的模块
      // await ResourceReservationService.initTable(); // 不存在的模块
      // await TXSentinelService.initTable(); // 不存在的模块
      // await TracingTopoService.initTable(); // 不存在的模块
      // await AutoDiagnosticsService.initTable(); // 不存在的模块
      // await AutoRedTeamingService.initTable(); // 不存在的服务
      // await CreditLimitService.initTable(); // 不存在的服务
      // await LogisticsInsuranceService.initTable(); // 不存在的服务
      // await TaxPlanningService.initTable(); // 不存在的服务
      // await LogisticTTLService.initTable(); // 不存在的服务
      // await ReplenishmentService.initTable(); // 不存在的服务
      // await DisputeResolverService.initTable(); // 不存在的服务
      // await ExperimentService.initTable(); // 不存在的服务
      // await TaxReportService.initTable(); // 不存在的服务
      // await FinanceReconService.initTable(); // 不存在的服务
      // await ReconciliationService.initTable(); // 不存在的服务
      // await InvoicingService.initTable(); // 不存在的服务
      // await SupplierScoringService.initTable(); // 不存在的服务
      // await LogisticTelemetryService.initTable(); // 不存在的服务
      // await SecurityProfilingService.initTable(); // 不存在的服务
      // await SelfHealingService.initTable(); // 不存在的服务
      // await BillingService.initTable(); // 不存在的服务
      // await ProductService.initTable(); // 不存在的服务
      // await InventoryService.initTable(); // 不存在的服务
      // await FinanceService.initTable(); // 不存在的服务
      // await SKUMappingService.initTable(); // 不存在的服务
      // await UnifiedTaskService.initTable(); // 不存在的服务
      // await SummaryAggregationService.initTable(); // 不存在的服务
      // await FederatedNodeService.initTable(); // 不存在的模块
      // await AutonomousSandboxService.initTable(); // 不存在的模块
      // await SandboxROIAdvisor.initTable(); // 不存在的模块
      // await AutoCircuitBreakerService.initTable(); // 不存在的模块
      // await ReputationZKPService.initTable(); // 不存在的服务
      // await NetworkTopologyService.initTable(); // 不存在的服务
      // await AlertService.initTable(); // 不存在的服务
      // await SupplierService.initTable(); // 不存在的服务
      // await FXHedgingService.initTable(); // 不存在的服务
      
      // Calibration Batch 1 Initializations
      // await AgentSwarmService.initTable(); // 不存在的服务
      // await PredictiveHealthService.initTable(); // 不存在的服务
      // await WMSWaveService.initTable(); // 不存在的服务
      // await LogisticsTrackerService.initTable(); // 不存在的服务
      // await AgingInventoryService.initTable(); // 不存在的服务
      // await ArbitrageAGIService.initTable(); // 不存在的服务
      // await AutonomousWarehousingService.initTable(); // 不存在的服务
      // await BondedWarehouseService.initTable(); // 不存在的服务
      // await HomomorphicService.initTable(); // 不存在的模块
      // await HomomorphicSumService.initTable(); // 不存在的模块
      
      // AI-3 New Services Initializations
      // await OrderProfitService.initTable(); // 不存在的服务
      // await CurrencyRiskService.initTable(); // 不存在的服务
      // await PricingAuditService.initTable(); // 不存在的服务
      // await TrueROASService.initTable(); // 不存在的服务
      // await TaxComplianceService.initTable(); // 不存在的服务
      // await VendorCreditService.initTable(); // 不存在的服务
      // await CashflowPredictor.initTable(); // 不存在的服务
      // await BillingEngine.initTable(); // 不存在的服务
      // await SKUEfficiencyService.initTable(); // 不存在的服务
      // await PayoutCycleService.initTable(); // 不存在的服务
      // await InventoryValueService.initTable(); // 不存在的服务
      // await RefundRiskService.initTable(); // 不存在的服务
      // await PaymentTermsService.initTable(); // 不存在的服务
      // await RemitPathService.initTable(); // 不存在的服务
      // await StockAuditService.initTable(); // 不存在的服务
      // await AdOptimizerService.initTable(); // 不存在的服务
      // await TenantHealthService.initTable(); // 不存在的服务
      // await RebateService.initTable(); // 不存在的服务
      // await FinancialAuditService.initTable(); // 不存在的服务
      // await ExpenseService.initTable(); // 不存在的服务
      // await MaterialRiskService.initTable(); // 不存在的服务
      // await RefundAuditService.initTable(); // 不存在的服务
      // await CACThresholdService.initTable(); // 不存在的服务
      // await CommissionService.initTable(); // 不存在的服务
      // await TurnoverWatchdog.initTable(); // 不存在的服务
      // await WarrantyService.initTable(); // 不存在的服务
      // await TaxFilingAdvisor.initTable(); // 不存在的服务
      // await MarginProtector.initTable(); // 不存在的服务
      // await CreditMonitorService.initTable(); // 不存在的服务
      // await LegalTaxService.initTable(); // 不存在的服务
      // await PayoutOptimizer.initTable(); // 不存在的服务
      // await FinancialPlanner.initTable(); // 不存在的服务
      // await PaymentRiskService.initTable(); // 不存在的服务
      // await DynamicShippingService.initTable(); // 不存在的服务
      // await CampaignHealthService.initTable(); // 不存在的服务
      // await SavingTrackerService.initTable(); // 不存在的服务
      // await ClaimFraudService.initTable(); // 不存在的服务
      // await GlobalBalanceSheet.initTable(); // 不存在的服务
      // await ComplianceAIGuard.initTable(); // 不存在的服务
      // await MultiAssetSettlementService.initTable(); // 不存在的服务
      // await SovereignCreditPoolService.initTable(); // 不存在的服务
      // await LastMileAIService.initTable(); // 不存在的服务
      // await FreightAuditService.initTable(); // 不存在的服务
      // await GlobalFulfillmentService.initTable(); // 不存在的服务
      // await LastMileOptimizerService.initTable(); // 不存在的服务
      // await CongestionFailoverService.initTable(); // 不存在的服务
      // await InventoryForecastService.initTable(); // 不存在的服务
      // await SovereignCrisisService.initTable(); // 不存在的服务
      // await GreenSupplyChainService.initTable(); // 不存在的服务
      // await TradeComplianceService.initTable(); // 不存在的服务
      // await Customer360Service.initTable(); // 不存在的服务
      // await CustomerService.initTable(); // 不存在的服务
      // await KOLService.initTable(); // 不存在的服务
      // await MarketingCalendarService.initTable(); // 不存在的服务
      // await SocialPulseService.initTable(); // 不存在的服务
      // await MultiTouchAttributionService.initTable(); // 不存在的服务
      // await MembershipLTVService.initTable(); // 不存在的服务
      // await DIDSettlementService.initTable(); // 不存在的服务
      // await ReputationPerksService.initTable(); // 不存在的服务
      // await MultiCurrencyHedgingReconService.initTable(); // 不存在的服务
      // await NodeLiquidityForecastService.initTable(); // 不存在的服务
      // await CrossNodeSettlementService.initTable(); // 不存在的服务
      // await TaxRoutingOptimizerService.initTable(); // 不存在的模块
      // await SovereignPrivateLCService.initTable(); // 不存在的服务
      // await TradeInsuranceService.initTable(); // 不存在的服务
      // await DynamicRoutingFailoverService.initTable(); // 不存在的服务
      // await CrowdsourcedLogisticsService.initTable(); // 不存在的服务
      // await IntermodalFailoverService.initTable(); // 不存在的服务
      // await CarbonCreditTradingService.initTable(); // 不存在的服务
      // await CourierCreditService.initTable(); // 不存在的服务
      // await InventoryRLOptimizerService.initTable(); // 不存在的服务
      // await SupplierCapacityWatchService.initTable(); // 不存在的服务
      // await ComplianceCertificateService.initTable(); // 不存在的服务
      // await CarbonPledgeService.initTable(); // 不存在的服务
      // await NodeResourceQuotaService.initTable(); // 不存在的服务
      // await DisputeArbitrationService.initTable(); // 不存在的服务
      // await GlobalDisputeRouter.initTable(); // 不存在的服务
      // await AIService.initTable(); // If exists
      
      // Some services don't have initTable yet, skipping them.
      
      // 1. [BIZ_MKT_01] 投放-库存联动
      const hasAdCampaignsTable = await db.schema.hasTable('cf_ad_campaigns');
      if (!hasAdCampaignsTable) {
        logger.info('📦 Creating cf_ad_campaigns table...');
        await db.schema.createTable('cf_ad_campaigns', (table) => {
          table.string('id', 64).primary();
          table.string('tenant_id', 64).notNullable();
          table.string('shop_id', 64).notNullable();
          table.string('product_id', 64).notNullable();
          table.string('platform', 32).notNullable();
          table.float('daily_budget').defaultTo(0);
          table.float('cpa_limit').defaultTo(0);
          table.string('status', 16).defaultTo('ACTIVE');
          table.timestamps(true, true);
          table.index(['tenant_id', 'product_id']);
        });
      }

      logger.info('[LegacyTableInitializer] Table initializations completed.');
    } catch (err: any) {
      logger.error(`[LegacyTableInitializer] Error during table initialization: ${err.message}`);
    }
  }
}
