CREATE TABLE IF NOT EXISTS admins ( id INT AUTO_INCREMENT PRIMARY KEY, login VARCHAR(64) NOT NULL UNIQUE, -- login do AD, sem domínio (ex: willen) nome VARCHAR(190) NULL, -- cache do displayName, atualizado no login papel ENUM('admin','operador') NOT NULL DEFAULT 'operador', ativo TINYINT(1) NOT NULL DEFAULT 1, criado_por VARCHAR(64) NULL, criado_em DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, atualizado_em DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE IF NOT EXISTS settings ( chave VARCHAR(64) PRIMARY KEY, valor TEXT NOT NULL, atualizado_por VARCHAR(64) NULL, atualizado_em DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE IF NOT EXISTS audit_log ( id INT AUTO_INCREMENT PRIMARY KEY, usuario VARCHAR(64) NOT NULL, acao VARCHAR(64) NOT NULL, alvo VARCHAR(190) NULL, detalhe VARCHAR(255) NULL, ip VARCHAR(45) NULL, criado_em DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE IF NOT EXISTS login_attempts ( id INT AUTO_INCREMENT PRIMARY KEY, login VARCHAR(64) NOT NULL, ip VARCHAR(45) NOT NULL, sucesso TINYINT(1) NOT NULL, criado_em DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, INDEX idx_login_ip_time (login, ip, criado_em) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;