# RiccardoChat – KI-Beratung im Shop

Chat-Widget in der Storefront. Die Antworten entstehen ausschließlich auf Basis
eigener Inhalte: Artikel, Kategorien, Anleitungen, Magazin-Beiträge und
Service-Seiten. Der API-Schlüssel liegt nur im Backend, der Browser spricht
ausschließlich mit dem Shop.

## Ablauf einer Frage

1. `POST /chat/nachricht` mit Frage, Gesprächs-Token und optionaler Artikel-ID.
2. `ShopKnowledge` sucht passende eigene Inhalte (Artikel inkl. Preis und
   Verfügbarkeit, Kategorien, Anleitungen, Magazin, Service-Seiten).
3. `SystemPrompt` baut die Leitlinien und den Block „Unsere Inhalte“.
4. `AnthropicProvider` fragt die Claude API (Modell aus der Konfiguration,
   adaptives Denken, Aufwand konfigurierbar, Wissensblock mit Cache-Markierung).
5. Frage, Antwort, Quellen, Token und Kosten landen in
   `riccardo_chat_conversation` / `riccardo_chat_message`.

Fällt die API weg – kein Schlüssel, Tagesbudget erreicht, Fehler oder
Verweigerung – antwortet der `FallbackProvider` ohne KI mit den gefundenen
eigenen Inhalten und einem Verweis auf Kundenservice und Filialen.

## Leitlinien (in `SystemPrompt`)

- Nur Themen aus Sortiment, Geräten, Liquids, Zubehör, Bestellung, Versand, Filialen.
- Nur Angaben aus „Unsere Inhalte“; keine erfundenen Artikel, Preise, Bestände,
  Lieferzeiten oder technischen Daten.
- 18+, keine Beratung, wenn die Frage nach einem Minderjährigen wirkt.
- Keine gesundheitsbezogenen Aussagen, kein Rauchstopp-Versprechen, Verweis auf
  Ärztin oder Arzt.
- Keine Rabatte, Gutscheine oder Zusagen zu Reklamationen.
- Bestellungen, Retouren und Garantie gehen an den Kundenservice.

## Konfiguration

| Bereich | Feld |
| --- | --- |
| Chat | Anzeigen, Begrüßung, zusätzliche Hausregeln |
| Modell | API-Schlüssel, Modell (Opus 5 / Sonnet 5 / Haiku 4.5), Aufwand, Antwortlänge, erinnerte Gesprächsrunden |
| Grenzen und Kosten | Nachrichten je Gespräch und Stunde, Tagesbudget in Euro, Preis je Million Eingabe-/Ausgabe-Token |

Die Token-Preise sind bewusst leer: erst wenn sie aus der aktuellen Preisliste
eingetragen sind, rechnet der Kostenwächter mit und das Tagesbudget greift.

## Offen

- Streaming ist im Anbieter vorbereitet (`stream()`), die Storefront holt die
  Antwort derzeit in einem Stück.
- Kein Admin-Modul; Gespräche lassen sich über die Admin-API der Entitäten
  `riccardo_chat_conversation` und `riccardo_chat_message` auswerten.
- Übergabe an den Kundenservice ist als Feld `handover` vorgesehen, aber noch
  nicht verdrahtet.
