from sqlalchemy import Select, func, select from src.workorder.model import MasterWorkOrder from src.scope_equipment.model import ScopeEquipment from src.scope.model import Scope from src.database.core import DbSession async def get_cost_per_failure(*, db_session: DbSession): stmt = ( select( ScopeEquipment.scope_id, func.avg(MasterWorkOrder.total_cost_max).label('average_cost') ) .outerjoin(MasterWorkOrder, ScopeEquipment.assetnum == MasterWorkOrder.assetnum) .group_by(ScopeEquipment.scope_id) .order_by(ScopeEquipment.scope_id) ) results = await db_session.execute(stmt) return results.all() async def create_calculation(*, db_session: DbSession): return { "id": "calc_123", "result": { "summary": { "scope": "B", "numberOfFailures": 59, "optimumOHTime": 90, "optimumTotalCost": 500000000 }, "chartData": {}, "comparisons": { "vsLastCalculation": { "costDifference": -50000000, "timeChange": "+15 days" } } }, "simulationLimits": { "minInterval": 30, "maxInterval": 180 } }