El sistema CUSCATLECO implementa un mecanismo de auditoría centralizado que registra automáticamente toda acción de mutación realizada sobre las entidades críticas del negocio. Cada vez que un usuario autenticado crea, modifica o elimina un registro en los módulos principales, el middlewareDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/AbyssDevs/CUSCATLECO/llms.txt
Use this file to discover all available pages before exploring further.
auditoriaMiddleware produce una entrada en la tabla auditoria_log con un snapshot completo del estado anterior y posterior al cambio. Esto permite rastrear quién hizo qué, cuándo y desde qué rol, sin depender de los registros de aplicación.
La tabla auditoria_log
La tabla almacena un registro por cada evento auditado. Su estructura combina campos de identificación del actor, contexto de la acción y datos JSON que preservan el estado completo del registro afectado.
Descripción de cada campo
Identificación del actor
id_usuario— FK ausuarios. Identifica al usuario autenticado responsable de la acción.usuario_nombre— Nombre del usuario copiado en el momento del evento. Garantiza legibilidad incluso si el nombre cambia después.usuario_rol— Rol activo del usuario al momento del evento, capturado como texto para preservar el contexto histórico.
Contexto de la acción
accion— Verbo que describe la operación:CREAR,EDITARoELIMINAR.modulo— Módulo del sistema afectado:mesas,platillosopedidos.entidad_id— ID del registro específico que fue modificado dentro del módulo.descripcion— Texto legible generado por el middleware que resume el evento.
Snapshots JSON
datos_anteriores— Objeto JSON con todos los valores del registro antes del cambio. EsNULLen creaciones.datos_nuevos— Objeto JSON con todos los valores del registro después del cambio. EsNULLen eliminaciones.
Temporalidad
fecha_hora— Timestamp exacto del evento con precisión de segundos, generado automáticamente por MySQL al insertar.
Acciones que se registran
El middlewareauditoriaMiddleware intercepta las rutas de mutación de los módulos principales. Las operaciones auditadas son:
| Módulo | Acción | Cuándo se dispara |
|---|---|---|
mesas | CREAR | Al registrar una nueva mesa |
mesas | EDITAR | Al cambiar estado, capacidad o ubicación de una mesa |
mesas | ELIMINAR | Al eliminar una mesa del sistema |
platillos | CREAR | Al agregar un nuevo platillo al menú |
platillos | EDITAR | Al modificar precio, disponibilidad u otros datos del platillo |
platillos | ELIMINAR | Al eliminar un platillo |
pedidos | CREAR | Al registrar un nuevo pedido |
pedidos | EDITAR | Al cambiar el estado de un pedido |
pedidos | ELIMINAR | Al cancelar o eliminar un pedido |
El middleware requiere que exista un usuario autenticado en la sesión antes de generar el registro de auditoría. Las operaciones realizadas directamente sobre la base de datos (por ejemplo, mediante un cliente SQL) no quedan reflejadas en
auditoria_log.Control de acceso
Solo los usuarios con el permisover_auditoria (módulo Registros) pueden consultar el historial de auditoría desde la interfaz del sistema. En la configuración de seed inicial, este permiso está asignado exclusivamente al rol Administrador (id_permiso = 20, id_rol = 1).
Snapshots JSON: datos_anteriores y datos_nuevos
Los camposdatos_anteriores y datos_nuevos almacenan una copia fiel del estado del registro afectado en el momento del evento, serializada como JSON. Esto permite reconstruir exactamente qué valores existían antes y después de cualquier modificación, sin necesidad de consultar tablas históricas adicionales.
- En una operación CREAR:
datos_anterioresesNULL;datos_nuevoscontiene el registro tal como quedó guardado. - En una operación EDITAR: ambos campos están presentes y reflejan el estado previo y el posterior.
- En una operación ELIMINAR:
datos_anteriorescontiene el registro que existía;datos_nuevosesNULL.
Ejemplo de entrada en auditoria_log
El siguiente JSON representa un registro real de auditoría generado al cambiar el estado de la mesa 3 deDisponible a Ocupada:
Índices de rendimiento
La tablaauditoria_log puede crecer rápidamente en un restaurante con operaciones intensas. El esquema define cinco índices para garantizar que las consultas del panel de administración respondan con eficiencia incluso con cientos de miles de registros:
| Índice | Columnas indexadas | Caso de uso optimizado |
|---|---|---|
idx_auditoria_usuario | id_usuario | Filtrar acciones de un usuario específico |
idx_auditoria_accion | accion | Listar todas las eliminaciones o todas las creaciones |
idx_auditoria_modulo | modulo | Ver historial completo de un módulo (ej. todos los cambios en pedidos) |
idx_auditoria_fecha | fecha_hora | Consultas por rango de fechas para reportes periódicos |
idx_auditoria_entidad | modulo, entidad_id | Obtener el historial completo de un registro específico (ej. todos los eventos del pedido #88) |