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
Estructura del Panel
Sección titulada «Estructura del Panel»El Panel Admin está organizado en 6 secciones principales:
1. Overview
Sección titulada «1. Overview»- 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
2. Usuarios
Sección titulada «2. Usuarios»Gestión completa de usuarios de la plataforma.
| Submódulo | Ruta | Descripción |
|---|---|---|
| Usuarios Finales | /admin/users/end-users | Propietarios de negocios (rol: owner) |
| Asesores | /admin/users/advisors | Asesores fiscales (rol: advisor) |
| Negocios | /admin/users/businesses | Empresas registradas en la plataforma |
| Administradores | /admin/users/admins | Usuarios con acceso administrativo |
| Tax IDs Duplicados | /admin/users/duplicate-tax-ids | Detección de CIF/NIF duplicados |
3. Suscripciones
Sección titulada «3. Suscripciones»Control de planes, pagos y uso del sistema.
| Submódulo | Ruta | Descripción |
|---|---|---|
| Planes | /admin/subscriptions/plans | Gestión de planes (Free, Basic, Premium) |
| Activas | /admin/subscriptions/active | Suscripciones actualmente vigentes |
| Pagos | /admin/subscriptions/payments | Historial de transacciones y pagos |
| Uso | /admin/subscriptions/usage | Monitoreo de límites y consumo |
4. Características (Features)
Sección titulada «4. Características (Features)»Gestión de funcionalidades y permisos.
| Submódulo | Ruta | Descripción |
|---|---|---|
| Features | /admin/features | Feature flags y habilitación por plan |
| Sidebar Items | /admin/features/sidebar-items | Configuración de elementos del menú |
5. Sistema
Sección titulada «5. Sistema»Configuración técnica y seguridad.
| Submódulo | Ruta | Descripción |
|---|---|---|
| Configuración | /admin/system/configuration | Variables de entorno y settings |
| Base de Datos | /admin/system/database | Queries, migraciones, backups |
| Seguridad | /admin/system/security | Políticas RLS, logs de acceso |
| SendGrid Lists | /admin/system/sendgrid-lists | Listas de email marketing |
| SendGrid Contacts | /admin/system/sendgrid-contacts | Gestión de contactos de email |
6. Soporte
Sección titulada «6. Soporte»Gestión de equipo de soporte y tickets.
| Submódulo | Ruta | Descripción |
|---|---|---|
| Equipo | /admin/support/team | Miembros del equipo de soporte |
| Tickets | /admin/support/tickets | Sistema de tickets de soporte |
| Automatización | /admin/support/automation | Reglas automáticas de respuesta |
7. Analíticas
Sección titulada «7. Analíticas»Reportes y auditoría del sistema.
| Submódulo | Ruta | Descripción |
|---|---|---|
| Reportes | /admin/analytics/reports | Informes de negocio y KPIs |
| Uso | /admin/analytics/usage | Análisis de uso de la plataforma |
| Audit Logs | /admin/analytics/audit-logs | Registro de eventos del sistema |
Características Técnicas
Sección titulada «Características Técnicas»SOPORTE TÉCNICO: Arquitectura del Panel Admin
Guardia de Roles (RoleGuard)
Sección titulada «Guardia de Roles (RoleGuard)»<RoleGuard allowedRoles={['admin']}> <AdminLayout /></RoleGuard>Comportamiento:
- Verifica el rol del usuario en
profiles.role - Redirige a
/unauthorizedsi no esadmin - Solo permite acceso a usuarios con rol exacto
admin
Layout del Admin
Sección titulada «Layout del Admin»// - Sidebar con navegación por secciones// - Outlet para renderizar children routes// - Suspense boundary para lazy loadingLazy Loading
Sección titulada «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áginasBeneficios:
- Reduce el tamaño del bundle inicial
- Carga solo las páginas que el usuario visita
- Mejora el tiempo de carga inicial
Rutas Anidadas (Nested Routes)
Sección titulada «Rutas Anidadas (Nested Routes)»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
RoleGuardprotege todas las rutas hijas - Layout consistente en todas las páginas
- Suspense centralizado en el Layout
Tablas Principales
Sección titulada «Tablas Principales»Usuarios y Roles:
profiles- Información de usuarios (con camporole)user_businesses- Relación usuarios-negociosbusinesses- Datos de empresas
Suscripciones:
business_subscriptions- Suscripciones activassubscription_plans- Definición de planessubscription_audit_log- Historial de cambiosstripe_invoices- Facturas de Stripe
Sistema:
feature_flags- Features habilitadas por plansidebar_items- Configuración del menúsystem_configuration- Variables del sistemauser_access_logs- Logs de acceso y seguridad
Soporte:
support_tickets- Tickets de soportesupport_team_members- Equipo de soporteticket_automation_rules- Reglas automáticas
Políticas RLS
Sección titulada «Políticas RLS»El panel admin tiene políticas especiales de bypass para ciertos recursos:
-- Ejemplo: Admins pueden ver todos los negociosCREATE POLICY "admin_view_all_businesses"ON businesses FOR SELECTTO authenticatedUSING ( EXISTS ( SELECT 1 FROM profiles WHERE profiles.user_id = auth.uid() AND profiles.role = 'admin' ));Edge Functions Relevantes
Sección titulada «Edge Functions Relevantes»admin-get-system-stats- Obtiene estadísticas del sistemaadmin-manage-subscription- Gestiona suscripciones manualmenteadmin-export-users- Exporta datos de usuarios (GDPR)admin-run-migration- Ejecuta migraciones de BDadmin-send-notification- Envía notificaciones masivas
Mejores Prácticas
Sección titulada «Mejores Prácticas»Para Administradores
Sección titulada «Para Administradores»-
Seguridad:
- Mantén las credenciales de admin seguras
- Usa autenticación de dos factores (2FA)
- Revisa los logs de acceso regularmente
-
Gestión de Usuarios:
- Verifica CIF/NIF duplicados semanalmente
- Monitorea cuentas sospechosas de abuso
- Responde tickets de soporte en menos de 24h
-
Suscripciones:
- Revisa pagos fallidos diariamente
- Monitorea el uso de recursos por plan
- Gestiona downgrades y upgrades manualmente cuando sea necesario
-
Sistema:
- Realiza backups de BD antes de migraciones
- Monitorea errores en logs de Sentry
- Revisa performance de Edge Functions
Para Soporte Técnico
Sección titulada «Para Soporte Técnico»-
Acceso Limitado:
- Usuarios de soporte NO tienen acceso al Panel Admin
- Solo admins pueden modificar suscripciones
- Solo admins pueden ejecutar queries en BD
-
Documentación:
- Documenta todas las intervenciones manuales
- Usa el sistema de tickets para tracking
- Escala issues críticos a admins
Tour Guiado
Sección titulada «Tour Guiado»Primer Acceso al Panel Admin
Sección titulada «Primer Acceso al Panel Admin»-
Login como Admin:
- Inicia sesión con cuenta de administrador
- Verifica que tu perfil tiene
role = 'admin'
-
Explora el Overview:
- Revisa las métricas principales del dashboard
- Identifica áreas que requieren atención (ej: tickets pendientes)
-
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
- Ve a
-
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
- Revisa suscripciones activas en
-
Configura Sistema:
- Ajusta variables en
/admin/system/configurationsi es necesario - Revisa logs de seguridad en
/admin/system/security
- Ajusta variables en
Errores Comunes
Sección titulada «Errores Comunes»| Error | Causa | Solución |
|---|---|---|
| 403 Unauthorized al acceder a /admin | Usuario no tiene rol admin | Verifica que profiles.role = 'admin' en la base de datos |
| Página en blanco al cargar submódulo | Error en lazy loading | Verifica la consola del navegador, posible error en componente |
| No aparecen datos de usuarios | Política RLS bloqueando acceso | Verifica que las políticas RLS permiten acceso a admins |
| Cambios en suscripción no se guardan | Error en Edge Function | Revisa logs de Supabase Edge Functions |