DEV Community

Breakdown de Cálculos: A Fórmula que Conta a Própria História

Algumas regras de negócio não são só código. São fórmulas.
Fórmulas complexas, agregações pesadas, fórmulas que contam a história de um processo inteiro.

Na maioria dos casos, a regra pode estar certa. Está no papel e está na classe de negócio. Mas onde estão os passos?

A prática comum é guardar apenas o resultado final.
O certo é guardar os passos até ao resultado: a fórmula com cada parte, os operadores, os valores intermediários e descrições relevantes.

Qual é a solução?
Breakdown de Fórmulas.

Conceito

Em vez de o sistema guardar somente total = 5000, ele guarda o processo completo. Essa técnica torna-se a única fonte da verdade.
Cada parte do sistema pega no que precisa desse breakdown: uma parte vai para a BD, outra é libertada no front, outra alimenta o fluxo de negócio.
Podemos até disponibilizar endpoints de simulação para pré-visualizações, sabendo que será sempre o mesmo cálculo final.
Esta fonte organizada pode servir para vários consumidores.

Passos

  • Decompor: Quebre a fórmula em passos atómicos e auditáveis. Base + Taxa - Desconto = Total não é 1 cálculo, são 3 passos.
  • Estruturar: Cada passo tem Label, Formula, Valor e Descrição. Não só números.
  • Centralizar: Uma única função pura retorna o Breakdown completo. Front, Back e relatórios consomem o mesmo objeto.
  • Expor: O front usa o breakdown para criar experiências interativas. O utilizador não vê só o total, vê como chegou lá.

Onde usar

  • Formulário de crédito
  • Formulário de vendas
  • Emissão de fatura com vários itens
  • Simuladores (velocidade, aceleração, juros)

De dashboards com indicadores bonitos até formulários onde o cálculo é feito dinamicamente.

Conclusão

Cálculo bom não é o que só acerta no resultado. É o que se explica sozinho.
Quando a sua fórmula guarda a própria história, ganha transparência para o negócio, auditabilidade para o CTO e confiança para o cliente.
Pare de guardar totais. Comece a guardar histórias.

Código Fonte:

Top comments (0)