Wiki

Gewinner-Ziehung

Atomische, auditierbare Losverfahren mit Snapshot der Teilnehmer und E-Mail-Benachrichtigung.

Gewinner-Ziehung

Das Modul Gewinner-Ziehung losst aus dem Pool der Teilnehmer einer Kampagne automatisch eine gewünschte Anzahl Gewinner aus — transparent, nachvollziehbar und rechtskonform (Audit-Snapshot des Teilnehmer-Pools zum Ziehungszeitpunkt).

Ziehung anstoßen

Auf der Edit-Seite einer Kampagne findest du die Liste „Ziehungen". Dort legst du eine neue Ziehung an:

FeldBeschreibungBeispiel
winner_countAnzahl der Gewinner (1–50)3
door_idOptional: Ziehung nur unter Teilnehmern eines bestimmten TürchensTürchen 24
notesInterne Notiz (z. B. „Hauptpreis Fernseher")„Gewinn: Samsung 55"

Wie wird gezogen?

  1. Alle in Frage kommenden Teilnehmer (Gesamtkampagne oder gefiltert nach Türchen) werden in einer Transaktion eingesammelt.
  2. Per Fisher-Yates-Shuffle (auf random_int basierend — kryptografisch belastbar) werden die Gewinner gezogen.
  3. Der komplette Pool (Liste der Teilnehmer-IDs, die in Frage kamen) wird als JSON-Snapshot in participant_pool gespeichert — so ist die Ziehung später reproduzierbar und prüfbar.
Wichtig: Eine Ziehung ist unwiderruflich. Wenn du Gewinner aussortieren musst (z. B. wegen Verweigerung), markiere sie im Admin als disqualifiziert und ziehe ggf. einen Ersatzgewinner über eine neue Ziehung.

Gewinner benachrichtigen

Der Button „Benachrichtigen" neben jeder Ziehung verschickt eine E-Mail an alle noch nicht benachrichtigten Gewinner (notified_at IS NULL). Du kannst einen freien Zusatztext mitgeben, der unter der Standardnachricht erscheint.

Beispiel-Zusatztext:
„Bitte melde dich bis spätestens 31. Dezember bei uns unter gewinn@example.com, um deinen Preis zu reklamieren. Nach Ablauf der Frist verfällt der Anspruch."

Typischer Ablauf

  1. Kampagne läuft, Teilnehmer sammeln sich
  2. Kampagne endet (ends_at erreicht)
  3. Du öffnest Ziehungen, legst eine Ziehung mit winner_count = 3 an
  4. System zieht drei Gewinner atomar
  5. Du klickst „Benachrichtigen" — die drei bekommen die E-Mail
  6. In der Liste stehen nun Name, E-Mail und Zeitpunkt notified_at pro Gewinner

Mehrere Preise, unterschiedliche Pools

Du kannst pro Kampagne beliebig viele Ziehungen anlegen. Beispiel:

  • Hauptpreis: Ziehung über alle Teilnehmer, winner_count=1
  • Tagespreise: Pro Türchen eine Ziehung mit door_id, winner_count=1
  • Trostpreise: Eine weitere Ziehung mit winner_count=10

Jede Ziehung speichert ihren eigenen Pool-Snapshot, sodass sich die Listen nicht beeinflussen.