Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions backend/apps/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
from apps.terminology.api import terminology
from apps.settings.api import base


api_router = APIRouter()
api_router.include_router(login.router)
api_router.include_router(user.router)
Expand Down
7 changes: 4 additions & 3 deletions backend/apps/chat/api/chat.py
Original file line number Diff line number Diff line change
Expand Up @@ -81,14 +81,15 @@ async def rename(session: SessionDep, chat: RenameChat):
)


@router.delete("/{chart_id}", response_model=str, summary=f"{PLACEHOLDER_PREFIX}delete_chat")
@router.delete("/{chart_id}/{brief}", response_model=str, summary=f"{PLACEHOLDER_PREFIX}delete_chat")
@system_log(LogConfig(
operation_type=OperationType.DELETE_QA,
operation_detail=OperationDetails.DELETE_QA_DETAILS,
module=OperationModules.QA,
resource_id_expr="chart_id"
resource_id_expr="chart_id",
remark_expr="brief"
))
async def delete(session: SessionDep, chart_id: int):
async def delete(session: SessionDep, chart_id: int, brief: str):
try:
return delete_chat(session=session, chart_id=chart_id)
except Exception as e:
Expand Down
7 changes: 4 additions & 3 deletions backend/apps/dashboard/api/dashboard_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,14 +30,15 @@ async def update_resource_api(session: SessionDep, user: CurrentUser, dashboard:
return update_resource(session=session, user=user, dashboard=dashboard)


@router.delete("/delete_resource/{resource_id}")
@router.delete("/delete_resource/{resource_id}/{name}")
@system_log(LogConfig(
operation_type=OperationType.DELETE_DASHBOARD,
operation_detail=OperationDetails.DELETE_DASHBOARD_DETAILS,
module=OperationModules.DASHBOARD,
resource_id_expr="resource_id"
resource_id_expr="resource_id",
remark_expr="name"
))
async def delete_resource_api(session: SessionDep, resource_id: str):
async def delete_resource_api(session: SessionDep, resource_id: str, name: str):
return delete_resource(session, resource_id)


Expand Down
8 changes: 5 additions & 3 deletions backend/apps/datasource/api/datasource.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
TableSchemaResponse, ColumnSchemaResponse, PreviewResponse
from sqlbot_xpack.audit.models.log_model import OperationType, OperationDetails, OperationModules
from sqlbot_xpack.audit.schemas.logger_decorator import system_log, LogConfig

router = APIRouter(tags=["Datasource"], prefix="/datasource")
path = settings.EXCEL_PATH

Expand Down Expand Up @@ -107,15 +108,16 @@ def inner():
return await asyncio.to_thread(inner)


@router.post("/delete/{id}", response_model=None, summary=f"{PLACEHOLDER_PREFIX}ds_delete")
@router.post("/delete/{id}/{name}", response_model=None, summary=f"{PLACEHOLDER_PREFIX}ds_delete")
@require_permissions(permission=SqlbotPermission(type='ds', keyExpression="id"))
@system_log(LogConfig(
operation_type=OperationType.DELETE_DATASOURCE,
operation_detail=OperationDetails.DELETE_DATASOURCE_DETAILS,
module=OperationModules.DATASOURCE,
resource_id_expr="id"
resource_id_expr="id",
remark_expr="name"
))
async def delete(session: SessionDep, id: int = Path(..., description=f"{PLACEHOLDER_PREFIX}ds_id")):
async def delete(session: SessionDep, id: int = Path(..., description=f"{PLACEHOLDER_PREFIX}ds_id"), name: str = None):
return delete_ds(session, id)


Expand Down
43 changes: 43 additions & 0 deletions backend/locales/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -121,5 +121,48 @@
},
"i18n_authentication": {
"record_not_exist": "{msg} record does not exist. Please save it first!"
},
"i18n_audit": {
"success": "Success",
"failed": "Failed",
"create_qa": "Create Q&A",
"delete_qa": "Delete Q&A",
"create_datasource": "Create Datasource",
"update_datasource": "Edit Datasource",
"delete_datasource": "Delete Datasource",
"create_dashboard": "Create Dashboard",
"update_dashboard": "Edit Dashboard",
"delete_dashboard": "Delete Dashboard",
"setting_create_user": "Add Member",
"setting_delete_user": "Remove Member",
"setting_create_rule": "Add Rule Group",
"setting_delete_rule": "Remove Rule Group",
"setting_update_rule": "Configure Rules",
"setting_update_rule_user": "Configure Users",
"setting_create_terminology": "Create Terminology",
"create_qa_details": "Create Q&A【{resource_name}】",
"delete_qa_details": "Delete Q&A【{resource_name}】",
"create_datasource_details": "Create Datasource【{resource_name}】",
"update_datasource_details": "Edit Datasource【{resource_name}】",
"delete_datasource_details": "Delete Datasource【{resource_name}】",
"create_dashboard_details": "Create Dashboard【{resource_name}】",
"update_dashboard_details": "Edit Dashboard【{resource_name}】",
"delete_dashboard_details": "Delete Dashboard【{resource_name}】",
"setting_create_user_details": "Add Member【{resource_name}】",
"setting_delete_user_details": "Remove Member【{resource_name}】",
"setting_create_rule_details": "Add Rule Group【{resource_name}】",
"setting_delete_rule_details": "Remove Rule Group【{resource_name}】",
"setting_update_rule_details": "Configure Rules【{resource_name}】",
"setting_update_rule_user_details": "Configure Users【{resource_name}】",
"setting_create_terminology_details": "Create Terminology【{resource_name}】",
"system_log": "System Log",
"operation_type_name": "Operation Type",
"operation_detail_info": "Operation Details",
"user_name": "Operating User",
"oid_name": "Workspace",
"operation_status_name": "Operation Status",
"error_message": "Error Message",
"ip_address": "IP Address",
"create_time": "Operation Time"
}
}
43 changes: 43 additions & 0 deletions backend/locales/ko-KR.json
Original file line number Diff line number Diff line change
Expand Up @@ -121,5 +121,48 @@
},
"i18n_authentication": {
"record_not_exist": "{msg} 기록이 존재하지 않습니다. 먼저 저장해 주세요!"
},
"i18n_audit": {
"success": "성공",
"failed": "실패",
"create_qa": "Q&A 생성",
"delete_qa": "Q&A 삭제",
"create_datasource": "데이터 소스 생성",
"update_datasource": "데이터 소스 편집",
"delete_datasource": "데이터 소스 삭제",
"create_dashboard": "대시보드 생성",
"update_dashboard": "대시보드 편집",
"delete_dashboard": "대시보드 삭제",
"setting_create_user": "멤버 추가",
"setting_delete_user": "멤버 제거",
"setting_create_rule": "규칙 그룹 추가",
"setting_delete_rule": "규칙 그룹 제거",
"setting_update_rule": "규칙 설정",
"setting_update_rule_user": "사용자 설정",
"setting_create_terminology": "용어 생성",
"create_qa_details": "Q&A 생성【{resource_name}】",
"delete_qa_details": "Q&A 삭제【{resource_name}】",
"create_datasource_details": "데이터 소스 생성【{resource_name}】",
"update_datasource_details": "데이터 소스 편집【{resource_name}】",
"delete_datasource_details": "데이터 소스 삭제【{resource_name}】",
"create_dashboard_details": "대시보드 생성【{resource_name}】",
"update_dashboard_details": "대시보드 편집【{resource_name}】",
"delete_dashboard_details": "대시보드 삭제【{resource_name}】",
"setting_create_user_details": "멤버 추가【{resource_name}】",
"setting_delete_user_details": "멤버 제거【{resource_name}】",
"setting_create_rule_details": "규칙 그룹 추가【{resource_name}】",
"setting_delete_rule_details": "규칙 그룹 제거【{resource_name}】",
"setting_update_rule_details": "규칙 설정【{resource_name}】",
"setting_update_rule_user_details": "사용자 설정【{resource_name}】",
"setting_create_terminology_details": "용어 생성【{resource_name}】",
"system_log": "시스템 로그",
"operation_type_name": "작업 유형",
"operation_detail_info": "작업 상세 정보",
"user_name": "작업 사용자",
"oid_name": "작업 공간",
"operation_status_name": "작업 상태",
"error_message": "오류 메시지",
"ip_address": "IP 주소",
"create_time": "작업 시간"
}
}
45 changes: 44 additions & 1 deletion backend/locales/zh-CN.json
Original file line number Diff line number Diff line change
Expand Up @@ -121,5 +121,48 @@
},
"i18n_authentication": {
"record_not_exist": "{msg} 记录不存在,请先保存!"
},
"i18n_audit": {
"success": "成功",
"failed": "失败",
"create_qa": "新建问数",
"delete_qa": "删除问数",
"create_datasource": "新建数据源",
"update_datasource": "编辑数据源",
"delete_datasource": "删除数据源",
"create_dashboard": "新建仪表板",
"update_dashboard": "编辑仪表板",
"delete_dashboard": "删除仪表板",
"setting_create_user": "添加成员",
"setting_delete_user": "移除成员",
"setting_create_rule": "添加规则组",
"setting_delete_rule": "移除规则组",
"setting_update_rule": "设置规则",
"setting_update_rule_user": "设置用户",
"setting_create_terminology": "新建术语",
"create_qa_details": "新建问数【{resource_name}】",
"delete_qa_details": "删除问数【{resource_name}】",
"create_datasource_details": "新建数据源【{resource_name}】",
"update_datasource_details": "编辑数据源【{resource_name}】",
"delete_datasource_details": "删除数据源【{resource_name}】",
"create_dashboard_details": "新建仪表板【{resource_name}】",
"update_dashboard_details": "编辑仪表板【{resource_name}】",
"delete_dashboard_details": "删除仪表板【{resource_name}】",
"setting_create_user_details": "添加成员【{resource_name}】",
"setting_delete_user_details": "移除成员【{resource_name}】",
"setting_create_rule_details": "添加规则组【{resource_name}】",
"setting_delete_rule_details": "移除规则组【{resource_name}】",
"setting_update_rule_details": "设置规则【{resource_name}】",
"setting_update_rule_user_details": "设置用户【{resource_name}】",
"setting_create_terminology_details": "新建术语【{resource_name}】",
"system_log": "操作日志",
"operation_type_name": "操作类型",
"operation_detail_info": "操作详情",
"user_name": "操作用户",
"oid_name": "工作空间",
"operation_status_name": "操作状态",
"error_message": "错误信息",
"ip_address": "IP 地址",
"create_time": "操作时间"
}
}
}
2 changes: 1 addition & 1 deletion backend/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -83,11 +83,11 @@ url = "https://test.pypi.org/simple"
explicit = true

