**Bei Transfers und Freigaben ist nachträglich ersichtlich, welches Konto gehandelt hat**: Wer einen Antrag gestellt, die Vereinsfreigabe erteilt, die Genehmigung des Verbandes ausgesprochen, abgelehnt oder widerrufen hat, wurde von Anfang an mitgeschrieben, aber nie ausgeliefert. Nach Abschluss eines Vorgangs war damit nicht mehr zu klären, wer ihn veranlasst hat, und genau diese Frage kam in der Vergangenheit mehrfach auf. Die Transferansicht führt jetzt zu jedem Schritt das handelnde Konto samt Zeitpunkt, und im Spielerprofil steht bei jeder Vereinszugehörigkeit, wer sie angelegt und wer sie beendet hat, soweit der Eintrag ein Konto trägt; Zugehörigkeiten aus dem Altbestand bleiben ohne Angabe. Ausgegeben werden Name und Konto-ID zusammen: Der Name ist die Anzeige, die ID bleibt die belastbare Angabe, wenn ein Konto zwischenzeitlich umbenannt oder gelöscht wurde. Ein nicht mehr auffindbares Konto führt zur ID ohne Namen, statt die Ansicht abbrechen zu lassen. Sichtbar sind die Namen für alle, die den Vorgang beziehungsweise das Profil ohnehin öffnen dürfen; im Spielerprofil weist die Lizenzhistorie das handelnde Konto seit langem genauso aus, eine Ausnahme allein für die Vereinseinträge wäre in derselben Maske nicht vermittelbar. Ausgegeben wird der Name ohne den Benutzernamen: Angemeldet wird sich in diesem Projekt allein über den Benutzernamen, und für die Frage, wer gehandelt hat, tragen Name und Konto-ID die Aussage bereits.
**Das Zurückziehen und das Annullieren eines Transfers halten das handelnde Konto fest**: Beide Wege setzten den Antrag auf „zurückgezogen", ohne zu vermerken, wer das veranlasst hat. Damit war gerade der Abbruch der einzige Schritt ohne Spur, obwohl dazu am ehesten Rückfragen kommen. Anlegen, Vereinsfreigabe, Verbandsgenehmigung, Ablehnung und Widerruf hielten ihr Konto längst fest. Dasselbe gilt für den dritten Weg in diesen Status: Wird ein Verein deaktiviert, werden seine laufenden Anträge automatisch beendet, und das Konto, das die Deaktivierung vorgenommen hat, war dem Antrag bisher nicht zu entnehmen, obwohl es beim Verein vermerkt wird. Neu sind die Felder `withdrawn_by` und `withdrawn_at`. Anträge, die vor dieser Änderung abgebrochen wurden, bleiben ohne Angabe, das lässt sich nicht nachträglich ermitteln; der Abbruch wird dort ausdrücklich mit dem Hinweis „Zeitpunkt nicht erfasst" geführt, statt zu fehlen, sonst sähe ein solcher Vorgang aus wie ein noch laufender.
**Die Lizenzansichten weisen aus, wann ein Dokument hochgeladen wurde**: In der Genehmigungsübersicht war bisher nur zu sehen, dass ein Pflichtdokument vorliegt, nicht seit wann. Wer die Liste in Durchgängen abarbeitet, konnte damit nicht unterscheiden, was seit dem letzten Mal neu dazugekommen ist und was längst geprüft wurde; nachgereichte Dokumente fielen ebenso wenig auf wie ersetzte. Neben der Dokumentart steht jetzt das Uploaddatum, in der Verbandsliste kurz neben dem Symbol und in der Liga-Detailansicht sowie im Genehmigungsdialog hinter der Bezeichnung; der Tooltip nennt es mit vollem Jahr. Maßgeblich ist der Zeitpunkt des aktuell hinterlegten Uploads: Ein erneuter Upload ersetzt das bisherige Dokument vollständig, das Datum wandert also mit, und ein nachgereichtes Dokument bleibt nicht als „alt" stehen. Ohne abrufbare Datei erscheint auch kein Datum, damit die Übersicht keinen Upload ausweist, den dort niemand öffnen kann.
**Zusatzqualifikationen stehen im Schiedsrichterprofil und auf dem Ausweis**: Wer einen Aufbaukurs abgeschlossen hat, etwa als Spielleiter oder Beobachter, findet die Qualifikation samt Gültigkeitsdatum in der Schiedsrichterverwaltung eingetragen und im öffentlichen Lizenzcheck ausgewiesen. Im eigenen Profil und auf dem digitalen Schiedsrichterausweis fehlte sie: Dort standen nur Lizenzstufe und Lizenzgültigkeit. Damit sah die betroffene Person über ihre eigene Qualifikation weniger als jeder Dritte, der ihre Lizenznummer in den Lizenzcheck eingibt, obwohl derselbe Lizenzcheck hinter dem QR-Code des eigenen Ausweises steckt. Beide Ansichten führen die Zusatzqualifikationen jetzt mit, nach Namen sortiert und mit demselben Farbschema wie die Lizenzgültigkeit: grün, solange sie gilt, rot ab dem Tag danach. Auf dem Ausweis ist Abgelaufenes zusätzlich durchgestrichen und im Profil steht „abgelaufen am" statt „gültig bis", damit die Aussage nicht allein an der Farbe hängt. Eine Qualifikation ohne hinterlegtes Ablaufdatum wird ohne Datum und ohne Farbe geführt, weil dazu keine Aussage vorliegt. Abgelaufene Qualifikationen bleiben stehen und verschwinden nicht still, sonst wäre für die betroffene Person nicht zu unterscheiden, ob eine Qualifikation abgelaufen oder nie erworben ist. Gepflegt werden die Einträge weiterhin ausschließlich von der Schiedsrichterkommission, das Profil zeigt sie nur an. Wer keine Zusatzqualifikation hinterlegt hat, sieht die neuen Abschnitte nicht.
Behoben
**Die Kursergebnis-Freigabe zeigte Zeilen aus Importen, die niemand eingereicht hat**: In der Freigabeübersicht des Landesverbands standen auch die Vorschauzeilen eines Kursimports, den der Importeur noch bearbeitet oder längst abgebrochen hat, jeweils mit einem „Freigeben"-Knopf. Ursache war die Bedeutung des Zeilenstatus: Der Import legt jede Zeile sofort beim Upload als offen an, während der Import selbst noch auf „in Bearbeitung" steht. Der Zeilenstatus allein trennt die Vorschau des Importeurs damit nicht von der Warteschlange des Landesverbands, und die Freigabe las nur ihn. Ein Klick hätte die Lizenzstufe und die Stammdaten tatsächlich auf den Schiedsrichter geschrieben und die Lizenzmail verschickt, aus einer Datei, die wegen fehlerhafter Daten verworfen wurde. Die Übersicht führt jetzt nur noch Zeilen eingereichter Importe, und Freigeben wie Zurückweisen prüfen den Import zusätzlich beim Ausführen, damit ein bereits geöffneter Browser-Tab nicht doch noch schreibt.
**Die Freigabeübersicht meldete den Vereinskonflikt ausgerechnet dort nicht, wo er auftritt**: Der Kursimport ordnet den Vereinsnamen aus der Datei über einen exakten Namensvergleich zu. Trifft er nichts, trägt er ersatzweise den Verein des Schiedsrichters ein, damit eine Neuanlage nicht ohne Verein entsteht. Für die Anzeige war dieser Ersatzwert nicht vom echten Treffer zu unterscheiden: Die Übersicht verglich ihn mit dem Verein des Schiedsrichters, fand Gleichheit und meldete keinen Konflikt, während der gespeicherte Abgleichswert den Verein sehr wohl als Nicht-Treffer zählte. Betroffen war damit genau der häufigste Fall, denn die Datei schreibt den Vereinsnamen aus und die Datenbank führt die Kurzform. Die Übersicht bekommt jetzt den reinen Namenstreffer als eigene Angabe und beurteilt die Abweichung danach, sodass Markierung und Abgleichszahl dieselbe Aussage treffen.
**Die Freigabe verschwieg, ob die Lizenzmail angekommen ist**: Wer eine Kurszeile freigab, sah eine Erfolgsmeldung, unabhängig davon, ob der Schiedsrichter überhaupt eine hinterlegte Adresse hat. Der Versandausgang wurde verworfen. Ein Schiedsrichter ohne Adresse blieb damit unbemerkt unbenachrichtigt, obwohl das eine Aufgabe für den Landesverband ist. Der Einreichungsschritt meldet die Zahlen längst, die Freigabe zieht jetzt nach und gibt den Ausgang zurück. Eine fehlgeschlagene Freigabe wird außerdem protokolliert, statt nur als Meldung auf dem Bildschirm zu erscheinen, und der Landesverband bekommt einen verständlichen Satz statt einer internen Validierungsmeldung.
**Ein beim Freigeben geänderter Verein ließ die Zuständigkeit der Zeile unverändert**: Übernahm der Landesverband beim Freigeben einen anderen Verein, bekam der Schiedsrichter ihn, die Kurszeile behielt aber den Landesverband des ursprünglich vorgeschlagenen Vereins. Genau über dieses Feld wird die Freigabeliste später gefiltert, der gespeicherte Datensatz blieb also in sich widersprüchlich. Maßgeblich ist jetzt der tatsächlich übernommene Verein.
**Die Freigabeübersicht verschwieg Geburtsdatum und E-Mail des Schiedsrichters**: In der Spalte „Datenbank" stand für diese beiden Merkmale immer ein „—", auch wenn der Wert beim Schiedsrichter hinterlegt war. Die Freigabe-Schnittstelle lieferte nur Lizenznummer, Vor- und Nachname mit, obwohl der Abgleich alle sechs Merkmale zählt. Bei einem Teilmatch war damit nicht zu erkennen, welches Merkmal überhaupt abweicht, und wenn die Abweichung im Geburtsdatum, in der E-Mail oder im Verein lag, sah die Zeile fehlerfrei aus. Die Übersicht bekommt jetzt den vollständigen Stand der Datenbank samt Vereinsnamen, dazu den in der Zeile gematchten Verein, sodass ein Vereinskonflikt neben dem Namen aus der Datei steht.
**Der digitale Schiedsrichterausweis zählt den Ablauftag selbst noch als gültig**: Steht als Lizenzgültigkeit der heutige Tag, wies der Ausweis die Lizenz bereits ab Mitternacht als abgelaufen aus, rot statt grün. Die API rechnet anders: Eine Lizenz gilt bis einschließlich ihres Ablaufdatums, und dieselbe Regel gilt bei der Ansetzung und in der Schiedsrichterverwaltung, die dafür ausdrücklich das Tagesende ansetzt. Am letzten Gültigkeitstag widersprach der Ausweis also der Lizenz, die er ausweist. Verglichen wird jetzt gegen den Tagesbeginn, damit der Ablauftag vollständig zählt. Nebenbei nimmt der Ausweis kein Datum mehr an, das es nicht gibt: Aus dem 31.02. machte die Datumsrechnung stillschweigend den 3. März und damit eine Gültigkeit, die nirgends hinterlegt ist; ein unlesbares Datum gilt jetzt als abgelaufen statt als gültig.
Verbessert
**Die Mannschaftsseite rechnet ihre Scorerwerte nicht mehr bei jedem Aufruf neu**: Die Übersicht einer Mannschaft las bei jedem Abruf alle beendeten Spiele der Saison und wertete je Spiel die komplette Ereignis-Liste aus, um Tore, Vorlagen und Strafminuten zu summieren. Das Ergebnis ist für alle Aufrufer identisch und ändert sich nur, wenn ein Spielbericht abgeschlossen wird, wurde aber nirgends zwischengespeichert. Die Werte liegen jetzt fünf Minuten im Zwischenspeicher, wie bei der Scorerliste einer Liga, die dieselben Zahlen je Liga statt je Mannschaft zeigt. Gespeichert werden ausschließlich die Zahlen; Spielernamen, Mannschaftsnamen und Logos löst die Seite weiter frisch auf, eine Umbenennung ist also sofort sichtbar. Schaltet eine Liga ihre öffentliche Scorerliste um, wirkt das ebenfalls sofort. Anlass war eine Messung des maschinellen Verkehrs auf der Produktion: Dieser Endpunkt war der mit Abstand häufigste Einzelabruf ohne Absenderkennung, rund 10.000 Aufrufe in sieben Tagen, fast alle von einer einzigen Gegenstelle.