Práctico

Planes, límites y entitlements

Personaliza capacidades Free, Plus y Max, límites por organización, mapeos Stripe, gracia, suscripciones acumuladas y excepciones de soporte.

Sincronizado con el commit 7d452a6 del starter.

Una sola puerta de entitlements

Ninguna ruta o componente importa src/config/plans.ts ni compara tier === "max". Se pregunta por capacidad o límite a src/services/entitlements.ts:

await requireEntitlement(orgUuid, "tasks.text_to_video");
await enforceLimit(orgUuid, "storage.totalMb", { current, adding });

Así, renombrar un plan o añadir un cuarto nivel no rompe condiciones dispersas. Las pruebas de arquitectura imponen esta frontera.

Catálogo predeterminado

Capacidad o límiteFreePlusMax
Miembros1520
Subidas
Archivo máximo5 MB25 MB200 MB
Almacenamiento total100 MB5.000 MB50.000 MB
Texto a vídeoNo
Tareas mensuales050Sin límite
Créditos mensuales05002.500

null significa ilimitado. Los créditos de registro son una concesión única; Free no tiene una tarea recurrente.

Resolución del plan

Los planes pertenecen a la organización. subscriptions guarda el estado actual y orders el historial financiero inmutable. El resolver elige la suscripción vigente de mayor rango. active y trialing dan acceso; past_due tiene siete días de gracia.

Una organización puede tener varias suscripciones: sus créditos se suman, pero solo el nivel efectivo más alto define los límites. La pantalla de facturación muestra todas las suscripciones actuales.

Personalizar

  1. Añade nombres en src/types/plan.ts.
  2. Define cada valor para todos los niveles en src/config/plans.ts.
  3. Mantén importes, intervalos, créditos, monedas y Prices en src/config/billing.ts.
  4. Protege la operación con requireEntitlement o enforceLimit.

Los nuevos checkouts usan variables privadas STRIPE_PRICE_*; los alias públicos antiguos solo mantienen despliegues y suscripciones existentes.

Los downgrades no eliminan datos ni miembros. Soporte puede aplicar una excepción de plazas auditada. Los comps manuales son filas normales de subscriptions con source = "manual".

Planes, límites y entitlements · Sushi SaaS