From 6712f0cd48eba26c53894f72baf06944818fc640 Mon Sep 17 00:00:00 2001 From: MrWaradana Date: Thu, 6 Nov 2025 17:10:14 +0700 Subject: [PATCH] fix prediksi script --- .../__pycache__/config.cpython-311.pyc | Bin 1361 -> 1365 bytes src/modules/equipment/Prediksi.py | 66 ++++++++++-------- .../equipment/__pycache__/Eac.cpython-311.pyc | Bin 9246 -> 9250 bytes .../__pycache__/Prediksi.cpython-311.pyc | Bin 28009 -> 31325 bytes .../insert_actual_data.cpython-311.pyc | Bin 36615 -> 36818 bytes src/modules/equipment/run.py | 17 +++-- 6 files changed, 45 insertions(+), 38 deletions(-) diff --git a/src/modules/__pycache__/config.cpython-311.pyc b/src/modules/__pycache__/config.cpython-311.pyc index 91764e1f8b171319b03a565b0f2901b1572f5909..23843b8fab6926f4b54a07d8a33074193aeafc14 100644 GIT binary patch delta 60 zcmcb}b(M>EIWI340}vd{<;hgp$h(bEK|?i( diff --git a/src/modules/equipment/Prediksi.py b/src/modules/equipment/Prediksi.py index 1acc5eb..4621b8c 100644 --- a/src/modules/equipment/Prediksi.py +++ b/src/modules/equipment/Prediksi.py @@ -195,7 +195,7 @@ class Prediksi: "raw_loss_output_MW", raw_loss_output_price , created_by, created_at ) VALUES ( - %s, %s, 0, 1, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, 'Sys', NOW() + %s, %s, 0, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, 'Sys', NOW() ) """ @@ -226,40 +226,44 @@ class Prediksi: max_seq = max_seq + 1 # Update values from API api_data = await fetch_api_data(equipment_id, row["year"]) - if api_data: - # # Get current num_fail - cm_interval_prediction = api_data["data"][0]["num_fail"] + if api_data and "data" in api_data and isinstance(api_data["data"], list) and len(api_data["data"]) > 0: + # Get current num_fail (ensure numeric) + try: + cm_interval_prediction = float(api_data["data"][0].get("num_fail", row.get("cm_interval", 1))) + except Exception: + cm_interval_prediction = float(row.get("cm_interval", 1)) if not pd.isna(row.get("cm_interval", None)) else 1 else: - cm_interval_prediction = ( - ( - float(row["cm_interval"]) - if float(row["cm_interval"]) >= 1 - else 1 - ), - ) + # Fallback: ensure numeric scalar, not a tuple + try: + val = float(row.get("cm_interval", 1)) + cm_interval_prediction = val if val >= 1 else 1.0 + except Exception: + cm_interval_prediction = 1.0 + records_to_insert.append( ( str(uuid4()), int(max_seq), - float(row["year"]), + float(row["pm_interval"]) if not pd.isna(row.get("pm_interval", None)) else 0.0, + float(row["year"]) if not pd.isna(row.get("year", None)) else 0.0, equipment_id, cm_interval_prediction, - float(row["cm_cost"]), - float(row["cm_labor_time"]), - float(row["cm_labor_human"]), - float(row["pm_cost"]), - float(row["pm_labor_time"]), - float(row["pm_labor_human"]), - float(row["oh_interval"]), - float(row["oh_cost"]), - float(row["oh_labor_time"]), - float(row["oh_labor_human"]), - float(row["predictive_interval"]), - float(row["predictive_material_cost"]), - float(row["predictive_labor_time"]), - float(row["predictive_labor_human"]), - float(row["loss_output_mw"]), - float(row["loss_price"]), + float(row["cm_cost"]) if not pd.isna(row.get("cm_cost", None)) else 0.0, + float(row["cm_labor_time"]) if not pd.isna(row.get("cm_labor_time", None)) else 0.0, + float(row["cm_labor_human"]) if not pd.isna(row.get("cm_labor_human", None)) else 0.0, + float(row["pm_cost"]) if not pd.isna(row.get("pm_cost", None)) else 0.0, + float(row["pm_labor_time"]) if not pd.isna(row.get("pm_labor_time", None)) else 0.0, + float(row["pm_labor_human"]) if not pd.isna(row.get("pm_labor_human", None)) else 0.0, + float(row["oh_interval"]) if not pd.isna(row.get("oh_interval", None)) else 0.0, + float(row["oh_cost"]) if not pd.isna(row.get("oh_cost", None)) else 0.0, + float(row["oh_labor_time"]) if not pd.isna(row.get("oh_labor_time", None)) else 0.0, + float(row["oh_labor_human"]) if not pd.isna(row.get("oh_labor_human", None)) else 0.0, + float(row["predictive_interval"]) if not pd.isna(row.get("predictive_interval", None)) else 0.0, + float(row["predictive_material_cost"]) if not pd.isna(row.get("predictive_material_cost", None)) else 0.0, + float(row["predictive_labor_time"]) if not pd.isna(row.get("predictive_labor_time", None)) else 0.0, + float(row["predictive_labor_human"]) if not pd.isna(row.get("predictive_labor_human", None)) else 0.0, + float(row["loss_output_mw"]) if not pd.isna(row.get("loss_output_mw", None)) else 0.0, + float(row["loss_price"]) if not pd.isna(row.get("loss_price", None)) else 0.0, ) ) @@ -522,4 +526,8 @@ async def main(RELIABILITY_APP_URL=RELIABILITY_APP_URL): return -asyncio.run(main()) +if __name__ == "__main__": + asyncio.run( + main() + ) + diff --git a/src/modules/equipment/__pycache__/Eac.cpython-311.pyc b/src/modules/equipment/__pycache__/Eac.cpython-311.pyc index ea1448427253eada1f1f8c3436035d6f7efa3641..a1bee379415141c35fbb4c02f68201ac3ed0d4e8 100644 GIT binary patch delta 71 zcmbQ|vB-mOIWI340}vd{<;jdy*~n+lq@}N)k)NBYpO~4Oub-5vo0FWJs9#)^te=~o ZQks)mte;v~npu#WnpdK~xtM9SA^`l`7gGQL delta 67 zcmZ4FG0%f(JP^zSmwj+Sg~*JNZ8S*tqT3sNJcz zPaGRMI%apc^u7dfKNqVbV&5g7zn_lxol5;2h$M$sV5P1xXW16xiJxTnuU#TqFm!n0 zZ81sf1IER{xtJv77p|1YA%;(^&}9PxG9B0wZXOo zFm#3#5U&^T#7-wdW%_222hXN*aCiE)q~|Ow-WIknu~Y3zgTG79)sdo#=k1AfBh{Ur zn@Oo2*7IC?!bW;ZMr4(h;Zzkhy?(|R#uH~#(rYE6C8)xMLaQH%&_iN4b)$#Gh&^ly z7Ycd!B0>-9aOy@6>WDpP!i7Q}VmC*2F0|p)jUKcSd*H%_LLMv;dPoYVZuF28v4`Yv zp^%4*5qd}or*8C+60wKWXA7l9ER^&V-1S4^E!x}w&33}egiD4{``6svqy>5$o&De?`! zpXmmh;lDDS;3eNg))atpg$xwHGc{`X%WNqGITrYPMI7lz!9N)jU~kT^VP@`5Sd^RK z>&;b2(+5KO!P@26qhmco4ws#uw2nTCG7Ow3Xp_f|4?doOUl!B=4h9t*yR3$7Iclgb z>;_tRs$UHYlH=jKg&Dcx(IKacuOiCJlK#eV*RF`BEAc4>=uHc&#v%%~Qd9 zg>PuUuI+E&XIG$|xr7%89wH{ul7BeYf{_3Pv+Fno00>w-xmcqmc>R z%M0C3-0eh@?!|65>UIakB6SlRFuZW-_?#3QO@4rl-??LKSv0ozPasS89ZT<`r5E)b zMZ8n6xUj_~7>{A&F~Km24U>o~LSC+DHIR}WWB?Hg$AH;_%}0>ccE>unXdOgDljyid zuufs?lwf`pn_mqwOmP!?MSaQnx%*T1%#`0M7+bNiRWP(+LmM)*k%UIJiKSK6T2Mr5 ztgfyGWny(%K$kUL|FLP`1=A-l%@~C2YMfmy=xVU8=A3A$ymDsZs%%DfDe+R`TwjR3 zZnKQK48fA2^c(7BR9p(*+@9gBsGQZ#B`#=hX#HuZvrDKujOz{y72UX^8*u|4NY3?5 z7h>IZfiqyvfJn0q1d2;P+cJ}NeaqD?bGiO(VaHy)W3N!$ii=wjXI`V^zCR*x`IyT` zq;;5=xa=jaC{Skn?BGoM^@CRr&Y4l`exdpR_EsMd$~tga2jY6xn0fCz1g;Qsg^0AS zowtZ}Yn!Fa>yuSH!)gnBEkw+fZLxUv^XOS zh6(NILfySWLmzJF6RK>u%7(ZxNPSw!JWS|ILYd z%7%YyMc(QE^M;45sIGoq>-8tz(%#gfwth4?D!e#`UmO$a9JtPbICtng8L_Th;3_az zfk<5D3N3Ej;ue~YrXslxz3UfZ*uIqSn2nkf zEkxaj^2<@jAz`Nl@3aWzUAVjpaduj3x&Z6+0=FG=+YxEK_F$n_t$83yQmP&@1cDSE zto6#7xWqeh-J)D~&VveT1bHo%*CKiCl3a5~p0)_@87_KHk-PE_YAl(|m+AE!`I;}U z6E#+`UsVD!_^PT-Ytl#-5?L}>Py^c6h-g2#uvy0XqiB*}CU4eC{F`WwUjt}g+a5y( zE1N-A4zrRO(Lb|`%i)kz5@qJ*s?Q}8Xc+x zDSxdneb-s5v{s#emk!TSpq2Qaz-tFb!DX1=`Ezg<-tIgp;a?_kpT)clr2mv={DQ)- zDD0&0I)z;n&cmM_@_--uGA-9d**+Til)?;!Sqj%E{D#663crPtp3^E9kYoj!Fm(9d z>(NK4CP~V&gzUo5(X|IPNnh@72B%@xK)z&=O#aokZ{TZIzAWqM8M6*KdV2EmVE%9x zc*oZ=oC%~fg`bBLBbhOOAzk|K#`#Cz2P4g3``#!}6l9)`57y!j!)I+!JyyI^EPw69 tq9_T8l9t4Zlcw+OUXsaQ6aPs1hV+4ml}H~l1cKiJ5hG3}1YS*w{|D2&nW_K) delta 1575 zcmbu9e@I(b6vyvvsqX!;|Xq-4fu-+S#U zM6}zS-R7$8Sy|Z}*njG_ZcurYIT&t({WDZB<55H?bg-3nV-P!q!Wit{#8N3840d_% zbI$pmbMJZFce!`h@WU0Xo7QSIh>XQ>W_ZqbS;t{!rX-Hl3<~1cNN{>uAnQ@-R<{@LbtECFK{*z6n()nXT$xy!Kmbui?)QgJQG>+P4fPEUX9Qw z8fDuNhD4`bo-<#bRtHwz^Z)@HUZ`xh8PpmKeK?=bfthJ>5&3Q z_A@E{M(P6ZU?da#oiYQ3$!I-g&J-o1KT;-KoQ!@=8NVYL-A$QSOB`G%_XbAjCV5i> zqX|5=98&|f8^Kcg0?vZfiXunUS%@V5NfAOtNH7m(Noh}&Kz=L>cK4g$#xW!CmTLI9 z)Pv2CUnXLMJYF`4p;NDgp&e?dbR7e4mIh?kZM+kr<@@B>a=jYv*Srj^ZZ9@~|DXY8 z+$V4jWYz9bt3r`JzXSud<}{&@^mAszhqdE6!AX3PZtE$#{S-9R9o5gU2t9uM06jp% zD8cl?^}06ZAPbcm3$&!`nEfpH^K+rBepFqo%~?goFkA0EqRBSibGdJY6qk3_uee&i z+orfWmhwu;v#vq*;;C0YwJ61Paa+A&tDoKdlg+zi^RBbV!cP@W^(uT#-0W7&?j^JP zUICv-SC<>f%!Cg1HrR(a%eC$)$7D~OD^< zd_{hA;w8p+iL5M)QA`l5u>RwtY-XrYSz7XrUOPc#+~NL{7)>1^MCW zZ`q<;IU*@pQITy3_osGZ4z7!B zco2RQOI3>`d0#e3cNoUG9sW93h$m#*>paGbu>U--`GutEeIfoJi|5;L<$*L@o2v6W?-PUM>b8IGD?m+0e9+?>CEPHM4!YGG++L2hbZiT-AN*05L>IW`7{$%SdMo0laWWS;C`z#^fekX)3SSdy9& zpHzupCzgO!rKcTY?F7`26Ivt+h3BQfTQGEUCR z&7M3VjdgNLb35?7`=&dDn~?@tylGhnQq>```~BZ!4F zoarM&&}9AczwB|$ymB8I;x-#s6f+u?G70KDkXHM^P|PH%v!WV8AFzhd7s9h3j1MeQ z8Zt9@KA15`%1_?YqBQweb8sLbHWtZLcF_nSq{%GoL=CABOjDOEQoIXN+=xF|U$H$SB` zC$%^xwXig^AU8FyBxbWQYgjDPF4oD02I7-9m~d=9o3Vvyb6hGf<76E}uFdyzxEUw! zOkX>BVum!+31n60nV|}1GfrmCkllPR?-v_m(BwU(u1sZ|lS{hpPkvNpz*sz4xcokc z9}8zV(?>fHj1^5S|5L yd|;8#keR{r!D#Y=s@*&gwh2QZV+`ZuGqn>p|ES(6tQf}1DEff`J6WU+3>p9