You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

47 lines
1.3 KiB
Python

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
}
}