Merged
Conversation
1e2c656 to
299ede1
Compare
29 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
feat: init app user_notifications #961
Este PR implementa o fluxo completo de notificação por e-mail para usuários inscritos em atualizações de tabelas, incluindo modelagem, interface administrativa, comando Django, envio de e-mails e execução automática via tarefa agendada.
📌 Contexto
Usuários podem se inscrever para acompanhar atualizações de tabelas específicas. Quando uma tabela é atualizada, o sistema deve identificar essas mudanças e notificar os usuários por e-mail, evitando envios duplicados e permitindo controle administrativo das inscrições.
A solução centraliza a lógica em um comando Django reutilizável, que pode ser executado manualmente ou automaticamente em produção.
🔄 Fluxograma do fluxo de notificação
✅ O que foi implementado
1. Modelagem de domínio
Criação do model
TableUpdateSubscription, responsável por:Account) e tabela (Table)Base para rastreabilidade, controle e futuras extensões (ex: histórico, soft-delete).
2. Interface administrativa (Django Admin)
Registro do model no Django Admin com configuração personalizada:
list_display)fieldsetsreadonlyPermite gestão completa das inscrições sem acesso direto ao banco.
3. Verificação de atualizações
Implementação de lógica para verificar se:
table.last_updated_até mais recente quesubscription.updated_atApenas inscrições ativas (
status=True) são consideradas.Subscriptions com atualização são separadas para notificação.
4. Agrupamento por usuário
5. Envio de e-mails
Envio utilizando
EmailMultiAlternatives, com:update_table_notification.html)Após o envio:
last_notificationsubscription.updated_atcomtable.last_updated_at6. Management Command
Criação do comando Django
send_notification, responsável por:Pode ser executado manualmente para testes locais ou troubleshooting.
7. Execução automática (Huey + cron)
Criação de tarefa periódica com
@db_periodic_taskAgendada para rodar:
Protegida pelo decorator
@production_taskA tarefa apenas dispara o command, mantendo a lógica centralizada e reutilizável.
🎯 Benefícios