Contexto
Você foi contratado para desenvolver uma aplicação backend que gerencia uma loja virtual.
A aplicação deve ser construída usando Python, FastAPI, sistema de mensageria e banco
de dados SQL. A aplicação deve ser capaz de gerenciar produtos, pedidos e usuários, além
de processar pedidos de forma assíncrona.
Requisitos
1. Usuários
Endpoint para criar um novo usuário com os seguintes campos:
● Nome (string)
● Email (string, formato válido)
● Senha (string, armazenada de forma segura)
2. Gerenciamento de Pedidos
Endpoint para criar um novo pedido. Um pedido contém:
● ID do usuário (integer)
● Lista de produtos (array de objetos contendo ID do produto e quantidade)
Endpoint para listar todos os pedidos de um usuário específico.
● ID do usuário (integer)
● Retornar uma lista de pedidos, cada pedido contendo ID, lista de produtos, status
(processado ou não processado) e data do pedido
3. Processamento Assíncrono de Pedidos
Quando um pedido é criado:
● Ele deve ser colocado em um sistema de mensageria (por exemplo, RabbitMQ ou
Kafka) para processamento.
Um worker deve consumir essa fila e processar o pedido:
● Reduzir a quantidade em estoque dos produtos do pedido.
● Marcar o pedido como "Processado" no banco de dados.
Critérios de Avaliação
1. Funcionalidade
● Verifique se todas as rotas estão funcionando conforme esperado.
2. Qualidade do Código
● Avaliar a clareza, organização e boas práticas no código.
3. Documentação
● Avaliar a documentação do código e da API.
○ Documentação da API (por exemplo, usando Swagger/OpenAPI).
○ README detalhado explicando como rodar o projeto, dependências e
exemplos de uso.
4. Integração
● Avaliar a correta integração com o banco de dados e o sistema de mensageria.
Observações
● Não há preferência por banco de dados específico (MySQL, PostgreSQL, SQLite,
etc.).
● A escolha do sistema de mensageria é livre (RabbitMQ, Kafka, etc.).
● A tabela de produtos pode ser pré-populada com os seguintes campos:
○ ID (integer)
○ Nome (string)
○ Descrição (string)
○ Preço (float)
○ Quantidade em estoque (integer)
Entregáveis
● Código fonte da aplicação (O candidato deve fornecer um link para o repositório Git).
● Arquivo Dockerfile e [Link].
● Scripts SQL para criação do banco de dados (se necessário).
● Instruções para rodar a aplicação e os testes.