CoolFace
Apppublic

pylord/API-BFSI

sourceHugging Faceupdated 11mo agoView on Hugging Face
0likes
schemas.py295 linesDownload Raw Back to root
1from pydantic import BaseModel, EmailStr, Field2from typing import List, Dict, Any, Optional3from datetime import datetime4 5# ==================== USER SCHEMAS ====================6 7class UserCreate(BaseModel):8    full_name: str = Field(..., min_length=2, max_length=100)9    email: EmailStr10    password: str = Field(..., min_length=6, max_length=100)11 12    class Config:13        json_schema_extra = {14            "example": {15                "full_name": "John Doe",16                "email": "john.doe@example.com",17                "password": "securepass123"18            }19        }20 21 22class UserLogin(BaseModel):23    email: EmailStr24    password: str25 26    class Config:27        json_schema_extra = {28            "example": {29                "email": "john.doe@example.com",30                "password": "securepass123"31            }32        }33 34 35# ==================== PREDICTION SCHEMAS ====================36 37class PredictRequest(BaseModel):38    email: EmailStr39    customer_id: str = Field(..., min_length=1, max_length=50)40    transaction_id: str = Field(..., min_length=1, max_length=50)41    transaction_datetime: str = Field(..., pattern=r"^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$")42    transaction_amount: float = Field(..., gt=0)43    kyc_verified: int = Field(..., ge=0, le=1)44    account_age_days: int = Field(..., ge=0)45    channel_encoded: int = Field(..., ge=0, le=3)46 47    class Config:48        json_schema_extra = {49            "example": {50                "email": "john.doe@example.com",51                "customer_id": "CUST12345",52                "transaction_id": "TXN98765",53                "transaction_datetime": "2025-01-15 14:30:00",54                "transaction_amount": 75000.50,55                "kyc_verified": 1,56                "account_age_days": 180,57                "channel_encoded": 058            }59        }60 61 62class PredictResponse(BaseModel):63    status: str64    message: str65    data: Dict[str, Any]66 67    class Config:68        json_schema_extra = {69            "example": {70                "status": "success",71                "message": "Prediction completed successfully",72                "data": {73                    "prediction_id": 123,74                    "user": "John Doe",75                    "model_risk_score": 0.7234,76                    "rule_score": 0.15,77                    "combined_score": 0.8734,78                    "is_fraud": 1,79                    "rules_triggered": ["High amount transaction (>₹100K)"],80                    "derived_features": {},81                    "explanation": "This transaction was flagged...",82                    "timestamp": "2025-01-15T14:30:00"83                }84            }85        }86 87 88# ==================== TRANSACTION HISTORY SCHEMAS ====================89 90class Transaction(BaseModel):91    id: int92    customer_id: str93    transaction_id: str94    risk_score: float95    is_fraud: int96    derived_features: Dict[str, Any]97    explanation: str98    timestamp: str99 100 101class TransactionHistoryResponse(BaseModel):102    status: str103    message: str104    data: Dict[str, Any]105 106    class Config:107        json_schema_extra = {108            "example": {109                "status": "success",110                "message": "Found 15 transactions",111                "data": {112                    "user_email": "john.doe@example.com",113                    "user_name": "John Doe",114                    "total_transactions": 15,115                    "transactions": []116                }117            }118        }119 120 121# ==================== ANALYTICS SCHEMAS ====================122 123class KPIs(BaseModel):124    total_transactions: int125    fraud_detected: int126    accuracy_rate: float127    amount_protected: float128 129 130class FraudVsLegitimate(BaseModel):131    fraud: int132    legitimate: int133 134 135class FraudRateTrend(BaseModel):136    month: str137    fraud_rate: float138    total_transactions: int139    fraud_count: int140 141 142class AmountVsRiskScatter(BaseModel):143    transaction_amount: float144    risk_score: float145    is_fraud: int146 147 148class GraphData(BaseModel):149    fraud_vs_legitimate: Dict[str, int]150    fraud_rate_trend: List[Dict[str, Any]]151    fraud_by_channel: Dict[str, int]152    amount_vs_risk_scatter: List[Dict[str, Any]]153 154 155class AnalyticsResponse(BaseModel):156    status: str157    message: str158    data: Dict[str, Any]159 160    class Config:161        json_schema_extra = {162            "example": {163                "status": "success",164                "message": "Analytics generated successfully",165                "data": {166                    "kpis": {167                        "total_transactions": 1323,168                        "fraud_detected": 89,169                        "accuracy_rate": 93.3,170                        "amount_protected": 2400000.00171                    },172                    "graphs": {173                        "fraud_vs_legitimate": {"fraud": 89, "legitimate": 1234},174                        "fraud_rate_trend": [],175                        "fraud_by_channel": {},176                        "amount_vs_risk_scatter": []177                    }178                }179            }180        }181 182 183# ==================== METRICS SCHEMAS ====================184 185class ConfusionMatrix(BaseModel):186    true_positive: int187    false_positive: int188    true_negative: int189    false_negative: int190 191 192class FeatureImportance(BaseModel):193    feature: str194    importance: float195 196 197class PerformanceSummary(BaseModel):198    total_predictions: int199    fraud_detected: int200    false_positives: int201    false_negatives: int202    detection_rate: float203    false_positive_rate: float204 205 206class ModelMetrics(BaseModel):207    accuracy: float208    precision: float209    recall: float210    f1_score: float211    auc_roc: float212    confusion_matrix: Dict[str, int]213 214 215class MetricsResponse(BaseModel):216    status: str217    message: str218    data: Dict[str, Any]219 220    class Config:221        json_schema_extra = {222            "example": {223                "status": "success",224                "message": "Model metrics retrieved successfully",225                "data": {226                    "model_name": "CatBoost Fraud Detection Model",227                    "version": "1.0.0",228                    "training_date": "2024-01-15",229                    "metrics": {230                        "accuracy": 0.933,231                        "precision": 0.912,232                        "recall": 0.887,233                        "f1_score": 0.899,234                        "auc_roc": 0.956235                    }236                }237            }238        }239 240 241# ==================== BULK PREDICTION SCHEMAS ====================242 243class BulkPredictRequest(BaseModel):244    email: EmailStr245    transactions: List[Dict[str, Any]] = Field(..., min_items=1, max_items=1000)246    247    class Config:248        json_schema_extra = {249            "example": {250                "email": "user@example.com",251                "transactions": [252                    {253                        "customer_id": "CUST001",254                        "transaction_id": "TXN001",255                        "transaction_datetime": "2025-01-15 14:30:00",256                        "transaction_amount": 50000,257                        "kyc_verified": 1,258                        "account_age_days": 180,259                        "channel_encoded": 0260                    }261                ]262            }263        }264 265 266class BulkPredictResult(BaseModel):267    transaction_id: str268    customer_id: str269    risk_score: float270    is_fraud: int271    rules_triggered: List[str]272    status: str  # "success" or "error"273    error_message: Optional[str] = None274 275 276class BulkPredictResponse(BaseModel):277    status: str278    message: str279    data: Dict[str, Any]280    281    class Config:282        json_schema_extra = {283            "example": {284                "status": "success",285                "message": "Bulk prediction completed",286                "data": {287                    "total_processed": 100,288                    "successful": 98,289                    "failed": 2,290                    "fraud_detected": 15,291                    "processing_time_seconds": 2.5,292                    "results": []293                }294            }295        }