Documentation Index
Fetch the complete documentation index at: https://mintlify.com/banredco/helpdesk/llms.txt
Use this file to discover all available pages before exploring further.
El módulo de reportes centraliza las métricas más importantes del sistema de soporte. Está pensado tanto para administradores que necesitan visibilidad operativa diaria como para supervisores que deben presentar indicadores de rendimiento en revisiones periódicas. Toda la información se calcula en tiempo real a partir de la tabla tickets y sus relaciones con ticket_statuses y users.
Indicadores KPI disponibles
Al ingresar a /admin/reports.php, se muestran cuatro tarjetas de resumen calculadas mediante consultas directas sobre la base de datos:
| Indicador | Descripción |
|---|
| Tickets Totales | totalTickets — Conteo de todos los tickets no eliminados (is_deleted = 0). |
| Abiertos | openTickets — Tickets cuyo estado (ticket_statuses.name) es 'Abierto'. |
| Resueltos | resolvedTickets — Tickets cuyo estado es 'Resuelto'. |
| Cerrados | closedTickets — Tickets cuyo estado es 'Cerrado'. |
Gráficos y tablas
Tickets por estado
Un gráfico de tipo doughnut (Chart.js) muestra la distribución de tickets agrupados por nombre de estado. Los datos provienen de las variables $stateLabels y $stateTotals, construidas con la siguiente consulta:
SELECT s.name, COUNT(*) total
FROM tickets t
INNER JOIN ticket_statuses s ON s.id = t.status_id
WHERE t.is_deleted = 0
GROUP BY s.name
ORDER BY total DESC
Esto permite identificar de un vistazo en qué estados se acumula más volumen de trabajo.
Tickets creados por mes
Un gráfico de línea muestra la tendencia mensual de creación de tickets. La agrupación se realiza con DATE_FORMAT(created_at, '%Y-%m') para obtener etiquetas en formato YYYY-MM:
SELECT DATE_FORMAT(created_at, '%Y-%m') month, COUNT(*) total
FROM tickets
WHERE is_deleted = 0
GROUP BY month
ORDER BY month
Este gráfico es útil para detectar picos de soporte (campañas, lanzamientos de producto, incidentes) y planificar la capacidad del equipo.
Rendimiento por agente
La vista del dashboard (/admin/dashboard.php) incluye un panel de rendimiento por agente que muestra los 10 agentes con más tickets asignados, representados mediante barras proporcionales al máximo del grupo:
SELECT CONCAT(u.first_name, ' ', u.last_name) agent_name, COUNT(t.id) total
FROM users u
LEFT JOIN tickets t ON t.assigned_user_id = u.id
GROUP BY u.id
ORDER BY total DESC
LIMIT 10
Dashboard de inicio
El panel de inicio en /admin/dashboard.php complementa el módulo de reportes con indicadores operativos en tiempo real:
| Métrica | Descripción |
|---|
openTickets | Tickets con status_id = 1 (Abierto). |
waitingTickets | Tickets con status_id = 3 (Esperando cliente). |
escalatedTickets | Tickets con status_id = 6 (Escalado). |
resolvedToday | Tickets resueltos hoy (status_id = 4 y DATE(updated_at) = CURDATE()). |
closedToday | Tickets cerrados hoy (status_id = 5 y DATE(updated_at) = CURDATE()). |
unassignedTickets | Tickets sin agente asignado y no finalizados. |
| SLA OK | Tickets activos con menos de 4 horas desde la última respuesta. |
| SLA Riesgo | Tickets activos entre 4 y 24 horas sin respuesta. |
| SLA Vencido | Tickets activos con más de 24 horas sin respuesta. |
El dashboard también muestra las últimas 10 entradas de tickets y los tickets que requieren atención inmediata según su activity_label.
Exportar reportes
Desde la página de reportes, el botón Exportar Excel descarga el archivo reportes-banred.csv directamente desde el endpoint /admin/report-export.php. El archivo incluye las siguientes columnas, separadas por punto y coma (;) para compatibilidad con Excel en español:
| Columna | Origen |
|---|
| Ticket | ticket_number |
| Cliente | customers.name |
| Correo | customers.email |
| Asunto | tickets.subject |
| Estado | ticket_statuses.name |
| Prioridad | ticket_priorities.name |
| Tipo | ticket_types.name |
| Grupo | groups.name |
| Agente | CONCAT(users.first_name, ' ', users.last_name) |
| Canal | tickets.source |
| Fecha Creación | tickets.created_at |
| Última Actualización | tickets.updated_at |
| Última Respuesta | tickets.last_reply_at |
El archivo incluye una marca BOM UTF-8 (0xEF 0xBB 0xBF) para que los caracteres especiales se visualicen correctamente al abrir el CSV en Microsoft Excel.
Acceso
Solo los usuarios con rol Administrador o Supervisor pueden acceder al módulo de reportes y a la exportación. El acceso está protegido mediante requireRole([1, 2]) definido en config/permissions.php.
Utilice el dashboard (/admin/dashboard.php) diariamente para monitorear el estado de SLA y reaccionar ante tickets escalados o sin asignar. Reserve el módulo de reportes (/admin/reports.php) para revisiones semanales o mensuales y para exportar datos hacia herramientas de análisis externas como Excel o Google Sheets.