banyaro/backend/routes
rene 60fb866283 Gründer-Tickets: 50%-Rabatt-Weitergabe pro Gründer gedeckelt + Pro-Wording korrigiert
Rene: 'ungern jemandem auf ewig die Möglichkeit geben 50% Rabatt zu vergeben —
bei 100 Gründern ein großer Faktor. Ich hätte jedem 25–50 Tickets gegeben.'

- users.founder_referral_tickets (Default 25): Kontingent an 50%-Rabatten,
  die ein Gründer an Geworbene weitergeben kann. Technisch = die ersten N
  VERIFIZIERTEN Geworbenen (nach Anmeldedatum) bekommen 50%, danach 0.
  Unbestätigte verbrauchen kein Ticket. In scheduler.py (Rechnung) + admin.py
  (Vorschau) konsistent.
- BUGFIX nebenbei: admin.py zeigte für referred_by_founder fälschlich 100%
  statt 50% (scheduler war korrekt) — jetzt beide 50%.
- Admin: Grant-Formular bekommt Feld 'Gründer-Tickets' (0–200, Vorbelegung
  aus User-Stand); Endpoint /grant akzeptiert founder_tickets.
- Gründer-Seite + Settings + Admin-Hilfe: 'sobald Bezahlfunktionen aktiv sind'
  raus (Pro kostet bereits); Vorteil 'lebenslang Pro gratis' + '25 Freunde
  zum halben Preis' (Ticket-Framing).
- Tests: test_founder_tickets.py (Cap, Unverified-Schutz, 50%-Bugfix, Grant).
  Suite: 64 passed.
