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

Loading…
Cancel
Save