From fa4ea74d9bcc71a1be59bf3624c7f4719d9cadad Mon Sep 17 00:00:00 2001 From: MrWaradana Date: Mon, 22 Dec 2025 16:03:49 +0700 Subject: [PATCH] refactor: Standardize module imports to absolute paths and re-enable data querying in run script. --- src/modules/equipment/Eac.py | 3 +-- src/modules/equipment/Prediksi.py | 6 ++--- .../equipment/__pycache__/Eac.cpython-311.pyc | Bin 15560 -> 15261 bytes .../__pycache__/Prediksi.cpython-311.pyc | Bin 41332 -> 41028 bytes .../insert_actual_data.cpython-311.pyc | Bin 51935 -> 51652 bytes .../equipment/__pycache__/run.cpython-311.pyc | Bin 3111 -> 3029 bytes src/modules/equipment/insert_actual_data.py | 6 ++--- src/modules/equipment/run.py | 25 +++++++----------- 8 files changed, 14 insertions(+), 26 deletions(-) diff --git a/src/modules/equipment/Eac.py b/src/modules/equipment/Eac.py index c26b432..867a82c 100644 --- a/src/modules/equipment/Eac.py +++ b/src/modules/equipment/Eac.py @@ -5,8 +5,7 @@ import json import sys import os -sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))) -from config import get_connection +from src.modules.config import get_connection import argparse diff --git a/src/modules/equipment/Prediksi.py b/src/modules/equipment/Prediksi.py index 7330433..14161ec 100644 --- a/src/modules/equipment/Prediksi.py +++ b/src/modules/equipment/Prediksi.py @@ -15,10 +15,8 @@ from dotenv import load_dotenv import sys import os -from equipment.formula import rc_labor_cost, rc_lost_cost, rc_total_cost - -sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))) -from config import get_connection, get_production_connection +from .formula import rc_labor_cost, rc_lost_cost, rc_total_cost +from src.modules.config import get_connection, get_production_connection import json load_dotenv() diff --git a/src/modules/equipment/__pycache__/Eac.cpython-311.pyc b/src/modules/equipment/__pycache__/Eac.cpython-311.pyc index 12655c98059a27f145e57651208faa688ff95c1d..880816ff5640b88937036df29544b7f292e4c1e0 100644 GIT binary patch delta 494 zcmX?6Ik#M6IWI340}wQEcxFCuWMFs<;=lkql<~QVaiWGnMhZg;a}IkhM-&Gm1CY&> z!x_cN#Nf`5!qUQ!!n%x!fnhZeLqHT)ia-im3u6>_Do+Y~HdwrsHN0r%i2zlIrtqbTOulF!B9+1v%%IGWDyG6vq!1+zmf{DJ0;%GY_bDqHGewC< zi-XjpfLY~?gISCm*BF z<}jhT%#2Gne-RB~VHDi#DRq{MQDU;V>K#U@$zN38Fv?7RsP=*eOBl;)%s>rHmDn!?ouv>y~y t#T}C$SUC&mUSL2$n~SY&86^&y$vcTN91>@BvSB_XBkE+%e8?Qc1^~0FaP$BG delta 688 zcmbPRexg!iIWI340}z}jaLQD1Vqka-;=lkWl=0bvX`+S!Un*-BJ4|W;$K;8IB7CWA zNJ5;LLR^?a+#n&LRGwvw3=FG*7y?q5C(l!pnQWsdn9h*GlEa(J7sbcOkiw9{l*1pz z&&1%)kiy!+kixc%38)K*As|X1MKFcEg)vGnRValc8!TSb&cu+)pCt@alft=%3)QYD zkyMcdq9A9;q;RK-rSPobUB(PF7KkB$kpZYc9H>A^FG_-w0cf6JszjC~OnMC;nt4({ z71AmEsZx_27^Q_}R2YgBqGZ8h0zgtMRd#Y7qq3=Nv}_7fFwjR)Kvp?pIYR|=BttnP zNK8}cCCG41##>x2naL&2rA5X0MSfLGdU}%&F`j4S-#m%wCm*Bl<{rVh%#6!6Yl()i zFbZw1mpseGC^^|zd}cn;dRAg{vQ^7!+m2CnkTjbPix{;b`Y?;-A1Yg?&2zB>n|VOW2q5EaF)a zv?hFg{HpjJ5f^pcuIRd*V7aK^dqu(bqJZBO0l$k3{#O|MFEIGuU{Jh(iZ**#*)mET amXvq4VmNHY>LSm4*k05{ius5Xhz$Vd=A&f* diff --git a/src/modules/equipment/__pycache__/Prediksi.cpython-311.pyc b/src/modules/equipment/__pycache__/Prediksi.cpython-311.pyc index a45bf9bcc798508cc2f71dc6ecf5b7659d893a7a..2188689e651d02f196c70fdabbff4a63dea614eb 100644 GIT binary patch delta 2089 zcmah~eQZ-z6z_TM+O_-M=(cX%x^ApnH#Zmz7)u!jHdq(34YEj5rsUc8HVbQuw_OG} zHzdF$#K>|InIb|AABlz_c?rR&$XC!9MT}qMA8pp8Ga83B;GzU(UVf zoO^!noO4g_T$C=Km#R->WH?Ox*^wHI1W%hx-_v6Hu}lfKx4?Myv0A(07$}aqL+)rv zs3ck%Dg~2bQql%I(Xvok)En}OH4K!8%JCf3byY|v)wF5u^l3__l671%nO^5V;|W!& zl?o`(XI8RzLCB|8DLI>kmKAYd*i=1j$yYus+v>(gq_LErfN$eXsb0%6Pl7d%ub30> zSp1NOr74d>kv5z%X@*SfwXcIBJY}ziYP@0hLNVU8`@pBob;uU0huq4veVNS?S6stkT^S!vwqGhGPBP%<5sdW07LkSGi)j08vG_LUn|Z} zk-&rA!q*Iboy^Zwx-}e+Mk7fk7}_4lP)}FX0X3;^d~#4_+YD~DnV>x6Vplut&_-P! z*ukT9ROph#9O(1?Y(%RO(O3wwjjaM3ON&OE*ViNfyBMRTXt>`P$%= zX>e+x4N9G!l8kRwW3w}eC#r(bfVZj&cronNt#DZDtd85$jVf^;d8LHonfcme!?zOD z;)TY1Zg{;h0R5VC5ig-ASo&1KC{PV0RuS>?k{39S z4NX34F}arF8%?EntjP~8+Q&_Qr_Ul3HVFOJcF61$9YDnp=@GG5ExsCD%1M3|To329 z#*T9mIJDbqE`T+Y46~@iDrXUHrroCq!UQq_k>&^e)mi7wAdzzFpL_2|82q(hS0ixl zBi##l)YBY~Xg_q%vrlz8xgTi>PD68F6BX*g?_Uvw^Dv`~JNd1)S(^`)@kP0rm5FN4_ zoUkR9jEf-elHYj(k!vSOE`o~$!vr&g1=mY_&u=v{e}(k#5ePPpm^!pk4u{o5!bp>q ztBecJFO@gm1V^<{d|d`F|H@LSe3mJiFYZ!E?K z)#qbfX*2E6f%Bd{l}Sy(1dUQI;dr-)$4K8BfJ<6%?}Qar;CIh21~S#6aM*>On(LwQ8MU^J~E&yq^E9~>LF1^V?0&kt%=rbky%Srj>K34 z_jyNadogZt`B^@>+2q8wSU3{bty|=nA}9F#`{Y{;_fSHPZv%>!$W=_j~c|k+b5T=O4g`?6d#? delta 2285 zcmah~Yitx%6rMY~-ACJ{+jc42cKZUlk3P1Q@F-9kh;19#&C`BXk2oFIMVkSW#DhLS19|U59I)s4w3t}_|qQ;1L&rF+E(0H@^?Y-xo zbI*70dF-Y0{DTX;|Cqy(&arXv(IR>9Lyr3a7bC+yJh?xe-{n72#)5!$O9kejw>LX z$cY)T^0+tTjr&4AeNAHikbl?j)z$#dF{c$!MGC7crAm>ABx(|!{UlT+Rg2jhcs!35 zFfGy^96p?5t177Rcwi^l1|B|W?%{($buoXNSaML^1vTaX$${187l=pw$b8#G9585G zLGt0At&;d4&t66fpw8|kel=_t%$8y_D^V{yX7Ox;IOmdfnD3lIJkaH=w>WTj5-jz) zEjFC`;cI8bv4>$m1L(*~(qQ)ls`{M{>!05TmKK#1V^W>Jo$G;@10p=fEbgdiq$@|r0wyhuf+5pX~Lsy%2t zCf4w1`W{jXduDi9bU&G~lsv7b*FDM{VVbqzjA^`{6@E0-UE{&D0&Xpu$xJ3Rtt1!J zMAN4{X;XtsKO-4>(&393nU^t2d?pk%yGaF1Z>}!OL_M-Dfgi{D3$t|sE zAWPN5Yuc#S9f#{?am|Uj9fT#BV0gu8DW&P&i5jd1uVv!U&j3_2s)c|Md}I* zk%*K`8dYXtTVwOtMWrYszaEt!rufNG^-X1kgGIif?{$)OJgu2N%S`S*VuQ9p|EA?+ z3EbE;F}Hz9lb8s`X?mJxY+g%lfU@~**6QrNH%ZPswoh*{2w3TDoG*c2w|H}OTP#$= z7Aqw9N;|m&Z@qGunKtwd5tbmi{UP!*DE;g-un(Lf<#2wWl+1B zL&d&}z1h;nPPrq_Qacz;(0FG|py}u^0|Dz?Gj|B7^+wyZ3Tu9V2HW!Ig}L(b;wT+0yGa*b>GhO58!Zy(sc|FjuH{WtENEz1A^ diff --git a/src/modules/equipment/__pycache__/insert_actual_data.cpython-311.pyc b/src/modules/equipment/__pycache__/insert_actual_data.cpython-311.pyc index 77f83169f0ac741bfcd6ab4491fda88c1c708c23..0c990aba1d5407c1f652593c04c6b94c31499878 100644 GIT binary patch delta 1808 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 diff --git a/src/modules/equipment/insert_actual_data.py b/src/modules/equipment/insert_actual_data.py index 226dd8a..66cecac 100644 --- a/src/modules/equipment/insert_actual_data.py +++ b/src/modules/equipment/insert_actual_data.py @@ -8,10 +8,8 @@ from datetime import datetime import sys import os import httpx -from where_query_sql import get_where_query_sql -sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))) -from config import get_connection, get_production_connection - +from src.modules.config import get_connection, get_production_connection +from .where_query_sql import get_where_query_sql async def fetch_api_data( assetnum: str, year: int, RELIABILITY_APP_URL: str, token: str diff --git a/src/modules/equipment/run.py b/src/modules/equipment/run.py index aa1a9c1..400a047 100644 --- a/src/modules/equipment/run.py +++ b/src/modules/equipment/run.py @@ -1,27 +1,20 @@ import asyncio import time -# prefer package-relative imports, but allow running this file directly as a script -try: - from .insert_actual_data import query_data, insert_lcca_maximo_corrective_data, insert_ms_equipment_data, insert_acquisition_cost_data - from .Prediksi import Prediksi, main as predict_run - from .Eac import Eac, main as eac_run -except ImportError: - # fallback when there's no parent package (e.g., python run.py) - from insert_actual_data import query_data - from Prediksi import main as predict_run - from Eac import main as eac_run - +# clean absolute imports +from src.modules.equipment.insert_actual_data import query_data +from src.modules.equipment.Prediksi import Prediksi, main as predict_run +from src.modules.equipment.Eac import Eac, main as eac_run # Panggil fungsi async def main(): start_time = time.time() - # try: - # await query_data() - # except Exception as e: - # print(f"Error in query_data: {str(e)}") - # return + try: + await query_data() + except Exception as e: + print(f"Error in query_data: {str(e)}") + return try: prediction_result = await predict_run(assetnum="A22277")