Skip to content

leandersonandre/quarkus-codecon-desafio-1-1s-vs-3j

Repository files navigation

Desafio Técnico: Performance e Análise de Dados via API

Minha Solução

Java + Quarkus

Objetivo

Você tem 1 hora para criar uma API que recebe um arquivo JSON com 100.000 usuários e oferece endpoints performáticos e bem estruturados para análise dos dados.


JSON de entrada

O JSON contém uma lista de usuários com a seguinte estrutura:

{
  "id": "uuid",
  "name": "string",
  "age": "int",
  "score": "int",
  "active": "bool",
  "country": "string",
  "team": {
    "name": "string",
    "leader": "bool",
    "projects": [{ "name": "string", "completed": "bool" }]
  },
  "logs": [{ "date": "YYYY-MM-DD", "action": "login/logout" }]
}

Endpoints obrigatórios

POST /users

Recebe e armazena os usuários na memória. Pode simular um banco de dados em memória.

GET /superusers

  • Filtro: score >= 900 e active = true
  • Retorna os dados e o tempo de processamento da requisição.

GET /top-countries

  • Agrupa os superusuários por país.
  • Retorna os 5 países com maior número de superusuários.

GET /team-insights

  • Agrupa por team.name.
  • Retorna: total de membros, líderes, projetos concluídos e % de membros ativos.

GET /active-users-per-day

  • Conta quantos logins aconteceram por data.
  • Query param opcional: ?min=3000 para filtrar dias com pelo menos 3.000 logins.

GET /evaluation

Ele deve executar uma autoavaliação dos principais endpoints da API e retornar um relatório de pontuação.

A avaliação deve testar:

  • Se o status retornado é 200
  • O tempo em milisegundos de resposta
  • Se o retorno é um JSON válido

Esse endpoint pode rodar scripts de teste embutidos no próprio projeto e retornar um JSON com os resultados. Ele será utilizado para validar a entrega de forma automática e rápida.


Requisitos Técnicos

  • Tempo de resposta < 1s por endpoint.
  • Todos os endpoints precisam retornar o tempo de processamento (em milissegundos) e a timestamp da requisição
  • Código limpo, modular, com funções bem definidas.
  • Pode usar qualquer linguagem/framework.
  • Documentação ou explicação final vale pontos bônus.
  • Não pode usar IA.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages