diff --git a/src/calculation_time_constrains/flows.py b/src/calculation_time_constrains/flows.py index a39b239..96b4b1a 100644 --- a/src/calculation_time_constrains/flows.py +++ b/src/calculation_time_constrains/flows.py @@ -94,7 +94,7 @@ async def create_calculation( created_by=created_by, ) - rbd_simulation_id = simulation_id or "eb8a1214-3d8f-48a9-8fa3-877a69a1fe98" + rbd_simulation_id = simulation_id or "8847f0a2-ea15-462a-8286-12293fca41f7" # results = await create_calculation_result_service( # db_session=db_session, calculation=calculation_data, token=token diff --git a/src/calculation_time_constrains/full_equipment_with_downtime_opdesc.json b/src/calculation_time_constrains/full_equipment_with_downtime_opdesc.json index 98586ec..4c2e841 100644 --- a/src/calculation_time_constrains/full_equipment_with_downtime_opdesc.json +++ b/src/calculation_time_constrains/full_equipment_with_downtime_opdesc.json @@ -109778,7 +109778,7 @@ "Description": "WALL DESLAGGER A-2", "Location": "3AI-Y502A", "Estimasi Waktu Maint. / Downtime / Gangguan (Jam)": 2880.0, - "Diskripsi Operasional Akibat Equip. Failure": "No Effect" + "Diskripsi Operasional Akibat Equip. Failure": "Trip" }, { "Asset No.": "A22949", diff --git a/src/calculation_time_constrains/service.py b/src/calculation_time_constrains/service.py index 93d35fc..6a6d45c 100644 --- a/src/calculation_time_constrains/service.py +++ b/src/calculation_time_constrains/service.py @@ -191,10 +191,10 @@ class OptimumCostModelWithSpareparts: if ecs: is_trip = 1 if ecs.get("Diskripsi Operasional Akibat Equip. Failure") == "Trip" else 0 + is_series = 0 if not birnbaum_importance else math.floor(birnbaum_importance) if is_trip: downtime = ecs.get("Estimasi Waktu Maint. / Downtime / Gangguan (Jam)") - monthly_risk_cost_per_failure = 660 * 1000000 * is_trip * downtime - print("ECS Trip", location_tag, monthly_risk_cost_per_failure) + monthly_risk_cost_per_failure = 660 * 1000000 * is_trip * downtime * is_series for month_key in months: data = failures_prediction[month_key] @@ -206,6 +206,7 @@ class OptimumCostModelWithSpareparts: for i in range(num_months): month_index = i + 1 + # Basic failure and preventive costs failure_cost = (failure_counts[i] * (failure_replacement_cost + monthly_risk_cost_per_failure)) preventive_cost_month = preventive_cost / month_index @@ -345,7 +346,7 @@ class OptimumCostModelWithSpareparts: try: importance_results = await self.get_simulation_results(simulation_id) equipment_birnbaum = { - imp['aeros_node']['node_name']: imp['contribution'] + imp['aeros_node']['node_name']: imp['contribution_factor'] for imp in importance_results["calc_result"] } except Exception as e: @@ -373,12 +374,12 @@ class OptimumCostModelWithSpareparts: for equipment in equipments: location_tag = equipment.location_tag - birnbaum = equipment_birnbaum.get(location_tag, 0.0) + contribution_factor = equipment_birnbaum.get(location_tag, 0.0) ecs = ecs_tags.get(location_tag, None) # try: # # Get failure predictions - monthly_data = await self.get_failures_prediction(simulation_id, location_tag, birnbaum) + monthly_data = await self.get_failures_prediction(simulation_id, location_tag, contribution_factor) if not monthly_data: continue @@ -389,7 +390,7 @@ class OptimumCostModelWithSpareparts: cost_results = self._calculate_equipment_costs_with_spareparts( failures_prediction=monthly_data, - birnbaum_importance=birnbaum, + birnbaum_importance=contribution_factor, preventive_cost=equipment_preventive_cost, failure_replacement_cost=failure_replacement_cost, location_tag=location_tag, diff --git a/src/config.py b/src/config.py index dc83dfe..a4a8f57 100644 --- a/src/config.py +++ b/src/config.py @@ -84,4 +84,12 @@ MAXIMO_API_KEY = config("MAXIMO_API_KEY", default="keys") AUTH_SERVICE_API = config("AUTH_SERVICE_API", default="http://192.168.1.82:8000/auth") REALIBILITY_SERVICE_API = config("REALIBILITY_SERVICE_API", default="http://192.168.1.82:8000/reliability") RBD_SERVICE_API = config("RBD_SERVICE_API", default="http://192.168.1.82:8000/rbd") -TEMPORAL_URL = config("TEMPORAL_URL", default="http://192.168.1.8:7233") \ No newline at end of file +TEMPORAL_URL = config("TEMPORAL_URL", default="http://192.168.1.8:7233") + + + + +TR_RBD_ID = "" ## 5 Tahun Simulaasi +TC_RBD_ID = "" ## 2 tahun dengan OH + +DASHBOARD_OH = "" ## Last OH to until before OH \ No newline at end of file diff --git a/src/overhaul/service.py b/src/overhaul/service.py index f884170..fddf17e 100644 --- a/src/overhaul/service.py +++ b/src/overhaul/service.py @@ -89,22 +89,22 @@ async def get_overhaul_critical_parts(db_session, session_id, token): # Filter out items without matrix data (where rbd_simulation.get() returned None) filtered_result = [item for item in base_result if item["matrix"] is not None] - # # Sort by availability (lowest to highest) and limit to 10 - # availability_result = sorted( - # filtered_result, - # key=lambda x: x["matrix"]["availability"] - # )[:10] - - # # Sort by criticality (highest to lowest) and limit to 10 - # criticality_result = sorted( - # filtered_result, - # key=lambda x: x["matrix"]["criticality"], - # reverse=True - # )[:10] + # Sort by availability (lowest to highest) and limit to 10 + availability_result = sorted( + filtered_result, + key=lambda x: x["matrix"]["availability"] + )[:10] + + # Sort by criticality (highest to lowest) and limit to 10 + criticality_result = sorted( + filtered_result, + key=lambda x: x["matrix"]["criticality"], + reverse=True + )[:10] return { - "availability" : filtered_result[:10], - "criticality": filtered_result[:10] + "availability" :availability_result, + "criticality": criticality_result }