# 03-PLANEACION - Sistema de Notificaciones Completo ## Orden de Implementacion ### Fase 1: DDL (4 archivos) 1. `auth/tables/11-notifications.sql` - Tabla principal de notificaciones - Constraints para type, priority, icon_type - Indices para user_id, created_at, unread 2. `auth/tables/12-user_push_tokens.sql` - Tokens FCM/APNs por usuario - Constraint platform (web, ios, android) - Indice partial para tokens activos 3. `investment/tables/08-distribution_history.sql` - Historial de distribuciones por cuenta - Constraint unique (account_id, distribution_date) - Constraint valid_balance_change 4. `investment/tables/09-distribution_runs.sql` - Logs de ejecucion del job - Constraint valid_counts - Indice por run_date DESC ### Fase 2: Backend Push Notifications 1. Instalar dependencias: `firebase-admin`, `web-push` 2. Actualizar config/index.ts con firebase y webPush 3. Crear firebase.client.ts con: - sendToDevice() - sendToMultiple() - deactivateInvalidTokens() 4. Actualizar notification.service.ts para usar firebaseClient 5. Agregar endpoints push-token en controller y routes ### Fase 3: Tests Unitarios 1. notification.service.spec.ts (~450 lineas) - Mocks de db, wsManager, nodemailer, firebase - Tests para cada metodo publico 2. distribution.job.spec.ts (~380 lineas) - Mocks de db, notification service - Tests para logica de distribucion ### Fase 4: Frontend 1. notification.service.ts - API client 2. notificationStore.ts - Zustand con WebSocket 3. NotificationBell.tsx - Icono con badge 4. NotificationDropdown.tsx - Lista reciente 5. NotificationItem.tsx - Item individual 6. NotificationsPage.tsx - Pagina completa 7. Actualizar MainLayout.tsx y App.tsx