# Analisis de Componentes del Catalogo

**Version:** 1.0.0
**Fecha:** 2025-12-08
**Proyecto:** Platform Marketing Content (PMC)

---

## Proposito

Este documento analiza los componentes disponibles en el catalogo del workspace (`core/catalog/`) y determina cuales son reutilizables para el proyecto PMC, identificando adaptaciones necesarias.

---

## Resumen de Componentes Disponibles

El catalogo contiene **8 componentes production-ready**:

| Componente | Alias | Origen | Aplicabilidad PMC |
|------------|-------|--------|-------------------|
| Auth | @CATALOG_AUTH | gamilit | **ALTA** - Usar directamente |
| Session Management | @CATALOG_SESSION | gamilit | **ALTA** - Usar directamente |
| Multi-Tenancy | @CATALOG_TENANT | gamilit | **ALTA** - Usar directamente |
| Rate Limiting | @CATALOG_RATELIMIT | gamilit | **ALTA** - Usar directamente |
| Notifications | @CATALOG_NOTIFY | gamilit | **ALTA** - Usar directamente |
| Feature Flags | @CATALOG_FLAGS | gamilit | **MEDIA** - Para rollouts |
| WebSocket | @CATALOG_WS | trading-platform | **MEDIA** - Para updates en tiempo real |
| Payments | @CATALOG_PAYMENTS | trading-platform | **ALTA** - Para suscripciones SaaS |

---

## Analisis Detallado por Componente

### 1. @CATALOG_AUTH - Autenticacion y Autorizacion

**Ubicacion:** `core/catalog/auth/`

**Funcionalidades incluidas:**
- JWT access + refresh tokens
- Password hashing con bcrypt
- Sistema de roles (RBAC)
- Guards y decoradores
- Recuperacion de contrasena
- Verificacion de email

**Mapeo a modulos PMC:**

| Componente Catalogo | Modulo PMC | Requerimiento |
|---------------------|------------|---------------|
| `JwtAuthGuard` | PMC-007-ADMIN | RF-ADM-001 |
| `RolesGuard` | PMC-007-ADMIN | RF-ADM-002 |
| `AuthService` | PMC-007-ADMIN | RF-ADM-003 a RF-ADM-008 |
| `PasswordRecoveryService` | PMC-007-ADMIN | RF-ADM-011 |

**Adaptaciones necesarias:**
1. Definir roles especificos: `super_admin`, `tenant_admin`, `creative`, `analyst`, `viewer`, `client_portal`
2. Integrar con sistema de tenants (tenant_id en JWT payload)
3. Ajustar permisos por recurso segun matriz RBAC definida

**Estimacion de esfuerzo:** 4-6 horas de adaptacion

---

### 2. @CATALOG_SESSION - Gestion de Sesiones

**Ubicacion:** `core/catalog/session-management/`

**Funcionalidades incluidas:**
- Maximo N sesiones concurrentes
- Auto-cleanup de sesiones expiradas
- Tracking de dispositivos
- Logout selectivo/global

**Mapeo a modulos PMC:**

| Componente Catalogo | Modulo PMC | Requerimiento |
|---------------------|------------|---------------|
| `SessionService` | PMC-007-ADMIN | RF-ADM-009 |
| `DeviceTracking` | PMC-007-ADMIN | RF-ADM-010 |

**Adaptaciones necesarias:**
1. Configurar limite de sesiones por plan de suscripcion
2. Integrar con audit log

**Estimacion de esfuerzo:** 2-3 horas

---

### 3. @CATALOG_TENANT - Multi-Tenancy

**Ubicacion:** `core/catalog/multi-tenancy/`

**Funcionalidades incluidas:**
- Aislamiento de datos por tenant
- Usuarios en multiples tenants
- Roles por tenant (owner, admin, member)
- Configuracion por tenant
- Row Level Security (RLS)

**Mapeo a modulos PMC:**

| Componente Catalogo | Modulo PMC | Requerimiento |
|---------------------|------------|---------------|
| `TenantMiddleware` | PMC-001-TENANTS | RF-TEN-001 |
| `TenantMemberGuard` | PMC-001-TENANTS | RF-TEN-002 |
| `MembershipService` | PMC-001-TENANTS | RF-TEN-003, RF-TEN-004 |
| `RLS Policies` | PMC-001-TENANTS | RF-TEN-005 |

