Notificação automática de atualização de tabelas por e-mail
Contexto
Precisamos de um fluxo completo que permita:
- Usuários se inscreverem para receber notificações quando uma tabela for atualizada
- Controle administrativo das inscrições via Django Admin
- Verificação automática de atualizações em tabelas monitoradas
- Envio de notificações por e-mail de forma agrupada e não redundante
- Execução automática do processo em produção
O fluxo utiliza o model TableUpdateSubscription como fonte de verdade e centraliza a lógica de envio em um comando Django, acionado manualmente ou por rotina agendada.
Objetivos
- Criar e estruturar o model
TableUpdateSubscription
- Disponibilizar interface administrativa para gestão das inscrições
- Implementar lógica de verificação de atualizações de tabelas
- Agrupar notificações por usuário
- Enviar e-mails utilizando template HTML
- Atualizar o estado da inscrição após notificação enviada
- Centralizar lógica em um management command
- Criar rotina automática de execução (Huey + cron)
- Garantir observabilidade e controle via logs e admin
Tasks
Observações
- O Django Admin permite ativar/desativar subscriptions sem necessidade de acesso ao banco
- Um único e-mail é enviado por usuário, mesmo com múltiplas tabelas atualizadas
- A rotina agendada apenas dispara o command, mantendo a lógica centralizada
- O campo
deactivate_at permite futura extensão para histórico de cancelamentos
- Estrutura preparada para expansão futura (ex: notificações in-app, webhook, push)
Notificação automática de atualização de tabelas por e-mail
Contexto
Precisamos de um fluxo completo que permita:
O fluxo utiliza o model
TableUpdateSubscriptioncomo fonte de verdade e centraliza a lógica de envio em um comando Django, acionado manualmente ou por rotina agendada.Objetivos
TableUpdateSubscriptionTasks
Criar model
TableUpdateSubscriptionTableAccountcreated_at,deactivate_at,last_notification,updated_at,status)Registrar model no Django Admin
Configurar Admin personalizado:
list_displaycom campos relevantesImplementar lógica de verificação de atualização da tabela
Considerar apenas subscriptions ativas (
status=True)Comparar
table.last_updated_atcomsubscription.updated_atAgrupar subscriptions por usuário para evitar múltiplos e-mails
Implementar envio de e-mail:
update_table_notification.html)Atualizar
last_notificationapós envioSincronizar
subscription.updated_atcomtable.last_updated_atCriar comando Django
send_notificationCentralizar lógica de envio no command
Criar tarefa periódica com Huey (
@db_periodic_task)Configurar execução automática:
Proteger execução com
@production_taskCriar fluxograma de execução para documentação no PR
Observações
deactivate_atpermite futura extensão para histórico de cancelamentos