Este projeto é uma arquitetura completa e resiliente para processar chargebacks, simulando o fluxo real de estornos em bancos e instituições financeiras, incluindo o envio de arquivos NDJSON via FTP para redes de pagamento (ex.: Mastercard).
chargeback-opened no RabbitMQ.chargeback-api/
├── cmd/
│ └── main.go
├── internal/
│ ├── application/
│ │ └── application.go
│ ├── domain/
│ │ ├── models/
│ │ │ └── chargeback.go
│ │ └── repositories/
│ │ └── chargeback_repository.go
│ ├── infrastructure/
│ │ ├── respositories/
│ │ │ └── cassandra/
│ │ │ └── chargeback_repository.go
│ │ ├── rabbitmq/
│ │ │ ├── producers/
│ │ │ │ └── chargeback-opened-producers.go
│ │ │ ├── connection.go
│ │ │ └── event.go
│ │ ├── logging/
│ │ │ └── logging.go
│ │ └── middlewares/
│ ├── interfaces/
│ │ ├── http/
│ │ │ ├── handlers/
│ │ │ │ └── chargeback_handler.go
│ │ │ └── routes/
│ │ │ └── routes.go
│ │ └── messaging/
│ │ └── publisher.go
│ ├── presentation/
│ ├── usecases/
│ └── config/
│ └── config.go
├── docs/ # Swagger docs
├── go.mod
├── chargeback-api.dockerfile
cd project
make up_build
Esse comando irá:
Fazer go build para cada microserviço.
Gerar a documentação Swagger (para o Chargeback API).
Subir todos os serviços via docker-compose.
make up
make down
Serviço URL - Chargeback API http://localhost:8080/swagger/index.html - RabbitMQ Management http://localhost:15672 (guest/guest) - MinIO Console http://localhost:9001 (admin/password) - FTP Server (Mastercard) ftp://localhost (admin/admin) - Postgres (Batch) postgres://admin:admin@localhost:5432/batch - Cassandra cqlsh cassandra:9042
Todos os microserviços usam variáveis de ambiente para configuração. Exemplos personalizáveis:
Confira o docker-compose.yml para ver como aplicar facilmente.
Utilizamos o K6 para simular carga alta de chargebacks.
Exemplo para rodar o teste:
k6 run chargeback-load-test.js
k6 run chargeback-load-test.js
$ claude mcp add chargeback \
-- python -m otcore.mcp_server <graph>