Nem toda automação precisa nascer como uma plataforma. Às vezes, um script curto, previsível e bem documentado já devolve horas para a semana.
A tarefa
O fluxo era simples: receber arquivos CSV, validar as colunas esperadas e separar os registros que precisavam de revisão. O risco estava na repetição manual e nas pequenas diferenças entre arquivos.
Uma primeira versão
from pathlib import Path
import csv
COLUNAS_OBRIGATORIAS = {"id", "data", "status"}
def validar_arquivo(caminho: Path) -> list[str]:
with caminho.open(encoding="utf-8-sig", newline="") as arquivo:
leitor = csv.DictReader(arquivo)
colunas = set(leitor.fieldnames or [])
ausentes = COLUNAS_OBRIGATORIAS - colunas
if ausentes:
return [f"Colunas ausentes: {', '.join(sorted(ausentes))}"]
return [
linha["id"]
for linha in leitor
if linha["status"].strip().lower() == "revisar"
]O objetivo desta versão não é cobrir todos os casos. É tornar explícitas as regras que antes estavam apenas na cabeça de quem executava a tarefa.
Cuidados que fizeram diferença
- Não sobrescrever a entrada. A saída vai para outro diretório.
- Falhar com contexto. O erro informa qual arquivo e qual regra falhou.
- Permitir repetição. Rodar duas vezes produz o mesmo resultado.
- Registrar o essencial. Início, fim, quantidade processada e falhas.
Próximo passo
Depois de validar o processo, dá para adicionar testes e agendamento. Só então vale decidir se o script continuará como CLI ou se realmente precisa virar um serviço.
Uma boa automação não é a que usa mais ferramentas. É a que deixa a rotina mais simples sem criar uma nova fonte de ansiedade.