Corrige a condição de reaproveitar registros de UnexpectedEvent - #1458
Merged
robertatakenaka merged 1 commit intoJul 27, 2026
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
O que esse PR faz?
Este PR ajusta o método de busca de registros na model
UnexpectedEventpara interromper a execução (early return) caso oitemou aactionnão sejam informados.Problema resolvido: Anteriormente, quando uma chamada passava
itemouactionnulos/falsy, a busca tentava encontrar registros existentes filtrando por(item=None, action=None). Isso fazia com que novos eventos inesperados e genéricos (sem item ou ação definidos) agrupassem-se e sobrescrevessem eventos antigos que também possuíam(None, None), em vez de registrarem cada evento de forma individual.Onde a revisão poderia começar?
A revisão deve começar diretamente no arquivo alterado:
tracker/models.py(no método de busca/avaliação dentro do modeloUnexpectedEvent).Como este poderia ser testado manualmente?
python manage.py shell).UnexpectedEventpassandoitem=Noneouaction=None.Noneimediatamente sem realizar a consulta de filtro(None, None)no banco de dados.itemouactione confirme que ambos foram salvos como instâncias separadas no banco, sem que o segundo sobrescreva o primeiro.itemeactionválidos e confirme que o comportamento de buscar e reutilizar/atualizar o registro existente continua funcionando normalmente.Algum cenário de contexto que queira dar?
Eventos do tipo
UnexpectedEventnem sempre possuem umitemouactionmapeados no momento em que ocorrem. Permitir que o filtro rodasse com valores nulos causava perda de histórico de eventos genéricos, pois o sistema entendia que "qualquer evento sem item/action" era uma atualização do evento anterior que também não tinha esses dados.Screenshots
N/A (alteração puramente de regra de negócio/back-end).
Quais são os tickets relevantes?
Referências
None/NULL.Segurança da informação (NSI.04)
Este PR manipula dados sensíveis ou pessoais (LGPD)?
Este PR altera autenticação, autorização, controle de acesso ou gerenciamento de sessão?
Este PR introduz, atualiza ou remove dependências de terceiros?
Sim — as novas dependências foram verificadas no SBOM/Trivy sem vulnerabilidades críticas/altas em aberto?
Verificado e aprovado
Pendente / vulnerabilidade aceita com justificativa:
Não
Este PR foi validado pelo pipeline de segurança (SonarQube / Trivy)?
Este PR concatena, monta ou executa comandos SQL, HTML ou JavaScript a partir de entrada externa?
Este PR expõe novos endpoints, telas ou serviços?
Algum segredo, senha, chave ou token está sendo adicionado ao código-fonte?