# 03-PLANEACION - Phase 1 MVP Implementation ## Plan de Implementación ### Task 10: Servicio de Notificaciones #### Archivos a Crear 1. **notification.service.ts** (~500 líneas) - Clase `NotificationService` - Métodos: sendNotification, sendBulkNotification, broadcastNotification - Canales: in_app (WebSocket), email, push - Preferencias de usuario (quiet hours, disabled types) - Templates de email por tipo 2. **notification.controller.ts** (~180 líneas) - getNotifications, getUnreadCount - markAsRead, markAllAsRead - deleteNotification - getPreferences, updatePreferences 3. **notification.routes.ts** (~50 líneas) - GET /notifications - GET /notifications/unread-count - GET /notifications/preferences - PATCH /notifications/preferences - POST /notifications/read-all - PATCH /notifications/:id/read - DELETE /notifications/:id 4. **index.ts** (exports) #### Modificaciones 1. **alerts.service.ts**: Integrar con notificationService en triggerAlert() 2. **index.ts**: Agregar notificationRouter a API routes ### Task 11: Distribution Job #### Archivos a Crear 1. **distribution.job.ts** (~300 líneas) - Clase `DistributionJob` - Scheduler: setInterval para 00:00 UTC - Métodos: run, getActiveAccounts, distributeReturns - Cálculo de retornos diarios basado en producto - Aplicación de performance fees - Registro en distribution_history - Notificación a usuarios 2. **index.ts** (exports) #### Modificaciones 1. **index.ts**: Inicializar distributionJob.start() al arrancar servidor ## Orden de Implementación ``` 1. notification.service.ts [Core] 2. notification.controller.ts [API] 3. notification.routes.ts [Routing] 4. notifications/index.ts [Exports] 5. Modificar alerts.service.ts [Integración] 6. distribution.job.ts [Core] 7. investment/jobs/index.ts [Exports] 8. Modificar main index.ts [Startup] ``` ## Criterios de Aceptación - [ ] Notificaciones en tiempo real via WebSocket - [ ] Emails enviados con templates correctos - [ ] API REST funcional para gestión de notificaciones - [ ] Alertas de precio envían notificaciones automáticamente - [ ] Distribution job programado para 00:00 UTC - [ ] Cálculo correcto de rendimientos por producto - [ ] Historial de distribuciones registrado - [ ] TypeScript compila sin errores