Skip to content

Commit 330fef1

Browse files
committed
Merge remote-tracking branch 'origin/main'
2 parents fa3b7a3 + 1a8a66d commit 330fef1

File tree

11 files changed

+62
-29
lines changed

11 files changed

+62
-29
lines changed

.github/workflows/package_and_push.yml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,8 +79,9 @@ jobs:
7979
-czvf $package_online .
8080
8181
#Sync files to OSS
82-
ossutil cp -r ${package_offline} oss://$ALIYUN_OSS_BUCKET/sqlbot/${package_offline} --access-key-id=$ALIYUN_OSS_ACCESS_KEY --access-key-secret=$ALIYUN_OSS_ACCESS_SECRET --endpoint=${ALIYUN_OSS_BUCKET_ENDPOINT}
83-
ossutil cp -r ${package_online} oss://$ALIYUN_OSS_BUCKET/sqlbot/${package_online} --access-key-id=$ALIYUN_OSS_ACCESS_KEY --access-key-secret=$ALIYUN_OSS_ACCESS_SECRET --endpoint=${ALIYUN_OSS_BUCKET_ENDPOINT}
82+
ossutil cp -rf ${package_offline} oss://$ALIYUN_OSS_BUCKET/sqlbot/${package_offline} --access-key-id=$ALIYUN_OSS_ACCESS_KEY --access-key-secret=$ALIYUN_OSS_ACCESS_SECRET --endpoint=${ALIYUN_OSS_BUCKET_ENDPOINT}
83+
ossutil cp -rf ${package_online} oss://$ALIYUN_OSS_BUCKET/sqlbot/${package_online} --access-key-id=$ALIYUN_OSS_ACCESS_KEY --access-key-secret=$ALIYUN_OSS_ACCESS_SECRET --endpoint=${ALIYUN_OSS_BUCKET_ENDPOINT}
8484
8585
8686

87+

.typos.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
[default.extend-words]
2+
sibing = "sibing"
23
[default.extend-identifiers]
34
maintain_column_froms = "maintain_column_froms"
45
[files]

backend/apps/system/api/aimodel.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ async def query(
7878
AiModelDetail.default_model)
7979
if keyword is not None:
8080
statement = statement.where(AiModelDetail.name.like(f"%{keyword}%"))
81-
statement = statement.order_by(AiModelDetail.create_time.asc())
81+
statement = statement.order_by(AiModelDetail.default_model.desc(), AiModelDetail.name, AiModelDetail.create_time)
8282
items = session.exec(statement).all()
8383
return items
8484

backend/apps/system/api/assistant.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ async def validator(session: SessionDep, id: int, virtual: Optional[int] = Query
5050

5151
@router.get("", response_model=list[AssistantModel])
5252
async def query(session: SessionDep):
53-
list_result = session.exec(select(AssistantModel).order_by(AssistantModel.create_time.asc())).all()
53+
list_result = session.exec(select(AssistantModel).order_by(AssistantModel.name, AssistantModel.create_time)).all()
5454
return list_result
5555

5656
@router.post("")

backend/apps/system/api/user.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ async def pager(
5959
select(UserModel, UserWsModel.oid.label('ws_oid'))
6060
.join(UserWsModel, UserModel.id == UserWsModel.uid, isouter=True)
6161
.where(UserModel.id.in_(uid_list))
62-
.order_by(UserModel.create_time)
62+
.order_by(UserModel.account, UserModel.create_time)
6363
)
6464
user_workspaces = session.exec(stmt).all()
6565
merged = defaultdict(list)

backend/apps/system/api/workspace.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ async def option_pager(
3232
stmt = select(UserModel.id, UserModel.account, UserModel.name).where(
3333
~exists().where(UserWsModel.uid == UserModel.id, UserWsModel.oid == oid),
3434
UserModel.id != 1
35-
).order_by(UserModel.create_time.asc())
35+
).order_by(UserModel.account, UserModel.create_time)
3636

3737
if keyword:
3838
keyword_pattern = f"%{keyword}%"
@@ -97,7 +97,7 @@ async def pager(
9797
).where(
9898
UserWsModel.oid == workspace_id,
9999
UserModel.id != 1
100-
).order_by(UserModel.create_time.asc())
100+
).order_by(UserModel.account, UserModel.create_time)
101101

102102
if keyword:
103103
keyword_pattern = f"%{keyword}%"

