"""Pydantic request/response schemas for the inference API.""" from __future__ import annotations from pydantic import BaseModel, ConfigDict, Field class Transaction(BaseModel): model_config = ConfigDict(extra="forbid") Time: float V1: float V2: float V3: float V4: float V5: float V6: float V7: float V8: float V9: float V10: float V11: float V12: float V13: float V14: float V15: float V16: float V17: float V18: float V19: float V20: float V21: float V22: float V23: float V24: float V25: float V26: float V27: float V28: float Amount: float = Field(ge=0) class PredictionResponse(BaseModel): is_fraud: bool fraud_probability: float risk_level: str threshold: float class BatchPredictionRequest(BaseModel): model_config = ConfigDict(extra="forbid") transactions: list[Transaction] = Field(min_length=1) class BatchPredictionResponse(BaseModel): predictions: list[PredictionResponse] class HealthResponse(BaseModel): status: str model_loaded: bool model_path: str preprocessor_path: str threshold: float class MetricsResponse(BaseModel): total_requests: int error_count: int error_rate: float total_predictions: int fraud_predictions: int fraud_prediction_rate: float avg_latency_ms: float