From 50ca27abfed1ac2dacaf87866f2cfc91e25551c0 Mon Sep 17 00:00:00 2001 From: VivianDee <115420678+VivianDee@users.noreply.github.com> Date: Wed, 7 May 2025 12:07:57 +0100 Subject: [PATCH] [add]: Offer analysis --- app/api/services/eligibility_check.py | 12 +++++-- app/api/services/provide_loan.py | 3 +- app/models/rac_checks.py | 3 +- migrations/versions/3105abd795d4_.py | 52 +++++++++++++++++++++++++++ 4 files changed, 64 insertions(+), 6 deletions(-) create mode 100644 migrations/versions/3105abd795d4_.py diff --git a/app/api/services/eligibility_check.py b/app/api/services/eligibility_check.py index 8feb9cd..6fd8470 100644 --- a/app/api/services/eligibility_check.py +++ b/app/api/services/eligibility_check.py @@ -64,12 +64,20 @@ class EligibilityCheckService(BaseService): if response.status_code != 200: return jsonify({"message": "RACCheck failed"}), 400 - RACCheck.add_rac_check( + response = response.json() + + rac_check = RACCheck.add_rac_check( customer_id = customer_id, account_id = account_id, transaction_id = transaction.transaction_id, - data = response.data + data = response['RACResponse'] ) + + if not rac_check: + logger.error(f"Failed to save RACCheck") + return jsonify({ + "message": "Failed to save RACCheck." + }), 400 offers = Offer.get_all_offers() diff --git a/app/api/services/provide_loan.py b/app/api/services/provide_loan.py index 6302011..f32021c 100644 --- a/app/api/services/provide_loan.py +++ b/app/api/services/provide_loan.py @@ -14,8 +14,7 @@ from app.extensions import db from datetime import datetime, timezone from dateutil.relativedelta import relativedelta from app.models import LoanRepaymentSchedule -from app.api.services import OfferAnalysis - +from app.api.services.offer_analysis import OfferAnalysis class ProvideLoanService(BaseService): TRANSACTION_TYPE = TransactionType.PROVIDE_LOAN diff --git a/app/models/rac_checks.py b/app/models/rac_checks.py index 040c0d7..88ec31c 100644 --- a/app/models/rac_checks.py +++ b/app/models/rac_checks.py @@ -8,7 +8,7 @@ from sqlalchemy.types import JSON class RACCheck(db.Model): __tablename__ = 'rac_checks' - id = db.Column(db.String, primary_key=True) + id = db.Column(db.Integer, primary_key=True, autoincrement=True) transaction_id = db.Column(db.String(50), nullable=False) customer_id = db.Column(db.String, nullable=False) account_id = db.Column(db.String, nullable=False) @@ -25,7 +25,6 @@ class RACCheck(db.Model): customer_id = customer_id, account_id = account_id, transaction_id = transaction_id, - original_transaction = transaction_id, rac_response = data ) diff --git a/migrations/versions/3105abd795d4_.py b/migrations/versions/3105abd795d4_.py new file mode 100644 index 0000000..c6ae0da --- /dev/null +++ b/migrations/versions/3105abd795d4_.py @@ -0,0 +1,52 @@ +"""empty message + +Revision ID: 3105abd795d4 +Revises: 95a52be203c4 +Create Date: 2025-05-07 11:44:18.483694 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '3105abd795d4' +down_revision = '95a52be203c4' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + with op.batch_alter_table('rac_checks', schema=None) as batch_op: + # Step 1: Drop the default value + batch_op.alter_column('id', + server_default=None, + existing_type=sa.VARCHAR(), + existing_nullable=False + ) + + with op.batch_alter_table('rac_checks', schema=None) as batch_op: + # Step 2: Change the column type + batch_op.alter_column('id', + existing_type=sa.VARCHAR(), + type_=sa.Integer(), + existing_nullable=False, + autoincrement=True, + postgresql_using='id::integer' + ) + + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + with op.batch_alter_table('rac_checks', schema=None) as batch_op: + batch_op.alter_column('id', + existing_type=sa.Integer(), + type_=sa.VARCHAR(), + existing_nullable=False, + autoincrement=True, + existing_server_default=sa.text("''::character varying")) + + # ### end Alembic commands ###