import logging from fastapi import FastAPI from fastapi.staticfiles import StaticFiles from contextlib import asynccontextmanager from app.config import settings from app.core.rag import initialize_rag_manager from app.core.prompts import patch_prompts from app.api.routes import router import os # 配置日志 logging.basicConfig(format="%(levelname)s:%(message)s", level=logging.INFO) @asynccontextmanager async def lifespan(app: FastAPI): """应用生命周期管理""" # 1. Patch Prompts patch_prompts() # 2. Init RAG Manager initialize_rag_manager() yield app = FastAPI( title=settings.APP_TITLE, version=settings.APP_VERSION, lifespan=lifespan ) # 确保静态目录存在 static_dir = os.path.join(os.path.dirname(__file__), "static") if not os.path.exists(static_dir): os.makedirs(static_dir) # 挂载静态文件 app.mount("/static", StaticFiles(directory=static_dir), name="static") app.include_router(router) if __name__ == "__main__": import uvicorn uvicorn.run("app.main:app", host=settings.HOST, port=settings.PORT, reload=True)