From d4b72efbf81fd7a0e996fb213981ad7a70b9777b Mon Sep 17 00:00:00 2001 From: Cizz22 Date: Mon, 22 Sep 2025 12:27:42 +0700 Subject: [PATCH] fix --- src/aeros_equipment/service.py | 6 ++++-- src/aeros_simulation/schema.py | 2 +- src/aeros_simulation/service.py | 19 ++++++++++++------ .../simulation_save_service.py | 3 ++- src/aeros_simulation/utils.py | 4 ++-- src/dashboard_model/service.py | 20 ++++++++++++++----- 6 files changed, 37 insertions(+), 17 deletions(-) diff --git a/src/aeros_equipment/service.py b/src/aeros_equipment/service.py index cccf323..99f4386 100644 --- a/src/aeros_equipment/service.py +++ b/src/aeros_equipment/service.py @@ -264,8 +264,10 @@ def get_asset_batch(location_tags: List[str], nr_location_tags: List[str], mtbf = item["mtbf"] mttr = item["mttr"] distribution, reldisp1, reldisp2 = get_distribution(item) - - results[location_tag]["cmDisP1"] = 1 if mttr > 0 else 0 + + results[location_tag]["cmDisType"] = "Normal" + results[location_tag]["cmDisP1"] = 3 + results[location_tag]["cmDisP2"] = 3 results[location_tag]["relDisType"] = distribution results[location_tag]["relDisP1"] = reldisp1 results[location_tag]["relDisP2"] = reldisp2 diff --git a/src/aeros_simulation/schema.py b/src/aeros_simulation/schema.py index 86e2b82..9d80c1a 100644 --- a/src/aeros_simulation/schema.py +++ b/src/aeros_simulation/schema.py @@ -99,7 +99,7 @@ class SimulationData(BaseModel): created_at: datetime class SimulationRankingParameters(EquipmentWithCustomParameters): - eaf:float + availability:float class SimulationPagination(Pagination): diff --git a/src/aeros_simulation/service.py b/src/aeros_simulation/service.py index 61b881b..441fa5c 100644 --- a/src/aeros_simulation/service.py +++ b/src/aeros_simulation/service.py @@ -213,17 +213,17 @@ async def get_plant_calc_result( async def get_result_ranking(*, db_session: DbSession, simulation_id: UUID): - query = select(AerosEquipment, AerosSimulationCalcResult.eaf).join(AerosNode, AerosNode.node_name == AerosEquipment.node_name).join(AerosSimulationCalcResult, AerosSimulationCalcResult.aeros_node_id == AerosNode.id) + query = select(AerosEquipment, AerosSimulationCalcResult.availability).join(AerosNode, AerosNode.node_name == AerosEquipment.node_name).join(AerosSimulationCalcResult, AerosSimulationCalcResult.aeros_node_id == AerosNode.id) query = query.filter( and_( AerosSimulationCalcResult.aeros_simulation_id == simulation_id, AerosNode.node_type == "RegularNode", - AerosEquipment.custom_parameters.any() + # AerosEquipment.custom_parameters.any() ) ) - query = query.order_by(AerosSimulationCalcResult.eaf.desc()) + query = query.order_by(AerosSimulationCalcResult.availability.desc()).limit(10) query = query.options( @@ -238,9 +238,9 @@ async def get_result_ranking(*, db_session: DbSession, simulation_id: UUID): location_tag=equipment.location_tag, master_equipment=equipment.master_equipment, custom_parameters=equipment.custom_parameters, - eaf=eaf + availability=availability ) - for equipment, eaf in result + for equipment, availability in result ] return data @@ -919,7 +919,7 @@ async def save_recusive_simulation_result_node(*, db_session: DbSession, data, s node_type="SchematicNode", aeros_schematic_id=aeros_schematic_id, structure_name=structure_dict.get(result["nodeName"]), - model_image= model_image.get(result["nodeName"], "") + model_image= model_image.get(result["nodeName"], None) ) results.append(schematic) @@ -985,6 +985,13 @@ def convert_id_to_none_if_negative(value): async def create_simulation(*, db_session: DbSession, simulation_in: SimulationInput): """Create a new simulation.""" input = simulation_in.model_dump(exclude={"SimulationName"}) + + # Check if is default + if simulation_in.IsDefault: + prev_simulation = await get_default_simulation(db_session=db_session) + prev_simulation.is_default = False + await db_session.commit() + active_simulations = { "status": "running", "started_at": datetime.now(), diff --git a/src/aeros_simulation/simulation_save_service.py b/src/aeros_simulation/simulation_save_service.py index 9e0c9c7..2b09306 100644 --- a/src/aeros_simulation/simulation_save_service.py +++ b/src/aeros_simulation/simulation_save_service.py @@ -270,7 +270,8 @@ async def calculate_plant_eaf( if is_default: eaf_konkin = calculate_eaf_konkin( - plot_data=plant_plot_data.timestamp_outs + plot_data=plant_plot_data.timestamp_outs, + periode_time=plant_calc_data.total_uptime + plant_calc_data.total_downtime ) plant_calc_data.eaf_konkin = eaf_konkin diff --git a/src/aeros_simulation/utils.py b/src/aeros_simulation/utils.py index f07357b..db1e47d 100644 --- a/src/aeros_simulation/utils.py +++ b/src/aeros_simulation/utils.py @@ -44,9 +44,9 @@ def calculate_eaf( raise def calculate_eaf_konkin( - plot_data + plot_data, periode_time ): - maxHours = 17520 + maxHours = periode_time hourly_data = create_time_series_data(plot_data, max_hours=maxHours) filtered_data = filter_by_month(hourly_data, start_month=3, end_month=15) diff --git a/src/dashboard_model/service.py b/src/dashboard_model/service.py index bec64d4..ec574dd 100644 --- a/src/dashboard_model/service.py +++ b/src/dashboard_model/service.py @@ -8,6 +8,7 @@ from sqlalchemy.orm import selectinload from src.aeros_simulation.model import AerosSimulation from src.aeros_simulation.service import ( get_calc_result_by, + get_default_simulation, get_simulation_by_id, get_simulation_node_by, ) @@ -18,9 +19,7 @@ from tkinter.constants import E async def get_model_data(*, db_session: DbSession, simulation_id: Optional[UUID]): - simulation = await get_simulation_by_id( - db_session=db_session, simulation_id=simulation_id, is_completed=True - ) + simulation = await get_default_simulation(db_session=db_session) if not simulation: raise HTTPException( @@ -44,8 +43,11 @@ async def get_model_data(*, db_session: DbSession, simulation_id: Optional[UUID] #Prediction EAF = main_calc_data.eaf + Derating = main_calc_data.derating_hours + Trip = main_calc_data.num_events EAF_KONKIN = main_calc_data.eaf_konkin + #Realization EAF_REAL = 97 EAF_KONKIN_REAL = 96 @@ -76,11 +78,19 @@ async def get_model_data(*, db_session: DbSession, simulation_id: Optional[UUID] "id": str(simulation.id), "availability": availability, "EFOR": EFOR, - "EAF": { + "EAF": { "Prediction_EAF": EAF, "Prediction_EAF_KONKIN": EAF_KONKIN, "Real_EAF": EAF_REAL, "Real_EAF_KONKIN": EAF_KONKIN_REAL - }, + }, + "Trip": { + "Prediction_Trip": Trip, + "Real Trip": Trip + }, + "Derating": { + "Prediction_Derating": Derating, + "Real_Derating": Derating + }, "powerplant_reliability": powerplant_reliability }