Appearance
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:
| Campo | Tipo | Descricao | Obrigatorio |
|---|---|---|---|
totalHoursWeek | number | Total de horas trabalhadas na semana corrente | Sim (default: 0) |
totalHoursMonth | number | Total de horas trabalhadas no mes corrente | Sim (default: 0) |
lastEntry | string (ISO 8601) | null | Data/hora do ultimo registro de horas | Sim (default: null) |
contractName | string | null | Nome do contrato ativo vinculado | Sim (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 deWorkEntry.tasks[].durationMinutesda semana corrente (segunda a domingo), convertida em horas decimaistotalHoursMonth: soma deWorkEntry.tasks[].durationMinutesdo mes corrente, convertida em horas decimaislastEntry: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:
| Metodo | Rota | Descricao |
|---|---|---|
| GET | /monitoring/:id/entries | Listagem de entradas de horas do provider |
| GET | /monitoring/entries/:id | Detalhe de uma entrada |
| POST | /monitoring/entries | Criar entrada de horas |
| PUT | /monitoring/entries/:id | Atualizar entrada |
| DELETE | /monitoring/entries/:id | Excluir entrada |
| POST | /monitoring/retroactive-requests | Submeter solicitacao retroativa |
| GET | /monitoring/retroactive-requests | Listar solicitacoes retroativas |
| POST | /monitoring/retroactive-requests/:id/approve | Aprovar solicitacao |
| POST | /monitoring/retroactive-requests/:id/decline | Recusar solicitacao (body: { declineReason }) |
3. Resumo de acoes
Backend
- Response de
GET /providersinclui os campostotalHoursWeek,totalHoursMonth,lastEntry,contractName statusretorna apenas"active"ou"inactive"- Rotas de
/monitoring/*(entries e retroactive-requests) seguem ativas
Frontend
formatHourstrata valoresnull/undefined/NaNexibindo-- Listagem usa apenas
GET /providerscomo fonte de dados