Doku aktualisiert: README aktualisiert (Features, Projektstruktur, Env-Vars), Doku-Prüf-Regel in AGENTS.md

This commit is contained in:
2026-05-26 12:57:16 +02:00
parent 6ba57c3927
commit a42fe45812
2 changed files with 28 additions and 44 deletions

View File

@@ -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).

View File

@@ -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 |