220 lines
9.0 KiB
Python
Raw Normal View History

2025-02-05 19:17:11 +00:00
import logging
import math
# Configure logging
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s [%(levelname)s] %(name)s - %(message)s",
)
logger = logging.getLogger(__name__)
def __main__(record_counts_revolving_trade_count:int, record_counts_total_trade_count:int,score_results:float, total_amount_current_balance:float, total_amount_high_credit:float, revolving_amount_credit_limit:float, revolving_amount_percent_available_credit:float, revolving_amount_current_balance:float, revolving_amount_monthly_payment:float, revolving_amount_high_credit:float, closed_with_balance_amount_current_balance:float, closed_with_balance_amount_monthly_payment:float,AGG101:float, AGG102:float, AT09S:int, AT20S:int, AT31S:int, BALMAG01:float, BC21S:int, PAYMNT10:float, REV83:float, US01S:int, monthly_income:float, total_amount_monthly_payment:float, internal_monthly_payment:float)->dict:
#record_counts_revolving_trade_count treatment
if record_counts_revolving_trade_count is None or math.isnan(record_counts_revolving_trade_count):
record_counts_revolving_trade_count = 0
elif 0 <= record_counts_revolving_trade_count <= 999:
record_counts_revolving_trade_count = min(30, max(0, record_counts_revolving_trade_count))
else:
record_counts_revolving_trade_count = None
#record_counts_total_trade_count treatment
if record_counts_total_trade_count is None or math.isnan(record_counts_total_trade_count):
record_counts_total_trade_count = 0
elif 0 <= record_counts_total_trade_count <= 999:
record_counts_total_trade_count = min(35, max(0, record_counts_total_trade_count))
else:
record_counts_total_trade_count = None
#score_results treatment
if score_results is None or math.isnan(score_results):
score_results = 595.4689515
elif 350.0 <= score_results <= 850.0:
score_results = min(700.0, max(541.0, score_results))
else:
score_results = None
#revolving_amount_credit_limit treatment
if revolving_amount_credit_limit is None or math.isnan(revolving_amount_credit_limit):
revolving_amount_credit_limit = 0.0
elif 0.0 <= revolving_amount_credit_limit <= 999999999.0:
revolving_amount_credit_limit = min(20000.0, max(0.0, revolving_amount_credit_limit))
else:
revolving_amount_credit_limit = None
#revolving_amount_percent_available_credit treatment
if revolving_amount_percent_available_credit is None or math.isnan(revolving_amount_percent_available_credit):
revolving_amount_percent_available_credit = 0.0
elif 0.0 <= revolving_amount_percent_available_credit <= 100.0:
revolving_amount_percent_available_credit = min(100.0, max(0.0, revolving_amount_percent_available_credit))
else:
revolving_amount_percent_available_credit = None
#revolving_amount_current_balance treatment
if revolving_amount_current_balance is None or math.isnan(revolving_amount_current_balance):
revolving_amount_current_balance = 0.0
elif 0.0 <= revolving_amount_current_balance <= 999999999.0:
revolving_amount_current_balance = min(20000.0, max(0.0, revolving_amount_current_balance))
else:
revolving_amount_current_balance = None
#revolving_amount_monthly_payment treatment
if revolving_amount_monthly_payment is None or math.isnan(revolving_amount_monthly_payment):
revolving_amount_monthly_payment = 0.0
elif 0.0 <= revolving_amount_monthly_payment <= 999999999.0:
revolving_amount_monthly_payment = min(500.0, max(0.0, revolving_amount_monthly_payment))
else:
revolving_amount_monthly_payment = None
#revolving_amount_high_credit treatment
if revolving_amount_high_credit is None or math.isnan(revolving_amount_high_credit):
revolving_amount_high_credit = 0.0
elif 0.0 <= revolving_amount_high_credit <= 999999999.0:
revolving_amount_high_credit = min(20000.0, max(0.0, revolving_amount_high_credit))
else:
revolving_amount_high_credit = None
#AGG101 treatment
if AGG101 is None or math.isnan(AGG101):
AGG101 = 0.0
elif 0.0 <= AGG101 <= 999999999.0:
AGG101 = min(40000.0, max(0.0, AGG101))
else:
AGG101 = 0.0
#AGG102 treatment
if AGG102 is None or math.isnan(AGG102):
AGG102 = 0.0
elif 0.0 <= AGG102 <= 999999999.0:
AGG102= min(60000.0, max(0.0, AGG102))
else:
AGG102 = 0.0
#AT09S treatment
if AT09S is None or math.isnan(AT09S):
AT09S = 0
elif 0 <= AT09S <= 999:
AT09S = min(10, max(0, AT09S))
else:
AT09S = 0
#AT20S treatment
if AT20S is None or math.isnan(AT20S):
AT20S = 0
elif 0 <= AT20S <= 999:
AT20S = min(500, max(0, AT20S))
else:
AT20S = 0
#AT31S treatment
if AT31S is None or math.isnan(AT31S):
AT31S = 100
elif 0 <= AT31S <= 999:
AT31S = min(100, max(0, AT31S))
else:
AT31S = 0
#BALMAG01 treatment
if BALMAG01 is None or math.isnan(BALMAG01):
BALMAG01 = 500.0
elif 0.0 <= BALMAG01 <= 600.0:
BALMAG01 = min(500.0, max(0.0, BALMAG01))
else:
BALMAG01 = 0.0
#BC21S treatment
if BC21S is None or math.isnan(BC21S):
BC21S = 100
elif 0 <= BC21S <= 999:
BC21S = min(100, max(0, BC21S))
else:
BC21S = 0
#PAYMNT10 treatment
if PAYMNT10 is None or math.isnan(PAYMNT10):
PAYMNT10 = 0.0
elif 0.0 <= PAYMNT10 <= 999.0:
PAYMNT10 = min(15.0, max(0.0, PAYMNT10))
else:
PAYMNT10 = 0.0
#REV83 treatment
if REV83 is None or math.isnan(REV83):
REV83 = 500.0
elif 0.0 <= REV83 <= 999.0:
REV83 = min(500.0, max(0.0, REV83))
else:
REV83 = 0.0
#US01S treatment
if US01S is None or math.isnan(US01S):
US01S = 0
elif 0 <= US01S <= 999:
US01S = min(10, max(0, US01S))
else:
US01S = 0
#total_amount_monthly_payment treatment
if total_amount_monthly_payment is None or math.isnan(total_amount_monthly_payment):
total_amount_monthly_payment = 2382.0
#internal_monthly_payment treatment
if internal_monthly_payment is None or math.isnan(internal_monthly_payment):
internal_monthly_payment = 82.27
#monthly_income treatment
if monthly_income is not None and not math.isnan(monthly_income):
if 0.0 <= monthly_income <= 999999999.0:
monthly_income = min(8500.0, max(0.0, monthly_income))
else:
monthly_income = None
#pti calculation
if (monthly_income not in [None, 0.0] and not math.isnan(monthly_income) and internal_monthly_payment not in [None, ""] and not math.isnan(internal_monthly_payment) and total_amount_monthly_payment not in [None, ""] and not math.isnan(total_amount_monthly_payment)):
pti = (total_amount_monthly_payment + internal_monthly_payment) / monthly_income
elif (monthly_income not in [None, 0.0] and not math.isnan(monthly_income) and total_amount_monthly_payment not in [None, ""] and not math.isnan(total_amount_monthly_payment)):
pti = (total_amount_monthly_payment + 82.27) / monthly_income
else:
pti = None
if total_amount_current_balance is None or math.isnan(total_amount_current_balance):
total_amount_current_balance = None
if total_amount_high_credit is None or math.isnan(total_amount_high_credit):
total_amount_high_credit = None
if closed_with_balance_amount_current_balance is None or math.isnan(closed_with_balance_amount_current_balance):
closed_with_balance_amount_current_balance = None
if closed_with_balance_amount_monthly_payment is None or math.isnan(closed_with_balance_amount_monthly_payment):
closed_with_balance_amount_monthly_payment = None
output_data ={
"pti" : pti,
"score_results" : score_results,
"revolving_amount_monthly_payment" : revolving_amount_monthly_payment,
"AT31S" : AT31S,
"total_amount_high_credit" : total_amount_high_credit,
"AT20S" : AT20S,
"BALMAG01" : BALMAG01,
"record_counts_revolving_trade_count" : record_counts_revolving_trade_count,
"PAYMNT10" : PAYMNT10,
"closed_with_balance_amount_current_balance" : closed_with_balance_amount_current_balance,
"REV83" : REV83,
"AGG102" : AGG102,
"BC21S" : BC21S,
"record_counts_total_trade_count" : record_counts_total_trade_count,
"revolving_amount_current_balance" : revolving_amount_current_balance,
"total_amount_current_balance" : total_amount_current_balance,
"revolving_amount_high_credit" : revolving_amount_high_credit,
"US01S" : US01S,
"AGG101" : AGG101,
"closed_with_balance_amount_monthly_payment" : closed_with_balance_amount_monthly_payment,
"revolving_amount_credit_limit" : revolving_amount_credit_limit,
"revolving_amount_percent_available_credit" : revolving_amount_percent_available_credit,
"AT09S" : AT09S
}
logger.info(f"Pre procesed data of PD V1: {output_data}")
return output_data