**Adaptaciones necesarias:**
1. Extender modelo Tenant con campos especificos: `logo_url`, `brand_colors`, `custom_domain`
2. Agregar limites de quotas: `max_brands`, `max_products`, `max_storage_gb`, `generation_credits`
3. Implementar planes de suscripcion con limites diferenciados
4. Crear tablas de quotas y uso

**IMPORTANTE:** Este componente es la BASE del sistema. Implementar primero.

**Estimacion de esfuerzo:** 8-12 horas de adaptacion

---

### 4. @CATALOG_RATELIMIT - Limitacion de Tasa

**Ubicacion:** `core/catalog/rate-limiting/`

**Funcionalidades incluidas:**
- Rate limiting por IP/usuario
- Configuracion por endpoint
- Headers HTTP estandar
- Respuestas 429 con Retry-After

**Mapeo a modulos PMC:**

| Componente Catalogo | Modulo PMC | Requerimiento |
|---------------------|------------|---------------|
| `ThrottlerGuard` | PMC-004-GENERATION | RF-GEN-023 |
| `CustomThrottlerGuard` | PMC-004-GENERATION | RF-GEN-024 |

**Adaptaciones necesarias:**
1. Configurar limites por tipo de operacion:
   - Generacion imagen: 10/hora (basic), 50/hora (pro), unlimited (enterprise)
   - Generacion texto: 50/hora (basic), 200/hora (pro), unlimited (enterprise)
   - API calls generales: 1000/hora
2. Usar Redis para storage en produccion
3. Integrar con sistema de creditos/quotas del tenant

**Estimacion de esfuerzo:** 3-4 horas

---

### 5. @CATALOG_NOTIFY - Sistema de Notificaciones

**Ubicacion:** `core/catalog/notifications/`

**Funcionalidades incluidas:**
- Notificaciones in-app
- Notificaciones por email (SMTP/SendGrid)
- Push notifications (Web Push)
- Templates con variables
- Preferencias por usuario
- Cola asincrona

**Mapeo a modulos PMC:**

| Componente Catalogo | Modulo PMC | Requerimiento |
|---------------------|------------|---------------|
| `NotificationService` | PMC-005-AUTOMATION | RF-AUT-013 |
| `MailService` | PMC-005-AUTOMATION | RF-AUT-014 |
| `NotificationPreferences` | PMC-007-ADMIN | RF-ADM-015 |

**Adaptaciones necesarias:**
1. Crear templates especificos:
   - `job_completed` - Generacion completada
   - `job_failed` - Error en generacion
   - `campaign_approved` - Campana aprobada
   - `campaign_delivered` - Assets listos para descarga
   - `quota_warning` - 80% de quota usado
   - `quota_exceeded` - Quota agotada
2. Integrar con sistema de automation (n8n puede disparar notificaciones)

**Estimacion de esfuerzo:** 4-6 horas

---

### 6. @CATALOG_PAYMENTS - Integracion de Pagos

**Ubicacion:** `core/catalog/payments/`

**Funcionalidades incluidas:**
- Stripe Checkout
- Suscripciones con ciclos
- Billing Portal autoservicio
- Webhooks de eventos
- Wallet interno
- Codigos promocionales

**Mapeo a modulos PMC:**

| Componente Catalogo | Modulo PMC | Requerimiento |
|---------------------|------------|---------------|
| `StripeService` | PMC-001-TENANTS | RF-TEN-012 |
| `SubscriptionService` | PMC-001-TENANTS | RF-TEN-013, RF-TEN-014 |
| `BillingPortal` | PMC-001-TENANTS | RF-TEN-015 |

**Adaptaciones necesarias:**
1. Definir planes especificos PMC:
   - **Starter**: $49/mes - 1 usuario, 100 generaciones/mes
   - **Professional**: $149/mes - 5 usuarios, 500 generaciones/mes
   - **Business**: $399/mes - 20 usuarios, 2000 generaciones/mes
   - **Enterprise**: Custom - Ilimitado
2. Crear productos y precios en Stripe Dashboard
3. Configurar webhook endpoint
4. Integrar creditos de generacion con sistema de quotas

**NOTA:** Implementar en Fase 4 (SaaS comercial)

**Estimacion de esfuerzo:** 8-12 horas

---

