Mermaid-Beispiel: Brevo→Communi-Pipeline
Demonstriert Mermaid-Rendering in der Gitea-Web-Ansicht (flowchart TD + LR, Tabelle). Ergänzt monitoring-datenfluss.md. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
43
brevo-communi-pipeline.md
Normal file
43
brevo-communi-pipeline.md
Normal file
@@ -0,0 +1,43 @@
|
||||
# Brevo Newsletter → Communi App
|
||||
|
||||
Automatische Übernahme der CK-Newsletter aus Brevo in den Communi-News-Feed.
|
||||
|
||||
## Ablauf (Webhook-Pipeline)
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
Brevo[Brevo Newsletter-Versand]
|
||||
WH["brevo-webhook · VPS<br/>(Container, Port 8055)"]
|
||||
Seen{"camp_id schon<br/>in seen_campaigns.json?"}
|
||||
Fetch["Kampagne via<br/>/emailCampaigns/{camp_id} holen"]
|
||||
Conv["HTML → Markdown<br/>Format: 📰 {Typ} · {Betreff}"]
|
||||
Communi["Communi API · /recommendation<br/>Gruppe 88531 · isOfficial"]
|
||||
|
||||
Brevo -->|"Webhook: Event 'Zugestellt'<br/>(liefert camp_id)"| WH
|
||||
WH --> Seen
|
||||
Seen -->|ja| Skip["200 skipped<br/>kein API-Call"]
|
||||
Seen -->|nein| Fetch
|
||||
Fetch --> Conv
|
||||
Conv --> Communi
|
||||
WH -.antwortet IMMER 200.-> Brevo
|
||||
```
|
||||
|
||||
## Verteiler (Brevo-Listen-IDs)
|
||||
|
||||
| Newsletter | Brevo-Liste | Communi-Gruppe |
|
||||
|---|---|---|
|
||||
| GemeindeNewsletter | 198 (Gemeinderundmail) | 88531 |
|
||||
| Regionalnewsletter | 89 (Regional-NL SCK) | 88531 |
|
||||
|
||||
## Schutzmechanik
|
||||
|
||||
```mermaid
|
||||
flowchart LR
|
||||
A["'Zugestellt' feuert<br/>pro Empfänger (~150x)"] --> B{Idempotenz<br/>pro camp_id}
|
||||
B -->|1. Mal| C[verarbeiten + posten]
|
||||
B -->|"2..n"| D[verwerfen]
|
||||
C --> E["Fehler? → ntfy-Alert<br/>(nie HTTP 500)"]
|
||||
```
|
||||
|
||||
> Hinweis: Idempotenz keyt auf `camp_id` (nicht Event-`id`) — sonst 1 Post pro Empfänger.
|
||||
> Webhook antwortet immer 200, damit Brevo keinen Retry-Sturm auslöst.
|
||||
Reference in New Issue
Block a user