コード例 #1
0
 def __init__(self, env, serial_no, mongdb='skynet'):
     self.env = env
     self.mysql = MysqlUntil(env=self.env)
     self.mongo = MongoUntil(self.env)
     result = self.mongo.query_by_user_id(mongdb, "skynet_user_info", {"serial_no": serial_no})
     if not result:
         return
     self.result = result[0]
     self.customer_id = self.result.get('customer_id')
     self.user_id = self.result.get('user_id')
     self.user_name = factor_decrypt_identity(self.result.get('encryption_user_name'))
     self.event_time = self.result.get('event_time')
     self.cert_id = factor_decrypt_identity(self.result.get('encryption_cert_id'))
     self.phone = factor_decrypt_identity(self.result.get('encryption_phone'))
     self.create_time = self.result.get('create_time')
     if self.result.get('event_time'):
         self.event_time_add8h = self.result.get('event_time') + timedelta(hours=8)
     self.product_code = self.result.get('product_code')
     self.scene_code = self.result.get('scene_code')
     if self.result.get('data',{}):
         self.old_user_id = self.result.get('data',{}).get('oldUserId')
         self.colleagueContact = self.result.get('data', {}).get('colleagueContact')
         self.relativeContact = self.result.get('data', {}).get('relativeContact')
         self.friendContact = self.result.get('data', {}).get('friendContact')
         self.homeAddress = self.result.get('data', {}).get('homeAddress')
         self.unitsName =self.result.get('data', {}).get('unitsName')
         self.unitsAddress=self.result.get('data',{}).get('unitsAddress')
コード例 #2
0
 def __init__(self, env, serial_no):
     """
     :param env: 环境
     :param serial_no: 序列号
     """
     self.mongo = MongoUntil(env)
     self.serial_no = serial_no
コード例 #3
0
ファイル: FactorInit.py プロジェクト: xiaominwanglast/factnew
    def __init__(self, env, serial_no):
        self.env = env
        self.serial_no = serial_no
        self.info = InfoHelper(env=self.env, serial_no=self.serial_no)
        self.mysql = MysqlUntil(env=self.env)
        self.mongo = MongoUntil(env=self.env)

        #TODO 立即贷产品编号为10002
        #TODO 随心借产品编号为102
        #TODO 卡带王产品编号为101
        #TODO 即刻贷产品编号10002(老产品)
        #TODO 贷款王茶品编号很多,名单库使用100(老产品)
        #TODO 2345借款产品编号108
        # TODO 畅借款产品编号109z

        self.ql_product_id = 109
        self.ljd_product_id = 10002
        self.sxj_product_id = 102
        self.kdw_product_id = 101
        self.rota_jkd_product_id = 10002
        self.rota_dkw_product_id = 100
        self.JK_product_id = 108

        #TODO 立即贷产品code为vip_code
        #TODO 随心借产品code为sxj_code
        #TODO 卡带王产品code为kdw_code
        self.ljd_product_code = "vip_code"
        self.sxj_product_code = "sxj_code"
        self.kdw_product_code = "kdw_code"
        self.JK_product_code = 'jk_code'
        self.QL_product_code = 'ql_loan'

        #TODO -9999999:风控可接受的不可抗异常,比如:调用外部黑名单超时,设置因子为self.SET_DEFAULT_VALUE_INT_9999999,这样风控可以决定是过还是拒,而不是卡件;
        #TODO -9999998:分母为零的情况;
        #TODO -9999997:性能取舍,如:根据用户设备号获取同设备号用户的逾期情况时,同设备号匹配到的用户过多,无法在要求时间内计算出结果,评估影响后,当匹配到用户数大于999时,直接设置因子值为-9999997
        #TODO -9999996:脏数据,如:1、用户的身份证号为空(而根据业务逻辑身份证号本不应该为空);2、外部数据调用时返回的分数字段为空(本不应该为空的)
        #TODO -9999995:客观上不满足因子计算条件,如:用户登录间隔,但是用户只登陆了一次;
        #TODO -8888888:程序无法处理的异常,未知异常等,发生这些异常卡件,如:数据库查询失败、远程接口调用失败;
        self.SET_DEFAULT_VALUE_INT_9999999 = -9999999
        self.SET_DEFAULT_VALUE_INT_9999998 = -9999998
        self.SET_DEFAULT_VALUE_INT_9999997 = -9999997
        self.SET_DEFAULT_VALUE_INT_9999996 = -9999996
        self.SET_DEFAULT_VALUE_INT_9999995 = -9999995
        self.SET_DEFAULT_VALUE_INT_8888888 = -8888888

        #TODO 针对异常值为小数时的数据
        self.SET_DEFAULT_VALUE_FLOAT_9999998 = -9999998.0
        self.SET_DEFAULT_VALUE_FLOAT_9999997 = -9999997.0
        self.SET_DEFAULT_VALUE_FLOAT_9999996 = -9999996.0
        self.SET_DEFAULT_VALUE_FLOAT_9999995 = -9999995.0
        self.SET_DEFAULT_VALUE_FLOAT_9999999 = -9999999.0
        self.SET_DEFAULT_VALUE_FLOAT_9999999 = -9999999.0

        #TODO 针对时间的异常值(元年-8H)
        self.SET_DEFAULT_VALUE_STRING_DATETIME = "0000-12-29 16:00:00"

        #TODO 针对数据取0或分数取0.0,数据取1
        self.SET_DEFAULT_VALUE_INT_0 = 0
        self.SET_DEFAULT_VALUE_FLOAT_0 = 0.0
        self.SET_DEFAULT_VALUE_INT_1 = 1
