Frente 02
Desenvolvimento sob medida
O que a planilha não consegue fazer
- Software sob medida
- API REST
- Trilha de auditoria
- SLA
O problema
O time de dados recebe pedido por WhatsApp, e-mail, corredor e reunião. Ninguém sabe quantas demandas existem, qual a fila, nem quanto tempo leva.
A tentativa de organizar nasce como planilha compartilhada, e aí vem o problema pior: quinze pessoas editando o mesmo arquivo, sem validação, sem histórico de quem alterou o quê, campo livre onde deveria haver opção fechada.
/api/demandasLista demandas com filtros e paginação.
Devolve as demandas que atendem aos filtros, paginadas. Sem filtro, devolve a fila inteira.
Parâmetros de consulta
statusstring— rascunho | triagem | fila | execucao | validacao | concluida | recusadatipostring— relatorio | painel | automacao | integracao | correcaoprioridadestring— baixa | media | alta | criticaareastring— área solicitantepagina / tamanhonúmero— paginação; tamanho máximo 100
Códigos de erro
- 400 — parâmetro de paginação inválido
curl "/api/demandas?status=fila&tamanho=3"
/api/demandas/{codigo}Uma demanda, com trilha e transições possíveis.
Além dos campos da demanda, devolve o histórico completo e quais transições o papel informado consegue executar a partir do status atual.
Parâmetros de consulta
papelstring— solicitante | analista | gestor
Códigos de erro
- 404 — o código não existe
curl "/api/demandas/DEM-2026-0011?papel=gestor"
/api/demandasCria uma demanda.
Aplica as mesmas regras do formulário. Título entre 10 e 120 caracteres, descrição com no mínimo 30, e prioridade crítica exige impacto e justificativa com no mínimo 80.
Corpo da requisição
{
"titulo": "string (10-120)",
"descricao": "string (mín. 30)",
"tipo": "relatorio | painel | automacao | integracao | correcao",
"prioridade": "baixa | media | alta | critica",
"solicitanteId": "U6 | U7 | U8",
"impactoEstimado": "string (obrigatório se crítica)",
"justificativa": "string (mín. 80 se crítica)"
}Códigos de erro
- 400 — JSON inválido ou solicitanteId inexistente
- 422 — algum campo viola as regras de criação
curl -X POST "/api/demandas" \
-H "content-type: application/json" \
-d '{"titulo":"curto","descricao":"muito curta","tipo":"relatorio","prioridade":"critica","solicitanteId":"U6"}'/api/demandas/{codigo}/statusMove a demanda de status.
A máquina de estados e as permissões por papel são avaliadas aqui, no servidor. Uma transição que não existe responde 422; uma que existe mas não pertence ao papel responde 403.
Corpo da requisição
{
"para": "triagem | fila | execucao | validacao | concluida | recusada",
"usuarioId": "U1 … U8",
"motivoRecusa": "string (mín. 40, obrigatório ao recusar)"
}Códigos de erro
- 400 — JSON inválido ou usuarioId inexistente
- 403 — a transição existe, mas não para este papel
- 404 — o código não existe
- 422 — a transição não existe na máquina de estados
curl -X PATCH "/api/demandas/DEM-2026-0011/status" \
-H "content-type: application/json" \
-d '{"para":"concluida","usuarioId":"U1"}'/api/indicadoresIndicadores da operação.
Série mensal, tempo médio por tipo, aderência ao SLA por prioridade e por tipo, distribuição por área e tempo médio parado em cada status.
curl "/api/indicadores"
