"A palavra realizar pra mim é mágica, ela carrega algo que se eleva além do fazer: O criar. Trazer algo à existência a partir da entropia.", Bruno Darshan
Esta aplicação em Ruby on Rails realiza simulações de empréstimo com base em dados fornecidos via CSV, processando cada linha de forma assíncrona e utilizando serviços simulados da AWS (S3 + SQS via LocalStack).
- Ruby 3.2
- Rails 8.0
- Docker + Docker Compose
- PostgreSQL
- AWS SDK (S3 + SQS via LocalStack)
docker-compose up --buildCalcula parcelas, total e juros com base em:
- Valor do empréstimo
- Idade (via data de nascimento)
- Prazo em meses
- Endpoint:
POST /simulate_on_queue - Recebe arquivo
.csvcom múltiplas simulações - Faz upload do arquivo para o S3 (LocalStack)
- Cria um processo com
process_id - Retorna o identificador para consulta futura
10000,1990-01-01,12
15000,1985-05-20,24curl -X POST http://localhost:3000/simulate_on_queue \
-H "Content-Type: multipart/form-data" \
-F "file=@simulacoes.csv"Resposta esperada:
{
"message": "Upload enviado ao S3 e agendado para processamento",
"process_id": "123abc-uuid"
}docker-compose exec web rails console
QueuedProcess.find_by(process_id: <UUID>)Rodar todos os testes:
docker-compose run --rm web rails testVia console:
docker-compose run --rm web rails console
QueuedProcess.find_by(process_id: "<process_id>")Camadas:
-
Interface (API REST):
- Recebe as requisições de simulação (individual ou via upload de CSV)
-
Services / UseCases:
simulate_loan: encapsula a lógica de simulaçãoupload_csv: lida com o recebimento do arquivo, upload no bucket e criação do processo
-
Jobs: NÃO IMPLEMENTADA
-
Infraestrutura:
- Banco de dados PostgreSQL
- Bucket S3 simulado via LocalStack
- Incluiria validações de parametros mais robustas.
Este projeto está licenciado sob os termos da MIT License.