| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- from contextlib import asynccontextmanager
- # from apscheduler.schedulers.background import BackgroundScheduler
- from fastapi import FastAPI
- from fastapi.middleware.cors import CORSMiddleware
- from starlette.staticfiles import StaticFiles
- from app.api.auth import router as auth_router
- from app.api.canvas import canvas_router
- from app.api.chat import router as chat_router
- from app.api.agent import router as agent_router
- from app.api.dialog import dialog_router
- from app.api.excel import router as excel_router
- from app.api.files import router as files_router
- from app.api.knowledge import knowledge_router
- from app.api.organization import dept_router
- from app.api.public_api import public_api
- from app.api.report import router as report_router
- from app.api.resource import menu_router
- # from app.api.sync_data import sync_router
- from app.api.user import user_router
- from app.api.group import group_router
- from app.api.role import role_router
- from app.models.base_model import init_db
- from app.task.fetch_agent import sync_agents, initialize_agents
- from app.task.sync_resources import sync_resource
- # 使用 Lifespan 事件处理程序
- @asynccontextmanager
- async def lifespan(app: FastAPI):
- # 初始化代理
- initialize_agents()
- # 在应用启动时同步代理
- sync_agents()
- yield
- # 在应用关闭时执行清理操作(如果需要)
- pass
- init_db()
- app = FastAPI(
- title="basic_rag_gateway",
- version="0.1",
- description="",
- lifespan=lifespan
- )
- # 设置 CORS 中间件
- app.add_middleware(
- CORSMiddleware,
- allow_origins=["*"], # 允许所有域名跨域访问
- allow_credentials=True,
- allow_methods=["*"], # 允许所有方法
- allow_headers=["*"], # 允许所有头部
- )
- # 创建调度器
- # scheduler = BackgroundScheduler()
- # scheduler.add_job(sync_resource, 'interval', minutes=1, id="sync_resource_data")
- # scheduler.start()
- app.include_router(auth_router, prefix='/api/auth', tags=["auth"])
- app.include_router(chat_router, prefix='/api/chat', tags=["chat"])
- app.include_router(agent_router, prefix='/api/agent', tags=["agent"])
- app.include_router(excel_router, prefix='/api/document', tags=["document"])
- app.include_router(files_router, prefix='/api/files', tags=["files"])
- app.include_router(report_router, prefix='/api/report', tags=["report"])
- app.include_router(user_router, prefix='/api/user', tags=["user"])
- app.include_router(group_router, prefix='/api/group', tags=["group"])
- app.include_router(role_router, prefix='/api/role', tags=["role"])
- app.include_router(dept_router, prefix='/api/dept', tags=["dept"])
- app.include_router(menu_router, prefix='/api/menu', tags=["menu"])
- app.include_router(knowledge_router, prefix='/api/knowledge', tags=["knowledge"])
- app.include_router(dialog_router, prefix='/api/dialog', tags=["dialog"])
- app.include_router(canvas_router, prefix='/api/canvas', tags=["canvas"])
- # app.include_router(sync_router, prefix='/api/sync', tags=["sync"])
- app.include_router(public_api, prefix='/v1/api', tags=["public_api"])
- app.mount("/static", StaticFiles(directory="app/images"), name="static")
- if __name__ == "__main__":
- import uvicorn
- uvicorn.run(app, host="0.0.0.0", port=9201)
|