diff --git a/src/modules/__pycache__/config.cpython-311.pyc b/src/modules/__pycache__/config.cpython-311.pyc index 91764e1..23843b8 100644 Binary files a/src/modules/__pycache__/config.cpython-311.pyc and b/src/modules/__pycache__/config.cpython-311.pyc differ 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 ea14484..a1bee37 100644 Binary files a/src/modules/equipment/__pycache__/Eac.cpython-311.pyc and b/src/modules/equipment/__pycache__/Eac.cpython-311.pyc differ diff --git a/src/modules/equipment/__pycache__/Prediksi.cpython-311.pyc b/src/modules/equipment/__pycache__/Prediksi.cpython-311.pyc index 2d3140f..916f420 100644 Binary files a/src/modules/equipment/__pycache__/Prediksi.cpython-311.pyc and b/src/modules/equipment/__pycache__/Prediksi.cpython-311.pyc differ 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 651c30a..dbaed9a 100644 Binary files a/src/modules/equipment/__pycache__/insert_actual_data.cpython-311.pyc and b/src/modules/equipment/__pycache__/insert_actual_data.cpython-311.pyc differ diff --git a/src/modules/equipment/run.py b/src/modules/equipment/run.py index 244b631..5e1d7f7 100644 --- a/src/modules/equipment/run.py +++ b/src/modules/equipment/run.py @@ -4,12 +4,12 @@ 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 - from .Prediksi import Prediksi + from .Prediksi import Prediksi, main as predict_run from .Eac import Eac except ImportError: # fallback when there's no parent package (e.g., python run.py) from insert_actual_data import query_data, insert_lcca_maximo_corrective_data, insert_ms_equipment_data - from Prediksi import Prediksi + from Prediksi import Prediksi, main as predict_run from Eac import Eac @@ -17,15 +17,14 @@ except ImportError: 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: - prediksi = Prediksi() - await prediksi.main() + await predict_run() except Exception as e: print(f"Error in predict_equipment_data: {str(e)}") return