Buscar en la documentación

Cifras del dashboard con caché

Cómo se calculan las cifras de cada widget con la visibilidad de la persona, cuándo salen de la caché y cómo se mantienen al día.

1 min de lecturaVer en GitHub

El dashboard es la página de inicio. Cada persona ve sus cifras con la misma regla de visibilidad del listado: quien tiene dashboard.view.any ve el “Resumen general”; quien tiene dashboard.view.own, “Mi resumen”. Las cifras se guardan en caché por un minuto y se descartan de golpe en cuanto cambia cualquier incidente.

Diagrama5 carriles · 13 pasos · 1 salidas de error
SíNoSíNoAbre el inicio1Pide GET /dashboard2Pide GET/dashboard/metricscon sus widgets3¿Puede ver eldashboard ycada widgetpedido?4Responde 403 o422Lee la generaciónactual5¿La cifra estáen caché?6Calcula con lavisibilidad de lapersona7Guarda la cifra por60 s8Responde las cifrascon su filtro9Dibuja los widgets;un clic abre ellistado filtrado10Un incidente cambiaen cualquier lugar11Sube la generaciónen 112El inicio abiertovuelve a pedir lascifras13
Los números coinciden con el paso a paso. En pantallas pequeñas el diagrama se desliza de lado.

Paso a paso

  1. PersonaAbre el inicio
  2. NavegadorPide GET /dashboard

    Devuelve el título y los widgets de su diseño (el guardado o el original), solo los que su rol puede usar.

  3. NavegadorPide GET /dashboard/metrics con sus widgets

    ?widgets= con los códigos visibles y trend_days=7|30|90 para las tendencias.

  4. API¿Puede ver el dashboard y cada widget pedido?

    Cada widget puede exigir un permiso propio (dashboard_widgets.permission_id).

  5. RedisLee la generación actual

    La clave de cada cifra lleva un número de generación y el alcance de la persona: dashboard:{generación}:{cifra}:{alcance}. Quienes ven todo (all) comparten la misma caché; los demás tienen la suya, porque sus cifras dependen de quiénes son.

  6. Redis¿La cifra está en caché?
  7. Base de datosCalcula con la visibilidad de la persona

    Consultas agregadas sobre índices hechos para el dashboard (dashboard_counts, dashboard_assignee…), con los días en la zona del negocio. Medidas por debajo de 60 ms con 100.000 incidentes.

  8. RedisGuarda la cifra por 60 s

    DASHBOARD_CACHE_SECONDS. Solo arreglos y valores simples, nunca objetos de PHP.

  9. APIResponde las cifras con su filtro

    Cada cifra trae el filter del listado que la explica y la hora de la más antigua, para mostrar "actualizado hace…".

  10. NavegadorDibuja los widgets; un clic abre el listado filtrado

    Gráficos propios en SVG (barras, dona, columnas, área y anillo), con una tabla oculta para lectores de pantalla.

  11. APIUn incidente cambia en cualquier lugar

    El repositorio emite IncidentChanged después del commit.

  12. RedisSube la generación en 1

    Incremento atómico. Las claves viejas no se buscan ni se borran; nadie las vuelve a pedir y expiran solas.

  13. NavegadorEl inicio abierto vuelve a pedir las cifras

    Por tiempo real, como máximo una vez cada 10 s y nunca mientras se personaliza.

Son dos caminos: abrir el inicio (pasos 1 a 10) y lo que pasa cuando un incidente cambia (pasos 11 a 13), con su propio inicio.

Qué ve la persona en cada error

CódigoHTTPCuándoMensaje en pantalla
WIDGET_NOT_AVAILABLE422Se pidió un widget que su cuenta ya no puede usar (por ejemplo, le quitaron un permiso)Uno de los widgets ya no está disponible para tu cuenta. Recarga la página para ver tu dashboard actual.
FORBIDDEN_ACTION403Su rol no tiene dashboardNo tienes permiso para hacer esta acción. Si crees que deberías tenerlo, habla con un administrador.

Si no carga el diseño, la página muestra el error con “Reintentar”. Si lo que falla son las cifras, el diseño se queda en pantalla y el error aparece encima de la grilla, también con “Reintentar”.

Dónde está en el código