Push do áudio diário: fonte única de verdade
O que aconteceu
Usuários recebiam de 2 a 4 push notifications duplicadas do áudio diário no mesmo dia.
Causa raiz
Dois caminhos independentes criavam notificações send_to_all=True para o mesmo dia:
- O signal de
post_savedeAudiocriava uma noavailable_time(quando o áudio era salvo) - A task do Celery Beat criava outra no
push_time(o horário de envio configurado, default 07:00)
Correção
O signal de post_save de Audio não cria mais push notifications. Apenas enqueue_daily_audio_push (Celery Beat, a cada 60s) é responsável por criar a push do áudio diário.
- Signal
on_audio_save: apenas invalida a chave de cache"audio_daily" - Task
enqueue_daily_audio_push: única criadora daNotificationdo push diário. É idempotente vialast_push_sent_onemDailyAudioSettings
Como evitar
Para qualquer envio diário/agendado, manter um único produtor. Se um signal e uma task periódica podem produzir o mesmo efeito, o signal cuida só de invalidação de cache e a task periódica é a dona do envio — com controle de idempotência persistido.