Cizz22 3 months ago
parent 648794d841
commit c499fcd7d4

@ -94,7 +94,7 @@ async def create_calculation(
created_by=created_by, 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( # results = await create_calculation_result_service(
# db_session=db_session, calculation=calculation_data, token=token # db_session=db_session, calculation=calculation_data, token=token

@ -109778,7 +109778,7 @@
"Description": "WALL DESLAGGER A-2", "Description": "WALL DESLAGGER A-2",
"Location": "3AI-Y502A", "Location": "3AI-Y502A",
"Estimasi Waktu Maint. / Downtime / Gangguan (Jam)": 2880.0, "Estimasi Waktu Maint. / Downtime / Gangguan (Jam)": 2880.0,
"Diskripsi Operasional Akibat Equip. Failure": "No Effect" "Diskripsi Operasional Akibat Equip. Failure": "Trip"
}, },
{ {
"Asset No.": "A22949", "Asset No.": "A22949",

@ -191,10 +191,10 @@ class OptimumCostModelWithSpareparts:
if ecs: if ecs:
is_trip = 1 if ecs.get("Diskripsi Operasional Akibat Equip. Failure") == "Trip" else 0 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: if is_trip:
downtime = ecs.get("Estimasi Waktu Maint. / Downtime / Gangguan (Jam)") downtime = ecs.get("Estimasi Waktu Maint. / Downtime / Gangguan (Jam)")
monthly_risk_cost_per_failure = 660 * 1000000 * is_trip * downtime monthly_risk_cost_per_failure = 660 * 1000000 * is_trip * downtime * is_series
print("ECS Trip", location_tag, monthly_risk_cost_per_failure)
for month_key in months: for month_key in months:
data = failures_prediction[month_key] data = failures_prediction[month_key]
@ -206,6 +206,7 @@ class OptimumCostModelWithSpareparts:
for i in range(num_months): for i in range(num_months):
month_index = i + 1 month_index = i + 1
# Basic failure and preventive costs # Basic failure and preventive costs
failure_cost = (failure_counts[i] * (failure_replacement_cost + monthly_risk_cost_per_failure)) failure_cost = (failure_counts[i] * (failure_replacement_cost + monthly_risk_cost_per_failure))
preventive_cost_month = preventive_cost / month_index preventive_cost_month = preventive_cost / month_index
@ -345,7 +346,7 @@ class OptimumCostModelWithSpareparts:
try: try:
importance_results = await self.get_simulation_results(simulation_id) importance_results = await self.get_simulation_results(simulation_id)
equipment_birnbaum = { equipment_birnbaum = {
imp['aeros_node']['node_name']: imp['contribution'] imp['aeros_node']['node_name']: imp['contribution_factor']
for imp in importance_results["calc_result"] for imp in importance_results["calc_result"]
} }
except Exception as e: except Exception as e:
@ -373,12 +374,12 @@ class OptimumCostModelWithSpareparts:
for equipment in equipments: for equipment in equipments:
location_tag = equipment.location_tag 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) ecs = ecs_tags.get(location_tag, None)
# try: # try:
# # Get failure predictions # # 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: if not monthly_data:
continue continue
@ -389,7 +390,7 @@ class OptimumCostModelWithSpareparts:
cost_results = self._calculate_equipment_costs_with_spareparts( cost_results = self._calculate_equipment_costs_with_spareparts(
failures_prediction=monthly_data, failures_prediction=monthly_data,
birnbaum_importance=birnbaum, birnbaum_importance=contribution_factor,
preventive_cost=equipment_preventive_cost, preventive_cost=equipment_preventive_cost,
failure_replacement_cost=failure_replacement_cost, failure_replacement_cost=failure_replacement_cost,
location_tag=location_tag, location_tag=location_tag,

@ -85,3 +85,11 @@ AUTH_SERVICE_API = config("AUTH_SERVICE_API", default="http://192.168.1.82:8000/
REALIBILITY_SERVICE_API = config("REALIBILITY_SERVICE_API", default="http://192.168.1.82:8000/reliability") 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") 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) # 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] filtered_result = [item for item in base_result if item["matrix"] is not None]
# # Sort by availability (lowest to highest) and limit to 10 # Sort by availability (lowest to highest) and limit to 10
# availability_result = sorted( availability_result = sorted(
# filtered_result, filtered_result,
# key=lambda x: x["matrix"]["availability"] key=lambda x: x["matrix"]["availability"]
# )[:10] )[:10]
# # Sort by criticality (highest to lowest) and limit to 10 # Sort by criticality (highest to lowest) and limit to 10
# criticality_result = sorted( criticality_result = sorted(
# filtered_result, filtered_result,
# key=lambda x: x["matrix"]["criticality"], key=lambda x: x["matrix"]["criticality"],
# reverse=True reverse=True
# )[:10] )[:10]
return { return {
"availability" : filtered_result[:10], "availability" :availability_result,
"criticality": filtered_result[:10] "criticality": criticality_result
} }

Loading…
Cancel
Save