def import_rules_identity_sim_card_ownerships_i3(ds: DataService): # define Identities(I)' rules of sim_care_ownership master: level 2 rule = create_new_rule(2, 'I', 'I3', 'مالکیت خط تلفن همراه', 2) ds.insert_rule(rule) # define Identities(I)' rules of sim_care_ownership details: level 3 # SimCardOwnership = Yes 20 I0301P20 2% تطابق هویت واقعی کاربر با مشخصات مالک خط تلفن همراه در سامانه شاهکار rule = create_new_rule( 3, 'I3', 'I0301P20', 'تطابق هویت واقعی کاربر با مشخصات مالک خط تلفن همراه در سامانه شاهکار', 2, 20, 1) ds.insert_rule(rule) rule_codes: List[str] = [rule.code] # SimCardOwnership = No 00 I0302P0 0% عدم تطابق هویت واقعی کاربر با مشخصات مالک خط تلفن همراه rule = create_new_rule( 3, 'I3', 'I0302P0', 'عدم تطابق هویت واقعی کاربر با مشخصات مالک خط تلفن همراه', 0, 0, 0) ds.insert_rule(rule) rule_codes.append(rule.code) print('Identities(I) sim_card_ownerships_i3 rules are created.') ds.delete_score_reasons( {RULE_MASTER_CODE: I3_RULES_PROFILE_SIM_CARD_OWNERSHIPS}) change_reason = create_new_score_reason( I3_RULES_PROFILE_SIM_CARD_OWNERSHIPS, rule_codes, 'تایید مالکیت خط تلفن همراه', 'عدم تایید مالکیت خط تلفن همراه') ds.insert_score_reason(change_reason) print('Identities(I) sim_card_ownerships_i3 change reasons are created.')
def import_rules_identity_address_verifications_i4(ds: DataService): # define Identities(I)' rules of address_verifications master: level 2 rule = create_new_rule(2, 'I', 'I4', 'احراز اصالت محل سکونت', 2) ds.insert_rule(rule) # define Identities(I)' rules of address_verifications details: level 3 # AddressVerification = Yes 20 I0401P20 2% احراز اصالت نشانی محل سکونت کاربر از طریق وارد کردن رمز پستی rule = create_new_rule( 3, 'I4', 'I0401P20', 'احراز اصالت نشانی محل سکونت کاربر از طریق وارد کردن رمز پستی', 2, 20, 1) ds.insert_rule(rule) rule_codes: List[str] = [rule.code] # AddressVerification = No 00 I0402P0 0% عدم احراز اصالت نشانی محل سکونت کاربر rule = create_new_rule( 3, 'I4', 'I0402P0', 'تطابق هویت واقعی کاربر با مشخصات مالک خط تلفن همراه در سامانه شاهکار', 0, 0, 0) ds.insert_rule(rule) rule_codes.append(rule.code) print('Identities(I) address_verifications_i4 rules are created.') ds.delete_score_reasons( {RULE_MASTER_CODE: I4_RULES_PROFILE_ADDRESS_VERIFICATIONS}) change_reason = create_new_score_reason( I4_RULES_PROFILE_ADDRESS_VERIFICATIONS, rule_codes, 'تایید نشانی محل سکونت', 'عدم تایید نشانی محل سکونت') ds.insert_score_reason(change_reason) print('Identities(I) address_verifications_i4 change reasons are created.')
def import_rules_timeliness_arrear_loans_total_count_t34(ds: DataService): # define Timeliness(T)' rules of done_arrear_trades_of_last_3_months master: level 2 rule = create_new_rule(2, 'T', 'T34', 'تعداد تسهیلات معوق در جریان', 2.59, 20) ds.insert_rule(rule) # define Timeliness(T)' rules of done_arrear_trades_of_last_3_months details: level 3 # DelayedLoans = 0 20 T3401P20 کاربر تسهیلات معوق ندارد rule = create_new_rule(3, 'T34', 'T3401P20', 'کاربر تسهیلات معوق ندارد', 2.59, 20, 0, 0) ds.insert_rule(rule) rule_codes: List[str] = [rule.code] # DelayedLoans = 1 -10 T3402N10 کاربر 1 تسهیلات معوق دارد rule = create_new_rule(3, 'T34', 'T3402N10', 'کاربر 1 تسهیلات معوق دارد', 1.30, -10, 1, 1) ds.insert_rule(rule) rule_codes.append(rule.code) # DelayedLoans = 2 -20 T3403N20 کاربر ۲ تسهیلات معوق دارد rule = create_new_rule(3, 'T34', 'T3403N20', 'کاربر ۲ تسهیلات معوق دارد', 2.59, -20, 2, 2) ds.insert_rule(rule) rule_codes.append(rule.code) # DelayedLoans = 3 -30 T3404N30 کاربر ۳ تسهیلات معوق دارد rule = create_new_rule(3, 'T34', 'T3404N30', 'کاربر ۳ تسهیلات معوق دارد', 3.89, -30, 3, 3) ds.insert_rule(rule) rule_codes.append(rule.code) # DelayedLoans >= 4 -40 T3405N40 کاربر بیش از ۳ تسهیلات معوق دارد rule = create_new_rule(3, 'T34', 'T3405N40', 'کاربر بیش از ۳ تسهیلات معوق دارد', 5.19, -40, 4, rules_max_val) ds.insert_rule(rule) rule_codes.append(rule.code) print('Timeliness(T) arrear_loans_total_count_t34 rules are created.') ds.delete_score_reasons({RULE_MASTER_CODE: T34_RULES_LOAN_ARREAR_TOTAL_COUNTS}) change_reason = create_new_score_reason(T34_RULES_LOAN_ARREAR_TOTAL_COUNTS, rule_codes, 'کاهش تعداد تسهیلات معوق در جریان', 'افزایش تعداد تسهیلات معوق در جریان') ds.insert_score_reason(change_reason) print('Timeliness(T) arrear_loans_total_count_t34 change reasons are created.')
def import_rules_timeliness_past_due_loans_total_count_t33(ds: DataService): # define Timeliness(T)' rules of done_arrear_trades_of_last_3_months master: level 2 rule = create_new_rule(2, 'T', 'T33', 'تعداد تسهیلات سررسید گذشته در جریان', 1.30, 10) ds.insert_rule(rule) # define Timeliness(T)' rules of done_arrear_trades_of_last_3_months details: level 3 # PastDueLoans = 0 10 T3301P10 کاربر تسهیلات سررسید گذشته ندارد rule = create_new_rule(3, 'T33', 'T3301P10', 'کاربر تسهیلات سررسید گذشته ندارد', 1.30, 10, 0, 0) ds.insert_rule(rule) rule_codes: List[str] = [rule.code] # PastDueLoans = 1 00 T3302P0 کاربر 1 تسهیلات سررسید گذشته دارد rule = create_new_rule(3, 'T33', 'T3302P0', 'کاربر 1 تسهیلات سررسید گذشته دارد', 0, 0, 1, 1) ds.insert_rule(rule) rule_codes.append(rule.code) # PastDueLoans = 2 -10 T3303N10 کاربر ۲ تسهیلات سررسید گذشته دارد rule = create_new_rule(3, 'T33', 'T3303N10', 'کاربر ۲ تسهیلات سررسید گذشته دارد', 1.30, -10, 2, 2) ds.insert_rule(rule) rule_codes.append(rule.code) # PastDueLoans = 3 -20 T3304N20 کاربر ۳ تسهیلات سررسید گذشته دارد rule = create_new_rule(3, 'T33', 'T3304N20', 'کاربر ۳ تسهیلات سررسید گذشته دارد', 2.59, -20, 3, 3) ds.insert_rule(rule) rule_codes.append(rule.code) # PastDueLoans >= 4 -30 T3305N30 کاربر بیش از ۳ تسهیلات سررسید گذشته دارد rule = create_new_rule(3, 'T33', 'T3305N30', 'کاربر بیش از ۳ تسهیلات سررسید گذشته دارد', 3.89, -30, 4, rules_max_val) ds.insert_rule(rule) rule_codes.append(rule.code) print('Timeliness(T) past_due_loans_total_count_t33 rules are created.') ds.delete_score_reasons({RULE_MASTER_CODE: T33_RULES_LOAN_PAST_DUE_TOTAL_COUNTS}) change_reason = create_new_score_reason(T33_RULES_LOAN_PAST_DUE_TOTAL_COUNTS, rule_codes, 'کاهش تعداد تسهیلات سررسید گذشته در جریان', 'افزایش تعداد تسهیلات سررسید گذشته در جریان') ds.insert_score_reason(change_reason) print('Timeliness(T) past_due_loans_total_count_t33 change reasons are created.')
def import_rules_timeliness_unfixed_returned_cheques_count_of_last_5_years_t32(ds: DataService): # define Timeliness(T)' rules of done_arrear_trades_of_last_3_months master: level 2 rule = create_new_rule(2, 'T', 'T32', 'تعداد کل چکهای برگشتی رفع سو اثر شده در 5 سال گذشته', 2.59, 20) ds.insert_rule(rule) # define Timeliness(T)' rules of done_arrear_trades_of_last_3_months details: level 3 # AllDishonouredCheques = 0 20 T3201P20 کاربر چک برگشتی ندارد rule = create_new_rule(3, 'T32', 'T3201P20', 'کاربر چک برگشتی ندارد', 2.59, 20, 0, 0) ds.insert_rule(rule) rule_codes: List[str] = [rule.code] # 1 ≤ AllDishonouredCheques ≤ 3 00 T3202P0 کاربر بین 1 تا 3 چک برگشتی دارد rule = create_new_rule(3, 'T32', 'T3202P0', 'کاربر بین 1 تا 3 چک برگشتی دارد', 0, 0, 1, 3) ds.insert_rule(rule) rule_codes.append(rule.code) # 4 <= AllDishonouredCheques ≤ 6 -10 T3203N10 کاربر بین 4 تا 6 چک برگشتی دارد rule = create_new_rule(3, 'T32', 'T3203N10', 'کاربر بین 4 تا 6 چک برگشتی دارد', 1.30, -10, 4, 6) ds.insert_rule(rule) rule_codes.append(rule.code) # 7 <= AllDishonouredCheques ≤ 10 -20 T3204N20 کاربر کاربر بین 7 تا 10 چک برگشتی دارد rule = create_new_rule(3, 'T32', 'T3204N20', 'کاربر کاربر بین 7 تا 10 چک برگشتی دارد', 2.59, -20, 7, 10) ds.insert_rule(rule) rule_codes.append(rule.code) # DishonouredCheques >= 11 -30 T3205N30 کاربر بیش از 10 چک برگشتی دارد rule = create_new_rule(3, 'T32', 'T3205N30', 'کاربر بیش از 10 چک برگشتی دارد', 3.89, -30, 11, rules_max_val) ds.insert_rule(rule) rule_codes.append(rule.code) print('Timeliness(T) unfixed_returned_cheques_count_of_last_5_years_t32 rules are created.') ds.delete_score_reasons({RULE_MASTER_CODE: T32_RULES_CHEQUE_UNFIXED_RETURNED_COUNT_OF_LAST_5_YEARS}) change_reason = create_new_score_reason(T32_RULES_CHEQUE_UNFIXED_RETURNED_COUNT_OF_LAST_5_YEARS, rule_codes, 'کاهش تعداد چکهای برگشتی رفع سو اثر شده در پنج سال گذشته', 'افزایش تعداد چکهای برگشتی رفع سو اثر شده در پنج سال گذشته') ds.insert_score_reason(change_reason) print('Timeliness(T) unfixed_returned_cheques_count_of_last_5_years_t32 change reasons are created.')
def import_rules_timeliness_unfixed_returned_cheques_count_of_more_12_months_t31(ds: DataService): # define Timeliness(T)' rules of done_arrear_trades_of_last_3_months master: level 2 rule = create_new_rule(2, 'T', 'T31', 'تعداد چکهای برگشتی رفع سو اثر نشده در بیش از ۱۲ ماه گذشته', 2.59, 20) ds.insert_rule(rule) # define Timeliness(T)' rules of done_arrear_trades_of_last_3_months details: level 3 # DishonouredChequesA12M = 0 20 T3101P20 کاربر چک برگشتی ندارد rule = create_new_rule(3, 'T31', 'T3101P20', 'کاربر چک برگشتی ندارد', 2.59, 20, 0, 0) ds.insert_rule(rule) rule_codes: List[str] = [rule.code] # DishonouredChequesA12M = 1 -40 T3102N40 کاربر ۱ چک برگشتی دارد rule = create_new_rule(3, 'T31', 'T3102N40', 'کاربر ۱ چک برگشتی دارد', 5.19, -40, 1, 1) ds.insert_rule(rule) rule_codes.append(rule.code) # DishonouredChequesA12M = 2 -50 T3103N50 کاربر ۲ چک برگشتی دارد rule = create_new_rule(3, 'T31', 'T3103N50', 'کاربر ۲ چک برگشتی دارد', 6.48, -50, 2, 2) ds.insert_rule(rule) rule_codes.append(rule.code) # DishonouredChequesA12M = 3 -60 T3104N60 کاربر ۳ چک برگشتی دارد rule = create_new_rule(3, 'T31', 'T3104N60', 'کاربر ۳ چک برگشتی دارد', 7.78, -60, 3, 3) ds.insert_rule(rule) rule_codes.append(rule.code) # DishonouredChequesA12M >= 4 -70 T3105N70 کاربر بیش از ۳ چک برگشتی دارد rule = create_new_rule(3, 'T31', 'T3105N70', 'کاربر بیش از ۳ چک برگشتی دارد', 9.07, -70, 4, rules_max_val) ds.insert_rule(rule) rule_codes.append(rule.code) print('Timeliness(T) unfixed_returned_cheques_count_of_more_12_months_t31 rules are created.') ds.delete_score_reasons({RULE_MASTER_CODE: T31_RULES_CHEQUE_UNFIXED_RETURNED_COUNT_OF_MORE_12_MONTHS}) change_reason = create_new_score_reason(T31_RULES_CHEQUE_UNFIXED_RETURNED_COUNT_OF_MORE_12_MONTHS, rule_codes, 'کاهش تعداد چکهای برگشتی رفع سو اثر نشده در بیش از یک سال گذشته', 'افزایش تعداد چکهای برگشتی رفع سو اثر نشده در بیش از یک سال گذشته') ds.insert_score_reason(change_reason) print('Timeliness(T) unfixed_returned_cheques_count_of_more_12_months_t31 change reasons are created.')
def import_rules_timeliness_unfixed_returned_cheques_count_between_last_3_to_12_months_t30(ds: DataService): # define Timeliness(T)' rules of done_arrear_trades_of_last_3_months master: level 2 rule = create_new_rule(2, 'T', 'T30', 'تعداد چکهای برگشتی رفع سو اثر نشده در بازه ۳ تا ۱۲ ماه گذشته', 2.59, 20) ds.insert_rule(rule) # define Timeliness(T)' rules of done_arrear_trades_of_last_3_months details: level 3 # DishonouredChequesL3-12M = 0 20 T3001P20 کاربر چک برگشتی ندارد rule = create_new_rule(3, 'T30', 'T3001P20', 'کاربر چک برگشتی ندارد', 2.59, 20, 0, 0) ds.insert_rule(rule) rule_codes: List[str] = [rule.code] # DishonouredChequesL3-12M = 1 -10 T3002N30 کاربر ۱ چک برگشتی دارد rule = create_new_rule(3, 'T30', 'T3002N30', 'کاربر ۱ چک برگشتی دارد', 3.89, -30, 1, 1) ds.insert_rule(rule) rule_codes.append(rule.code) # DishonouredChequesL3-12M = 2 -20 T3003N40 کاربر ۲ چک برگشتی دارد rule = create_new_rule(3, 'T30', 'T3003N40', 'کاربر 2 چک برگشتی دارد', 5.19, -40, 2, 2) ds.insert_rule(rule) rule_codes.append(rule.code) # DishonouredChequesL3-12M = 3 -30 T3004N50 کاربر ۳ چک برگشتی دارد rule = create_new_rule(3, 'T30', 'T3004N50', 'کاربر 3 چک برگشتی دارد', 6.48, -50, 3, 3) ds.insert_rule(rule) rule_codes.append(rule.code) # DishonouredChequesL3-12M > 3 -40 T3005N60 کاربر بیش از ۳ چک برگشتی دارد rule = create_new_rule(3, 'T30', 'T3005N60', 'کاربر بیش از ۳ چک برگشتی دارد', 7.78, -60, 4, rules_max_val) ds.insert_rule(rule) rule_codes.append(rule.code) print('Timeliness(T) unfixed_returned_cheques_count_between_last_3_to_12_months_t30 rules are created.') ds.delete_score_reasons({RULE_MASTER_CODE: T30_RULES_CHEQUE_UNFIXED_RETURNED_COUNT_BETWEEN_LAST_3_TO_12_MONTHS}) change_reason = create_new_score_reason(T30_RULES_CHEQUE_UNFIXED_RETURNED_COUNT_BETWEEN_LAST_3_TO_12_MONTHS, rule_codes, 'کاهش تعداد چکهای برگشتی رفع سو اثر نشده در یک سال گذشته', 'افزایش تعداد چکهای برگشتی رفع سو اثر نشده در یک سال گذشته') ds.insert_score_reason(change_reason) print('Timeliness(T) unfixed_returned_cheques_count_between_last_3_to_12_months_t30 change reasons are created.')
def import_rules_timeliness_unfixed_returned_cheques_count_of_last_3_months_t29(ds: DataService): # define Timeliness(T)' rules of done_arrear_trades_of_last_3_months master: level 2 rule = create_new_rule(2, 'T', 'T29', 'تعداد چکهای برگشتی رفع سو اثر نشده در ۳ ماه گذشته', 2.59, 20) ds.insert_rule(rule) # define Timeliness(T)' rules of done_arrear_trades_of_last_3_months details: level 3 # DishonouredChequesL3M = 0 20 T2901P20 کاربر چک برگشتی ندارد rule = create_new_rule(3, 'T29', 'T2901P20', 'کاربر چک برگشتی ندارد', 2.59, 20, 0, 0) ds.insert_rule(rule) rule_codes: List[str] = [rule.code] # DishonouredChequesL3M = 1 -10 T2902N10 کاربر ۱ چک برگشتی دارد rule = create_new_rule(3, 'T29', 'T2902N10', 'کاربر ۱ چک برگشتی دارد', 1.30, -10, 1, 1) ds.insert_rule(rule) rule_codes.append(rule.code) # DishonouredChequesL3M = 2 -20 T2903N20 کاربر ۲ چک برگشتی دارد rule = create_new_rule(3, 'T29', 'T2903N20', 'کاربر 2 چک برگشتی دارد', 2.59, -20, 2, 2) ds.insert_rule(rule) rule_codes.append(rule.code) # DishonouredChequesL3M = 3 -30 T2904N30 کاربر ۳ چک برگشتی دارد rule = create_new_rule(3, 'T29', 'T2904N30', 'کاربر 3 چک برگشتی دارد', 3.89, -30, 3, 3) ds.insert_rule(rule) rule_codes.append(rule.code) # DishonouredChequesL3M > 3 -40 T2905N40 کاربر بیش از ۳ چک برگشتی دارد rule = create_new_rule(3, 'T29', 'T2905N40', 'کاربر بیش از ۳ چک برگشتی دارد', 5.19, -40, 4, rules_max_val) ds.insert_rule(rule) rule_codes.append(rule.code) print('Timeliness(T) unfixed_returned_cheques_count_of_last_3_months_t29 rules are created.') ds.delete_score_reasons({RULE_MASTER_CODE: T29_RULES_CHEQUE_UNFIXED_RETURNED_COUNT_OF_LAST_3_MONTHS}) change_reason = create_new_score_reason(T29_RULES_CHEQUE_UNFIXED_RETURNED_COUNT_OF_LAST_3_MONTHS, rule_codes, 'کاهش تعداد چکهای برگشتی رفع سو اثر نشده در سه ماه گذشته', 'افزایش تعداد چکهای برگشتی رفع سو اثر نشده در سه ماه گذشته') ds.insert_score_reason(change_reason) print('Timeliness(T) unfixed_returned_cheques_count_of_last_3_months_t29 rules are created.')
def import_rules_history_done_timely_trades_of_last_3_months_h6(ds: DataService): # define History(H)' rules of done_timely_trades_of_last_3_months master: level 2 rule = create_new_rule(2, 'H', 'H6', 'تعداد تعاملات موفق در 3 ماه گذشته', 4.44, 40) ds.insert_rule(rule) # define History(H)' rules of done_timely_trades_of_last_3_months details: level 3 # Last3MSD = 0 00 H0601P0 کاربر در سه ماه گذشته هیچ تعامل موفقی با سایر کاربران نداشته است rule = create_new_rule(3, 'H6', 'H0601P0', 'کاربر در سه ماه گذشته هیچ تعامل موفقی با سایر کاربران نداشته است', 0, 0, 0, 0) ds.insert_rule(rule) rule_codes: List[str] = [rule.code] # Last3MSD = 1 10 H0602P10 کاربر در سه ماه گذشته 1 تعامل موفق با سایر کاربران داشته است rule = create_new_rule(3, 'H6', 'H0602P10', 'کاربر در سه ماه گذشته 1 تعامل موفق با سایر کاربران داشته است', 1.11, 10, 1, 1) ds.insert_rule(rule) rule_codes.append(rule.code) # Last3MSD = 2 20 H0603P20 کاربر در سه ماه گذشته ۲ تعامل موفق با سایر کاربران داشته است rule = create_new_rule(3, 'H6', 'H0603P20', 'کاربر در سه ماه گذشته ۲ تعامل موفق با سایر کاربران داشته است', 2.22, 20, 2, 2) ds.insert_rule(rule) rule_codes.append(rule.code) # Last3MSD = 3 30 H0604P30 کاربر در سه ماه گذشته 3 تعامل موفق با سایر کاربران داشته است rule = create_new_rule(3, 'H6', 'H0601P0', 'کاربر در سه ماه گذشته 3 تعامل موفق با سایر کاربران داشته است', 3.33, 30, 3, 3) ds.insert_rule(rule) rule_codes.append(rule.code) # Last3MSD ≥ 4 40 H0605P40 کاربر در سه ماه گذشته بیش از 3 تعامل موفق با سایر کاربران داشته است rule = create_new_rule(3, 'H6', 'H0605P40', 'کاربر در سه ماه گذشته بیش از 3 تعامل موفق با سایر کاربران داشته است', 4.44, 40, 4, 999) ds.insert_rule(rule) print('Histories(H) done_timely_trades_of_last_3_months_h6 rules are created.') ds.delete_score_reasons({RULE_MASTER_CODE: H6_RULES_DONE_TIMELY_TRADES_OF_LAST_3_MONTHS}) change_reason = create_new_score_reason(H6_RULES_DONE_TIMELY_TRADES_OF_LAST_3_MONTHS, rule_codes, 'افزایش معاملات موفق در سه ماه گذشته', 'کاهش معاملات موفق در سه ماه گذشته') ds.insert_score_reason(change_reason) print('Histories(H) done_timely_trades_of_last_3_months_h6 change reasons are created.')
def import_rules_history_star_counts_avgs_h9(ds: DataService): # define History(H)' rules of star_counts_avgs master: level 2 rule = create_new_rule(2, 'H', 'H9', ' امتیاز رضایتمندی دریافت شده از طرف مقابل پس از انجام موفقیت آمیز تعامل', 5.56, 50) ds.insert_rule(rule) # define History(H)' rules of star_counts_avgs details: level 3 # WeightedAveStars <= 1 00 H0901P0 کاربر به طور متوسط کمتر مساوی ۱ ستاره کسب کرده است rule = create_new_rule(3, 'H9', 'H0901P0', 'کاربر به طور متوسط کمتر مساوی ۱ ستاره کسب کرده است', 0, 0, 0, 1) ds.insert_rule(rule) rule_codes: List[str] = [rule.code] # 1.001 <= WeightedAveStars ≤ 2 05 H0902P5 کاربر به طور متوسط بیش از ۱ و کمتر مساوی ۲ ستاره کسب کرده است rule = create_new_rule(3, 'H9', 'H0902P5', 'کاربر به طور متوسط بیش از ۱ و کمتر مساوی ۲ ستاره کسب کرده است', 0.56, 5, 1.001, 2) ds.insert_rule(rule) rule_codes.append(rule.code) # 2.001 <= WeightedAveStars ≤ 3 10 H0903P10 کاربر به طور متوسط بیش از ۲ و کمتر مساوی ۳ ستاره کسب کرده است rule = create_new_rule(3, 'H9', 'H0903P10', 'کاربر به طور متوسط بیش از ۲ و کمتر مساوی ۳ ستاره کسب کرده است', 1.11, 10, 2.001, 3) ds.insert_rule(rule) rule_codes.append(rule.code) # 3.001 <= WeightedAveStars ≤ 4 30 H0904P30 کاربر به طور متوسط بیش از ۳ و کمتر مساوی ۴ ستاره کسب کرده است rule = create_new_rule(3, 'H9', 'H0904P30', 'کاربر به طور متوسط بیش از ۳ و کمتر مساوی ۴ ستاره کسب کرده است', 3.33, 30, 3.001, 4) ds.insert_rule(rule) rule_codes.append(rule.code) # 4.001 <= WeightedAveStars ≤ 5 50 H0905P50 کاربر به طور متوسط بیش از ۴ و کمتر مساوی ۵ ستاره کسب کرده است rule = create_new_rule(3, 'H9', 'H0905P50', 'کاربر به طور متوسط بیش از ۴ و کمتر مساوی ۵ ستاره کسب کرده است', 5.56, 50, 4.001, 5) ds.insert_rule(rule) rule_codes.append(rule.code) print('Histories(H) star_counts_avgs_h9 rules are created.') ds.delete_score_reasons({RULE_MASTER_CODE: H9_RULES_PROFILE_STAR_COUNTS_AVGS}) change_reason = create_new_score_reason(H9_RULES_PROFILE_STAR_COUNTS_AVGS, rule_codes, 'افزایش امتیاز رضایتمندی دریافت شده از طرفین معاملات', 'کاهش امتیاز رضایتمندی دریافت شده از طرفین معاملات') ds.insert_score_reason(change_reason) print('Histories(H) star_counts_avgs_h9 change reasons are created.')
def import_rules_timeliness_suspicious_loans_total_count_t35(ds: DataService): # define Timeliness(T)' rules of done_arrear_trades_of_last_3_months master: level 2 rule = create_new_rule(2, 'T', 'T35', 'تعداد تسهیلات مشکوک الوصول در جریان', 3.89, 30) ds.insert_rule(rule) # define Timeliness(T)' rules of done_arrear_trades_of_last_3_months details: level 3 # DoubfulCollectionLoans = 0 30 T3501P30 کاربر تسهیلات مشکوک الوصول ندارد rule = create_new_rule(3, 'T35', 'T3501P30', 'کاربر تسهیلات مشکوک الوصول ندارد', 3.89, 30, 0, 0) ds.insert_rule(rule) rule_codes: List[str] = [rule.code] # DoubfulCollectionLoans = 1 -20 T3502N20 کاربر 1 تسهیلات مشکوک الوصول دارد rule = create_new_rule(3, 'T35', 'T3502N20', 'کاربر 1 تسهیلات مشکوک الوصول دارد', 2.59, -20, 1, 1) ds.insert_rule(rule) rule_codes.append(rule.code) # DoubfulCollectionLoans = 2 -30 T3503N30 کاربر ۲ تسهیلات مشکوک الوصول دارد rule = create_new_rule(3, 'T35', 'T3503N30', 'کاربر ۲ تسهیلات مشکوک الوصول دارد', 3.89, -30, 2, 2) ds.insert_rule(rule) rule_codes.append(rule.code) # DoubfulCollectionLoans = 3 -40 T3504N40 کاربر ۳ تسهیلات مشکوک الوصول دارد rule = create_new_rule(3, 'T35', 'T3504N40', 'کاربر ۳ تسهیلات مشکوک الوصول دارد', 5.19, -40, 3, 3) ds.insert_rule(rule) rule_codes.append(rule.code) # DoubfulCollectionLoans >= 4 -50 T3505N50 کاربر بیش از ۳ تسهیلات مشکوک الوصول دارد rule = create_new_rule(3, 'T35', 'T3505N50', 'کاربر بیش از ۳ تسهیلات مشکوک الوصول دارد', 6.48, -50, 4, rules_max_val) ds.insert_rule(rule) rule_codes.append(rule.code) print('Timeliness(T) suspicious_loans_total_count_t35 rules are created.') ds.delete_score_reasons({RULE_MASTER_CODE: T35_RULES_LOAN_SUSPICIOUS_TOTAL_COUNTS}) change_reason = create_new_score_reason(T35_RULES_LOAN_SUSPICIOUS_TOTAL_COUNTS, rule_codes, 'کاهش تعداد تسهیلات مشکوک الوصول در جریان', 'افزایش تعداد تسهیلات مشکوک الوصول در جریان') ds.insert_score_reason(change_reason) print('Timeliness(T) suspicious_loans_total_count_t35 change reasons are created.')
def import_rules_history_loans_total_count_h11(ds: DataService): # define History(H)' rules of undone_undue_trades_counts master: level 2 rule = create_new_rule(2, 'H', 'H11', 'تعداد کل تسهیلات بانکی در جریان', 2.22, 20) ds.insert_rule(rule) # define History(H)' rules of undone_undue_trades_counts details: level 3 # Loans = 0 00 H1101P0 کاربر هیچگونه تسهیلات در جریان ندارد rule = create_new_rule(3, 'H11', 'H1101P0', 'کاربر هیچگونه تسهیلات در جریان ندارد', 0, 0, 0, 0) ds.insert_rule(rule) rule_codes: List[str] = [rule.code] # Loans = 1 20 H1102P20 کاربر ۱ تسهیلات در جریان دارد rule = create_new_rule(3, 'H11', 'H1102P20', 'کاربر ۱ تسهیلات در جریان دارد', 2.22, 20, 1, 1) ds.insert_rule(rule) rule_codes.append(rule.code) ds.delete_score_reasons({RULE_MASTER_CODE: H11_RULES_LOAN_TOTAL_COUNTS}) change_reason = create_new_score_reason(H11_RULES_LOAN_TOTAL_COUNTS, rule_codes, 'افزایش امکان سنجش رفتار اعتباری کاربر از طریق اخذ تسهیلات بانکی', 'کاهش امکان سنجش رفتار اعتباری کاربر به دلیل اتمام تسهیلات بانکی') ds.insert_score_reason(change_reason) print('Histories(H) loans_total_count_h11 part-1 change reasons are created.') # Loans = 2 10 H1103P10 کاربر ۲ تسهیلات در جریان دارد rule = create_new_rule(3, 'H11', 'H1103P10', 'کاربر ۲ تسهیلات در جریان دارد', 1.11, 10, 2, 2) ds.insert_rule(rule) rule_codes.append(rule.code) # Loans = 3 01 H1104P1 کاربر ۳ تسهیلات در جریان دارد rule = create_new_rule(3, 'H11', 'H1104P1', 'کاربر ۳ تسهیلات در جریان دارد', 0.11, 1, 3, 3) ds.insert_rule(rule) rule_codes.append(rule.code) # Loans = 4 -20 H1105N20 کاربر ۴ تسهیلات در جریان دارد rule = create_new_rule(3, 'H11', 'H1105N20', 'کاربر ۴ تسهیلات در جریان دارد', 2.22, -20, 4, 4) ds.insert_rule(rule) rule_codes.append(rule.code) # Loans = 5 -30 H1106N30 کاربر ۵ تسهیلات در جریان دارد rule = create_new_rule(3, 'H11', 'H1106N30', 'کاربر ۵ تسهیلات در جریان دارد', 3.33, -30, 5, 5) ds.insert_rule(rule) rule_codes.append(rule.code) # Loans >= 6 -50 H1107N50 کاربر بیش از ۵ تسهیلات در جریان دارد rule = create_new_rule(3, 'H11', 'H1107N50', 'کاربر بیش از ۵ تسهیلات در جریان دارد', 5.56, -50, 6, rules_max_val) ds.insert_rule(rule) rule_codes.append(rule.code) print('Histories(H) loans_total_count_h11 rules are created.') change_reason = create_new_score_reason(H11_RULES_LOAN_TOTAL_COUNTS, rule_codes, 'کاهش تعداد تسهیلات بانکی در جریان', 'افزایش تعداد تسهیلات بانکی در جریان') ds.insert_score_reason(change_reason) print('Histories(H) loans_total_count_h11 part-2 change reasons are created.')
def import_rules_identity_has_kycs_i1(ds: DataService): # define Identities(I)' rules of kycs master: level 2 rule = create_new_rule(2, 'I', 'I1', 'احراز هویت', 4) ds.insert_rule(rule) # define Identities(I)' rules of kycs details: level 3 # KYC = Yes 40 I0101P40 %4 احراز هویت نهایی از طریق استعلام ثبت احوال rule = create_new_rule(3, 'I1', 'I0101P40', 'احراز هویت نهایی از طریق استعلام ثبت احوال', 4, 40, 1) ds.insert_rule(rule) rule_codes: List[str] = [rule.code] # KYC = No 00 I0102P0 0% عدم احراز هویت rule = create_new_rule(3, 'I1', 'I0102P0', 'عدم احراز هویت', 0, 0, 0) ds.insert_rule(rule) rule_codes.append(rule.code) print('Identities(I) has_kycs_i1 rules are created.') ds.delete_score_reasons({RULE_MASTER_CODE: I1_RULES_PROFILE_HAS_KYCS}) change_reason = create_new_score_reason( I1_RULES_PROFILE_HAS_KYCS, rule_codes, 'احراز هویت نهایی از طریق استعلام ثبت احوال') ds.insert_score_reason(change_reason) print('Identities(I) has_kycs_i1 change reasons are created.')
def import_rules_history_membership_days_counts_h5(ds: DataService): # define History(H)' rules of membership_days master: level 2 rule = create_new_rule(2, 'H', 'H5', 'مدت زمان عضویت فعال', 6.67, 60) ds.insert_rule(rule) # define History(H)' rules of membership_days details: level 3 # Just Registered MembershipDaysWithAtleast1SD == 0 00 H0501P0 عضو جدید rule = create_new_rule(3, 'H5', 'H0501P0', 'عضو جدید', 0, 0, 0) ds.insert_rule(rule) rule_codes: List[str] = [rule.code] # 1 <= MembershipDaysWithAtleast1SD ≤ 90 10 H0502P10 عضویت بین 1 تا 90 روز rule = create_new_rule(3, 'H5', 'H0502P10', ' عضویت بین 1 تا 90 روز', 1.11, 10, 1, 90) ds.insert_rule(rule) rule_codes.append(rule.code) # 91 <= MembershipDaysWithAtleast3SD ≤ 180 20 H0503P20 عضویت بین 91 تا 180 روز rule = create_new_rule(3, 'H5', 'H0503P20', 'عضویت بین 91 تا 180 روز', 2.22, 20, 91, 180) ds.insert_rule(rule) rule_codes.append(rule.code) # 181 <= MembershipDaysWithAtleast5SD ≤ 365 30 H0504P30 عضویت بین 181 تا 365 روز rule = create_new_rule(3, 'H5', 'H0504P30', ' عضویت بین 181 تا 365 روز', 3.33, 30, 181, 365) ds.insert_rule(rule) rule_codes.append(rule.code) # 366 <= MembershipDaysWithAtleast10SD ≤ 720 40 H0505P40 عضویت بین 366 تا 720 روز rule = create_new_rule(3, 'H5', 'H0505P40', ' عضویت بین 366 تا 720 روز', 4.44, 40, 366, 720) ds.insert_rule(rule) rule_codes.append(rule.code) # 721 <= MembershipDaysWithAtleast15SD ≤ 1080 50 H0506P50 عضویت بین 721 تا 1080 روز rule = create_new_rule(3, 'H5', 'H0506P50', ' عضویت بین 721 تا 1080 روز', 5.50, 50, 721, 1080) ds.insert_rule(rule) rule_codes.append(rule.code) # MembershipDaysWithAtleast20SD >= 1081 60 H0507P60 عضویت بیش از 1081 روز rule = create_new_rule(3, 'H5', 'H0507P60', ' عضویت بیش از 1081 روز', 6.67, 60, 1081, rules_max_val) ds.insert_rule(rule) rule_codes.append(rule.code) print('Histories(H) membership_days_counts_h5 rules are created.') ds.delete_score_reasons({RULE_MASTER_CODE: H5_RULES_PROFILE_MEMBERSHIP_DAYS_COUNTS}) change_reason = create_new_score_reason(H5_RULES_PROFILE_MEMBERSHIP_DAYS_COUNTS, rule_codes, 'افزایش مدت عضویت فعال') ds.insert_score_reason(change_reason) print('Histories(H) membership_days_counts_h5 change reasons are created.')
def import_rule_history_master(ds: DataService): # Delete all histories(H) rules l2_rules: {Rule} = ds.get_rules({PARENT: HISTORIES}) for r in l2_rules: # delete all l3_rules ds.delete_rules({PARENT: r[CODE]}) # delete all l2_rules ds.delete_rules({PARENT: HISTORIES}) # delete the l1_rule ds.delete_rules({CODE: HISTORIES}) print('Histories(H) rules are deleted.') # define Identities(I)' rules master: level 1 rule = create_new_rule(1, None, 'H', 'سوابق تعاملات', 30, 270) ds.insert_rule(rule) print('Histories(H) master rule is created.')
def import_rule_timeliness_master(ds: DataService): # Delete all Timeliness(T) rules l2_rules: {Rule} = ds.get_rules({PARENT: TIMELINESS}) for r in l2_rules: # delete all l3_rules ds.delete_rules({PARENT: r[CODE]}) # delete all l2_rules ds.delete_rules({PARENT: TIMELINESS}) # delete the l1_rule ds.delete_rules({CODE: TIMELINESS}) print('Timeliness(T) rules are deleted.') # define Timeliness(T)' rules master: level 1 # rule.drop_collection() rule = create_new_rule(1, None, 'T', 'انجام به موقع تعهدات', 35, 270) ds.insert_rule(rule) print('Timeliness(T) master rule is created.')
def import_rule_identity_master(ds: DataService): # Delete all identities(I) rules # l2_rules: [Rule] = Rule.objects(Q(parent='I')) l2_rules: {Rule} = ds.get_rules({PARENT: IDENTITIES}) for r in l2_rules: # l3_rules: [Rule] = Rule.objects(Q(parent=r.code)) # l3_rules.delete() ds.delete_rules({PARENT: r[CODE]}) # l2_rules.delete() ds.delete_rules({PARENT: IDENTITIES}) # l1_rule = Rule.objects(Q(code='I')) # l1_rule.delete() ds.delete_rules({CODE: IDENTITIES}) print('Identities(I) rules are deleted.') # define Identities(I)' rules master: level 1 rule = create_new_rule(1, None, 'I', 'اطلاعات هویتی', 10, 100) ds.insert_rule(rule) print('Identities(I) master rule is created.')
def import_rules_timeliness_undone_arrear_trades_counts_t27(ds: DataService): # define Timeliness(T)' rules of done_arrear_trades_of_last_3_months master: level 2 rule = create_new_rule(2, 'T', 'T27', 'تعداد تعاملات معوق (بیش از 30 روز تاخیر) خاتمه نیافته', 2.59, 20) ds.insert_rule(rule) # define Timeliness(T)' rules of done_arrear_trades_of_last_3_months details: level 3 # UnfinishedA30DayDelay = 0 20 T2701P20 کاربر در سه ماه گذشته هیچ تعامل سررسید گذشتهای نداشته است rule = create_new_rule(3, 'T27', 'T2701P20', 'کاربر در سه ماه گذشته هیچ تعامل سررسید گذشتهای نداشته است', 2.59, 20, 0, 0) ds.insert_rule(rule) rule_codes: List[str] = [rule.code] # UnfinishedA30DayDelay = 1 -20 T2702N20 کاربر در سه ماه گذشته یک سررسید گذشته داشته است rule = create_new_rule(3, 'T27', 'T2702N20', 'کاربر در سه ماه گذشته یک سررسید گذشته داشته است', 2.59, -20, 1, 1) ds.insert_rule(rule) rule_codes.append(rule.code) # 2 <= UnfinishedA30DayDelay ≤ 3 -30 T2703N30 کاربر در سه ماه گذشته بین 2 تا 3 تعامل سررسید گذشته داشته است rule = create_new_rule(3, 'T27', 'T2703N30', 'کاربر در سه ماه گذشته بین 2 تا 3 تعامل سررسید گذشته داشته است', 3.89, -30, 2, 3) ds.insert_rule(rule) rule_codes.append(rule.code) # 4 <= UnfinishedA30DayDelay ≤ 6 -40 T2704N40 کاربر در سه ماه گذشته بین 4 تا 6 تعامل سررسید گذشته داشته است rule = create_new_rule(3, 'T27', 'T2704N40', 'کاربر در سه ماه گذشته بین 4 تا 6 تعامل سررسید گذشته داشته است', 5.19, -40, 4, 6) ds.insert_rule(rule) rule_codes.append(rule.code) # 7 <= UnfinishedA30DayDelay ≤ 10 -50 T2705N50 کاربر در سه ماه گذشته بین 7 تا 10 تعامل سررسید گذشته داشته است rule = create_new_rule(3, 'T27', 'T2705N50', 'کاربر در سه ماه گذشته بین 7 تا 10 تعامل سررسید گذشته داشته است', 6.48, -50, 7, 10) ds.insert_rule(rule) rule_codes.append(rule.code) # UnfinishedA30DayDelay >= 11 -60 T2706N60 کاربر در سه ماه گذشته بیش از 10 تعامل سررسید گذشته داشته است rule = create_new_rule(3, 'T27', 'T2706N60', 'کاربر در سه ماه گذشته بیش از 10 تعامل سررسید گذشته داشته است', 7.78, -60, 11, rules_max_val) ds.insert_rule(rule) rule_codes.append(rule.code) print('Timeliness(T) undone_arrear_trades_counts_t27 rules are created.') ds.delete_score_reasons({RULE_MASTER_CODE: T27_RULES_UNDONE_ARREAR_TRADES_COUNTS}) change_reason = create_new_score_reason(T27_RULES_UNDONE_ARREAR_TRADES_COUNTS, rule_codes, 'کاهش تعداد معاملات معوق خاتمه نیافته در سه ماه گذشته', 'افزایش تعداد معاملات معوق خاتمه نیافته در سه ماه گذشته') ds.insert_score_reason(change_reason) print('Timeliness(T) undone_arrear_trades_counts_t27 change reasons are created.')
def import_rules_timeliness_done_past_due_trades_between_last_3_to_12_months_t23(ds: DataService): # define Timeliness(T)' rules of done_past_due_trades_between_last_3_to_12_months master: level 2 rule = create_new_rule(2, 'T', 'T23', 'تعداد تعاملات سررسید گذشته (کمتر از 30 روز تاخیر) خاتمه یافته در ۳ تا ۱۲ ماه گذشته', 2.59, 20) ds.insert_rule(rule) # define Timeliness(T)' rules of done_past_due_trades_between_last_3_to_12_months details: level 3 # B30DayDelayLast3-12M = 0 20 T2301P20 کاربر در یکسال گذشته هیچ تعامل سررسید گذشتهای نداشته است rule = create_new_rule(3, 'T23', 'T2301P20', 'کاربر در یکسال گذشته هیچ تعامل سررسید گذشتهای نداشته است', 2.59, 20, 0, 0) ds.insert_rule(rule) rule_codes: List[str] = [rule.code] # B30DayDelayLast3-12M = 1 15 T2302P15 کاربر در یکسال گذشته 1 تعامل سررسید گذشته داشته است rule = create_new_rule(3, 'T23', 'T2302P15', 'کاربر در یکسال گذشته 1 تعامل سررسید گذشته داشته است', 1.94, 15, 1, 1) ds.insert_rule(rule) rule_codes.append(rule.code) # 2 <= B30DayDelayLast3-12M ≤ 3 05 T2303P5 کاربر در یکسال گذشته بین 2 تا 3 تعامل سررسید گذشته داشته است rule = create_new_rule(3, 'T23', 'T2303P5', 'کاربر در یکسال گذشته بین 2 تا 3 تعامل سررسید گذشته داشته است', 0.65, 5, 2, 3) ds.insert_rule(rule) rule_codes.append(rule.code) # 4 <= B30DayDelayLast3-12M ≤ 6 -10 T2304N10 کاربر در یکسال گذشته بین 4 تا 6 تعامل سررسید گذشته داشته است rule = create_new_rule(3, 'T23', 'T2304N10', 'کاربر در یکسال گذشته بین 4 تا 6 تعامل سررسید گذشته داشته است', 1.30, -10, 4, 6) ds.insert_rule(rule) rule_codes.append(rule.code) # 7 <= B30DayDelayLast3-12M ≤ 10 -15 T2305N15 کاربر در یکسال گذشته بین 7 تا 10 تعامل سررسید گذشته داشته است rule = create_new_rule(3, 'T23', 'T2305N15', 'کاربر در یکسال گذشته بین 7 تا 10 تعامل سررسید گذشته داشته است', 1.94, -15, 7, 10) ds.insert_rule(rule) rule_codes.append(rule.code) # B30DayDelayLast3-12M >= 11 -20 T2306N20 کاربر در یکسال گذشته بیش از 10 تعامل سررسید گذشته داشته است rule = create_new_rule(3, 'T23', 'T2306N20', 'کاربر در یکسال گذشته بیش از 10 تعامل سررسید گذشته داشته است', 2.59, -20, 11, rules_max_val) ds.insert_rule(rule) rule_codes.append(rule.code) print('Timeliness(T) done_past_due_trades_between_last_3_to_12_months_t23 rules are created.') ds.delete_score_reasons({RULE_MASTER_CODE: T23_RULES_DONE_PAST_DUE_TRADES_BETWEEN_LAST_3_TO_12_MONTHS}) change_reason = create_new_score_reason(T23_RULES_DONE_PAST_DUE_TRADES_BETWEEN_LAST_3_TO_12_MONTHS, rule_codes, 'کاهش تعداد معاملات سررسید گذشته خاتمه یافته در یک سال گذشته', 'افزایش تعداد معاملات سررسید گذشته خاتمه یافته در یک سال گذشته') ds.insert_score_reason(change_reason) print('Timeliness(T) done_past_due_trades_between_last_3_to_12_months_t23 change reasons are created.')
def import_rules_timeliness_done_past_due_trades_of_last_3_months_t22(ds: DataService): # define Timeliness(T)' rules of done_past_due_trades_of_last_3_months master: level 2 rule = create_new_rule(2, 'T', 'T22', 'تعداد تعاملات سررسید گذشته (کمتر از 30 روز تاخیر) خاتمه یافته در ۳ ماه گذشته', 2.59, 20) ds.insert_rule(rule) # define Timeliness(T)' rules of done_past_due_trades_of_last_3_months details: level 3 # B30DayDelayLast3M = 0 20 T2201P20 کاربر در سه ماه گذشته هیچ تعامل سررسید گذشتهای نداشته است rule = create_new_rule(3, 'T22', 'T2201P20', 'کاربر در سه ماه گذشته هیچ تعامل سررسید گذشتهای نداشته است', 2.59, 20, 0, 0) ds.insert_rule(rule) rule_codes: List[str] = [rule.code] # B30DayDelayLast3M = 1 10 T2202P10 کاربر در سه ماه گذشته 1 تعامل سررسید گذشته داشته است rule = create_new_rule(3, 'T22', 'T2202P10', 'کاربر در سه ماه گذشته 1 تعامل سررسید گذشته داشته است', 1.30, 10, 1, 1) ds.insert_rule(rule) rule_codes.append(rule.code) # 2 < B30DayDelayLast3M ≤ 3 00 T2203P0 کاربر در سه ماه گذشته بین 2 تا 3 تعامل سررسید گذشته داشته است rule = create_new_rule(3, 'T22', 'T2203P0', 'کاربر در سه ماه گذشته بین 2 تا 3 تعامل سررسید گذشته داشته است', 0, 0, 2, 3) ds.insert_rule(rule) rule_codes.append(rule.code) # 4 <= B30DayDelayLast3M ≤ 6 -10 T2204N10 کاربر در سه ماه گذشته بین 4 تا 6 تعامل سررسید گذشته داشته است rule = create_new_rule(3, 'T22', 'T2204N10', 'کاربر در سه ماه گذشته بین 4 تا 6 تعامل سررسید گذشته داشته است', 1.30, -10, 4, 6) ds.insert_rule(rule) rule_codes.append(rule.code) # 7 <= B30DayDelayLast3M ≤ 10 -20 T2205N20 کاربر در سه ماه گذشته بین 7 تا 10 تعامل سررسید گذشته داشته است rule = create_new_rule(3, 'T22', 'T2205N20', 'کاربر در سه ماه گذشته بین 7 تا 10 تعامل سررسید گذشته داشته است', 2.59, -20, 7, 10) ds.insert_rule(rule) rule_codes.append(rule.code) # B30DayDelayLast3M >= 11 -30 T2206N30 کاربر در سه ماه گذشته بیش از 10 تعامل سررسید گذشته داشته است rule = create_new_rule(3, 'T22', 'T2206N30', 'کاربر در سه ماه گذشته بیش از 10 تعامل سررسید گذشته داشته است', 3.89, -30, 11, rules_max_val) ds.insert_rule(rule) rule_codes.append(rule.code) print('Timeliness(T) done_past_due_trades_of_last_3_months_t22 rules are created.') ds.delete_score_reasons({RULE_MASTER_CODE: T22_RULES_DONE_PAST_DUE_TRADES_OF_LAST_3_MONTHS}) change_reason = create_new_score_reason(T22_RULES_DONE_PAST_DUE_TRADES_OF_LAST_3_MONTHS, rule_codes, 'کاهش تعداد معاملات سررسید گذشته خاتمه یافته در سه ماه گذشته', 'افزایش تعداد معاملات سررسید گذشته خاتمه یافته در سه ماه گذشته') ds.insert_score_reason(change_reason) print('Timeliness(T) done_past_due_trades_of_last_3_months_t22 change reasons are created.')
def import_rules_history_done_timely_trades_between_last_3_to_12_months_h7(ds: DataService): # define History(H)' rules of done_timely_trades_between_last_3_to_12_months master: level 2 rule = create_new_rule(2, 'H', 'H7', 'تعداد تعاملات موفق در ۳ تا ۱۲ ماه گذشته', 4.44, 40) ds.insert_rule(rule) # define History(H)' rules of done_timely_trades_of_last_3_months details: level 3 # Last1YSD = 0 00 H0701P0 کاربر در یکسال گذشته هیچ تعامل موفقی با سایر کاربران نداشته است rule = create_new_rule(3, 'H7', 'H0701P0', 'کاربر در یکسال گذشته هیچ تعامل موفقی با سایر کاربران نداشته است', 0, 0, 0, 0) ds.insert_rule(rule) rule_codes: List[str] = [rule.code] # Last1YSD = 1 05 H0702P05 کاربر در یکسال گذشته 1 تعامل موفق با سایر کاربران داشته است rule = create_new_rule(3, 'H7', 'H0702P05', 'کاربر در یکسال گذشته 1 تعامل موفق با سایر کاربران داشته است', 0.56, 5, 1, 1) ds.insert_rule(rule) rule_codes.append(rule.code) # 2 <= Last1YSD ≤ 3 10 H0703P10 کاربر در یکسال گذشته بین 2 تا 3 تعامل موفق با سایر کاربران داشته است rule = create_new_rule(3, 'H7', 'H0703P10', 'کاربر در یکسال گذشته بین 2 تا 3 تعامل موفق با سایر کاربران داشته است', 1.11, 10, 2, 3) ds.insert_rule(rule) rule_codes.append(rule.code) # 4 <= Last1YSD ≤ 6 20 H0704P20 کاربر در یکسال گذشته بین 4 تا 6 تعامل موفق با سایر کاربران داشته است rule = create_new_rule(3, 'H7', 'H0704P20', 'کاربر در یکسال گذشته بین 4 تا 6 تعامل موفق با سایر کاربران داشته است', 2.22, 20, 4, 6) ds.insert_rule(rule) rule_codes.append(rule.code) # 7 <= Last1YSD ≤ 10 30 H0705P30 کاربر در یکسال گذشته بین 7 تا 10 تعامل موفق با سایر کاربران داشته است rule = create_new_rule(3, 'H7', 'H0705P30', 'کاربر در یکسال گذشته بین 7 تا 10 تعامل موفق با سایر کاربران داشته است', 3.33, 30, 7, 10) ds.insert_rule(rule) rule_codes.append(rule.code) # Last1YSD >= 11 40 H0706P40 کاربر در یکسال گذشته بیش از 10 تعامل موفق با سایر کاربران داشته است rule = create_new_rule(3, 'H7', 'H0706P40', 'کاربر در یکسال گذشته بیش از 10 تعامل موفق با سایر کاربران داشته است', 4.44, 40, 11, rules_max_val) ds.insert_rule(rule) rule_codes.append(rule.code) print('Histories(H) done_timely_trades_between_last_3_to_12_months_h7 rules are created.') ds.delete_score_reasons({RULE_MASTER_CODE: H7_RULES_DONE_TIMELY_TRADES_BETWEEN_LAST_3_TO_12_MONTHS}) change_reason = create_new_score_reason(H7_RULES_DONE_TIMELY_TRADES_BETWEEN_LAST_3_TO_12_MONTHS, rule_codes, 'افزایش معاملات موفق در یک سال گذشته', 'کاهش معاملات موفق در یک سال گذشته') ds.insert_score_reason(change_reason) print('Histories(H) done_timely_trades_between_last_3_to_12_months_h7 change reasons are created.')
def import_rules_timeliness_done_arrear_trades_between_last_3_to_12_months_t25(ds: DataService): # define Timeliness(T)' rules of done_arrear_trades_of_last_3_months master: level 2 rule = create_new_rule(2, 'T', 'T25', 'تعداد تعاملات معوق (بیش از 30 روز تاخیر) خاتمه یافته در ۳ تا ۱۲ ماه گذشته', 2.59, 20) ds.insert_rule(rule) # define Timeliness(T)' rules of done_arrear_trades_of_last_3_months details: level 3 # 0 <= A30DayDelay3-12M <= 0 20 T2501P20 کاربر در یکسال گذشته هیچ تعامل معوقی نداشته است rule = create_new_rule(3, 'T25', 'T2501P20', 'کاربر در یکسال گذشته هیچ تعامل معوقی نداشته است', 2.59, 20, 0, 0) ds.insert_rule(rule) rule_codes: List[str] = [rule.code] # 1 <= A30DayDelay3-12M <= 1 05 T2502P5 کاربر در یکسال گذشته 1 تعامل معوق داشته است rule = create_new_rule(3, 'T25', 'T2502P5', 'کاربر در یکسال گذشته 1 تعامل معوق داشته است', 0.65, 5, 1, 1) ds.insert_rule(rule) rule_codes.append(rule.code) # 2 <= A30DayDelay3-12M ≤ 3 -05 T2503N5 کاربر در یکسال گذشته بین 2 تا 3 تعامل معوق داشته است rule = create_new_rule(3, 'T25', 'T2503N5', 'کاربر در یکسال گذشته بین 2 تا 3 تعامل معوق داشته است', 0.65, -5, 2, 3) ds.insert_rule(rule) rule_codes.append(rule.code) # 4 <= A30DayDelay3-12M ≤ 6 -10 T2504N10 کاربر در یکسال گذشته بین 4 تا 6 تعامل معوق داشته است rule = create_new_rule(3, 'T25', 'T2504N10', 'کاربر در یکسال گذشته بین 4 تا 6 تعامل معوق داشته است', 1.30, -10, 4, 6) ds.insert_rule(rule) rule_codes.append(rule.code) # 7 <= A30DayDelay3-12M ≤ 10 -20 T2505N20 کاربر در یکسال گذشته بین 7 تا 10 تعامل معوق داشته است rule = create_new_rule(3, 'T25', 'T2505N20', 'کاربر در یکسال گذشته بین 7 تا 10 تعامل معوق داشته است', 2.59, -20, 7, 10) ds.insert_rule(rule) rule_codes.append(rule.code) # 11 <= A30DayDelay3-12M <= 999 -30 T2506N30 کاربر در یکسال گذشته بیش از 10 تعامل معوق داشته است rule = create_new_rule(3, 'T25', 'T2506N30', 'کاربر در یکسال گذشته 10 تعامل معوق داشته است', 3.89, -30, 11, rules_max_val) ds.insert_rule(rule) rule_codes.append(rule.code) print('Timeliness(T) arrear_trades_between_last_3_to_12_months_t25 rules are created.') ds.delete_score_reasons({RULE_MASTER_CODE: T25_RULES_DONE_ARREAR_TRADES_BETWEEN_LAST_3_TO_12_MONTHS}) change_reason = create_new_score_reason(T25_RULES_DONE_ARREAR_TRADES_BETWEEN_LAST_3_TO_12_MONTHS, rule_codes, 'کاهش تعداد معاملات معوق خاتمه یافته در یک سال گذشته', 'افزایش تعداد معاملات معوق خاتمه یافته در یک سال گذشته') ds.insert_score_reason(change_reason) print('Timeliness(T) arrear_trades_between_last_3_to_12_months_t25 change reasons are created.')
def import_rules_timeliness_done_trades_average_delay_days_ratios_t28(ds: DataService): # define Timeliness(T)' rules of done_arrear_trades_of_last_3_months master: level 2 rule = create_new_rule(2, 'T', 'T28', 'نسبت میانگین تاخیر تعاملات کاربر به میانگین تاخیر سایر کاربران', 2.59, 20) ds.insert_rule(rule) # define Timeliness(T)' rules of done_arrear_trades_of_last_3_months details: level 3 # AverageDelayRatio = 0 20 T2801P20 کاربر در انجام تعاملات تاخیر نداشته است rule = create_new_rule(3, 'T28', 'T2801P20', 'کاربر در انجام تعاملات تاخیر نداشته است', 2.59, 20, 0, 0) ds.insert_rule(rule) rule_codes: List[str] = [rule.code] # 0.001 <= AverageDelayRatio ≤ 0.5 10 T2802P10 نسبت بین 0.001 و 0.5 میباشد rule = create_new_rule(3, 'T28', 'T2802P10', 'نسبت بین 0.001 و 0.5 میباشد', 1.30, 10, 0.001, 0.5) ds.insert_rule(rule) rule_codes.append(rule.code) # 0.501 <= AverageDelayRatio ≤ 1 00 T2803P0 نسبت بین 0.501 و 1 میباشد rule = create_new_rule(3, 'T28', 'T2803P0', 'نسبت بین 0.501 و 1 میباشد', 0, 0, 0.501, 1) ds.insert_rule(rule) rule_codes.append(rule.code) # 1.001 <= AverageDelayRatio ≤ 1.5 -10 T2804N10 نسبت بین 1.001 و 1.5 میباشد rule = create_new_rule(3, 'T28', 'T2804N10', 'نسبت بین 1.001 و 1.5 میباشد', 1.30, -10, 1.001, 1.5) ds.insert_rule(rule) rule_codes.append(rule.code) # 1.501 <= AverageDelayRatio ≤ 2 -20 T2805N20 نسبت بین 1.501 و 2 میباشد rule = create_new_rule(3, 'T28', 'T2805N20', 'نسبت بین 1.501 و 2 میباشد', 2.59, -20, 1.501, 2) ds.insert_rule(rule) rule_codes.append(rule.code) # AverageDelayRatio >= 2.001 -30 T2806N30 نسبت بیش از 2 میباشد rule = create_new_rule(3, 'T28', 'T2806N30', 'نسبت بیش از 2 میباشد', 3.89, -30, 2.001, rules_max_val) ds.insert_rule(rule) rule_codes.append(rule.code) print('Timeliness(T) done_trades_average_delay_days_ratios_t28 rules are created.') ds.delete_score_reasons({RULE_MASTER_CODE: T28_RULES_DONE_TRADES_AVERAGE_DELAY_DAYS}) change_reason = create_new_score_reason(T28_RULES_DONE_TRADES_AVERAGE_DELAY_DAYS, rule_codes, 'کاهش تاخیر کاربر در انجام معاملات نسبت به سایر کاربران', 'افزایش تاخیر کاربر در انجام معاملات نسبت به سایر کاربران') ds.insert_score_reason(change_reason) print('Timeliness(T) done_trades_average_delay_days_ratios_t28 change reasons are created.')
def import_rules_history_recommended_to_others_counts_h8(ds: DataService): # define History(H)' rules of recommended_to_others_counts master: level 2 rule = create_new_rule(2, 'H', 'H8', 'پیشنهاد شدن کاربر به سایرین جهت انجام تعامل پس از انجام موفقیت آمیز تعامل', 4.44, 40) ds.insert_rule(rule) # define History(H)' rules of recommended_to_others_counts details: level 3 # Recommendation = 0 00 H0801P0 کاربر توسط کسی پیشنهاد نشده است rule = create_new_rule(3, 'H8', 'H0801P0', 'کاربر توسط کسی پیشنهاد نشده است', 0, 0, 0, 0) ds.insert_rule(rule) rule_codes: List[str] = [rule.code] # Recommendation = 1 10 H0802P10 پیشنهاد شده توسط 1 نفر rule = create_new_rule(3, 'H8', 'H0802P10', 'پیشنهاد شده توسط 1 نفر', 1.11, 10, 1, 1) ds.insert_rule(rule) rule_codes.append(rule.code) # 2 < Recommendation ≤ 3 20 H0803P20 پیشنهاد شده توسط 2 تا 3 نفر rule = create_new_rule(3, 'H8', 'H0803P20', 'پیشنهاد شده توسط 2 تا 3 نفر', 2.22, 20, 2, 3) ds.insert_rule(rule) rule_codes.append(rule.code) # 4 < Recommendation ≤ 10 30 H0804P30 پیشنهاد شده توسط 4 تا 10 نفر rule = create_new_rule(3, 'H8', 'H0804P30', 'پیشنهاد شده توسط 4 تا 10 نفر', 3.33, 30, 4, 10) ds.insert_rule(rule) rule_codes.append(rule.code) # 11 < Recommendation ≤ 30 40 H0805P40 پیشنهاد شده توسط 11 تا 30 نفر rule = create_new_rule(3, 'H8', 'H0805P40', 'پیشنهاد شده توسط 11 تا 30 نفر', 4.44, 40, 11, 30) ds.insert_rule(rule) rule_codes.append(rule.code) # Recommendation > 30 50 H0806P50 پیشنهاد شده توسط بیش از 30 نفر rule = create_new_rule(3, 'H8', 'H0806P50', 'پیشنهاد شده توسط بیش از 30 نفر', 5.56, 50, 30, rules_max_val) ds.insert_rule(rule) rule_codes.append(rule.code) print('Histories(H) recommended_to_others_counts_h8 rules are created.') ds.delete_score_reasons({RULE_MASTER_CODE: H8_RULES_PROFILE_RECOMMENDED_TO_OTHERS_COUNTS}) change_reason = create_new_score_reason(H8_RULES_PROFILE_RECOMMENDED_TO_OTHERS_COUNTS, rule_codes, 'افزایش پیشنهادات طرفین معاملات به سایرین جهت انجام معامله با شما', 'کاهش پیشنهادات طرفین معاملات به سایرین جهت انجام معامله با شما') ds.insert_score_reason(change_reason) print('Histories(H) recommended_to_others_counts_h8 change reasons are created.')
def import_rules_timeliness_done_arrear_trades_of_last_3_months_t24(ds: DataService): # define Timeliness(T)' rules of done_arrear_trades_of_last_3_months master: level 2 rule = create_new_rule(2, 'T', 'T24', 'تعداد تعاملات معوق (بیش از 30 روز تاخیر) خاتمه یافته در ۳ ماه گذشته', 2.59, 20) ds.insert_rule(rule) # define Timeliness(T)' rules of done_arrear_trades_of_last_3_months details: level 3 # A30DayDelayLast3M = 0 20 T2401P20 کاربر در سه ماه گذشته هیچ تعامل معوقی نداشته است rule = create_new_rule(3, 'T24', 'T2401P20', 'کاربر در سه ماه گذشته هیچ تعامل معوقی نداشته است', 2.59, 20, 0, 0) ds.insert_rule(rule) rule_codes: List[str] = [rule.code] # A30DayDelayLast3M = 1 00 T2402P0 کاربر در سه ماه گذشته 1 تعامل معوق داشته است rule = create_new_rule(3, 'T24', 'T2402P0', 'کاربر در سه ماه گذشته 1 تعامل معوق داشته است', 0, 0, 1, 1) ds.insert_rule(rule) rule_codes.append(rule.code) # 2 <= A30DayDelayLast3M ≤ 3 -10 T2403N10 کاربر در سه ماه گذشته بین 2 تا 3 تعامل معوق داشته است rule = create_new_rule(3, 'T24', 'T2403N10', 'کاربر در سه ماه گذشته بین 2 تا 3 تعامل معوق داشته است', 1.30, -10, 2, 3) ds.insert_rule(rule) rule_codes.append(rule.code) # 4 <= A30DayDelayLast3M ≤ 6 -20 T2404N20 کاربر در سه ماه گذشته بین 4 تا 6 تعامل معوق داشته است rule = create_new_rule(3, 'T24', 'T2404N20', 'کاربر در سه ماه گذشته بین 4 تا 6 تعامل معوق داشته است', 2.59, -20, 4, 6) ds.insert_rule(rule) rule_codes.append(rule.code) # 7 <= A30DayDelayLast3M ≤ 10 -30 T2405N30 کاربر در سه ماه گذشته بین 7 تا 10 تعامل معوق داشته است rule = create_new_rule(3, 'T24', 'T2405N30', 'کاربر در سه ماه گذشته بین 7 تا 10 تعامل معوق داشته است', 3.89, -30, 7, 10) ds.insert_rule(rule) rule_codes.append(rule.code) # 11 <= A30DayDelayLast3M <= 999 -40 T2406N40 کاربر در سه ماه گذشته بیش از 10 تعامل معوق داشته است rule = create_new_rule(3, 'T24', 'T2406N40', 'کاربر در سه ماه گذشته بیش از 10 تعامل معوق داشته است', 5.19, -40, 11, 999) ds.insert_rule(rule) rule_codes.append(rule.code) print('Timeliness(T) done_arrear_trades_of_last_3_months_t24 rules are created.') ds.delete_score_reasons({RULE_MASTER_CODE: T24_RULES_DONE_ARREAR_TRADES_OF_LAST_3_MONTHS}) change_reason = create_new_score_reason(T24_RULES_DONE_ARREAR_TRADES_OF_LAST_3_MONTHS, rule_codes, 'کاهش تعداد معاملات معوق خاتمه یافته در سه ماه گذشته', 'افزایش تعداد معاملات معوق خاتمه یافته در سه ماه گذشته') ds.insert_score_reason(change_reason) print('Timeliness(T) done_arrear_trades_of_last_3_months_t24 change reasons are created.')
def import_rules_identity_military_service_status_i2(ds: DataService): # define Identities(I)' rules of military_service master: level 2 rule = create_new_rule(2, 'I', 'I2', 'خدمت وظیفه عمومی', 2) ds.insert_rule(rule) # define Identities(I)' rules of military_service details: level 3 # MilServiceFinished/Exempted/Ongoing 20 2% I0201P20 پایان خدمت rule = create_new_rule(3, 'I2', 'I0201P20', 'پایان خدمت', 2, 20, ProfileMilitaryServiceStatusEnum.FINISHED.value) ds.insert_rule(rule) rule_codes: List[str] = [rule.code] # MilServiceFinished/Exempted/Ongoing 20 2% I0202P20 معافیت rule = create_new_rule(3, 'I2', 'I0202P20', 'معافیت', 2, 20, ProfileMilitaryServiceStatusEnum.EXEMPTED.value) ds.insert_rule(rule) rule_codes.append(rule.code) # MilServiceFinished/Exempted/Ongoing 20 2% I0203P20 در حال خدمت rule = create_new_rule(3, 'I2', 'I0203P20', 'در حال خدمت', 2, 20, ProfileMilitaryServiceStatusEnum.ONGOING.value) ds.insert_rule(rule) rule_codes.append(rule.code) # MilServiceSubjected 00 I0204P0 0% مشمول غیر غایب rule = create_new_rule(3, 'I2', 'I0204P0', 'مشمول غیر غایب', 2, 20, ProfileMilitaryServiceStatusEnum.SUBJECTED.value) ds.insert_rule(rule) rule_codes.append(rule.code) # MilServiceAbsent -50 I0205N50 -5% غایب rule = create_new_rule(3, 'I2', 'I0205N50', 'غایب', 5, -50, ProfileMilitaryServiceStatusEnum.ABSENT.value) ds.insert_rule(rule) rule_codes.append(rule.code) print('Identities(I) military_service_status_i2 rules are created.') ds.delete_score_reasons( {RULE_MASTER_CODE: I2_RULES_PROFILE_MILITARY_SERVICE_STATUS}) change_reason = create_new_score_reason( I2_RULES_PROFILE_MILITARY_SERVICE_STATUS, rule_codes, 'بهبود وضعیت خدمت وظیفه عمومی', 'تنزل وضعیت خدمت وظیفه عمومی') ds.insert_score_reason(change_reason) print( 'Identities(I) military_service_status_i2 change reasons are created.')
def import_rules_history_undone_undue_trades_counts_h10(ds: DataService): # define History(H)' rules of undone_undue_trades_counts master: level 2 rule = create_new_rule(2, 'H', 'H10', 'تعداد تعاملات جاری سررسید نشده', 1.11, 10) ds.insert_rule(rule) # define History(H)' rules of undone_undue_trades_counts details: level 3 # NumNotDueDeal = 0 00 H1001P0 کاربر تعامل سررسید نشده ندارد rule = create_new_rule(3, 'H10', 'H1001P0', 'کاربر تعامل سررسید نشده ندارد', 0, 0, 0, 0) ds.insert_rule(rule) rule_codes: List[str] = [rule.code] # NumNotDueDeal = 1 02 H1002P2 کاربر 1 تعامل سررسید نشده دارد rule = create_new_rule(3, 'H10', 'H1002P2', 'کاربر 1 تعامل سررسید نشده دارد', 0.22, 2, 1, 1) ds.insert_rule(rule) rule_codes.append(rule.code) # NumNotDueDeal = 2 05 H1003P5 کاربر 2 تعامل سررسید نشده دارد rule = create_new_rule(3, 'H10', 'H1003P5', 'کاربر 2 تعامل سررسید نشده دارد', 0.56, 5, 2, 2) ds.insert_rule(rule) rule_codes.append(rule.code) # NumNotDueDeal = 3 7 H1004P7 کاربر 3 تعامل سررسید نشده دارد rule = create_new_rule(3, 'H10', 'H1004P7', 'کاربر 3 تعامل سررسید نشده دارد', 0.78, 7, 3, 3) ds.insert_rule(rule) rule_codes.append(rule.code) # NumNotDueDeal = 4 10 H1005P10 کاربر 4 تعامل سررسید نشده دارد rule = create_new_rule(3, 'H10', 'H1005P10', 'کاربر 4 تعامل سررسید نشده دارد', 1.11, 10, 4, 4) ds.insert_rule(rule) rule_codes.append(rule.code) ds.delete_score_reasons({RULE_MASTER_CODE: H10_RULES_UNDONE_UNDUE_TRADES_COUNTS}) change_reason = create_new_score_reason(H10_RULES_UNDONE_UNDUE_TRADES_COUNTS, rule_codes, 'افزایش امکان سنجش رفتار اعتباری کاربر از طریق افزایش معاملات جاری', 'کاهش امکان سنجش رفتار اعتباری کاربر به دلیل کاهش معاملات جاری') ds.insert_score_reason(change_reason) print('Histories(H) undone_undue_trades_counts_h10 part1 change reasons are created.') # NumNotDueDeal = 5 03 H1006P3 کاربر 5 تعامل سررسید نشده دارد rule = create_new_rule(3, 'H10', 'H1006P3', 'کاربر 5 تعامل سررسید نشده دارد', 0.33, 3, 5, 5) ds.insert_rule(rule) rule_codes: List[str] = [rule.code] # NumNotDueDeal = 6 -1 H1007N1 کاربر 6 تعامل سررسید نشده دارد rule = create_new_rule(3, 'H10', 'H1007N1', 'کاربر 6 تعامل سررسید نشده دارد', 0.11, -1, 6, 6) ds.insert_rule(rule) rule_codes.append(rule.code) # 7 <= NumNotDueDeal ≤ 10 -10 H1008N10 کاربر بین 7 تا 10 تعامل سررسید نشده دارد rule = create_new_rule(3, 'H10', 'H1008N10', 'کاربر بین 7 تا 10 تعامل سررسید نشده دارد', 1.11, -10, 7, 10) ds.insert_rule(rule) rule_codes.append(rule.code) # 11 <= NumNotDueDeal ≤ 20 -20 H1009N20 کاربر بین 11 تا 20 تعامل سررسید نشده دارد rule = create_new_rule(3, 'H10', 'H1009N20', 'کاربر بین 11 تا 20 تعامل سررسید نشده دارد', 2.22, -20, 11, 20) ds.insert_rule(rule) rule_codes.append(rule.code) # 21 <= NumNotDueDeal ≤ 30 -30 H1010N30 کاربر بین 21 تا 30 تعامل سررسید نشده دارد rule = create_new_rule(3, 'H10', 'H1010N30', 'کاربر بین 21 تا 30 تعامل سررسید نشده دارد', 3.33, -30, 21, 30) ds.insert_rule(rule) rule_codes.append(rule.code) # NotDueDeal >= 31 -50 H1011N50 کاربر بیش از 30 تعامل سررسید نشده دارد rule = create_new_rule(3, 'H10', 'H1011N50', 'کاربر بیش از 30 تعامل سررسید نشده دارد', 5.56, -50, 31, 999) ds.insert_rule(rule) rule_codes.append(rule.code) print('Histories(H) undone_undue_trades_counts_h10 rules are created.') change_reason = create_new_score_reason(H10_RULES_UNDONE_UNDUE_TRADES_COUNTS, rule_codes, 'کاهش تعداد معاملات جاری', 'افزایش بیش از حد تعداد معاملات جاری') ds.insert_score_reason(change_reason) print('Histories(H) undone_undue_trades_counts_h10 part2 change reasons are created.')