### 7. @CATALOG_FLAGS - Feature Flags

**Ubicacion:** `core/catalog/feature-flags/`

**Funcionalidades incluidas:**
- Toggle dinamico sin redespliegue
- Rollout gradual por porcentaje
- Target por usuarios/roles
- Periodo de validez

**Aplicabilidad PMC:**
- Rollout de nuevos workflows de generacion
- A/B testing de templates
- Habilitacion gradual de features por tenant

**Adaptaciones necesarias:**
1. Integrar con tenant context
2. Crear flags iniciales para MVP vs features avanzadas

**Estimacion de esfuerzo:** 2-3 horas

---

### 8. @CATALOG_WS - WebSocket

**Ubicacion:** `core/catalog/websocket/`

**Funcionalidades incluidas:**
- Conexiones WebSocket con Socket.io
- Rooms/canales
- Autenticacion de socket
- Broadcasting

**Aplicabilidad PMC:**
- Actualizaciones en tiempo real del estado de jobs
- Notificaciones push instantaneas
- Progreso de generacion en vivo

**Mapeo a modulos PMC:**

| Componente Catalogo | Modulo PMC | Requerimiento |
|---------------------|------------|---------------|
| `WebSocketGateway` | PMC-004-GENERATION | RF-GEN-014 (progreso en tiempo real) |

**Adaptaciones necesarias:**
1. Crear rooms por tenant y por job
2. Integrar con Bull queue para emitir progreso

**Estimacion de esfuerzo:** 4-6 horas

---

## Matriz de Reutilizacion

| Modulo PMC | Componentes Catalogo a Usar |
|------------|----------------------------|
| PMC-001-TENANTS | @CATALOG_TENANT, @CATALOG_PAYMENTS |
| PMC-002-CRM | - (implementacion propia) |
| PMC-003-PROJECTS | - (implementacion propia) |
| PMC-004-GENERATION | @CATALOG_RATELIMIT, @CATALOG_WS |
| PMC-005-AUTOMATION | @CATALOG_NOTIFY |
| PMC-006-ASSETS | - (implementacion propia) |
| PMC-007-ADMIN | @CATALOG_AUTH, @CATALOG_SESSION, @CATALOG_FLAGS |
| PMC-008-ANALYTICS | - (implementacion propia) |

---

## Orden de Implementacion Recomendado

Basado en dependencias y componentes del catalogo:

```
Fase 1 - Fundamentos (usa catalogo):
├── 1. @CATALOG_TENANT → PMC-001-TENANTS
├── 2. @CATALOG_AUTH + @CATALOG_SESSION → PMC-007-ADMIN
└── 3. @CATALOG_RATELIMIT → Middleware global

Fase 2 - Modulos Core (implementacion propia):
├── 4. PMC-002-CRM
├── 5. PMC-006-ASSETS
└── 6. PMC-003-PROJECTS

Fase 3 - Generacion (mezcla):
├── 7. PMC-004-GENERATION
├── 8. @CATALOG_WS → Progreso real-time
└── 9. @CATALOG_NOTIFY → PMC-005-AUTOMATION

Fase 4 - SaaS (usa catalogo):
├── 10. @CATALOG_PAYMENTS → Suscripciones
├── 11. @CATALOG_FLAGS → Rollouts
└── 12. PMC-008-ANALYTICS
```

---

## Ahorro Estimado

| Componente | Desarrollo desde cero | Adaptacion catalogo | Ahorro |
|------------|----------------------|---------------------|--------|
| Auth + Session | 40h | 8h | 32h |
| Multi-Tenancy | 60h | 12h | 48h |
| Rate Limiting | 16h | 4h | 12h |
| Notificaciones | 32h | 6h | 26h |
| Payments | 48h | 12h | 36h |
| Feature Flags | 16h | 3h | 13h |
| WebSocket | 24h | 6h | 18h |
| **TOTAL** | **236h** | **51h** | **185h** |

**Ahorro total estimado: ~185 horas de desarrollo**

---

## Referencias

- Catalogo principal: `core/catalog/CATALOG-INDEX.yml`
- Documentacion componentes: `core/catalog/{componente}/README.md`
- Guias de implementacion: `core/catalog/{componente}/IMPLEMENTATION.md`

---

**Generado por:** Requirements-Analyst
**Fecha:** 2025-12-08
