Ir al contenido

Suscripciones

Plan Sesiones Mensajes/mes Templates API Keys
Free 1 100 3 No
Pro 10 10.000 Sin límite Sí

Se siembran automáticamente al arrancar la app (SubscriptionService.seedDefaultPlans()).

  • SessionLimitGuard — bloquea POST /sessions si ya alcanzaste maxSessions.
  • SubscriptionGuard — bloquea creación de schedules si no hay suscripción activa o se alcanzó maxMessagesPerMonth.
  • checkTemplateLimit — bloquea la 4ª plantilla en Free.
  • assertProPlan (en auth.controller) — bloquea crear/listar/revocar API Keys si el plan no es Pro.

Todos estos chequeos llaman primero a isAdmin(user) y retornan sin restricción si es admin — es el mismo patrón repetido a propósito en cada guard/check, en vez de un middleware global, para que quede explícito dónde se aplica cada límite.

GET /auth/subscription devuelve el plan actual con uso (messagesUsed, messagesRemaining, sessionsActive, sessionsRemaining). El frontend usa esto para mostrar/ocultar features (por ejemplo, el gestor de API Keys), combinado con el role del usuario para el bypass de admin — ver Autenticación.

messagesUsedThisMonth se resetea automáticamente al detectar un cambio de mes (comparando currentMonthStart contra el mes actual), no con un cron aparte.