expiresAt é alcançado.
Objetivo
A rotina mantém CreditGrant e CreditLedgerEntry alinhados com a validade do crédito.Execução
Ao rodar, a rotina:- Busca créditos com
status = ACTIVEeexpiresAtvencido. - Calcula o saldo disponível remanescente.
- Cria uma entrada
CreditLedgerEntrydo tipoEXPIREquando houver valor disponível a baixar. - Atualiza o CreditGrant para
status = EXPIRED.
Regras
| Regra | Comportamento |
|---|---|
| Validade | expiresAt define o fim de validade do crédito. |
| Ledger | Expiração que altera saldo deve gerar movimento EXPIRE. |
| Reservas | Reservas pendentes precisam ser tratadas antes de baixar o saldo disponível. |
| Estados terminais | Créditos EXPIRED, CONSUMED ou CANCELED não são processados. |
| Idempotência | A chave de idempotência evita duplicar movimento de expiração. |