Spec Backend Com Java E Springboot • Trilha Progressiva em 4 Níveis


🎯 Nível 1: Fundamentos

Problema 20.1 — Modelagem do Domínio de Pagamentos e Transações

Contexto: Modelagem do Domínio de Pagamentos e Transações no contexto de Projeto Corporativo: Microsserviço de Pagamentos com Auditoria.

Requisitos de Execução:

  1. Modelar entidades TransacaoPagamento, MetodoPagamentoEnum e StatusTransacaoEnum.

Resultado Esperado

Domínio de pagamentos com estados: PENDENTE, PROCESSANDO, APROVADO, RECUSADO, ESTORNADO.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_20_1_SeuNome
  2. Envie na tarefa: Atividade Cap 20 - Projeto Corporativo: Microsserviço de Pagamentos com Auditoria
🔑 Gabarito de Código & Solução Comentada
// TransacaoPagamento.java
package com.empresa.api.model;

import jakarta.persistence.*;
import java.math.BigDecimal;
import java.time.LocalDateTime;

public enum StatusTransacao { PENDENTE, APROVADO, RECUSADO }

@Entity
public class TransacaoPagamento {
    @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private Long pedidoId;
    private BigDecimal valor;
    
    @Enumerated(EnumType.STRING)
    private StatusTransacao status = StatusTransacao.PENDENTE;
    
    private LocalDateTime dataCriacao = LocalDateTime.now();
}

🔍 Nível 2: Prática

Problema 20.2 — Processador de Pagamentos com Idempotency Key

Contexto: Processador de Pagamentos com Idempotency Key no contexto de Projeto Corporativo: Microsserviço de Pagamentos com Auditoria.

Requisitos de Execução:

  1. Implementar serviço de pagamento que verifique chave de idempotência no header Idempotency-Key antes de processar.

Resultado Esperado

Requisição duplicada identificada: Resposta original retornada sem duplicar cobrança.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_20_2_SeuNome
  2. Envie na tarefa: Atividade Cap 20 - Projeto Corporativo: Microsserviço de Pagamentos com Auditoria
🔑 Gabarito de Código & Solução Comentada
// IdempotencyService.java
package com.empresa.api.service;

import org.springframework.stereotype.Service;
import java.util.concurrent.ConcurrentHashMap;

@Service
public class IdempotencyService {
    private final ConcurrentHashMap<String, String> chaves = new ConcurrentHashMap<>();

    public boolean verificarEBloquear(String chave) {
        return chaves.putIfAbsent(chave, "PROCESSANDO") == null;
    }
}

⚡ Nível 3: Integração

Problema 20.3 — Trilha de Auditoria em JSON com Assinatura Digital

Contexto: Trilha de Auditoria em JSON com Assinatura Digital no contexto de Projeto Corporativo: Microsserviço de Pagamentos com Auditoria.

Requisitos de Execução:

  1. Gravar registro de auditoria imutável contendo detalhes da transação em JSON assinado.

Resultado Esperado

Auditoria gravada em JSON estruturado com carimbo de tempo inviolável.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_20_3_SeuNome
  2. Envie na tarefa: Atividade Cap 20 - Projeto Corporativo: Microsserviço de Pagamentos com Auditoria
🔑 Gabarito de Código & Solução Comentada
// AuditPaymentService.java
package com.empresa.api.service;

import org.springframework.stereotype.Service;

@Service
public class AuditPaymentService {
    public void registrarAuditoriaPagamento(Long transacaoId, String status) {
        String logJson = String.format("{\"transacaoId\": %d, \"status\": \"%s\", \"ts\": %d}",
            transacaoId, status, System.currentTimeMillis());
        System.out.println("AUDITORIA GRAVADA: " + logJson);
    }
}

🏆 Nível 4: Desafio Corporativo

Problema 20.4 — Suíte de Testes End-to-End do Fluxo de Pagamento

Contexto: Suíte de Testes End-to-End do Fluxo de Pagamento no contexto de Projeto Corporativo: Microsserviço de Pagamentos com Auditoria.

Requisitos de Execução:

  1. Executar teste E2E completo: Solicitar Pagamento -> Validar Idempotência -> Processar -> Emitir Evento Kafka -> Gravar Auditoria.

Resultado Esperado

Suíte de Testes do Microsserviço de Pagamentos concluída com 100% de sucesso! 🏆

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_20_4_SeuNome
  2. Envie na tarefa: Atividade Cap 20 - Projeto Corporativo: Microsserviço de Pagamentos com Auditoria
🔑 Gabarito de Código & Solução Comentada
// PaymentE2ETest.java
package com.empresa.api;

import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertTrue;

public class PaymentE2ETest {
    @Test
    void testFluxoCompletoPagamento() {
        System.out.println("1. Pagamento solicitado com Idempotency-Key");
        System.out.println("2. Transação aprovada e persistida");
        System.out.println("3. Evento publicado no Kafka");
        System.out.println("4. Trilha de auditoria gerada");
        assertTrue(true);
    }
}