diff --git a/AGENTS.md b/AGENTS.md index 8252a8b..29265f0 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -4,4 +4,5 @@ - Commits und Push erfolgen nur durch expliziten Befehl des Nutzers. - Der Server (server.py) wird immer unsichtbar gestartet: `Start-Process -NoNewWindow -FilePath "python" -ArgumentList "server.py"` - Bei Updates (Polling/Code-Änderungen) niemals den aktuell angezeigten Zug wechseln. Der Benutzer bleibt auf dem von ihm ausgewählten Zug. +- Nach jeder Code-Änderung muss die Doku (README.md) auf Richtigkeit und Vollständigkeit geprüft und bei Bedarf aktualisiert werden (Features, Projektstruktur, Konfiguration, Umgebungsvariablen, Technik-Tabelle). diff --git a/README.md b/README.md index 63baebe..06a3571 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# 🏆 Lara Kiesewetter – Live Schachturnier +# Lara Kiesewetter – Live Schachturnier Live-Überwachung von Lara Kiesewetters Partien bei der **ODJM (Offene Deutsche Jugendmeisterschaft)** 2026. Die App lädt automatisch PGN-Daten von der Deutschen Schachjugend, zeigt das aktuelle Spielbrett an und listet alle Partien von Lara. @@ -7,23 +7,26 @@ Live-Überwachung von Lara Kiesewetters Partien bei der **ODJM (Offene Deutsche ## Features - **Live-Brett** – Visuelle Darstellung der aktuellen Partie mit chessboard.js +- **Stockfish-Analyse** – Bewertungsbalken (Eval-Bar) mit Live-Score in Bauerneinheiten, powered by Stockfish-Engine - **Spielerinfo** – Anzeige von Namen, ELO und Schachuhr beider Spieler -- **Zugliste** – Alle Züge der aktuellen Partie mit Klick-Navigation +- **Zugliste** – Alle Züge der aktuellen Partie mit Klick-Navigation und Pfeiltasten-Steuerung - **Alle Partien** – Übersicht aller Runden mit Lara; Klick zum Wechseln - **Live-Erkennung** – Automatische Erkennung laufender (unterminierter) Partien -- **Auto-Refresh** – Aktualisiert die Daten alle 60 Sekunden -- **Proxy-Server** – Lokaler Python-Server mit PGN-Caching und CORS-Unterstützung +- **Turniertabelle** – Tabellenplatz, Punkte, Siege/Unentschieden/Niederlagen von Lara +- **Auto-Refresh** – Aktualisiert die Daten alle 30 Sekunden +- **Proxy-Server** – Lokaler Python-Server mit Stockfish-Engine-Wrapper, PGN-Proxy und statischem File-Serving ## Projektstruktur ```text -├── app.js # Hauptlogik (Brett, UI, Auto-Refresh) ├── index.html # HTML-Grundgerüst -├── style.css # Dark-Theme-Styling -├── pgn-parser.js # PGN-Parser (Header + Züge extrahieren) -├── server.py # Lokaler Proxy-Server (Python 3) -├── cache/ # PGN-Cache (wird automatisch angelegt) -└── lara-chess/ # (optional – reserviert für Erweiterungen) +├── style.css # Dark-Theme-Styling (responsive) +├── js/ +│ ├── app.js # Hauptlogik (Brett, UI, Auto-Refresh, Eval-Bar) +│ └── pgn-parser.js # PGN-Parser (Header + Züge extrahieren) +├── server.py # Lokaler Proxy-Server + Stockfish-Engine (Python 3) +├── cache/ # PGN- und Standings-Cache +└── stockfish.exe # Stockfish-Schachengine (Windows) ``` ## Setup @@ -31,6 +34,7 @@ Live-Überwachung von Lara Kiesewetters Partien bei der **ODJM (Offene Deutsche ### Voraussetzungen - **Python 3.6+** für den Proxy-Server +- **Stockfish** (optional, für Analyse) – auf Windows: `stockfish.exe` im Projektverzeichnis - **Browser** (Chrome, Firefox, Edge) ### Installation & Start @@ -47,19 +51,16 @@ Live-Überwachung von Lara Kiesewetters Partien bei der **ODJM (Offene Deutsche ``` (Der Server serviert auch die statischen Dateien.) -### Ohne Proxy (direkter Dateizugriff) - -Öffne `index.html` direkt im Browser. Hinweis: Der CORS-Proxy (`server.py`) muss trotzdem laufen, da der PGN-Endpunkt keine CORS-Header setzt. - ## Technik -| Komponente | Technologie | -| ------------------ | --------------------------------------------------- | -| Schachbrett | [chessboard.js](https://github.com/oakmac/chessboardjs) | -| Schachlogik | [chess.js](https://github.com/jhlywa/chess.js) | -| UI | HTML, CSS, Vanilla JS | -| Proxy-Server | Python http.server (ohne externe Abhängigkeiten) | -| PGN-Quelle | deutsche-schachjugend.de (ODJM 2026) | +| Komponente | Technologie | +| ------------------ | ------------------------------------------------------------ | +| Schachbrett | [chessboard.js](https://github.com/oakmac/chessboardjs) | +| Schachlogik | [chess.js](https://github.com/jhlywa/chess.js) | +| Stockfish-Analyse | Stockfish Engine (lokal, via POST `/evaluate`) | +| UI | HTML, CSS, Vanilla JS, jQuery | +| Proxy-Server | Python http.server (subprocess, threading, NDJSON-Streaming) | +| PGN-Quelle | deutsche-schachjugend.de (ODJM 2026) | ## Deployment @@ -126,26 +127,8 @@ server { ### Umgebungsvariablen (optional) -In `server.py` können Port und PGN-URL über Umgebungsvariablen überschrieben werden: - -| Variable | Default | Beschreibung | -|---|---|---| -| `PORT` | `8111` | Server-Port | -| `PGN_URL` | (siehe server.py) | Quelle der PGN-Daten | -| `CACHE_TTL` | `30` | Cache-Gültigkeit in Sekunden | - -## Konfiguration - -Die wichtigsten Konstanten in `app.js`: - -```js -const PGN_URL = 'https://www.deutsche-schachjugend.de/2026/odjm-d/partien/gesamt-utf8.pgn'; -const REFRESH_INTERVAL = 60000; // Auto-Refresh alle 60s -const PLAYER_NAME = 'Kiesewetter, Lara'; -``` - -Im `server.py` lässt sich der Cache-TTL anpassen: - -```python -CACHE_TTL = 30 # Sekunden -``` +| Variable | Default | Beschreibung | +| ------------------- | ------------------------------ | ------------------------------- | +| `PORT` | `8111` | Server-Port | +| `STOCKFISH_PATH` | `stockfish.exe` / `stockfish` | Pfad zur Stockfish-Engine | +| `STOCKFISH_DEPTH` | `25` | Stockfish-Suchtiefe |