Repository navigation
Open
Labels
apitarefa que diz respeito à API em Java Spring Boottarefa que diz respeito à API em Java Spring Boot
Milestone
Description
T-335 - Implementar na API o resumo do dossiê do auditor
- Componente:
api. - Depende de: T-333 no
develope T-305, que cria a fatiaauditoriae a política de acesso do auditor. - Data máxima: 16/11/2026
- Estimativa: 5 pontos (Fibonacci)
Entregável
-
GET /auditoria/jobs/{id}/resumona fatiasynapse.api.auditoria, conforme o contrato da T-333. - Testes de autorização, de conteúdo e de observabilidade.
Descrição
O dossiê do auditor mostra quantas simulações a regra teve, quantas concluíram e quantas falharam, o que mudou de uma versão para a outra e a variação de uma simulação para a anterior. O frontend não calcula valor exibido, então a API devolve esses números prontos. Esta tarefa implementa a rota do resumo definida na T-333.
Contexto e decisões tomadas
- A fatia
auditoriada T-305 já tem a recusa de quem não é auditor e o tratamento de erro{codigo, mensagem}. A rota nova reaproveita os dois. - As alterações de uma versão comparam
regras.nucleoeregras.especificacoescom os da versão apontada porregra_origem_id. Uma parte do núcleo é identificada comonucleo.<campo>e um elemento pelo seuref, como emelemento_ref. - A comparação entre simulações usa
resultados_simulacao.totaiseresultados_simulacao.meta_vendado resultado de cada simulação, e compara cada simulação concluída comsucessocom a anterior também concluída comsucesso, pela ordem de criação. - A versão vigente é a da simulação vigente do job, a mesma que
GET /jobs/{id}usa. - As métricas HTTP do Micrometer já medem volume, falha e duração por rota. Nenhuma métrica de domínio é criada.
Escopo
Dentro do escopo
- Controller, serviço, repositório e DTOs da rota na fatia
auditoria. - Testes da fatia.
Fora do escopo
GET /auditoria/jobs/{id}, que é da T-305.- O painel de eventos, que é da T-334.
Requisitos
Acesso
- A rota chama
UsuarioAtual.obter()antes de ler dados e recusa com403 sem_permissaoquem não tem o papelauditor. Sessão ausente recebe 401 pela cadeia existente. Id inexistente recebe404 job_nao_encontrado, e id malformado recebe 400.
Conteúdo
- Contar as simulações registradas do job, as concluídas com
sucessoe as que terminaram com outro status, sem as execuções candidatas da busca da meta. - Para cada versão com origem, listar só as partes que mudaram: incluídas, removidas e alteradas, com o valor anterior e o novo como estão gravados.
- Para cada simulação comparada, calcular a variação de cada indicador do contrato como atual menos anterior.
- Calcular com
BigDecimale devolver os valores sem arredondamento, com a precisão gravada, como fazJobRepository.
Restrições
- Nenhuma consulta lê
resultados_simulacao.linhas,submissoes.binario, prompts, respostas ou a fonte dos códigos.
Observabilidade
- Abrir o
CorrelationContextcom ojob_ide o id do usuário auditor e fechá-lo ao terminar, inclusive em erro. - Registrar em
infoa consulta concluída, com mensagem estável, e emwarna recusa por papel, sem dados do token. Nenhum log traz valores da regra ou do resultado.
Contexto técnico
- Entradas: token do usuário e id do job.
- Saídas: a resposta do resumo do contrato.
- Componentes afetados:
api/src/main/java/synapse/api/auditoria/. - Restrições: só leitura; nenhuma escrita em tabela; resposta de erro sem detalhe interno.
- Referências: architecture (
api/.agents/skills/architecture/SKILL.md), logging (api/.agents/skills/logging/SKILL.md),docs/database/modelo-dados.dbml,contracts/domain/resultado-totais.schema.json,contracts/domain/comum.schema.json(elemento_ref),JobRepository.java(api/src/main/java/synapse/api/job/JobRepository.java).
Critérios de aceitação
- Num job com a versão 1 extraída e a versão 2 corrigida, que muda só o percentual, a versão 2 traz só
nucleo.percentual, com o valor anterior e o novo, e a versão 1 não traz alterações. - Num job com a simulação 1 em
erro_codigoe as simulações 2 e 3 emsucesso, os contadores são 3, 2 e 1, a simulação 3 é comparada com a 2, e as simulações 1 e 2 não têm comparação. - A variação de
simuladoé igual à diferença exata entre os dois totais gravados. - Um profissional de RH recebe 403, uma requisição sem sessão recebe 401 e um job inexistente recebe 404.
Definição de concluído (DoD)
make checknaapisem falha.- Testes exercitando a rota com token de auditor, de RH e sem token, com logs serializados conferidos quanto ao usuário, ao
job_ide à ausência de valores. - Saída de
/metricsconferida depois de exercitar a rota, comhttp_server_requestspara o template/auditoria/jobs/{id}/resumo. - Resposta validada contra o schema da especificação num teste.
Metadata
Metadata
Assignees
Labels
apitarefa que diz respeito à API em Java Spring Boottarefa que diz respeito à API em Java Spring Boot
Activity