From f5b77ce104ed9d7c59920bfb37c9f518ac06d60d Mon Sep 17 00:00:00 2001 From: Till Tomczak Date: Thu, 12 Jun 2025 20:55:55 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20Database:=20Updated=20SQLite=20d?= =?UTF-8?q?atabase=20and=20removed=20temporary=20WAL=20and=20SHM=20files?= =?UTF-8?q?=20for=20optimization.=20Adjusted=20template=20links=20for=20th?= =?UTF-8?q?e=20Tapo=20control=20dashboard.=20Enhanced=20logging=20for=20be?= =?UTF-8?q?tter=20tracking=20of=20initialization=20processes=20across=20va?= =?UTF-8?q?rious=20modules.=20=F0=9F=93=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/__pycache__/models.cpython-311.pyc | Bin 0 -> 102302 bytes backend/backend/database/myp.db | Bin 98304 -> 98304 bytes backend/backend/database/myp.db-shm | Bin 32768 -> 0 bytes backend/backend/database/myp.db-wal | Bin 4152 -> 0 bytes .../__pycache__/admin_unified.cpython-311.pyc | Bin 94006 -> 94034 bytes .../__pycache__/api.cpython-311.pyc | Bin 0 -> 13111 bytes .../__pycache__/auth.cpython-311.pyc | Bin 19810 -> 20559 bytes .../__pycache__/calendar.cpython-311.pyc | Bin 69104 -> 73762 bytes .../energy_monitoring.cpython-311.pyc | Bin 0 -> 20345 bytes .../__pycache__/guest.cpython-311.pyc | Bin 57538 -> 57876 bytes .../__pycache__/jobs.cpython-311.pyc | Bin 34408 -> 35029 bytes .../__pycache__/legal_pages.cpython-311.pyc | Bin 0 -> 3080 bytes .../__pycache__/printers.cpython-311.pyc | Bin 43263 -> 46697 bytes .../__pycache__/sessions.cpython-311.pyc | Bin 7651 -> 7937 bytes .../__pycache__/tapo_control.cpython-311.pyc | Bin 18893 -> 26166 bytes .../__pycache__/uploads.cpython-311.pyc | Bin 24092 -> 24107 bytes ...455d6650ddb702c49af71c0e02a00_activity.pkl | Bin 0 -> 60 bytes ...221008e794e3fd9704cd909d8f6e3_activity.pkl | Bin 0 -> 60 bytes ...630b9d023369939c7505d100af40d_activity.pkl | Bin 0 -> 60 bytes ...89cdcabfc68acbb2cab27a35e56bb_activity.pkl | Bin 0 -> 60 bytes ...ee484231297ea9a30ffdc0ce95354_activity.pkl | Bin 0 -> 60 bytes ...cb8bd4044e0c8a119484552a10389_activity.pkl | Bin 0 -> 60 bytes ...036bb019bf997c2a97cf6f8855986_activity.pkl | Bin 0 -> 60 bytes ...b8477b21bbc824eff088c083b6c55_activity.pkl | Bin 0 -> 60 bytes backend/logs/app/app.log | 197 ++++++++++++++++++ backend/logs/auth/auth.log | 2 + .../logs/data_management/data_management.log | 8 + .../energy_monitoring/energy_monitoring.log | 4 + .../hardware_integration.log | 16 ++ .../job_queue_system/job_queue_system.log | 16 ++ .../monitoring_analytics.log | 8 + backend/logs/scheduler/scheduler.log | 12 ++ .../logs/security_suite/security_suite.log | 12 ++ backend/logs/startup/startup.log | 28 +++ .../logs/tapo_controller/tapo_controller.log | 4 + .../tapo_status_manager.log | 4 + .../utilities_collection.log | 8 + backend/templates/base.html | 2 +- .../data_management.cpython-311.pyc | Bin 0 -> 19658 bytes .../database_cleanup.cpython-311.pyc | Bin 18543 -> 4905 bytes .../drag_drop_system.cpython-311.pyc | Bin 60539 -> 60554 bytes .../hardware_integration.cpython-311.pyc | Bin 0 -> 49293 bytes .../job_queue_system.cpython-311.pyc | Bin 0 -> 28470 bytes .../__pycache__/job_scheduler.cpython-311.pyc | Bin 31486 -> 36346 bytes .../monitoring_analytics.cpython-311.pyc | Bin 0 -> 17558 bytes .../security_suite.cpython-311.pyc | Bin 0 -> 7443 bytes .../tapo_status_manager.cpython-311.pyc | Bin 0 -> 20600 bytes .../utilities_collection.cpython-311.pyc | Bin 0 -> 13270 bytes 48 files changed, 320 insertions(+), 1 deletion(-) create mode 100644 backend/__pycache__/models.cpython-311.pyc delete mode 100644 backend/backend/database/myp.db-shm delete mode 100644 backend/backend/database/myp.db-wal create mode 100644 backend/blueprints/__pycache__/api.cpython-311.pyc create mode 100644 backend/blueprints/__pycache__/energy_monitoring.cpython-311.pyc create mode 100644 backend/blueprints/__pycache__/legal_pages.cpython-311.pyc create mode 100644 backend/instance/sessions/17b455d6650ddb702c49af71c0e02a00_activity.pkl create mode 100644 backend/instance/sessions/451221008e794e3fd9704cd909d8f6e3_activity.pkl create mode 100644 backend/instance/sessions/579630b9d023369939c7505d100af40d_activity.pkl create mode 100644 backend/instance/sessions/70289cdcabfc68acbb2cab27a35e56bb_activity.pkl create mode 100644 backend/instance/sessions/85bee484231297ea9a30ffdc0ce95354_activity.pkl create mode 100644 backend/instance/sessions/b74cb8bd4044e0c8a119484552a10389_activity.pkl create mode 100644 backend/instance/sessions/fa0036bb019bf997c2a97cf6f8855986_activity.pkl create mode 100644 backend/instance/sessions/fe9b8477b21bbc824eff088c083b6c55_activity.pkl create mode 100644 backend/utils/__pycache__/data_management.cpython-311.pyc create mode 100644 backend/utils/__pycache__/hardware_integration.cpython-311.pyc create mode 100644 backend/utils/__pycache__/job_queue_system.cpython-311.pyc create mode 100644 backend/utils/__pycache__/monitoring_analytics.cpython-311.pyc create mode 100644 backend/utils/__pycache__/security_suite.cpython-311.pyc create mode 100644 backend/utils/__pycache__/tapo_status_manager.cpython-311.pyc create mode 100644 backend/utils/__pycache__/utilities_collection.cpython-311.pyc diff --git a/backend/__pycache__/models.cpython-311.pyc b/backend/__pycache__/models.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..516943c06e1518183562ffc3a23c9f1470da772a GIT binary patch literal 102302 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

