Skip to content

Unificacao API Providers - Ajustes Backend

Contexto

O frontend unificou a listagem de prestadores (GET /providers) com os dados de monitoramento que antes vinham de GET /monitoring/. A API de providers agora precisa retornar os campos de horas diretamente, eliminando a necessidade do frontend fazer duas chamadas separadas.


1. Campos faltantes na API GET /providers

A API GET /providers precisa retornar os seguintes campos que hoje so existem na API de monitoring:

CampoTipoDescricaoObrigatorio
totalHoursWeeknumberTotal de horas trabalhadas na semana correnteSim (default: 0)
totalHoursMonthnumberTotal de horas trabalhadas no mes correnteSim (default: 0)
lastEntrystring (ISO 8601) | nullData/hora do ultimo registro de horasSim (default: null)
contractNamestring | nullNome do contrato ativo vinculadoSim (default: null)

Response esperada

json
{
  "data": [
    {
      "id": "uuid",
      "document": "12.345.678/0001-90",
      "name": "Tech Solutions Ltda",
      "tradeName": "TechSol",
      "email": "contato@techsol.com.br",
      "phone": "(11) 99999-1234",
      "status": "active",
      "companyId": "uuid",
      "contractId": "uuid",
      "contractName": "Contrato de Prestacao de Servicos",
      "totalHoursWeek": 42,
      "totalHoursMonth": 168,
      "lastEntry": "2026-03-14T18:30:00Z",
      "createdAt": "2024-01-10T00:00:00Z",
      "updatedAt": "2024-01-10T00:00:00Z"
    }
  ],
  "total": 1
}

Regras de calculo

  • totalHoursWeek: soma de WorkEntry.tasks[].durationMinutes da semana corrente (segunda a domingo), convertida em horas decimais
  • totalHoursMonth: soma de WorkEntry.tasks[].durationMinutes do mes corrente, convertida em horas decimais
  • lastEntry: MAX(WorkEntry.date) do provider
  • Se o provider nao tem entradas, retornar totalHoursWeek: 0, totalHoursMonth: 0, lastEntry: null

Validacao do campo status

O campo status deve retornar apenas os valores "active" ou "inactive". O frontend usa esse valor como chave de traducao (team.status.active / team.status.inactive). Qualquer outro valor causa exibicao incorreta na UI.


2. APIs de Monitoring

A listagem de providers com horas é servida por GET /providers (fonte única). As rotas de Monitoring abaixo são as que tratam de entradas de horas e solicitações retroativas:

MetodoRotaDescricao
GET/monitoring/:id/entriesListagem de entradas de horas do provider
GET/monitoring/entries/:idDetalhe de uma entrada
POST/monitoring/entriesCriar entrada de horas
PUT/monitoring/entries/:idAtualizar entrada
DELETE/monitoring/entries/:idExcluir entrada
POST/monitoring/retroactive-requestsSubmeter solicitacao retroativa
GET/monitoring/retroactive-requestsListar solicitacoes retroativas
POST/monitoring/retroactive-requests/:id/approveAprovar solicitacao
POST/monitoring/retroactive-requests/:id/declineRecusar solicitacao (body: { declineReason })

3. Resumo de acoes

Backend

  1. Response de GET /providers inclui os campos totalHoursWeek, totalHoursMonth, lastEntry, contractName
  2. status retorna apenas "active" ou "inactive"
  3. Rotas de /monitoring/* (entries e retroactive-requests) seguem ativas

Frontend

  1. formatHours trata valores null/undefined/NaN exibindo -
  2. Listagem usa apenas GET /providers como fonte de dados