if response.get("prediction") == 1: fp = response.get("fraud_probability", 0.0) alert_payload = { "alert_id": f"API-ALT-{_random.randint(100000, 999999)}", "transaction_id": data.get("transaction_id", f"TXN-{_random.randint(10000, 99999)}"), "amount": float(data.get("amount", 0.0)), "timestamp": datetime.datetime.now().isoformat(), "model_probability": fp, "triggered_rules": ["MODEL_HIGH_FRAUD_RISK"] if fp >= 0.85 else ["MODEL_SUSPICIOUS_RISK"], "status": "BLOCKED" if fp >= 0.80 else "PENDING_OTP", "rag_context": response.get("rag_context", []), "sender_bank": data.get("sender_bank"), "regulatory_body": data.get("regulatory_body") } # Dispatch to SMS/Email notifier if it is critical (>= 85%) if _api_notifier is not None and fp >= 0.85: threading.Thread(target=_api_notifier.dispatch, args=(alert_payload,)).start()