From b85e19b94ae021021c0b2f67e6e0da2c7ee2fddd Mon Sep 17 00:00:00 2001 From: Martin Putzlocher Date: Thu, 11 Jun 2026 09:35:31 +0200 Subject: [PATCH] UML-Sequenzdiagramm zum Bestellugnsprozess --- .../customer_order_process_diagram_v1.pdf | Bin 0 -> 9983 bytes mensa_app/customer_order_process_v1.puml | 65 ++++++++++++++++++ 2 files changed, 65 insertions(+) create mode 100644 mensa_app/customer_order_process_diagram_v1.pdf create mode 100644 mensa_app/customer_order_process_v1.puml 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 0000000000000000000000000000000000000000..fab8f5c62a9dbd8fbc337b71889d88a8b5480043 GIT binary patch literal 9983 zcmbt)WmKEpwk|F~T3VnK4epTO5Zv9JLJ1HcNP@d-OOc`tS|}9P0tE`Rc(GEvcyZUF zMaqG1@BQ6<_8Di~JH~zgBLtCU9 zP!{R|cVq|f%DKVr{vi?aP!AZ8OKVD%z%~%sbHepnxW!XlqeC%aTsWQtvne4U)b)%t}=NJ@8Z(}vJd_bJvg`nw|}1SRuUbLi+3oq&Od;Fd7}`|YM1t>3_T2m1^~XPJN!U)vVTPM`|7NZ&g*+n z;MrR3)#ZC#K=pM)@S+`m^SKc$^bG!MAv%j|xcV@&b?vP*BAbw_ctJySh8i=*6mDj`V?owO2&OlfBOYYfo^Re?YhMA{`ZE}%VU2Y9&yXb$F9_~RhT*giHf*mUzm_Y zU$gIsP;>wcRh)@gaw3z|`s~)G=f;Fk@p8e&IF{~-G8emyad;v5brij8>^}MB$B;=p z()eQqw182!th&)&hXkTRak`*^FGmg3ik!8YL7dXLa+EI|;hPc))x}Y;+#4~O%GP?l z{UT`1N0G@^&uu0BtciiixlG^4{GV+harRzz9&s+pIUcbxJ7}m$G?Oxc*e!G2+V{k4 z3(Mr6M6uHjp4g!a(H@R5mxVsXn8uXX8fg#VPagsFtCv8Bdqgdlo>0-hW|+4K7)y@& zqoy)T>okcBCyh$F{t)B>t7?P{ZWg7+KAX ztP1^=@IdPx-00V*QgA8JqHwRor-UjiFZCc3c|A%|HOXi{I6zJ5M~Tp`Q1!{Dh%}oW z)>)AK3bl0H1Dui`+*`$6%t;=KN3oq&0U&tHQTr-Sba)*E|EM!);hC@G^@-V^lYF*M zHYXkPq4U2XC&29&f^G(;!&m*GIsPL6^M-U4$Y#~os=N@~7bfY`J9w=-tu+y7%e!n? z=BfB%68@~EWNQHNLc+K|=^q(OF~ zI7O%)$yYo?w>Eqck+}B!P{s+TU7}VtVtf!l5~yJLE1KS^{MOcbYb|=|1fQ^o-t&ee z|4e4~HrSsW0>?iU#S^+9_xTS0C6>X#piGvXnXvG#gGg4wZwK43;v^?Jk(hD&=!vq1 z){v}Hz~}i7MFuX(ZhbRZb3=n9S|`akGk~D=grG(dNIB-0BPB^xSeK-4R^zqa;kycJ zI-8aE#AHj0;cpWoRP*r^S;N19PDbHdq3PS3=~9 zg_FZeA$kE!JW2~93p&tP@&uMAWsL&9Pg2Ub%e~{Yj1BKaUYPJrYnsS;vnDqlB?msOK334QRl|PFI%Q^40egWKGKytR7CSK~ zKrsBWWC=tp5;3hyIPS#$C(%@_+*KfkBEOcqyDP()eGoE&j6r~YWZ$BFj{0#0^5 z6{c3Nm5Qy>atVlQGNlH0(oMel(&_5&c(vmpyQ}&q=us?;Pr^-pMc>n6;y^ggCHN&@CN7dl+xfi z>fH}P)dvJaT_!T#y_L&PzAL_*?$yIXz_BG*=ltw;|`aP0HNT>j7 zjW@L)M-kJYM*XZXO-!|%rtV6m^1f6|v@m)rSn&(UUs*;`ipk<3B=C=#PMJQ%rQ0lf zTcyoy-<1kZ@IOk$-9W@DTdJHOxck$?d;yh(n1s1s%Rt-n#lBdA8IzoGbhJOkzMi4w z;Q&`qZ_*<;4O#&!NH1jrPIHLST|f!24v|AGbxVIcT&62Ak)Kt>jHwZwHCHd5-nXLB z9;|P4n5H?oJfpmZGR5*giW;dWdB8;Fk4t{><&ByM%I5KLU2A^Mi}e*YT7vZ;A5X$} zGQN6WyMBX%`{;4pb3k+h3I6KwKF@H@QPnjJ&RpoLLTOlh%~8aLP~wq1Zf7nbvVu5; z4WgpH^$bge4%AELkh!iTX@^M{i()X7{33bU!yGf?cVnn&aw)65ia%lDTes08r+smi z;2$ZBXIGu2Zd#PN>-E2a!gQcHs>!E}QoOlmC7OPug8eUpB${n6` zAY8z5bOWv`zhzBMIlj-b;|v^AjLe}pG=UP)k`|m22usX1F0PPd)J0q2sl#KUlKA(O|v3A!t~$d5}1`*+Yu= zWK_rYYx-LJp|ecw`l7pl=g}>hCdsQ=Iuzsc8^s@JHJ zd)+?AvG7stpf6IQ&q)AM%Ti^sL?jr`oSbwlG1#SEhlCblW4jPZD~L?^BD7srBh;RSmHO*d&#fQnw$v3M*`ZlRBt z<$KETp(I#bPpkgW$36II0hxfA`tzx=!dOLD3B*99bM}VpOlnHOwB}I#ss_zQ6#2ek z$<1NG>a2F9#;!%hoOx(BPJ-ly8JNf|C?(^T0uwUBQr1(jFEUAx#S7M;si{msi@-nag5zf^qT!qMp}a5*=++zHM}DIcG1uEZXmmq=Pj|X z)Jj*e14t=4YfM(hZ9&5VTeaN^uUG2Z&@v7U6DEdJu&ufz$V+asYLq(b32HW=)>mNdQCDp&_ZfF=>Ql z00nkpNmy@g20uz=^|@!MLU1{72WQ{OywSug=j zfj;IADo^2uR#?gBO_`CCpFZRD_spU)^^qsAKQft9?FPCmXpiz5l}H4CNHwAwBwK9X z6p(U~yJ?|#JuKbv&9TA`*bpTcuXMG5P1BpHVe)v$Y3P(K`R(ry740immTziTm&woc z1ZtWhM=&0IBa2;c?LU6BkEuStiDmNxK=IWzE2FX*jp<>W1)yEO=qW{7A(NG_l4xTd z7OhS%Z%&GLfLj~CZB!=!$@Zh1re`+3|M-|AOwd&NEKYiWb8Hq`U~*7?&bHG)XCFPM zlXY%zTe67-`I&2uJ6pH;?)660BOgS5{@Q~&t$4M(u~1Sf8Z6^Q56J--!j)=VfNt&A zO#A8g-^P2cS$~4P+i_eEh0`LC!Al+#^~!UX%rx5pr$5J7$vSKvUFPSQ85L^FCcm>t z+=_fhHZ1%@Fds9#j~B^07^_?Zjp|t1p1jBJ7OLm_P zt{AuUOqY66^9VashpJ8kV~YyMbfa?fZJhX`CVMq?YSmYbLH1ZAuJ@G1GBYtjna_$( zn-;?^8?8$Z>M(?$@au@k_(L^{!Mw3Y`iEsEGCl!=uJLC&dLEk-Y$K9D-3OH^{5KX07p{5+|cr#;SMR660@U^m2?BzIW9^CZJuNO zWBi&1*1`-@o_Ziwm{c^%phs!Mc#wU=QW1u#&NVrGgp5SCCeA88f&zH$^M?0}X`JVjklX5Ca@Uj{sa;<_>M zFGR4K97^;@*i_oQIebCqp(thl=U|yc8)cPy$!Uq96y6XR;~7F*C5llL%)_0lf zp)08U;M+zBtGJIiAF^o4&b_@>7aSpcDi|VQDvm7P${kGZ#G<`OgC_2r+rQ3#GyiR* z&4-4QYHTmsB1p;%hca28ER{^!sPp6A5#7~KgDW`2@aMUS&jnZ_n^9q2DP0q;OoV>y zq3*D}&Ya5qt*5ckGCyd>CVN+9>qLv~!1+v{hVT_1!ee_lnf!1qZ8VFDw$XK!{5rc< zWe?!pQcj+Yt4E5t(LAxZ8z5SwxZ$vc6%41}(RhVgXudf&oLW-nV;4H^<`0w?(u;3Vkft$DQr6C$*08?qIN9WAU+Jlc}YwNS-7TM_>&hp$?-d_eEP<*awq zO_-GwZkb0d1vFs@W9(0<7&-P(hC;AhhqO3!lpu2q0`m+ttpB((C zeNgIzZR<~|Q&$zeO%Uov(uvtS?&xK#T{GXhdAjg@-LE5v?dIoBO(757gDXIrC0_fP zQQZV@OcQdOd3h`+2d0*TiY8(yPv7gF?~*PFJ$p1j0SJ2wsBqVxRDHQb{ot8NNwV}$#!7&D25c!O`slF%A%2$seTj z;vzfb%N4G+PA?h^7Egb?#{PH;>M~l$+|{)ya*&3KEq0Kn=?V6sdvlTSv_#=GRx33t zYiioVl%^RX?q?$og2POlgM+8Fz76>?8%;i@2Cf~E%#tiSa|uPYZhkL6vU7nxKOc>v zD7xzcGx)w1gFgo6-nch#Jlx4Ks-u}+GOBBnznnHiEEfN=X_p00Lbhn*EC)PMhY1}y zsQXS(q;fGC5Ap(nI%2+V58Ht1KXt`ZibN+_VC5VOBEND{xq>?%77U9QTM|Z2E!6U0 zH?Q7gxq6WnH9BNxIN5K7QiXm?__!N zd$?&%U;9j;2EK)MuOPEa^K>PL9|W6b=bQ59uP;E=RO$%u;WQo2{ms}b)}-HMt3>v{ znNxPn`KpuO#SlxOP>}rGisG+%bU$jkisaHIw-M(D&n>M0o zSS)5Kvk4VVKa}Rgg^y5VshmrZ-F~!?=^S;er4|nAZ{RML69}t}jpi9g9TJsdp2G)A z0}K6+E&PGEhd<4#q1WxHtW7j~-mzXq;s@-!V`AhImf&})P*-c70y4Wg zbxE&QOZSgFt0AUVzw7Xje)TlmS$fn01BW72)G7Q~kQufWOD$i=NGpqKhjJYcc{}^B z%pEc%lZ{?|1jMu>4$t*5B=N6jt#5RIMX`hHJ3ga+s(l64NfX20jGtoFuL+F!&= zCsbF5o}{#?sfH|pMin~Yu_;cb1!R&=Yt5RKOoR?k0Tf-ry%x(h09Q_tm5cHNgWk}9 zi3ol;C8$s-ypo|@7Rk`>fDGnrH4yuG3l}h>tmG%URVM$}WoGsbe>YUq z;j8V()!Yn4dYq4G!(C#ZVBH<-dxd9855dg-fI%3Y?bT0;WV{s=)m4~mWfLitZ;+mT zGR}LG1iW;9Qr-ivzuJ?5`}QR0t~~+fJnwmPcn!#j)*}(0pSQM5fw(+zB5FsKCc@e*NTeqfV?aI&V zOj)7d5KEc{W37vIb6@x$q?68^R_lJt7Poo>lj`%4zz1#9qYq>xd74@>II0Rob#~lc zAa*OwyH*LI)`LkGJ0R_sXezvv2;}_5_-Rj@3NA%wSa&zEo))1P z{4Pg%R-Dhgs1);6)TLdw8=zR^g&wTAEn)Q)!OI0&_(a~d1R_B9dR{iXY_qmSL9ON;fM@h2V=#>edr%BeX1<0G1j}=>`)TWDn zBu`LiY_opiCsJ&sU8aP2@NT-{|JrA(GH!eqIb;#+cFs2B>ZMP*`>e{VlPL0;F5bz@ z%qu2#PSFgx;F@NaXv22|p3>h;=sY%=o@!OWt6I!pD*^Sa4QhQ^j5*00L2|D{WpVL0 zlyT%z!{#U_MI>|mpLhVJ9>OZvx}{SXto=zVdc|c#t&~HUpGcK0^p|8ewh4Tg$9d^P zAfGA8F4ty+*k*PqH`#rR({*CeA}k&@{~x5fE2baz z4{n6Kc-Xcac{*%)Lph(-6OSEZv}sM8@`8V1^nL~R9AVFAhJ;@PlNYX1g-6UnQ_%f) zsE#+<^o@z*1_;6_&AI)2w}vupb_l{LvK`;}3tK+teiE=Q>$+vR?K$|yeZeJz>f_@n z@6pq2l*L{Yd8K{cCU%?*T<5UI#X`qxK}WeY--b^tVS_-nnzp3SL{)+&!lO0s%t^nh z$272s19OMA=ULo1ryvcq3S0X;MnNgO&o+si`$qa|)yF$izIpaf!M>q|%i+dMJi>Mg zT6ETn*45se{gWqL<&|GU9j)UFm4-iz{8^r%JPFIjq9`8wrAszknQ=ckf}Q2-4;r|) zHHa1K#Fw?KgjwzwW|55ckqI;1`K%|Vp$_FBU)h9)s;694OGKpcE&!;KtCj9&8#as$ z->kLR&)F5~J$BoDM81QNkalwN4Z7|8SSb=j>swtsF~R)kdFz2e2br{AHaB(^x!cxN z=x@#2Z5Rc4zi8}*CR_@aokWo@B$|4!9+=Ja_=S_+L|xy+Sk_gH`e!Ib8Kd{*V`B7T=ePY|PH8<2^c6PxDl=0|$^H z*r_ve$rTHtoPj@QR5ik_x6=c9>5;o>LTBGx>&p2`inkp;5Bq%Ou<%0RB;D$&Zf3vo z`+OKFE&x5BAIt*^FpCIz_QcShLtuVa2EwV!AwuSVe5h zed(vkrlq>TIEP0lOzedm)x~ettIGg)zH3Dn$^Ox<6?e6LpFQ!W=jL-GD2k`7!`{aL zEHUx3>ai3J_ae(r>;@Xz!&g1geia{#{8jKtyAN15%nVa4DilZ7G1woQW21)W8Jv~h zlwDUl#Lj&$ktP~7AIf%C+)FdG7OC)8eFiS``mDMb@Ai!nR*<>#S>=eTU&Q(#>QT$H z8x!ODGV2@jnHwUqmnugRYn}^4Q|t~j@yDGCynLiTu52L~0Ssj1$BgI69x5CgyNNq0 zrjBwlzSxch^KB9YpPELQL;E7?!@r@e`B6s>Ox7k9vGmw9yE~Rekoz#;iy1;9>EBV( z(R+jIv`1fyg1i?0ppC(C2EEAKXGLpYwo!ej!JXydlfiRWu>I2i8+43I7nS$Ok|GT- zq!W&vzbOk@>dBN`E1AnQRi=0utU}MrUcePqUD>4H8a@qOm-^{lIz({`#wed*1hjKv zT7q#lvfG;8$K~ja!m6kbOJ7$Q;b5@5FPl{kkOwt5&Stj-yqGtZwiBN5)G=x>N1kGH zSAVwR18F{$igi}JjM8m>_j)h>Q@bu$&;Cplf{vqYpWE6M6Z6*#Mrr<>XH!~fK1I-; zlS9Fi0_IOj))W6p(3a#pcU-*rRC_lpWj3G0tKZ~@$Fk4C_tFfJLb?7WA@zZ|{PddF zCrMKxi|HDu1o-gyD+^tvNQ@TW6)yTIO?SWgKv)M>Eh#|ByY8-C16e%vuVSyyoNyrc z;Y??;Eg1cTyv?>0KTLaETMHA?lurZCs4Wvdc?=WrRE4QaAfOwmpuVWdi>YWwEyRx7 zwR*^B%=2heI=ULe_6lm&)GiaRW$gw5%^(?yX$wl-(>ciy_{OKGiJhbg)x0c`HtD)t zMt1#hQa>fOZqE?QgA|}B;4!7njPJi zx0QT-!`10hVG4zg;keBMCA_cfqmh-EFm*_P8a2uYj0;$lN^LXyPW5q9XWfSD%VI#* z?@ogxwQ9k_1Y@b}Cxvs5x|bLp&t^Kex~LG8o0_ea4-BMBw^4O9Rry7C&A$6VE3!>$ zTyYa14r0}UM<&HwB2vf74Aw2m`>Xpkh(`9vsD_)?4y|lAw~gy3S>w<8;zv;u^h77j zTa~}BG4gG#ES%5-oEwD)KfNcF%qJRqenzDjC#$)$Z;4)tbI|h*0)0B}&@YHZ79UYh z8PMl|z9v{6YUO=kHmqaigKx$c^Tt&?#?8jHg{9*I>6Z1`b3-MiVfsmYIG?(K(OWEK z=m%!S!u9VHu;`y1mn8Pv^Boq)rB5;l@^b~>D(4^hBAd+F#ByzCP74$-tqe)%XVSPD zWn#Xgrq-Z(GF`W*%?5FO0;r*lO%R` z)z{GJ{pw^c)4-*r<}oqWXM0V<<2snAIi|^U2m+U+)PyGs44sPfr+>=hmTW40_k@=- zrJ=+r4m`N_t!s^>)p&pANA!71m1w+w1(m5tQKW>-w2tWjV?f_BX-@K&&b0B#u~NNZ(Q?a`wB9s!n=y|p)vLWMMrB=JTiYg{dHm?OXkoiiejv&@6WG+BbI5ypwtI`V zn0wlPuRHmtgyf$JlzX|!y%I%4SP1klRf@phsuTba$g2x;M|!$h!`y*__tKPmNZ;25 z2ISR-+QIHe8Za9;R2Jz2Gy~lkfCU7EfnboJi241ToEy^Rf0>eXg28P5mpOemxby!q zr44n1Av}OW|B6KpiSW1s+=2I68r^@>)(GE?|0(GCJ7mQ>Y@*!1stO z)E#y|3*=RXIeEc6;MUN4SOIaTyn!R^fV@UaP zKaTb9d2qjz9U(pM!UqF*)!;VnK(qTK>H^L0MMM8gwdmg~?|uCvhjLI4s1wre9=K1Z z`~Trp9eQ_aHXm+Jgd+m!jre!f(tRELD}=u|6BoY|DuIFbjNeO__<{G7=-#=$+tm$e ztq1b}n(^K%rg&AH@4U$V^H=UJ3Yd?_zsKm~2D1g+6%hyk`uhP22@3KH0&RhRW8k|8 z?jIoHZw$HBOoBk4;BCm z3h)UlD2gb`3Mt5n2!TNgG6Hgv!2i3+UpG$=?gzW)@h{OB)Xn2BW<`bgzyM}u1uaFu Fe*sxb literal 0 HcmV?d00001 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