@startuml ' Teilnehmer – Standard‑Icons actor Student as "Student" participant Browser as "Browser" participant WebsiteServer as "Website Server" database OrderDB as "Order DB" participant OrderService as "Order Service" participant InventoryService as "Inventory Service" participant KitchenDisplaySystem as "Kitchen Display" participant NotificationService as "Notification Service" ' ---------- Login ---------- Student -> Browser : Öffnet die Webseite Browser -> WebsiteServer : GET /login WebsiteServer --> Browser : Liefert Login‑Seite Student -> Browser : Gibt Benutzerdaten ein und schickt Formular Browser -> WebsiteServer : POST /login\n{username, password} WebsiteServer --> OrderService : Authentifiziere User OrderService --> WebsiteServer : OK (Session‑Token) WebsiteServer --> Browser : Setzt Session‑Cookie & leitet zur Menüseite ' ---------- Menü auswählen ---------- Student -> Browser : Wählt Speisen aus dem Menü Browser -> WebsiteServer : GET /menu\n{session} WebsiteServer --> OrderDB : Liefert aktuelle Menüpunkte OrderDB --> WebsiteServer : Menüdaten WebsiteServer --> Browser : Zeigt Menü ' ---------- Artikel zum Warenkorb hinzufügen ---------- loop Für jeden gewählten Artikel Student -> Browser : Klickt „In den Warenkorb“ Browser -> OrderService : POST /cart/add\n{session, articleID} OrderService -> OrderDB : Update Cart (Add Item) OrderDB --> OrderService : OK OrderService --> Browser : Rückmeldung "Artikel hinzugefügt" end ' ---------- Bestellung prüfen ---------- Student -> Browser : Öffnet Warenkorb und prüft Bestellübersicht Browser -> OrderService : GET /cart\n{session} OrderService -> OrderDB : Liefert aktuelle Cart‑Daten OrderDB --> OrderService : Cart‑Details OrderService --> Browser : Zeigt Cart‑Übersicht ' ---------- Checkout (ohne Bezahlung) ---------- Student -> Browser : Klicke „Zur Kasse“ Browser -> WebsiteServer : GET /checkout\n{session} WebsiteServer --> NotificationService : Sende “Bestellung anstehend” (Optional) NotificationService --> Browser : Bestätigungsnachricht Student -> Browser : Gibt Zahlungsinformationen für Bezahlung vor Ort ein und schickt Formular Browser -> OrderService : POST /checkout/confirm\n{session, paymentMethod="VorOrt"} OrderService --> OrderDB : Speichere Order & set Status “Pending Payment” OrderDB --> OrderService : OK OrderService --> KitchenDisplaySystem : Sende Order‑Details (Zubereitung) KitchenDisplaySystem --> Browser : Zeigt „Bestellung in Bearbeitung“ OrderService -> InventoryService : Update Bestand InventoryService --> OrderService : OK OrderService --> NotificationService : Sende “Bestellung bestätigt” (Email/SMS) ' ---------- Fertigstellung ---------- Student -> Browser : Empfängt Benachrichtigung “Ihr Essen ist fertig” Browser -> KitchenDisplaySystem : Optional „Abholung bestätigen“ @enduml