diff --git a/backend/apps/api.py b/backend/apps/api.py
index 23ca0175..f1fe6686 100644
--- a/backend/apps/api.py
+++ b/backend/apps/api.py
@@ -8,6 +8,7 @@
from apps.system.api import login, user, aimodel, workspace, assistant, parameter, apikey
from apps.terminology.api import terminology
from apps.settings.api import base
+#from apps.audit.api import audit_api
api_router = APIRouter()
@@ -28,3 +29,5 @@
api_router.include_router(apikey.router)
api_router.include_router(recommended_problem.router)
+
+#api_router.include_router(audit_api.router)
diff --git a/backend/apps/chat/api/chat.py b/backend/apps/chat/api/chat.py
index 6dfe495f..8cdfe674 100644
--- a/backend/apps/chat/api/chat.py
+++ b/backend/apps/chat/api/chat.py
@@ -21,8 +21,8 @@
from common.core.deps import CurrentAssistant, SessionDep, CurrentUser, Trans
from common.utils.command_utils import parse_quick_command
from common.utils.data_format import DataFormat
-from sqlbot_xpack.audit.models.log_model import OperationType, OperationDetails, OperationModules
-from sqlbot_xpack.audit.schemas.logger_decorator import system_log, LogConfig
+from sqlbot_xpack.audit.models.log_model import OperationType, OperationModules
+from sqlbot_xpack.audit.schemas.logger_decorator import LogConfig, system_log
router = APIRouter(tags=["Data Q&A"], prefix="/chat")
@@ -83,9 +83,8 @@ async def rename(session: SessionDep, chat: RenameChat):
@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,
+ operation_type=OperationType.DELETE,
+ module=OperationModules.CHAT,
resource_id_expr="chart_id",
remark_expr="brief"
))
@@ -102,9 +101,8 @@ async def delete(session: SessionDep, chart_id: int, brief: str):
@router.post("/start", response_model=ChatInfo, summary=f"{PLACEHOLDER_PREFIX}start_chat")
@require_permissions(permission=SqlbotPermission(type='ds', keyExpression="create_chat_obj.datasource"))
@system_log(LogConfig(
- operation_type=OperationType.CREATE_QA,
- operation_detail=OperationDetails.CREATE_QA_DETAILS,
- module=OperationModules.QA,
+ operation_type=OperationType.CREATE,
+ module=OperationModules.CHAT,
result_id_expr="id"
))
async def start_chat(session: SessionDep, current_user: CurrentUser, create_chat_obj: CreateChat):
diff --git a/backend/apps/dashboard/api/dashboard_api.py b/backend/apps/dashboard/api/dashboard_api.py
index f93d1af7..6a5ad485 100644
--- a/backend/apps/dashboard/api/dashboard_api.py
+++ b/backend/apps/dashboard/api/dashboard_api.py
@@ -3,8 +3,8 @@
from apps.dashboard.crud.dashboard_service import list_resource, load_resource, \
create_resource, create_canvas, validate_name, delete_resource, update_resource, update_canvas
from apps.dashboard.models.dashboard_model import CreateDashboard, BaseDashboard, QueryDashboard, DashboardResponse
-from sqlbot_xpack.audit.models.log_model import OperationType, OperationDetails, OperationModules
-from sqlbot_xpack.audit.schemas.logger_decorator import system_log, LogConfig
+from sqlbot_xpack.audit.models.log_model import OperationType, OperationModules
+from sqlbot_xpack.audit.schemas.logger_decorator import LogConfig, system_log
from common.core.deps import SessionDep, CurrentUser
router = APIRouter(tags=["dashboard"], prefix="/dashboard")
@@ -32,8 +32,7 @@ async def update_resource_api(session: SessionDep, user: CurrentUser, dashboard:
@router.delete("/delete_resource/{resource_id}/{name}")
@system_log(LogConfig(
- operation_type=OperationType.DELETE_DASHBOARD,
- operation_detail=OperationDetails.DELETE_DASHBOARD_DETAILS,
+ operation_type=OperationType.DELETE,
module=OperationModules.DASHBOARD,
resource_id_expr="resource_id",
remark_expr="name"
@@ -44,8 +43,7 @@ async def delete_resource_api(session: SessionDep, resource_id: str, name: str):
@router.post("/create_canvas", response_model=BaseDashboard)
@system_log(LogConfig(
- operation_type=OperationType.CREATE_DASHBOARD,
- operation_detail=OperationDetails.CREATE_DASHBOARD_DETAILS,
+ operation_type=OperationType.CREATE,
module=OperationModules.DASHBOARD,
result_id_expr="id"
))
@@ -55,8 +53,7 @@ async def create_canvas_api(session: SessionDep, user: CurrentUser, dashboard: C
@router.post("/update_canvas", response_model=BaseDashboard)
@system_log(LogConfig(
- operation_type=OperationType.UPDATE_DASHBOARD,
- operation_detail=OperationDetails.UPDATE_DASHBOARD_DETAILS,
+ operation_type=OperationType.UPDATE,
module=OperationModules.DASHBOARD,
resource_id_expr="dashboard.id"
))
diff --git a/backend/apps/datasource/api/datasource.py b/backend/apps/datasource/api/datasource.py
index a4d7caec..c3405bcb 100644
--- a/backend/apps/datasource/api/datasource.py
+++ b/backend/apps/datasource/api/datasource.py
@@ -28,8 +28,8 @@
from ..crud.table import get_tables_by_ds_id
from ..models.datasource import CoreDatasource, CreateDatasource, TableObj, CoreTable, CoreField, FieldObj, \
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
+from sqlbot_xpack.audit.models.log_model import OperationType, OperationModules
+from sqlbot_xpack.audit.schemas.logger_decorator import LogConfig, system_log
router = APIRouter(tags=["Datasource"], prefix="/datasource")
path = settings.EXCEL_PATH
@@ -72,8 +72,7 @@ def inner():
@router.post("/add", response_model=CoreDatasource, summary=f"{PLACEHOLDER_PREFIX}ds_add")
@system_log(LogConfig(
- operation_type=OperationType.CREATE_DATASOURCE,
- operation_detail=OperationDetails.CREATE_DATASOURCE_DETAILS,
+ operation_type=OperationType.CREATE,
module=OperationModules.DATASOURCE,
result_id_expr="id"
))
@@ -96,8 +95,7 @@ def inner():
@router.post("/update", response_model=CoreDatasource, summary=f"{PLACEHOLDER_PREFIX}ds_update")
@require_permissions(permission=SqlbotPermission(type='ds', keyExpression="ds.id"))
@system_log(LogConfig(
- operation_type=OperationType.UPDATE_DATASOURCE,
- operation_detail=OperationDetails.UPDATE_DATASOURCE_DETAILS,
+ operation_type=OperationType.UPDATE,
module=OperationModules.DATASOURCE,
resource_id_expr="ds.id"
))
@@ -111,8 +109,7 @@ def inner():
@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,
+ operation_type=OperationType.DELETE,
module=OperationModules.DATASOURCE,
resource_id_expr="id",
remark_expr="name"
diff --git a/backend/apps/system/api/login.py b/backend/apps/system/api/login.py
index 6b07f67a..80914228 100644
--- a/backend/apps/system/api/login.py
+++ b/backend/apps/system/api/login.py
@@ -11,9 +11,18 @@
from common.core.config import settings
from common.core.schemas import Token
from sqlbot_xpack.authentication.manage import logout as xpack_logout
+
+from sqlbot_xpack.audit.models.log_model import OperationType, OperationModules
+from sqlbot_xpack.audit.schemas.logger_decorator import system_log, LogConfig
+
router = APIRouter(tags=["login"], prefix="/login")
@router.post("/access-token")
+@system_log(LogConfig(
+ operation_type=OperationType.LOGIN,
+ module=OperationModules.USER,
+ result_id_expr="id"
+))
async def local_login(
session: SessionDep,
trans: Trans,
diff --git a/backend/apps/system/schemas/system_schema.py b/backend/apps/system/schemas/system_schema.py
index 9c67f92f..08d0d750 100644
--- a/backend/apps/system/schemas/system_schema.py
+++ b/backend/apps/system/schemas/system_schema.py
@@ -36,6 +36,7 @@ class BaseUserDTO(BaseUser, BaseCreatorDTO):
password: str
status: int = 1
origin: int = 0
+ name: str
def to_dict(self):
return {
diff --git a/backend/locales/en.json b/backend/locales/en.json
index 3c9aed5d..36ce8d36 100644
--- a/backend/locales/en.json
+++ b/backend/locales/en.json
@@ -125,44 +125,34 @@
"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",
+ "system_log": "Operation Log",
"operation_type_name": "Operation Type",
"operation_detail_info": "Operation Details",
- "user_name": "Operating User",
+ "user_name": "Operator",
"oid_name": "Workspace",
"operation_status_name": "Operation Status",
"error_message": "Error Message",
"ip_address": "IP Address",
- "create_time": "Operation Time"
+ "create_time": "Operation Time",
+ "chat": "AI Q&A",
+ "datasource": "Datasource",
+ "dashboard": "Dashboard",
+ "member": "Member",
+ "permission": "Permission",
+ "terminology": "Terminology",
+ "data_training": "SQL Examples",
+ "prompt_words": "Prompt Words",
+ "user": "User",
+ "workspace": "Workspace",
+ "ai_model": "AI Model",
+ "application": "Application",
+ "theme": "Appearance Settings",
+ "create": "Create",
+ "delete": "Delete",
+ "update": "Update",
+ "edit": "Edit",
+ "login": "Login",
+ "export": "Export",
+ "import": "Import"
}
}
\ No newline at end of file
diff --git a/backend/locales/ko-KR.json b/backend/locales/ko-KR.json
index 2b725828..89386a7c 100644
--- a/backend/locales/ko-KR.json
+++ b/backend/locales/ko-KR.json
@@ -125,44 +125,34 @@
"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": "시스템 로그",
+ "system_log": "작업 로그",
"operation_type_name": "작업 유형",
- "operation_detail_info": "작업 상세 정보",
- "user_name": "작업 사용자",
+ "operation_detail_info": "작업 상세",
+ "user_name": "작업자",
"oid_name": "작업 공간",
"operation_status_name": "작업 상태",
"error_message": "오류 메시지",
"ip_address": "IP 주소",
- "create_time": "작업 시간"
+ "create_time": "작업 시간",
+ "chat": "지능형 질의",
+ "datasource": "데이터 소스",
+ "dashboard": "대시보드",
+ "member": "구성원",
+ "permission": "권한",
+ "terminology": "용어",
+ "data_training": "SQL 예제 라이브러리",
+ "prompt_words": "프롬프트 단어",
+ "user": "사용자",
+ "workspace": "작업 공간",
+ "ai_model": "AI 모델",
+ "application": "애플리케이션",
+ "theme": "외관 설정",
+ "create": "생성",
+ "delete": "삭제",
+ "update": "수정",
+ "edit": "편집",
+ "login": "로그인",
+ "export": "내보내기",
+ "import": "가져오기"
}
}
\ No newline at end of file
diff --git a/backend/locales/zh-CN.json b/backend/locales/zh-CN.json
index 84236f34..1a374912 100644
--- a/backend/locales/zh-CN.json
+++ b/backend/locales/zh-CN.json
@@ -125,36 +125,6 @@
"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": "操作详情",
@@ -163,6 +133,26 @@
"operation_status_name": "操作状态",
"error_message": "错误信息",
"ip_address": "IP 地址",
- "create_time": "操作时间"
+ "create_time": "操作时间",
+ "chat": "智能问数",
+ "datasource": "数据源",
+ "dashboard": "仪表板",
+ "member": "成员",
+ "permission": "权限",
+ "terminology": "术语",
+ "data_training": "SQL 示例库",
+ "prompt_words": "提示词",
+ "user": "用户",
+ "workspace": "工作空间",
+ "ai_model": "AI 模型",
+ "application": "应用",
+ "theme": "外观配置",
+ "create": "新建",
+ "delete": "删除",
+ "update": "更新",
+ "edit": "编辑",
+ "login": "登录",
+ "export": "导出",
+ "import": "导入"
}
-}
+}
\ No newline at end of file
diff --git a/frontend/src/api/audit.ts b/frontend/src/api/audit.ts
index 7c19e90a..649d22a2 100644
--- a/frontend/src/api/audit.ts
+++ b/frontend/src/api/audit.ts
@@ -3,6 +3,7 @@ import { request } from '@/utils/request'
export const audit = {
getList: (pageNum: any, pageSize: any, params: any) =>
request.get(`/system/audit/page/${pageNum}/${pageSize}${params}`),
+ getOptions: () => request.get(`/system/audit/get_options`),
export2Excel: (params: any) =>
request.get(`/system/audit/export`, {
params,
diff --git a/frontend/src/assets/svg/log.svg b/frontend/src/assets/svg/log.svg
new file mode 100644
index 00000000..2c1a6704
--- /dev/null
+++ b/frontend/src/assets/svg/log.svg
@@ -0,0 +1,3 @@
+
diff --git a/frontend/src/assets/svg/menu/icon_log_filled.svg b/frontend/src/assets/svg/menu/icon_log_filled.svg
new file mode 100644
index 00000000..2c1a6704
--- /dev/null
+++ b/frontend/src/assets/svg/menu/icon_log_filled.svg
@@ -0,0 +1,3 @@
+
diff --git a/frontend/src/assets/svg/menu/icon_log_outlined.svg b/frontend/src/assets/svg/menu/icon_log_outlined.svg
new file mode 100644
index 00000000..af3f931a
--- /dev/null
+++ b/frontend/src/assets/svg/menu/icon_log_outlined.svg
@@ -0,0 +1,3 @@
+
diff --git a/frontend/src/components/drawer-filter/src/DrawerTimeFilter.vue b/frontend/src/components/drawer-filter/src/DrawerTimeFilter.vue
new file mode 100644
index 00000000..69c3eb28
--- /dev/null
+++ b/frontend/src/components/drawer-filter/src/DrawerTimeFilter.vue
@@ -0,0 +1,96 @@
+
+
+
+