Spaces:
Sleeping
Sleeping
| 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) | |
| 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, | |
| ) | |
| 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"]} | |