コード例 #4
0
ファイル: RunnerInit.py プロジェクト: xiaominwanglast/factnew
 def decision_status_check(self):
     # pass
     # decision_result=MongoUntil(self.env).query_by_user_id(db='skynet', collection="skynet_decision_result",find={"serial_no": self.serial_no})
     # if not decision_result:
     #     print 'make decision Failure! please check door!'
     #     sys.exit()
     # if decision_result[0].get('status')=='SUCCESS':
     #     if decision_result[0].get('mock'):
     #         print "make decision mock true! Please change mock value to false!"
     #         sys.exit()
     # else:
     #     print "make decision Failure or Waiting! Please check!"
     #     sys.exit()
     decision_result=MongoUntil(self.env).query_by_user_id(db='skynet', collection="skynet_decision_result",find={"serial_no": self.serial_no})
     if not decision_result:
         print 'make decision Failure! please check door!'
         sys.exit()
     if decision_result[0].get('status')=='SUCCESS':
         if decision_result[0].get('mock'):
             print "make decision mock true! Please change mock value to false!"
             sys.exit()
     else:
         print "make decision Failure or Waiting! Please check!"
         sys.exit()
     user_info_result = MongoUntil(self.env).query_by_user_id(db='skynet', collection="skynet_user_info",find={"serial_no": self.serial_no})
     if user_info_result and user_info_result[0].get("scene_code")=="collection":
         return
     decision_result=MongoUntil(self.env).query_by_user_id(db='skynet', collection="skynet_decision_result",find={"serial_no": self.serial_no})
     if not decision_result:
         print 'make decision Failure! please check door!'
         sys.exit()
     if decision_result[0].get('status') in ("SUCCESS","MA_WAITING"):
         if decision_result[0].get('mock'):
             print "make decision mock true! Please change mock value to false!"
             sys.exit()
         if decision_result[0].get('product_code')!='jk_loan' and decision_result[0].get("main_rules").get("freeze_list_rule").get("result")==1:
             print "make decision freezed ! Please remove cerd_id from rota_freeze and take care of redis!"
             sys.exit()
     else:
         print "make decision Failure or Waiting! Please check!"
         sys.exit()