from contextlib import asynccontextmanager from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from app.api import dashboard, feishu, logs, raw_qa, sessions, settings, standard_qa, tasks from app.config import get_settings from app.database import init_db from app.services.scheduler import start_scheduler @asynccontextmanager async def lifespan(app: FastAPI): init_db() start_scheduler() yield settings_obj = get_settings() app = FastAPI(title=settings_obj.app_name, version="0.1.0", lifespan=lifespan) app.add_middleware( CORSMiddleware, allow_origins=[ "http://localhost:3000", "http://127.0.0.1:3000", "http://localhost:3001", "http://127.0.0.1:3001", ], allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) app.include_router(dashboard.router, prefix="/api") app.include_router(sessions.router, prefix="/api") app.include_router(raw_qa.router, prefix="/api") app.include_router(standard_qa.router, prefix="/api") app.include_router(tasks.router, prefix="/api") app.include_router(logs.router, prefix="/api") app.include_router(settings.router, prefix="/api") app.include_router(feishu.router, prefix="/api") @app.get("/") def root() -> dict[str, str]: return {"name": settings_obj.app_name, "status": "ok"} @app.get("/health") def health() -> dict[str, str]: return {"status": "ok"}