newsletter — compilação semanal via Resend¶
TL;DR¶
Compila os artigos elegíveis da semana e envia newsletter via Resend na sexta, respeitando contatos assinantes, warm-up, compliance e dedup.
Identidade¶
- Path:
pipeline/newsletter_generate.py - Execução: cron semanal; não roda no trigger on-demand
- Provider: Resend
- Fonte:
published_posts+public.contacts
Fluxo¶
- seleciona posts ainda não incluídos na janela semanal;
- monta digest e HTML do tenant;
- carrega contatos
status=subscribed; - aplica cap de warm-up e priorização;
- envia com tags de tenant, contato e post;
- grava logs/dedup e marca
newsletter_includedsomente após processamento.
Regras¶
- Newsletter não entra no trigger on-demand; o 202 deve devolver aviso.
- Não marcar posts antes de concluir a compilação/dispatch.
- Falhas transitórias precisam permanecer retomáveis.
- Bounce/complaint suprimem envios futuros.
- Sender, domínio e endereço vêm de
config.email.
Validação¶
pytest -q tests/test_newsletter_window.py \
tests/test_dev477_newsletter_channel_ignored.py \
tests/test_dev496_seinfeld_backlog_newsletter_feedback.py
Troubleshooting¶
| Sintoma | Verificar |
|---|---|
| sexta sem envio | cron, timezone, posts elegíveis e contatos assinantes |
| duplicação | newsletter_included e logs idempotentes |
| baixa audiência | status dos contatos e cap de warm-up |
| eventos sem post | tags do envio e fallback Resend |