Exemplo de projeto 06 · Automação de Processos Analíticos

Fechamento mensal que roda sozinho, com os dados conferidos antes de chegar ao relatório

Um pipeline que extrai, valida, transforma e publica os indicadores da carteira, e avisa quando algo foge do esperado.

Dados fictícios

A execução abaixo é uma simulação. Os volumes de registros, os erros encontrados e os tempos são ilustrativos e não vêm de nenhuma seguradora ou cliente, em conformidade com a LGPD. A única parte real é o trecho de código do final da página, que foi usado para montar o exemplo 05 com dados públicos da SUSEP.

O problema

Todo mês, um analista exporta arquivos de três sistemas, cola tudo em planilhas, corrige erros à mão e monta os slides. O processo leva dias, depende de uma pessoa e os erros só aparecem na reunião.

# Clique em "Executar o pipeline" para acompanhar a execução simulada.

Antes e depois

Comparação ilustrativa de um fechamento mensal típico.

Um caso real: como o exemplo 05 foi montado

A análise de sinistralidade do exemplo 05 usa a base pública do SES/SUSEP. O arquivo completo tem 575 MB e 40 tabelas. A rotina abaixo lê o índice do arquivo e baixa somente a tabela necessária, de 29 MB, sem transferir o restante. Foi executada em 07/10/2026.

# Lê só a tabela Ses_seguros.csv de dentro do BaseCompleta.zip da SUSEP,
# usando requisições parciais (HTTP Range), sem baixar o arquivo inteiro.
import urllib.request, struct, zlib

URL = "https://www2.susep.gov.br/redarq.asp?arq=BaseCompleta%2ezip"

def trecho(inicio, fim):
    req = urllib.request.Request(URL, headers={"Range": f"bytes={inicio}-{fim}"})
    with urllib.request.urlopen(req, timeout=300) as r:
        return r.read()

# posição e tamanho compactado da tabela, lidos do índice do zip
posicao, compactado = 62315543, 29412741

cab = trecho(posicao, posicao + 29)
nome, extra = struct.unpack("<HH", cab[26:30])
inicio = posicao + 30 + nome + extra

dados = trecho(inicio, inicio + compactado - 1)
csv = zlib.decompress(dados, -15)            # 136 MB de texto, 1,8 milhão de linhas
open("Ses_seguros.csv", "wb").write(csv)

As posições mudam a cada atualização do arquivo pela SUSEP; a rotina completa as lê do índice a cada execução.

O que isso significa para o negócio

  • Tempo de analista em análise: a equipe deixa de montar planilha e passa a interpretar o resultado.
  • Erro barrado na entrada: dado inconsistente é separado antes de virar indicador.
  • Processo que não depende de uma pessoa: a rotina é documentada, versionada e roda no horário programado.

Em um projeto real, o pipeline é construído em Python e SQL, com Power Automate para a distribuição, coleta de dados externos como tabela FIPE e SUSEP, e integração com os sistemas da seguradora.