29 lines
1.0 KiB
Python
29 lines
1.0 KiB
Python
"""Risk prediction endpoints."""
|
|
|
|
from typing import Annotated
|
|
|
|
from fastapi import APIRouter, Depends
|
|
|
|
from app.api.dependencies import require_permission
|
|
from app.models.entities import UserAccount
|
|
from app.schemas.common import ApiResponse
|
|
from app.schemas.risk_prediction import ModelInfo, RiskAssessmentRequest, RiskAssessmentResult
|
|
from app.services.risk_prediction import RiskPredictionService
|
|
|
|
router = APIRouter(prefix="/risk-predictions", tags=["risk-predictions"])
|
|
|
|
|
|
@router.get("/model-info", response_model=ApiResponse[ModelInfo])
|
|
async def model_info(
|
|
_: Annotated[UserAccount, Depends(require_permission("risk.assess"))],
|
|
) -> ApiResponse[ModelInfo]:
|
|
return ApiResponse(data=RiskPredictionService.model_info())
|
|
|
|
|
|
@router.post("/preview", response_model=ApiResponse[RiskAssessmentResult])
|
|
async def preview_risk(
|
|
request: RiskAssessmentRequest,
|
|
_: Annotated[UserAccount, Depends(require_permission("risk.assess", operate=True))],
|
|
) -> ApiResponse[RiskAssessmentResult]:
|
|
return ApiResponse(data=RiskPredictionService.preview(request))
|