2026-06-08 06:20:19 +02:00
..
__init__.py Sprint 0: Backend, Docker, KI-Layer mit Free/Premium-Trennung 2026-04-12 16:39:34 +02:00
achievements.py Streak: entkoppelt vom App-Öffnen — nur noch echte Touren zählen 2026-06-04 09:40:12 +02:00
admin.py Gründer-Tickets: 50%-Rabatt-Weitergabe pro Gründer gedeckelt + Pro-Wording korrigiert 2026-06-08 06:20:19 +02:00
adoption.py Sicherheit + Tests + A11y, SW by-v1118 2026-05-27 13:40:30 +02:00
alerts.py Bündel 2: Zentrale Helper für DRY-Cleanup, SW by-v1114 2026-05-27 11:19:06 +02:00
auth.py Schutz gegen kursierende Partner-Codes (Rene: 'Bonus-Codes kursieren gerne das Internet') 2026-06-07 19:35:31 +02:00
breeder.py Züchter-Editor: Wurfnamen sichtbar, 'undefined Medien' gefixt, Mitgliedschaften & Zertifikate 2026-06-07 21:00:14 +02:00
breeder_export.py Feature: Tierschutz-Check, KI-Züchter-Features, Export, SEO-Update 2026-04-28 19:49:54 +02:00
breeder_photos.py Züchter-Editor: Wurfnamen sichtbar, 'undefined Medien' gefixt, Mitgliedschaften & Zertifikate 2026-06-07 21:00:14 +02:00
challenges.py Feature: 3 Community-Features — Foto-Challenge, Stamm-Gassis, Rassen-Chip (SW by-v700) 2026-05-04 21:09:35 +02:00
chat.py Sicherheit + Tests + A11y, SW by-v1118 2026-05-27 13:40:30 +02:00
contact.py Feat: Kontaktformular im Impressum + /api/contact Endpoint ohne Auth (SW by-v986) 2026-05-15 16:46:37 +02:00
diary.py Tagesfoto-Cache validieren + bei Diary/Media-Löschung mit-bereinigen 2026-05-30 19:00:56 +02:00
dogs.py Tagesfoto-Cache validieren + bei Diary/Media-Löschung mit-bereinigen 2026-05-30 19:00:56 +02:00
ernaehrung.py Sicherheit + Tests + A11y, SW by-v1118 2026-05-27 13:40:30 +02:00
events.py Sicherheit + Tests + A11y, SW by-v1118 2026-05-27 13:40:30 +02:00
expenses.py Expenses: GET /api/expenses/categories liefert die Kategorien 2026-05-30 12:31:59 +02:00
feedback.py Feature: User-Feedback, Regen-Uhrzeit im Wetter-Chip, Admin-Karten klickbar (SW by-v833) 2026-05-10 12:52:55 +02:00
forum.py Fix: Forum-Cooldown blockierte JEDEN Post (Zeitzonen-Bug) 2026-06-04 16:50:45 +02:00
friends.py Feature+Fix: Referral-Admin, Pro-Gates, Karten-Layer, onDogChange, Staging-Media (SW by-v855) 2026-05-11 17:23:29 +02:00
gassi_zeiten.py Sicherheit + Tests + A11y, SW by-v1118 2026-05-27 13:40:30 +02:00
health.py Feature: Pflege-Routinen (Zecken-/Flohschutz, Krallen, Fellpflege) — neuer Pflege-Tab mit Erledigt+Auto-Wiedervorlage, Push-Erinnerungen, intervall_tage-Fix im INSERT, SW v1132 2026-05-29 10:32:05 +02:00
health_docs.py Feature: Sprint31 — 9 Features merged (Streak, Ausgaben, KI-Tierarzt, Rückrufe, Adoption, Vet+Befunde, Hundepass, Playdate, Rassenerkennung) 2026-05-02 09:29:48 +02:00
help.py Sicherheit + Tests + A11y, SW by-v1118 2026-05-27 13:40:30 +02:00
import_data.py Sprint 12+13: Tagebuch Day-One-Redesign, Notiz-Feature, Icon-Fixes, SW by-v405 2026-04-25 20:44:46 +02:00
invoices.py Sicherheit + Tests + A11y, SW by-v1118 2026-05-27 13:40:30 +02:00
jobs.py DRY: Notiz-Modal zentral in UI.noteModal (11 divergierte Kopien entfernt, ~750 Z. weniger); Fix: Founder-Race in jobs.py atomar + founder_number, SW v1133 2026-05-29 10:51:42 +02:00
ki.py Sicherheit + Tests + A11y, SW by-v1118 2026-05-27 13:40:30 +02:00
knigge.py Sicherheit + Tests + A11y, SW by-v1118 2026-05-27 13:40:30 +02:00
laeufi.py Sicherheit + Tests + A11y, SW by-v1118 2026-05-27 13:40:30 +02:00
litters.py Sicherheit + Tests + A11y, SW by-v1118 2026-05-27 13:40:30 +02:00
lost.py Sicherheit + Tests + A11y, SW by-v1118 2026-05-27 13:40:30 +02:00
moderation.py Chore: Sprint32-36 Zwischenstand — alle Änderungen aus dieser Session committen 2026-05-03 11:09:39 +02:00
movies.py Sicherheit + Tests + A11y, SW by-v1118 2026-05-27 13:40:30 +02:00
notes.py Sicherheit + Tests + A11y, SW by-v1118 2026-05-27 13:40:30 +02:00
notifications.py Badge-System: personal/general Split, Punkte ohne Zahl, SW by-v328 2026-04-24 08:39:41 +02:00
osm.py POI-Karte: Offline-Import aus OSM statt Live-Overpass-Scan (Build 4) 2026-06-03 20:44:32 +02:00
osm_auth.py OSM-Verknüpfung: In-App-Hilfe „Konto erstellen" (umgebungsabhängig) 2026-06-03 22:04:42 +02:00
osm_contrib.py POI-Bewertung: Live-Praesenz zaehlt als GPS-Beleg (Rene stand am Ort, wurde abgewiesen) 2026-06-06 17:26:20 +02:00
outreach.py Sicherheit + Tests + A11y, SW by-v1118 2026-05-27 13:40:30 +02:00
partner.py Gründer-Tickets: 50%-Rabatt-Weitergabe pro Gründer gedeckelt + Pro-Wording korrigiert 2026-06-08 06:20:19 +02:00
passport.py Sicherheit + Tests + A11y, SW by-v1118 2026-05-27 13:40:30 +02:00
places.py Sicherheit + Tests + A11y, SW by-v1118 2026-05-27 13:40:30 +02:00
playdate.py Sicherheit + Tests + A11y, SW by-v1118 2026-05-27 13:40:30 +02:00
poison.py Sicherheit + Tests + A11y, SW by-v1118 2026-05-27 13:40:30 +02:00
praise.py Session 2026-04-21: SEO, Wiki-Anreicherung, Training, Lober 2026-04-21 19:38:20 +02:00
profile.py Fix: Account-Löschung FK-sicher über alle Tabellen (defer_foreign_keys + Introspektion) 2026-06-04 19:21:18 +02:00
push.py Sicherheit + Tests + A11y, SW by-v1118 2026-05-27 13:40:30 +02:00
ratings.py Sicherheit + Tests + A11y, SW by-v1118 2026-05-27 13:40:30 +02:00
recalls.py Fix: Anniversary-Job + RASFF 404, SW by-v1120 2026-05-27 14:51:34 +02:00
routen.py Routenvorschlaege: Schwierigkeit aus Distanz+Hoehenmetern + Yaro-Navi mit echtem Gebell 2026-06-06 19:51:20 +02:00
services.py Sicherheit + Tests + A11y, SW by-v1118 2026-05-27 13:40:30 +02:00
sharing.py Sicherheit + Tests + A11y, SW by-v1118 2026-05-27 13:40:30 +02:00
sitting.py Sicherheit + Tests + A11y, SW by-v1118 2026-05-27 13:40:30 +02:00
sitting_access.py Sicherheit + Tests + A11y, SW by-v1118 2026-05-27 13:40:30 +02:00
social.py Sicherheit + Tests + A11y, SW by-v1118 2026-05-27 13:40:30 +02:00
stats.py Feature: Stats-Band + Tagebuch-Einträge, km alle Routen (public+privat) 2026-05-15 18:34:03 +02:00
streak.py Chore: Sprint32-36 Zwischenstand — alle Änderungen aus dieser Session committen 2026-05-03 11:09:39 +02:00
tieraerzte.py Sicherheit + Tests + A11y, SW by-v1118 2026-05-27 13:40:30 +02:00
training.py Sicherheit + Tests + A11y, SW by-v1118 2026-05-27 13:40:30 +02:00
walks.py Sicherheit + Tests + A11y, SW by-v1118 2026-05-27 13:40:30 +02:00
weather.py Feature+Fix: Referral-Admin, Pro-Gates, Karten-Layer, onDogChange, Staging-Media (SW by-v855) 2026-05-11 17:23:29 +02:00
webcal.py WebCal: Tierarzt-Termine, Medikamenten-Enddaten, Hunde-Geburtstage ergänzt 2026-04-17 09:41:14 +02:00
widget.py Feature: Welten-Onboarding, Wetter-Motivation, UX-Fixes (SW by-v715) 2026-05-05 17:32:03 +02:00
wiki.py Sicherheit + Tests + A11y, SW by-v1118 2026-05-27 13:40:30 +02:00
zucht_hunde.py Sicherheit + Tests + A11y, SW by-v1118 2026-05-27 13:40:30 +02:00
zucht_ki.py Sicherheit + Tests + A11y, SW by-v1118 2026-05-27 13:40:30 +02:00