Files
SGTMensa/mensa_app/customer_order_process_v1.puml
T

65 lines
2.9 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
@startuml
' Teilnehmer StandardIcons
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 LoginSeite
Student -> Browser : Gibt Benutzerdaten ein und schickt Formular
Browser -> WebsiteServer : POST /login\n{username, password}
WebsiteServer --> OrderService : Authentifiziere User
OrderService --> WebsiteServer : OK (SessionToken)
WebsiteServer --> Browser : Setzt SessionCookie & 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 CartDaten
OrderDB --> OrderService : CartDetails
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 OrderDetails (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