65 lines
2.9 KiB
Plaintext
65 lines
2.9 KiB
Plaintext
@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 |