mirror of
https://gh-proxy.org/https://github.com/klinsmaya/SQLBot.git
synced 2026-11-08 09:17:06 +08:00
Merge remote-tracking branch 'origin/main'
This commit is contained in:
@@ -79,8 +79,9 @@ jobs:
|
||||
-czvf $package_online .
|
||||
|
||||
#Sync files to OSS
|
||||
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}
|
||||
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}
|
||||
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}
|
||||
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}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
[default.extend-words]
|
||||
sibing = "sibing"
|
||||
[default.extend-identifiers]
|
||||
maintain_column_froms = "maintain_column_froms"
|
||||
[files]
|
||||
|
||||
@@ -78,7 +78,7 @@ async def query(
|
||||
AiModelDetail.default_model)
|
||||
if keyword is not None:
|
||||
statement = statement.where(AiModelDetail.name.like(f"%{keyword}%"))
|
||||
statement = statement.order_by(AiModelDetail.create_time.asc())
|
||||
statement = statement.order_by(AiModelDetail.default_model.desc(), AiModelDetail.name, AiModelDetail.create_time)
|
||||
items = session.exec(statement).all()
|
||||
return items
|
||||
|
||||
|
||||
@@ -50,7 +50,7 @@ async def validator(session: SessionDep, id: int, virtual: Optional[int] = Query
|
||||
|
||||
@router.get("", response_model=list[AssistantModel])
|
||||
async def query(session: SessionDep):
|
||||
list_result = session.exec(select(AssistantModel).order_by(AssistantModel.create_time.asc())).all()
|
||||
list_result = session.exec(select(AssistantModel).order_by(AssistantModel.name, AssistantModel.create_time)).all()
|
||||
return list_result
|
||||
|
||||
@router.post("")
|
||||
|
||||
@@ -59,7 +59,7 @@ async def pager(
|
||||
select(UserModel, UserWsModel.oid.label('ws_oid'))
|
||||
.join(UserWsModel, UserModel.id == UserWsModel.uid, isouter=True)
|
||||
.where(UserModel.id.in_(uid_list))
|
||||
.order_by(UserModel.create_time)
|
||||
.order_by(UserModel.account, UserModel.create_time)
|
||||
)
|
||||
user_workspaces = session.exec(stmt).all()
|
||||
merged = defaultdict(list)
|
||||
|
||||
@@ -32,7 +32,7 @@ async def option_pager(
|
||||
stmt = select(UserModel.id, UserModel.account, UserModel.name).where(
|
||||
~exists().where(UserWsModel.uid == UserModel.id, UserWsModel.oid == oid),
|
||||
UserModel.id != 1
|
||||
).order_by(UserModel.create_time.asc())
|
||||
).order_by(UserModel.account, UserModel.create_time)
|
||||
|
||||
if keyword:
|
||||
keyword_pattern = f"%{keyword}%"
|
||||
@@ -97,7 +97,7 @@ async def pager(
|
||||
).where(
|
||||
UserWsModel.oid == workspace_id,
|
||||
UserModel.id != 1
|
||||
).order_by(UserModel.create_time.asc())
|
||||
).order_by(UserModel.account, UserModel.create_time)
|
||||
|
||||
if keyword:
|
||||
keyword_pattern = f"%{keyword}%"
|
||||
|
||||
@@ -46,13 +46,13 @@ def authenticate(*, session: Session, account: str, password: str) -> BaseUserDT
|
||||
|
||||
async def user_ws_options(session: Session, uid: int, trans: Optional[I18n] = None) -> list[UserWs]:
|
||||
if uid == 1:
|
||||
stmt = select(WorkspaceModel.id, WorkspaceModel.name).order_by(WorkspaceModel.create_time)
|
||||
stmt = select(WorkspaceModel.id, WorkspaceModel.name).order_by(WorkspaceModel.name, WorkspaceModel.create_time)
|
||||
else:
|
||||
stmt = select(WorkspaceModel.id, WorkspaceModel.name).join(
|
||||
UserWsModel, UserWsModel.oid == WorkspaceModel.id
|
||||
).where(
|
||||
UserWsModel.uid == uid,
|
||||
).order_by(WorkspaceModel.create_time)
|
||||
).order_by(WorkspaceModel.name, WorkspaceModel.create_time)
|
||||
result = session.exec(stmt)
|
||||
if not trans:
|
||||
return result.all()
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
|
||||
from collections import defaultdict
|
||||
from typing import Optional
|
||||
from sqlmodel import Session, func, select, update
|
||||
|
||||
@@ -25,17 +26,10 @@ async def reset_user_oid(session: Session, oid: int):
|
||||
select(
|
||||
UserModel.id,
|
||||
UserModel.oid,
|
||||
func.coalesce(
|
||||
func.array_remove(
|
||||
func.array_agg(UserWsModel.oid),
|
||||
None
|
||||
),
|
||||
[]
|
||||
).label("oid_list")
|
||||
UserWsModel.oid.label("associated_oid")
|
||||
)
|
||||
.join(UserWsModel, UserModel.id == UserWsModel.uid, isouter=True)
|
||||
.where(UserModel.id != 1)
|
||||
.group_by(UserModel.id)
|
||||
)
|
||||
|
||||
user_filter = (
|
||||
@@ -46,17 +40,30 @@ async def reset_user_oid(session: Session, oid: int):
|
||||
)
|
||||
stmt = stmt.where(UserModel.id.in_(user_filter))
|
||||
|
||||
result_user_list = session.exec(stmt)
|
||||
for row in result_user_list:
|
||||
result_dict = {}
|
||||
for item, key in zip(row, row._fields):
|
||||
result_dict[key] = item
|
||||
|
||||
origin_oid = result_dict['oid']
|
||||
oid_list: list = list(filter(lambda x: x != oid, result_dict['oid_list']))
|
||||
result_user_list = session.exec(stmt).all()
|
||||
if not result_user_list:
|
||||
return
|
||||
|
||||
merged = defaultdict(list)
|
||||
extra_attrs = {}
|
||||
|
||||
for (id, oid, associated_oid) in result_user_list:
|
||||
item = {"id": id, "oid": oid}
|
||||
merged[id].append(associated_oid)
|
||||
if id not in extra_attrs:
|
||||
extra_attrs[id] = {k: v for k, v in item.items()}
|
||||
|
||||
# 组合结果
|
||||
result = [
|
||||
{**extra_attrs[user_id], "oid_list": oid_list}
|
||||
for user_id, oid_list in merged.items()
|
||||
]
|
||||
|
||||
for row in result:
|
||||
origin_oid = row['oid']
|
||||
oid_list: list = list(filter(lambda x: x != oid, row['oid_list']))
|
||||
if origin_oid not in oid_list:
|
||||
result_dict['oid'] = oid_list[0] if oid_list else 0
|
||||
if result_dict['oid'] != origin_oid:
|
||||
result_dict.pop("oid_list", None)
|
||||
update_stmt = update(UserModel).where(UserModel.id == result_dict['id']).values(oid=result_dict['oid'])
|
||||
row['oid'] = oid_list[0] if oid_list else 0
|
||||
if row['oid'] != origin_oid:
|
||||
update_stmt = update(UserModel).where(UserModel.id == row['id']).values(oid=row['oid'])
|
||||
session.exec(update_stmt)
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
"AI Model Configuration": "AI Model Configuration"
|
||||
},
|
||||
"common": {
|
||||
"no_model_yet": "No model yet",
|
||||
"intelligent_questioning_platform": "Welcome to the SQLBot Intelligent Questioning Platform",
|
||||
"login": "Login",
|
||||
"login_": "Login",
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
"AI Model Configuration": "模型配置"
|
||||
},
|
||||
"common": {
|
||||
"no_model_yet": "暂无模型",
|
||||
"intelligent_questioning_platform": "欢迎使用 SQLBot 智能问数平台",
|
||||
"login": "账号登录",
|
||||
"login_": "登录",
|
||||
|
||||
@@ -367,6 +367,22 @@ const submit = (item: any) => {
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
<template v-if="!keywords && !modelListWithSearch.length">
|
||||
<EmptyBackground
|
||||
class="datasource-yet"
|
||||
:description="$t('common.no_model_yet')"
|
||||
img-type="noneWhite"
|
||||
/>
|
||||
|
||||
<div style="text-align: center; margin-top: -10px">
|
||||
<el-button type="primary" @click="handleAddModel">
|
||||
<template #icon>
|
||||
<icon_add_outlined></icon_add_outlined>
|
||||
</template>
|
||||
{{ t('model.add_model') }}
|
||||
</el-button>
|
||||
</div>
|
||||
</template>
|
||||
<el-drawer
|
||||
v-model="modelConfigvVisible"
|
||||
:close-on-click-modal="false"
|
||||
@@ -424,6 +440,12 @@ const submit = (item: any) => {
|
||||
.model-config {
|
||||
height: calc(100% - 16px);
|
||||
padding: 16px 0 16px 0;
|
||||
|
||||
.datasource-yet {
|
||||
padding-bottom: 0;
|
||||
height: auto;
|
||||
padding-top: 200px;
|
||||
}
|
||||
.model-methods {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
Reference in New Issue
Block a user