Repository navigation
Open
Labels
apitarefa que diz respeito à API em Java Spring Boottarefa que diz respeito à API em Java Spring Boot
Milestone
Description
T-334 - Implementar na API o painel de operações da auditoria
- Componente:
api. - Depende de: T-333 no
develope T-305, que cria a fatiaauditoria, a política de acesso do auditor e o acesso ao nome resolvido do job. - Data máxima: 17/11/2026
- Estimativa: 8 pontos (Fibonacci)
Entregável
-
GET /auditoria/eventoseGET /auditoria/eventos/filtrosna fatiasynapse.api.auditoria, conforme o contrato da T-333. - Testes de autorização, de filtros, de paginação, de contadores e de observabilidade.
Descrição
O auditor precisa ver numa tela só o que aconteceu em todas as regras, de todos os usuários, e filtrar por usuário, mês, loja, marca, cargo e regra. Esta tarefa implementa as duas rotas do painel definidas na T-333.
Contexto e decisões tomadas
- A fatia
auditoriada T-305 já tem a recusa de quem não é auditor, o tratamento de erro{codigo, mensagem}e o uso da resolução do nome exposta pela fatiajob. As rotas novas reaproveitam esses três pontos. - Os eventos vêm das tabelas listadas na T-333. Os filtros, a ordenação, a paginação e os contadores são resolvidos no banco, numa consulta que une as fontes, para que a API não carregue os eventos de todos os jobs para filtrar em memória.
- Loja, marca e cargo estão em
regras.nucleo(loja,marcaecargo, listas de códigos), e o filtro usa a versão de maiorversaodo job. - O mês é calculado no fuso
America/Sao_Paulo. - 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 das duas rotas na fatia
auditoria. - Testes da fatia.
Fora do escopo
GET /auditoria/jobseGET /auditoria/jobs/{id}, que são da T-305.- O resumo do dossiê, que é da T-335.
Requisitos
Acesso e validação
- As duas rotas chamam
UsuarioAtual.obter()antes de ler dados e recusam com403 sem_permissaoquem não tem o papelauditor. Sessão ausente recebe 401 pela cadeia existente. paginaetamanhoseguem as regras deGET /auditoria/jobs.mesfora do formatoAAAA-MMe demais parâmetros inválidos recebem400 requisicao_invalida.
Eventos
- Montar cada evento com os campos do contrato, a partir das fontes da T-333, sem as execuções candidatas da busca da meta.
- Aplicar os filtros combinados com E. O filtro
regracompara o id exato quando o valor é um UUID e, nos outros casos, procura o texto no nome resolvido sem diferenciar maiúsculas de minúsculas, escapando%e_. - Ordenar do instante mais recente para o mais antigo, com desempate estável, para que nenhum evento se repita ou suma entre páginas.
- Calcular os contadores com os mesmos filtros, sobre todas as páginas.
Opções dos filtros
GET /auditoria/eventos/filtrosdevolve as opções descritas no contrato.
Restrições
- Nenhuma consulta lê
submissoes.binario,resultados_simulacao.linhas, o texto de prompts e respostas ou a fonte dos códigos. - Todo filtro vai como parâmetro da consulta, nunca concatenado ao SQL.
Observabilidade
- Abrir o
CorrelationContextcom o id do usuário auditor e fechá-lo ao terminar, inclusive em erro. - Registrar em
infoa consulta concluída, com mensagem estável, quais filtros vieram preenchidos, a página, o tamanho e o total. O valor do filtroregranão vai para o log, porque é texto livre. Registrar emwarna recusa por papel, sem dados do token.
Contexto técnico
- Entradas: token do usuário e os parâmetros da rota.
- Saídas: as duas respostas 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), metrics (api/.agents/skills/metrics/SKILL.md),docs/database/modelo-dados.dbml, a fatiaauditoriada T-305 eJobRepository.java(api/src/main/java/synapse/api/job/JobRepository.java) como exemplo de listagem paginada com filtro opcional.
Critérios de aceitação
- Com jobs de dois usuários, o filtro pelo login de um traz só os eventos dele, e os contadores mudam junto.
- Um evento às 23h30 de 31/10 no horário de Brasília entra no filtro de outubro.
- Um job cuja versão 1 tinha a loja 13 e cuja versão 2 não a tem não aparece no filtro da loja 13.
- O filtro
regraacha o job por parte do nome, em maiúsculas ou minúsculas, e pelo id exato. - "Simulações com falha" conta um resultado
erro_codigoe não conta as execuções candidatas da busca da meta. - Percorrer todas as páginas devolve cada evento uma vez.
- Um profissional de RH recebe 403 nas duas rotas, e uma requisição sem sessão recebe 401.
Definição de concluído (DoD)
make checknaapisem falha.- Testes exercitando as rotas com token de auditor, de RH e sem token, com logs serializados conferidos quanto ao usuário e à ausência do texto do filtro
regra. - Saída de
/metricsconferida depois de exercitar as rotas, comhttp_server_requestspara os templates/auditoria/eventose/auditoria/eventos/filtros. - Respostas validadas 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