# Gastro-KI — Projektstand

Projekt: KI-gestützte digitale Speisekarte für die Gastronomie (SaaS).
Stand: 05.11.2026 — Entwurf abgenommen, Robert sammelt eine Woche lang Wünsche
in `WUENSCHE.md`, danach Weiterbau.

## Dateien

| Datei | Zweck |
|---|---|
| `prototyp-tablet.html` | Gast-Tablet: Speisekarte, KI-Kellner "Lena", Bestellfluss, Küchendisplay |
| `verwaltung.html` | Wirt-Admin: Gerichte, Allergen-Matrix, Kategorien, KI-Regeln, Protokoll |
| `WUENSCHE.md` | Roberts Wunschliste — hier anknüpfen beim Wiedereinstieg |
| `START-HIER.md` | Diese Datei — Stand und nächste Schritte |

## Beim Wiedereinstieg zuerst lesen

1. `WUENSCHE.md` — was Robert ändern oder ergänzen will
2. Diese Datei — Stand, Haftungsregel, wie die Dateien zusammenspielen

## Wie die beiden Dateien zusammenspielen

Die Verwaltung speichert die Karte im Browser unter `localStorage["lindenhof-verwaltung-v1"]`.
Das Tablet liest denselben Schlüssel beim Start (`karteLaden()`).

**Wichtig:** Beide müssen aus derselben Herkunft (Origin) geöffnet werden.
Ein Tab lokal + ein Tab über den Tunnel = zwei Origins = die Übergabe schlägt
still fehl. Immer beide gleich öffnen.

## Haftungsregel (nicht entfernen)

Ein Gericht mit `allergeneGeprueft: false` erscheint **nicht** auf der Gastkarte.
Grund: eine ungeprüfte Angabe würde am Tisch als "enthält nichts" gelesen,
und daraus entsteht die Haftung nach LMIV. Beim Speichern ohne Bestätigung
kommt ein Dialog; wer trotzdem speichert, bekommt das Gericht als
"nicht geprüft" (gelb) in der Matrix — aber nicht am Tisch.

## Lokal starten (Vorführung)

```bash
cd /opt/data/projects/gastro-ki
python3 -m http.server 8080 --bind 0.0.0.0
```
Dann im Browser:
- http://127.0.0.1:8080/verwaltung.html
- http://127.0.0.1:8080/prototyp-tablet.html

## Von außen erreichbar machen (Tunnel)

Die Ports des Servers sind von außen gefiltert (verifiziert: 8080 und 4860
liefern von außen HTTP 000 / 522). Deshalb nach außen tunneln:

```bash
curl -sL -o /tmp/cloudflared \
  https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64
chmod +x /tmp/cloudflared
/tmp/cloudflared tunnel --url http://127.0.0.1:8080 --no-autoupdate
```
Die `https://<zufall>.trycloudflare.com`-Adresse steht nach ~5 s im Log.

**Nicht** über Datei-Hoster (catbox, x0.at) gehen: die liefern HTML an Browser
als `text/plain` aus, der Nutzer sieht dann Quellcode statt der App.
Geprüft und bestätigt — deshalb der Tunnel.

## Tunnel im Betrieb

- Start: `terminal(background=true, persist_on_release=true)` mit dem
  cloudflared-Befehl. `persist_on_release` lässt ihn ein Sitzungsende überleben.
- Adresse auslesen: `process_manage(action="log", session_id=...)`.
- Der Webserver (Port 8080) muss parallel laufen — sonst antwortet der Tunnel
  mit 502.
- Es ist ein Test-Tunnel ohne Verfügbarkeitsgarantie. Für den Echtbetrieb
  braucht es einen echten Host mit Domain.

## Nächste Schritte

1. Backend mit echter Datenbank (PostgreSQL, mandantenfähig von Tag 1:
   `restaurant_id` in jeder Tabelle) — ersetzt localStorage
2. Spracherkennung am Tablet echt anbinden (Groq STT ist konfiguriert,
   Sprache: de); Push-to-Talk ist gebaut, Erkennung noch simuliert
3. Küchendisplay per Websocket + ESC/POS-Bondrucker (Epson TM-T20 o. ä.)
4. Pilotrestaurant: Durchschnittsbon vorher/nachher messen — das ist das
   Verkaufsargument gegenüber weiteren Wirten

## Bewusste Grenzen des Prototyps

- Sprache ist simuliert (Beispielsätze), Text funktioniert vollständig
- Keine Datenbank, kein Login, keine Mandantentrennung
- Kassensystem ist nicht angebunden (bewusst: TSE-Zertifizierung vermeiden,
  Bestellung geht an Küchendisplay + Bondrucker, kassiert wird am vorhandenen
  System)
