No description
Find a file
rene f604ab7c4f Feature: QR-Kontingente für Partner — Bestellung, Übergabe, Rückverfolgung
Partner verteilen gedruckte QR-Codes (Sticker/Flyer); jeder physische Code
ist einzeln rückverfolgbar von Scan bis Registrierung.

Backend:
- partner_qr_batches + partner_qr_codes (Token 8-stellig, ohne 0/O/1/l/I),
  users.referred_qr, partner_codes.owner_user_id (+Backfill über referred_by)
- /q/{token}: Scan zählen (scans, first/last_scan_at) → Redirect
  /?ref=CODE&qr=TOKEN — dockt am bestehenden Referral-Flow an
- Registrierung: qr_token wird nur zugeordnet, wenn er zum eingelösten
  Partner-Code gehört (Manipulationsschutz)
- Admin: Kontingent bestellen (max 500), Liste mit Scans/Registrierungen,
  Löschen (Zweiklick), druckfertiges A4-PDF (segno+fpdf2, 3×4 Grid mit
  Kurz-URL + laufender Nummer), Code-Besitzer zuordnen
- Partner-Self-Service: /partner/my-qr (+PDF) für Code-Besitzer

Frontend:
- Admin-Partner-Tab: Karte 'QR-Kontingente' (Bestellung, Stats, PDF, Besitzer)
- Partner-Profil: 'Meine QR-Codes' mit Scans/Registrierungen + PDF-Download
- boot.js/app.js speichern ?qr=, Registrierung schickt qr_token mit

Neu: segno==1.6.6 (pure-python QR). Tests: 5 neue (PDF, Scan-Zählung,
Attribution, Fremd-Token-Schutz, Self-Service). Suite: 51 passed.
2026-06-07 18:20:23 +02:00
backend Feature: QR-Kontingente für Partner — Bestellung, Übergabe, Rückverfolgung 2026-06-07 18:20:23 +02:00
diary Sprint 15: Suche, Ausweis, Teilen, Widget 2026-04-17 15:51:09 +02:00
docs DWD-Plan: Umsetzungsstand dokumentiert (Staging v1240, Cron + Geraetetest offen) 2026-06-06 18:13:30 +02:00
flyer Marketing-Cockpit (MARKETING.md) + Flyer (HTML-Quellen & Print-PDFs); unsplash/ ignoriert 2026-06-03 17:24:47 +02:00
promotion Marketing-Cockpit (MARKETING.md) + Flyer (HTML-Quellen & Print-PDFs); unsplash/ ignoriert 2026-06-03 17:24:47 +02:00
reports Reports 2026-05-01 — Quartalsbericht 2026-05-01 08:07:41 +02:00
scripts Feature: Generische Seiten-Hilfe (UI.pageInfo), POI Multi-Select, Tagessprüche-DB (SW by-v654) 2026-05-03 20:10:01 +02:00
tests Feature: QR-Kontingente für Partner — Bestellung, Übergabe, Rückverfolgung 2026-06-07 18:20:23 +02:00
tiles Tiles-Progress: Stufe 4 zeigt echte planetiler-Phase statt Müll-ETA 2026-06-05 17:21:08 +02:00
tools DWD-PoC: Binaer-Artefakte aus dem Repo (nur decode_poc.py bleibt) 2026-06-06 18:34:41 +02:00
.env.example ki: Port 11435, Modell gemma-4-31b-it (LM Studio 0.4.x) 2026-04-24 18:15:32 +02:00
.gitignore Tiles: Fortschritts-Snapshot-Skript (Stufe/Balken/ETA) für Build-Monitoring + .gitignore 2026-06-05 16:50:52 +02:00
docker-compose.dwd.yml DWD-Compose: container_name entfernt — Staging+Prod teilen den Docker-Host (Namenskonflikt) 2026-06-06 18:33:05 +02:00
docker-compose.osm.yml POI-Refresh: Abdeckung auf alle 15 Tile-Laender erweitert (war nur DACH) 2026-06-06 10:13:56 +02:00
docker-compose.staging.yml Security: VAPID-Keys raus aus Git, Dockerfile USER appuser, SW by-v1116 2026-05-27 13:02:12 +02:00
docker-compose.yml Security: VAPID-Keys raus aus Git, Dockerfile USER appuser, SW by-v1116 2026-05-27 13:02:12 +02:00
Dockerfile Revert: USER appuser in Dockerfile auskommentiert (DSM-ACL-Konflikt), SW by-v1117 2026-05-27 13:06:25 +02:00
Makefile Fix: Tiles-Cache-Bust — versionierte PMTiles-URL + version-bewusstes Caching 2026-06-05 19:18:43 +02:00
MARKETING.md Marketing-Cockpit (MARKETING.md) + Flyer (HTML-Quellen & Print-PDFs); unsplash/ ignoriert 2026-06-03 17:24:47 +02:00
PROJEKT.md Doku: Sprint 16 komplett — Phone-Frame, Screenshots, UX-Fixes 2026-04-27 19:44:26 +02:00
pytest.ini Big Sweep: Security + Race-Conditions + Tests + DSGVO + A11y, SW by-v1095 2026-05-26 20:12:01 +02:00
VERSION Feature: QR-Kontingente für Partner — Bestellung, Übergabe, Rückverfolgung 2026-06-07 18:20:23 +02:00