**Vereins- und Team-Logo-Upload jetzt serverseitig geprüft**: Die Logo-Upload-Endpunkte für Vereine und Teams akzeptierten bisher technisch jede Datei in beliebiger Größe (die Prüfung fand nur im Frontend statt und war per direktem API-Aufruf umgehbar). Jetzt prüft die API das Format (erlaubt sind ausschließlich die Raster-Formate PNG, JPG und WebP; SVG wird abgelehnt, weil es als Download statt als Bild ausgeliefert würde und ungeprüft ein Sicherheitsrisiko wäre), begrenzt die Dateigröße auf 3 MB und verlangt ein quadratisches Bild (gleiche Breite und Höhe). Bei Verstoß antwortet die API mit einer erklärenden Fehlermeldung (Status 422), statt die Datei still anzunehmen.
Verbessert
**Issue-Vorlagen für das öffentliche Repository**: Wer im API-Repo ein Issue anlegt, bekommt jetzt wie im Frontend-Repo Vorlagen für Fehlerberichte (mit Feldern für Endpunkt, Request und Statuscode) und Featurewünsche, inklusive Hinweis, keine personenbezogenen Daten zu posten. Zusätzlich verweisen Kontakt-Links Sicherheitslücken auf den vertraulichen Meldeweg (SECURITY.md) und Feedback aus dem Spielbetrieb auf das Feedback-Repo.
**Ungenutzte Test-Mail-Methode mit fest hinterlegten Empfängeradressen entfernt**: Der `TestMailer` enthielt neben der aktiv genutzten Funktion (Test-Mail an eine frei wählbare Adresse aus dem Admin-Bereich) eine alte, nirgends mehr aufgerufene Methode, in der zwei persönliche E-Mail-Adressen fest im Quellcode standen. Die tote Methode samt zugehöriger Templates wurde entfernt — auch damit im nun öffentlichen Repository keine privaten Adressen stehen.
**Meldeweg für Sicherheitslücken und Feedback dokumentiert**: Das Repository hat jetzt eine `SECURITY.md` (Sicherheitslücken bitte vertraulich an it@floorball.de oder über GitHubs private Schwachstellen-Meldung, nicht als öffentliches Issue), und das README verweist auf das Feedback-Repo sowie die Kontaktadresse. Vorbereitung für die Open-Source-Veröffentlichung.
**Schiri-Spielhistorie stabil über die Referee-ID zugeordnet**: Die Zuordnung von Spielen zu einem Schiedsrichter (Spielhistorie im Schiri-Profil, Saison-Spielzähler in der Schiri-Liste) lief bisher ausschließlich über die Lizenznummer bzw. den Freitext im Spielbericht. Beides ist unzuverlässig: Die Lizenznummer kann sich (z. B. beim Zusammenführen zweier Schiri-Profile) verschieben, und der Freitext veraltet bei Namensänderungen. Die Zuordnung greift jetzt vorrangig auf die stabile, kanonische Referee-ID (`officiating_referee_ids`) zurück; Lizenznummer und Bericht-Freitext bleiben nur noch als Übergangs-Fallback erhalten. Dadurch werden auch Gast-Schiedsrichter (ohne Lizenznummer) und Spiele nach einem Profil-Merge korrekt zugeordnet. (Aufbauend auf der kanonischen PK-Spalte aus #47, Teil des Umbaus #45.)
**Ungenutzten Azure-Storage entfernt**: Der ActiveStorage-Dienst `microsoft` (Azure) war in `config/storage.yml` definiert, wurde aber von keiner Umgebung genutzt (alle nutzen lokalen Disk-Speicher; 0 von 271 Dateien lagen auf Azure). Der Dienst, der damit verbundene, im Klartext hinterlegte Zugriffsschlüssel (`AZURE_KEY`/`AZURE_CONTAINER`) sowie das nun überflüssige Gem `azure-storage-blob` (inkl. seiner exklusiven Abhängigkeitskette) wurden entfernt.