Skip to content

Commit a2aa723

Browse files
committed
feat: Support log management
1 parent f1cdbc9 commit a2aa723

File tree

24 files changed

+938
-18
lines changed

24 files changed

+938
-18
lines changed

backend/apps/api.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
from apps.terminology.api import terminology
1010
from apps.settings.api import base
1111

12+
1213
api_router = APIRouter()
1314
api_router.include_router(login.router)
1415
api_router.include_router(user.router)

backend/apps/chat/api/chat.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -81,14 +81,15 @@ async def rename(session: SessionDep, chat: RenameChat):
8181
)
8282

8383

84-
@router.delete("/{chart_id}", response_model=str, summary=f"{PLACEHOLDER_PREFIX}delete_chat")
84+
@router.delete("/{chart_id}/{brief}", response_model=str, summary=f"{PLACEHOLDER_PREFIX}delete_chat")
8585
@system_log(LogConfig(
8686
operation_type=OperationType.DELETE_QA,
8787
operation_detail=OperationDetails.DELETE_QA_DETAILS,
8888
module=OperationModules.QA,
89-
resource_id_expr="chart_id"
89+
resource_id_expr="chart_id",
90+
remark_expr="brief"
9091
))
91-
async def delete(session: SessionDep, chart_id: int):
92+
async def delete(session: SessionDep, chart_id: int, brief: str):
9293
try:
9394
return delete_chat(session=session, chart_id=chart_id)
9495
except Exception as e:

backend/apps/dashboard/api/dashboard_api.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,15 @@ async def update_resource_api(session: SessionDep, user: CurrentUser, dashboard:
3030
return update_resource(session=session, user=user, dashboard=dashboard)
3131

3232

33-
@router.delete("/delete_resource/{resource_id}")
33+
@router.delete("/delete_resource/{resource_id}/{name}")
3434
@system_log(LogConfig(
3535
operation_type=OperationType.DELETE_DASHBOARD,
3636
operation_detail=OperationDetails.DELETE_DASHBOARD_DETAILS,
3737
module=OperationModules.DASHBOARD,
38-
resource_id_expr="resource_id"
38+
resource_id_expr="resource_id",
39+
remark_expr="name"
3940
))
40-
async def delete_resource_api(session: SessionDep, resource_id: str):
41+
async def delete_resource_api(session: SessionDep, resource_id: str, name: str):
4142
return delete_resource(session, resource_id)
4243

4344

backend/apps/datasource/api/datasource.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
TableSchemaResponse, ColumnSchemaResponse, PreviewResponse
3131
from sqlbot_xpack.audit.models.log_model import OperationType, OperationDetails, OperationModules
3232
from sqlbot_xpack.audit.schemas.logger_decorator import system_log, LogConfig
33+
3334
router = APIRouter(tags=["Datasource"], prefix="/datasource")
3435
path = settings.EXCEL_PATH
3536

@@ -107,15 +108,16 @@ def inner():
107108
return await asyncio.to_thread(inner)
108109

109110

110-
@router.post("/delete/{id}", response_model=None, summary=f"{PLACEHOLDER_PREFIX}ds_delete")
111+
@router.post("/delete/{id}/{name}", response_model=None, summary=f"{PLACEHOLDER_PREFIX}ds_delete")
111112
@require_permissions(permission=SqlbotPermission(type='ds', keyExpression="id"))
112113
@system_log(LogConfig(
113114
operation_type=OperationType.DELETE_DATASOURCE,
114115
operation_detail=OperationDetails.DELETE_DATASOURCE_DETAILS,
115116
module=OperationModules.DATASOURCE,
116-
resource_id_expr="id"
117+
resource_id_expr="id",
118+
remark_expr="name"
117119
))
118-
async def delete(session: SessionDep, id: int = Path(..., description=f"{PLACEHOLDER_PREFIX}ds_id")):
120+
async def delete(session: SessionDep, id: int = Path(..., description=f"{PLACEHOLDER_PREFIX}ds_id"), name: str = None):
119121
return delete_ds(session, id)
120122

121123

backend/locales/en.json

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,5 +121,48 @@
121121
},
122122
"i18n_authentication": {
123123
"record_not_exist": "{msg} record does not exist. Please save it first!"
124+
},
125+
"i18n_audit": {
126+
"success": "Success",
127+
"failed": "Failed",
128+
"create_qa": "Create Q&A",
129+
"delete_qa": "Delete Q&A",
130+
"create_datasource": "Create Datasource",
131+
"update_datasource": "Edit Datasource",
132+
"delete_datasource": "Delete Datasource",
133+
"create_dashboard": "Create Dashboard",
134+
"update_dashboard": "Edit Dashboard",
135+
"delete_dashboard": "Delete Dashboard",
136+
"setting_create_user": "Add Member",
137+
"setting_delete_user": "Remove Member",
138+
"setting_create_rule": "Add Rule Group",
139+
"setting_delete_rule": "Remove Rule Group",
140+
"setting_update_rule": "Configure Rules",
141+
"setting_update_rule_user": "Configure Users",
142+
"setting_create_terminology": "Create Terminology",
143+
"create_qa_details": "Create Q&A【{resource_name}】",
144+
"delete_qa_details": "Delete Q&A【{resource_name}】",
145+
"create_datasource_details": "Create Datasource【{resource_name}】",
146+
"update_datasource_details": "Edit Datasource【{resource_name}】",
147+
"delete_datasource_details": "Delete Datasource【{resource_name}】",
148+
"create_dashboard_details": "Create Dashboard【{resource_name}】",
149+
"update_dashboard_details": "Edit Dashboard【{resource_name}】",
150+
"delete_dashboard_details": "Delete Dashboard【{resource_name}】",
151+
"setting_create_user_details": "Add Member【{resource_name}】",
152+
"setting_delete_user_details": "Remove Member【{resource_name}】",
153+
"setting_create_rule_details": "Add Rule Group【{resource_name}】",
154+
"setting_delete_rule_details": "Remove Rule Group【{resource_name}】",
155+
"setting_update_rule_details": "Configure Rules【{resource_name}】",
156+
"setting_update_rule_user_details": "Configure Users【{resource_name}】",
157+
"setting_create_terminology_details": "Create Terminology【{resource_name}】",
158+
"system_log": "System Log",
159+
"operation_type_name": "Operation Type",
160+
"operation_detail_info": "Operation Details",
161+
"user_name": "Operating User",
162+
"oid_name": "Workspace",
163+
"operation_status_name": "Operation Status",
164+
"error_message": "Error Message",
165+
"ip_address": "IP Address",
166+
"create_time": "Operation Time"
124167
}
125168
}

