Feature: Referral-System — User wirbt User

- DB: referral_code (8-stellig, eindeutig) + referred_by zu users
  Bestehende User erhalten automatisch einen Code
- GET /api/auth/referral: Code, Link und Anzahl geworbener User
- POST /api/auth/register: ref_code Parameter für Zuordnung
- Settings: 'App empfehlen'-Karte mit Link, Teilen-Button und Botschafter-Badges
  (Botschafter ab 1, Super ab 5, Top ab 10 Einladungen)
- app.js: ?ref=CODE aus URL in sessionStorage speichern
- APP_VER 222, SW by-v244
This commit is contained in:
rene 2026-04-19 11:09:24 +02:00
parent 82d9e26823
commit 6d757b86c2
6 changed files with 121 additions and 7 deletions

View file

@ -834,3 +834,17 @@ def _migrate(conn_factory):
CREATE INDEX IF NOT EXISTS idx_walk_inv_user ON walk_invitations(user_id, status);
""")
logger.info("Migration: walk_invitations Tabelle bereit.")
# Referral-Code für jeden User (einmalig generiert)
try:
conn.execute("ALTER TABLE users ADD COLUMN referral_code TEXT UNIQUE")
conn.execute("ALTER TABLE users ADD COLUMN referred_by INTEGER REFERENCES users(id)")
# Bestehende User bekommen einen Code
import secrets, string
rows = conn.execute("SELECT id FROM users WHERE referral_code IS NULL").fetchall()
for r in rows:
code = ''.join(secrets.choice(string.ascii_uppercase + string.digits) for _ in range(8))
conn.execute("UPDATE users SET referral_code=? WHERE id=?", (code, r['id']))
logger.info("Migration: referral_code + referred_by zu users hinzugefügt.")
except Exception:
pass