Versión 0.5.0
Publicado el 16 de noviembre de 2025
Novedades
- Footer en Admin con versión actual leída del
environment. - Página de Analytics en Admin con tarjetas y gráficos:
- Usuarios activos, campañas exitosas y tiempo medio.
- Usuarios por mes (últimos 12) y campañas por estado (datos reales del backend).
- Menú lateral (Admin) siempre visible en escritorio; tecla Escape solo cierra el menú de usuario.
Cambios
- Eliminada la sección "Plantillas Phishing" del menú Admin y sus rutas; permanece "Plantillas Email".
- Correcciones de HTML y TypeScript en
AnalyticsComponenty rutas de Admin. - El dashboard de Admin ahora muestra el usuario real de cada actividad (por
userId), con fallback a “Sistema” si no existe.
Backend
- Endpoints Analytics:
- Análisis del sistema: usuarios activos, campañas exitosas y tiempo medio de respuesta (datos reales).
- Agregación de usuarios creados por mes (últimos 12).
- Cuentas por estado de campañas.
- Actividades:
- Resolución del nombre de usuario (email/username) a partir de
userId; usa "Sistema" si no hayuserId.
- Resolución del nombre de usuario (email/username) a partir de
Tienda (Shop) - Nueva Funcionalidad Completa
Backend - Controladores y Servicios
StoreController
- Gestión completa de tiendas: obtener por ID, código o microservicio
- Listado de tiendas activas y filtrado por microservicio
- Gestión de productos por tienda (obtener y crear)
- Control de acceso basado en roles de usuario
- Operaciones CRUD completas (crear, actualizar, activar/desactivar, eliminar)
StripeController
- Creación de sesiones de checkout para pagos únicos
- Creación de sesiones de checkout para suscripciones
- Creación de sesiones simplificadas (solo IDs de productos)
- Manejo de webhooks de Stripe para eventos de pago
- Consulta de detalles de sesiones de checkout
- Obtención de configuración de Stripe
- Endpoint de prueba para validación
SubscriptionController
- Consulta de suscripciones por usuario (autenticado o por ID)
- Consulta de suscripciones por tienda (por ID o código)
- Obtención de detalles de suscripciones
- Estadísticas de suscripciones (por tienda y personales)
- Listado de tiendas donde el usuario tiene suscripciones
- Cancelación de suscripciones
- Endpoint de prueba para validación
ProductController
- Listado de productos activos y destacados
- Gestión completa de productos (crear, actualizar, eliminar)
- Soft delete para productos
- Control de acceso solo para administradores
Backend - Modelos y Entidades
- Store: Modelo de tienda con código, nombre, microservicio, estado activo/inactivo
- Product: Modelo de producto con precio, moneda, tipo (CREDITS, SUBSCRIPTION), créditos, duración
- StoreProduct: Relación entre tiendas y productos
- Subscription: Modelo de suscripción con integración Stripe
- Payment: Modelo de pago con sesiones de checkout
Backend - Servicios
- StoreService: Gestión completa de tiendas (crear, actualizar, obtener, activar/desactivar)
- StripeService: Integración completa con Stripe (checkout, suscripciones, webhooks)
- SubscriptionService: Gestión de suscripciones (crear, cancelar, consultar, estadísticas)
- RoleStoreService: Gestión de acceso a tiendas por roles de usuario
Frontend - Aplicación Shop Completa
Páginas Principales
/store- Catálogo de productos con filtros por categoría (todos, créditos, suscripciones)/cart- Carrito de compras con gestión de items/checkout- Proceso de pago con integración Stripe/checkout/success- Página de confirmación de pago exitoso/checkout/cancel- Página de cancelación de pago/subscriptions- Gestión de suscripciones del usuario/admin/subscriptions- Panel de administración de suscripciones/profile- Perfil de usuario/login- Autenticación de usuarios/token-login- Login mediante token (integración con SCFront)
Componentes
- Header: Navegación principal con carrito y usuario
- Footer: Información y enlaces
- Cart: Componente de carrito con resumen de productos
- Shop Layout: Layout principal con header y footer
Servicios Frontend
- ProductService: Gestión de productos (
getProductsByStore,getProductById) - LocalCartService: Carrito local con persistencia en localStorage
- StripePaymentService: Integración con Stripe para pagos
createCheckoutSession()- Crear sesión de checkoutcreateSubscriptionCheckoutSession()- Crear sesión de suscripciónredirectToCheckout()- Redirigir a Stripe CheckoutgetStripeConfig()- Obtener configuración de Stripe
- SubscriptionService: Gestión de suscripciones
getMySubscriptions()- Obtener suscripciones del usuariogetMySubscriptionStats()- Obtener estadísticas personalesgetMyStoresWithSubscriptions()- Obtener tiendas con suscripcionescancelSubscription()- Cancelar suscripción- Observables reactivos:
subscriptions$,stats$,stores$
- AuthService: Autenticación y gestión de usuarios
- StoreService: Gestión de tiendas desde frontend
- CheckoutSessionService: Gestión de sesiones de checkout
Funcionalidades de Suscripciones
- Gestión personal: Los usuarios pueden ver, crear y cancelar suscripciones
- Estados visuales: Tags de colores para diferentes estados (ACTIVE, TRIALING, CANCELED, PAST_DUE, UNPAID, PAUSED)
- Estadísticas personales: Resumen de suscripciones activas, en prueba y canceladas
- Panel de administración: Gestión por tienda con filtros por estado
- Exportación CSV: Descargar datos de suscripciones en formato CSV
- Estadísticas avanzadas: Métricas completas de cada tienda
Integración con Stripe
Configuración
- Variables de entorno actualizadas:
STRIPE_SECRET_KEY- Clave secreta de StripeSTRIPE_PUBLISHABLE_KEY- Clave pública de StripeSTRIPE_WEBHOOK_SECRET- Secreto del webhook
- Guía operativa completa:
CONFIGURACION_STRIPE.md- Configuración en Stripe Dashboard
- Configuración en Backend
- Configuración en Frontend
- Configuración de Webhooks
- Eventos necesarios
- Configuración de URLs por entorno
- Checklist de configuración
- Solución de problemas
Webhooks
- Endpoint de webhook configurado para recibir eventos de Stripe
- Soporte para desarrollo local mediante Stripe CLI
- Configuración para producción con HTTPS
- Eventos soportados:
- Pagos únicos:
checkout.session.completed,payment_intent.succeeded/failed - Suscripciones:
customer.subscription.created/updated/deleted,invoice.payment_succeeded/failed - Eventos adicionales:
charge.succeeded/failed,customer.created/updated
- Pagos únicos:
Flujo de Pago
- Usuario selecciona productos y añade al carrito
- Usuario procede al checkout
- Se crea sesión de checkout en Stripe
- Redirección a Stripe Checkout
- Usuario completa el pago
- Webhook recibe confirmación
- Pago/suscripción se activa en el sistema
Frontend - Características Adicionales
- Autenticación por token: Integración con SCFront mediante
token-login - Carrito persistente: Los items se guardan en localStorage
- Filtros de productos: Por categoría (todos, créditos, suscripciones)
- Diseño responsive: Optimizado para móviles, tablets y escritorio
- Notificaciones: Sistema de notificaciones para feedback al usuario
- Loading states: Indicadores de carga durante operaciones asíncronas
- Manejo de errores: Gestión completa de errores con mensajes informativos
Documentación
- STRIPE_INTEGRATION_README.md: Guía completa de integración de Stripe y suscripciones en el frontend
- SUBSCRIPTIONS_README.md: Documentación detallada de la funcionalidad de suscripciones
- CONFIGURACION_STRIPE.md: Guía operativa completa de configuración de Stripe
Base de Datos
- Tablas nuevas:
stores,products,store_products,subscriptions,payments - Migraciones SQL para estructura de tiendas y productos
- Relaciones entre tiendas, productos y usuarios
- Soporte para múltiples tiendas y microservicios
Notas técnicas
- Se corrigieron errores de cierre de etiquetas en
analytics.htmly duplicidades de código enanalytics.ts. app.routes.tscorregido (corchetes/array de rutas).layout.tstipado de eventos deresizey eliminación de código duplicado.
Próximos pasos
- Optimización de rendimiento en la carga de productos
- Notificaciones por email para cambios de estado de suscripciones
- Analytics avanzados para seguimiento de conversiones
- Integración con más métodos de pago