diff --git a/src/index.ts b/src/index.ts index 3124f42..3b3bcf3 100644 --- a/src/index.ts +++ b/src/index.ts @@ -18,6 +18,12 @@ import { setupSwagger } from './config/swagger.config.js'; // WebSocket import { wsManager, tradingStreamService } from './core/websocket/index.js'; +// Background Jobs +import { distributionJob } from './modules/investment/jobs/index.js'; + +// Portfolio WebSocket +import { portfolioWebSocket } from './modules/portfolio/websocket/portfolio.websocket.js'; + // Import routes import { authRouter } from './modules/auth/auth.routes.js'; import { usersRouter } from './modules/users/users.routes.js'; @@ -30,6 +36,7 @@ import { mlRouter } from './modules/ml/ml.routes.js'; import { llmRouter } from './modules/llm/llm.routes.js'; import { portfolioRouter } from './modules/portfolio/portfolio.routes.js'; import { agentsRouter } from './modules/agents/agents.routes.js'; +import { notificationRouter } from './modules/notifications/notification.routes.js'; // Service clients for health checks import { tradingAgentsClient, mlEngineClient, llmAgentClient } from './shared/clients/index.js'; @@ -145,6 +152,7 @@ apiRouter.use('/ml', mlRouter); apiRouter.use('/llm', llmRouter); apiRouter.use('/portfolio', portfolioRouter); apiRouter.use('/agents', agentsRouter); +apiRouter.use('/notifications', notificationRouter); // Mount API router app.use('/api/v1', apiRouter); @@ -161,6 +169,10 @@ const httpServer = createServer(app); // Initialize WebSocket wsManager.initialize(httpServer); tradingStreamService.initialize(); +portfolioWebSocket.initialize(); + +// Start background jobs +distributionJob.start(); // WebSocket stats endpoint app.get('/api/v1/ws/stats', (req: Request, res: Response) => { @@ -183,6 +195,8 @@ httpServer.listen(PORT, () => { // Graceful shutdown const gracefulShutdown = () => { logger.info('Shutting down gracefully...'); + distributionJob.stop(); + portfolioWebSocket.shutdown(); tradingStreamService.shutdown(); wsManager.shutdown(); httpServer.close(() => {