Files
donna/sql/010_audit_log.sql
Soporte ZH Consultores cd7595832f feat(admin): Registro de transacciones — log de auditoría de todo el sistema
NUEVA INFRAESTRUCTURA
* SQL 010: tabla audit_log (id, fecha, user_email, user_name, modulo,
  accion, entity_type, entity_id, entity_label, detalles JSON, ip_addr)
  con índices por fecha/user/modulo/accion/entity.
* src/AuditLog.php: helper estático con dos métodos:
  - log() lee actor de $_SESSION (uso normal post-auth)
  - logAs() recibe email/name explícito (para login/logout y CLI)
  Falla silenciosamente si la DB no responde — no rompe la operación
  principal por un fallo de logging.

HOOKS EN MUTACIONES
* Auth.php: registra 'login' al completar OAuth y 'logout' antes de
  destruir la sesión.
* escrituras/api.php: registra create/update/delete con id+nombre.
* tramites/api.php: registra 8 mutaciones — create/update/delete del
  trámite, set_status (con nuevo estatus en detalles), add_obs,
  add_hours/update_hours/delete_hours (con abogado y horas en
  detalles), todos referenciados por codigo (ADM-001, etc.).
* admin/api.php: registra create_user/update_user/delete_user, con
  diff de cambios en update_user.
* GETs (list_*) no se loguean — serían ruido.

LECTOR
* admin/api.php nuevo endpoint GET ?action=list_log que devuelve
  entradas con filtros from/to/user/modulo/accion/search (LIKE)
  + catálogos para dropdowns. Límite 500 por query.

UI EN PANEL DE CONTROL
* admin.html ahora tiene tabs: "Usuarios" (existente) y "Registro de
  transacciones" (nuevo).
* Tab Registro: toolbar de filtros (rango fechas, usuario, módulo,
  acción, búsqueda libre, atajos Hoy/Semana/Mes/Todo) + tabla con
  Fecha·Hora · Usuario · Módulo (pill coloreado) · Acción · Entidad
  con label y tipo · Detalles JSON resumido.
2026-06-04 20:30:46 -05:00

27 lines
1.1 KiB
SQL

-- ============================================================
-- Donna — Schema 010: audit_log para trazabilidad de transacciones
-- ============================================================
-- Registra login, logout, create, update, delete y demás mutaciones
-- de todos los módulos (escrituras, tramites, admin, etc.) con su
-- usuario, fecha, módulo, acción y referencia a la entidad afectada.
CREATE TABLE IF NOT EXISTS audit_log (
id INT AUTO_INCREMENT PRIMARY KEY,
fecha DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
user_email VARCHAR(255) NOT NULL DEFAULT '',
user_name VARCHAR(255) NOT NULL DEFAULT '',
modulo VARCHAR(50) NOT NULL,
accion VARCHAR(50) NOT NULL,
entity_type VARCHAR(50) NULL,
entity_id VARCHAR(50) NULL,
entity_label VARCHAR(255) NULL,
detalles TEXT NULL,
ip_addr VARCHAR(45) NULL,
INDEX idx_fecha (fecha DESC),
INDEX idx_user (user_email),
INDEX idx_modulo (modulo),
INDEX idx_accion (accion),
INDEX idx_entity (entity_type, entity_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;