Skip to content

feat(historico): coluna de empresa nas últimas execuções - #36

Merged
net0well merged 1 commit into
mainfrom
feat/coluna-de-empresa-no-historico
Jul 29, 2026
Merged

net0well merged 1 commit into
mainfrom
feat/coluna-de-empresa-no-historico

Conversation

@net0well

Copy link
Copy Markdown
Owner

O histórico intercala empresas, e a tela mostrava data, duração, resultado e mensagem sem dizer a qual cadastro cada linha pertencia. Duas execuções do mesmo minuto, uma concluída e outra bloqueada por consumo indevido, eram indistinguíveis.

A leitura sai do repositório e passa para o lado de consultas, junto às demais projeções: o nome exige uma junção com empresas, e o repositório entrega entidades de sincronização, que não conhecem o cadastro. ObterUltimasAsync some do repositório porque era o único uso, e ExecucaoSincronizacao ganha um DbSet como as demais entidades consultadas por nome.

A junção ignora os filtros globais. A execução de uma empresa inativada continua no histórico e é justamente a que explica por que a captura dela parou; sem isso a linha viria sem nome.

DuracaoSegundos deixa de ser campo e vira propriedade derivada dos dois instantes. A subtração de dois timestamptz devolve um intervalo que o provedor não converte para segundos na projeção, e o valor já estava determinado pelos campos que o DTO carrega. O contrato HTTP não muda: o serializador continua emitindo o campo.

Correção na fixture de teste

O TRUNCATE do PostgresFixture não incluía execucoes_sincronizacao, e o CASCADE não a alcança: a tabela não tem chave estrangeira para empresas, de propósito, para que o histórico sobreviva à exclusão do cadastro. As execuções de um teste vazavam para o próximo como linhas órfãs, e a junção as devolvia sem nome — o que fez dois destes testes falharem por resíduo, não por defeito no código sob teste.

O histórico intercala empresas, e a tela mostrava data, duração, resultado e mensagem sem
dizer a qual cadastro cada linha pertencia. Duas execuções do mesmo minuto, uma concluída e
outra bloqueada por consumo indevido, eram indistinguíveis.

A leitura sai do repositório e passa para o lado de consultas, junto às demais projeções: o
nome exige uma junção com `empresas`, e o repositório entrega entidades de sincronização, que
não conhecem o cadastro. `ObterUltimasAsync` some do repositório porque era o único uso, e
`ExecucaoSincronizacao` ganha um `DbSet` como as demais entidades consultadas por nome.

A junção ignora os filtros globais. A execução de uma empresa inativada continua no histórico
e é justamente a que explica por que a captura dela parou; sem isso a linha viria sem nome.

`DuracaoSegundos` deixa de ser campo e vira propriedade derivada dos dois instantes. A
subtração de dois `timestamptz` devolve um intervalo que o provedor não converte para segundos
na projeção, e o valor já estava determinado pelos campos que o DTO carrega. O contrato HTTP
não muda: o serializador continua emitindo o campo.

Correção na fixture de teste

O `TRUNCATE` do `PostgresFixture` não incluía `execucoes_sincronizacao`, e o `CASCADE` não a
alcança: a tabela não tem chave estrangeira para `empresas`, de propósito, para que o
histórico sobreviva à exclusão do cadastro. As execuções de um teste vazavam para o próximo
como linhas órfãs, e a junção as devolvia sem nome — o que fez dois destes testes falharem por
resíduo, não por defeito no código sob teste.
@net0well
net0well merged commit 4d96b4a into main Jul 29, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant