Skip to content

Commit 0993eb3

Browse files
committed
Merge remote-tracking branch 'origin/main'
# Conflicts: # frontend/src/i18n/en.json # frontend/src/i18n/zh-CN.json
2 parents 344027c + f110b76 commit 0993eb3

File tree

37 files changed

+610
-139
lines changed

37 files changed

+610
-139
lines changed
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
"""010_upgrade_user_language
2+
3+
Revision ID: 8dc3b1bdbfef
4+
Revises: 804b08ac329d
5+
Create Date: 2025-06-10 11:21:35.257604
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 = '8dc3b1bdbfef'
15+
down_revision = '804b08ac329d'
16+
branch_labels = None
17+
depends_on = None
18+
19+
20+
def upgrade():
21+
# ### commands auto generated by Alembic - please adjust! ###
22+
23+
op.add_column('sys_user', sa.Column('language', sa.VARCHAR(length=255), server_default=sa.text("'zh-CN'::character varying"), nullable=False))
24+
25+
# ### end Alembic commands ###
26+
27+
28+
def downgrade():
29+
# ### commands auto generated by Alembic - please adjust! ###
30+
31+
op.drop_column('sys_user', 'language')
32+
33+
# ### end Alembic commands ###

backend/apps/chat/api/chat.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import json
2+
import orjson
23
import traceback
34
from typing import List
45

@@ -138,7 +139,7 @@ def run_task():
138139
# execute sql
139140
result = llm_service.execute_sql(sql=sql)
140141
llm_service.save_sql_data(session=session, data_obj=result)
141-
yield json.dumps({'content': json.dumps(result, ensure_ascii=False), 'type': 'sql-data'}) + '\n\n'
142+
yield json.dumps({'content': orjson.dumps(result).decode(), 'type': 'sql-data'}) + '\n\n'
142143

143144
# generate chart
144145
chart_res = llm_service.generate_chart(session=session)

backend/apps/chat/task/llm.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import json
2+
import orjson
23
import logging
34
import warnings
45
from typing import Any, List, Union, Dict
@@ -218,7 +219,7 @@ def save_error(self, session: SessionDep, message: str):
218219

219220
def save_sql_data(self, session: SessionDep, data_obj: Dict[str, Any]):
220221
return save_sql_exec_data(session=session, record_id=self.record.id,
221-
data=json.dumps(data_obj, ensure_ascii=False))
222+
data=orjson.dumps(data_obj).decode())
222223

223224
def finish(self, session: SessionDep):
224225
return finish_record(session=session, record_id=self.record.id)

backend/apps/datasource/api/datasource.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
path = "/opt/sqlbot/data/excel"
1919

2020

21-
@router.get("/list")
21+
@router.get("/list", operation_id="get_datasource_list")
2222
async def datasource_list(session: SessionDep):
2323
return get_datasource_list(session=session)
2424

backend/apps/system/api/user.py

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
from fastapi import APIRouter, Depends, Request
2+
from apps.system.crud.user import get_user_info
23
from apps.system.models.user import user_grid
4+
from apps.system.schemas.system_schema import UserLanguage
35
from common.core.deps import CurrentUser, SessionDep
46
from common.core.pagination import Paginator
57
from common.core.schemas import PaginatedResponse, PaginationParams
@@ -8,8 +10,12 @@
810

911

1012
@router.get("/info")
11-
async def user_info(current_user: CurrentUser):
12-
return current_user.to_dict()
13+
async def user_info(session: SessionDep, current_user: CurrentUser):
14+
db_user = get_user_info(session=session, user_id=current_user.id)
15+
if not db_user:
16+
return {"message": "User not found"}
17+
db_user.password = None
18+
return db_user
1319

1420

1521
@router.get("/pager/{pageNum}/{pageSize}", response_model=PaginatedResponse[user_grid])
@@ -24,4 +30,17 @@ async def pager(
2430
return await paginator.get_paginated_response(
2531
model=user_grid,
2632
pagination=pagination,
27-
**filters)
33+
**filters)
34+
35+
@router.put("/language")
36+
async def langChange(session: SessionDep, current_user: CurrentUser, language: UserLanguage):
37+
lang = language.language
38+
if lang not in ["zh-CN", "en"]:
39+
return {"message": "Language not supported"}
40+
db_user = get_user_info(session=session, user_id=current_user.id)
41+
if not db_user:
42+
return {"message": "User not found"}
43+
db_user.language = lang
44+
session.add(db_user)
45+
session.commit()
46+
return {"message": "Language changed successfully", "language": lang}

backend/apps/system/crud/user.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,12 @@ def get_user_by_account(*, session: Session, account: str) -> sys_user | None:
1010
result_user = sys_user.model_validate(session_user)
1111
return result_user
1212

13+
def get_user_info(*, session: Session, user_id: int) -> sys_user | None:
14+
db_user = session.get(user_grid, user_id)
15+
if not db_user:
16+
return None
17+
return db_user
18+
1319
def authenticate(*, session: Session, account: str, password: str) -> sys_user | None:
1420
db_user = get_user_by_account(session=session, account=account)
1521
if not db_user:

backend/apps/system/models/user.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,5 @@ class user_grid(sys_user, table=True):
2121
email: str
2222
status: int
2323
create_time: int
24+
language: str = Field(max_length=255, default="zh-CN")
2425

backend/apps/system/schemas/system_schema.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,8 @@
22

33
class model_status(BaseModel):
44
status: bool
5-
ids: list[int]
5+
ids: list[int]
6+
7+
8+
class UserLanguage(BaseModel):
9+
language: str

backend/apps/template/template.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55

66
def load():
7-
with open('./template.yaml', 'r') as f:
7+
with open('./template.yaml', 'r', encoding='utf-8') as f:
88
global base_template
99
base_template = yaml.load(f, Loader=yaml.SafeLoader)
1010

backend/common/utils/whitelist.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,9 @@
2020
"*.woff2",
2121
"*.ttf",
2222
"*.eot",
23-
"*.otf"
23+
"*.otf",
24+
"/mcp",
25+
"/mcp/message"
2426
]
2527

2628
class WhitelistChecker:

0 commit comments

Comments
 (0)