2026-05-15
v0.9.1 — Correções internas: cron de vínculo de afiliado, observabilidade e ordenação de cobranças
Patch sem mudanças visíveis na API ou no dashboard. Tudo aqui é correção de comportamento interno que já deveria estar funcionando.
A tarefa diária que marca vínculos de afiliado vencidos como expired estava lançando EntityMetadataNotFoundError desde 2026-01-14 — a entidade CustomerAffiliateBond não havia sido carregada pelo DataSource do TypeORM. O resultado prático: vínculos venciam de fato (a data expires_at passava), mas o status permanecia active, inflando contagens no dashboard de afiliado.
A causa raiz era uma duplicação clássica de NestJS: a entidade aparecia em TypeOrmModule.forFeature(...) mas tinha sido esquecida no array entities do forRoot(). Em vez de remediar caso a caso (e correr o mesmo risco no próximo entity novo), habilitamos autoLoadEntities: true — toda entidade registrada via forFeature() agora é descoberta automaticamente.
A correção também elimina dois outros casos latentes do mesmo erro (ScheduledChargeCycleAttempt, TransactionIdempotency e outros que ainda não tinham sido exercidos em produção).
GlobalExceptionFilter registrado como APP_FILTERO filtro global de exceções estava sendo registrado fora do ciclo de DI do Nest, então erros de providers e guards não eram capturados pelo Sentry. Agora ele é registrado via APP_FILTER, garantindo cobertura completa.
orderBy em tentativas de cobrança usa nomes de propriedade da entidadeGET /api/scheduled-charges/:id/attempts estava ordenando por nomes de coluna SQL diretos, o que falhava em alguns drivers. A ordenação passou a usar os nomes de propriedade da entidade TypeORM.
Nenhuma. Patch puro de correção. Séries existentes e vínculos antigos são reprocessados na próxima execução do cron normalmente.