This commit is contained in:
team3
2026-07-24 11:24:24 +02:00
parent f41ac76b57
commit 848c8ea1aa
41 changed files with 1776 additions and 15 deletions

View File

@@ -0,0 +1,34 @@
# Einheiten: backend/tft/constants/loader.py
stand: f41ac76b5789
## backend/tft/constants/loader.py::load_constants
beschreibung: Lädt die TOML-Konstantendatei für ein gegebenes Set und gibt das eingelesene Dict zurück.
input: set_number (int) die zu ladende Set-Nummer.
output: dict die deserialisierten Konstanten aus der TOML-Datei.
entscheidungen:
- Fehlt die Set-Datei, bricht der Lader mit einer FileNotFoundError ab und gibt einen Hinweis zur Behebung.
beleg: "if not path.exists():"
- Die Datei wird im Binary-Modus geöffnet, da tomllib rohe Bytes erwartet.
beleg: "with path.open(\"rb\") as f:"
- Geladene Werte werden unmittelbar über validate einer Konsistenzprüfung unterzogen.
beleg: "validate(c)"
kanten:
- ruft-auf: backend/tft/constants/loader.py::validate
## backend/tft/constants/loader.py::validate
beschreibung: Validiert die Struktur und Plausibilität der geladenen Konstanten und wirft bei Verstößen ValueError.
input: c (dict) das zuvor aus TOML geladene Konstanten-Dict.
output: None signalisiert Gültigkeit durch stilles Zurückkehren oder Auslösen einer Ausnahme.
entscheidungen:
- Jede Shop-Odds-Zeile muss genau 5 Einträge besitzen.
beleg: "if len(row) != 5:"
- Die Pool-Größenliste muss exakt 5 Kostenstufen umfassen.
beleg: "if len(c[\"pool\"][\"sizes\"]) != 5:"
- Die Anzahl der XP-Stufen-Übergänge muss zur maximalen Stufe passen (to_next = max_level 1).
beleg: "if len(xp[\"to_next\"]) != xp[\"max_level\"] - 1:"
- Die streak_gold-Tabelle muss aufsteigend nach Streak-Länge sortiert sein.
beleg: "if streaks != sorted(streaks):"
- Jede Shop-Odds-Zeile muss in Summe genau 100 ergeben.
beleg: "if sum(row) != 100:"
kanten:
- wird-genutzt-von: backend/tft/constants/loader.py::load_constants