Pular para o conteúdo principal

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:

  1. Análise do fluxo:

    • reserve-stock → compensate: release-stock
    • process-payment → compensate: refund-payment
    • schedule-deliveryPIVOT (após agendar, não cancela automaticamente)
    • send-notificationsRETRIABLE (deve sempre ter sucesso)
  2. 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

  1. Abra o chat (Cmd+K ou Ctrl+K)
  2. Cole o prompt com seu contexto
  3. Revise e aplique o código gerado

GitHub Copilot

  1. Crie um arquivo saga-prompt.md com o prompt
  2. Abra o arquivo e use o Copilot Chat
  3. Reference o arquivo no chat

Recursos Adicionais