Merge branch 'rac_check_update' of DigiFi/digifi-BankEmulator into master

This commit is contained in:
2025-06-05 14:49:16 +00:00
committed by Gogs
3 changed files with 141 additions and 48 deletions
+38 -9
View File
@@ -1,15 +1,44 @@
from marshmallow import Schema, fields
from marshmallow import Schema, fields
from datetime import date
class RACItemSchema(Schema):
hasSalaryAccount = fields.Bool(required=True)
bvnValidated = fields.Bool(required=True)
creditBureauCheck = fields.Bool(required=True)
crmsCheck = fields.Bool(required=True)
accountStatus = fields.Bool(required=True)
hasLien = fields.Bool(required=True)
noBouncedCheck = fields.Bool(required=True)
isWhitelisted = fields.Bool(required=True)
hasPastDueLoan = fields.Bool(required=True)
PROCESS_DATE = fields.Date(required=True, default=date.today)
CIF_ID = fields.Str(required=True)
CUSTOMER_id = fields.Str(required=True)
SALACCT_1 = fields.Str(required=True)
ALERT_PHONE = fields.Str(required=True)
AVERAGE_SALARY = fields.Decimal(required=True, as_string=True)
LOAN_OUSTANDING_BAL = fields.Decimal(required=True, as_string=True)
EMI = fields.Decimal(required=True, as_string=True)
ELIG_AMT = fields.Decimal(required=True, as_string=True)
rule1_45day_sal = fields.Bool(required=True)
rule2_2m_sal = fields.Bool(required=True)
rule3_no_bounced_check = fields.Bool(required=True)
rule4_current_loan_payments = fields.Bool(required=True)
rule5_no_past_due_fadv_loan = fields.Bool(required=True)
rule6_no_past_due_other_loan = fields.Bool(required=True)
rule7_consistent_salary_amount = fields.Bool(required=True)
rule8_whitelisted = fields.Bool(required=True)
rule9_regular_account = fields.Bool(required=True)
rule10_bvn_validation = fields.Bool(required=True)
rule11_CRC_no_delinquency = fields.Bool(required=True)
rule12_CRMS_no_delinquency = fields.Bool(required=True)
rule13_BVN_ignore = fields.Bool(required=True)
rule14_no_lien = fields.Bool(required=True)
rule15_null_ignore = fields.Bool(required=True)
OVERALL_ELIG = fields.Bool(required=True)
SALARYPAYMENT_1 = fields.Decimal(required=True, as_string=True)
SALARYPAYMENT_2 = fields.Decimal(required=True, as_string=True)
SALARYPAYMENT_3 = fields.Decimal(required=True, as_string=True)
SALARYPAYMENT_4 = fields.Decimal(required=True, as_string=True)
SALARYPAYMENT_5 = fields.Decimal(required=True, as_string=True)
SALARYPAYMENT_6 = fields.Decimal(required=True, as_string=True)
# RAC Check Schema
class RACCheckSchema(Schema):
+48 -11
View File
@@ -3,6 +3,8 @@ from marshmallow import ValidationError
from app.utils.logger import logger
from app.api.helpers.response_helper import ResponseHelper
from app.api.schemas.rac_check import RACCheckSchema, RACCheckResponseSchema
from datetime import datetime
from decimal import Decimal
class RACCheckService:
@staticmethod
@@ -24,18 +26,53 @@ class RACCheckService:
validated_data = schema.load(data)
# Simulated RAC check logic — create racResponse manually or via logic
# rac_response = {
# "hasSalaryAccount": True,
# "bvnValidated": True,
# "creditBureauCheck": False,
# "crmsCheck": True,
# "accountStatus": True,
# "hasLien": False,
# "noBouncedCheck": True,
# "isWhitelisted": True,
# "hasPastDueLoan": False
# }
rac_response = {
"hasSalaryAccount": True,
"bvnValidated": True,
"creditBureauCheck": False,
"crmsCheck": True,
"accountStatus": True,
"hasLien": False,
"noBouncedCheck": True,
"isWhitelisted": True,
"hasPastDueLoan": False
"PROCESS_DATE": datetime.strptime("2025-06-05", "%Y-%m-%d").date(),
"CIF_ID": "123456789",
"CUSTOMER_id": "987654321",
"SALACCT_1": "34567831",
"ALERT_PHONE": "2348031234567",
"AVERAGE_SALARY": Decimal("50000"),
"LOAN_OUSTANDING_BAL": Decimal("0"),
"EMI": Decimal("10000"),
"ELIG_AMT": Decimal("25000"),
"rule1-45day-sal": True,
"rule2-2m-sal": True,
"rule3-no-bounced-check": True,
"rule4-current-loan-payments": True,
"rule5-no-past-due-fadv-loan": True,
"rule6--no-past-due-other-loan": True,
"rule7-consistent-salary-amount": True,
"rule8-whitelisted": True,
"rule9-regular-account": True,
"rule10-bvn-validation": True,
"rule11-CRC-no-delinquency": True,
"rule12-CRMS-no-delinquency": True,
"rule13-BVN-ignore": True,
"rule14-no-lien": True,
"rule15-null-ignore": True,
"OVERALL_ELIG": True,
"SALARYPAYMENT_1": Decimal("50000"),
"SALARYPAYMENT_2": Decimal("50000"),
"SALARYPAYMENT_3": Decimal("50000"),
"SALARYPAYMENT_4": Decimal("50000"),
"SALARYPAYMENT_5": Decimal("50000"),
"SALARYPAYMENT_6": Decimal("50000")
}
full_response = {
"transactionId": validated_data["transactionId"],
"customerId": validated_data["customerId"],
@@ -43,8 +80,8 @@ class RACCheckService:
"racResponse": rac_response
}
response_schema = RACCheckResponseSchema()
result = response_schema.dump(full_response)
# response_schema = RACCheckResponseSchema()
result = full_response
return jsonify(result), 200
+55 -28
View File
@@ -16,42 +16,69 @@
"racResponse": {
"type": "object",
"properties": {
"hasSalaryAccount": {
"type": "boolean",
"example": true
"PROCESS_DATE": {
"type": "string",
"format": "date",
"example": "2025-06-05"
},
"bvnValidated": {
"type": "boolean",
"example": true
"CIF_ID": {
"type": "string",
"example": "123456789"
},
"creditBureauCheck": {
"type": "boolean",
"example": true
"CUSTOMER_id": {
"type": "string",
"example": "987654321"
},
"crmsCheck": {
"type": "boolean",
"example": true
"SALACCT_1": {
"type": "string",
"example": "34567831"
},
"accountStatus": {
"type": "boolean",
"example": true
"ALERT_PHONE": {
"type": "string",
"example": "2348031234567"
},
"hasLien": {
"type": "boolean",
"example": true
"AVERAGE_SALARY": {
"type": "number",
"format": "decimal",
"example": 50000
},
"noBouncedCheck": {
"type": "boolean",
"example": true
"LOAN_OUSTANDING_BAL": {
"type": "number",
"format": "decimal",
"example": 0
},
"isWhitelisted": {
"type": "boolean",
"example": true
"EMI": {
"type": "number",
"format": "decimal",
"example": 10000
},
"hasPastDueLoan": {
"type": "boolean",
"example": true
}
"ELIG_AMT": {
"type": "number",
"format": "decimal",
"example": 25000
},
"rule1-45day-sal": { "type": "boolean", "example": true },
"rule2-2m-sal": { "type": "boolean", "example": true },
"rule3-no-bounced-check": { "type": "boolean", "example": true },
"rule4-current-loan-payments": { "type": "boolean", "example": true },
"rule5-no-past-due-fadv-loan": { "type": "boolean", "example": true },
"rule6--no-past-due-other-loan": { "type": "boolean", "example": true },
"rule7-consistent-salary-amount": { "type": "boolean", "example": true },
"rule8-whitelisted": { "type": "boolean", "example": true },
"rule9-regular-account": { "type": "boolean", "example": true },
"rule10-bvn-validation": { "type": "boolean", "example": true },
"rule11-CRC-no-delinquency": { "type": "boolean", "example": true },
"rule12-CRMS-no-delinquency": { "type": "boolean", "example": true },
"rule13-BVN-ignore": { "type": "boolean", "example": true },
"rule14-no-lien": { "type": "boolean", "example": true },
"rule15-null-ignore": { "type": "boolean", "example": true },
"OVERALL_ELIG": { "type": "boolean", "example": true },
"SALARYPAYMENT_1": { "type": "number", "format": "decimal", "example": 50000 },
"SALARYPAYMENT_2": { "type": "number", "format": "decimal", "example": 50000 },
"SALARYPAYMENT_3": { "type": "number", "format": "decimal", "example": 50000 },
"SALARYPAYMENT_4": { "type": "number", "format": "decimal", "example": 50000 },
"SALARYPAYMENT_5": { "type": "number", "format": "decimal", "example": 50000 },
"SALARYPAYMENT_6": { "type": "number", "format": "decimal", "example": 50000 }
}
}
},