zhaoqingang
2024-12-04 041b39822581c623721b09b892c37573573ab816
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
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.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.mount("/static", StaticFiles(directory="app/images"), name="static")
 
if __name__ == "__main__":
    import uvicorn
    uvicorn.run(app, host="0.0.0.0", port=9201)