Feature: Partner-Dashboard (#partner-dashboard) — operative Daten raus aus dem Profil-Editor
Rene: QR-Stats gehören nicht ins öffentliche Profil, eigene Seite fehlte.
Neue Seite 'Partner-Bereich' (Welten-Chip 🤝 zwischen Moderation und Admin,
role:partner — sichtbar für is_partner + Admin; _mergeDefaults reicht den
Chip an bestehende Welt-Configs nach):
- Einladungscode groß + Link-kopieren-Button
- Kacheln: Registrierungen gesamt / diesen Monat / unbestätigt
- QR-Kontingente mit Einzel-Code-Status (aus partner-profil.js hierher verschoben)
- Profil-Status-Karte (Entwurf/Prüfung/frei) mit Sprung zum Editor
Backend: GET /partner/my-stats (Codes mit Zahlen + Profil-Status).
Settings-Partner-Karte: zwei Buttons (Partner-Bereich primär, Profil sekundär);
Dank-Mail-CTA zeigt auf #partner-dashboard. Suite: 52 passed.
This commit is contained in:
parent
3d7d5dc1c4
commit
0a262989f3
12 changed files with 287 additions and 96 deletions
|
|
@ -215,3 +215,12 @@ def test_partner_self_service_qr(client, admin, user):
|
|||
assert first["first_registration_at"]
|
||||
r = client.get("/api/partner/my-qr", headers=user["headers"])
|
||||
assert r.json()[0]["codes_used"] == 1
|
||||
|
||||
# Dashboard-Stats: eigener Code mit Zahlen + Profil-Status
|
||||
r = client.get("/api/partner/my-stats", headers=user["headers"])
|
||||
assert r.status_code == 200
|
||||
d = r.json()
|
||||
mycode = [c for c in d["codes"] if c["id"] == code["id"]][0]
|
||||
assert mycode["registrations"] == 1
|
||||
assert mycode["registrations_month"] == 1
|
||||
assert "approved" in d["profile"]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue