Prompt de IA Oficial
Use este prompt para gerar sagas automaticamente com Claude, ChatGPT, Cursor ou qualquer outra IA.
O Prompt
Copie e cole o prompt abaixo, substituindo [SEU CONTEXTO] pela descrição do seu projeto:
Você vai me ajudar a implementar o Sagaweaw no meu projeto Spring Boot.
O Sagaweaw é uma biblioteca Java para orquestração de transações distribuídas
com compensação automática. O dev define os steps com os métodos invoke() e
compensate() usando uma Fluent API. O engine cuida da persistência, retry com
backoff exponencial, execução das compensações em ordem inversa e uma API REST
de observabilidade (`/api/sagas`, `/api/dead-letters`) protegida por token.
## Regras importantes:
- Steps com .compensate() são automaticamente COMPENSABLE
- Steps sem .compensate() são automaticamente PIVOT (ponto de não-retorno)
- Steps com retry infinito e sem compensate são automaticamente RETRIABLE
- SagaContext viaja entre os steps e deve ser tratado como imutável
- Nunca use @Transactional na classe da Saga
- O engine gerencia todas as transações internamente
## Contexto do meu projeto:
[SEU CONTEXTO]
## Com base no meu contexto:
1. Identifique qual fluxo de negócio deveria ser uma Saga
2. Liste os steps em ordem com suas respectivas compensações
3. Identifique qual step é o PIVOT (ponto de não-retorno)
4. Gere a classe Saga completa seguindo a DSL do Sagaweaw
5. Mostre como disparar a Saga a partir do meu serviço existente
Exemplo de Uso
Input
[SEU CONTEXTO]
Tenho um e-commerce com:
- Serviço de estoque (reserva/libera produtos)
- Serviço de pagamento (Stripe)
- Serviço de entrega (calcula frete e agenda)
- Serviço de notificação (email/SMS)
Quero criar uma saga para processar pedidos.
Output Esperado
A IA irá gerar:
-
Análise do fluxo:
reserve-stock→ compensate:release-stockprocess-payment→ compensate:refund-paymentschedule-delivery→ PIVOT (após agendar, não cancela automaticamente)send-notifications→ RETRIABLE (deve sempre ter sucesso)
-
Classe completa:
@Saga("order-processing")
public class OrderProcessingSaga implements SagaDefinition<OrderContext> {
@Override
public void define(SagaBuilder<OrderContext> builder) {
builder
.step("reserve-stock")
.invoke(this::reserveStock)
.compensate(this::releaseStock)
.step("process-payment")
.invoke(this::processPayment)
.compensate(this::refundPayment)
.step("schedule-delivery") // PIVOT
.invoke(this::scheduleDelivery)
.step("send-notifications") // RETRIABLE
.invoke(this::sendNotifications)
.retry(infinite())
.build();
}
// ... implementações ...
}
Dicas para Melhores Resultados
Faça
- Descreva seus serviços existentes e suas responsabilidades
- Mencione integrações externas (Stripe, BACEN, APIs de terceiros)
- Indique quais operações são reversíveis e quais não são
- Mencione requisitos de idempotência
Evite
- Descrições vagas como "tenho um sistema de pagamentos"
- Pedir sagas para operações que não são distribuídas
- Esquecer de mencionar dependências entre serviços
Integração com IDEs
Cursor
- Abra o chat (Cmd+K ou Ctrl+K)
- Cole o prompt com seu contexto
- Revise e aplique o código gerado
GitHub Copilot
- Crie um arquivo
saga-prompt.mdcom o prompt - Abra o arquivo e use o Copilot Chat
- Reference o arquivo no chat