Fecha: 2026-02-10 Estado: OK - Completado
Establecer la infraestructura tecnica para diferenciar usuarios FREE vs PREMIUM y permitir el upgrade mediante codigos promocionales (MVP).
- Se elimino el campo
plany el enumUserPlan. - Se creo el nuevo campo
subscriptionPlancon el enumSubscriptionPlan(FREE,PREMIUM). - Migraciones aplicadas:
20260210104055_add_subscription_plan20260210120000_fix_subscription_naming
- Sincronizacion de tipos en
auth.middleware.ts,analyze.controller.ts,analyze-article.usecase.tsyquota.service.ts. - Nuevo controlador
SubscriptionController:POST /api/subscription/redeemPOST /api/subscription/cancel
- Validacion de entrada con Zod (
subscription.schema.ts). - Rutas registradas en
server.tsy DI endependencies.ts. - Codigos permitidos (MVP):
VERITY_ADMIN,MASTER_AI_2026.
- Tipos de usuario actualizados a
FREE | PREMIUM. - Nuevo componente
PricingModalcon comparativa de planes y canje de codigo. - Boton "Gestionar Plan" en
ProfileHeadery modal conectado en/profile. - Refresco de sesion tras canje o cancelacion (router.refresh + reload).
- Tests de componentes ajustados para soporte de
PREMIUM.
- Registrar / loguear un usuario nuevo.
- Verificar en "Mi Perfil" que aparece el badge "Plan Gratuito".
- Ir a "Mi Perfil" -> "Gestionar Plan".
- En el modal, usar "Tienes un codigo promocional?".
- Introducir el codigo
VERITY_ADMINoMASTER_AI_2026. - Click en "Canjear Codigo".
Resultado esperado:
- Toast de exito.
- El modal se cierra.
- El badge cambia a "Plan Premium".
- Con plan PREMIUM activo, abrir "Gestionar Plan".
- Click en "Cancelar suscripcion".
Resultado esperado:
- Toast de exito.
- El plan vuelve a "FREE".
- Seguridad: endpoint protegido por
authenticatey validacion Zod. - Deuda tecnica: codigos hardcodeados; deberian moverse a BD con limites y expiracion.
- Migracion: el campo
planfue eliminado (datos previos no se conservan).
- Integracion con pasarela de pago (Stripe).
- Tabla de codigos promocionales con reglas de uso.
- Activar publicidad (mock AdSense) para usuarios FREE.