backend/apps/system/crud/user.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,13 +46,13 @@ def authenticate(*, session: Session, account: str, password: str) -> BaseUserDT
4646

4747
async def user_ws_options(session: Session, uid: int, trans: Optional[I18n] = None) -> list[UserWs]:
4848
if uid == 1:
49-
stmt = select(WorkspaceModel.id, WorkspaceModel.name).order_by(WorkspaceModel.create_time)
49+
stmt = select(WorkspaceModel.id, WorkspaceModel.name).order_by(WorkspaceModel.name, WorkspaceModel.create_time)
5050
else:
5151
stmt = select(WorkspaceModel.id, WorkspaceModel.name).join(
5252
UserWsModel, UserWsModel.oid == WorkspaceModel.id
5353
).where(
5454
UserWsModel.uid == uid,
55-
).order_by(WorkspaceModel.create_time)
55+
).order_by(WorkspaceModel.name, WorkspaceModel.create_time)
5656
result = session.exec(stmt)
5757
if not trans:
5858
return result.all()

backend/apps/system/crud/workspace.py

Lines changed: 27 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11

2+
from collections import defaultdict
23
from typing import Optional
34
from sqlmodel import Session, func, select, update
45

@@ -25,17 +26,10 @@ async def reset_user_oid(session: Session, oid: int):
2526
select(
2627
UserModel.id,
2728
UserModel.oid,
28-
func.coalesce(
29-
func.array_remove(
30-
func.array_agg(UserWsModel.oid),
31-
None
32-
),
33-
[]
34-
).label("oid_list")
29+
UserWsModel.oid.label("associated_oid")
3530
)
3631
.join(UserWsModel, UserModel.id == UserWsModel.uid, isouter=True)
3732
.where(UserModel.id != 1)
38-
.group_by(UserModel.id)
3933
)
4034

4135
user_filter = (
@@ -46,17 +40,30 @@ async def reset_user_oid(session: Session, oid: int):
4640
)
4741
stmt = stmt.where(UserModel.id.in_(user_filter))
4842

49-
result_user_list = session.exec(stmt)
50-
for row in result_user_list:
51-
result_dict = {}
52-
for item, key in zip(row, row._fields):
53-
result_dict[key] = item
54-
55-
origin_oid = result_dict['oid']
56-
oid_list: list = list(filter(lambda x: x != oid, result_dict['oid_list']))
43+
result_user_list = session.exec(stmt).all()
44+
if not result_user_list:
45+
return
46+
47+
merged = defaultdict(list)
48+
extra_attrs = {}
49+
50+
for (id, oid, associated_oid) in result_user_list:
51+
item = {"id": id, "oid": oid}
52+
merged[id].append(associated_oid)
53+
if id not in extra_attrs:
54+
extra_attrs[id] = {k: v for k, v in item.items()}
55+
56+
# 组合结果
57+
result = [
58+
{**extra_attrs[user_id], "oid_list": oid_list}
59+
for user_id, oid_list in merged.items()
60+
]
61+
62+
for row in result:
63+
origin_oid = row['oid']
64+
oid_list: list = list(filter(lambda x: x != oid, row['oid_list']))
5765
if origin_oid not in oid_list:
58-
result_dict['oid'] = oid_list[0] if oid_list else 0
59-
if result_dict['oid'] != origin_oid:
60-
result_dict.pop("oid_list", None)
61-
update_stmt = update(UserModel).where(UserModel.id == result_dict['id']).values(oid=result_dict['oid'])
66+
row['oid'] = oid_list[0] if oid_list else 0
67+
if row['oid'] != origin_oid:
68+
update_stmt = update(UserModel).where(UserModel.id == row['id']).values(oid=row['oid'])
6269
session.exec(update_stmt)

frontend/src/i18n/en.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
"AI Model Configuration": "AI Model Configuration"
77
},
88
"common": {
9+
"no_model_yet": "No model yet",
910
"intelligent_questioning_platform": "Welcome to the SQLBot Intelligent Questioning Platform",
1011
"login": "Login",
1112
"login_": "Login",

frontend/src/i18n/zh-CN.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
"AI Model Configuration": "模型配置"
77
},
88
"common": {
9+
"no_model_yet": "暂无模型",
910
"intelligent_questioning_platform": "欢迎使用 SQLBot 智能问数平台",
1011
"login": "账号登录",
1112
"login_": "登录",

0 commit comments

Comments
 (0)