Ir al contenido

Panel Admin

El Panel Admin es el centro de control para administradores de la plataforma Factux, permitiendo gestionar usuarios, suscripciones, características del sistema y soporte técnico.

/admin

El Panel Admin está organizado en 6 secciones principales:

  • Ruta: /admin/overview
  • Descripción: Dashboard principal con métricas del sistema
  • Métricas incluidas:
    • Total de usuarios registrados
    • Suscripciones activas
    • Ingresos mensuales
    • Uso de recursos
    • Tickets de soporte pendientes
    • Tasa de conversión

Gestión completa de usuarios de la plataforma.

SubmóduloRutaDescripción
Usuarios Finales/admin/users/end-usersPropietarios de negocios (rol: owner)
Asesores/admin/users/advisorsAsesores fiscales (rol: advisor)
Negocios/admin/users/businessesEmpresas registradas en la plataforma
Administradores/admin/users/adminsUsuarios con acceso administrativo
Tax IDs Duplicados/admin/users/duplicate-tax-idsDetección de CIF/NIF duplicados

Control de planes, pagos y uso del sistema.

SubmóduloRutaDescripción
Planes/admin/subscriptions/plansGestión de planes (Free, Basic, Premium)
Activas/admin/subscriptions/activeSuscripciones actualmente vigentes
Pagos/admin/subscriptions/paymentsHistorial de transacciones y pagos
Uso/admin/subscriptions/usageMonitoreo de límites y consumo

Gestión de funcionalidades y permisos.

SubmóduloRutaDescripción
Features/admin/featuresFeature flags y habilitación por plan
Sidebar Items/admin/features/sidebar-itemsConfiguración de elementos del menú

Configuración técnica y seguridad.

SubmóduloRutaDescripción
Configuración/admin/system/configurationVariables de entorno y settings
Base de Datos/admin/system/databaseQueries, migraciones, backups
Seguridad/admin/system/securityPolíticas RLS, logs de acceso
SendGrid Lists/admin/system/sendgrid-listsListas de email marketing
SendGrid Contacts/admin/system/sendgrid-contactsGestión de contactos de email

Gestión de equipo de soporte y tickets.

SubmóduloRutaDescripción
Equipo/admin/support/teamMiembros del equipo de soporte
Tickets/admin/support/ticketsSistema de tickets de soporte
Automatización/admin/support/automationReglas automáticas de respuesta

Reportes y auditoría del sistema.

SubmóduloRutaDescripción
Reportes/admin/analytics/reportsInformes de negocio y KPIs
Uso/admin/analytics/usageAnálisis de uso de la plataforma
Audit Logs/admin/analytics/audit-logsRegistro de eventos del sistema

SOPORTE TÉCNICO: Arquitectura del Panel Admin
src/panels/_shared/guards/RoleGuard.tsx
<RoleGuard allowedRoles={['admin']}>
<AdminLayout />
</RoleGuard>

Comportamiento:

  • Verifica el rol del usuario en profiles.role
  • Redirige a /unauthorized si no es admin
  • Solo permite acceso a usuarios con rol exacto admin
src/panels/admin/layouts/AdminLayout.tsx
// - Sidebar con navegación por secciones
// - Outlet para renderizar children routes
// - Suspense boundary para lazy loading

Todas las páginas del panel admin usan lazy loading para optimizar el bundle:

const OverviewPage = lazy(() => import('./pages/Overview'));
const EndUsersPage = lazy(() => import('./pages/users/EndUsers'));
// ... más páginas

Beneficios:

  • Reduce el tamaño del bundle inicial
  • Carga solo las páginas que el usuario visita
  • Mejora el tiempo de carga inicial

Patrón de rutas padre-hijo:

{
path: '/admin',
element: <RoleGuard><AdminLayout /></RoleGuard>,
children: [
{ index: true, element: <OverviewPage /> },
{ path: 'users/end-users', element: <EndUsersPage /> },
// ... más rutas hijas
]
}