backend/locales/ko-KR.json

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,5 +121,48 @@
121121
},
122122
"i18n_authentication": {
123123
"record_not_exist": "{msg} 기록이 존재하지 않습니다. 먼저 저장해 주세요!"
124+
},
125+
"i18n_audit": {
126+
"success": "성공",
127+
"failed": "실패",
128+
"create_qa": "Q&A 생성",
129+
"delete_qa": "Q&A 삭제",
130+
"create_datasource": "데이터 소스 생성",
131+
"update_datasource": "데이터 소스 편집",
132+
"delete_datasource": "데이터 소스 삭제",
133+
"create_dashboard": "대시보드 생성",
134+
"update_dashboard": "대시보드 편집",
135+
"delete_dashboard": "대시보드 삭제",
136+
"setting_create_user": "멤버 추가",
137+
"setting_delete_user": "멤버 제거",
138+
"setting_create_rule": "규칙 그룹 추가",
139+
"setting_delete_rule": "규칙 그룹 제거",
140+
"setting_update_rule": "규칙 설정",
141+
"setting_update_rule_user": "사용자 설정",
142+
"setting_create_terminology": "용어 생성",
143+
"create_qa_details": "Q&A 생성【{resource_name}】",
144+
"delete_qa_details": "Q&A 삭제【{resource_name}】",
145+
"create_datasource_details": "데이터 소스 생성【{resource_name}】",
146+
"update_datasource_details": "데이터 소스 편집【{resource_name}】",
147+
"delete_datasource_details": "데이터 소스 삭제【{resource_name}】",
148+
"create_dashboard_details": "대시보드 생성【{resource_name}】",
149+
"update_dashboard_details": "대시보드 편집【{resource_name}】",
150+
"delete_dashboard_details": "대시보드 삭제【{resource_name}】",
151+
"setting_create_user_details": "멤버 추가【{resource_name}】",
152+
"setting_delete_user_details": "멤버 제거【{resource_name}】",
153+
"setting_create_rule_details": "규칙 그룹 추가【{resource_name}】",
154+
"setting_delete_rule_details": "규칙 그룹 제거【{resource_name}】",
155+
"setting_update_rule_details": "규칙 설정【{resource_name}】",
156+
"setting_update_rule_user_details": "사용자 설정【{resource_name}】",
157+
"setting_create_terminology_details": "용어 생성【{resource_name}】",
158+
"system_log": "시스템 로그",
159+
"operation_type_name": "작업 유형",
160+
"operation_detail_info": "작업 상세 정보",
161+
"user_name": "작업 사용자",
162+
"oid_name": "작업 공간",
163+
"operation_status_name": "작업 상태",
164+
"error_message": "오류 메시지",
165+
"ip_address": "IP 주소",
166+
"create_time": "작업 시간"
124167
}
125168
}

