1313from apps .chat .api .chat import create_chat , question_answer_inner
1414from apps .chat .models .chat_model import ChatMcp , CreateChat , ChatStart , McpQuestion , McpAssistant , ChatQuestion , \
1515 ChatFinishStep
16+ from apps .datasource .crud .datasource import get_datasource_list
1617from apps .system .crud .user import authenticate
1718from apps .system .crud .user import get_db_user
1819from apps .system .models .system_model import UserWsModel
4748# ))
4849
4950
50- # @router.get("/ds_list", operation_id="get_datasource_list")
51- # async def datasource_list(session: SessionDep):
52- # return get_datasource_list(session=session)
53- #
54- #
55- # @router.get("/model_list", operation_id="get_model_list")
56- # async def get_model_list(session: SessionDep):
57- # return session.query(AiModelDetail).all()
58-
59-
60- @router .post ("/mcp_start" , operation_id = "mcp_start" )
61- async def mcp_start (session : SessionDep , chat : ChatStart ):
62- user : BaseUserDTO = authenticate (session = session , account = chat .username , password = chat .password )
63- if not user :
64- raise HTTPException (status_code = 400 , detail = "Incorrect account or password" )
65-
66- if not user .oid or user .oid == 0 :
67- raise HTTPException (status_code = 400 , detail = "No associated workspace, Please contact the administrator" )
68- access_token_expires = timedelta (minutes = settings .ACCESS_TOKEN_EXPIRE_MINUTES )
69- user_dict = user .to_dict ()
70- t = Token (access_token = create_access_token (
71- user_dict , expires_delta = access_token_expires
72- ))
73- c = create_chat (session , user , CreateChat (origin = 1 ), False )
74- return {"access_token" : t .access_token , "chat_id" : c .id }
75-
76-
77- @router .post ("/mcp_question" , operation_id = "mcp_question" )
78- async def mcp_question (session : SessionDep , chat : McpQuestion ):
51+ def get_user (session : SessionDep , token : str ):
7952 try :
8053 payload = jwt .decode (
81- chat . token , settings .SECRET_KEY , algorithms = [security .ALGORITHM ]
54+ token , settings .SECRET_KEY , algorithms = [security .ALGORITHM ]
8255 )
8356 token_data = TokenPayload (** payload )
8457 except (InvalidTokenError , ValidationError ):
@@ -91,7 +64,7 @@ async def mcp_question(session: SessionDep, chat: McpQuestion):
9164 db_user : UserModel = get_db_user (session = session , user_id = token_data .id )
9265 session_user = UserInfoDTO .model_validate (db_user .model_dump ())
9366 session_user .isAdmin = session_user .id == 1 and session_user .account == 'admin'
94- session_user .language = chat . lang
67+ session_user .language = 'zh'
9568 if session_user .isAdmin :
9669 session_user = session_user
9770 ws_model : UserWsModel = session .exec (
@@ -104,6 +77,42 @@ async def mcp_question(session: SessionDep, chat: McpQuestion):
10477
10578 if session_user .status != 1 :
10679 raise HTTPException (status_code = 400 , detail = "Inactive user" )
80+ return session_user
81+
82+
83+ @router .post ("/mcp_ds_list" , operation_id = "mcp_get_datasource_list" )
84+ async def datasource_list (session : SessionDep , token : str ):
85+ session_user = get_user (session , token )
86+ return get_datasource_list (session = session , user = session_user )
87+
88+
89+ #
90+ #
91+ # @router.get("/model_list", operation_id="get_model_list")
92+ # async def get_model_list(session: SessionDep):
93+ # return session.query(AiModelDetail).all()
94+
95+
96+ @router .post ("/mcp_start" , operation_id = "mcp_start" )
97+ async def mcp_start (session : SessionDep , chat : ChatStart ):
98+ user : BaseUserDTO = authenticate (session = session , account = chat .username , password = chat .password )
99+ if not user :
100+ raise HTTPException (status_code = 400 , detail = "Incorrect account or password" )
101+
102+ if not user .oid or user .oid == 0 :
103+ raise HTTPException (status_code = 400 , detail = "No associated workspace, Please contact the administrator" )
104+ access_token_expires = timedelta (minutes = settings .ACCESS_TOKEN_EXPIRE_MINUTES )
105+ user_dict = user .to_dict ()
106+ t = Token (access_token = create_access_token (
107+ user_dict , expires_delta = access_token_expires
108+ ))
109+ c = create_chat (session , user , CreateChat (origin = 1 ), False )
110+ return {"access_token" : t .access_token , "chat_id" : c .id }
111+
112+
113+ @router .post ("/mcp_question" , operation_id = "mcp_question" )
114+ async def mcp_question (session : SessionDep , chat : McpQuestion ):
115+ session_user = get_user (session , chat .token )
107116
108117 mcp_chat = ChatMcp (token = chat .token , chat_id = chat .chat_id , question = chat .question )
109118
0 commit comments