Skip to content

Commit aeee30e

Browse files
perf: Chat origin
1 parent 0f6a772 commit aeee30e

File tree

5 files changed

+39
-6
lines changed

5 files changed

+39
-6
lines changed
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
"""033_chat_origin_ddl
2+
3+
Revision ID: 3cb5d6a54f2e
4+
Revises: 6549e47f9adc
5+
Create Date: 2025-07-22 22:00:48.599729
6+
7+
"""
8+
from alembic import op
9+
import sqlalchemy as sa
10+
import sqlmodel.sql.sqltypes
11+
from sqlalchemy.dialects import postgresql
12+
13+
# revision identifiers, used by Alembic.
14+
revision = '3cb5d6a54f2e'
15+
down_revision = '6549e47f9adc'
16+
branch_labels = None
17+
depends_on = None
18+
19+
20+
def upgrade():
21+
# ### commands auto generated by Alembic - please adjust! ###
22+
op.add_column('chat', sa.Column('origin', sa.Integer(), nullable=True, default=0)) # 0: default, 1: mcp, 2: assistant
23+
op.execute('UPDATE chat SET origin = 0 WHERE origin IS NULL')
24+
# ### end Alembic commands ###
25+
26+
27+
def downgrade():
28+
# ### commands auto generated by Alembic - please adjust! ###
29+
op.drop_column('chat', 'origin')
30+
# ### end Alembic commands ###

backend/apps/chat/api/chat.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ async def start_chat(session: SessionDep, current_user: CurrentUser, create_chat
8585
@router.post("/assistant/start")
8686
async def start_chat(session: SessionDep, current_user: CurrentUser):
8787
try:
88-
return create_chat(session, current_user, CreateChat(), False)
88+
return create_chat(session, current_user, CreateChat(origin=2), False)
8989
except Exception as e:
9090
raise HTTPException(
9191
status_code=500,

backend/apps/chat/curd/chat.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ def list_chats(session: SessionDep, current_user: CurrentUser) -> List[Chat]:
2121

2222

2323
def rename_chat(session: SessionDep, rename_object: RenameChat) -> str:
24-
chat = session.query(Chat).filter(Chat.id == rename_object.id).first()
24+
chat = session.get(Chat, rename_object.id)
2525
if not chat:
2626
raise Exception(f"Chat with id {rename_object.id} not found")
2727

@@ -163,11 +163,12 @@ def create_chat(session: SessionDep, current_user: CurrentUser, create_chat_obj:
163163
chat = Chat(create_time=datetime.datetime.now(),
164164
create_by=current_user.id,
165165
oid=current_user.oid if current_user.oid is not None else 1,
166-
brief=create_chat_obj.question.strip()[:20])
166+
brief=create_chat_obj.question.strip()[:20],
167+
origin=create_chat_obj.origin if create_chat_obj.origin is not None else 0)
167168
ds: CoreDatasource | None = None
168169
if create_chat_obj.datasource:
169170
chat.datasource = create_chat_obj.datasource
170-
ds = session.query(CoreDatasource).filter(CoreDatasource.id == create_chat_obj.datasource).first()
171+
ds = session.get(CoreDatasource, create_chat_obj.datasource)
171172

172173
if not ds:
173174
raise Exception(f"Datasource with id {create_chat_obj.datasource} not found")

backend/apps/chat/models/chat_model.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
from typing import List, Optional
33

44
from pydantic import BaseModel
5-
from sqlalchemy import Column, Text, BigInteger, DateTime, Identity, Boolean
5+
from sqlalchemy import Column, Integer, Text, BigInteger, DateTime, Identity, Boolean
66
from sqlmodel import SQLModel, Field
77

88
from apps.template.generate_analysis.generator import get_analysis_template
@@ -24,6 +24,7 @@ class Chat(SQLModel, table=True):
2424
chat_type: str = Field(max_length=20, default="chat") # chat, datasource
2525
datasource: int = Field(sa_column=Column(BigInteger, nullable=True))
2626
engine_type: str = Field(max_length=64)
27+
origin: Optional[int] = Field(sa_column=Column(Integer, nullable=False, default=0)) # 0: default, 1: mcp, 2: assistant
2728

2829

2930
class ChatRecord(SQLModel, table=True):
@@ -72,6 +73,7 @@ class CreateChat(BaseModel):
7273
id: int = None
7374
question: str = None
7475
datasource: int = None
76+
origin: Optional[int] = 0
7577

7678

7779
class RenameChat(BaseModel):

backend/apps/mcp/mcp.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ async def mcp_start(session: SessionDep, chat: ChatStart):
7171
t = Token(access_token=create_access_token(
7272
user_dict, expires_delta=access_token_expires
7373
))
74-
c = create_chat(session, user, CreateChat(), False)
74+
c = create_chat(session, user, CreateChat(origin=1), False)
7575
return {"access_token": t.access_token, "chat_id": c.id}
7676

7777

0 commit comments

Comments
 (0)