Prize Scoring Contract¶
Ziel¶
Dieser Vertrag schneidet explizit, welche Signale aus der Mirror-Quelle stammen und welche Wertungssemantik erst in TargetShot entsteht. Damit bauen Preisschiessen, spaetere Wettkampfflaechen und Admin-Auswertungen nicht lauter leicht abweichende Einzelregeln.
Quellsignale aus der Mirror-Quelle¶
Die aktuelle Meyton-/Mirror-Strecke liefert fuer Preisschiessen heute keine fachliche Auswertungsmethode wie best10 oder best_teiler direkt mit. Stattdessen kommen Rohsignale:
| Signal | Herkunft | Bedeutung |
|---|---|---|
starterliste |
Quelle | Fachlicher Event-Name bzw. Listenlabel |
disziplin |
Quelle | Disziplintext, wird auch fuer Auflage-/LP-Erkennung verwendet |
klasse |
Quelle | Klassenhinweis aus dem Quellsystem |
trefferzahl |
Quelle | Anzahl registrierter Treffer |
totalRing |
Quelle | Gesamtringe ohne Zehntel |
totalRing01 |
Quelle | Gesamtringe mit Zehntelauflösung |
besterTeiler01 |
Quelle | Bester Teiler mit Zehntelauflösung |
Produktlogik oberhalb der Quelle¶
TargetShot leitet daraus bewusst fachliche Semantik ab:
| Produktbegriff | Typ | Beschreibung |
|---|---|---|
rankingMode |
Produktregel | Aktiver Wertungsmodus eines Preisschiessen-Events |
ruleOrigin |
Produktregel | Ob die Regel aus dem Vereinsstandard oder aus einem Event-Override stammt |
ranking_value |
Abgeleitet | Ergebniswert, der fuer die Rangbildung benutzt wird |
best10_gate |
Abgeleitet | Kennzeichnet, dass nur exakte 10-Schuss-Ergebnisse ranken |
adjusted_best_teiler |
Abgeleitet | Fachlich korrigierter Teiler fuer Auflage / LP |
tenths_tiebreak |
Abgeleitet | Expliziter Zehntel-Tiebreak fuer Score-basierte Rankings |
Aktuell kanonische Wertungsmodi¶
best10¶
- Ursprung: Produktregel
- Primärmetrik:
total_ring desc - Tie-Breaker:
total_ring_tenths descadjusted_best_teiler ascattempt_timestamp ascsportpass_id asc- Zusatzregel: Nur Ergebnisse mit exakt
trefferzahl = 10werden gewertet
overall_total¶
- Ursprung: Produktregel
- Primärmetrik:
total_ring desc - Tie-Breaker:
total_ring_tenths descadjusted_best_teiler ascattempt_timestamp ascsportpass_id asc- Zusatzregel: Jede Session mit Gesamtwertung kann ranken
best_teiler¶
- Ursprung: Produktregel
- Primärmetrik:
adjusted_best_teiler asc - Tie-Breaker:
total_ring desctotal_ring_tenths descattempt_timestamp ascsportpass_id asc- Zusatzregel: Der aus der Quelle kommende Teiler wird vor der Rangbildung fachlich angepasst
Regelherkunft¶
Aktuell kennt der Vertrag zwei produktive Regelquellen:
club_default: Vereinsstandard aus der Club-Konfigurationevent_override: Veranstaltungsspezifische Uebersteuerung fuer genau ein Event
Weitere Regelquellen wie source-native oder externe Wettkampfdefinitionen bleiben bewusst ausserhalb dieses ersten Schnitts und koennen spaeter auf denselben Vertrag erweitert werden.
Fachliche Teiler-Anpassung¶
Die Quelle liefert besterTeiler01, aber nicht die endgueltige fachliche Auswertung fuer alle Vereinskontexte. Daher haelt der Vertrag explizit fest:
- Auflage wird ueber
disziplin/ Event-Kontext erkannt und mitauflageMultipliergewichtet - Luftpistole wird ueber
disziplin/ Event-Kontext erkannt und mitlpDivisornormiert - die API liefert deshalb neben dem Rankingmodus auch ein Objekt
adjustedBestTeiler, damit Web und spaetere Admin-Flaechen nachvollziehen koennen, ob und wie der Teiler angepasst wurde
API-Vertrag fuer Preisschiessen¶
/api/club/prize-shooting/results liefert jetzt:
defaultEvaluationauf Payload-Ebene fuer den aktiven Vereinsstandardevaluationpro Event mit:moderuleOriginprimaryMetrictieBreakerssourceSignalsderivedSignalsbest10RequiresExactShotCountadjustedBestTeiler
Damit koennen Folgeflaechen dieselbe Semantik nutzen, statt Rankinglogik noch einmal lokal zu erraten.
Nicht Teil dieses ersten Schnitts¶
- allgemeine Wettkampfwertungen ausserhalb von
Preisschiessen - DSB-spezifische Sonderregeln fuer Koenigsschiessen, Blattl oder spaetere Verbandssonderformen
- automatisches Mapping aus neuen Quellsystemen wie
DISAG
Diese Punkte bauen spaeter auf demselben Vertrag auf, sind aber bewusst nicht Voraussetzung fuer diesen ersten Sprint-10-Schnitt.