2026-02-01 13:57:30 +00:00

72 lines
2.2 KiB
Python

import os
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from app.routers.auth import router as auth_router
from app.routers.broker import router as broker_router
from app.routers.health import router as health_router
from app.routers.password_reset import router as password_reset_router
from app.routers.support_ticket import router as support_ticket_router
from app.routers.system import router as system_router
from app.routers.strategy import router as strategy_router
from app.routers.zerodha import router as zerodha_router, public_router as zerodha_public_router
from app.routers.paper import router as paper_router
from market import router as market_router
from paper_mtm import router as paper_mtm_router
from app.services.strategy_service import init_log_state, resume_running_runs
from app.admin_router import router as admin_router
from app.admin_role_service import bootstrap_super_admin
app = FastAPI(
title="QuantFortune Backend",
version="1.0"
)
cors_origins = [
origin.strip()
for origin in os.getenv("CORS_ORIGINS", "").split(",")
if origin.strip()
]
if not cors_origins:
cors_origins = [
"http://localhost:3000",
"http://127.0.0.1:3000",
]
cors_origin_regex = os.getenv("CORS_ORIGIN_REGEX", "").strip()
if not cors_origin_regex:
cors_origin_regex = (
r"https://.*\\.ngrok-free\\.dev"
r"|https://.*\\.ngrok-free\\.app"
r"|https://.*\\.ngrok\\.io"
)
app.add_middleware(
CORSMiddleware,
allow_origins=cors_origins,
allow_origin_regex=cors_origin_regex or None,
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
app.include_router(strategy_router)
app.include_router(auth_router)
app.include_router(broker_router)
app.include_router(zerodha_router)
app.include_router(zerodha_public_router)
app.include_router(paper_router)
app.include_router(market_router)
app.include_router(paper_mtm_router)
app.include_router(health_router)
app.include_router(system_router)
app.include_router(admin_router)
app.include_router(support_ticket_router)
app.include_router(password_reset_router)
@app.on_event("startup")
def init_app_state():
init_log_state()
bootstrap_super_admin()
resume_running_runs()