Auditoria de banco elimina classe de falhas que travava TARM e omitia áudios de ocorrência no SAU
Divergência de collation no banco de dados causava erro intermitente na aba Áudios do Histórico e deixava 52 rotinas críticas a um passo de falhar. Correção de raiz recriou todas as rotinas e zerou o risco; paralelamente, correção de casamento de ramal encerrou travação do terminal de regulação médica de um usuário.
Uma divergência de codificação de caracteres (collation) no banco de dados do SAU provocava dois problemas operacionais distintos, ambos corrigidos em intervenção única.
O primeiro afetava a aba Áudios do Histórico de Ocorrência: ao comparar variáveis internas de uma stored procedure com colunas de tabelas que usavam codificações diferentes, o banco retornava erro e a aba não carregava. A correção inicial resolveu o caso visível, mas a equipe de engenharia conduziu uma auditoria estática completa do banco e descobriu que o problema era sistêmico — 52 rotinas, incluindo as responsáveis por gravação de chamados, sincronização de ramais telefônicos, autenticação de dispositivos e busca de veículos, carregavam o mesmo defeito de forma latente. Nenhuma falhava em log porque ninguém havia pisado nos ramos de código que disparavam a comparação problemática.
A correção de raiz normalizou a collation padrão do banco para alinhar com as colunas existentes e recriou todas as 1.276 rotinas e 12 triggers com corpo idêntico ao original. Após a intervenção, as rotinas em risco passaram de 52 para zero. A janela de mudança foi de aproximadamente 1,5 segundo, com backup completo do estado anterior mantido para reversão.
O segundo problema era um defeito de lógica no casamento de ramais. Quando o identificador cadastrado de um ramal não coincidia com o seu número — situação presente em contas com dados legados — o ramal era silenciosamente descartado. Como a lista de ramais não chegava vazia, o mecanismo de contingência não disparava, e o terminal de regulação médica (TARM) do usuário afetado permanecia indefinidamente em estado de espera pela conexão com o servidor de telefonia.
A correção passou a considerar tanto o ID quanto o número do ramal, recuperando os ramais que eram descartados sem alterar o comportamento dos demais. Um refinamento adicional passou a comparar identificadores como texto, impedindo que o banco convertsesse strings como '0015' em número 15 e casasse com o ramal de outro usuário. Análise de impacto confirmou que sete usuários passam a receber corretamente seus ramais próprios, sem ganho ou perda indevida.