O problema
A loja vendia online e alguém abria o ERP para lançar cada pedido à mão. Além do tempo, era fonte constante de erro: série fiscal trocada, armazém errado, família de produto que não batia com o cadastro. E a mesma razão social também tem operação física, então o documento precisava sair isolado por série, armazém e família — do contrário a contabilidade das duas frentes se misturava.
O que construí
Um Worker na Cloudflare, em TypeScript, entre a loja e o ERP:
- Escuta o webhook de pedido pago da loja.
- Traduz o pedido para o formato do documento fiscal, aplicando as regras de série, armazém e família da empresa.
- Cria cliente e produto sob demanda quando o pedido traz alguém ou algo que ainda não existe no ERP, em vez de falhar e exigir cadastro manual antes.
- Abate o estoque na mesma operação.
- Emite o documento e devolve o número gerado.
Decisões técnicas
Idempotência antes de tudo. Webhook não é entregue exatamente uma vez — é entregue pelo menos uma vez. Sem uma chave de idempotência amarrada ao pedido, uma reentrega gera fatura duplicada, que em documento fiscal é problema contábil, não bug de software. Cada pedido é marcado antes da emissão e reprocessamento devolve o documento já criado em vez de emitir outro.
Worker em vez de servidor. O volume é baixo e irregular — picos em campanha, silêncio no resto. Sem servidor, não há máquina ociosa custando dinheiro nem host esquecido sem atualização, que é o tipo de coisa que vira incidente de segurança seis meses depois. Escala sozinho no pico.
Falha explícita. Quando o ERP recusa o documento, o erro é registrado com o pedido que o causou, em vez de ser engolido. Integração silenciosa que falha em silêncio é pior que integração que não existe: ninguém percebe até fechar o mês.
Como verifiquei
Reprocessamento do mesmo pedido para confirmar que a idempotência segura a duplicata; pedidos com cliente novo e produto novo para exercitar os dois caminhos de criação sob demanda; e conferência do documento gerado no ERP contra o pedido original, campo a campo, antes de considerar entregue. Validado em produção com o cliente.