14-16 Mar 2026
Logica do Sistema

ApiStatus — Monitoramento Galileu

Secao 9

Logica e Retencao

Entidade ApiStatus: TenantId, Status (ApiStatusEnum: Online/Offline), Data (DateTime).

Insercao: ProcessarOfertasWorker (via ProcessarTenant) insere um registro apos cada ciclo bem-sucedido ou de falha.

Volume estimado: ~288 registros/dia/tenant (ciclo de 5 min, 24h). Com 22 tenants: ~6.336 registros/dia, ~2,3 milhoes/ano.

Retencao — duplicada (incoerencia):

  1. RegistrarOfertasWorker.cs linha 99: apaga registros mais antigos que 4 meses via HardDeleteAsync, carregando todos em memoria antes de deletar.
  2. RetentionPolicyWorkerApiStatusRetentionTask.cs linha 25: HardDeleteAsync(x => x.Data < DateTime.UtcNow.AddMonths(-4)) — deleta por predicado sem paginacao.

Dois workers realizam o mesmo cleanup, potencialmente em colisao.


Incoerencias Identificadas

IDDescricao
(escalabilidade)Retencao duplicada entre RegistrarOfertasWorker e RetentionPolicyWorker
(escalabilidade)HardDeleteAsync no RegistrarOfertasWorker carrega todos os registros em memoria
(escalabilidade)Crescimento de ~2.3M registros/ano sem indice em (TenantId, Data)