From 5a2b47d558a3278068a89062c2a1f0078abf1de6 Mon Sep 17 00:00:00 2001 From: MrWaradana Date: Mon, 17 Feb 2025 10:59:37 +0700 Subject: [PATCH] refactor: actual data input for equipment tr data --- .../insert_actual_data.cpython-311.pyc | Bin 10670 -> 13147 bytes .../equipment/__pycache__/run.cpython-311.pyc | Bin 1812 -> 1854 bytes src/modules/equipment/insert_actual_data.py | 53 ++++++++++++++++-- src/modules/equipment/run.py | 2 +- .../__pycache__/model.cpython-311.pyc | Bin 2644 -> 2644 bytes 5 files changed, 49 insertions(+), 6 deletions(-) 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 36db4cebb4a93a455d7921a747c9f63afea7969c..5800575d199af5b50b35393180690123de6980ac 100644 GIT binary patch delta 5230 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 diff --git a/src/modules/equipment/__pycache__/run.cpython-311.pyc b/src/modules/equipment/__pycache__/run.cpython-311.pyc index 71763792907ecdc8b41ad16c11668f7b93e3f325..a76e8e697a889ba1eb542163420be60f5bbcc616 100644 GIT binary patch delta 85 zcmbQjw~vo^IWI340}$kG-jqIhBJWeipoyQYnQNG8CRZ}bZMJ7LWMaHExsX{@iA&^y XsKyG_i(Cd*xC}0^U_qPvnA?~EarYYv delta 66 zcmdnTH-(RPIWI340}xm)gWOo*zCh-!o+xBawD@S2Mb@L OPm523&*mM>ZOi}`z7UT9 diff --git a/src/modules/equipment/insert_actual_data.py b/src/modules/equipment/insert_actual_data.py index dc1c170..081bd9b 100644 --- a/src/modules/equipment/insert_actual_data.py +++ b/src/modules/equipment/insert_actual_data.py @@ -4,11 +4,34 @@ from uuid import uuid4 from datetime import datetime import sys import os +import httpx sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))) from config import get_connection +async def fetch_api_data( + assetnum: str, year: int, RELIABILITY_APP_URL: str, token: str +) -> dict: + url = RELIABILITY_APP_URL + # print(f"Using URL: {url}") # Add this for debugging + async with httpx.AsyncClient() as client: + # print( + # f"{url}/main/number-of-failures/{assetnum}/{int(year)}/{int(year)}" + # ) + try: + response = await client.get( + f"{url}/main/number-of-failures/{assetnum}/{int(year)}/{int(year)}", + timeout=30.0, + headers={"Authorization": f"Bearer {token}"}, + ) + response.raise_for_status() + return response.json() + except httpx.HTTPError as e: + print(f"HTTP error occurred: {e}") + return {} + + def get_recursive_query(cursor, equipment_id, worktype="CM"): """ Fungsi untuk menjalankan query rekursif berdasarkan equipment_id dan worktype. @@ -65,7 +88,7 @@ def get_data_tahun(cursor): return cursor.fetchall() -def query_data(): +async def query_data(RELIABILITY_APP_URL: str, token: str): connection = None try: # Mendapatkan koneksi dari config.py @@ -154,6 +177,9 @@ def query_data(): , %s, %s ) """ + api_data = await fetch_api_data( + equipment_id, year, RELIABILITY_APP_URL, token + ) cursor.execute( insert_query, ( @@ -162,7 +188,11 @@ def query_data(): year, # tahun seq, # seq 1, # is_actual - 1, # raw_cm_interval (minimal 1 karena minimal 1x OH) + ( + api_data["data"][0]["actual_fail"] + if api_data + else 1 + ), # raw_cm_interval (minimal 1 karena minimal 1x OH) 0, # raw_cm_material_cost 0, # raw_cm_labor_time 0, # raw_cm_labor_human @@ -203,6 +233,13 @@ def query_data(): , %s, %s ) """ + api_data = await fetch_api_data( + equipment_id, year, RELIABILITY_APP_URL, token + ) + if api_data and "data" in api_data and api_data["data"]: + print("API data:", api_data["data"][0]["actual_fail"]) + else: + print(f"No API data available for {equipment_id} in year {year}") cursor.execute( insert_query, ( @@ -212,9 +249,14 @@ def query_data(): seq, # seq 1, # is_actual ( - recursive_row["raw_corrective_failure_interval"] + 1 - if recursive_row - else 1 + api_data["data"][0]["actual_fail"] + if api_data + else ( + recursive_row["raw_corrective_failure_interval"] + + 1 + if recursive_row + else 1 + ) ), # raw_cm_interval nanti ambil dari API reliability predict ( recursive_row["raw_corrective_material_cost"] @@ -323,6 +365,7 @@ def query_data(): finally: # Menutup koneksi + print("========Process finished and connection closed.========") if connection or connection_wo_db: cursor.close() cursor_wo.close() diff --git a/src/modules/equipment/run.py b/src/modules/equipment/run.py index cd361c0..5f255a4 100644 --- a/src/modules/equipment/run.py +++ b/src/modules/equipment/run.py @@ -9,7 +9,7 @@ import time async def main(assetnum, token, RELIABILITY_APP_URL): start_time = time.time() - query_data() + await query_data(RELIABILITY_APP_URL, token) prediksi = Prediksi(RELIABILITY_APP_URL) await prediksi.predict_equipment_data( assetnum, diff --git a/src/plant_masterdata/__pycache__/model.cpython-311.pyc b/src/plant_masterdata/__pycache__/model.cpython-311.pyc index 4ef43f0cbbc4faf94e32c3b1535c99ee718997c0..fd996d2806f1d1c52032cdaebd52769008ffc4ba 100644 GIT binary patch delta 20 acmca2az%uDIWI340}#Afx@jY~Cl>%e`33m^ delta 20 acmca2az%uDIWI340}wo@Z{Nu6$prvC>IIwt