Notificação enviada para hábito deletado
O que aconteceu
Usuários estavam recebendo push notifications de hábitos que já haviam deletado. O sistema continuava enviando notificações normalmente, como se o hábito ainda existisse.
Causa raiz
O service de notificações filtrava execuções pelo campo habit__status='active'. Quando um hábito é deletado, apenas o campo deleted_at é preenchido — o status permanece 'active'. O Django, ao fazer o join via FK na query, acessa a tabela diretamente e não passa pelo manager customizado de soft-delete do model Habit. Por isso, hábitos deletados continuavam sendo incluídos na consulta.
Correção
Adicionado habit__deleted_at__isnull=True ao filtro da query em HabitNotificationService.send_pending_notifications().
Como evitar
Sempre que uma query filtrar um model relacionado via join de FK, e esse model usar soft-delete (BaseModel), adicionar explicitamente <relação>__deleted_at__isnull=True ao filtro. O manager customizado não é aplicado em joins — só em queries diretas no model.