thebestian/wm-tippspiel-2026
WM 2026 Tippspiel
Halbautomatisches Tippspiel für die Fußball-WM 2026 mit Vorrunden-Tipps, automatischen Gruppentabellen, KO-Baum, Admin-Ergebnissen und Leaderboard.
Funktionen
- Teilnehmer tippen alle Vorrundenspiele.
- Pro Teilnehmer wird daraus ein eigener KO-Baum erzeugt.
- KO-Tipps funktionieren per Klick auf das weiterkommende Team.
- Admin trägt echte Endergebnisse manuell ein.
- Ein eingetragenes Admin-Ergebnis gilt als Endergebnis.
- Admin kann Gruppentabellen bei Sonderfällen manuell korrigieren.
- Tipps werden ab
PREDICTION_LOCK_ATserverseitig gesperrt. - Live-Ergebnisse zeigen eingeloggten Nutzern farbig, wie viele Punkte sie für gespielte Vorrundenspiele erhalten haben.
- Leaderboard wertet Gruppenspiele und korrekt vorhergesagte KO-Runden-Teilnahmen.
Lokal starten
cd wm_tippspiel_proto
python -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
pip install -r requirements.txt
cp .env.example .env
python app.pyWindows cmd statt cp:
copy .env.example .envWindows PowerShell:
Copy-Item .env.example .envDanach öffnen:
http://localhost:7860Admin:
http://localhost:7860/admin/loginDas Admin-Passwort steht in .env unter ADMIN_PASSWORD.
Hugging Face Space
Der Space läuft als Docker-Space auf Port 7860. Die nötige Hugging-Face-Konfiguration steht im YAML-Block ganz oben in dieser README.md.
Empfohlene Secrets/Variables im Space:
ADMIN_PASSWORD=dein-admin-passwort
SECRET_KEY=ein-langes-zufaelliges-secret
DATABASE_URL=sqlite:////data/wm_tippspiel.db
PREDICTION_LOCK_AT=2026-06-11T19:00:00Z
APP_NAME=WM 2026 TippspielFür dauerhaft gespeicherte Daten sollte /data als persistenter Storage im Space eingerichtet sein. Ohne persistenten Storage kann die SQLite-Datenbank bei Neustarts verloren gehen.
Docker lokal testen
docker build -t wm-tippspiel .
docker run --rm -p 7860:7860 \
-e ADMIN_PASSWORD=bitte-aendern \
-e SECRET_KEY=ein-langes-secret \
wm-tippspielScoring
Vorrunde
- Exaktes Ergebnis: 3 Punkte
- Richtige Tendenz: 1 Punkt
- Richtige Tordifferenz zusätzlich zur Tendenz: +1 Punkt
KO-Runden
KO-Ergebnisse werden nicht bewertet. Es zählt, ob eine Mannschaft korrekt als Erreicher einer Runde vorhergesagt wurde:
- Erreicht Sechzehntelfinale: 1 Punkt pro Team
- Erreicht Achtelfinale: 2 Punkte pro Team
- Erreicht Viertelfinale: 3 Punkte pro Team
- Erreicht Halbfinale: 4 Punkte pro Team
- Erreicht Finale: 6 Punkte pro Team
- Weltmeister: 10 Punkte
Admin-Workflow
- Unter
/admin/loginanmelden. - Gruppenergebnisse eintragen und speichern.
- Live-Ergebnisse unter
/tableskontrollieren. - Bei nicht automatisch auflösbaren Tiebreakern im Adminbereich eine Reihenfolge per Team-Codes eintragen, z. B.
MEX,KOR,RSA,CZE. - Nach der Gruppenphase KO-Gewinner im Admin-KO-Baum anklicken und speichern.
- Leaderboard unter
/leaderboardprüfen.
Wichtige Prototypeinschränkung
Die Zuordnung der acht besten Gruppendritten nutzt aktuell einen constraint-basierten Resolver aus den offiziellen FIFA-Slot-Mengen. Für den produktiven Betrieb sollte die exakte 495-Zeilen-Tabelle aus FIFA Annex C als Lookup-Tabelle übernommen werden. Die Austauschstelle ist wm_tippspiel/engine.py, Funktion _assign_third_place_groups.
Tests
pytest -qNicht einchecken
Diese Dateien gehören nicht ins Git-Repository:
.env
.venv/
wm_tippspiel.db
instance/
__pycache__/
.pytest_cache/