2026-09-04 10:20:40 +08:00

43 lines
1.2 KiB
Python

"""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
],
)