Saltar al contenido principal

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 AnalyticsComponent y 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 hay userId.

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 checkout
    • createSubscriptionCheckoutSession() - Crear sesión de suscripción
    • redirectToCheckout() - Redirigir a Stripe Checkout
    • getStripeConfig() - Obtener configuración de Stripe
  • SubscriptionService: Gestión de suscripciones
    • getMySubscriptions() - Obtener suscripciones del usuario
    • getMySubscriptionStats() - Obtener estadísticas personales
    • getMyStoresWithSubscriptions() - Obtener tiendas con suscripciones
    • cancelSubscription() - 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 Stripe
    • STRIPE_PUBLISHABLE_KEY - Clave pública de Stripe
    • STRIPE_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

Flujo de Pago

  1. Usuario selecciona productos y añade al carrito
  2. Usuario procede al checkout
  3. Se crea sesión de checkout en Stripe
  4. Redirección a Stripe Checkout
  5. Usuario completa el pago
  6. Webhook recibe confirmación
  7. 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.html y duplicidades de código en analytics.ts.
  • app.routes.ts corregido (corchetes/array de rutas).
  • layout.ts tipado de eventos de resize y 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