-- Tabla de Auditoría para Sistema SSOMA
-- Registra todos los cambios en tablas críticas del sistema

CREATE TABLE IF NOT EXISTS AuditLog (
    id_audit INT AUTO_INCREMENT PRIMARY KEY,
    tabla VARCHAR(50) NOT NULL COMMENT 'Nombre de la tabla modificada',
    registro_id INT NOT NULL COMMENT 'ID del registro modificado',
    accion ENUM('CREATE', 'UPDATE', 'DELETE') NOT NULL COMMENT 'Tipo de operación',
    valor_anterior TEXT COMMENT 'Valores antes del cambio (JSON)',
    valor_nuevo TEXT COMMENT 'Valores después del cambio (JSON)',
    usuario VARCHAR(100) DEFAULT 'sistema' COMMENT 'Usuario que realizó el cambio',
    modulo VARCHAR(50) COMMENT 'Módulo origen del cambio',
    fecha_hora DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Fecha y hora del cambio',
    ip_address VARCHAR(45) COMMENT 'Dirección IP del usuario',

    INDEX idx_tabla_registro (tabla, registro_id),
    INDEX idx_fecha (fecha_hora),
    INDEX idx_usuario (usuario),
    INDEX idx_accion (accion)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
COMMENT='Registro de auditoría de cambios en el sistema';
