banyaro/backend/static
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
..
css Karte: Blickrichtungs-Kegel (Kompass) + ruhigeres Folgen (Rene: 'weiss nicht wo es ist/hinschaut') 2026-06-06 20:30:22 +02:00
icons Chore: Sprint32-36 Zwischenstand — alle Änderungen aus dieser Session committen 2026-05-03 11:09:39 +02:00
img Landing: Ban Yaro persönlich — Foto + Geschichte als Split-Section (SW by-v960) 2026-05-14 19:50:12 +02:00
js Feature: QR-Kontingente für Partner — Bestellung, Übergabe, Rückverfolgung 2026-06-07 18:20:23 +02:00
sounds Routenvorschlaege: Schwierigkeit aus Distanz+Hoehenmetern + Yaro-Navi mit echtem Gebell 2026-06-06 19:51:20 +02:00
index.html Feature: QR-Kontingente für Partner — Bestellung, Übergabe, Rückverfolgung 2026-06-07 18:20:23 +02:00
landing.html Feature: QR-Kontingente für Partner — Bestellung, Übergabe, Rückverfolgung 2026-06-07 18:20:23 +02:00
leaflet-vector-test.html Tile-Server: Isolations-Testseite /leaflet-vector-test (protomaps-leaflet + DACH, ohne App-Shell) 2026-06-05 08:39:43 +02:00
llms.txt SEO: llms.txt v1.5.1 + sitemap /zuechter + JSON-LD Pricing (Pro 29€/Züchter 49€) 2026-05-14 09:43:21 +02:00
manifest.json Release v1.6.0 2026-05-30 17:22:34 +02:00
maplibre-markers-test.html MapLibre-Port Runde 2: GL-Marker-Subsystem (map-gl-markers.js) + headless Test-Harness 2026-06-05 09:52:45 +02:00
maplibre-perf-test.html MapLibre-Perf-Test: /maplibre-perf-test (Basemap + 600 Cluster-Marker, GPU) — Handy-Proof vor dem Umbau 2026-06-05 09:24:13 +02:00
maplibre-test.html Tile-Server-Spike: MapLibre-Testseite /maplibre-test (vendored maplibre-gl+pmtiles) 2026-06-04 20:42:35 +02:00
presse.html Fix: alle funktionalen Inline-Event-Handler → addEventListener/Delegation (von CSP-Härtung 65cfa25 app-weit blockiert) 2026-06-04 13:59:27 +02:00
robots.txt Karten-Ausbau (OSM), Forum-Erweiterung, UI-Komponenten, Refactor Tagebuch/Gassi (DRY), Landing/SEO — APP_VER 1155 2026-06-03 17:24:47 +02:00
sitemap.xml SEO: llms.txt v1.5.1 + sitemap /zuechter + JSON-LD Pricing (Pro 29€/Züchter 49€) 2026-05-14 09:43:21 +02:00
sw.js Feature: QR-Kontingente für Partner — Bestellung, Übergabe, Rückverfolgung 2026-06-07 18:20:23 +02:00
ui-vector-test.html Diagnose: /ui-vector-test — testet echten ui.js-Vektor-Pfad (UI.map.create) ohne Auth 2026-06-05 09:01:58 +02:00
zuechter.html Fix: alle funktionalen Inline-Event-Handler → addEventListener/Delegation (von CSP-Härtung 65cfa25 app-weit blockiert) 2026-06-04 13:59:27 +02:00