docs: Luecken in README und AGENTS.md schliessen
Abgleich der Doku gegen den Code ergab: - /admin/help und /customer fehlten in der Routen-Tabelle - Der Verzeichnisbaum zeigte nur die Screen-Ordner, nicht die Dateien auf Standort-Ebene (background.*, logo_<slot>.png, welcome.html) - gerade die sind aber bewusst Dateien und keine Ordner, weil jeder Unterordner als Screen interpretiert wird - Der Docker-Abschnitt erwaehnte weder das noetige --build noch die Log-Einstellungen (PYTHONUNBUFFERED, access-logfile), die fuer jede Fehlersuche die Grundlage sind AGENTS.md bekommt dazu einen Abschnitt "Betrieb / Diagnose". Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -153,6 +153,13 @@ Standorte (sites) sind die oberste Organisationsebene und gruppieren Screens.
|
||||
- User-Dropdown im Header: zeigt E-Mail + Role-Badge, Menü mit Passwort ändern, MFA einrichten (mit "Aktiv"-Badge wenn MFA eingeschaltet), Userverwaltung (Admin), Abmelden.
|
||||
- Info-Tab in Screen-Cards: zeigt Client-Info-Tabelle (IP, Browser, Auflösung, zuletzt gesehen) aus dem Heartbeat-JSON für den jeweiligen Screen
|
||||
|
||||
## Betrieb / Diagnose
|
||||
|
||||
- `docker compose up -d` startet nur neu und **baut nicht**. Nach Code-Aenderungen `--build` verwenden, sonst laeuft weiter das alte Image - das hat bei der Fehlersuche mehrfach zu falschen Schluessen gefuehrt.
|
||||
- Das Dockerfile setzt `PYTHONUNBUFFERED=1`. Ohne das puffert Python `stdout` blockweise (kein TTY) und **keine** `print()`-Ausgabe der App erscheint in `docker compose logs`. Tracebacks waren sichtbar, weil Flask sie ueber stderr schreibt - das machte den blinden Fleck schwer erkennbar.
|
||||
- gunicorn laeuft mit `--access-logfile -`, protokolliert also jeden Request. Ohne das laesst sich nicht feststellen, ob eine Anfrage den Container ueberhaupt erreicht.
|
||||
- `add_customer` protokolliert je Kundenfeld `Upload = <dateiname>` bzw. `Upload = keiner`. Ein geleertes `<input type="file">` - etwa nach einem Reload der Seite - sieht serverseitig sonst genauso aus wie "kein Logo hochgeladen".
|
||||
|
||||
## Repo Quirks
|
||||
|
||||
- `media/` and media file extensions are gitignored.
|
||||
|
||||
28
README.md
28
README.md
@@ -75,9 +75,12 @@ signage/
|
||||
├── history.json # Aktivitätsverlauf (Dashboard)
|
||||
├── media/
|
||||
│ ├── <site>/
|
||||
│ │ ├── lobby/
|
||||
│ │ ├── lobby/ # Screen-Ordner (jeder Unterordner = ein Screen!)
|
||||
│ │ ├── casino/
|
||||
│ │ └── videosysteme/
|
||||
│ │ ├── videosysteme/
|
||||
│ │ ├── background.jpg # Hintergrundbild der Willkommensseite (optional)
|
||||
│ │ ├── logo_1.png # hochgeladene Kundenlogos (Slot 1-3)
|
||||
│ │ └── welcome.html # Standort-Kopie der Willkommensseite
|
||||
│ └── priority/
|
||||
├── templates/
|
||||
│ ├── admin.html # Admin-Dashboard (Übersicht)
|
||||
@@ -175,6 +178,25 @@ docker compose up -d
|
||||
|
||||
Server läuft auf `http://localhost:5005` (gunicorn mit 4 Workern, non-root User).
|
||||
|
||||
**Wichtig:** `docker compose up -d` startet nur neu, es baut nicht. Nach Code-Änderungen:
|
||||
|
||||
```bash
|
||||
docker compose up -d --build
|
||||
```
|
||||
|
||||
### Logs
|
||||
|
||||
```bash
|
||||
docker compose logs -f signage
|
||||
```
|
||||
|
||||
Der Container ist so eingestellt, dass dort alles Nötige ankommt:
|
||||
|
||||
- `ENV PYTHONUNBUFFERED=1` im Dockerfile – ohne das puffert Python `stdout` blockweise, sobald es kein Terminal ist, und sämtliche `print()`-Ausgaben der App bleiben unsichtbar.
|
||||
- `gunicorn --access-logfile -` – protokolliert jeden Request. Ohne das ist nicht einmal erkennbar, ob eine Anfrage den Container überhaupt erreicht.
|
||||
|
||||
Beides fehlte anfangs und machte die Fehlersuche unnötig schwer.
|
||||
|
||||
---
|
||||
|
||||
## Routen
|
||||
@@ -222,6 +244,8 @@ Server läuft auf `http://localhost:5005` (gunicorn mit 4 Workern, non-root User
|
||||
| `GET /media/<site>/<screen>/<file>` | Medien-Datei ausliefern |
|
||||
| `GET /media/priority/<file>` | Priority-Medien (global) |
|
||||
| `GET /media/<site>/logos/<file>` | Manuell hochgeladenes Kundenlogo |
|
||||
| `GET /admin/help` | Hilfeseite zur Bedienung |
|
||||
| `GET /customer` | Alias für `/willkommen` |
|
||||
| `GET /media/<site>/background/<filename>` | Hintergrundbild der Willkommensseite |
|
||||
|
||||
### Heartbeat / Online-Status
|
||||
|
||||
Reference in New Issue
Block a user