-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.py
66 lines (50 loc) · 1.92 KB
/
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
import os
from supabase.client import create_client, Client
supabase_url = "*************************"
supabase_key = "*************************"
supabase: Client = create_client(supabase_url, supabase_key)
def get_users():
query = "*"
return supabase.table("users").select(query).execute().data
def get_transactions():
query = "*, sender_id(*), receiver_id(*)"
return supabase.table("transactions").select(query).execute().data
def is_fraud(transaction):
sender = transaction["sender_id"]
receiver = transaction["receiver_id"]
amount = transaction["amount"]
description = transaction["description"]
# Sender details
sender_name = sender["name"] + " " + sender["surname"]
sender_email = sender["email"]
sender_country = sender["country"]
# Receiver details
receiver_name = receiver["name"] + " " + receiver["surname"]
receiver_email = receiver["email"]
receiver_country = receiver["country"]
# Si pais de origen y destino es diferente, es fraude
if sender_country != receiver_country:
return True
# Si el monto es mayor a 4000€, reportar como fraude
if amount > 4000:
return True
# Si el emisor y el receptor son la misma persona, es fraude
if (
sender == receiver
or sender_email == receiver_email
or sender_name == receiver_name
):
return True
# @proton.me son emails usados por criminales, reportar como fraude
if "@proton.me" in sender_email:
return True
return False
transactions = get_transactions()
for transaction in transactions:
if is_fraud(transaction):
sender = transaction["sender_id"]["name"]
receiver = transaction["receiver_id"]["name"]
amount = transaction["amount"]
reason = transaction["description"]
timestamp = transaction["created_at"][:19]
print(f"{timestamp}\t {sender} envió {amount}€ a {receiver} por {reason}")