Ventajas:

  • Un solo RoleGuard protege todas las rutas hijas
  • Layout consistente en todas las páginas
  • Suspense centralizado en el Layout

Usuarios y Roles:

  • profiles - Información de usuarios (con campo role)
  • user_businesses - Relación usuarios-negocios
  • businesses - Datos de empresas

Suscripciones:

  • business_subscriptions - Suscripciones activas
  • subscription_plans - Definición de planes
  • subscription_audit_log - Historial de cambios
  • stripe_invoices - Facturas de Stripe

Sistema:

  • feature_flags - Features habilitadas por plan
  • sidebar_items - Configuración del menú
  • system_configuration - Variables del sistema
  • user_access_logs - Logs de acceso y seguridad

Soporte:

  • support_tickets - Tickets de soporte
  • support_team_members - Equipo de soporte
  • ticket_automation_rules - Reglas automáticas

El panel admin tiene políticas especiales de bypass para ciertos recursos:

-- Ejemplo: Admins pueden ver todos los negocios
CREATE POLICY "admin_view_all_businesses"
ON businesses FOR SELECT
TO authenticated
USING (
EXISTS (
SELECT 1 FROM profiles
WHERE profiles.user_id = auth.uid()
AND profiles.role = 'admin'
)
);
  • admin-get-system-stats - Obtiene estadísticas del sistema
  • admin-manage-subscription - Gestiona suscripciones manualmente
  • admin-export-users - Exporta datos de usuarios (GDPR)
  • admin-run-migration - Ejecuta migraciones de BD
  • admin-send-notification - Envía notificaciones masivas

  1. Seguridad:

    • Mantén las credenciales de admin seguras
    • Usa autenticación de dos factores (2FA)
    • Revisa los logs de acceso regularmente
  2. Gestión de Usuarios:

    • Verifica CIF/NIF duplicados semanalmente
    • Monitorea cuentas sospechosas de abuso
    • Responde tickets de soporte en menos de 24h
  3. Suscripciones:

    • Revisa pagos fallidos diariamente
    • Monitorea el uso de recursos por plan
    • Gestiona downgrades y upgrades manualmente cuando sea necesario
  4. Sistema:

    • Realiza backups de BD antes de migraciones
    • Monitorea errores en logs de Sentry
    • Revisa performance de Edge Functions
  1. Acceso Limitado:

    • Usuarios de soporte NO tienen acceso al Panel Admin
    • Solo admins pueden modificar suscripciones
    • Solo admins pueden ejecutar queries en BD
  2. Documentación:

    • Documenta todas las intervenciones manuales
    • Usa el sistema de tickets para tracking
    • Escala issues críticos a admins

  1. Login como Admin:

    • Inicia sesión con cuenta de administrador
    • Verifica que tu perfil tiene role = 'admin'
  2. Explora el Overview:

    • Revisa las métricas principales del dashboard
    • Identifica áreas que requieren atención (ej: tickets pendientes)
  3. Revisa Usuarios:

    • Ve a /admin/users/end-users
    • Ordena por fecha de registro para ver nuevos usuarios
    • Verifica que no haya cuentas duplicadas en /admin/users/duplicate-tax-ids
  4. Monitorea Suscripciones:

    • Revisa suscripciones activas en /admin/subscriptions/active
    • Verifica pagos en /admin/subscriptions/payments
    • Identifica usuarios cerca de sus límites en /admin/subscriptions/usage
  5. Configura Sistema:

    • Ajusta variables en /admin/system/configuration si es necesario
    • Revisa logs de seguridad en /admin/system/security

ErrorCausaSolución
403 Unauthorized al acceder a /adminUsuario no tiene rol adminVerifica que profiles.role = 'admin' en la base de datos
Página en blanco al cargar submóduloError en lazy loadingVerifica la consola del navegador, posible error en componente
No aparecen datos de usuariosPolítica RLS bloqueando accesoVerifica que las políticas RLS permiten acceso a admins
Cambios en suscripción no se guardanError en Edge FunctionRevisa logs de Supabase Edge Functions