From def04120d56edc2445069572dab1057ee27f067f Mon Sep 17 00:00:00 2001 From: Cizz22 Date: Wed, 1 Oct 2025 14:48:33 +0700 Subject: [PATCH] add to simulation rbd --- src/aeros_equipment/service.py | 4 +++- src/aeros_simulation/model.py | 14 +++++++++++++- src/aeros_simulation/router.py | 3 +++ src/aeros_simulation/schema.py | 5 +++++ src/aeros_simulation/service.py | 4 +++- 5 files changed, 27 insertions(+), 3 deletions(-) diff --git a/src/aeros_equipment/service.py b/src/aeros_equipment/service.py index 99f4386..afbd4e8 100644 --- a/src/aeros_equipment/service.py +++ b/src/aeros_equipment/service.py @@ -315,7 +315,7 @@ def get_distribution(item): return name, 0, 0 -async def update_equipment_for_simulation(*, db_session: DbSession, project_name: str, schematic_name: str, custom_input: Optional[dict] = None): +async def update_equipment_for_simulation(*, db_session: DbSession, project_name: str,overhaul_duration, overhaul_interval, offset ,schematic_name: str, custom_input: Optional[dict] = None): log.info("Updating equipment for simulation") aeros_schematic = await get_aeros_schematic_by_name(db_session=db_session, schematic_name=schematic_name) @@ -372,6 +372,7 @@ async def update_equipment_for_simulation(*, db_session: DbSession, project_name eq["relDisType"] = "Fixed" eq["relDisP1"] = float(custom_param["failure_rate"]) eq["relDisP2"] = 0 + eq["ohDisP1"] = overhaul_duration reqNodeInputs.append(eq) results[eq["equipmentName"]] = { @@ -387,6 +388,7 @@ async def update_equipment_for_simulation(*, db_session: DbSession, project_name eq["relDisType"] = reliabiility.get("relDisType", "Fixed") eq["relDisP1"] = reliabiility.get("relDisP1", 0) eq["relDisP2"] = reliabiility.get("relDisP2", 0) + eq["ohDisP1"] = overhaul_duration reqNodeInputs.append(eq) results[eq["equipmentName"]] = { diff --git a/src/aeros_simulation/model.py b/src/aeros_simulation/model.py index 29c2e42..8fce61d 100644 --- a/src/aeros_simulation/model.py +++ b/src/aeros_simulation/model.py @@ -17,6 +17,7 @@ class AerosSimulation(Base, DefaultMixin): schematic_name = Column(String, nullable=False) reliability = Column(JSON, nullable=True) duration = Column(Integer, nullable=True) + offset = Column(Integer, nullable=True) is_default = Column(Boolean, default=False) calc_results = relationship( @@ -174,4 +175,15 @@ class EafContribution(Base, DefaultMixin): location_tag = Column(String, nullable=False) eaf_contribution = Column(Float, nullable=False) efficiency_uptime = Column(Float, nullable=False) - edh = Column(Float, nullable=False) \ No newline at end of file + edh = Column(Float, nullable=False) + + + +# models.py +class AerosSimulationProgress(Base): + __tablename__ = "simulation_progress" + simulation_id = Column(Integer, primary_key=True) + status = Column(String, default="pending") # pending, running, failed, completed + step = Column(String, nullable=True) + progress = Column(Integer, default=0) # 0-100 + error_message = Column(String, nullable=True) diff --git a/src/aeros_simulation/router.py b/src/aeros_simulation/router.py index fd016fa..0edfede 100644 --- a/src/aeros_simulation/router.py +++ b/src/aeros_simulation/router.py @@ -96,6 +96,9 @@ async def run_simulations( db_session=db_session, project_name=project.project_name, schematic_name=simulation_in.SchematicName, + overhaul_duration=simulation_in.OverhaulDuration, + overhaul_interval=simulation_in.OverhaulInterval, + offset=simulation_in.OffSet, custom_input=simulation_in.CustomInput, ) diff --git a/src/aeros_simulation/schema.py b/src/aeros_simulation/schema.py index a3b99ed..a932989 100644 --- a/src/aeros_simulation/schema.py +++ b/src/aeros_simulation/schema.py @@ -18,6 +18,11 @@ class SimulationInput(BaseModel): CustomInput: dict = {} IsDefault:bool = False Konkin_offset: Optional[int] = 0 + OffSet: Optional[int] = 0 + MaintenanceOutages: Optional[int] = 0 + PlannedOutages: Optional[int] = 0 + OverhaulInterval: Optional[int] = Field(0) + OverhaulDuration: Optional[int] = Field(50) class SimulationNode(BaseModel): id: UUID diff --git a/src/aeros_simulation/service.py b/src/aeros_simulation/service.py index 2316d90..3e383ad 100644 --- a/src/aeros_simulation/service.py +++ b/src/aeros_simulation/service.py @@ -998,7 +998,9 @@ async def create_simulation(*, db_session: DbSession, simulation_in: SimulationI "started_at": datetime.now(), "simulation_name": simulation_in.SimulationName, "schematic_name": "- TJB - Unit 3 -", - "is_default": simulation_in.IsDefault + "is_default": simulation_in.IsDefault, + "duration": simulation_in.SimDuration, + "offset": simulation_in.OffSet } simulation = AerosSimulation(**active_simulations)