Explorer
/opt/struktur/telefon-agent/docs/state-machine.md
← Zurück ↓ Download
# State Machine — Gesprächslogik (Phase 1: Simulation)

## Zustände

```
S0 GREETING      Begrüßung + Transparenz-/Consent-Ansage:
                 „Sie sprechen mit dem digitalen Assistenten von Mallorca
                 AirServices. Das Gespräch wird NICHT aufgezeichnet; ich
                 notiere Ihre Angaben für einen Rückruf."
S1 LANGUAGE      „Für Deutsch drücken Sie die 1 / Para español pulse 2 /
                 For English press 3" — Phase 1: simulierte Tastenwahl.
                 Kein Input → Erkennung aus erster Äußerung; bei
                 Unsicherheit Deutsch + Nachfrage.
S2 REASON        Offene Frage „Worum geht es?" → Intent-Klassifikation
                 (Schwellen: docs/sicherheitsregeln.md §4)
S3 SLOTS         Name → Rückrufnummer (Ziffer für Ziffer wiederholen und
                 bestätigen!) → Ort → Thema/Kurzbeschreibung → grobe
                 Dringlichkeit (akut / nicht akut). Gefüllte Slots werden
                 nicht erneut abgefragt (Vento-Prinzip).
S4 CONFIRM       Zusammenfassung vorlesen → „Ist das richtig?"
                 (nein → genau 1 Korrekturrunde)
S5 CLOSE         Rückruf ankündigen (OHNE Zeitzusage) → verabschieden → Ende.
                 HumanSummary erzeugen → (später) Queue/Case Intake.
SX HANDOFF       Sofortübergabe: HumanSummary mit EscalationLevel
                 sofort_handoff; nur Rückrufnummer bestätigen, dann Ende.
```

## Übergänge

| Von | Ereignis | Nach |
|---|---|---|
| S0 | Ansage abgespielt | S1 |
| S0 | Consent-Widerspruch | S3 (nur Rückrufnummer) → S5 |
| S1 | Taste 1/2/3 oder erkannte Sprache | S2 |
| S2 | Intent ≥ 0.70 | S3 |
| S2 | Intent 0.40–0.69 | S2 (eine Nachfrage) |
| S2 | 2× unklar / < 0.40 | S3 (Minimal-Slots) mit Intent `unklar` |
| S2/S3/S4 | RiskFlag reklamation oder wut | SX |
| S3 | alle Pflicht-Slots gefüllt | S4 |
| S3 | 2× Erkennungsfehler auf einem Slot | S3 nächster Slot bzw. S4 (Minimal) |
| S4 | „ja" | S5 |
| S4 | „nein" (1. Mal) | S3 (Korrektur des genannten Slots) |
| S4 | „nein" (2. Mal) | SX (Rückruf klärt Rest) |
| alle | Turn-/Zeitbudget erschöpft | S4 (Minimal-Zusammenfassung) |
| alle | Spam/falsche Nummer erkannt | S5 (höflich beenden, keine Datenerfassung) |

## Pfad-Sonderregeln

| Fall | Verhalten |
|---|---|
| Neukunde DE/ES/EN | Standardpfad S0→S5 in gewählter Sprache |
| Bestandskunde (Nummer bekannt) | verkürzt: „Geht es um Ihren bestehenden Vorgang?" → nur Thema + Dringlichkeit |
| Reklamation | sofort SX: „Das klärt der Chef persönlich" → Nummer bestätigen → Ende |
| Reiner Rückrufwunsch | direkt S3 (Nummer + Zeitfenster) — kürzester Pfad |
| Unklare Anfrage | max. 1 Nachfrage, dann Rückruf statt Weiterreden |
| Spam / falsch verbunden | höflich beenden, Session `spam`, keine Datenerfassung |
| Wütender Anrufer | Verständnis-Satz (Template) + sofort SX |
| Außerhalb Geschäftszeiten | Hinweis-Template + normale Aufnahme, CallbackRequest mit Zeitfenster |

## Phase-1-Umsetzung

Die Testkonsole speist Text-Turns (simulierte STT-Ausgabe inkl. absichtlicher
Fehler für Akzent-/Qualitätsszenarien) direkt in die State Machine. Audio
existiert in Phase 1 nicht.