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,31 @@
# Einheiten: backend/tft/staticdata/fetch.py
stand: f41ac76b5789
## backend/tft/staticdata/fetch.py::fetch_static
beschreibung: Lädt TFT-Rohdaten von Community Dragon, parst sie und schreibt sie zusammen mit Metadaten versioniert auf die Festplatte.
input: optionale `set_override`-ID, sonst aktuelle Set-Auswahl der Quelldaten
output: das geparste TFT-Statikdaten-Dictionary (zugleich als versionierte JSON-Dateien inklusive Pointer-Datei persistiert)
entscheidungen:
- Patch wird aus dem Content-Metadata-Endpoint auf die ersten zwei Versionssegmente reduziert.
beleg: "patch = \".\".join(version.split(\".\")[:2])"
- Rohdaten werden unverändert zusätzlich als `raw.json` archiviert.
beleg: "(out_dir / \"raw.json\").write_text(json.dumps(raw))"
- Geschriebene Domänen-Dateien werden mit eingerücktem, nicht-ASCII-escapiertem JSON serialisiert.
beleg: "json.dumps(parsed[name], indent=1, ensure_ascii=False)"
- Nach erfolgreichem Schreiben wird ein `latest_static_pointer` aktualisiert, damit Aufrufer das aktuelle Verzeichnis finden.
beleg: "paths.latest_static_pointer().write_text(json.dumps(pointer, indent=1))"
kanten:
## backend/tft/staticdata/fetch.py::load_static
beschreibung: Lädt den zuletzt von `fetch_static` geschriebenen Satz normalisierter TFT-Statikdaten über den Pointer wieder ein.
input: nichts; liest selbstständig den Pointer-Pfad aus `tft.paths`
output: ein Dictionary mit den Schlüsseln `units`, `traits`, `items`, `augments` und `meta` aus dem zuletzt gespeicherten Statikdaten-Verzeichnis
entscheidungen:
- Das Zielverzeichnis wird über `paths.latest_static_pointer()` und nicht über einen Aufrufparameter bestimmt.
beleg: "pointer = json.loads(paths.latest_static_pointer().read_text())"
- Der `pathlib`-Import erfolgt erst innerhalb der Funktion, um den Modulimport schlank zu halten.
beleg: "from pathlib import Path"
- Beim Laden werden ausschließlich die fünf bekannten Domänen-Schlüssel zusammengeführt, unbekannte Einträge ignoriert.
beleg: "for name in (\"units\", \"traits\", \"items\", \"augments\", \"meta\")"
kanten:
- wird-genutzt-von: backend/tft/staticdata/fetch.py::fetch_static