[add]: Documentation Update

This commit is contained in:
VivianDee
2025-09-12 13:06:41 +01:00
parent f0679b8c1e
commit 2f3b589420
22 changed files with 459 additions and 571 deletions
+2 -1
View File
@@ -1,2 +1,3 @@
from .simbrella import SimbrellaIntegration
from .kafka import KafkaIntegration
from .kafka import KafkaIntegration
from .events_service import EventServiceIntegration
+49
View File
@@ -0,0 +1,49 @@
import httpx
from app.utils.logger import logger
from app.config import settings
class EventServiceIntegration:
BASE_URL = settings.SIMBRELLA_BASE_URL
ENDPOINT_DIRECT_LOAN = settings.ENDPOINT_DIRECT_LOAN
ENDPOINT_DIRECT_REPAYMENT = settings.ENDPOINT_DIRECT_REPAYMENT
@staticmethod
def direct_loan(transaction_id: str):
"""
Calls the Direct Loan endpoint
"""
url = f"{EventServiceIntegration.BASE_URL}{EventServiceIntegration.ENDPOINT_DIRECT_LOAN}"
payload = {"transactionId": str(transaction_id)}
headers = {
"Content-Type": "application/json"
}
try:
response = httpx.post(url, json=payload, headers=headers, timeout=10.0)
logger.info(f"Loan Response: {response.text}")
return response
except Exception as e:
logger.error(f"Direct Loan API call failed: {str(e)}", exc_info=True)
raise
@staticmethod
def direct_repayment(transaction_id: str):
"""
Calls the Direct Repayment endpoint
"""
url = f"{EventServiceIntegration.BASE_URL}{EventServiceIntegration.ENDPOINT_DIRECT_REPAYMENT}"
payload = {"transactionId": str(transaction_id)}
headers = {
"Content-Type": "application/json",
}
try:
response = httpx.post(url, json=payload, headers=headers, timeout=10.0)
logger.info(f"Repayment Response: {response.text}")
return response
except Exception as e:
logger.error(f"Direct Repayment API call failed: {str(e)}", exc_info=True)
raise
+15 -3
View File
@@ -13,6 +13,7 @@ from app.api.enums import LoanStatus
from app.extensions import db
from datetime import datetime, timezone
from dateutil.relativedelta import relativedelta
from app.api.integrations import EventServiceIntegration
from app.models import LoanRepaymentSchedule
from app.api.services.offer_analysis import OfferAnalysis
from app.api.helpers.response_helper import ResponseHelper
@@ -172,11 +173,15 @@ class ProvideLoanService(BaseService):
"accountId": account_id,
"msisdn": customer.msisdn
}
event_thread = Thread(target=ProvideLoanService.trigger_loan_disbursement, args=(transaction_id,))
event_thread.start()
# KafkaIntegration.send_loan_request(loan_data = response_data, request_id = request_id)
# Call Kafka in a background thread
thread = Thread(target=ProvideLoanService.async_send_to_kafka, args=(response_data, request_id, "PROCESS_PAYMENT"))
thread.start()
kafka_thread = Thread(target=ProvideLoanService.async_send_to_kafka, args=(response_data, request_id, "PROCESS_PAYMENT"))
kafka_thread.start()
db.session.commit()
return ResponseHelper.success(data=response_data)
@@ -195,4 +200,11 @@ class ProvideLoanService(BaseService):
except Exception as e:
logger.error(f"An error occurred: {str(e)}", exc_info=True)
db.session.rollback()
return ResponseHelper.internal_server_error()
return ResponseHelper.internal_server_error()
@classmethod
def trigger_loan_disbursement(cls, transaction_id: str):
response = EventServiceIntegration.direct_loan(transaction_id=transaction_id)
return response
+13 -2
View File
@@ -11,6 +11,7 @@ from app.api.services.base_service import BaseService
from app.api.enums import TransactionType
from threading import Thread
from app.extensions import db
from app.api.integrations import EventServiceIntegration
class RepaymentService(BaseService):
TRANSACTION_TYPE = TransactionType.REPAYMENT
@@ -79,9 +80,12 @@ class RepaymentService(BaseService):
"debtId": loan_id
}
event_thread = Thread(target=RepaymentService.trigger_loan_repayment, args=(transaction_id,))
event_thread.start()
# Call Kafka in a background thread
thread = Thread(target=RepaymentService.async_send_to_kafka, args=(response_data, request_id, "LOAN_REPAYMENT"))
thread.start()
kafka_thread = Thread(target=RepaymentService.async_send_to_kafka, args=(response_data, request_id, "LOAN_REPAYMENT"))
kafka_thread.start()
db.session.commit()
return ResponseHelper.success(data=response_data)
@@ -101,3 +105,10 @@ class RepaymentService(BaseService):
logger.error(f"An error occurred: {str(e)}", exc_info=True)
db.session.rollback()
return ResponseHelper.internal_server_error()
@classmethod
def trigger_loan_repayment(cls, transaction_id: str):
response = EventServiceIntegration.direct_repayment(transaction_id=transaction_id)
return response