2024-10-13 17:09:43 +04:00
from fastapi import APIRouter , HTTPException
2024-10-13 16:53:07 +04:00
from schemas . schemas import LaptopCreate , LaptopResponse , PredictPriceResponse
from services . service import LaptopService
import os
router = APIRouter ( )
# Инициализация сервиса
2024-10-14 18:19:44 +04:00
MODEL_PATH = os . getenv ( " MODEL_PATH " , " services/laptop_price_model.pkl " )
FEATURE_COLUMNS_PATH = os . getenv ( " FEATURE_COLUMNS_PATH " , " services/feature_columns.pkl " )
2024-10-13 16:53:07 +04:00
laptop_service = LaptopService ( model_path = MODEL_PATH , feature_columns_path = FEATURE_COLUMNS_PATH )
2024-10-13 17:09:43 +04:00
@router.post ( " /predict_price/ " , response_model = PredictPriceResponse , summary = " Predict laptop price " , description = " Predict the price of a laptop based on its specifications. " , response_description = " The predicted price of the laptop. " )
2024-10-13 16:53:07 +04:00
def predict_price ( data : LaptopCreate ) :
2024-10-13 17:09:43 +04:00
"""
Predict the price of a laptop given its specifications .
- * * processor * * : Type of processor ( e . g . , i5 , i7 )
- * * ram * * : Amount of RAM in GB
- * * os * * : Operating system ( e . g . , Windows , MacOS )
- * * ssd * * : Size of SSD in GB
- * * display * * : Size of the display in inches
"""
2024-10-13 16:53:07 +04:00
try :
return laptop_service . predict_price ( data . dict ( ) )
except Exception as e :
raise HTTPException ( status_code = 400 , detail = str ( e ) )