Cizz22 3 months ago
parent 8b3b46d1e0
commit 0dc95d4456

@ -74,6 +74,7 @@ async def get_simulation(db_session: DbSession, simulation_id):
async def run_simulations( async def run_simulations(
db_session: DbSession, db_session: DbSession,
simulation_in: SimulationInput, simulation_in: SimulationInput,
background_tasks: BackgroundTasks
): ):
"""RUN Simulation""" """RUN Simulation"""
@ -82,42 +83,53 @@ async def run_simulations(
) )
simulation_id = simulation.id simulation_id = simulation.id
# simulation_id = "efa8ef4c-0417-4d2d-95f3-41e4283737ab"
project = await get_project(db_session=db_session) project = await get_project(db_session=db_session)
try: sim_data = simulation_in.model_dump(exclude={"SimulationName", "IsDefault"})
sim_data = simulation_in.model_dump(exclude={"SimulationName", "IsDefault"}) sim_data["HubCnnId"] = str(simulation_id)
sim_data["HubCnnId"] = str(simulation_id) sim_data["projectName"] = project.project_name
sim_data["projectName"] = project.project_name
# # ##background_tasks.add_task(execute_simulation, db_session=db_session ,simulation_id=simulation_id, sim_data=sim_data)
results = await update_equipment_for_simulation(
db_session=db_session, project_name=project.project_name, schematic_name=simulation_in.SchematicName, custom_input=simulation_in.CustomInput
)
await execute_simulation( # Prepare async background task
db_session=db_session, simulation_id=simulation_id, sim_data=sim_data, is_saved=True, eq_update=results async def run_full_simulation():
) try:
results = await update_equipment_for_simulation(
db_session=db_session,
project_name=project.project_name,
schematic_name=simulation_in.SchematicName,
custom_input=simulation_in.CustomInput,
)
await calculate_plant_eaf(db_session=db_session, simulation_id=simulation_id, is_default=simulation_in.IsDefault, konkin_offset=simulation_in.Konkin_offset) await execute_simulation(
db_session=db_session,
simulation_id=simulation_id,
sim_data=sim_data,
is_saved=True,
eq_update=results,
)
result = await update_contribution_bulk_mappings(db_session=db_session, simulation_id=simulation_id) await calculate_plant_eaf(
db_session=db_session,
simulation_id=simulation_id,
is_default=simulation_in.IsDefault,
konkin_offset=simulation_in.Konkin_offset,
)
await update_contribution_bulk_mappings(
db_session=db_session, simulation_id=simulation_id
)
return { except Exception as e:
"data": str(simulation_id), # TODO: log error into DB or logger
"status": "success", print(f"Simulation {simulation_id} failed: {e}")
"message": "Simulation created successfully",
}
except Exception as e: # Add to background
raise HTTPException( background_tasks.add_task(run_full_simulation)
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, detail=str(e)
)
return {
"data": str(simulation_id),
"status": "success",
"message": "Simulation started successfully",
}
@router.get( @router.get(
"/result/calc/{simulation_id}", "/result/calc/{simulation_id}",

Loading…
Cancel
Save