Skip to content
Usuario

Dashboard

Carga y errores

Flujo de datos

  1. El Super Admin entra a /super-admin/dashboard.
  2. El frontend inicializa filtros: fechas, negocio y rango.
  3. La vista carga negocios para el selector con GET /api/super-admin/businesses.
  4. La vista llama DASuperAdminService.getDashboardSummary(params).
  5. El backend valida Token.Auth.
  6. El backend valida requireRole(‘super_admin’).
  7. El controller solicita el resumen al DAO.
  8. El DAO ejecuta consultas agregadas y filtros seguros.
  9. El backend devuelve summary.
  10. El frontend pinta cards, alertas, series, top negocios y jobs MedSync.

401

Token ausente, expirado o sesion ya cerrada con sesiones activas obligatorias.

403

Usuario autenticado sin rol super_admin.

Backend apagado

La UI muestra error controlado y permite reintentar.

Sin datos

Las cards usan ceros o estados vacios controlados.

Resumen operativo

Metricas y cards

Regla de lectura

Las metricas clinicas del dashboard son conteos agregados. No son listados, no contienen nombres, notas, diagnosticos, recetas completas ni expedientes.

MetricaQue muestraCampoFuente agregadaRiesgo de interpretacion
Total negociosNumero global de negocios registrados.totals.businessesbusinessNo equivale a clientes activos comerciales.
Negocios activos tecnicosNegocios con business.active = 1.totals.activeBusinessesbusiness.activeNo confundir con subscription_status = active.
Negocios en pruebaNegocios con estado MedSync trial.totals.trialBusinessesbusiness.subscription_statusPuede incluir trials vencidos si aun no cambiaron a past_due.
Clientes activosNegocios con suscripcion comercial activa.totals.activeSubscriptionBusinessesbusiness.subscription_statusNo usar para estado tecnico.
Trials vencidosTrials con trial_ends_at < NOW().totals.expiredTrialsbusiness.trial_ends_atTenant queda bloqueado aunque el estado siga trial.
Trials por vencerTrials que vencen dentro de los proximos 7 dias.totals.trialsExpiringSoonbusiness.trial_ends_atRequiere operacion comercial proactiva.
Pago pendienteNegocios con past_due.totals.pastDueBusinessesbusiness.subscription_statusActualmente bloquea tenant por regla operacional.
Suspendidos MedSyncNegocios con bloqueo comercial temporal.totals.suspendedSubscriptionBusinessesbusiness.subscription_statusNo borra datos; solo bloquea operacion tenant.
CanceladosNegocios cancelados comercialmente.totals.cancelledBusinessesbusiness.subscription_statusNo implica eliminacion fisica.
Usuarios y sesionesUsuarios totales, activos, bloqueados y sesiones activas.totals.users, totals.activeSessionslogin, sessionSon cuentas de acceso, no pacientes.
Uso agregadoConteos de pacientes, citas, recetas e historias creadas.clinicalUsage.*Tablas clinicas agregadasNo deben convertirse en listados ni detalles.

Top negocios por uso

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

Frontend

Componente principal

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.

Servicio usado

src/services/core/superAdmin/DASuperAdminService.js

Expone getDashboardSummary, getSaasJobsStatus y runSaasTrialLifecycleDryRun, ademas de metodos del modulo Super Admin.

ArchivoResponsabilidadNotas
Dashboard.vueRenderiza cards, alertas, top negocios, uso agregado y jobs.Maneja loading, empty state, errores 401/403 y reintentos.
DASuperAdminService.jsCliente HTTP del modulo Super Admin.No debe usar endpoints legacy.
apiurl.jsConstantes de endpoints.Incluye summary y jobs MedSync.
router/routes/super-admin.jsRutas Super Admin./dashboard tiene meta.role = ‘super_admin’.
core/layouts/super-admin.vueLayout y navegacion lateral.Menu: Dashboard, Negocios, Usuarios, Sesiones activas y Auditoria.

Stores

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

Backend

Endpoint principal

GET /api/super-admin/dashboard/summary

Protegido por Token.Auth y requireRole(‘super_admin’). No usa applyTenantToBody() ni fallback default-business.

Filtros soportados

  • from y to en formato YYYY-MM-DD.
  • businessId para acotar el resumen a un negocio.
  • Validacion de rango: from no puede ser posterior a to.
ArchivoResponsabilidadDetalle
routes/mysql/super-admin.jsDeclara rutas Super Admin.Summary y jobs usan auth + rol.
controller/mysql/superAdmin.controller.jsRecibe requests y delega al DAO.Devuelve responses controladas.
Dao/mysql/superAdmin.dao.jsConstruye resumen y consultas agregadas.Cuenta y agrupa, no devuelve registros clinicos.
config/saasJobs.jsConfigura jobs MedSync.Defaults seguros, modo alert_only.
jobs/saasTrialLifecycle.job.jsDetecta trials vencidos y por vencer.Solo muta si ENV permite mark_past_due.
util/businessOperational.jsReglas de operacion tenant.Define bloqueo por estados MedSync.
config/saasPlans.jsCatalogo central de planes.basic/pro/enterprise.
util/licenseLimits.jsLimites de licencia efectivos.No cuenta pacientes ni limita pacientes.

Consultas explicadas

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

Privacidad y seguridad

El dashboard NO debe mostrar

  • Pacientes como registros.
  • Expedientes o historias clinicas.
  • Recetas completas, diagnosticos o notas medicas.
  • Citas con datos personales.
  • Medicamentos, documentos clinicos, tratamientos u odontograma.
  • Tokens, refresh tokens, passwords o hashes.

El dashboard SI puede mostrar

  • Conteos agregados.
  • Estados operativos y comerciales.
  • Negocios y usuarios de acceso.
  • Metricas MedSync y alertas.
  • Uso agregado y top negocios por uso agregado.

Checklist de privacidad

  • Se muestran objetos de pacientes? No debe.
  • Se muestran recetas completas? No debe.
  • Se muestran tokens o secretos? No debe.
  • Solo son conteos agregados? Debe.

Diagnostico rapido

Troubleshooting

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.