401
Token ausente, expirado o sesion ya cerrada con sesiones activas obligatorias.
Carga y errores
/super-admin/dashboard.GET /api/super-admin/businesses.DASuperAdminService.getDashboardSummary(params).Token.Auth.requireRole(‘super_admin’).summary.Token ausente, expirado o sesion ya cerrada con sesiones activas obligatorias.
Usuario autenticado sin rol super_admin.
La UI muestra error controlado y permite reintentar.
Las cards usan ceros o estados vacios controlados.
Resumen operativo
Las metricas clinicas del dashboard son conteos agregados. No son listados, no contienen nombres, notas, diagnosticos, recetas completas ni expedientes.
| Metrica | Que muestra | Campo | Fuente agregada | Riesgo de interpretacion |
|---|---|---|---|---|
| Total negocios | Numero global de negocios registrados. | totals.businesses | business | No equivale a clientes activos comerciales. |
| Negocios activos tecnicos | Negocios con business.active = 1. | totals.activeBusinesses | business.active | No confundir con subscription_status = active. |
| Negocios en prueba | Negocios con estado MedSync trial. | totals.trialBusinesses | business.subscription_status | Puede incluir trials vencidos si aun no cambiaron a past_due. |
| Clientes activos | Negocios con suscripcion comercial activa. | totals.activeSubscriptionBusinesses | business.subscription_status | No usar para estado tecnico. |
| Trials vencidos | Trials con trial_ends_at < NOW(). | totals.expiredTrials | business.trial_ends_at | Tenant queda bloqueado aunque el estado siga trial. |
| Trials por vencer | Trials que vencen dentro de los proximos 7 dias. | totals.trialsExpiringSoon | business.trial_ends_at | Requiere operacion comercial proactiva. |
| Pago pendiente | Negocios con past_due. | totals.pastDueBusinesses | business.subscription_status | Actualmente bloquea tenant por regla operacional. |
| Suspendidos MedSync | Negocios con bloqueo comercial temporal. | totals.suspendedSubscriptionBusinesses | business.subscription_status | No borra datos; solo bloquea operacion tenant. |
| Cancelados | Negocios cancelados comercialmente. | totals.cancelledBusinesses | business.subscription_status | No implica eliminacion fisica. |
| Usuarios y sesiones | Usuarios totales, activos, bloqueados y sesiones activas. | totals.users, totals.activeSessions | login, session | Son cuentas de acceso, no pacientes. |
| Uso agregado | Conteos de pacientes, citas, recetas e historias creadas. | clinicalUsage.* | Tablas clinicas agregadas | No deben convertirse en listados ni detalles. |
El top muestra negocio, estado MedSync, plan, trial, usuarios y conteos agregados de uso. Sirve para detectar adopcion, actividad y negocios que requieren seguimiento. No debe contener enlaces a registros clinicos.
Archivos reales inspeccionados
src/views/super-admin/Dashboard.vue
Mantiene estado local para filtros, summary, loading, errores, negocios, estado de jobs y ultimo dry-run. No usa Vuex/Pinia para las metricas del dashboard.
src/services/core/superAdmin/DASuperAdminService.js
Expone getDashboardSummary, getSaasJobsStatus y
runSaasTrialLifecycleDryRun, ademas de metodos del modulo Super Admin.
| Archivo | Responsabilidad | Notas |
|---|---|---|
Dashboard.vue | Renderiza cards, alertas, top negocios, uso agregado y jobs. | Maneja loading, empty state, errores 401/403 y reintentos. |
DASuperAdminService.js | Cliente HTTP del modulo Super Admin. | No debe usar endpoints legacy. |
apiurl.js | Constantes de endpoints. | Incluye summary y jobs MedSync. |
router/routes/super-admin.js | Rutas Super Admin. | /dashboard tiene meta.role = ‘super_admin’. |
core/layouts/super-admin.vue | Layout y navegacion lateral. | Menu: Dashboard, Negocios, Usuarios, Sesiones activas y Auditoria. |
El dashboard no usa Vuex/Pinia para estas metricas; consume directamente el servicio Super Admin. El layout si usa Vuex para estado de autenticacion, relogin y cierre de sesion.
Endpoint y consultas agregadas
GET /api/super-admin/dashboard/summaryProtegido por Token.Auth y requireRole(‘super_admin’).
No usa applyTenantToBody() ni fallback default-business.
from y to en formato YYYY-MM-DD.businessId para acotar el resumen a un negocio.from no puede ser posterior a to.| Archivo | Responsabilidad | Detalle |
|---|---|---|
routes/mysql/super-admin.js | Declara rutas Super Admin. | Summary y jobs usan auth + rol. |
controller/mysql/superAdmin.controller.js | Recibe requests y delega al DAO. | Devuelve responses controladas. |
Dao/mysql/superAdmin.dao.js | Construye resumen y consultas agregadas. | Cuenta y agrupa, no devuelve registros clinicos. |
config/saasJobs.js | Configura jobs MedSync. | Defaults seguros, modo alert_only. |
jobs/saasTrialLifecycle.job.js | Detecta trials vencidos y por vencer. | Solo muta si ENV permite mark_past_due. |
util/businessOperational.js | Reglas de operacion tenant. | Define bloqueo por estados MedSync. |
config/saasPlans.js | Catalogo central de planes. | basic/pro/enterprise. |
util/licenseLimits.js | Limites de licencia efectivos. | No cuenta pacientes ni limita pacientes. |
El DAO consulta business para contar negocios por estado tecnico y MedSync,
login para usuarios de acceso, session para sesiones activas
y tablas de uso clinico solo como conteos agregados. No devuelve pacientes como objetos,
expedientes, recetas completas, diagnosticos ni notas medicas.
-- Ejemplo simplificado
SELECT COUNT(*) FROM business WHERE subscription_status = 'trial';
SELECT COUNT(*) FROM business WHERE subscription_status = 'trial' AND trial_ends_at < NOW();Regla critica
Diagnostico rapido
Revisar frontend activo, backend activo, token valido, rol super_admin,
endpoint /api/super-admin/dashboard/summary y CORS.
Puede indicar token ausente, token expirado, sesion cerrada o
REQUIRE_ACTIVE_SESSION=true invalidando tokens sin sesion activa.
Usuario autenticado sin rol super_admin o endpoint protegido accedido
desde cuenta tenant.
Revisar filtros, rango de fechas, datos QA, timezone, estado MedSync y queries agregadas del DAO.
Es esperado si los jobs estan apagados, el modo es alert_only o se
ejecuta con dryRun=true.