Commit graph

7 commits

Author SHA1 Message Date
49182ec9c6 newsletter: Unzustellbare Adressen aus beiden Empfängerlisten nehmen
newsletter:import-bounces liest eine Bounce-Liste und nimmt die betroffenen
Adressen aus jeder künftigen Mailstrecke. Wiederholte Zustellversuche an tote
Adressen kosten den Absenderruf — bei All-Inkl in Form von
554-Spam-Pattern-Ablehnungen — und der trifft zuerst die Magic Links, also
genau den Weg, über den Newsrooms künftig beansprucht werden sollen.

Es gibt zwei getrennte Empfängerlisten, und eine tote Adresse muss aus beiden
verschwinden: `users` als Grundmenge der internen Kampagnen und
`newsletter_subscriptions` als öffentliche Anmeldung auf den Portalen. Die
zweite hängt nicht am Konto — die meisten Einträge dort haben gar keinen User
und wären sonst gar nicht erreicht worden. Sie bekommt unsubscribed_at und
läuft durch den NewsletterSyncService, damit die Abmeldung auch beim externen
Versender ankommt. Als "ohne User-Konto" gilt eine Adresse erst, wenn sie in
keiner der beiden Listen steht.

Verglichen wird ohne Rücksicht auf Groß- und Kleinschreibung: Bounce-Listen
kommen aus dem Mailserver-Log und geben die Adresse so wieder, wie der Absender
sie geschrieben hat.

Die Rückläufer-Datei selbst bleibt lokal — sie enthält echte Adressen und
gehört wie die Alt-API-Logs nicht ins Repository.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-01 11:07:11 +00:00
665c94f162 docs: dev-Doku für den Live-Betrieb neu sortiert — Archiv + Betrieb + Roadmap
Das System ist seit 20.07.2026 live; die dev-Doku spiegelt jetzt den
Betriebszustand statt der Release-Vorbereitung:

- dev/betrieb/: Deploy-Runbook (neu: §10 Betrieb nach Go-Live mit
  SFTP-Deploy-Checkliste inkl. queue:restart-Pflicht und den
  Betriebs-Erkenntnissen der Go-Live-Woche), Legacy-API-Parität, Umami.
- dev/roadmap.md: offene Nachlauf-Punkte (Go-Live-Mails, Merge nach main,
  Stripe-Test-Artefakte, Key-Rotation, Alt-System-Abschaltung) und
  Ideen-Backlog.
- dev/archive/: abgeschlossene Phasen — Migration-2026-Planung,
  Cutover-Runbook (mit Erledigt-Vermerk), Release-Plan/QA-Checkliste,
  Optimierungsphasen, Frontend-Konzepte + Responsive-Audits vom 16.07.,
  Altsystem-Reste.
- dev/README.md als Wegweiser; gitignore-Pfad der SQL-Dumps mitgezogen
  (dev/archive/migration-2026/sql/ bleibt untracked, ebenso dev/migration/
  und dev/api/).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-21 07:52:38 +00:00
fef45733df API-Legacy-Paritaet: Arbeitsdokument mit Alt-Vertrag, Log-Auswertung, Schrittplan
- Alt-Vertrag komplett aus dem Symfony-Code extrahiert (Routen, Params
  verschachtelt, Response-Shapes, Sofort-Publish-Logik, Fehlerformat)
- Prod-Logs (dev/api, User) ausgewertet: ein Client (connektar),
  5 Endpoints; Company-/Kontakt-Create heute 410 -> muessen nachgebaut
  werden; Sofort-Publish beim POST belegt
- Entscheidungen 10.07.: Sofort-Publish + Admin-Schalter KI-Pruefung,
  getrennte Legacy-/v1-API, Ablehnungs-Rueckkanal spaeter
- dev/api/ enttrackt (.gitignore, Produktivdaten analog SQL-Dumps)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 13:40:24 +00:00
b53af924ff Produktiv-SQL-Dumps enttrackt (Security-Review-Befund R6.2)
dev/migration 2026/sql/ enthaelt echte Kundendaten aus den Altportalen —
per git rm --cached enttrackt und ignoriert; die Dateien bleiben lokal
liegen (Import-Rehearsal R6.3 braucht sie). Entscheidung 06.07.2026:
ohne History-Bereinigung, solange das Repo privat bleibt. docs/legal/
(Rechtstext-Quellen, Arbeitsstand des Users) ebenfalls ignoriert.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 13:36:47 +00:00
0a3e52d603 19-05-2026 Rebrand Pressekonto, Hub-Flux UI und Legacy-Media-Migration
Umbenennung presseportale → pressekonto in Domains, Themes und Dokumentation.
Design-Tokens, Portal-Shell, Customer-Dashboard, Auth- und Admin-PM-Views.
Artisan-Befehl migrate:legacy-media mit Tests und Hub-Flux-Entwicklungsdocs.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-19 16:36:13 +00:00
5b8bdf4182 12-05-2026 Frontend dev
Some checks are pending
linter / quality (push) Waiting to run
tests / ci (push) Waiting to run
2026-05-12 18:32:33 +02:00
405df0a122 first commit
Some checks failed
linter / quality (push) Has been cancelled
tests / ci (push) Has been cancelled
2025-10-20 17:53:02 +02:00