workspace-v1/core/modules/notifications/README.md
rckrdmrd 66161b1566 feat: Workspace-v1 complete migration with NEXUS v3.4
Sistema NEXUS v3.4 migrado con:

Estructura principal:
- core/orchestration: Sistema SIMCO + CAPVED (27 directivas, 28 perfiles)
- core/catalog: Catalogo de funcionalidades reutilizables
- shared/knowledge-base: Base de conocimiento compartida
- devtools/scripts: Herramientas de desarrollo
- control-plane/registries: Control de servicios y CI/CD
- orchestration/: Configuracion de orquestacion de agentes

Proyectos incluidos (11):
- gamilit (submodule -> GitHub)
- trading-platform (OrbiquanTIA)
- erp-suite con 5 verticales:
  - erp-core, construccion, vidrio-templado
  - mecanicas-diesel, retail, clinicas
- betting-analytics
- inmobiliaria-analytics
- platform_marketing_content
- pos-micro, erp-basico

Configuracion:
- .gitignore completo para Node.js/Python/Docker
- gamilit como submodule (git@github.com:rckrdmrd/gamilit-workspace.git)
- Sistema de puertos estandarizado (3005-3199)

Generated with NEXUS v3.4 Migration System
EPIC-010: Configuracion Git y Repositorios
2026-01-04 03:37:42 -06:00

3.3 KiB

Notifications - Core Module

Modulo: core/modules/notifications/ Version: 0.1.0 Fecha: 2026-01-03 Owner: Backend-Agent Estado: desarrollo


Descripcion

Modulo de notificaciones compartido que provee servicios para envio de emails, push notifications e in-app notifications. Abstrae los proveedores de notificacion para uso unificado en todos los proyectos.


Instalacion

Prerequisitos

npm install nodemailer @nestjs/mailer
npm install -D @types/nodemailer
# Opcional para push:
npm install firebase-admin

Configuracion de Paths

{
  "compilerOptions": {
    "paths": {
      "@core/modules/*": ["../../core/modules/*"]
    }
  }
}

API Publica (Planificada)

Servicios

Servicio Descripcion Canales
NotificationService Servicio principal unificado email, push, in-app
EmailService Envio de emails SMTP, SES
PushService Push notifications FCM, APNs
InAppService Notificaciones in-app WebSocket, polling

Tipos

interface Notification {
  id: string;
  userId: string;
  type: 'email' | 'push' | 'in-app';
  title: string;
  body: string;
  data?: Record<string, any>;
  status: 'pending' | 'sent' | 'failed' | 'read';
  createdAt: Date;
  sentAt?: Date;
  readAt?: Date;
}

interface NotificationPreferences {
  userId: string;
  email: boolean;
  push: boolean;
  inApp: boolean;
  categories: Record<string, boolean>;
}

Ejemplos de Uso

Ejemplo 1: Enviar Notificacion

import { NotificationService } from '@core/modules/notifications';

@Injectable()
export class OrderService {
  constructor(private notifications: NotificationService) {}

  async createOrder(order: Order) {
    // ... crear orden

    await this.notifications.send({
      userId: order.userId,
      type: 'email',
      title: 'Orden Confirmada',
      body: `Tu orden #${order.id} ha sido confirmada`,
      template: 'order-confirmation',
      data: { order },
    });
  }
}

Ejemplo 2: Notificacion Multi-canal

await this.notifications.sendMulti({
  userId: user.id,
  channels: ['email', 'push', 'in-app'],
  title: 'Nuevo Mensaje',
  body: 'Tienes un nuevo mensaje',
  respectPreferences: true,  // Respetar preferencias del usuario
});

Dependencias

Internas

Modulo Uso
@core/modules/utils Formateo, validaciones

Externas (npm)

Paquete Version Uso
nodemailer ^6.9 Envio SMTP
@nestjs/mailer ^1.9 Integracion NestJS
firebase-admin ^11.0 Push FCM (opcional)

Aspecto modules/notifications catalog/notifications
Contenido Servicios listos Documentacion + DDL
Uso Importar directamente Copiar y adaptar
DDL No incluye Incluye tablas

Estado Actual

- [ ] NotificationService base
- [ ] EmailService con nodemailer
- [ ] PushService con FCM
- [ ] InAppService con eventos
- [ ] Template engine
- [ ] Preferencias de usuario
- [ ] Tests unitarios
- [ ] Documentacion completa

Changelog

v0.1.0 (2026-01-03)

  • Estructura inicial
  • README con planificacion

Modulo: core/modules/notifications/ | Owner: Backend-Agent