Skip to content

[API] Estatísticas no GET /events/stats #14

Description

@Ronildo22

Estatísticas no GET /events/stats

Contexto

Hoje as estatísticas de eventos estão centralizadas no front-end. Isso faz com que a regra de contagem fique duplicada fora da API e dificulta manter uma fonte única de verdade para indicadores.

Objetivo

Centralizar as estatísticas de eventos no backend por meio de um novo endpoint GET /events/stats.

A resposta deve retornar os contadores abaixo, seguindo a mesma regra já usada no front-end:

  • total — total de eventos.
  • noturno — quantidade de eventos com period === 'noturno'.
  • matutino — quantidade de eventos com period === 'matutino'.
  • vespertino — quantidade de eventos com period === 'vespertino'.

Exemplos de requisição e resposta

Exemplo 1 — Buscar estatísticas gerais de eventos

Requisição:

GET /events/stats

Resposta esperada (200):

{
  "total": 10,
  "noturno": 4,
  "matutino": 3,
  "vespertino": 3
}

Regras de contagem

  • total deve considerar todos os eventos retornáveis pela regra atual do backend.
  • noturno deve contar apenas eventos com period exatamente igual a noturno.
  • matutino deve contar apenas eventos com period exatamente igual a matutino.
  • vespertino deve contar apenas eventos com period exatamente igual a vespertino.
  • Se não houver eventos cadastrados, a resposta deve retornar todos os contadores com valor 0.

Tarefas

  • Implementar o endpoint GET /events/stats.
  • Criar no service a lógica de agregação dos eventos.
  • Garantir que noturno use a regra period === 'noturno'.
  • Garantir que matutino use a regra period === 'matutino'.
  • Garantir que vespertino use a regra period === 'vespertino'.
  • Retornar a resposta no formato { total, noturno, matutino, vespertino }.
  • Documentar o endpoint no Swagger.
  • Adicionar testes cobrindo os contadores.

Critérios de aceite

  • GET /events/stats responde com status 200.
  • A resposta segue o formato { total, noturno, matutino, vespertino }.
  • noturno conta corretamente eventos com period === 'noturno'.
  • matutino conta corretamente eventos com period === 'matutino'.
  • vespertino conta corretamente eventos com period === 'vespertino'.
  • Quando não houver eventos, a resposta retorna { total: 0, noturno: 0, matutino: 0, vespertino: 0 }.
  • Existem testes cobrindo a regra de contagem.
  • Swagger descreve o endpoint e o formato da resposta.

Dependências

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions