From eb9b9f4be93e0bb68efc420b201c38494eb10e31 Mon Sep 17 00:00:00 2001 From: Cizz22 Date: Thu, 27 Nov 2025 16:09:54 +0700 Subject: [PATCH] fix --- src/aeros_simulation/router.py | 23 +++++++++++++++++++++++ temporal/activity.py | 26 ++++++++++++++++++++++++-- temporal/workflow.py | 13 ++++++++++++- 3 files changed, 59 insertions(+), 3 deletions(-) diff --git a/src/aeros_simulation/router.py b/src/aeros_simulation/router.py index b23246e..66ea160 100644 --- a/src/aeros_simulation/router.py +++ b/src/aeros_simulation/router.py @@ -323,6 +323,29 @@ async def get_custom_parameters_controller(db_session: DbSession, simulation_id: "message": "Simulation result retrieved successfully", } +@router.get("/ahm_metrics/{simulation_id}", response_model=StandardResponse[list]) +async def get_ahm_metrics_controller(db_session: DbSession, simulation_id:UUID): + simulation_result = await get_plant_calc_result( + db_session=db_session, simulation_id=simulation_id + ) + + default_simulation = await get_default_simulation(db_session=db_session) + + result = { + "eaf_before": default_simulation.eaf, + "eaf_after": simulation_result.eaf, + "efor_before": default_simulation.efor, + "efor_after": simulation_result.efor, + "eaf_delta": simulation_result.eaf - default_simulation.eaf, + "efor_delta": simulation_result.efor - default_simulation.efor, + } + + + return { + "data": result, + "status": "success", + "message": "Simulation result retrieved successfully", + } airflow_router = APIRouter() diff --git a/temporal/activity.py b/temporal/activity.py index c39c609..84e0c3b 100644 --- a/temporal/activity.py +++ b/temporal/activity.py @@ -1,6 +1,9 @@ +import requests from temporalio import activity +import os - +AHM_BASE_URL = os.getenv("AHM_BASE_URL", "http://192.168.1.82:8000/ahm") +AHM_SIMULATION_CALLBACK_URL = os.getenv("AHM_SIMULATION_CALLBACK_URL", "/api/v1/simulations/rbd/callback") @activity.defn async def update_equipment_for_simulation_activity(params: dict): @@ -62,4 +65,23 @@ async def update_contribution_bulk_mappings_activity(sim_id: str): return await update_contribution_bulk_mappings( db_session=db_session, simulation_id=sim_id, - ) \ No newline at end of file + ) + + +@activity.defn +async def call_callback_ahm(params): + sim_id = params["simulation_id"] + job_id = params["job_id"] + + url = f"{AHM_BASE_URL}{AHM_SIMULATION_CALLBACK_URL}" + payload = { + "simulation_id": sim_id, + "job_id": job_id, + "status" : "completed" + } + + try: + callback_response = requests.post(url, json=payload, timeout=5) + callback_response.raise_for_status() + except Exception as e: + raise e \ No newline at end of file diff --git a/temporal/workflow.py b/temporal/workflow.py index 60f059b..f40e74e 100644 --- a/temporal/workflow.py +++ b/temporal/workflow.py @@ -1,7 +1,7 @@ from datetime import timedelta from temporalio import workflow -from temporal.activity import calculate_plant_eaf_activity, execute_simulation_activity, update_contribution_bulk_mappings_activity, update_equipment_for_simulation_activity +from temporal.activity import calculate_plant_eaf_activity, execute_simulation_activity, update_contribution_bulk_mappings_activity, update_equipment_for_simulation_activity,call_callback_ahm @@ -49,6 +49,17 @@ class SimulationWorkflow: sim_data["HubCnnId"], start_to_close_timeout=timedelta(days=1) ) + + + if "AhmJobId" in sim_data: + await workflow.execute_activity( + call_callback_ahm, + { + "simulation_id": sim_data["HubCnnId"], + "job_id": sim_data["AhmJobId"] + }, + start_to_close_timeout=timedelta(days=1) + ) self.status = "COMPLETED" # etc…