backend/locales/zh-CN.json

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,5 +121,48 @@
121121
},
122122
"i18n_authentication": {
123123
"record_not_exist": "{msg} 记录不存在,请先保存!"
124+
},
125+
"i18n_audit": {
126+
"success": "成功",
127+
"failed": "失败",
128+
"create_qa": "新建问数",
129+
"delete_qa": "删除问数",
130+
"create_datasource": "新建数据源",
131+
"update_datasource": "编辑数据源",
132+
"delete_datasource": "删除数据源",
133+
"create_dashboard": "新建仪表板",
134+
"update_dashboard": "编辑仪表板",
135+
"delete_dashboard": "删除仪表板",
136+
"setting_create_user": "添加成员",
137+
"setting_delete_user": "移除成员",
138+
"setting_create_rule": "添加规则组",
139+
"setting_delete_rule": "移除规则组",
140+
"setting_update_rule": "设置规则",
141+
"setting_update_rule_user": "设置用户",
142+
"setting_create_terminology": "新建术语",
143+
"create_qa_details": "新建问数【{resource_name}】",
144+
"delete_qa_details": "删除问数【{resource_name}】",
145+
"create_datasource_details": "新建数据源【{resource_name}】",
146+
"update_datasource_details": "编辑数据源【{resource_name}】",
147+
"delete_datasource_details": "删除数据源【{resource_name}】",
148+
"create_dashboard_details": "新建仪表板【{resource_name}】",
149+
"update_dashboard_details": "编辑仪表板【{resource_name}】",
150+
"delete_dashboard_details": "删除仪表板【{resource_name}】",
151+
"setting_create_user_details": "添加成员【{resource_name}】",
152+
"setting_delete_user_details": "移除成员【{resource_name}】",
153+
"setting_create_rule_details": "添加规则组【{resource_name}】",
154+
"setting_delete_rule_details": "移除规则组【{resource_name}】",
155+
"setting_update_rule_details": "设置规则【{resource_name}】",
156+
"setting_update_rule_user_details": "设置用户【{resource_name}】",
157+
"setting_create_terminology_details": "新建术语【{resource_name}】",
158+
"system_log": "操作日志",
159+
"operation_type_name": "操作类型",
160+
"operation_detail_info": "操作详情",
161+
"user_name": "操作用户",
162+
"oid_name": "工作空间",
163+
"operation_status_name": "操作状态",
164+
"error_message": "错误信息",
165+
"ip_address": "IP 地址",
166+
"create_time": "操作时间"
124167
}
125-
}
168+
}

backend/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,11 +83,11 @@ url = "https://test.pypi.org/simple"
8383
explicit = true
8484

8585
[tool.uv.sources]
86-
sqlbot-xpack = { index = "testpypi" }
8786
torch = [
8887
{ index = "pytorch-cpu", extra = "cpu" },
8988
{ index = "pytorch-cu128", extra = "cu128" },
9089
]
90+
sqlbot-xpack = { path = "../../sqlbot-xpack" }
9191

9292
[tool.uv]
9393
conflicts = [

frontend/src/api/audit.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import { request } from '@/utils/request'
2+
3+
export const audit = {
4+
getList: (pageNum: any, pageSize: any, params: any) =>
5+
request.get(`/system/audit/page/${pageNum}/${pageSize}${params}`),
6+
export2Excel: (params: any) =>
7+
request.get(`/system/audit/export`, {
8+
params,
9+
responseType: 'blob',
10+
requestOptions: { customError: true },
11+
}),
12+
}

frontend/src/api/chat.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -324,8 +324,8 @@ export const chatApi = {
324324
renameChat: (chat_id: number | undefined, brief: string): Promise<string> => {
325325
return request.post('/chat/rename', { id: chat_id, brief: brief })
326326
},
327-
deleteChat: (id: number | undefined): Promise<string> => {
328-
return request.delete(`/chat/${id}`)
327+
deleteChat: (id: number | undefined, brief: string): Promise<string> => {
328+
return request.delete(`/chat/${id}/${brief}`)
329329
},
330330
analysis: (record_id: number | undefined, controller?: AbortController) => {
331331
return request.fetchStream(`/chat/record/${record_id}/analysis`, {}, controller)

0 commit comments

Comments
 (0)