cdr_submit parte 1 é o único registro por mensagem do que foi cobrado, e é deletado assim que
passa da janela de retenção.
Sem um resumo, isso significa que nenhum statement mais antigo que a janela pode jamais ser reemitido,
e o lado de consumo de toda reconciliação desaparece. Portanto, toda account envelhecida deriva para
uma discrepância que nada pode explicar.
usage_daily é esse resumo
Uma linha por account, por product, por dia.
Diário em vez de mensal para que qualquer período seja um SUM sobre dias — um mês do calendário, um
trimestre, um from/to arbitrário — para sempre, sem uma segunda tabela derivada para discordar dele.
Cifras faturáveis são finais; cifras de entrega não
É isso que torna o rollup seguro para re-rodar.
O rollup é idempotente e reformula apenas as colunas de entrega. O dinheiro de um dia terminado
é liquidado no momento em que o dia termina.
Um dia de billing é um dia local
FIREFLO_BILLING_ZONE decide onde um dia começa, e é lido de app_config para que o rollup e o
painel concordem.
O purge se recusa a deletar o que nada resumiu
usage_daily, ele recusa a execução inteira
e nomeia os dias.
Não é um warning e não é um skip. Deletar um dia não resumido destrói o registro de consumo
permanentemente, e isso precisa ser estruturalmente impossível em vez de uma questão de rodar as
coisas na ordem certa.
FIREFLO_CDR_KEEP_DAYS define a janela, default 90.
Duas janelas, dois propósitos
cdr_interim é podado em sua própria janela mais curta precisamente porque responde a uma pergunta
sobre tráfego recente: quão rápido um vendor reporta, e se reporta ou não.
Uma política de retenção não é opcional
Call records contêm endereços — precisam conter, porque rating e resolução de disputa precisam deles. Se a gravação do corpo da mensagem está ligada, contêm conteúdo também.Uma ordem de operações que funciona
1
Configure a billing zone antes de qualquer tráfego
Ela decide onde toda fronteira de dia cai.
2
Faça rollup noturnamente
fireflo usage rollup --catch-up, em um agendamento.3
Verifique se o rollup cobre a janela antes de purgar
O purge verifica isso ele mesmo e recusa. Mas saber que passou é melhor do que descobrir que
recusou.
4
Purge em seu próprio agendamento
Atrás de
FIREFLO_CDR_PURGE=true, que existe para que não aconteça por acidente.Relacionado
Call records
As três tabelas e o que cada coluna significa.
Statements
Fechando um período e emitindo uma fatura.