diff --git a/mensa_app/customer_order_process_diagram_v1.pdf b/mensa_app/customer_order_process_diagram_v1.pdf new file mode 100644 index 0000000..fab8f5c Binary files /dev/null and b/mensa_app/customer_order_process_diagram_v1.pdf differ diff --git a/mensa_app/customer_order_process_v1.puml b/mensa_app/customer_order_process_v1.puml new file mode 100644 index 0000000..10d483d --- /dev/null +++ b/mensa_app/customer_order_process_v1.puml @@ -0,0 +1,65 @@ +@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 \ No newline at end of file