RzPMj&tzWORf+Fi~?P3Essi_4m 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 SW@>3+*nC}n`*nFn%>)4V+#~`3 delta 117 zcmZo@U~6b#+u$s3>Yrwi?-~*AotBwcmK9pz=4V=zV^mt@nBrPcSe5AOQ*It&T4tH& zT$oeh79Q>sY!YCcTROQy-dw}b)XK=j%GglP($w74#K_3N$W+(BOxMsz0ZGQf#Gv`Q L{PyeejG74mt-K== diff --git a/backend/backend/database/myp.db-shm b/backend/backend/database/myp.db-shm deleted file mode 100644 index 0688095a34a67f938a9aa713a17405f984d4a677..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32768 zcmeI)JqiLb5C+h!Kdo2@<^WoWH}M4C!NLOwR$fK$R3g}jAZ%kLIuVg=EnVIRlL;Y& z@D4EfG*2b{s4Asl={ah$xIM=A!Kgl8FURG2H`~ zBR>-Z5RHP-5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c#v#yH%_z-aE#Ang zF3#!b=*Zv*@~fyIC#N(ACnHBJ1Q(vFRjen%OuAvBr+l})Fad+A}qu|C(kV>G9x7?JxEW_ z5oB&=aY<2PNq!O7G$R8eQ(XfyT|*-ULjx;AODiJ-Jp&^XBLh=p8B;4G6DwmwJxfz_ rQxhX386yKL1E3xgJ!1o76GJm385GkD4H8RB@>77GNlPrvDUkyJ6?<8K diff --git a/backend/blueprints/__pycache__/admin_unified.cpython-311.pyc b/backend/blueprints/__pycache__/admin_unified.cpython-311.pyc index bd1e8ebeabddeb4c804a51f03bd8f8234a2bd8e8..5165ee832c7ad77632a1bf68cd2bb729d14fc079 100644 GIT binary patch delta 11535 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 X?dZN2v>eTAA}vH#EAu5cld1m?k%Z}# diff --git a/backend/blueprints/__pycache__/api.cpython-311.pyc b/backend/blueprints/__pycache__/api.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..babf9d71f09bebe67ccbc83b3bdb110d072384cd GIT binary patch literal 13111 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 literal 0 HcmV?d00001 diff --git a/backend/blueprints/__pycache__/auth.cpython-311.pyc b/backend/blueprints/__pycache__/auth.cpython-311.pyc index 5cff9480239e2e30a024997723bf82b4a5eb4d62..3a31d80994b661fc66f027802739a3558d8bc40f 100644 GIT binary patch delta 3520 zcmb7GeN0=|6@S<7U4K0M1sH6IAqE4+#+VRD10i2dlR!uUNf@NSz!+@683A(rJR;SE zbbn3iCMCL&7A;vzr7BxDCav={O;a~%U7~f>rrF2|)G7IrD(#<2q-v`unzEhyjAJKR zwC?J?-#z!7bI(2Z-t*3R4}OgPv553P)#*eI+V3|Xo_xFYeSMdJ{z->~vnn-lNLr4g z^RDvPW8rh9=IwxDUZdfp270m0Le<(osT8CkDlV2&Z%YyVOlvGukP?vZVdm29l#Tj# z6dR+WuOh>WY8ET0x2~#q+H2>e@(i2fsyNa-pGOyscEcvgp5;gLsK36Fo;PAg-nqPK zHFyF29Gc_K^8MT#lG<~0#VB5~(g9r=eP}2W17%VE3KuB<2~U5ZDnr$@OS9Rz`5NN5 zU%;Dg^V+C_ye`#c#vB*W25eF7te*bSU=;!tS9!XwH=`QnG<6$_kd9su?WmG|oxg>7 zRi-*2sF=(Aq+a8WIplrWvnFQrfPnwQVd%b8EF84kZ(vm{3|ccp-xzGbZDtD-!O zizb>fI&{_Jil~O1)NpXzFZKMHm6!4>czvLT#`CM`*KK;FmruQ>z+tW(SBxq8*$(yR z^#9vx+e^I6SdecJEM<4_oXx(%7tWY@Iz5p-V;V2a+=kZlf~FTV=U%vtr?JwVbIr~u zx8%B}fM9?(-Fi4@UF-wX162LkelR#W6(qLNVCb~1cQ)Xcg0=vRkIYPjrt1fSA!&y# z_EvEip;}sC`BF=GFp=V?XXa8OHI!^o8%Py!NHc9OIjPk~WDC9^Av5%9Nf|bP%trrE z^1Hk~po-xQmy5CUr6FF^qM1aO&#rSV^oz1t)JVt52NufmkD<%^SF8=o)`nlH6V}$G zwe=y#xa)#YG=bJ!TbJDLd6qnvg{y{DOXZ5ixomMJEOkjsU0i-1t!=7W=Md=T;+n<2 zVyRmO4R`S7iQahMXyU|J^28Vn;YnD=la}$gWxN93+~*Orb)Fdm;wv>*v^n;qd_P8S z&{wODFYLpE&0Ip~KE8uXv?50D5Kpx5%Yy4f6Tj?X(&Z-1I4$007$h4^y@KMVAoeNn zO}(pk7rwa*1AR+r1nI33Q=dn1%Ojq2<6AARlMcM%z(B8T*#y#6z3DZ(V%0A8SK!rp zSHBg1vS7t9_@tVdPFYO@jfzyGIM{$wZLUEVzU{(5-)=%9n7iF94%hOxcYD#Wo&R(X zg25UmfM88!8nP`FC8$VK0& z*enrsCY>7b8loCUo=rj#I@$hAyQvJL>0x0d2-@+*BSG_0C@>a+-RqC>9mi1`V1>7EE-q_t&-Ee zEyLbO`%0-Y%ULX-_nk!sjpWGkqDq#IIw6OM^U8Bd$RTo{%^{LAM;S-?rMzdqY{WgY zL=jtp*G3V`m_ihvDyE;;nd{6MBfw#YCO4oh89Jc5isx0ZnG%|CH)4HMC2gaNno>o; zNZ)W5>R#9epPyMHJ*R1VK?prtfdYl&iXIM%p)IqDd@Akp>RgvE-ZS$i$w7ZBdgxbf zLsQWUW{NlRv^cLmr-q6o_t_J2n(2-Di+mTUr9GYj2COiXHU@I|?qt+12Jl+}(ad0k zfuF&`D8o($a=5bO>C})Tj3KX8!6nsd2U^~75mVdp_uk|ZfCmQ9YIsS~Egq^WUT z=0c*?fo7%aUH3blcRd$`ONLcr>58#p*;tV<+LK0mTz(#{6dzOV#80wlo1*)Tjq&v*;#<>1Q$NhbE7PlunDh2NMzy##q3 zRF-4!d#@>RgvC4U@31Y{>TT1Zu}R7H-5?qN^9K{7eqswv+q@xC-|nBC4F+tzrze7= zk?Dy@Gt6lZNga_|ac- zsd5>VbA^0e>7!wmpDUw})jLnm1R_(x-Q>+!)!`CUN)UQwon!cr=M=3;)UvLSd6V?y pksp>eBbFB!GVv=(v~67>^QP#NBdv8jGOlw^L3~POd5n^e{y(77b6)@e delta 3019 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

  • C%4YkaYe?7?Wea-)kF*HV}GN=g)Vd%4)iwZflXJ*4EaituK$hX+Vkw%i)_ zK)AnaZIx>!_k2xP&H5tl#X=qmFBX-pUm}08h2d>H;!CuDCD$$%!KaX@G90G&8&!JRzwsPq;Fc@b}B=K8~=C*eP&lF{rRe{ z(nX0GO9b&qMQUiy>f4G^X#gW)1~7gMWQifmz7El6yAGCKFHvM!+g7?_?eg&NQ2pNkIIGgG z%{546*`fv$vthr_OMZ{EeF#|E7)5LbfGCHojo=|t${$lH(d|gHB4CLi%Me*|xEE=x zjp0M?C@ZI*J}buqgk^fy~bZ3D}~UV3n{zm*!vv zs;Xdir8Eo^D{>S8OTMy@!P1o+pv~thiEnU^r`K7Og&-50eq-HxIymb7YFAh8=cxV# zf(H;hNHca~2q+LCf`KkmR8HqRifg)>C;pbE(v<-illof?U*PQ_IE(r(2rK)MSP8Q6@F%tf6dL z7R`uO)Uf=o-y@I$)M1G)8|Tz|V3}?9QP+qE6K4Fi%I%kC020B}3`oDyl)xJ9H%h03 z{`s{mT`iDOs9|ne)%TcMTAS@`ZN9kQTFmC>LF|bhTft^#+)VG>UqE#Sa%4K5nh&(4 zjcU%~QN7VviYhpZxZwb^Xhar`gMt_q_MSPIBGJ7>&uH{Osmcs;&9dn$2mYwFV1P;U zs_$Zv9r~Cv*U&EqYx%Ee_0Wzi<}TTw+5^7#?V;9pK?8t4V4Y+w08zea zJV4s9*nyxEY3iMBGUz@WAj^=noPIep$Zw(pht{fAB4HK%$)O+GnGOm#WuzRtWe4EY zO2?ZIQSJ~O@U)fP2B?@1hZ7(11djLn;Osl$@o=s^3ZfB84@>>>&ZWMVW zufAcF8NljU9~T7~=AySEHx+Ke2eB*w5apvDuN0jIk;dGA2(eV0VeZbRWDFS20?DBl zO-jnEE75E*abwVeqo7+z9(7?Yu$Xg|cerzR2=-<*h{s&Y=uhCleby_FsYe}tJ-p!>|50+J9 zec)HiQFq1H88}5Bey}OgSnEUOmM3|#7*AP;!pAxE+rhiUWIDg2NwpFjl{z&855iNEmwM!$3BuJCI(>}(M+hfW20 z7SGudORbef(d~wJKx}JBxtz#+#pNH6QiSv?p)F9m9h-nVK3r6cx;!J&E`ke6RI)o9 zc2nvKz#R$mHMT@q-lKtglR>JsW+Mu2^szk2N- z^uR@A`aKRVZDOT&JX+ZL9tvhA%&_F+A!Op^4fz0h8SDl}>OWicAJSJI4VcNBDAA6y z`#tQN$~PVugLr%|QcltSNdx~Fy>0RUf0({8X}6t48N~ozUuL_6;c>Xp6#9>Oguo#w zRK^-$rrT#pPO>o>`6--Tks_v{bz@l5ud}V zpGUyhZ1cw@ORPZq19PC|So}u>$=KplN@)tq>{2GM?+aKgjihM9l79jFPs)f7t6l?o$v{Eh|8={pMnO%_)Psj_eP&4g3d%r?`{gr7^vTNLn%(Ce z^uU$yfSXLvHNRQoOvvHf_{WFf`WUZW{g7<2o_>fuU=5n3PyXiP`kmNVIe8V0mjW(o z*6rTXw`E;dH;Do**&b9oLXW&qC-W-kr_V|uWS{dIb;af_n>OD_)u*81a|zYjYgAR+ zH>}^XXZwwm#}xFL=M&1+*C@-ocieO%%_9o>_zS2RdEs8Zo9=t@$QpJ6=vch*vWaGi zK8qfyY!Cy7sKsAcHsG~18KapmIgD@NpuL0OB7(~RM8%e#jXTJzblXcMtyUbgd;~TG zEGDq^%T_z{np=_aIsz902c3AyyeZ9JfC!IsV2VdP1A+bkG=MyYb+HWgw}_z!k$*+- zI|Q#GcpGi)qhG#M&fi5XFI)Nj^v>Rb?KZY;i#f!7WZXkw6%BgaBLe;^h2JFURFbEp zRze8Pu{~V_7q+TaF1_8r|AywiW7qXbJ!M_*rfc3Q z=l@Cv-tn8z0MWtNT+hQ%{UvI9*ABH|3UbT4wbHWWnKQu1C8LYT`~B$S)>JBj+Aq^f z?>3tjRE`zC3B4j;A=X11E>^()+4{G((Ht(F9<0XwF;_UyLu`lF#f|i3)SY)G(I?yyiK* z8jm;}RM$Mm9@ix}k`}Z)$$QyRLH}WyPR8E-+3DbwY`%!zsVdG5)T5O25wuTb&{OaP z@4^*BT0aV|(+_Bvz5wF_RG!d=FR4$8Ax_AoqyK54uO4;C0?o9`SsE6yq#?j}dh<9@ z3c661kR8%_OM#kmn6((Fxj@YWDm-a}mwfZo0-zQGRUs4sRtzuZ)Waq7mHQQf9;k+p z4qgUk2Q&S9154(4@M4NDq1*plMc3{uk_B_aCB+*AthL%H&@pw;5}a%t^e3a2dnL2EC2_8@08@S z(n~2@AZG?n&b*vpx%O4seRo2alRgD_swL`S>%1n=ZAo048O#d8qdsXG=#Hz(OnB5L zzymv>LU7RjtF`LN$t-x*rlMUti|LQAmhj~`BKoSkxu>cZjtb9#m5;8Lnecb7El=X6UF3>Y?h2!8U&6bdUf#qr(LPuMmHzgI+ zFC0wfVoRQCryD-Cw02zcz@{_tz@{vuzg-UxY}j|&1DmCE;!_vgI)3(PLrdD#VIx$y z=)Ol(vl|!J$T$xA+~be`2rhK`KfBk#@I zPiQv6ixI2qpq2a&ST3N*_Av~vJp?Zq;MvVzfg!T=h#k998{G%Mhle^(e*Q1D6}X`} z5L6+kM&JbC%vzkA-$5Vy;@z4$6lg^7AsS&>z%Ic2xMro7+XP4ZL=7GLONH7sdQfn! zx|7a)*`Q&YIZyVmjKKC6r;XV{3&|8_?AlKA_tLX}sZHb&c$HC)m9u8E%G;rM9j))v z!LM3!u}XH&CY_Qt(eq!m@B#WizZ&EJNW1^qChsF3(YyZI5N11ajkF`bhDyIjph1Ai z31JC1X54AFxEOMzlQ!En*(sgvY~{#cTjULI(Fafj{eT=q5PlmW+lK|j*p~h}Vt2u~ zN*7@cEV4cK4y27>@!NZ~w)Jj6bamS8>l7 zs@L+|^Bmt-#XZlLt+mOYH#6MIBW}w>ddn_jU#UE%%Ys6zRMBTv$INoXZ9L-T46n-A zvrHaqUbSb5{EbE)@Hdty0m2HZf!6gnTgZNFDw}qkAvlUmgf#puN)m_C#CsZk#R@!f zz`Klbcfa&hiLi7GH$myZS~4E+jQAU_^FMqL{#d`=-ThgB1iEZ+Q!^O^j5nF811{{wp$Rl5KH delta 9687 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 H=t}<&$3VV< diff --git a/backend/blueprints/__pycache__/energy_monitoring.cpython-311.pyc b/backend/blueprints/__pycache__/energy_monitoring.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f71253e0b8e13215dcb4c26783c45697df55bec1 GIT binary patch literal 20345 zcmd^ndr%x_wqN(W85kH|GcYjFyg>#5lF$PoS?GZz>;150V@Y_R8yJ{j*zOt0aKZLX zoJ85{RB5x$weDS)S*1hN-Snm1-0J;rx*r#dhu1 z{*~Y9o=4B{u(Wq8`6Eqp`g@-5eD8D4cfR@eE|-(RzrVtx84V%K|VRP6rYzbS3tt^F`L$uS-5<-Tnn>@D#De+m0{1YNAo*E-f-1$ zRk(V%TJsl#eBqkm8kR9JLM88fpJkX2@vlF_wFouwg@T_iy5o8uw10^IR9u}FSB$ul zHF5Pq-7=R>Y5el;+!6#kU-~BVK9YQxNtWvyZrBi4*&1Bs--4@AsNaCD3chlJz2kY` z1WNF)KY|@~^a!=Q_fA!A3}3x@NqKc>+OXWRP0RJIDYxdS%5C1T+}cgc^{*+n?y1Uc z*|6ODP0Quhl-uxB<+k#TZ!*Je6Aa(z5gBx>UVZ= zCxh37t`uTEK&1yp#n`wogScZsiRvzmO$yu#f;cJ$Vq=q%6b(cX5uDc2q_SSiMDxMG zgct~i1t3U83ghF!`JgZ}-!(WB2+c{z_$Bp3hea*Ow5n*snMP`9nwq|3q zuDoW#UtToj)Qjr8=Hac;@@(KjUR~C! zT`pa`ZL|ErZ=rh3^b*6{7fr93E~LKK+3U=!=9if3Y=z_sFd<;dL_I{KD52_jN12 z?i(cuPs^%j?}}${+_O*d?7LC;MM+(vs3}qAe^}j;@NP*KSl!OY48Yd}l8m*$`G;?c znWD-hW4FSe1`i#TtB#r#M~z%N^4m+p^2?Xwm#!$6uE2{o?s!FUydpbZd8nf=_q}^) znf;rgr6IYjY2%W#;?@Iyz>~D1Y<#6U)cu1!gH6mYnw*Cm=3jITx(}JnpX_7dxo@@t z&U?Fg;aYG^=pMlC(XYElg8cq5O`n43sXPK867Js~5+pv6TS{Vi#){#YXPTdXLSvDPC7_HCx7V=tP-3`mwCPjH| z;-WUuHX-wCW^EI~*RTl{$NnCrX`8`eAsPsV47-pJoZ+NdVLmvnF@)K}#2H9A`W|S}w#rt@Onac%20+Yu zrUzB0flan+QV|HEI!MH%VISngXW&qaQ(022BK9NjASL?@^kQ?VGHfoBcZ0Hb67O%% zT~W@B>+ZNEs91usC7867T6aBk)x=$X#pO>jMFqvnzJ!Nc^|Y>dTL0bkxTjn3bgz1L zu6TC-?D|LZ_g-4rbvo`jqj=7&dY)hLJRkR5QaqP#9DP*oOEMsZyG3q& z?rs5q{>I%W6!!_)ed3|FRc_lI_wG@=dp_PSd-o>`QKnXK7Ca_8z9x_j!&X+&lyG+@ zymb%#9f_I)ciTSdlxq&)#nx9*jIFN%c>t0nITtW2|&bnx~$}Km~`-g98wJp_T z-G%z5fMH8L_nYzu=YHk+wMVW!hd1sxuQ<-jj`P?~<@%m@Nv~4Udw08BvQu{Czxq}Q zoU~P*LU-ONKD3|tFN6CJ^_oA~T?F@iYdzfen>BZ@G+#e>_IO%eU5`J7{AEk=e+AKi zG(AE?c?=|G9@?6SS^MgLVyHgZmb~F+oF_rB%%4XZT7X)xIzupg<{aOKar4+fjS@>P z9^NudlamoEHp4hy$S}Nh9#Y#3%UgI`?&itcmn?ZDII^_y1-Ys7QaU$I$rs|UXbo4>bJ(?wiS+M1@V(YSQMp`=fEt}=%pIORd z2Kmkub62=%d(8&sPWu{|yRO(@fl7@v($`RamUN8Ys$+n(4YiE>3;6{ z@OVIiZja9>D$}Ah1W~<|j21y>&^ka*@`vC5F83{Kx~6DQUC~H15CVTiLYJf#M`l97 z86oW#NecOrCqP4^!y+EQM;ruDOCsar#}18@Vos zUlLAAJTa0Jej2<`p`Kn#r@8_V>PelUd)?u{tGY8qo$3xlX{kk~L(260(Fh-yOQ|B% zR2a6k=wv#~O{M3g(n5@BbZQ8XhEpxnBXtj2jbc&+sxCb)?Jb*(K%Y2AYDg&-*0dgK zDUY_v4Jy}i-J16{X*3X;t zJ@D^53+(qyZ&gF#k9z1sNp+>^(t1i8Q6DfLm{il&9+l-K8VxDF_K(hi5Om37k?`#P z`F3bt)7qpA9l z0^w0Uuz$Yw+o;#m{WbD_MGM^<%*WrkSFb#K?hQr^!Vl)mJT1)Sbj`PrCQc)tMwb|Z z%RrYn1OJnf^bTQ(5Fk3lodl@H9VX4KTJ>(cO5rC6oCMGXt)+j)W!55ned7diJQA9~ zQOVdO-1@0ZKPO(HJhZ{4WiU=3EEh2@>{4tDOOd2nXqd*jkt$z=JECLKG?`+4nf=_* zeB*jLPcg0Y1YTk01MKlYt*ax!2ul){8j+N>9ju<4Uqb<&ciyLG{jWM>lm@aVE%#d;%4d>zRI z{7WG);gA3;3=-h*X9LQi7iI4--nivu#qzRjc{yp>Z*@O3s29DhtKNYX??BwUU-9n0 zQIvEtjazR=l!pC@#;tPqvr6NEL{svjbjkF;$#;o-^tpXf-g8{(eD1+zc{r$?nu>Q$$>G^}=d9d0izHV}S1IKy zrhw@&!?cbPE4;xyS7vvpBl{N}$IH@$8 zOf*ja)NYJLrNQ^YB-@ZoJe6e1_5s!;RPsW zYTD$sy^3!jQ4N82k5b*AKuG&OrDlK9ZmB^s0#2r?dHJ~F-HKGp(@OQWR9JOGawv%BzX0`L|T{sEXMsWZe&IJ`^7#wD8vpgUT>Apv zxZ{%IxFkC+JtWk%iOM|>y}nz$-@EqqHFOV^0q~fyP#FM82jg-l3oLG6w-js)bU__N zkf2VQ#1D?PA1h-XlsS)YGe4*uEIi(2{#6?b&#$_yfUzc|A#Nga^wG5QYLAqU&9M%)f=zYbS#D?@ zadO#k5SuO&qMU((1qS+X?C@C&nal7kS{5NdN_}~CEkw@jS%GOPqvb|;Mr=i!K=kKb zYebsj&FZmWUUp|G%)0VU8EiOmwJ+FsgV=wVxl*?1Sa9$L0Y80?AzBt3i*^>ukGIMf z>}y)Pbe-1T^rT_K)0ajA#bC@nB<4(eHaLATq@N;=PkYi-M~$(>6lzbD1gz9El^KJ% z?Gx=vr-0h0>`r;Em`VzzY2q1}+#X*xoHAtduTRBtRW?P|l}kl#smq2Dn$5vi2PV1?cf(i-il$<(h2DtZSigD${1mbZW5X$;FEF{&W(!>8wzD;Le=Z zz|EzC8K{5qPN!Jrt>c@_jD~bh<1B$YvkENOjjAHvyJSO1Rkqm{?8}A`k;aA|uI7EY zJ-K1Znzbp7CGftKGSS4>LQ&}F>!1*`^Yum=j4C0-HRQxK=J=YjKE8R$y5M}0vHK)_ z#kVY37mJ90PCv_;nU)TrFDZYrs}qz(ZMiLqkoI@i^kU9x*RfEWT|HQMxp)75h z!pW6WgXU~(*2O;)B`GKMEVy!K%eo4u%$k7uoB7Vo^7CD5R_Cpm(?r*6F6}fCUxUJ_ zJ9ZDmY@l$01Vc7x1_mQX<}s+7{>+Dny0S_?-V6l=5mq*-LpqJK(at4x?ngh4jL}5W zju8!7Dm|%Yn5U=Z=B=8RYA8l+nhMK3KZICHov5FvZH4P}Y)>}rWFX2-lP;z>+a z9i*Hfn>BG1-VURHS*Xi&BV;@i{5^`$)i0DcM*B%lV;NgOuPt;u2%JEHU(&h{`mCfS zlEj1LvubJ_wNzJy8Pz}bYY~|0O$e$zrG!y!q&|#EI)yd^@z!tzc75VM0YV&M&T0vC zRmZAy~D~2Bhe=9h16adk?SL zD5Q6;!>U@fd@9I*x=XxC_`XNrUjv|q|CDf-q*X~cw-SS6l3JFMu8nmrnS^Et2A0qh zkyW9jHBPJ(`F{rmMNUH-wG)BSiIf4B*8KA(7(ua@E{YN|u6vF=s9SVmXlGB7NwI)) zm1pumfCURXQc>~%+kxWBJ=b(HMq%qYR3c|8Y zHN%cpwFPEpp*&Ozf>MOca|2QFpA(AQ{ujTiVT37IzCxr}+(pUBDovy*s_RDzL;*Ip zfl*kf(eM%f0zggA7Ayz>krY5`p(u=zK`M2qYV2W3qM8w`+C)K$g`&FJgg9bNX_5iD z_QXTllhj;HjUBC!50L(+_?P}I+7I zI15Ee_5}S3TTt?kI6}9$svdgl67|gq{|?B(9Es>$8RX!qa>&6|<&fzstCDteRaLTp zib^v1@Ua&1^_uWx8BvHj+WL`C(@BS|Y$(FLVJ zMSV`A9{ZL?y}&*tu~%89re)Q)WyQDUC;Q^QJ&JG7s_(#x?*NP~6nFdW<16ky&Dr*o z-FF5)*nemLe?9)-pgeFUK5#|>eCEuG`^;mjxd!$T0Kc~}CEo8&{+mT;q*lG#SG?Qf z-af_K7cbta6z}}cvHukN_`*-;KbrshrcauF(ei0a($2W5pcSfbK&N`4rn0-rHE`3M zaM!Q8TUXqziH7F){HqPSR~mN58~T-o{zONo(y>2L-?;P_I;d+{no1Vh+R=#sj~QDj zIuQWgG^k)|8ke>tYMYi$Cj8AyS1=Y7t|#GZSn5vHb=+>puu8h@Gzz7MGMZ@TT4Ab}%mAYEj)v5zIdpA58o@gb%$}gYwjza&2#&}6MqrhpKS5LecwXv`=x_kcs^|>&!>HZHh4bUOP*gkjxq3j?jX8vF4kdg)pdFHD(0CSaiQyGDYj9Aw`bcrojs9a>Cwrsj(OV*urrOi5{w4JA(sZ1`2 zE9)7$W>iK{NFdLL>5RIWYevzO35FvtoeAe;Cf#IJ+`?PmWQ-R5uy#RRv#OYUdkfwU z3xOPa7v8Datym{msIN?m=9w3PzgWjF+2Ah8l;zGVtMpsSDnnTYixM7})AGt{1b$Bn zzZch?ygz0aEwJLKLe6S~K<(pe@^V@ya9*lYyg(<1=@x-0EMJ?=IYad|*o44mumge5 zAnx-VY+TF;Gm7~p-XP}lO%TPcPcSl?Nj<#wrb&*lT?p%vmV9Abv(@lqdp~8Xkr`DC zvz#&P&88yZKWb16J&~=3QFLyDt;Z($`HnTB^Olt8{7lMLL;D&;=g!!tpl<`w8TSY1 za)?24HB4%Q;CzlOKD*8aa2rcNa{XpV7l&I(!3f{a4Fd^obcMNgO`hrGt_#9+C#Oj@ zo!p!Nkx?T+0~^?U9NCN%EhFS6tvvDjs8Ed5X0Z6UVYK)#5YM&G+d4EkI_H3a){k=h ze?=O<)JeZXKk5I0g=gP2;UvERC;2AT+_R0JH~07S=%?N$aU3~RHfTJ%7bg)m-(fhM zOj9r>t#@h<28@w7$gd*7Z;u6KJ+C%0|K&Q7jpYj4Lz5;kF`0%4bS z618wt6M7CsLJ?6dp&K3(+WD>?V1ZR{NHc$=9FlewE+7d}98Xivif;o&PP39+rZp=m zFjLLyT!i@qnM}+hj3yzPwvd{3-f}T8!HI_ute@QfN4Wkm&3b~GwGl|DS@-Ji?ZI0E z%MHteKWe%)a0^YH3f3C-OQJGHYtzO1?@g@VtS=xI&Dz^Dx@UK9s#$x{n7zCE0Jfol zsaaKvHn@va^K$_x2!@2w7>%$~_umt7IdB%>R3M1R7$TpGg%B2-P|X*FS=D@I8Y1TD z$Tih`SeT#pox%;m==!8w(n%Tb+avUhrbyYggUIOH4bZETB9if}c$&a50)qfBNGa8g zgABR?@j1k(MJai345#|htXT|{4zv@JJwg~4Kj%~@;zIUz zX;$rUx}#X6E>bN4+$a!#4ClIf2+}R24IctC(2~#)&zJ7)T4U)ly%U$X1pN+|_<#yX z*-nwsuq585+*<&oHMR|v>n{FP^52@gZI8Qp6j#q1 zLtj`*(^sl4-@PV#FXR2}vT_8559Ewnt|*o(vgJzBa+qXxgYiRU^J-=PN@ah%azLpZ zxZ#A9T~v1S(n?{iTv+=^Tc3W`^0Dcs9UpaIVT$_(aOD5U-=C<3G5cPnb|BHznP@wZ zsO2Ex)RBCk0e^YYTHpf<4{+nT8_y*xnBt0?*Fd%G@-KUC?^tR~j z?jDq@ci}}fY>e0c==d4=!tl!RVfpy*^03@q) ze_@8?iWnQ5$>dz9{l9$;8M~mt(4IHvia3b1WEo`=BoJcDhUAM5h_z>9dB>6k7nTj; z4Ba~8o$E5RhEr~hq0PNFMtadT5AKZ_7}SM4Q{i=)Ya=a1ylb=keDNBFwj{;Sx)=4E zW!l%k(3Wmye7t7ZaP69A`@9ecbzQ`zdhYpI>}7(~Vc>2z;7A9jqcQxTLgpBS^5HiP z=!QL~pNt3^Um7D`@^^pxqji1&fvz=+Lx>iS5}-Xfhi`HqK;xSx;YjgK-T8*6=x>AB zX%r(q{UGKk#?_Jq99R!HFvAIme%PTAHwvuAlO6q_LknfaR}m=+0BiX)&1RJ*Zq{%$ z8d#6}{XXqxF9OFKOpkt6@5KFk zNas~ozwB6=h6<~cR9FD!3g3NZD}B%5i#KjLrC3hMmQzVf{pL)AEppP%=*D z_YsxVLSdS+ni=p(VInX#*OmUom5uIL3}b`^$H%vdq_fb)svx)0o$*Tgd7^f_NXLO{1%7BHBy9ywAjPc=?KoU4 zqinPyr{g93B8x~@JERyXN-8Lx_CwXD=ZAE}NjdA&EmbjsiMK4SLB8@~zW zki6cTU_k9UZ-VKUb6;@er8PI5a?RGbyIXO0zu`hih5zQBTQ4rZiqp&Tp?LX_Qa&Uz z?u3`SIk#MU`_+4=WbgU7_q^ggFEbT5#WIzxvfdTed&?YWYZbOO!ImUVwJeq;fX8OW zsM>;*u7MIEddv^Q^KpD{RfJlXv^> zw#jTwob6ZGe&kKCUKtcD%DZ2Z+2J@ltgypL(@~a%F)l&E_%e$?1M0oVnzU(Y&YLp0 z<=Vb`){n1i$d4-Q(H!JgWcF&Dy{fQRlO|C^PLObp0Qpq|@?-EHP1>|XlZa1Ke(LU# zySp^xD1L7a^0P8~F3z4)*mFtKc?~&1!g(IZ&KZyoAZya5rJ2l9e(UIM;r1mBcb~%c z<={RevuES%S%p2DG__Ns01(1+z^y__4f`X; WwaS#OFlBQ2!8mhBF^ocOcKsht-aWYh literal 0 HcmV?d00001 diff --git a/backend/blueprints/__pycache__/guest.cpython-311.pyc b/backend/blueprints/__pycache__/guest.cpython-311.pyc index 7c9a56fedb14ac8d05dbe4a3c454b8c2f5d68e4c..aa2d3cde33698fdb1f1871b35de3a2624c60f9bc 100644 GIT binary patch delta 7110 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 delta 6896 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 diff --git a/backend/blueprints/__pycache__/jobs.cpython-311.pyc b/backend/blueprints/__pycache__/jobs.cpython-311.pyc index 8574555733ce36fb4a11aa963c3a5ae679fc7724..c6a95d7fefdd65f086b11f543c2b4026128b645a 100644 GIT binary patch delta 1377 zcmZWoUrbw77{BM1(w5y87`H7j{+uFaV^GNc05dG=94@1-lhKBVZr0L!Xm49?;oN&+ zu**aZ$zo|qa6_Mk+Q7Q3)CS;BlU8fPRiyl7%Px3xs{%Q?UA ze1Fe(zw_OnF0=O+S;sZIy@H`M+5AGR_S|QVhurWG6`vQSv2Y}YU_VwP352}?C9J5j z_jn9N63`3BR_B1B?3gzK^QF ze*MK$tyYlImEa8vct`h~{nHF?>5Zdlz#cJ^$z+_od;XsOtKb4H!mcDYZl5y)hGjJK z62163-9?%!*UHll5*~4OvGK~1R^XOc>P7cIUKY(FHz}|rGfcXgJaY0qf?Z>-GJ@j+ z(-NQobQcLQLZ!xrY$aKFvUFmYcn!%~TtRB)OG=H6Z=aR+l9pkp-c^!rRPDTCmKtad zcge1SbS%Mm9@3{;tH3M3Z?x=A}S}Pfh4Zd!)vJK?j z&xIq2C{C%85Dd$S0G%sAO(Gmr>#4&J@27veeFX*-I$1(WM#b6krAFaw3rwUWiH?^f zMq&y?q7+4PBo4G>AUxEGuu z=R9ttFWDZr;kx_qn)~o_;MS{mgITvP z=k{IVHY)dQGQcK+hn#zzYhL4;GcbC4m_l)7xmb>iWw;pGiubo|>~b64r;FYVYg|L7 z@znAdh2qL`{v7AeaDD=(I|xeL>^j-Yd{uRX;)?Br;KTQ8vm%bzF7_SmVt&%hC(_}V9SRJ?7zV2XW#k@SPp;y*klfn@IpiJ OJO;>93m)?E!ph&5F^c(DQN4qA z@v&%qtKZ87v0ZagRYu#!K~@UndNQNgki%Y*GFTaCC7G?23W&(7othH(5x?7e2X2zf zO=<`~k=cC~F`Oo=`>*R@Eg3q>%Hbfn(lsxGmq_cWZxVQyw7Aodaf`_Y*T$%lj8h@l zrGdxV%kXQNwu|Pp`4j+2Ch+^rR}`|jysn_;RW~63x9OFSVM=sHQ9&nRT8~{xR-9zg z#q>~#Z>4Hg)rB(MJkevowjnt-`YS}*qy)G4OO17Z>MTIrDJlPVhfZ%$dbT9N4Djgq zJvd!u#0#Bz+~8M>il~0nu-&S^%KYogQ|x0nrU!URQqobW;}^$a93(_NAP#Fvv9W(d zagQ!WrzzluKquUW?Y-rAHc*Mb2UvUq8S%)t9v=y6nuEf99tu$z1yeqdVEc_C%DWKn z3`E@M8P%)w)kN(~?sF0m9TWwo-y zELt|$H61mgm0ggEl^RKhnJk7I#nKma@E3?5B;v#wC1SXWixVmM98V=!$r`PdllzG| z2wxKS@Ml^j-D5teU#A5dH4<&fyOFav6C5SSC$2F%E)w<)^mDv3gfY`}W}ZIG$SBDh-ucVq#Dv?E80)*Ss0TJrSl4=AgG X4wwa1*mBN*Ef=KHoIZiG=imPX2_EBH diff --git a/backend/blueprints/__pycache__/legal_pages.cpython-311.pyc b/backend/blueprints/__pycache__/legal_pages.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a50bcde7f9598a89fa1c38368a12eeeb0bda3bdf GIT binary patch literal 3080 zcmbtW&2Q9J5P#n9csB`@pzVexarp`>;yA!5g&=K6TGD)wvMGpFCCh8S^_uu&^=w09 z6)CDJ(IYoF^nfaqg5ba(zyXPWAVDh;SwceUsh4U|;L=m)dE-s8ArgqEedFix%)IxT znK!e4b#}4{#;vcWs}GY1{Y_uO5!+mBm<&R9k%CG{VU&o@7?D!Mh?b&8tQ2D?FRI6l zL@B|b2*MF1hLbB1gdW3ej#3Jz?stT5+n-8&1#CZt*&IsZH?#uF#~}li*gbWVZMvyl zy6HW2JKA*FUAmb)b<=ISnO(Y_d+K(!>2~eX?NYjnD8J9W1}uHy}Hb3k2FwaZx1Ochqx9OAGe z53~PJ|K_89$GGm|8qrM0?{D>j+6pzpbQ1t!*5J4_$rf^}Tc#4-XF|iKo(=(?9 z>NM>JCO0MB0WS$A{@Iar%T)x~B3P(sI<|!~;y5O5MJ%{>S<@Ae6J1jgi{NV=3sV=T z`9c{Sue-KgBQKs+sG)gcUB`=#M9L669*!xLC3zA2ER;jP+d|+;u_me59&l9(fb6-9J+UYePFZ^Win^qA|UT5X&@$kmUM!Uml2e$_CHgr1Ug0r8WYCdhtxqq806SqgKE!W^S8 z$0*FPCd?ke+@0B<3)esJf$QS24km`(#CiAw0w0Yx9vC7$fHVs;xENtj&#ez!plBx< z3U`vBcqbVOc#;VNOInq{{#>Nqk%F$P*ua{Jxh=cglu0j;Fx{CRK>Z4$2p=!M-~%QH?0fjemha<6#_lhU0pxmfUYOnD85YDiNivx_pv$ z3|i8T=JiS1iFR!jDak(>CG|)A7IG-A&7pKC>@Vm^dIfMkrdWdkbui;`&8p7t2nPqX zhP#4^4Z-o^XNE_HNBrpI+!dd#5leAp8Z^Ia{@TLDOLO9t$;-v5OLKnmM|07%Zkm4Q zw=;#}bjZ)M-oY~y`~-2K77=b%GNJYuQ0cv6MMEME)KXW4Y;dqjf^6VUEX?yWnz_g= zNHr_(^^aqE0Wsl&V+F~9x9X>N;5*57_>!wirpg(b!(CdK_r91kF;O+l&swJDSWwDU zuV-4)gRTQ$Tf2EZ-&cgd&T%aj2ti&GvFoVpZDwpnh{#ahWUB zYTSwWtA)JRJt2`rVMbG{4mWElI3M?ua7gMwKaI^B8nH}@+V83@IaSLP!;hU6U9uNj zuc-=_92fTR_B9h$qzT)+7+>#>RolJDM+p6gb*m+dPiRNj;x+4JRe=_ovruIzRn%3=T5%L2`_WP)9&ZFwcK<)H{FP&53&u^BI*4H z5)A}odHVfvXgsTj`1OJDb?#&%9?9@;5s-J3G*BeY2lsg{-|Z(wQL$uE^y7gG2~F$( zT@!S==~&%THIpRZo1YRzQ!+4Uq?&E8T=V0^a-mq#_7^mVpk_9!2nFBPNd8NmGvET~ z_&nj^D|MTl2MYC+VH%Mr6Kfz!Sj2p@ibnVPt)ru>JAZG|J-?6Mxq7d@j}@<+iY$Z4Xpxiw`i7uC;{2pKI8=KAb9@+d>Z}q literal 0 HcmV?d00001 diff --git a/backend/blueprints/__pycache__/printers.cpython-311.pyc b/backend/blueprints/__pycache__/printers.cpython-311.pyc index 6495884e807f627033d4498939e355e7ff372c1b..a8a90effafb7af273733d6950607bdbfafa00677 100644 GIT binary patch delta 6325 zcmb7IdvH_NnZH+$t7}`fg&&eEOR|i4Sb(v4*a7phg99;sfI}LC15qU3Yg@J~nIj2f zA`q`^yxBZ}!zQFP#Lc6HHl5HqlP=xvY}lc@>2xwHd9;J~PLd_v&9=$3J7T+?r1>M= z?>pDBz|b_kKK|)D=X~e&ec$<=bMGIMnooYCDfn)Fel7=3azWcb%fy)it7eDcht)}* z9_Q`Fwl^%_(Qw@N;a`2Ea(acY;T!0Oe3{lRIp{@AIe#C$7B$m^<{SJvEazSH7+vi20`VL<}|4UcSyP+3H@v^&Su$;|c6Ptm1b_Sd0 z#<`|vJ)9LBxB%KMY@x3Sj`>3uufD6>HPGz}99+}W%vQ0Mz9U%pdMI{^J@-qR-JH8& z>Pta1@Ly0v!5Y8~1&jI1)LU>B)?HqBOSm6wMDCv|GQGubFw}-4-bgfj*w(zOwWftc zdxvCFvzwLGH2eC9w_onfSQUTs;9m>>zxxS2)9;a8StwuzWSkLuKsILN5nd7?pT9O!5OHKA)+j%d3+01a;amWtwwGgqRT19^}Y^m^LOH(j3xc>!jSn zFqvL$uVy3Y2Td`p^pzTOHm+tiE*mUuid4^y#0{D=GE8#Ld_!z!+@UvTs!0pI)@|YQ z=)ZSY(CIykDh)9MOy7vpi5Vo_5bFg>@>z*yvW#BaTT1(f3Uhhz)HAzbMmFlTEE1%G zm?oyB&p)x4Mn+5N&7nel;e_spNUsc5X-$!0df<>v_bpCZK#%7Y(;enKdU?!5-^|lf zbF4sn_(%?28mrP4MVe`?#X)~svp^>mN47#}Sw*m2$?Q0bv85oDNTp2C)*zWDwDV%h z(x>Uw?ByiGk({GByJvq#`BCnWb}u)|yRC=cqE8sh>8_Oq`iil*xy3JsW#W1uD2+se zLlKuh9B~bWhDW>+zfTUhhW!zjBoDi`kx(!q2PM}C@q<7-!=a!*5+W-H>8)oM)1Jrj z&9hr5*9A|s5=@wW`P?ZNeKg-5C(9vARv@4|+=8Nygd*O6B7}kge^6Eop}sy0dLrYImH<8h9jQd0U36?q~!L(7!g_Wcq6RIC%8A=y0dlV%}P!f zw4`VN)bhN&5&uEiGZ^xP6@x$Q@kPU954&}w4rj0kVKu@UfT#=LmlIFA=%={wdMv8I zq6^Qsw#fqlu(eP2yYA$fMwgN+`8;7c9ERC%BMs1i+=tKz;9f{Jpo~FCFnHOb)#ckE ztLP6zWim!^XDM25AV9XE(lM01dCtk(HLp#ZILIOAk57CwN`gHVpuLZ3eX z-c@olZuU!x)*tjJ`rc497*Pc8$OuFMWCI}x8zd&uf?z<{j<62lK>$TScLc)jT;jtr zw3A}YbR3tw5wB99ask0URgbVurH*}|8eZ34WS(%j6{f`raq(tvPx0E z9PwmEP`f5!s9+6hVYbJ(-!{PeW^{I@C)hR9`U6fkyRNmsq?3F z{)En-);&NgeU%+`)5Uek;?=3*)#GAX;HP9o6lI{30wW8)|v8!6I(v8yCyBKRU|50OgT3uAnnCBQrngyYelY2Rs2Hg%<%x*(&bq_{67?n{XK zJ}5MwK9nqUr3zgM(e?Sqc_nF1)SI&KfoQoQI;KTO!ucR{)O=02E`SIrDYmA>)`ZwP zlV`cm@Y1@8vUQ2PDo8U%^9`eY+GtN2ohhR;VRX`M3wAHdfqp;#{PQp}!jB(xwwk%0 zn{(T2+Mm0cYuie-zbND(^NUh_n{Dd)f-gk4w)~^*4L(K#<$Lsu_vm}&hn65Ibh-tV ze%3>V_yMweCg>fO$tWfEF8N->A)vB|TV*f|T*5i*Pg z$RMN-p&zS+U1Pge)zy(F>2}9`IgAF7Q|M{O(w;l1fYA)_0Gp-`cRm@#ZWu2dK

    B zP&cw_Ro!i?y5~Npc4xW%Jg84jZFKHjV2fk(V+dmi#}Q5-oTRVUZhsKzNHL6hNzfnc zCx;<-Sxfd|{eFbU5b#VQrvN$?fym)#Afn_*@;e1i!rCsnwXWelHbYPEm&)L}dx#Sp@V6c@9B% z9`Q8&r?pkPn^0u#{T52d^dx|gIdo>vob1`a&KUHA+oTSbb^GJk@JYJ0zP9s45S6@H zvm@&(d2&!D{bL?>1Te#5K#(^Oet__OfUpT5a|&dBNe6wW-YQ&$DkDGjVf|>a>zmjB zgKir+gdz(T3E3J?s{-9%LmaBE#*3t(WZzoG*-3 z+rE`WfP3XVosavO{0##0aT7{kBOtzREHLNBnRn-fg&Gw&+>a2>Ae;qIbP@lstmwl5 zSsuCVlCT#QD8fR7a|nNnz`}_cmW2}rjJrgQl^3vnl-mRN_bC1pVO{`XL@37aKqwlJ zJU+N}45_ipLaOMtkn;FsxJ}69I(DL(oxa<#T=*I0+vy)V92FhdS26QL7&-!ygqvrC zgaYI}sQKnpedn{L&CKx_6N&*Y&B4$p+}W~mpb`dli9vg~z~vpn>!WK&$X6Y9lkcAO z*zkSS~Yk8 z3n6RQw=v7ii19*xjPQ2|?equUg?tB1cpbv~P_Rie^*ir-dDRC&-bS)q!3@U;;}xjs zgmX^a;`GY&I^L+?oD7q+I*vU;03C=;i^fPMyC1#md{u8A; zd0f%L-TbyaeCJkmi?=g6{b*#xl3!yV?EqmBAj`;DoX)`YsWk_5`TRk;?xk%;2l$;QdQHV%zQOF6(qpC=LOHZ6=640s9HT0#>Li*{6 zQvRv4C!O&P*m5HRn*w%91cWTJ{{ga!E S>K6Mm0f3F!-ea4MZ9wK_bTGJ8jwm9$ z%X+0@e~?ts3n$Hu%s=yX(maP7Z=>bUa0Hc$>2FVV@$GcWsZtX%C=vNt$k$Fur|h}r zdv6;0!gDS8m!U!CW%>a9)pKnS`fHwF6-O&|x-IuS^S;K?87)-dWVRw?nS&YOt5>Oq zRklDQb#d67z2LL3)Kz;I38Dw_jMI-W9%js=T_{U<3|nB>zRLz6df`r4JUcH%P`|K{TlD6I{kKo8^zNzkT(k=%FbFB7v5VDl1B%Sttna0m{pv{z zL~V|mW&{gDH3G9S20pVfED1!V1dS}gCs}~d2p-AsF^H@H{SUR=RMpF$@#d|H!Q+ua zy&jLE3569Md$;+Qsk(3H@m(d+h(8cs8J2sa#2*<07y02UM+NjuTnLpohD}u(@Dd5m zM;WeR5xJkJ-;)-imKh0+Fk>J@kVeiZTZf>OA3XXnEY?QHk#dZ@MY;RhZf=do1Z z+|tq7Nv@(AULMH%2+S4Buq(DlFiHqIjID-zi7KBW;JUvMH^P@K_y)C^G=T~vF1!|O zlh*P)KehDLR(@qyg8P$chHFUNndrsWCU>8AUy?6%C-|}?U!UUZXZXSy-jd)g=i`aS yM-qH@lJ8FO-D%BEo`;uU#9LZUvxkR56ila__|pJQ(*o1+X{PF5|7WcZ=l%Z>qAfZA delta 4095 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 diff --git a/backend/blueprints/__pycache__/sessions.cpython-311.pyc b/backend/blueprints/__pycache__/sessions.cpython-311.pyc index b13764005268062c02863a451d1db9382485588b..2f7343c12f3ebb3104930944f0c20469963e32a2 100644 GIT binary patch delta 2678 zcmb7FS!^3c7@pa~>-)Z)IBVjxb{lfEMNpEK#;xO;rU5BIs1YK#*-hitwbAT`l&T?6 zgj69O3WG#Zi%2Du78-G=FG#%5w6qckVF#lGBLouS0ddH{OF$qov$31F?F+Lz-_HE= z&9VP{^Un`G&+W8cuvm`d&l~1g04|Zdnns+Y z%`ORZkXT8sSzQJoLCKhNAN7oQARrvC?2&!4f1H_P2$SU1ge;`ZD0}8jw~P?Thibiy zbB{E3VP(%qAaAA}CG))HwvO$sKn_L$ifR+zkt4fiL-+%?s})Gr#{Li-0C{c-9AgiF zDJVNNocJ7U;hXEM5RhDw`w*PJo$1k-;dM-}WWOWRN0~y4H?=B(VvKJXXj{%1_kyq|Q$iCXsSHbt_do zQpo33SZUcztd}l}2a=$6;ty<{ed}k` zONK0L98ofkGh@sF;+kpx8Gfktoq}}{$4&TN;RXDea31>cN&S|npUhR^$FoRLk%5-k zd||3$$z>FEG&81VpUSFF<7@gZPsMesjz)*~;J@@6VKa^xnqdGxU|0&?Lx!OKQ>sLS z&w{G8iGLVYb)Y$dA2cq(UMxC0hPN!W>{@KuRcc9;TM{2XT51_6`S+Lo`%k4$rGNBq zUh;2W^lvZud&>SEVz7CaeW7n7(b)s%!*7MZ6TD0A$-n$pDsvSyKu$6mH5u;XrBoa!(iNlbhKdu1-cce zl>(I$q8dSQ3RD}2qoAiiw-4P%VLOHUDfCd-OreEBJB7O`G*jpx5Z9r#Wp;yY#Jq*J z?VzxgfI?RyY6+26P|+!BMx9j9E>h_yS-FCLb!=JP&&~g1Ke6I`$v2@o9oS{e$dZ?>#Q;5X0Ka%Q#SU70h00!8=rFHPhBE&n!&%g_AnBM-($BO zR4rs7wX_yfBwo_34@rlqpR{xqyg_cRhBoSEEzRrah*K|7$7%@z5^Id>V~s%~4~;bz zZ=D2c;m84QnbPozH*V!5qZ+zN#h-gxwJ1UZf$5HcK)gu?S|EVx`k5THKwwte@Q2ZnikQ{yOyYA@QaLl)XDDEL&4}R6xNh01g-`-U*?!iuf&Pin$cdZIb z6A_2s^lv(-$x9O&4L+KbDqJ={URV{Grbtbon$p%p#-L8h*Yrfsf+*IsBp*}B^@1KG zHihPQ@a8}_Up3Mw@p|B!JL==CsTE%c9vV!M4kyFAw}JCP0w48p2@`we0W&Etn7D*Z zSg^6Q?1Z%J>Jv%j>NaDNXRq$;O#=4X{g9MD0X)IMxQHJQ9m79|!ZY-IRDzRgHm7t@ z%#s^X867L+axw{mg*-gqWk?Alcf_m#qZ<#1n7A0qFv z!F4KFbVp~iB|}%)&{YL2<#w#Leos4H%oM|2rEpg{+(oP_E6akjx*srP`szAd4z`|& zUyKxk?WJIQIoMw0e9N3`i3=@qp<OF|c(MLgdD?$vWu>YIj2nlVulf`x`Nb=S R-h>V;=r$xe*@X^B@IS#)VcGxy delta 2318 zcma)7Yitx%6rMY?Gqc<7&g}a^AG>9@kD;XxTA|q8($a3Xi-Lsm2mX}8Y+;+ynmbcl zObxH5pY-J3Qs(S+`JnnOnpM3+JYdF%QB2^rBoOB*`B8FvBtZGiV zRLiBZMUG)ElC~;`-K5X1nimm?l2(X%Qf|nIzCgKZJ&rEf7Fp6u+Nz{PRf4N1$oUFc zvTFa=EQgWhFJw6%F_w#Fi2>C;#3-ICXW2^RR#4tP6dxK&KDBT7$>c!%U~+F97P&gu zZE6?qkj0;8EReDJ;I1IC3oK;3E;u5{Ze1v@kzrI6C63BMkEg>l%Pa^qi(_;NzBUD5 zGw*>nWm|=Dbo8T3+{PnVC@+j^ccEE?oAlD*Fw7W&9|f;{77bgA^N|T`#buZgqnhaR zx>rFWT$a6?H;z5W&a!y;;Sr?`AsJePDr7H=>XgI9xyY^ry%zS{-E{x(k>KN8CEp>} zugha~1%8n$Y|2`!lqo@vU1C)cCPhzh%UVK&!HGFuZ(55i_~;^dMm6hg@R`_x>fw&P zK46;T=lLPBSNfht)65Kah?z!;6&lSi$$8uOh^7yZ9MjX!r1fXvvN_`oU<(;F&rM8D z=PhY%a&!`(9MR!`Wt-hgJNVHw)^zM4HoR|X<*`hydzSiOh4CHfQ-pk(dURMzX!SHr$mB$8zD=E8=T% z)*QM~8G=apb+i-yE^mIKB^QikgS&FUU03U~!DQCIC+FXDCV3`#+uxA$Z_oNWbN)`^ z$=(~jikmf&g+rO@3)MG6;qM|HxybHpq(2ww&xYc;P#os1XA}KoDW`kIfgtmRrFUna z#4WK_;w(v~KBu_kNa?VzfYss^fpR8h!c3QJ6<#EnEL0$y8ev+;Qg?R%W6R-!bzl8_;|jhJ~s z(?|3v4abPHlO}uue>k_T7QFU<6&&VWFWWnF4FlPR!Cb>&Hj>Oml2GM-w=&)wZ)29* z$`UNM+!Y;&aVt9zu~%Yzf`uFI5ZlSYeRsd4i)7-0jG2rw-8OmQQ%MTxCH^3H+C=&4 z(aB94l6iyNg!QrE(mc8YE=zuR+QW~yiZc_|Dsi1ElAFBN!Hks`owu2HSkmUWZNQ-C)Vjd*Da+N%U^Z>jyoOOC1;6>)2D>C z$r-4ow{rDH7|>orHH#_Nt^$}|!BD6G-qehqnox0q#70TeZoy2TE%ukdM4BGSX*d6a z?>-EC|1g~Atzr0l)A9XDGRx`exS7fHb`brgr`Ob1%Pj@0#968}^(o?#!cn^kQG09e zCgLoc%LW46vNJm1=2j#`>=idp^gd-1=oK>#X-ZFzYt33p*V7ZnH7vu=6`P~lxO2jqhK>Lnf@ HARYez%N^?V diff --git a/backend/blueprints/__pycache__/tapo_control.cpython-311.pyc b/backend/blueprints/__pycache__/tapo_control.cpython-311.pyc index a403a78ac95f09c0b1646f85b9be9ae6fe19b895..01563bf68777ad1e8837204c58c848a58cac3f8c 100644 GIT binary patch delta 10188 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 BW2FE9 diff --git a/backend/instance/sessions/17b455d6650ddb702c49af71c0e02a00_activity.pkl b/backend/instance/sessions/17b455d6650ddb702c49af71c0e02a00_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..257d1254d7c20938561d3758b3855236b06b8a6f GIT binary patch literal 60 zcmZo*nQF)Y0kuX}=b LT9}wmDb@o3@%Iou literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/451221008e794e3fd9704cd909d8f6e3_activity.pkl b/backend/instance/sessions/451221008e794e3fd9704cd909d8f6e3_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..e7463bf658b6a4ee31e9c0d6a060d6b4db2119ed GIT binary patch literal 60 zcmZo*nQF)Y0kuX{jv Ln;Do-Db@o3@vIOt literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/579630b9d023369939c7505d100af40d_activity.pkl b/backend/instance/sessions/579630b9d023369939c7505d100af40d_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..aa2235f61139cbd86eb0fde27207a7982faf7cff GIT binary patch literal 60 zcmZo*nQF)Y0kuKRyA L8k?9+Db@o3@x%}} literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/70289cdcabfc68acbb2cab27a35e56bb_activity.pkl b/backend/instance/sessions/70289cdcabfc68acbb2cab27a35e56bb_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..3919238f9c18029df730e63db464521e10240cfc GIT binary patch literal 60 zcmZo*nQF)Y0kuX};@ L8Ce)iDb@o3@vaat literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/b74cb8bd4044e0c8a119484552a10389_activity.pkl b/backend/instance/sessions/b74cb8bd4044e0c8a119484552a10389_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..68b4b53ee604c6a75940bab006b04009f33841c5 GIT binary patch literal 60 zcmZo*nQF)Y0kuX};_ LnVA_(Db@o3@x%}` literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/fa0036bb019bf997c2a97cf6f8855986_activity.pkl b/backend/instance/sessions/fa0036bb019bf997c2a97cf6f8855986_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..5b7323ae8658403707d7aacfe3c1529b2fc26d5e GIT binary patch literal 60 zcmZo*nQF)Y0kuKPiD L85tT+Db@o3@n;Yy literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/fe9b8477b21bbc824eff088c083b6c55_activity.pkl b/backend/instance/sessions/fe9b8477b21bbc824eff088c083b6c55_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..5e181a1f7ed911f7d4c5527dd1320fefcfd75129 GIT binary patch literal 60 zcmZo*nQF)Y0ku found ('/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates/login.html') +2025-06-12 20:51:59 - [app] app - [INFO] INFO - Locating template 'base.html': + 1: trying loader of application '__main__' + class: jinja2.loaders.FileSystemLoader + encoding: 'utf-8' + followlinks: False + searchpath: + - /cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates + -> found ('/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates/base.html') +2025-06-12 20:51:59 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 20:52:10 - [app] app - [DEBUG] DEBUG - Request: GET /auth/login +2025-06-12 20:52:10 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 20:52:17 - [app] app - [DEBUG] DEBUG - Request: POST /auth/login +2025-06-12 20:52:17 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-12 20:52:19 - [app] app - [DEBUG] DEBUG - Request: GET / +2025-06-12 20:52:19 - [app] app - [DEBUG] DEBUG - Response: 302 +2025-06-12 20:52:19 - [app] app - [DEBUG] DEBUG - Request: GET /dashboard +2025-06-12 20:52:19 - [app] app - [INFO] INFO - Locating template 'dashboard.html': + 1: trying loader of application '__main__' + class: jinja2.loaders.FileSystemLoader + encoding: 'utf-8' + followlinks: False + searchpath: + - /cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates + -> found ('/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates/dashboard.html') +2025-06-12 20:52:19 - [app] app - [ERROR] ERROR - Unhandled Exception - ID: 20250612_205219 +2025-06-12 20:52:19 - [app] app - [ERROR] ERROR - URL: http://127.0.0.1:5000/dashboard +2025-06-12 20:52:19 - [app] app - [ERROR] ERROR - Method: GET +2025-06-12 20:52:19 - [app] app - [ERROR] ERROR - User: admin +2025-06-12 20:52:19 - [app] app - [ERROR] ERROR - Exception Type: BuildError +2025-06-12 20:52:19 - [app] app - [ERROR] ERROR - Exception: Could not build url for endpoint 'tapo_control.tapo_overview'. Did you mean 'tapo.control_outlet' instead? +2025-06-12 20:52:19 - [app] app - [ERROR] ERROR - Traceback: Traceback (most recent call last): + File "/home/core/.local/lib/python3.11/site-packages/flask/app.py", line 867, in full_dispatch_request + rv = self.dispatch_request() + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/home/core/.local/lib/python3.11/site-packages/flask/app.py", line 852, in dispatch_request + return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/home/core/.local/lib/python3.11/site-packages/flask_login/utils.py", line 290, in decorated_view + return current_app.ensure_sync(func)(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/app.py", line 777, in dashboard + return render_template("dashboard.html") + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/home/core/.local/lib/python3.11/site-packages/flask/templating.py", line 152, in render_template + return _render(app, template, context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/home/core/.local/lib/python3.11/site-packages/flask/templating.py", line 133, in _render + rv = template.render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/home/core/.local/lib/python3.11/site-packages/jinja2/environment.py", line 1301, in render + self.environment.handle_exception() + File "/home/core/.local/lib/python3.11/site-packages/jinja2/environment.py", line 936, in handle_exception + raise rewrite_traceback_stack(source=source) + File "/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates/dashboard.html", line 1, in top-level template code + {% extends "base.html" %} + File "/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates/base.html", line 103, in top-level template code + found ('/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates/errors/500.html') +2025-06-12 20:53:47 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: backend/database/myp.db +2025-06-12 20:53:48 - [app] app - [INFO] INFO - [CONFIG] Erkannte Umgebung: development +2025-06-12 20:53:48 - [app] app - [INFO] INFO - [CONFIG] Production-Modus: False +2025-06-12 20:53:48 - [app] app - [INFO] INFO - [CONFIG] Verwende Development-Konfiguration +2025-06-12 20:53:48 - [app] app - [INFO] INFO - [DEVELOPMENT] Aktiviere Development-Konfiguration +2025-06-12 20:53:48 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ MYP Development Environment Konfiguration aktiviert +2025-06-12 20:53:48 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Environment: Development/Testing +2025-06-12 20:53:48 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Debug Mode: True +2025-06-12 20:53:48 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ SQL Echo: True +2025-06-12 20:53:48 - [app] app - [INFO] INFO - [STARTUP] 🚀 Starte MYP DEVELOPMENT-Umgebung +2025-06-12 20:53:48 - [app] app - [INFO] INFO - [STARTUP] 🏢 Mercedes-Benz TBA Marienfelde +2025-06-12 20:53:48 - [app] app - [INFO] INFO - [STARTUP] 🔒 Air-Gapped: True +2025-06-12 20:53:48 - [app] app - [INFO] INFO - [STARTUP] Initialisiere Datenbank... +2025-06-12 20:53:48 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O) +2025-06-12 20:53:48 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert +2025-06-12 20:53:48 - [app] app - [INFO] INFO - [STARTUP] ✅ Datenbank initialisiert +2025-06-12 20:53:48 - [app] app - [INFO] INFO - [STARTUP] Prüfe Initial-Admin... +2025-06-12 20:53:48 - [app] app - [INFO] INFO - Admin-Benutzer admin (admin@mercedes-benz.com) existiert bereits. Passwort wurde zurückgesetzt. +2025-06-12 20:53:48 - [app] app - [INFO] INFO - [STARTUP] ✅ Admin-Benutzer geprüft +2025-06-12 20:53:48 - [app] app - [INFO] INFO - [STARTUP] Starte Queue Manager... +2025-06-12 20:53:48 - [app] app - [INFO] INFO - [STARTUP] ✅ Queue Manager gestartet +2025-06-12 20:53:48 - [app] app - [INFO] INFO - [STARTUP] Starte Job Scheduler... +2025-06-12 20:53:48 - [app] app - [INFO] INFO - [STARTUP] ✅ Job Scheduler gestartet +2025-06-12 20:53:48 - [app] app - [INFO] INFO - [STARTUP] 🌐 Server startet auf http://0.0.0.0:5000 +2025-06-12 20:53:49 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: backend/database/myp.db +2025-06-12 20:53:50 - [app] app - [INFO] INFO - [CONFIG] Erkannte Umgebung: development +2025-06-12 20:53:50 - [app] app - [INFO] INFO - [CONFIG] Production-Modus: False +2025-06-12 20:53:50 - [app] app - [INFO] INFO - [CONFIG] Verwende Development-Konfiguration +2025-06-12 20:53:50 - [app] app - [INFO] INFO - [DEVELOPMENT] Aktiviere Development-Konfiguration +2025-06-12 20:53:50 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ MYP Development Environment Konfiguration aktiviert +2025-06-12 20:53:50 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Environment: Development/Testing +2025-06-12 20:53:50 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Debug Mode: True +2025-06-12 20:53:50 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ SQL Echo: True +2025-06-12 20:53:50 - [app] app - [INFO] INFO - [STARTUP] 🚀 Starte MYP DEVELOPMENT-Umgebung +2025-06-12 20:53:50 - [app] app - [INFO] INFO - [STARTUP] 🏢 Mercedes-Benz TBA Marienfelde +2025-06-12 20:53:50 - [app] app - [INFO] INFO - [STARTUP] 🔒 Air-Gapped: True +2025-06-12 20:53:50 - [app] app - [INFO] INFO - [STARTUP] Initialisiere Datenbank... +2025-06-12 20:53:50 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O) +2025-06-12 20:53:50 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert +2025-06-12 20:53:50 - [app] app - [INFO] INFO - [STARTUP] ✅ Datenbank initialisiert +2025-06-12 20:53:50 - [app] app - [INFO] INFO - [STARTUP] Prüfe Initial-Admin... +2025-06-12 20:53:50 - [app] app - [INFO] INFO - Admin-Benutzer admin (admin@mercedes-benz.com) existiert bereits. Passwort wurde zurückgesetzt. +2025-06-12 20:53:50 - [app] app - [INFO] INFO - [STARTUP] ✅ Admin-Benutzer geprüft +2025-06-12 20:53:50 - [app] app - [INFO] INFO - [STARTUP] Starte Queue Manager... +2025-06-12 20:53:50 - [app] app - [INFO] INFO - [STARTUP] ✅ Queue Manager gestartet +2025-06-12 20:53:50 - [app] app - [INFO] INFO - [STARTUP] Starte Job Scheduler... +2025-06-12 20:53:50 - [app] app - [INFO] INFO - [STARTUP] ✅ Job Scheduler gestartet +2025-06-12 20:53:50 - [app] app - [INFO] INFO - [STARTUP] 🌐 Server startet auf http://0.0.0.0:5000 +2025-06-12 20:53:51 - [app] app - [INFO] INFO - Locating template 'dashboard.html': + 1: trying loader of application '__main__' + class: jinja2.loaders.FileSystemLoader + encoding: 'utf-8' + followlinks: False + searchpath: + - /cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates + -> found ('/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates/dashboard.html') +2025-06-12 20:53:51 - [app] app - [INFO] INFO - Locating template 'base.html': + 1: trying loader of application '__main__' + class: jinja2.loaders.FileSystemLoader + encoding: 'utf-8' + followlinks: False + searchpath: + - /cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates + -> found ('/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates/base.html') +2025-06-12 20:53:51 - [app] app - [DEBUG] DEBUG - Response: 200 diff --git a/backend/logs/auth/auth.log b/backend/logs/auth/auth.log index 275a76353..66a8557aa 100644 --- a/backend/logs/auth/auth.log +++ b/backend/logs/auth/auth.log @@ -43,3 +43,5 @@ WHERE users.username = ? OR users.email = ? 2025-06-12 14:32:34 - [auth] auth - [INFO] INFO - Benutzer admin@mercedes-benz.com hat sich erfolgreich angemeldet 2025-06-12 15:24:31 - [auth] auth - [WARNING] WARNING - JSON-Parsing fehlgeschlagen: 400 Bad Request: Failed to decode JSON object: Expecting value: line 1 column 1 (char 0) 2025-06-12 15:24:31 - [auth] auth - [INFO] INFO - Benutzer admin@mercedes-benz.com hat sich erfolgreich angemeldet +2025-06-12 20:52:17 - [auth] auth - [WARNING] WARNING - JSON-Parsing fehlgeschlagen: 400 Bad Request: Failed to decode JSON object: Expecting value: line 1 column 1 (char 0) +2025-06-12 20:52:17 - [auth] auth - [INFO] INFO - Benutzer admin@mercedes-benz.com hat sich erfolgreich angemeldet diff --git a/backend/logs/data_management/data_management.log b/backend/logs/data_management/data_management.log index 00aec37f1..a29d1cae3 100644 --- a/backend/logs/data_management/data_management.log +++ b/backend/logs/data_management/data_management.log @@ -164,3 +164,11 @@ 2025-06-12 15:24:09 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) 2025-06-12 19:47:01 - [data_management] data_management - [INFO] INFO - ✅ Data Management Module initialisiert 2025-06-12 19:47:01 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-12 20:51:54 - [data_management] data_management - [INFO] INFO - ✅ Data Management Module initialisiert +2025-06-12 20:51:54 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-12 20:51:56 - [data_management] data_management - [INFO] INFO - ✅ Data Management Module initialisiert +2025-06-12 20:51:56 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-12 20:53:47 - [data_management] data_management - [INFO] INFO - ✅ Data Management Module initialisiert +2025-06-12 20:53:47 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-12 20:53:49 - [data_management] data_management - [INFO] INFO - ✅ Data Management Module initialisiert +2025-06-12 20:53:49 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) diff --git a/backend/logs/energy_monitoring/energy_monitoring.log b/backend/logs/energy_monitoring/energy_monitoring.log index a6aef869b..915c1960c 100644 --- a/backend/logs/energy_monitoring/energy_monitoring.log +++ b/backend/logs/energy_monitoring/energy_monitoring.log @@ -1 +1,5 @@ 2025-06-12 20:00:49 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiemonitoring-Blueprint initialisiert +2025-06-12 20:51:55 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiemonitoring-Blueprint initialisiert +2025-06-12 20:51:57 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiemonitoring-Blueprint initialisiert +2025-06-12 20:53:48 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiemonitoring-Blueprint initialisiert +2025-06-12 20:53:50 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiemonitoring-Blueprint initialisiert diff --git a/backend/logs/hardware_integration/hardware_integration.log b/backend/logs/hardware_integration/hardware_integration.log index bf7e86931..d7afa1819 100644 --- a/backend/logs/hardware_integration/hardware_integration.log +++ b/backend/logs/hardware_integration/hardware_integration.log @@ -338,3 +338,19 @@ 2025-06-12 20:00:49 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Printer Monitor initialisiert 2025-06-12 20:00:49 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Hardware Integration Module initialisiert 2025-06-12 20:00:49 - [hardware_integration] hardware_integration - [INFO] INFO - 📊 Massive Konsolidierung: 2 Dateien → 1 Datei (50% Reduktion) +2025-06-12 20:51:54 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ PyP100 (TP-Link Tapo) verfügbar +2025-06-12 20:51:54 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Printer Monitor initialisiert +2025-06-12 20:51:54 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Hardware Integration Module initialisiert +2025-06-12 20:51:54 - [hardware_integration] hardware_integration - [INFO] INFO - 📊 Massive Konsolidierung: 2 Dateien → 1 Datei (50% Reduktion) +2025-06-12 20:51:56 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ PyP100 (TP-Link Tapo) verfügbar +2025-06-12 20:51:56 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Printer Monitor initialisiert +2025-06-12 20:51:56 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Hardware Integration Module initialisiert +2025-06-12 20:51:56 - [hardware_integration] hardware_integration - [INFO] INFO - 📊 Massive Konsolidierung: 2 Dateien → 1 Datei (50% Reduktion) +2025-06-12 20:53:47 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ PyP100 (TP-Link Tapo) verfügbar +2025-06-12 20:53:47 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Printer Monitor initialisiert +2025-06-12 20:53:47 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Hardware Integration Module initialisiert +2025-06-12 20:53:47 - [hardware_integration] hardware_integration - [INFO] INFO - 📊 Massive Konsolidierung: 2 Dateien → 1 Datei (50% Reduktion) +2025-06-12 20:53:49 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ PyP100 (TP-Link Tapo) verfügbar +2025-06-12 20:53:49 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Printer Monitor initialisiert +2025-06-12 20:53:49 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Hardware Integration Module initialisiert +2025-06-12 20:53:49 - [hardware_integration] hardware_integration - [INFO] INFO - 📊 Massive Konsolidierung: 2 Dateien → 1 Datei (50% Reduktion) diff --git a/backend/logs/job_queue_system/job_queue_system.log b/backend/logs/job_queue_system/job_queue_system.log index 78cca8955..f45e6c111 100644 --- a/backend/logs/job_queue_system/job_queue_system.log +++ b/backend/logs/job_queue_system/job_queue_system.log @@ -310,3 +310,19 @@ 2025-06-12 16:32:44 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestoppt (Legacy-Kompatibilität) 2025-06-12 19:47:01 - [job_queue_system] job_queue_system - [INFO] INFO - ✅ Job & Queue System Module initialisiert 2025-06-12 19:47:01 - [job_queue_system] job_queue_system - [INFO] INFO - 📊 MASSIVE Konsolidierung: 4 Dateien → 1 Datei (75% Reduktion) +2025-06-12 20:51:54 - [job_queue_system] job_queue_system - [INFO] INFO - ✅ Job & Queue System Module initialisiert +2025-06-12 20:51:54 - [job_queue_system] job_queue_system - [INFO] INFO - 📊 MASSIVE Konsolidierung: 4 Dateien → 1 Datei (75% Reduktion) +2025-06-12 20:51:55 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestartet (Legacy-Kompatibilität) +2025-06-12 20:51:56 - [job_queue_system] job_queue_system - [INFO] INFO - ✅ Job & Queue System Module initialisiert +2025-06-12 20:51:56 - [job_queue_system] job_queue_system - [INFO] INFO - 📊 MASSIVE Konsolidierung: 4 Dateien → 1 Datei (75% Reduktion) +2025-06-12 20:51:57 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestartet (Legacy-Kompatibilität) +2025-06-12 20:53:28 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestoppt (Legacy-Kompatibilität) +2025-06-12 20:53:28 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestoppt (Legacy-Kompatibilität) +2025-06-12 20:53:47 - [job_queue_system] job_queue_system - [INFO] INFO - ✅ Job & Queue System Module initialisiert +2025-06-12 20:53:47 - [job_queue_system] job_queue_system - [INFO] INFO - 📊 MASSIVE Konsolidierung: 4 Dateien → 1 Datei (75% Reduktion) +2025-06-12 20:53:48 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestartet (Legacy-Kompatibilität) +2025-06-12 20:53:49 - [job_queue_system] job_queue_system - [INFO] INFO - ✅ Job & Queue System Module initialisiert +2025-06-12 20:53:49 - [job_queue_system] job_queue_system - [INFO] INFO - 📊 MASSIVE Konsolidierung: 4 Dateien → 1 Datei (75% Reduktion) +2025-06-12 20:53:50 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestartet (Legacy-Kompatibilität) +2025-06-12 20:54:05 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestoppt (Legacy-Kompatibilität) +2025-06-12 20:54:05 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestoppt (Legacy-Kompatibilität) diff --git a/backend/logs/monitoring_analytics/monitoring_analytics.log b/backend/logs/monitoring_analytics/monitoring_analytics.log index f0a007445..420789b50 100644 --- a/backend/logs/monitoring_analytics/monitoring_analytics.log +++ b/backend/logs/monitoring_analytics/monitoring_analytics.log @@ -164,3 +164,11 @@ 2025-06-12 15:24:11 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - 📊 MASSIVE Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) 2025-06-12 19:47:04 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - ✅ Monitoring & Analytics Module initialisiert 2025-06-12 19:47:04 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - 📊 MASSIVE Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-12 20:51:55 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - ✅ Monitoring & Analytics Module initialisiert +2025-06-12 20:51:55 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - 📊 MASSIVE Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-12 20:51:57 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - ✅ Monitoring & Analytics Module initialisiert +2025-06-12 20:51:57 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - 📊 MASSIVE Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-12 20:53:48 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - ✅ Monitoring & Analytics Module initialisiert +2025-06-12 20:53:48 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - 📊 MASSIVE Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-12 20:53:50 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - ✅ Monitoring & Analytics Module initialisiert +2025-06-12 20:53:50 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - 📊 MASSIVE Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) diff --git a/backend/logs/scheduler/scheduler.log b/backend/logs/scheduler/scheduler.log index 8764b8ef2..55c90eca4 100644 --- a/backend/logs/scheduler/scheduler.log +++ b/backend/logs/scheduler/scheduler.log @@ -227,3 +227,15 @@ 2025-06-12 15:24:11 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet 2025-06-12 15:24:11 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet 2025-06-12 19:47:01 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True +2025-06-12 20:51:54 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True +2025-06-12 20:51:55 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet +2025-06-12 20:51:55 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet +2025-06-12 20:51:56 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True +2025-06-12 20:51:57 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet +2025-06-12 20:51:57 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet +2025-06-12 20:53:47 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True +2025-06-12 20:53:48 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet +2025-06-12 20:53:48 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet +2025-06-12 20:53:49 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True +2025-06-12 20:53:50 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet +2025-06-12 20:53:50 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet diff --git a/backend/logs/security_suite/security_suite.log b/backend/logs/security_suite/security_suite.log index 43a28e6a4..a04d4f4b5 100644 --- a/backend/logs/security_suite/security_suite.log +++ b/backend/logs/security_suite/security_suite.log @@ -248,3 +248,15 @@ 2025-06-12 19:47:04 - [security_suite] security_suite - [INFO] INFO - 🔒 Security Suite initialisiert 2025-06-12 20:00:49 - [security_suite] security_suite - [INFO] INFO - ✅ Security Suite Module initialisiert 2025-06-12 20:00:49 - [security_suite] security_suite - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-12 20:51:54 - [security_suite] security_suite - [INFO] INFO - ✅ Security Suite Module initialisiert +2025-06-12 20:51:54 - [security_suite] security_suite - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-12 20:51:55 - [security_suite] security_suite - [INFO] INFO - 🔒 Security Suite initialisiert +2025-06-12 20:51:56 - [security_suite] security_suite - [INFO] INFO - ✅ Security Suite Module initialisiert +2025-06-12 20:51:56 - [security_suite] security_suite - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-12 20:51:57 - [security_suite] security_suite - [INFO] INFO - 🔒 Security Suite initialisiert +2025-06-12 20:53:47 - [security_suite] security_suite - [INFO] INFO - ✅ Security Suite Module initialisiert +2025-06-12 20:53:47 - [security_suite] security_suite - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-12 20:53:48 - [security_suite] security_suite - [INFO] INFO - 🔒 Security Suite initialisiert +2025-06-12 20:53:49 - [security_suite] security_suite - [INFO] INFO - ✅ Security Suite Module initialisiert +2025-06-12 20:53:49 - [security_suite] security_suite - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-12 20:53:50 - [security_suite] security_suite - [INFO] INFO - 🔒 Security Suite initialisiert diff --git a/backend/logs/startup/startup.log b/backend/logs/startup/startup.log index 7fdb236d6..96426c83d 100644 --- a/backend/logs/startup/startup.log +++ b/backend/logs/startup/startup.log @@ -745,3 +745,31 @@ 2025-06-12 19:47:04 - [startup] startup - [INFO] INFO - 🪟 Windows-Modus: Aktiviert 2025-06-12 19:47:04 - [startup] startup - [INFO] INFO - 🔒 Windows-sichere Log-Rotation: Aktiviert 2025-06-12 19:47:04 - [startup] startup - [INFO] INFO - ================================================== +2025-06-12 20:51:55 - [startup] startup - [INFO] INFO - ================================================== +2025-06-12 20:51:55 - [startup] startup - [INFO] INFO - [START] MYP Platform Backend wird gestartet... +2025-06-12 20:51:55 - [startup] startup - [INFO] INFO - 🐍 Python Version: 3.11.2 (main, Mar 05 2023, 19:08:04) [GCC] +2025-06-12 20:51:55 - [startup] startup - [INFO] INFO - 💻 Betriebssystem: posix (linux) +2025-06-12 20:51:55 - [startup] startup - [INFO] INFO - 📁 Arbeitsverzeichnis: /cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend +2025-06-12 20:51:55 - [startup] startup - [INFO] INFO - ⏰ Startzeit: 2025-06-12T20:51:55.581784 +2025-06-12 20:51:55 - [startup] startup - [INFO] INFO - ================================================== +2025-06-12 20:51:57 - [startup] startup - [INFO] INFO - ================================================== +2025-06-12 20:51:57 - [startup] startup - [INFO] INFO - [START] MYP Platform Backend wird gestartet... +2025-06-12 20:51:57 - [startup] startup - [INFO] INFO - 🐍 Python Version: 3.11.2 (main, Mar 05 2023, 19:08:04) [GCC] +2025-06-12 20:51:57 - [startup] startup - [INFO] INFO - 💻 Betriebssystem: posix (linux) +2025-06-12 20:51:57 - [startup] startup - [INFO] INFO - 📁 Arbeitsverzeichnis: /cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend +2025-06-12 20:51:57 - [startup] startup - [INFO] INFO - ⏰ Startzeit: 2025-06-12T20:51:57.371326 +2025-06-12 20:51:57 - [startup] startup - [INFO] INFO - ================================================== +2025-06-12 20:53:48 - [startup] startup - [INFO] INFO - ================================================== +2025-06-12 20:53:48 - [startup] startup - [INFO] INFO - [START] MYP Platform Backend wird gestartet... +2025-06-12 20:53:48 - [startup] startup - [INFO] INFO - 🐍 Python Version: 3.11.2 (main, Mar 05 2023, 19:08:04) [GCC] +2025-06-12 20:53:48 - [startup] startup - [INFO] INFO - 💻 Betriebssystem: posix (linux) +2025-06-12 20:53:48 - [startup] startup - [INFO] INFO - 📁 Arbeitsverzeichnis: /cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend +2025-06-12 20:53:48 - [startup] startup - [INFO] INFO - ⏰ Startzeit: 2025-06-12T20:53:48.307207 +2025-06-12 20:53:48 - [startup] startup - [INFO] INFO - ================================================== +2025-06-12 20:53:50 - [startup] startup - [INFO] INFO - ================================================== +2025-06-12 20:53:50 - [startup] startup - [INFO] INFO - [START] MYP Platform Backend wird gestartet... +2025-06-12 20:53:50 - [startup] startup - [INFO] INFO - 🐍 Python Version: 3.11.2 (main, Mar 05 2023, 19:08:04) [GCC] +2025-06-12 20:53:50 - [startup] startup - [INFO] INFO - 💻 Betriebssystem: posix (linux) +2025-06-12 20:53:50 - [startup] startup - [INFO] INFO - 📁 Arbeitsverzeichnis: /cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend +2025-06-12 20:53:50 - [startup] startup - [INFO] INFO - ⏰ Startzeit: 2025-06-12T20:53:50.310423 +2025-06-12 20:53:50 - [startup] startup - [INFO] INFO - ================================================== diff --git a/backend/logs/tapo_controller/tapo_controller.log b/backend/logs/tapo_controller/tapo_controller.log index 08ad7933f..096d4ac62 100644 --- a/backend/logs/tapo_controller/tapo_controller.log +++ b/backend/logs/tapo_controller/tapo_controller.log @@ -83,3 +83,7 @@ 2025-06-12 15:24:09 - [tapo_controller] tapo_controller - [INFO] INFO - ✅ tapo controller initialisiert 2025-06-12 19:47:01 - [tapo_controller] tapo_controller - [INFO] INFO - ✅ tapo controller initialisiert 2025-06-12 20:00:49 - [tapo_controller] tapo_controller - [INFO] INFO - ✅ tapo controller initialisiert +2025-06-12 20:51:54 - [tapo_controller] tapo_controller - [INFO] INFO - ✅ tapo controller initialisiert +2025-06-12 20:51:56 - [tapo_controller] tapo_controller - [INFO] INFO - ✅ tapo controller initialisiert +2025-06-12 20:53:47 - [tapo_controller] tapo_controller - [INFO] INFO - ✅ tapo controller initialisiert +2025-06-12 20:53:49 - [tapo_controller] tapo_controller - [INFO] INFO - ✅ tapo controller initialisiert diff --git a/backend/logs/tapo_status_manager/tapo_status_manager.log b/backend/logs/tapo_status_manager/tapo_status_manager.log index c6277ee81..ea9b6ea02 100644 --- a/backend/logs/tapo_status_manager/tapo_status_manager.log +++ b/backend/logs/tapo_status_manager/tapo_status_manager.log @@ -40,3 +40,7 @@ 2025-06-12 15:24:06 - [tapo_status_manager] tapo_status_manager - [INFO] INFO - TapoStatusManager initialisiert 2025-06-12 15:24:09 - [tapo_status_manager] tapo_status_manager - [INFO] INFO - TapoStatusManager initialisiert 2025-06-12 19:47:01 - [tapo_status_manager] tapo_status_manager - [INFO] INFO - TapoStatusManager initialisiert +2025-06-12 20:51:54 - [tapo_status_manager] tapo_status_manager - [INFO] INFO - TapoStatusManager initialisiert +2025-06-12 20:51:56 - [tapo_status_manager] tapo_status_manager - [INFO] INFO - TapoStatusManager initialisiert +2025-06-12 20:53:47 - [tapo_status_manager] tapo_status_manager - [INFO] INFO - TapoStatusManager initialisiert +2025-06-12 20:53:49 - [tapo_status_manager] tapo_status_manager - [INFO] INFO - TapoStatusManager initialisiert diff --git a/backend/logs/utilities_collection/utilities_collection.log b/backend/logs/utilities_collection/utilities_collection.log index 4d358f530..d3d06f73c 100644 --- a/backend/logs/utilities_collection/utilities_collection.log +++ b/backend/logs/utilities_collection/utilities_collection.log @@ -174,3 +174,11 @@ 2025-06-12 19:47:01 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion) 2025-06-12 20:00:49 - [utilities_collection] utilities_collection - [INFO] INFO - ✅ Utilities Collection initialisiert 2025-06-12 20:00:49 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion) +2025-06-12 20:51:54 - [utilities_collection] utilities_collection - [INFO] INFO - ✅ Utilities Collection initialisiert +2025-06-12 20:51:54 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion) +2025-06-12 20:51:56 - [utilities_collection] utilities_collection - [INFO] INFO - ✅ Utilities Collection initialisiert +2025-06-12 20:51:56 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion) +2025-06-12 20:53:47 - [utilities_collection] utilities_collection - [INFO] INFO - ✅ Utilities Collection initialisiert +2025-06-12 20:53:47 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion) +2025-06-12 20:53:49 - [utilities_collection] utilities_collection - [INFO] INFO - ✅ Utilities Collection initialisiert +2025-06-12 20:53:49 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion) diff --git a/backend/templates/base.html b/backend/templates/base.html index e6546aabf..4954e513d 100644 --- a/backend/templates/base.html +++ b/backend/templates/base.html @@ -100,7 +100,7 @@ Statistiken - Smart Plugs diff --git a/backend/utils/__pycache__/data_management.cpython-311.pyc b/backend/utils/__pycache__/data_management.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..028510c1c6d6c7bd00800766a4c79f55270046a2 GIT binary patch literal 19658 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

    p=dMi|KN91lQtDf&e z{&l~1W-#!2hyiK(3D%25ZSh*vCs2E)~4&@d@gR|l+yt2-%%lWL% z%X!SF)sncZ@G_90J*`Sb2zR7g4Pq?-YUx&HdK9c$=qKG!v;#34x-lBB+q;<{6^g1} zI&}zs_bZ;GBhm1?3B*k3B%msEvf9)CSpRaP+%s0`83VL9)mED&-cqgiR5a?^<*aZ2 zF)fYm()W84o)_L^;7?34u#gDR$W0YjuppRWL0Bos5Enw86NE2{qT;j!1VJuHf0^#+*Vf?nTB5uzbuOY68^ zKSiK@Ckzq&4}s#r5V0-L)sFT7V)I-8@}AW|(8+m~yMH-nXkrbtP#V8%&xF(?)_pU-aBIHkEOtz+7R(-%CIx|Gim3V)KI!m_Bv5&HiE zq2U>sq=Fi6pOya;ylDG`ACVtGD?LVOZ$N;bVi+JZTG z_1Z--!@YKq)p;}e27T9Pz21a+?hih`QVtDOLPMMWn*THd4&b18OY7b@8h*i`-Z;Eq iH+JlC=*wt1##dteW~AotWR4m`pMYm!jvgv3oc$LSpOlXP literal 18543 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

    lBtRm8WT`G)BP_3 zRO|5X8&m-G4PVAiZ8+l8M>!u&<9{58{sA%)kbEQ@f)5n|C`^NwW;6ufEr#I(Mf}!1 zP66)866Z)q^~1v5tA)FzBV$tGZn^NZQg~W2omS`a3gq(E32(tkSU^Ht zM~RwVf|o@1wnQ#3z~^=9nkTCtjSfjWXxR84LjwLO!AcU~D?48R^y%Pb0XKaGbQ(&! zGpX(BKT#mhmSk~O`T{;&(3u6~E*zTi&$feaX$0yN)$jKh@}D2t@zX#^#82cPkAPd* zD(WChgNzl5pzv>z{1p-$jvUc_YI{z706s7LC%B8ECjJ|s@ZA|rubYgt37$eg>=bRk zQh>h%Rd|K`5>(L@@=H)IDIF42t)veLszus7B&a4yAJ(XyQofL&woCeupms?5uts?$ zeMnHdBz;&bD7{)G!S`kb%}PP@70bGbH_`AQ%1^&0>ECAGJy}4NdZm&U_~uP1*?FaS l-DIGvrP_Uf9%#@%^u%VT@u7?K?wESMpE|2on^7W>{|{-1z48D6 diff --git a/backend/utils/__pycache__/drag_drop_system.cpython-311.pyc b/backend/utils/__pycache__/drag_drop_system.cpython-311.pyc index 25b482a01e0f49448491d4c24846b7a59c1f8fec..19eab89d629c190827a8022dce9278c57fe85c1a 100644 GIT binary patch delta 148 zcmex;gSqP_Gw*Ub8xG3nIp|O!S{iTg)X-Q^Iv0h4INn(6%VqRi;YHn&?Ns%Z} zQIQysxFrQq03tI>GEb8kbmozA-Rz^{iUu@X-Q^Iv0hqcPHKE^VqRi;YEh9WP(_g# okhsMMku6RwDap)BFW$W2WjdpY%>@Q5=mvxL1>9(}_iKAb0PmwN>;M1& diff --git a/backend/utils/__pycache__/hardware_integration.cpython-311.pyc b/backend/utils/__pycache__/hardware_integration.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c03ce6a9f8d9db2ef29afbf24ed7aaae9482981a GIT binary patch literal 49293 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 R61agWJ=|&f#a;v8{|8s%qXK?>SUZ`8mjUo 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 b+!2{OB5_ADoLvbTPjRPZ?zEJ@8CL(_Q$ray literal 0 HcmV?d00001 diff --git a/backend/utils/__pycache__/job_scheduler.cpython-311.pyc b/backend/utils/__pycache__/job_scheduler.cpython-311.pyc index 866c52badb948ef23c9dcd658ec64e6085168bd6..8fc3e5940ca382d704feed6ba1c1bfd732b19847 100644 GIT binary patch delta 7358 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 HK~?x4`S#{| diff --git a/backend/utils/__pycache__/monitoring_analytics.cpython-311.pyc b/backend/utils/__pycache__/monitoring_analytics.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..729edc3844ff874a59b105a642e7d1387990af7d GIT binary patch literal 17558 zcmd6OTWlOxc3}0B{U|=W#pYX0k(AhyniM69q-i}&iK0kJlr*BGu_({Bn_We+rG9X# zijvqS4PoG9X|IyeBmyjFXru>lCN%6xl-&u!L7YH{9bm8l7FCVHvQdDsLbCIrKMp)u zWR3mUb8dB4SM@`-H{-!x7Ej;0_uTir=XFp0d3Cjmf*{qOU;KHHqW%S6^1+&md~w1| zQSVX=HA^uj#vC)vn#iwt)=YjavljAeowdTRC1#7;W^Hl%tlfn8)>u{CG3$ssXPt4^ ztSj!Gb(3^kjE+~&R+G3rRuiwCt&P{s){%E}tUlf_>&eBvv%8?4s#s&(H|sM|W{UMO zj-Q$+>Ld79!)%k8I!iImwCPmex{yvu$`=H-rTI!IB#Ye-m=c_sgUP^ zysip)UdZc)yiTZN7sPui;59HS(abP=Y-INv6!B4%qb zCS#tV0&UCBV6j}&$wX90a?!+sf3JTm5ss}0(FpGk`mbHMdS%Ri{?f&nOBbfbr_Nlt zcJZw1_%{hI*K~A&3k%U?!atRmPjYb*A9X?H9KXbU`blCT7L6>9`osBl`<7M?`j=Ra zASWVhNZ`Ve+bl=YId&<@384ix!9uM`OoXb=Clh=!7GC2`BD^c_?jU+@>~`2 z?2zZKkXHqHG~x(Tp9G8awspFT7*5R9-~f{j7^@P)(uWIw>}yBm%Puz&j#>^&h8OD;40 zktE0V&qre{-+v@@3U>E=Xl$9Ei^dqh3oR#@&`e};ImY%+O`Z>q&GC`N*fLKJ?L1aw z*sDRBp;1e}FC;TRr_B_0Q?xFbu;p(U1! zunB?N1$gS>a6X7CwPfW&h_cLw7ueLEGGi~oIe>LE0=Q58s&8;r z7K*d+B)7utfkdtgK{tXP1h_i_W)3Guv8#AIj>7L(r@KL&N;M}p<2@B;T#wcdweT+i zfJv|S$@P1s`d+!dcisMMSL>tKvdz2Y=0Mih{^-rDx8>1!0(RW?I@b=R0;j8VU2yKm zy4-e7p-Ri33g^g(vq}|CRSKm1RVt0Uqa+lUO500NAfW_H*MkDS5i5UYm)im3 zdNLN{K`Kfx(FIl$i;({SA%~Mo1O;F~@g>E+3{nBe4i=zcTrZU6`TztR9PU5Gl1ScF zoKZfh%6MD@B6tw^5d;w6(JCQ~4Jb(PL>_|!PZ(dS+(|7(8;9z67QlV#U+q-Oo{hHm zIyO4Cn+Gz@15)!5x%tTFjV+I&Kf3+sHtdc|Qsa@V$G7d-m+|bAJOSAg$TqfYHwH6} zL8-A{ZtRE6wCxRKyaCC3K=vLecd9Q2s*!yq!f`efQe2@>Jjnoqgg6}veIIC6E~hFK zVv>&j8%l{<7A6 zqIKVn)naSkp)}w!+xpVGb}0BM1`emql^);pY(_SlKDf9;!D}&SbO1_sn%_K~zV`uC z0I$WsizvEU%Ajb))RAESBk->UYcBT1Wr$Rg1X(*! za<7_|kv&DJ1?W)}*^6z>wrU-xzISBJ zzG^QB2TNdPSgTsKF}8vdoi0nDR;z&d!R!|d1dKfe4I9g@Rvm-12ZP4c@-;FgHLf{c zG#bWqo6HE;wE99k!d4x~R-qS8><{C5i&}-z7tNh>)yZ8H>hrS)_)g>e8G2Kchph-m zJaeI>EJ~M^@?Ov;=fPV=4&fvDJB@_3{W5e30W?5Q{2d!OTZ1A3+bAC zO#jPNueyFry@MJ~x{UJ@HAT!fD5iGJ^`>hk_j}iLm%3-ULESY4>QcLA z!tpq$uKsh$xuAB^I6S-{jMpHaVCF(Ri0h#9D;B^4KIS44Xy{gQj#oUu&xB<@1hNLO zn>mo(0k3We>>sL@1xGt9@CwZ@MR8YWPbhh}QWR>PO}W^)nQA91@V` z6uJk4H1{1+Oty=-e3qitYQ$EVlx6#$t*k#wHZIx>Skt8sg$!54ee@plivc+agx7E1coH0ZOqz0ym3= zFJMFN!rb$UiRJOw_zOW*IChnt<5bVrT8isXBmXa;THdF2ti8^jEPYrk_dILf_qao9 z4uA@>elF{2-}ZE6JYDJ2lBZYp^lp0&W;_QaPoM1RTOS9JX!o9U_j}QeXm(#9+r2mI z@62}iL8@u40bQlJW_@a>fof_4`JsB!q{4@mY;)U2i`aZ9z4Flh%-b$@9Fe_)+uo6k zcVw&aX}#nkd6>l4MyJVSVcJ+J=XNZ?8O9c|7pW+WJ~HIP`a(t*gIi{-jw7o_ZRQ4o*FEKJJt1 z0y}o9^{fdt+7mATsbxZLnOHxct!;r`S2z5swd3&{QtJV^^}x>}PYy_ZC*-~pQtOG& z3+ei3yFcA3wFl+)ASeX`4WJYZG(2>QEeEB#;7$!y?c1i?GIX0ncgS>yNOxpCZ6e+F zZ@;Q-0tw35QvjdSE!(s|L;J*lujkXix~SZf>#mTKtO2jO^7Lue0$vYFylWUKvS!Zrn_`BomBQZK@ds#?#}FVkvf1^We9^8ECo6>P0;%!|(UB%Xs&6S4^!UXzcZ~wOUNXC2Q z$>bIg|5s%1D^CX`?|6<0?3e2fY)(pbN5#6MK)(N&tu z2vGjgDdi{e6#=TR{1Sls+FxENH=$Cl0sDSiPg>YK{lv35`N5kz6ucILS53QZJ)471 zEKg>hI6gkHL&0lBpmqkk5P^R!*mJQjaCDXQYVC%_##S+)W1~JjZ)fm^#F4upsa0>h z$b}bPu%%iqk5BZYj1_}BCA@r7FT*g;z^73DCVWa&p2_Wo*1O#8Myg4>Ay@*F2*dZQ z_j!Cjh`4kv9$E?uixm{>qRwfG^(M5$*8u>I~Rk+74_{!dtVm8q7$ z95535@;aqy4WWFdfWp^*TF;ysLkX;8VPVoVD_k#&v@E_x|oPvX-}a5h|RrgZbOZDi%=4n zu2pwAu^FsJ-D~bQ-Ap%##U!Q^i+fTXc_$7bf6p;P>_9oTrqtvvAyhULN>%sV=!y3* zp`OW}>7JP{t$j<({D*M!y9Bqld^E*=Su@GT?tni)wf1v)&7N?=ZpX&ZdKFt z-ZYwqa53N^7fIY8RH8V*GB=O6O&pJnA&DhvpZhif4t1WI_PD92dSj19rT` zf_h_u_b5a{ z12Ov|8(mlwz!Fq&65`O#s@PUSOG%!a!+15AjS4!0s%PMO7EDF?+v!F!D==yKi!XK0 zrS_^5M0N@BZYq!W5md@|0}n!T(IID3)_479j*saNYd)^o?me05J^8d&>b)%YUKV}V z)n|P&+tMMo91wlOo38?ZXMOTlb&ZdzA20rOgIG5x)eXvZgX?3Tw{^Tdy?*B55Q_0N zKb(4JN^IP_X_n{%GJQa#4`k`;A6|Ip!sCX=*VA+F-4yrhj3C8Xk-u|%LjR)XlbY?3 zOPP^N;^o(+k+3`x7WYTsk!VJy8Ifi{yJ-zdEq!uJADDR>JGUDLGmV2%Ai&^K$#0q z?rtsr{7r~xk3>()^t4D%XZ5wHgN70}x2m2xoWbiNWcCJ)^FmSiMJ;oOs-E7YufG%y<7B8Y)t}y zN21Tl^jVQUoAtD=U&@={h#gJ^IuqQft?!GSr{Iz3(=vTpq))@u?!&?SU*6uVn^AyR zv*~k*(qPByxbpr645)#|@@UyA?{xrnt18Ap6aZ(5(Db4*E>gx_asFtdkN}EQb;bEB z!F}IarY~hh!xAAzC%BZi`7t%>N*McxDiRT5jJCgCxN6kbhzzSFFtw|W3PMcXn&V9e zQwKr}iRpxx`sIC45n&I+)%D`CkOJQ{J}1JcE~K;IIm(5X<4Uz^z*BikC}mgW8O0hB zk|FL6RK(pyu!10k;0*w&29#a$6{}^rRm^bZD+W&P$jdG%3;3g^TJ!k%ju5_uT?E{w z;>`S2&_!UrZ(+L{kLP|5Uva*;-$(Et5v(IX-p##@puoDFssZqiG4&CGcM$w11P>7W z0fIk7zyjb=h|pMZ?$So%ullJ<^;BfTdbIz6m460RTvcT?g96R+SwLN?;Gkors zqtftodHA}xKZVcD$o9=x=4MQc-<59OlW*Qr(hn9Tqj}RaU=N=;{vgmyu(-8a_{PSq@(_8eqMQitt)npq+i(U@c58IkHEjtwa z6oW-mqpj(QV~2vDr<3GI{LWSKTM?)xD(pc7{sampAxbfu0(j8jS=N+??T*s6o%jO0YDxi{?UZ3`&4AB6<)h9-ZKw z{~mw{`AVI3Z5v{V!%un3VOyEeYSzR515NPV0Pa(tcO8|whUKndv?2OG_xDTw0ogx* zZ|x#^Dp(YeK@&0I8AOb;QE)Xjj<~!v(TJnBA*SYnkSRsf&mxxY+-u@(bYTwYc>GwYx;D~sgL^+Cf1i+nB*J?iQdN@1srYz0a4@L z$JjgqVv9$w7rjq4aUEpxn-fL1aB6S4g(f~B20RLOB#*45qVHg~V~^Z1wB0e4>6nr_ z&dVL=v+bR7`{C{O$xQpC)P7EGKbP(7kvoUBJ1=KCFH43WK5NcPDo=)t?- z1#$}#)R5LrNj?RCjq9}rA9<~r7bp-E;iE5|-OZBoU-E&^l^HCZAgq=K##SQ0m>9dR z7Tq-{3h?X$O5ei`ONsk$5H5@0Jxc_x#KtlwxpDcD7x zqisNOM7SuLcVejy#OC}(mK3ll%z>m8StN#&=XiUW@)is#{(1Oxz<&pPZvqx_|ESo* z-~%J@#B=~@+D3_8WaKh-nNRgp+VloA zC+_+G26f%1o;5Ve4g0qnj%ON47g-0d&Wto0iq+eDG4?Q^f_$ArhvuVz__lxfR*o-G4~hHjXr3exXgm5zPn@FJ&q{vVS{Vy;Kqm-u*R)O|8Bn@cTjPTrlhQ1%x_r3LZ()T9P_q?x! z&d>^9P>}wYxp!9QKhHaLWB6+r!w`&tM->$3AI5Mr<31|6hh_J$XdV7`=HFM)K@H~K z56wzlPT$O_R!L5kzm4mmrlDXyTC@O%Gw#EZdr)={iq^qzsq>`_1HN2}+y=)={g;fI zU{Q`%D0Mn2OiFW~z-UhBmtyztVmpzqI4-aY;mAtxyBx9+PBjB)9xL2mLB~qYbKcjb zAU>n`#Qi3sz0WOE1Jrwu7Uj3d(PllcX+Bxj@ zUn2gu((MkYxoo$`CvsK~?r*Sh<3?BNBk-{>82aJzD3r6N`~#p}!p{C8-`VAUi2d`% z@9C8;{g>F&p&Z*6?)pfNcXg{<7=8PB0zRlUophi}5c9Yi4c zD;R@MD%D@hQVd_h2{??3d5KZH;GSX(*GjcJ8Q1ko$1(NOpA#HPRIr*9|KEW{ z?^sMG(~h;;WZj_QZ$@Z@&GaZ@=U_DEnaMy*m!GX)tX~&un(3U;O|a?%=f;Aj;$M zv?m=&H*H)j&Lt%PWyDy^2;%7hpd3wuRSABI0coK7F`qvD_})fe*#>Hi{c@GO>MM0n mrrK@FlYxczo{^{tnVJx(i7Zu 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 literal 0 HcmV?d00001 diff --git a/backend/utils/__pycache__/utilities_collection.cpython-311.pyc b/backend/utils/__pycache__/utilities_collection.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..bda2a44774d21d1e2486a49bd4fdefdaa8e98870 GIT binary patch literal 13270 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 R$XK3PDlkh@`KJ2ye*w!;LE8WT literal 0 HcmV?d00001