Cizz22 3 months ago
parent 648794d841
commit c499fcd7d4

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

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

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

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

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

Loading…
Cancel
Save