Skip to content

refactor(messaging): unificar envio de e-mails via EmailConsumer e remover BackgroundTasks redundantes - #147

Merged
NdondaDaniel2020 merged 6 commits into
mainfrom
refactor/issue-146-unify-email-consumer
Aug 28, 2026
Merged

NdondaDaniel2020 merged 6 commits into
mainfrom
refactor/issue-146-unify-email-consumer

Conversation

@NdondaDaniel2020

Copy link
Copy Markdown
Owner

🎯 Contexto e Motivação

Esta PR implementa a resolução da Issue #146, unificando 100% dos disparos de e-mail na arquitetura orientada a eventos (EDA) através do EmailConsumer, eliminando o mecanismo legado e acoplado de BackgroundTasks do FastAPI nas rotas de autenticação.


🏗️ O Que Foi Modificado

  1. Camada de Eventos (app/messaging/events/):

    • Adicionada a constante AuthEvents.EMAIL_VERIFICATION_REQUESTED = 'auth.email_verification_requested'.
    • Criada a dataclass tipada EmailVerificationRequestedEvent(DomainEvent).
  2. Schemas e Notificações (app/schemas/notification.py e app/services/notification_service.py):

    • Adicionado o schema EmailVerificationRequestedPayload.
    • Adicionado o factory helper create_verification_requested_email.
  3. Consumidor Dedicado (app/messaging/consumers/email_consumer.py):

    • O EmailConsumer agora consome centralmente os eventos AuthEvents.PASSWORD_RESET_REQUESTED e AuthEvents.EMAIL_VERIFICATION_REQUESTED, delegando o envio para email_service com retentativas automáticas (backoff exponencial) e proteção de Dead-Letter Queue (DLQ) no Redis (events:dlq).
  4. Desacoplamento de Rotas e Serviços (app/services/auth_service.py e app/api/routers/auth.py):

    • Removida a dependência BackgroundTasks das rotas POST /api/auth/password-reset/request e POST /api/auth/verify-email/resend.
    • Removidas as funções intermediárias request_password_reset_bg e resend_verification_email_bg, eliminando a abertura manual de sessões de banco em background (session_factory()).
    • Os serviços agora emitem os eventos de domínio diretamente no EventBus.
  5. Testes & Qualidade:

    • Atualizados testes unitários e de integração para validar a emissão de eventos e o consumo via EmailConsumer.
    • Testes passando 100% (433 passed).
    • Linters e tipagem validados (ruff e mypy 100% limpos).

Closes #146

…mover BackgroundTasks redundantes

- adicionado evento tipado EmailVerificationRequestedEvent e constante AuthEvents.EMAIL_VERIFICATION_REQUESTED

- implementado processamento de e-mails de reset de senha e verificacao no EmailConsumer

- removido BackgroundTasks das rotas de autenticacao e eliminadas funcoes _bg com sessoes manuais de banco

- atualizada suite de testes para validar o fluxo 100% orientado a eventos (EDA) com pytest, ruff e mypy 100% green
@vercel

vercel Bot commented Aug 28, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
auth Ready Ready Preview Aug 28, 2026 6:54pm

@NdondaDaniel2020
NdondaDaniel2020 merged commit 2a1bcc8 into main Aug 28, 2026
9 checks passed
@NdondaDaniel2020 NdondaDaniel2020 self-assigned this Aug 28, 2026
@NdondaDaniel2020
NdondaDaniel2020 deleted the refactor/issue-146-unify-email-consumer branch August 29, 2026 21:01

This branch was successfully deployed

1 active deployment
Preview — 163c38ed Deployed Aug 28, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

refactor(messaging): unificar envio de e-mails via EmailConsumer e remover BackgroundTasks redundantes

1 participant