From 7ee4b259def29a45e37bb7df685561d6a51a2cce Mon Sep 17 00:00:00 2001 From: Cizz22 Date: Fri, 11 Jul 2025 14:19:18 +0700 Subject: [PATCH] fix aeros --- src/aeros_equipment/service.py | 2 +- src/aeros_project/service.py | 66 +++++++++++++++++---------------- src/aeros_simulation/service.py | 2 +- src/config.py | 4 +- 4 files changed, 38 insertions(+), 36 deletions(-) diff --git a/src/aeros_equipment/service.py b/src/aeros_equipment/service.py index 96946bc..8125d27 100644 --- a/src/aeros_equipment/service.py +++ b/src/aeros_equipment/service.py @@ -127,7 +127,7 @@ async def save_default_equipment(*, db_session: DbSession, project_name: str): reg_nodes = [node.location_tag for node in equipment_nodes.scalars().all()] - updateNodeReq = {"projectName": project_name, "equipmentNames": reg_nodes} + updateNodeReq = {"projectName": "trialapi", "equipmentNames": reg_nodes} # Delete old data query = Delete(AerosEquipment) diff --git a/src/aeros_project/service.py b/src/aeros_project/service.py index 2fab0cc..0bfd059 100644 --- a/src/aeros_project/service.py +++ b/src/aeros_project/service.py @@ -9,13 +9,13 @@ from sqlalchemy.orm import selectinload from src.aeros_equipment.service import save_default_equipment from src.aeros_simulation.service import save_default_simulation_node from src.auth.service import CurrentUser -from src.config import WINDOWS_AEROS_BASE_URL +from src.config import WINDOWS_AEROS_BASE_URL, AEROS_BASE_URL from src.database.core import DbSession from src.database.service import search_filter_sort_paginate from .model import AerosProject from .schema import AerosProjectInput - +import asyncio ALLOWED_EXTENSIONS = {".aro"} MAX_FILE_SIZE = 100 * 1024 * 1024 # 100MB client = httpx.AsyncClient(timeout=300.0) @@ -23,9 +23,9 @@ client = httpx.AsyncClient(timeout=300.0) async def import_aro_project(*, db_session: DbSession, aeros_project_in: AerosProjectInput): # windows_aeros_base_url = WINDOWS_AEROS_BASE_URL - + file = aeros_project_in.aro_file - + # Get filename filename_without_ext = os.path.splitext(file.filename)[0] @@ -50,39 +50,39 @@ async def import_aro_project(*, db_session: DbSession, aeros_project_in: AerosPr # Project name hardcode # project_name = "trialapi" - + # Project name project_name = filename_without_ext - + ## save File to windows app # Output is string of file path, examole # # Example response "C/dsad/dsad.aro" try: # Reset file position since we already read it for size check # await file.seek(0) - + # Prepare file for upload files = { "file": (file.filename, content, file.content_type or "application/octet-stream") } - + response = await client.post( f"{WINDOWS_AEROS_BASE_URL}/api/aeros/upload-file", files=files ) response.raise_for_status() - + # Get the file path from the response upload_result = response.json() aro_path = upload_result.get("full_path") - + if not aro_path: raise HTTPException( status_code=500, detail="Failed to get file path from upload response" ) - + except httpx.HTTPStatusError as e: raise HTTPException( status_code=e.response.status_code, @@ -93,50 +93,52 @@ async def import_aro_project(*, db_session: DbSession, aeros_project_in: AerosPr status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, detail=str(e) ) + await asyncio.sleep(2) + # aro_path = r"C:/Users/user/Documents/Aeros/sample_project.aro" aeros_project = AerosProject(project_name=project_name, aro_file_path=aro_path) - + # find aeros record first, if not found, then create a new one stmt = select(AerosProject).order_by(desc(AerosProject.created_at)).limit(1) result = await db_session.execute(stmt) latest_project = result.scalar_one_or_none() - + # If aeros record found, then update it if latest_project: latest_project.project_name = project_name latest_project.aro_file_path = aro_path else: # else create new aeros record db_session.add(aeros_project) - + await db_session.commit() # Update path to AEROS APP # Example BODy "C/dsad/dsad.aro" - # try: - # response = await client.post( - # f"{AEROS_BASE_URL}/api/Project/ImportAROFile", - # json=f"/", - # headers={"Content-Type": "application/json"}, - # ) - # response.raise_for_status() - # except Exception as e: - # raise HTTPException( - # status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, detail=str(e) - # ) - - # await _initialize_default_project_data( - # db_session=db_session, - # project_name=project_name - # ) + try: + response = await client.post( + f"{AEROS_BASE_URL}/api/Project/ImportAROFile", + content='"D:/aro/trialapi.aro"', + headers={"Content-Type": "application/json"}, + ) + response.raise_for_status() + except Exception as e: + raise HTTPException( + status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, detail=str(e) + ) + + await _initialize_default_project_data( + db_session=db_session, + project_name=project_name + ) async def fetch_aro_record(*, db_session: DbSession): stmt = select(AerosProject).order_by(desc(AerosProject.updated_at)).limit(1) result = await db_session.execute(stmt) found_record = result.scalar_one_or_none() - + return found_record - + async def _initialize_default_project_data( *, diff --git a/src/aeros_simulation/service.py b/src/aeros_simulation/service.py index 66ea566..a4e7b6c 100644 --- a/src/aeros_simulation/service.py +++ b/src/aeros_simulation/service.py @@ -259,7 +259,7 @@ async def save_default_simulation_node( *, db_session: DbSession, project_name: str = "trialapi" ): sim_data = { - "projectName": project_name, + "projectName": "trialapi", "SchematicName": "Boiler", "SimSeed": 1, "SimDuration": 3, diff --git a/src/config.py b/src/config.py index df1ac43..537c76f 100644 --- a/src/config.py +++ b/src/config.py @@ -74,5 +74,5 @@ MAXIMO_BASE_URL = config("MAXIMO_BASE_URL", default="http://example.com") MAXIMO_API_KEY = config("MAXIMO_API_KEY", default="keys") AUTH_SERVICE_API = config("AUTH_SERVICE_API", default="http://192.168.1.82:8000/auth") -AEROS_BASE_URL = config("AEROS_BASE_URL", default="http://20.198.228.3") -WINDOWS_AEROS_BASE_URL = config("WINDOWS_AEROS_BASE_URL", default="http://localhost:8800") +AEROS_BASE_URL = config("AEROS_BASE_URL", default="http://192.168.1.87") +WINDOWS_AEROS_BASE_URL = config("WINDOWS_AEROS_BASE_URL", default="http://192.168.1.87:8800")