Skip to main content

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 registro de auditoría es el mecanismo de trazabilidad de Banred Helpdesk. Cada acción relevante que un usuario ejecuta dentro del sistema queda almacenada en la tabla user_activity_logs junto con la identidad del usuario, la dirección IP de origen y la marca de tiempo exacta. Esto garantiza responsabilidad operativa, facilita investigaciones ante incidentes y proporciona una evidencia inmutable del historial de actividad del equipo de soporte.

Qué se registra

Cada entrada en user_activity_logs contiene los siguientes campos:
CampoDescripción
user_idIdentificador del usuario que ejecutó la acción (clave foránea a users).
actionTexto descriptivo de la acción realizada (ej. 'Crear Ticket', 'Responder Ticket').
detailsInformación adicional de contexto sobre la acción (ej. número de ticket, campo modificado).
ip_addressDirección IP desde la que se originó la solicitud HTTP.
created_atFecha y hora exactas de la acción, registradas con NOW() en zona horaria del servidor.

Acceder al log de actividad

La ruta /admin/audit.php presenta las últimas 1 000 entradas de actividad del sistema, ordenadas de más reciente a más antigua. La consulta base es:
SELECT l.*, CONCAT(COALESCE(u.first_name,''), ' ', COALESCE(u.last_name,'')) AS user_name
FROM user_activity_logs l
LEFT JOIN users u ON u.id = l.user_id
ORDER BY l.id DESC
LIMIT 1000
La tabla desplegada en la interfaz incluye las columnas ID, Fecha, Usuario, Acción, Detalle e IP. Cada acción se muestra con una insignia de color según su tipo:
AcciónColor de insignia
Crear TicketVerde (bg-success)
Actualizar TicketAzul (bg-primary)
Responder TicketCian (bg-info)
Comentario InternoAmarillo (bg-warning)
Nota PrivadaNegro (bg-dark)
Eliminar TicketRojo (bg-danger)
Otras accionesGris (bg-secondary)

Auditoría de correos

La pestaña Correos en /admin/email-audit.php muestra un registro independiente de los correos procesados por el sistema (tanto vía Gmail API como IMAP). Este log consulta la tabla email_imports y presenta las últimas 500 entradas con las siguientes columnas:
ColumnaDescripción
FechaFecha y hora de procesamiento.
TipoGmail API o IMAP según el campo source_type.
BuzónNombre y dirección del buzón (mailboxes.name / mailboxes.email).
Remitentesender_email del mensaje entrante.
AsuntoAsunto del correo (truncado visualmente).
TicketNúmero de ticket vinculado, con enlace directo si existe.
EstadoProcesado, Duplicado o Error según process_status.
El acceso a esta vista requiere rol Administrador o Supervisor (requireRole([1, 2])).

El helper Audit::log()

Toda la instrumentación de auditoría se centraliza en la clase Audit ubicada en app/Helpers/Audit.php. Su único método estático, log(), inserta un registro en user_activity_logs de forma consistente desde cualquier parte del código:
Audit::log($pdo, $userId, 'Ticket #123 creado');
La firma completa del método es:
public static function log(PDO $pdo, $userId, $action)
Internamente ejecuta:
INSERT INTO user_activity_logs (user_id, action, ip_address, created_at)
VALUES (?, ?, ?, NOW())
El tercer parámetro de la sentencia preparada es la IP capturada automáticamente en cada llamada.

Cuándo se generan entradas

El helper Audit::log() es invocado en los siguientes eventos del ciclo de vida del sistema:
  • Inicio de sesión — al autenticarse correctamente un usuario.
  • Creación de ticket — cuando se crea un ticket manual o vía correo entrante.
  • Respuesta a ticket — al publicar una respuesta al cliente.
  • Cambio de estado — al actualizar el estado, prioridad, agente asignado o grupo.
  • Comentario interno / Nota privada — acciones que no llegan al cliente pero quedan registradas.
  • Eliminación de ticket — borrado lógico (is_deleted = 1).
  • Gestión de usuarios — creación, modificación o desactivación de cuentas.
  • Cambios en buzones — modificación de la configuración de correo (mailboxes).
El registro de auditoría es de solo lectura. No existe ninguna opción en la interfaz administrativa para editar o eliminar entradas de user_activity_logs. Esto garantiza la integridad de la traza y evita que se puedan ocultar acciones realizadas en el sistema.
La dirección IP de cada entrada se captura directamente de $_SERVER['REMOTE_ADDR'] en el momento de la llamada a Audit::log(). En entornos con proxy reverso o balanceadores de carga, asegúrese de que el servidor web esté configurado para reenviar la IP real del cliente mediante el encabezado X-Forwarded-For y que la aplicación lo lea correctamente.

Build docs developers (and LLMs) love