Meisterschaft: eine pro Saison, mit zugeordneten Turnieren

Auf Vorgabe des Auftraggebers umgestellt:
* genau eine Meisterschaft je Saison (unique auf saison_jahr)
* turnier.meisterschaft_id (nullable FK) statt bool zaehlt_meisterschaft;
  NULL = "o. M.". Kompat-Property turnier.zaehlt_meisterschaft bleibt.
* Teilwertungen (Erwachsene-Gesamt, Jugend J1-J5) sind (Kategorie, Klasse)-
  Sichten auf die eine Meisterschaft, keine eigenen Zeilen mehr
* meisterschaft_stand: kategorie + klasse_id + Unique je Wertung/Fahrer
* berechne_stand(kategorie=, klasse_id=), wertungen_fuer(), berechne_alle_wertungen()
* Read-API: /meisterschaften/{id}/stand[?wertung=], .../endlauf-qualifikation?wertung=
* Ingest: POST /turniere haengt zaehlende Turniere an die Jahres-Meisterschaft
* Initialmigration neu erzeugt (Projekt noch nicht ausgerollt); Seed: eine
  "HTH-Meisterschaft <jahr>"
* Tests angepasst/ergaenzt (61 gruen)

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
linus
2026-09-05 19:52:25 +02:00
co-authored by Claude Sonnet 5
parent 1df633bdec
commit c33aaa1a4b
19 changed files with 513 additions and 199 deletions
@@ -1,8 +1,17 @@
{% extends "base.html" %}
{% block title %}Meisterschaftsstand · {{ projekt }}{% endblock %}
{% block title %}{{ meisterschaft.bezeichnung }} · {{ projekt }}{% endblock %}
{% block content %}
<h1>Meisterschaftsstand</h1>
<p>Saison {{ bericht.saison_jahr }} · Kategorie {{ bericht.kategorie }} ·
<h1>{{ meisterschaft.bezeichnung }}</h1>
<nav class="tiles">
{% for w in wertungen %}
<a href="/meisterschaft/{{ meisterschaft.id }}?wertung={{ w.code | urlencode }}"
{% if w.code == aktive_wertung.code %}style="font-weight:700"{% endif %}>{{ w.bezeichnung }}</a>
{% endfor %}
</nav>
<h2>{{ aktive_wertung.bezeichnung }}</h2>
<p>Saison {{ bericht.saison_jahr }} ·
{{ bericht.laeufe_gewertet }} von {{ bericht.laeufe_gesamt }} Läufen gewertet
(Rest = Streichresultate)</p>