samaan / main.py
Copilot Sync Bot
Sync backend from main branch
b953c2d
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from fastapi.staticfiles import StaticFiles
from database import Base, engine
from models import user, loan, credit, village, agency, dbt, notification # noqa: F401 - register models
from routers import auth, loan_tracking, credit_scoring, village_gaps, agency_mapping, dbt as dbt_router, activity, notifications
from ml.credit_model import get_credit_model
from seed_data import seed_sample_data
from utils.file_utils import ensure_upload_root
from utils.runtime import env_flag, get_cors_origins, get_cors_origin_regex
app = FastAPI(title="SAMAAN API", version="1.0.0")
app.add_middleware(
CORSMiddleware,
allow_origins=get_cors_origins(),
allow_origin_regex=get_cors_origin_regex(),
allow_methods=["*"],
allow_headers=["*"],
)
app.include_router(auth.router, prefix="/auth")
app.include_router(loan_tracking.router, prefix="/loan")
app.include_router(credit_scoring.router, prefix="/credit")
app.include_router(village_gaps.router, prefix="/village")
app.include_router(agency_mapping.router, prefix="/agency")
app.include_router(dbt_router.router, prefix="/dbt")
app.include_router(activity.router, prefix="/activity")
app.include_router(notifications.router, prefix="/notifications")
uploads_dir = ensure_upload_root()
app.mount("/uploads", StaticFiles(directory=str(uploads_dir)), name="uploads")
@app.get("/health")
async def health():
return {"status": "ok"}
@app.on_event("startup")
async def startup():
Base.metadata.create_all(bind=engine)
if env_flag("SAMAAN_ENABLE_SAMPLE_DATA"):
seed_sample_data()
get_credit_model()