"""Risk prediction use-case orchestration.""" from app.domain.risk_engine import BaselineRiskEngine, IndicatorValue from app.schemas.risk_prediction import ( ModelInfo, RiskAssessmentRequest, RiskAssessmentResult, RiskFactorResult, ) class RiskPredictionService: _engine = BaselineRiskEngine() @classmethod def model_info(cls) -> ModelInfo: return ModelInfo(model_version=cls._engine.model_version) @classmethod def preview(cls, request: RiskAssessmentRequest) -> RiskAssessmentResult: score = cls._engine.predict( [ IndicatorValue(name=item.name, value=item.value, weight=item.weight) for item in request.indicators ] ) return RiskAssessmentResult( subject_id=request.subject_id, score=score.score, level=score.level, model_version=cls._engine.model_version, factors=[ RiskFactorResult( name=item.name, value=item.value, weight=item.weight, contribution=item.contribution, ) for item in score.factors ], )