from fastapi import FastAPI from routers.rag_base import router as rag_base from contextlib import asynccontextmanager from fastapi.middleware.cors import CORSMiddleware # --- Lifespan manager --- @asynccontextmanager async def lifespan(app: FastAPI): # 🚀 Startup print("🚀 Starting up RAG system...") # ایجاد OSS client و ذخیره در app.state # --- نکته مهم: اگر elastic_client هم می‌خوای توی startup درست کنی، اینجا اضافه کن --- # elastic_client = get_elastic_client() # app.state.elastic_client = elastic_client yield # برنامه در این حالت اجرا می‌شود # 🛑 Shutdown print("🛑 Shutting down RAG system...") # بستن اتصال‌های باز client = getattr(app.state, "elastic_client", None) if client is not None: await client.close() # --- ساخت اپلیکیشن --- def create_app() -> FastAPI: app = FastAPI( title="qachat2 Backend", version="0.1.0", lifespan=lifespan, # ✅ اینجا lifespan رو متصل می‌کنیم ) origins = ["*"] app.add_middleware( CORSMiddleware, allow_origins=origins, allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) @app.get("/") async def simple(): return "ai rag chat qanon OK" @app.get("/ping") async def ping(): return "ai rag chat qanon OK" app.include_router(rag_base, prefix="") return app # ✅ نمونه‌سازی نهایی app = create_app()