import cors from 'cors'; import dotenv from 'dotenv'; import express from 'express'; import { DomainBootstrap } from './core/runtime/DomainBootstrap'; import { logger } from './utils/logger'; // API Routes import aiRoutes from './api/routes/ai'; import arbitrageRoutes from './api/routes/arbitrage'; import auditRoutes from './api/routes/audit'; import authRoutes from './api/routes/auth'; import billingRoutes from './api/routes/billing'; import bizRoutes from './api/routes/biz'; import chatbotRoutes from './api/routes/chatbot'; import commandRoutes from './api/routes/command'; import configRoutes from './api/routes/config'; import liteConsoleRoutes from './api/routes/console_lite'; import creativeRoutes from './api/routes/creative'; import customerRoutes from './api/routes/customer'; import financeRoutes from './api/routes/finance'; import governanceRoutes from './api/routes/governance'; import marketingRoutes from './api/routes/marketing'; import nodeRoutes from './api/routes/node'; import orderRoutes from './api/routes/order'; import productRoutes from './api/routes/product'; import publishRoutes from './api/routes/publish'; import reportRoutes from './api/routes/report'; import sovereigntyRoutes from './api/routes/sovereignty'; import strategyRoutes from './api/routes/strategy'; import syncRoutes from './api/routes/sync'; import telemetryRoutes from './api/routes/telemetry'; import tenantRoutes from './api/routes/tenant'; import traceRoutes from './api/routes/trace'; import tradeRoutes from './api/routes/trade'; import vaultRoutes from './api/routes/vault'; import webhookRoutes from './api/routes/webhook'; // Platform Connectors import { AliExpressConnector } from './core/connectors/AliExpressConnector'; import { AmazonConnector } from './core/connectors/AmazonConnector'; import { ConnectorBus } from './core/connectors/IPlatformConnector'; import { ShopeeConnector } from './core/connectors/ShopeeConnector'; import { ShopifyConnector } from './core/connectors/ShopifyConnector'; import { TikTokConnector } from './core/connectors/TikTokConnector'; // Guards import { mtlsGuard } from './core/guards/mtls.guard'; import { slaGuard } from './core/guards/sla.guard'; import { requireTraceContext } from './core/guards/trace-context.guard'; // Workers import { startAuditWorker } from './services/AuditWorker'; import { CrawlerWorker } from './workers/CrawlerWorker'; dotenv.config(); const app = express(); const PORT = process.env.PORT || 3003; // Global Middleware app.use(cors()); app.use(express.json()); app.use(requireTraceContext); app.use(mtlsGuard); app.use(slaGuard); // API Routes (V1) app.use('/api/v1/auth', authRoutes); app.use('/api/v1/billing', billingRoutes); app.use('/api/v1/arbitrage', arbitrageRoutes); app.use('/api/v1/orders', orderRoutes); app.use('/api/v1/biz', bizRoutes); app.use('/api/v1/creative', creativeRoutes); app.use('/api/v1/customer', customerRoutes); app.use('/api/v1/report', reportRoutes); app.use('/api/v1/lite', liteConsoleRoutes); app.use('/api/v1/tenant', tenantRoutes); app.use('/api/v1/product', productRoutes); app.use('/api/v1/publish', publishRoutes); app.use('/api/v1/trade', tradeRoutes); app.use('/api/v1/finance', financeRoutes); app.use('/api/v1/strategy', strategyRoutes); app.use('/api/v1/sovereignty', sovereigntyRoutes); app.use('/api/v1/governance', governanceRoutes); app.use('/api/v1/audit', auditRoutes); app.use('/api/v1/trace', traceRoutes); app.use('/api/v1/sync', syncRoutes); app.use('/api/v1/config', configRoutes); app.use('/api/v1/vault', vaultRoutes); app.use('/api/v1/telemetry', telemetryRoutes); app.use('/api/v1/webhook', webhookRoutes); app.use('/api/v1/node', nodeRoutes); app.use('/api/v1/ai', aiRoutes); app.use('/api/v1/chatbot', chatbotRoutes); app.use('/api/v1/command', commandRoutes); app.use('/api/v1/marketing', marketingRoutes); // Register Platform Connectors ConnectorBus.register(new TikTokConnector()); ConnectorBus.register(new ShopeeConnector()); ConnectorBus.register(new ShopifyConnector()); ConnectorBus.register(new AmazonConnector()); ConnectorBus.register(new AliExpressConnector()); // Start Background Workers startAuditWorker(); CrawlerWorker.init(); /** * [ARCH_LIGHT_03] 全局启动流 (Global Startup Flow) * @description 使用 DomainBootstrap 统一管理初始化,彻底解决 index.ts 膨胀与重复代码问题。 */ async function startServer() { try { // 1. 领域初始化 (含 DB 建表与 AGI 降级检查) await DomainBootstrap.init(); // 2. 启动 HTTP 服务 app.listen(PORT, () => { logger.info(`🚀 Console Server running on http://localhost:${PORT}`); logger.info('✅ All backend services initialized successfully'); }); } catch (err: any) { logger.error(`❌ Failed to start server: ${err.message}`); process.exit(1); } } startServer();