22# Date: 2025/7/1
33
44from datetime import timedelta
5- from typing import Annotated
65
7- from fastapi import APIRouter , Depends , HTTPException
6+ from fastapi import APIRouter , HTTPException
87from fastapi .responses import StreamingResponse
9- from fastapi .security import OAuth2PasswordRequestForm
108
119from apps .chat .api .chat import create_chat
12- from apps .chat .models .chat_model import ChatMcp , CreateChat
10+ from apps .chat .models .chat_model import ChatMcp , CreateChat , ChatStart
1311from apps .chat .task .llm import LLMService , run_task
1412from apps .datasource .crud .datasource import get_datasource_list
1513from apps .system .crud .user import authenticate
2220router = APIRouter (tags = ["mcp" ], prefix = "/mcp" )
2321
2422
25- @router .post ("/access_token" , operation_id = "access_token" )
26- def local_login (
27- session : SessionDep ,
28- form_data : Annotated [OAuth2PasswordRequestForm , Depends ()]
29- ) -> Token :
30- user = authenticate (session = session , account = form_data .username , password = form_data .password )
31- if not user :
32- raise HTTPException (status_code = 400 , detail = "Incorrect account or password" )
33- access_token_expires = timedelta (minutes = settings .ACCESS_TOKEN_EXPIRE_MINUTES )
34- user_dict = user .to_dict ()
35- return Token (access_token = create_access_token (
36- user_dict , expires_delta = access_token_expires
37- ))
23+ # @router.post("/access_token", operation_id="access_token")
24+ # def local_login(
25+ # session: SessionDep,
26+ # form_data: Annotated[OAuth2PasswordRequestForm, Depends()]
27+ # ) -> Token:
28+ # user = authenticate(session=session, account=form_data.username, password=form_data.password)
29+ # if not user:
30+ # raise HTTPException(status_code=400, detail="Incorrect account or password")
31+ # access_token_expires = timedelta(minutes=settings.ACCESS_TOKEN_EXPIRE_MINUTES)
32+ # user_dict = user.to_dict()
33+ # return Token(access_token=create_access_token(
34+ # user_dict, expires_delta=access_token_expires
35+ # ))
3836
3937
4038@router .get ("/ds_list" , operation_id = "get_datasource_list" )
@@ -48,9 +46,17 @@ async def get_model_list(session: SessionDep):
4846
4947
5048@router .post ("/mcp_start" , operation_id = "mcp_start" )
51- async def mcp_start (session : SessionDep , chat : ChatMcp ):
52- user = await get_current_user (session , chat .token )
53- return create_chat (session , user , CreateChat (), False )
49+ async def mcp_start (session : SessionDep , chat : ChatStart ):
50+ user = authenticate (session = session , account = chat .username , password = chat .password )
51+ if not user :
52+ raise HTTPException (status_code = 400 , detail = "Incorrect account or password" )
53+ access_token_expires = timedelta (minutes = settings .ACCESS_TOKEN_EXPIRE_MINUTES )
54+ user_dict = user .to_dict ()
55+ t = Token (access_token = create_access_token (
56+ user_dict , expires_delta = access_token_expires
57+ ))
58+ c = create_chat (session , user , CreateChat (), False )
59+ return {"access_token" : t .access_token , "chat_id" : c .id }
5460
5561
5662@router .post ("/mcp_question" , operation_id = "mcp_question" )
0 commit comments