Bankbot / backend /app /loans /router.py
mohsin-devs's picture
fix: prevent HF 502 by removing sklearn import at startup and hardening DB init
612435b
Raw
History Blame Contribute Delete
1.56 kB
from typing import Optional
from fastapi import APIRouter, Depends, Query
from pydantic import BaseModel, Field
from sqlalchemy.orm import Session
from app.database.database import get_db
from app.database.models import User
from app.loans.service import analyze_loan
router = APIRouter(prefix="/api/loans", tags=["Loans"])
def _resolve_user(db: Session, user_id: Optional[str]) -> str:
if user_id:
return user_id
user = db.query(User).first()
if user:
return user.id
return "anonymous"
class LoanEligibilityRequest(BaseModel):
salary: float = Field(gt=0, description="Annual salary in USD")
credit_score: int = Field(ge=300, le=850)
existing_loans: int = Field(ge=0, le=20)
employment_years: float = Field(ge=0, le=50)
age: int = Field(ge=18, le=80)
loan_amount: float = Field(gt=0)
@router.post("/eligibility")
def loan_eligibility(
body: LoanEligibilityRequest,
user_id: Optional[str] = None,
db: Session = Depends(get_db),
):
_resolve_user(db, user_id)
return analyze_loan(
body.salary,
body.credit_score,
body.existing_loans,
body.employment_years,
body.age,
body.loan_amount,
)
@router.get("/comparison")
def loan_comparison(
loan_amount: float = Query(..., gt=0),
user_id: Optional[str] = None,
db: Session = Depends(get_db),
):
_resolve_user(db, user_id)
result = analyze_loan(85000, 720, 1, 4, 32, loan_amount)
return {"loan_amount": loan_amount, "comparison": result["comparison"]}