From 151489a642606a8c21bbb01ef94bcbcfa173b760 Mon Sep 17 00:00:00 2001 From: MrWaradana Date: Wed, 4 Feb 2026 13:12:16 +0700 Subject: [PATCH] feat: Stream real-time status updates during equipment processing, enhance prediction robustness by validating asset data, and remove `await` from EAC calculation calls. --- .../__pycache__/model.cpython-311.pyc | Bin 5772 -> 8649 bytes .../__pycache__/router.cpython-311.pyc | Bin 15142 -> 16277 bytes .../__pycache__/schema.cpython-311.pyc | Bin 14983 -> 15471 bytes .../__pycache__/service.cpython-311.pyc | Bin 30602 -> 35210 bytes src/equipment/router.py | 9 +++++++-- src/modules/equipment/Prediksi.py | 6 +++++- .../__pycache__/Prediksi.cpython-311.pyc | Bin 53551 -> 50593 bytes .../insert_actual_data.cpython-311.pyc | Bin 61303 -> 61815 bytes .../equipment/__pycache__/run.cpython-311.pyc | Bin 2998 -> 2998 bytes .../__pycache__/schema.cpython-311.pyc | Bin 11852 -> 11852 bytes 10 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/equipment/__pycache__/model.cpython-311.pyc b/src/equipment/__pycache__/model.cpython-311.pyc index 7b84e7eadfeddd9a9bf947b2f980ec3ac0a2ee1d..765df7e134e231666c3cbc01c7e8663d219442a2 100644 GIT binary patch delta 802 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 delta 768 zcmZvZ&ubGw6vy{%V}ESe)}kTV22qN!+1hAqOl(XQ@gi6VXn%kfDkZzsP&Lgafmn$w zB_Ksaw~wMoJm{ewR1o&y!GFM`Cn^00gkGv3A_dX;P7g|P*!l40`<;1j=IvJfeocR+ z>zX1)?sC0&-qQ_w=?%Oi-CI9J8tC?ST)f8RC!e)X5Sy?g5g( z0#F7V;22O5*a%p~Le;5aT|?2Hd4xbg%*r``+B`%0r@*B6cB;>#y8mTxQ>D8&q1AB$ zDEV877esaTjyHn$pa!JH&kskm21200xn!CeemR*{^*chyPdGZvMSed#MT^{>x}v!d z0M{?4o)Wnt=S7}Khx(B>Z+18)b_@bXfxqQkS#Aj;u)=TC8CnwO4gQs0)tWGXRc>Xn z)bu}ROzM3I^^w3vd&Qo03O9JRJKX0%l}(flOJKPI49SNtBLtrD%!t>4C~q44V`Ofu z2urq7c1J$mg(mMM?;uZ~fF^%xN<`b8qqj;{?WTR!c_Nl1W@VY*WPhp_@%riURHsH$ V^i}ykACG;L&i8-)h(D9-r9VUzvJ(IR diff --git a/src/equipment/__pycache__/service.cpython-311.pyc b/src/equipment/__pycache__/service.cpython-311.pyc index 05604914c2613381b9168a425ae5e1690e5070e9..3e0e7b32e600af19c94f9ece1c223019a3f10b70 100644 GIT binary patch delta 8537 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 WJny)1GR5Kd$FL&t`~O2`*Z%_(O6Nxa delta 4820 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 FzX1qH`e6V7 delta 1153 zcmZ`%U2NM_7`@ky+b;iUZan(8nyuZ4VA+a-ST?aOMU%2*5iK1RRbg2cCyUiCZEZJQ zgFPmAKw>XxZ=j%Q2!SZjuq~S(m=F(JE2OMXZYii#6jeMSR7xa%ChY~T+q^*G`rdPn z?|1xtpMCw{NBY4JwEbh7%?!vG?7b}bzQ1KZ*bE#UzXLydp$!MJw#VJu zx>B|#Eh)i zS8T%BVmsxv;17yEOPLtOrwMp>;$Mnyb~ptomW>Yze2h<~;-iD|inE$Jc0r1bj3&kL z6>B^(vY9Lq@gQd`&@dbZqvF)VpRLmOOhqOm6VXC6 zAKfe>-62IJGVhWi2J5HKR7In-faE14>quVS{X{;JkF4R9(nN3A0Y0J#d=m6`c7WMt z57Dz7?6bA>TrETNoZW5U9>X)Y_e9{NAKY&>O!xh4*i6rxO+?Q-%;5k%-{1-R>3KgB z4rupo`CDNT|Ed3OIYz#r_?mGr$MNc-zviZi$RIwj_~EvY_P-(cIez%{AOCvbkoM#^ zr)YQ>zq;HBkKozmGJHn6^4%fG^pl!qt-Nx@MfOjx?}h#Nm31$3j%=s3PuE|BHO9$` n{kV4Hcum}p=WujmHTb0&swIWI340}#C0)R>tjzmYFcl`(R2f@%gMW8CJGYBw1fQzkFg_{f+wd8%eP kW8P$5t=Wu4lUHh8Wh~oVuie7Pl)yB3zplh)SzUcb09MBvDgXcg delta 80 zcmX>Tb0&swIWI340}wnp;*+^WZ6jZxDr45>1l0^i#{A7E)owB}mQG%*@sY85@>I=o k#`?*;TC*9OC$H4H%GkcSUb}^n$%%RLeqD*pvby?=0C4vkumAu6