Bem-vindo ao repositório do projeto de teste técnico para a vaga de desenvolvedor na Shopper.com.br! Este projeto tem como objetivo construir um serviço de back-end que gerencia a leitura de medidores de água e gás utilizando imagens.
Este projeto é composto por um serviço de back-end desenvolvido em Node.js com TypeScript, Docker e integração com a API do Google Gemini. O serviço possui três endpoints principais para gerenciamento de leituras de medidores:
- POST /upload: Recebe uma imagem em base64, consulta a API do Google Gemini para obter a medição e retorna o valor lido, junto com um link temporário para a imagem e um GUID.
- PATCH /confirm: Permite confirmar ou corrigir o valor lido pelo LLM. Atualiza o valor no banco de dados e retorna o status da operação.
- GET /<customer_code>/list: Lista todas as leituras realizadas por um cliente específico. Permite filtrar por tipo de medição (água ou gás) se o parâmetro
measure_type
for fornecido.
- Upload de Imagem: Valida e processa imagens em base64 para obter medições precisas.
- Confirmação de Leitura: Permite a correção manual das leituras, se necessário.
- Listagem de Leituras: Recupera todas as medições realizadas por um cliente com a opção de filtrar por tipo de medição.
- Node.js com TypeScript: Para desenvolvimento do back-end.
- PostgreSQL: Para armazenamento das leituras de medidores.
- Google Gemini API: Para a leitura das medições a partir de imagens.
- Docker: Para containerização da aplicação.
- Clone o repositório:
git clone https://github.com/tuliogontijo/tech_test_backend.git
- Navegue até o diretório do projeto:
cd tech_test_backend
- Certifique-se de ter o Docker e o Docker Compose instalados.
- Crie um arquivo .env na raiz do projeto com a seguinte variável de ambiente:
GEMINI_API_KEY=<sua-chave-api>
- Suba os containers com o Docker Compose:
docker-compose up --build
- A aplicação estará disponível em http://localhost:3000.
- POST /upload
- PATCH /confirm
- GET /<customer_code>/list
Uma coleção com os endpoints para Postman está disponível aqui.