From ef9e457ed87b19cedfdf63619d0049dfd212b0b6 Mon Sep 17 00:00:00 2001 From: Cizz22 Date: Tue, 9 Sep 2025 08:25:37 +0700 Subject: [PATCH] fix budget --- src/calculation_budget_constrains/router.py | 13 ++++++------ src/calculation_budget_constrains/service.py | 21 ++++++++++---------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/src/calculation_budget_constrains/router.py b/src/calculation_budget_constrains/router.py index 7b776ec..568533a 100644 --- a/src/calculation_budget_constrains/router.py +++ b/src/calculation_budget_constrains/router.py @@ -5,7 +5,7 @@ from fastapi.params import Query from src.auth.service import Token from src.calculation_target_reliability.service import get_simulation_results -from src.database.core import DbSession +from src.database.core import CollectorDbSession, DbSession from src.models import StandardResponse from .service import get_all_budget_constrains @@ -18,23 +18,24 @@ async def get_target_reliability( db_session: DbSession, token: Token, session_id: str, + collector_db: CollectorDbSession, cost_threshold: float = Query(100), ): """Get all scope pagination.""" results = await get_simulation_results( - simulation_id="083a0936-37f8-4fe4-844e-a9002dd26d61", + simulation_id="76b2c981-c338-4d69-b85b-6977cb47ed41", token=token ) - - results, consequesce = await get_all_budget_constrains( - db_session=db_session, session_id=session_id, cost_threshold=cost_threshold + + results, consequence = await get_all_budget_constrains( + db_session=db_session, session_id=session_id, cost_threshold=cost_threshold, simulation_result=results, collector_db=collector_db ) return StandardResponse( data={ "results": results, - "consequence": consequesce + "consequence": consequence }, message="Data retrieved successfully", ) diff --git a/src/calculation_budget_constrains/service.py b/src/calculation_budget_constrains/service.py index ac531fa..6e7254b 100644 --- a/src/calculation_budget_constrains/service.py +++ b/src/calculation_budget_constrains/service.py @@ -26,7 +26,7 @@ async def get_all_budget_constrains( """Get all overhaul overview with EAF values that sum to 100%.""" calc_result = simulation_result['calc_result'] plant_result = simulation_result['plant_result'] - plot_result = simulation_result['plot_result'] + # plot_result = simulation_result['plot_result'] equipments = await get_standard_scope_by_session_id( db_session=db_session, @@ -47,16 +47,15 @@ async def get_all_budget_constrains( equipments_eaf_contribution = calculate_asset_eaf_contributions( plant_result=plant_result, eq_results=eq_results, - plot_result=plot_result ) + # Create result array of dictionaries result = [ { "id": equipment.id, - "assetnum": equipment.assetnum, - "location_tag": equipment.equipment.location_tag, - "name": equipment.equipment.name, + "location_tag": equipment.location_tag, + "name": equipment.equipment_name, "total_cost": equipment.overhaul_cost + equipment.service_cost, "eaf_contribution": equipments_eaf_contribution.get(equipment.location_tag, 0) } @@ -87,19 +86,19 @@ async def get_all_budget_constrains( # -def calculate_asset_eaf_contributions(plant_result, eq_results, plot_result): +def calculate_asset_eaf_contributions(plant_result, eq_results): """ Calculate each asset's negative contribution to plant EAF Higher contribution = more impact on reducing plant EAF """ plant_production = plant_result.get('production', 0) - results = defaultdict(list) + results = defaultdict(float) for asset in eq_results: # Weight based on production capacity - capacity_weight = asset.get('production', 0) / plant_production if plant_productions > 0 else 0 - plot_data = next((item for item in plot_result if item['aeros_node']['node_name'] == asset['aeros_node']['node_name']), None) + capacity_weight = asset.get('production', 0) / plant_production if plant_production > 0 else 0 + # plot_data = next((item for item in plot_result if item['aeros_node']['node_name'] == asset['aeros_node']['node_name']), None) # Get asset EAF and downtime asset_eaf = asset.get('eaf', 0) @@ -113,8 +112,8 @@ def calculate_asset_eaf_contributions(plant_result, eq_results, plot_result): sim_duration = plant_result.get('sim_duration', 8760) # Default to 1 year downtime_hours = (asset_derating_pct / 100) * sim_duration - results[asset['aeros_node']['node_name']] = eaf_contribution + results[asset['aeros_node']['node_name']] = round(eaf_contribution) # Sort by contribution (worst contributors first) - results = sorted(results.items(), key=lambda x: x[1], reverse=True) + # results = sorted(results.items(), key=lambda x: x[1], reverse=True) return results \ No newline at end of file