Skip to content

aliine98/teste-backend-shopper

Repository files navigation

API leitura de consumo de água e gás - Teste técnico Shopper

GitHub repo size Linkedin URL

Table of Contents

  1. Sobre
  2. Tecnologias
  3. Endpoints
  4. Responses
  5. Rodando localmente
  6. Como contribuir para o projeto
  7. Licença

💻 Sobre o projeto

Uma API desenvolvida para o teste técnico da Shopper.

Back-end de um serviço que gerencia a leitura individualizada de consumo de água e gás. Para facilitar a coleta da informação, o serviço utilizará IA para obter a medição através da foto de um medidor.

🛠 Tecnologias

  • Express
  • MongoDB
  • Mongoose
  • Docker
  • Google AI API

📍 Endpoints

URL base: https://localhost:3333

Método Endpoint Descrição Body da requisição
GET /<customer_list>/list?measure_type= Responsável por listar as medidas realizadas por um determinado cliente, podendo filtrar pelo tipo: "WATER" ou "GAS" -
POST /upload Responsável por receber uma imagem em base 64, consultar o Gemini e retornar a medida lida pela API
{
    "image": "base64",
    "customer_code": "string",
    "measure_datetime": "datetime",
    "measure_type": "WATER" ou "GAS"
}
PATCH /confirm Responsável por confirmar ou corrigir o valor lido pelo LLM
{
    "measure_uuid": "string",
    "confirmed_value": integer
}

✅ Responses

GET /<cutomer_code>/list?measure_type=

Status Code Descrição Resposta
200 Operação realizada com sucesso
{
    "customer_code": string,
    "measures": [
    {
        "measure_uuid": string,
        "measure_datetime": datetime,
        "measure_type": string,
        "has_confirmed":boolean,
        "image_url": string
    },
    {
        "measure_uuid": string,
        "measure_datetime": datetime,
        "measure_type": string,
        "has_confirmed":boolean,
        "image_url": string
    }
 ]
}
400 Parâmetro measure type diferente de WATER ou GAS
{
    "error_code": "INVALID_TYPE",
    "error_description": “Tipo de medição não permitida”
}
404 Nenhum registro encontrado
{
    "error_code": "MEASURES_NOT_FOUND",
    "error_description": "Nenhuma leitura encontrada"
}

POST /upload

Status Code Descrição Resposta
200 Operação realizada com sucesso
{
    "image_url": string,
    "measure_value": integer,
    "measure_uuid": string
}

400 Os dados fornecidos no corpo da requisição são inválidos
{
    "error_code": "INVALID_DATA",
    "error_description": Dados inválidos. Por favor informe customer_code, measure_datetime, measure_type válidos e imagem no formato base64.
}
409 Já existe uma leitura para este tipo no mês atual
{
    "error_code": "DOUBLE_REPORT",
    "error_description": "Leitura do mês já realizada"
}

PATCH /confirm

Status Code Descrição Resposta
200 Operação realizada com sucesso
{
    "success": true
}
400 Os dados fornecidos no corpo da requisição são inválidos
{
    "error_code": "INVALID_DATA",
    "error_description": Dados inválidos. Por favor informe measure_uuid e confirmed_value válidos.
}
404 Leitura não encontrada
{
    "error_code": "MEASURE_NOT_FOUND",
    "error_description": "Leitura não encontrada"
}
409 Leitura já confirmada
{
    "error_code": "CONFIRMATION_DUPLICATE",
    "error_description": "Leitura do mês já confirmada"
}

🚀 Rodando localmente

Clone o projeto

  git clone https://github.com/aliine98/teste-backend-shopper

Entre no diretório do projeto

  cd teste-backend-shopper

Instale as depêndencias

  npm install

Inicie o docker

  docker compose up

Feito com ❤️ por Aline Bevilacqua!

⬆ Voltar ao topo

About

API leitura de consumo de água e gás.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published