2026-03-20 21:47:30 +08:00
|
|
|
from fastapi import FastAPI
|
|
|
|
|
from fastapi.middleware.cors import CORSMiddleware
|
2026-04-08 20:04:40 +08:00
|
|
|
from fastapi.staticfiles import StaticFiles
|
2026-03-20 21:47:30 +08:00
|
|
|
|
|
|
|
|
from app.api.routes import router
|
2026-04-08 20:04:40 +08:00
|
|
|
from app.core.config import CAPITAL_IMAGE_UPLOADS_DIR, MAIN_CAPITAL_FLOW_UPLOADS_DIR
|
2026-03-20 21:47:30 +08:00
|
|
|
from app.core.bootstrap import bootstrap_data
|
|
|
|
|
from app.services.sync_scheduler import sync_scheduler
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def create_app() -> FastAPI:
|
|
|
|
|
app = FastAPI(
|
|
|
|
|
title="Southbound Capital Monitor",
|
|
|
|
|
version="0.1.0",
|
|
|
|
|
description="南向资金监控平台 API",
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
app.add_middleware(
|
|
|
|
|
CORSMiddleware,
|
|
|
|
|
allow_origins=["*"],
|
|
|
|
|
allow_credentials=True,
|
|
|
|
|
allow_methods=["*"],
|
|
|
|
|
allow_headers=["*"],
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
bootstrap_data()
|
2026-04-08 20:04:40 +08:00
|
|
|
app.mount("/capital-images/uploads", StaticFiles(directory=CAPITAL_IMAGE_UPLOADS_DIR), name="capital-image-uploads")
|
|
|
|
|
app.mount("/main-capital-flow-images", StaticFiles(directory=MAIN_CAPITAL_FLOW_UPLOADS_DIR), name="main-capital-flow-images")
|
2026-03-20 21:47:30 +08:00
|
|
|
|
|
|
|
|
@app.on_event("startup")
|
|
|
|
|
def startup_sync_scheduler() -> None:
|
|
|
|
|
sync_scheduler.start()
|
|
|
|
|
|
|
|
|
|
@app.on_event("shutdown")
|
|
|
|
|
def shutdown_sync_scheduler() -> None:
|
|
|
|
|
sync_scheduler.stop()
|
|
|
|
|
|
|
|
|
|
app.include_router(router, prefix="/api")
|
|
|
|
|
return app
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app = create_app()
|