Quando Dados Sujos Custam R$ 50 Mil: A História Real
Outubro 2023. Cliente grande. 2 milhões de clientes no CRM. Ninguém checou qualidade em 3 anos.
Quando analisamos:
• 47 mil emails duplicados
• 123 mil telefones inválidos
• 89 mil CEPs que não existem
Resultado? 300 mil cartas para endereço errado. Custo: R$ 50 mil + reação reputacional.
Tudo evitado com validação BÁSICA no ponto de entrada.
As 4 Camadas de Validação
Camada 1: Formato. Email tem @? CEP tem 8 dígitos? Telefone tem 11?
Camada 2: Regra de Negócio. Status ativo = sem data_cancelamento? Type PJ = CNPJ obrigatório?
Camada 3: Integridade Referencial. Cliente_id existe? Produto_id está ativo?
Camada 4: Consistência. Valor_total = soma de items? Data_pedido < data_entrega?
Esqueça 1 camada e seus dados entram sujos.
Código Real
import re
class Validador:
@staticmethod
def email(email: str) -> tuple:
if not email or len(email) < 5:
return False, "Email vazio"
if not re.match(r'^[\w\.-]+@[\w\.-]+\.\w+$', email):
return False, "Formato inválido"
if email.count('@') != 1:
return False, "Múltiplos @"
return True, ""
@staticmethod
def telefone(tel: str) -> tuple:
apenas_digitos = re.sub(r'\D', '', tel)
if len(apenas_digitos) != 11:
return False, f"Deve ter 11, recebeu {len(apenas_digitos)}"
if not apenas_digitos.startswith('1'):
return False, "Sem DDD"
return True, ""
@staticmethod
def cep(cep: str) -> tuple:
apenas_digitos = re.sub(r'\D', '', cep)
if len(apenas_digitos) != 8:
return False, f"Deve ter 8, recebido {len(apenas_digitos)}"
return True, ""
# Uso
validator = Validador()
emails_ruim = ["fulano@", "email.com", "teste@[email protected]"]
for email in emails_ruim:
valido, erro = validator.email(email)
if not valido:
print(f"{email}: {erro}")
Onde Aplicar
1. Na entrada: Antes de salvar, valide. Se inválido, rejeite.
2. Na saída: Antes de enviar, valide. Navision odeia caractere especial? Tire antes.
3. Periodicamente: Uma vez por semana, encontre dados ruins e marque como "revisar".
ROI
Implementar validação = 2 dias de trabalho = R$ 2 mil.
Não implementar = 1 erro por ano = R$ 50 mil + R$ 100 mil em oportunidade.
← Back to blog