56 lines
1.5 KiB
Python
56 lines
1.5 KiB
Python
from contextlib import asynccontextmanager
|
|
|
|
from fastapi import FastAPI
|
|
from fastapi.middleware.cors import CORSMiddleware
|
|
|
|
from app.api.auth import router as auth_router
|
|
from app.api.citations import router as citations_router
|
|
from app.api.queries import router as queries_router
|
|
from app.api.reports import router as reports_router
|
|
from app.config import settings
|
|
from app.database import engine, Base
|
|
from app.workers.scheduler import query_scheduler
|
|
|
|
|
|
@asynccontextmanager
|
|
async def lifespan(app: FastAPI):
|
|
import app.models
|
|
|
|
async with engine.begin() as conn:
|
|
await conn.run_sync(Base.metadata.create_all)
|
|
|
|
query_scheduler.start()
|
|
|
|
yield
|
|
|
|
await query_scheduler.shutdown()
|
|
|
|
|
|
app = FastAPI(
|
|
title="GEO Platform API",
|
|
version="1.0.0",
|
|
lifespan=lifespan,
|
|
)
|
|
|
|
_allow_origins = [origin.strip() for origin in settings.CORS_ORIGINS.split(",") if origin.strip()]
|
|
if not _allow_origins:
|
|
_allow_origins = ["http://localhost:3000"]
|
|
|
|
app.add_middleware(
|
|
CORSMiddleware,
|
|
allow_origins=_allow_origins,
|
|
allow_credentials=True,
|
|
allow_methods=["*"],
|
|
allow_headers=["*"],
|
|
)
|
|
|
|
app.include_router(auth_router, prefix="/api/v1/auth", tags=["认证"])
|
|
app.include_router(queries_router, prefix="/api/v1/queries", tags=["查询词"])
|
|
app.include_router(citations_router, prefix="/api/v1/citations", tags=["引用数据"])
|
|
app.include_router(reports_router, prefix="/api/v1/reports", tags=["报告"])
|
|
|
|
|
|
@app.get("/health")
|
|
async def health_check():
|
|
return {"status": "ok"}
|