A ideia: duas portas de entrada, uma chave só
Antes de qualquer prompt, entenda a arquitetura. Ela é curta e resolve o problema inteiro.
Sua venda pode chegar até você por dois caminhos. O webhook é o gateway te avisando no segundo em que a venda acontece. Rápido e frágil: se o seu servidor estiver fora do ar naquele instante, ou se você mexer na URL, aquele aviso se perde pra sempre e ninguém te conta.
O sync é o contrário: de cinco em cinco minutos você pergunta ao gateway o que aconteceu. Lento e teimoso. Nunca perde nada.
Use os dois, e faça os dois caírem no mesmo lugar
Webhook pra ser instantâneo, sync pra não perder nada. Só que agora a mesma venda vai chegar duas, três, dez vezes: uma pelo aviso, outra pela varredura, outra quando o pix é pago, outra se for reembolsada.
A solução é uma só: uma chave que identifica a venda (a plataforma mais o id da transação) e uma gravação que atualiza se já existe e cria se não existe. Chegou dez vezes, virou uma linha só, sempre com a informação mais nova. É esse detalhe que separa um painel confiável de um painel que conta a mesma venda três vezes.
O resto do projeto é: um lugar só por onde toda venda entra, o cálculo do dinheiro certo, e um painel que mostra isso rápido no celular.
Use no mínimo o Opus 4.8. Se tiver Opus 5, use o Opus 5.
Esse projeto tem duas armadilhas em que modelo leve cai sempre: conta de fuso horário (que faz a venda das 22h aparecer no dia seguinte) e gravação que apaga campo (quando o evento de reembolso chega sem os dados do cliente e limpa o que já estava lá). As duas passam despercebidas por semanas.
- Modelo em Opus e uma conversa só do primeiro ao último prompt.
- Conta no Supabase com um projeto novo.
- As credenciais da API da Cakto (id e segredo do cliente), que saem no painel dela.
- Acesso pra cadastrar um webhook no seu gateway.
Vai usar outro gateway, ou mais de um?
Esse material conecta na Cakto, e a arquitetura já foi desenhada pra isso não te prender. Repare que a chave da venda é plataforma + id da transação: o campo plataforma existe justamente pra você somar uma segunda origem depois sem misturar nada.
Pra plugar outro gateway, você escreve um arquivo: o que traduz o formato dele pro seu. O ingestor, o banco e o painel inteiro não mudam uma linha. É por isso que o prompt 01 exige essa separação desde o começo.