Skip to content

Notificação automática de atualização de tabelas por e-mail #980

Description

@Winzen

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

  • Criar model TableUpdateSubscription

    • Relacionamento com Table
    • Relacionamento com Account
    • Campos de controle e auditoria (created_at, deactivate_at, last_notification, updated_at, status)
  • Registrar model no Django Admin

  • Configurar Admin personalizado:

    • list_display com campos relevantes
    • Filtros por status, tabela e usuário
    • Busca por nome da tabela e username
    • Edição inline do status
    • Organização visual por fieldsets
    • Campos readonly para datas de criação
  • Implementar lógica de verificação de atualização da tabela

  • Considerar apenas subscriptions ativas (status=True)

  • Comparar table.last_updated_at com subscription.updated_at

  • Agrupar subscriptions por usuário para evitar múltiplos e-mails

  • Implementar envio de e-mail:

    • Texto simples
    • Template HTML (update_table_notification.html)
  • Atualizar last_notification após envio

  • Sincronizar subscription.updated_at com table.last_updated_at

  • Criar comando Django send_notification

  • Centralizar lógica de envio no command

  • Criar tarefa periódica com Huey (@db_periodic_task)

  • Configurar execução automática:

    • Segunda a sexta-feira
    • 07:00
  • Proteger execução com @production_task

  • Criar fluxograma de execução para documentação no PR


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)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions