main.py 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. from contextlib import asynccontextmanager
  2. from apscheduler.schedulers.background import BackgroundScheduler
  3. from fastapi import FastAPI
  4. from fastapi.middleware.cors import CORSMiddleware
  5. from starlette.staticfiles import StaticFiles
  6. from app.api.auth import router as auth_router
  7. from app.api.canvas import canvas_router
  8. from app.api.chat import router as chat_router
  9. from app.api.agent import router as agent_router
  10. from app.api.dialog import dialog_router
  11. from app.api.excel import router as excel_router
  12. from app.api.files import router as files_router
  13. from app.api.knowledge import knowledge_router
  14. from app.api.label import label_router
  15. from app.api.llm import llm_router
  16. from app.api.organization import dept_router
  17. from app.api.v2.public_api import public_api
  18. from app.api.report import router as report_router
  19. from app.api.resource import menu_router
  20. # from app.api.sync_data import sync_router
  21. from app.api.user import user_router
  22. from app.api.group import group_router
  23. from app.api.role import role_router
  24. from app.models.base_model import init_db
  25. # from app.models.base_model import init_db
  26. from app.task.fetch_agent import sync_agents, initialize_agents, sync_agents_v2, sync_knowledge, \
  27. sync_resources_from_json
  28. from app.init_config.init_run_data import sync_default_data
  29. init_db()
  30. # 使用 Lifespan 事件处理程序
  31. @asynccontextmanager
  32. async def lifespan(app: FastAPI):
  33. # 初始化代理
  34. # initialize_agents()
  35. # # 在应用启动时同步代理
  36. # sync_agents()
  37. await sync_default_data()
  38. sync_agents_v2()
  39. sync_knowledge()
  40. sync_resources_from_json()
  41. yield
  42. # 在应用关闭时执行清理操作(如果需要)
  43. pass
  44. app = FastAPI(
  45. title="basic_rag_gateway",
  46. version="0.1",
  47. description="",
  48. lifespan=lifespan
  49. )
  50. # 设置 CORS 中间件
  51. # app.add_middleware(
  52. # CORSMiddleware,
  53. # allow_origins=["http://192.168.20.119:9303", "http://192.168.20.119:9301", "http://smartai.com:8293","http://localhost:9303", "http://127.0.0.1:9303","http://localhost:5173","http://192.168.20.158:5173"],
  54. # allow_credentials=True,
  55. # allow_methods=["*"], # 允许所有方法
  56. # allow_headers=["*"], # 允许所有头部
  57. # )
  58. # 创建调度器
  59. scheduler = BackgroundScheduler()
  60. scheduler.add_job(sync_agents_v2, 'interval', minutes=60, id="sync_resource_data")
  61. scheduler.start()
  62. app.include_router(auth_router, prefix='/api/auth', tags=["auth"])
  63. app.include_router(chat_router, prefix='/api/chat', tags=["chat"])
  64. app.include_router(agent_router, prefix='/api/agent', tags=["agent"])
  65. app.include_router(excel_router, prefix='/api/document', tags=["document"])
  66. app.include_router(files_router, prefix='/api/files', tags=["files"])
  67. app.include_router(report_router, prefix='/api/report', tags=["report"])
  68. app.include_router(user_router, prefix='/api/user', tags=["user"])
  69. app.include_router(group_router, prefix='/api/group', tags=["group"])
  70. app.include_router(role_router, prefix='/api/role', tags=["role"])
  71. app.include_router(dept_router, prefix='/api/dept', tags=["dept"])
  72. app.include_router(menu_router, prefix='/api/menu', tags=["menu"])
  73. app.include_router(knowledge_router, prefix='/api/knowledge', tags=["knowledge"])
  74. app.include_router(llm_router, prefix='/api/llm', tags=["llm"])
  75. app.include_router(dialog_router, prefix='/api/dialog', tags=["dialog"])
  76. app.include_router(canvas_router, prefix='/api/canvas', tags=["canvas"])
  77. app.include_router(label_router, prefix='/api/label', tags=["label"])
  78. app.include_router(public_api, prefix='/v1/api', tags=["public_api"])
  79. app.mount("/static", StaticFiles(directory="app/images"), name="static")
  80. if __name__ == "__main__":
  81. import uvicorn
  82. uvicorn.run(app, host="0.0.0.0", port=9201)