[tool.uv.sources]
sqlbot-xpack = { index = "testpypi" }
torch = [
{ index = "pytorch-cpu", extra = "cpu" },
{ index = "pytorch-cu128", extra = "cu128" },
]
sqlbot-xpack = { path = "../../sqlbot-xpack" }

[tool.uv]
conflicts = [
Expand Down
12 changes: 12 additions & 0 deletions frontend/src/api/audit.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import { request } from '@/utils/request'

export const audit = {
getList: (pageNum: any, pageSize: any, params: any) =>
request.get(`/system/audit/page/${pageNum}/${pageSize}${params}`),
export2Excel: (params: any) =>
request.get(`/system/audit/export`, {
params,
responseType: 'blob',
requestOptions: { customError: true },
}),
}
4 changes: 2 additions & 2 deletions frontend/src/api/chat.ts
Original file line number Diff line number Diff line change
Expand Up @@ -324,8 +324,8 @@ export const chatApi = {
renameChat: (chat_id: number | undefined, brief: string): Promise<string> => {
return request.post('/chat/rename', { id: chat_id, brief: brief })
},
deleteChat: (id: number | undefined): Promise<string> => {
return request.delete(`/chat/${id}`)
deleteChat: (id: number | undefined, brief: string): Promise<string> => {
return request.delete(`/chat/${id}/${brief}`)
},
analysis: (record_id: number | undefined, controller?: AbortController) => {
return request.fetchStream(`/chat/record/${record_id}/analysis`, {}, controller)
Expand Down
2 changes: 1 addition & 1 deletion frontend/src/api/dashboard.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,6 @@ export const dashboardApi = {
update_canvas: (params: any) => request.post('/dashboard/update_canvas', params),
check_name: (params: any) => request.post('/dashboard/check_name', params),
delete_resource: (params: any) =>
request.delete(`/dashboard/delete_resource/${params.id}`, params),
request.delete(`/dashboard/delete_resource/${params.id}/${params.name}`, params),
move_resource: (params: any) => request.delete(`/dashboard/move_resource/${params.id}`, params),
}
2 changes: 1 addition & 1 deletion frontend/src/api/datasource.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ export const datasourceApi = {
add: (data: any) => request.post('/datasource/add', data),
list: () => request.get('/datasource/list'),
update: (data: any) => request.post('/datasource/update', data),
delete: (id: number) => request.post(`/datasource/delete/${id}`),
delete: (id: number, name: str) => request.post(`/datasource/delete/${id}/${name}`),
getTables: (id: number) => request.post(`/datasource/getTables/${id}`),
getTablesByConf: (data: any) => request.post('/datasource/getTablesByConf', data),
getFields: (id: number, table_name: string) =>
Expand Down
11 changes: 11 additions & 0 deletions frontend/src/assets/svg/icon_error.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
15 changes: 15 additions & 0 deletions frontend/src/assets/svg/icon_issue.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
11 changes: 11 additions & 0 deletions frontend/src/assets/svg/icon_success.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions frontend/src/components/layout/Menu.vue
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ const routerList = computed(() => {
!route.path.includes('prompt') &&
!route.path.includes('permission') &&
!route.path.includes('preview') &&
!route.path.includes('audit') &&
route.path !== '/login' &&
route.path !== '/admin-login' &&
!route.path.includes('/system') &&
Expand Down
34 changes: 34 additions & 0 deletions frontend/src/i18n/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -822,6 +822,40 @@
"modelType": {
"llm": "Large Language Model"
},
"audit": {
"system_log": "System Log",
"search_log": "Search Log",
"operation_type": "Operation Type",
"operation_details": "Operation Details",
"operation_user_name": "Operating User",
"operation_status": "Operation Status",
"user_name": "User Name",
"oid_name": "Workspace",
"ip_address": "IP Address",
"create_time": "Creation Time",
"no_log": "No Logs Available",
"all_236_terms": "Export all {msg} log entries?",
"export_hint": "Export all logs?",
"export": "Export",
"success": "Success",
"failed": "Failed",
"failed_info": "Operation Failure Details",
"create_qa": "Create Q&A",
"delete_qa": "Delete Q&A",
"create_datasource": "Create Datasource",
"update_datasource": "Edit Datasource",
"delete_datasource": "Delete Datasource",
"create_dashboard": "Create Dashboard",
"update_dashboard": "Edit Dashboard",
"delete_dashboard": "Delete Dashboard",
"setting_create_user": "Add Member",
"setting_delete_user": "Remove Member",
"setting_create_rule": "Add Rule Group",
"setting_delete_rule": "Remove Rule Group",
"setting_update_rule": "Configure Rules",
"setting_update_rule_user": "Configure Users",
"setting_create_terminology": "Create Terminology"
}
"api_key": {
"info_tips": "The API Key is your credential for accessing the SQLBot API, with full permissions for your account. Please keep it secure! Do not disclose the API Key in any public channels to avoid security risks from unauthorized use.",
"create": "Create",
Expand Down
Loading