|
2 | 2 | # Date: 2025/7/1 |
3 | 3 | import json |
4 | 4 | from datetime import timedelta |
| 5 | +from typing import Optional |
5 | 6 |
|
6 | 7 | import jwt |
7 | 8 | from fastapi import HTTPException, status, APIRouter |
@@ -113,8 +114,22 @@ async def mcp_start(session: SessionDep, chat: ChatStart): |
113 | 114 | @router.post("/mcp_question", operation_id="mcp_question") |
114 | 115 | async def mcp_question(session: SessionDep, chat: McpQuestion): |
115 | 116 | session_user = get_user(session, chat.token) |
116 | | - |
117 | | - mcp_chat = ChatMcp(token=chat.token, chat_id=chat.chat_id, question=chat.question, datasource_id=chat.datasource_id) |
| 117 | + ds_id: Optional[int] = None |
| 118 | + if chat.datasource_id: |
| 119 | + if isinstance(chat.datasource_id, str): |
| 120 | + if chat.datasource_id.strip() == "": |
| 121 | + ds_id = None |
| 122 | + else: |
| 123 | + try: |
| 124 | + ds_id = int(chat.datasource_id.strip()) |
| 125 | + except ValueError: |
| 126 | + raise HTTPException(status_code=400, detail="Invalid datasource ID") |
| 127 | + elif isinstance(chat.datasource_id, int): |
| 128 | + ds_id = chat.datasource_id |
| 129 | + else: |
| 130 | + raise HTTPException(status_code=400, detail="Invalid datasource ID") |
| 131 | + |
| 132 | + mcp_chat = ChatMcp(token=chat.token, chat_id=chat.chat_id, question=chat.question, datasource_id=ds_id) |
118 | 133 |
|
119 | 134 | return await question_answer_inner(session=session, current_user=session_user, request_question=mcp_chat, |
120 | 135 | in_chat=False, stream=chat.stream) |
|
0 commit comments