fix prediksi script

main
MrWaradana 2 months ago
parent 63461ad93b
commit 6712f0cd48

@ -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()
)

@ -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

Loading…
Cancel
Save