refactor: Add logs to the system operation method (#692)

This commit is contained in:
王嘉豪
2025-12-26 11:49:25 +08:00
committed by GitHub
parent 15cecdb9e3
commit 5c88ff8054
17 changed files with 138 additions and 19 deletions
+1 -1
View File
@@ -8,7 +8,7 @@ from apps.mcp import mcp
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
#from audit.api import audit_api
api_router = APIRouter()
+5
View File
@@ -71,6 +71,11 @@ async def chat_predict_data(session: SessionDep, chat_record_id: int):
@router.post("/rename", response_model=str, summary=f"{PLACEHOLDER_PREFIX}rename_chat")
@system_log(LogConfig(
operation_type=OperationType.UPDATE,
module=OperationModules.CHAT,
resource_id_expr="chat.id"
))
async def rename(session: SessionDep, chat: RenameChat):
try:
return rename_chat(session=session, rename_object=chat)
@@ -26,6 +26,11 @@ async def create_resource_api(session: SessionDep, user: CurrentUser, dashboard:
@router.post("/update_resource", response_model=BaseDashboard)
@system_log(LogConfig(
operation_type=OperationType.UPDATE,
module=OperationModules.DASHBOARD,
resource_id_expr="dashboard.id"
))
async def update_resource_api(session: SessionDep, user: CurrentUser, dashboard: QueryDashboard):
return update_resource(session=session, user=user, dashboard=dashboard)
@@ -19,6 +19,8 @@ from common.core.config import settings
from common.core.deps import SessionDep, CurrentUser, Trans
from common.utils.data_format import DataFormat
from common.utils.excel import get_excel_column_count
from sqlbot_xpack.audit.models.log_model import OperationType, OperationModules
from sqlbot_xpack.audit.schemas.logger_decorator import LogConfig, system_log
router = APIRouter(tags=["SQL Examples"], prefix="/system/data-training")
@@ -40,6 +42,7 @@ async def pager(session: SessionDep, current_user: CurrentUser, current_page: in
@router.put("", response_model=int, summary=f"{PLACEHOLDER_PREFIX}create_or_update_dt")
@system_log(LogConfig(operation_type=OperationType.CREATE_OR_UPDATE, module=OperationModules.DATA_TRAINING,resource_id_expr='info.id', result_id_expr="result_self"))
async def create_or_update(session: SessionDep, current_user: CurrentUser, trans: Trans, info: DataTrainingInfo):
oid = current_user.oid
if info.id:
@@ -49,16 +52,19 @@ async def create_or_update(session: SessionDep, current_user: CurrentUser, trans
@router.delete("", summary=f"{PLACEHOLDER_PREFIX}delete_dt")
@system_log(LogConfig(operation_type=OperationType.DELETE, module=OperationModules.DATA_TRAINING,resource_id_expr='id_list'))
async def delete(session: SessionDep, id_list: list[int]):
delete_training(session, id_list)
@router.get("/{id}/enable/{enabled}", summary=f"{PLACEHOLDER_PREFIX}enable_dt")
@system_log(LogConfig(operation_type=OperationType.UPDATE, module=OperationModules.DATA_TRAINING,resource_id_expr='id'))
async def enable(session: SessionDep, id: int, enabled: bool, trans: Trans):
enable_training(session, id, enabled, trans)
@router.get("/export", summary=f"{PLACEHOLDER_PREFIX}export_dt")
@system_log(LogConfig(operation_type=OperationType.EXPORT, module=OperationModules.DATA_TRAINING))
async def export_excel(session: SessionDep, trans: Trans, current_user: CurrentUser,
question: Optional[str] = Query(None, description="搜索术语(可选)")):
def inner():
@@ -148,6 +154,7 @@ session_maker = scoped_session(sessionmaker(bind=engine, class_=Session))
@router.post("/uploadExcel", summary=f"{PLACEHOLDER_PREFIX}upload_excel_dt")
@system_log(LogConfig(operation_type=OperationType.IMPORT, module=OperationModules.DATA_TRAINING))
async def upload_excel(trans: Trans, current_user: CurrentUser, file: UploadFile = File(...)):
ALLOWED_EXTENSIONS = {"xlsx", "xls"}
if not file.filename.lower().endswith(tuple(ALLOWED_EXTENSIONS)):
@@ -5,6 +5,8 @@ from apps.datasource.crud.recommended_problem import get_datasource_recommended,
save_recommended_problem, get_datasource_recommended_base
from apps.datasource.models.datasource import RecommendedProblemBase
from common.core.deps import SessionDep, CurrentUser
from sqlbot_xpack.audit.models.log_model import OperationType, OperationModules
from sqlbot_xpack.audit.schemas.logger_decorator import LogConfig, system_log
router = APIRouter(tags=["recommended_problem"], prefix="/recommended_problem")
@@ -19,6 +21,8 @@ async def datasource_recommended(session: SessionDep, ds_id: int):
@router.post("/save_recommended_problem")
@system_log(
LogConfig(operation_type=OperationType.UPDATE, module=OperationModules.DATASOURCE, resource_id_expr="data_info.datasource_id"))
async def datasource_recommended(session: SessionDep, user: CurrentUser, data_info: RecommendedProblemBase):
update_ds_recommended_config(session, data_info.datasource_id, data_info.recommended_config)
return save_recommended_problem(session, user, data_info)
+11 -4
View File
@@ -16,6 +16,8 @@ from common.utils.time import get_timestamp
from common.utils.utils import SQLBotLogUtil, prepare_model_arg
router = APIRouter(tags=["system_model"], prefix="/system/aimodel")
from sqlbot_xpack.audit.models.log_model import OperationType, OperationModules
from sqlbot_xpack.audit.schemas.logger_decorator import LogConfig, system_log
@router.post("/status", include_in_schema=False)
@require_permissions(permission=SqlbotPermission(role=['admin']))
@@ -54,7 +56,8 @@ async def check_default(session: SessionDep, trans: Trans):
raise Exception(trans('i18n_llm.miss_default'))
@router.put("/default/{id}", summary=f"{PLACEHOLDER_PREFIX}system_model_default", description=f"{PLACEHOLDER_PREFIX}system_model_default")
@require_permissions(permission=SqlbotPermission(role=['admin']))
@require_permissions(permission=SqlbotPermission(role=['admin']))
@system_log(LogConfig(operation_type=OperationType.UPDATE, module=OperationModules.AI_MODEL, resource_id_expr="id"))
async def set_default(session: SessionDep, id: int = Path(description="ID")):
db_model = session.get(AiModelDetail, id)
if not db_model:
@@ -122,7 +125,8 @@ async def get_model_by_id(
return AiModelEditor(**data)
@router.post("", summary=f"{PLACEHOLDER_PREFIX}system_model_create", description=f"{PLACEHOLDER_PREFIX}system_model_create")
@require_permissions(permission=SqlbotPermission(role=['admin']))
@require_permissions(permission=SqlbotPermission(role=['admin']))
@system_log(LogConfig(operation_type=OperationType.CREATE, module=OperationModules.AI_MODEL, result_id_expr="id"))
async def add_model(
session: SessionDep,
creator: AiModelCreator
@@ -137,9 +141,11 @@ async def add_model(
detail.default_model = True
session.add(detail)
session.commit()
return detail
@router.put("", summary=f"{PLACEHOLDER_PREFIX}system_model_update", description=f"{PLACEHOLDER_PREFIX}system_model_update")
@require_permissions(permission=SqlbotPermission(role=['admin']))
@require_permissions(permission=SqlbotPermission(role=['admin']))
@system_log(LogConfig(operation_type=OperationType.UPDATE, module=OperationModules.AI_MODEL, resource_id_expr="editor.id"))
async def update_model(
session: SessionDep,
editor: AiModelEditor
@@ -155,7 +161,8 @@ async def update_model(
session.commit()
@router.delete("/{id}", summary=f"{PLACEHOLDER_PREFIX}system_model_del", description=f"{PLACEHOLDER_PREFIX}system_model_del")
@require_permissions(permission=SqlbotPermission(role=['admin']))
@require_permissions(permission=SqlbotPermission(role=['admin']))
@system_log(LogConfig(operation_type=OperationType.DELETE, module=OperationModules.AI_MODEL, resource_id_expr="id"))
async def delete_model(
session: SessionDep,
trans: Trans,
+5
View File
@@ -9,6 +9,8 @@ from common.utils.time import get_timestamp
import secrets
router = APIRouter(tags=["system_apikey"], prefix="/system/apikey", include_in_schema=False)
from sqlbot_xpack.audit.models.log_model import OperationType, OperationModules
from sqlbot_xpack.audit.schemas.logger_decorator import LogConfig, system_log
@router.get("")
async def grid(session: SessionDep, current_user: CurrentUser) -> list[ApikeyGridItem]:
@@ -16,6 +18,7 @@ async def grid(session: SessionDep, current_user: CurrentUser) -> list[ApikeyGri
return session.exec(query).all()
@router.post("")
@system_log(LogConfig(operation_type=OperationType.CREATE, module=OperationModules.API_KEY,result_id_expr='result.self'))
async def create(session: SessionDep, current_user: CurrentUser):
count = session.exec(select(func.count()).select_from(ApiKeyModel)).one()
if count >= 5:
@@ -34,6 +37,7 @@ async def create(session: SessionDep, current_user: CurrentUser):
return api_key.id
@router.put("/status")
@system_log(LogConfig(operation_type=OperationType.UPDATE, module=OperationModules.API_KEY,resource_id_expr='id'))
async def status(session: SessionDep, current_user: CurrentUser, dto: ApikeyStatus):
api_key = session.get(ApiKeyModel, dto.id)
if not api_key:
@@ -48,6 +52,7 @@ async def status(session: SessionDep, current_user: CurrentUser, dto: ApikeyStat
session.commit()
@router.delete("/{id}")
@system_log(LogConfig(operation_type=OperationType.DELETE, module=OperationModules.API_KEY,resource_id_expr='id'))
async def delete(session: SessionDep, current_user: CurrentUser, id: int):
api_key = session.get(ApiKeyModel, id)
if not api_key:
+6 -1
View File
@@ -21,6 +21,8 @@ from common.core.sqlbot_cache import clear_cache
from common.utils.utils import get_origin_from_referer, origin_match_domain
router = APIRouter(tags=["system_assistant"], prefix="/system/assistant")
from sqlbot_xpack.audit.models.log_model import OperationType, OperationModules
from sqlbot_xpack.audit.schemas.logger_decorator import LogConfig, system_log
@router.get("/info/{id}", include_in_schema=False)
@@ -168,12 +170,14 @@ async def query_advanced_application(session: SessionDep):
@router.post("", summary=f"{PLACEHOLDER_PREFIX}assistant_create_api", description=f"{PLACEHOLDER_PREFIX}assistant_create_api")
@system_log(LogConfig(operation_type=OperationType.CREATE, module=OperationModules.APPLICATION, result_id_expr="id"))
async def add(request: Request, session: SessionDep, creator: AssistantBase):
await save(request, session, creator)
return await save(request, session, creator)
@router.put("", summary=f"{PLACEHOLDER_PREFIX}assistant_update_api", description=f"{PLACEHOLDER_PREFIX}assistant_update_api")
@clear_cache(namespace=CacheNamespace.EMBEDDED_INFO, cacheName=CacheName.ASSISTANT_INFO, keyExpression="editor.id")
@system_log(LogConfig(operation_type=OperationType.UPDATE, module=OperationModules.APPLICATION, resource_id_expr="editor.id"))
async def update(request: Request, session: SessionDep, editor: AssistantDTO):
id = editor.id
db_model = session.get(AssistantModel, id)
@@ -197,6 +201,7 @@ async def get_one(session: SessionDep, id: int = Path(description="ID")):
@router.delete("/{id}", summary=f"{PLACEHOLDER_PREFIX}assistant_del_api", description=f"{PLACEHOLDER_PREFIX}assistant_del_api")
@clear_cache(namespace=CacheNamespace.EMBEDDED_INFO, cacheName=CacheName.ASSISTANT_INFO, keyExpression="id")
@system_log(LogConfig(operation_type=OperationType.DELETE, module=OperationModules.APPLICATION, resource_id_expr="id"))
async def delete(request: Request, session: SessionDep, id: int = Path(description="ID")):
db_model = session.get(AssistantModel, id)
if not db_model:
+3 -1
View File
@@ -6,7 +6,8 @@ from apps.system.schemas.permission import SqlbotPermission, require_permissions
from common.core.deps import SessionDep
router = APIRouter(tags=["system/parameter"], prefix="/system/parameter", include_in_schema=False)
from sqlbot_xpack.audit.models.log_model import OperationType, OperationModules
from sqlbot_xpack.audit.schemas.logger_decorator import LogConfig, system_log
@router.get("/login")
async def get_login_args(session: SessionDep) -> list[SysArgModel]:
@@ -21,6 +22,7 @@ async def get_args(session: SessionDep) -> list[SysArgModel]:
@router.post("", )
@require_permissions(permission=SqlbotPermission(role=['admin']))
@system_log(LogConfig(operation_type=OperationType.UPDATE, module=OperationModules.PARAMS_SETTING))
async def save_args(session: SessionDep, request: Request):
return await save_parameter_args(session=session, request=request)
+41 -2
View File
@@ -9,6 +9,8 @@ from apps.system.models.user import UserModel
from apps.system.schemas.auth import CacheName, CacheNamespace
from apps.system.schemas.permission import SqlbotPermission, require_permissions
from apps.system.schemas.system_schema import PwdEditor, UserCreator, UserEditor, UserGrid, UserInfoDTO, UserLanguage, UserStatus, UserWs
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 CurrentUser, SessionDep, Trans
from common.core.pagination import Paginator
from common.core.schemas import PaginatedResponse, PaginationParams
@@ -117,6 +119,11 @@ async def ws_options(session: SessionDep, current_user: CurrentUser, trans: Tran
@router.put("/ws/{oid}", summary=f"{PLACEHOLDER_PREFIX}switch_oid_api", description=f"{PLACEHOLDER_PREFIX}switch_oid_api")
@clear_cache(namespace=CacheNamespace.AUTH_INFO, cacheName=CacheName.USER_INFO, keyExpression="current_user.id")
@system_log(LogConfig(
operation_type=OperationType.UPDATE,
module=OperationModules.USER,
resource_id_expr="editor.id"
))
async def ws_change(session: SessionDep, current_user: CurrentUser, trans:Trans, oid: int = Path(description=f"{PLACEHOLDER_PREFIX}oid")):
ws_list: list[UserWs] = await user_ws_options(session, current_user.id)
if not any(x.id == oid for x in ws_list):
@@ -141,8 +148,13 @@ async def query(session: SessionDep, trans: Trans, id: int = Path(description=f"
@router.post("", summary=f"{PLACEHOLDER_PREFIX}user_create_api", description=f"{PLACEHOLDER_PREFIX}user_create_api")
@require_permissions(permission=SqlbotPermission(role=['admin']))
@system_log(LogConfig(
operation_type=OperationType.CREATE,
module=OperationModules.USER,
result_id_expr="id"
))
async def user_create(session: SessionDep, creator: UserCreator, trans: Trans):
await create(session=session, creator=creator, trans=trans)
return await create(session=session, creator=creator, trans=trans)
async def create(session: SessionDep, creator: UserCreator, trans: Trans):
if check_account_exists(session=session, account=creator.account):
@@ -169,11 +181,17 @@ async def create(session: SessionDep, creator: UserCreator, trans: Trans):
session.add_all(db_model_list)
user_model.oid = creator.oid_list[0]
session.add(user_model)
return user_model
@router.put("", summary=f"{PLACEHOLDER_PREFIX}user_update_api", description=f"{PLACEHOLDER_PREFIX}user_update_api")
@require_permissions(permission=SqlbotPermission(role=['admin']))
@clear_cache(namespace=CacheNamespace.AUTH_INFO, cacheName=CacheName.USER_INFO, keyExpression="editor.id")
@system_log(LogConfig(
operation_type=OperationType.UPDATE,
module=OperationModules.USER,
resource_id_expr="editor.id"
))
async def update(session: SessionDep, editor: UserEditor, trans: Trans):
user_model: UserModel = get_db_user(session = session, user_id = editor.id)
if not user_model:
@@ -207,7 +225,12 @@ async def update(session: SessionDep, editor: UserEditor, trans: Trans):
session.add(user_model)
@router.delete("/{id}", summary=f"{PLACEHOLDER_PREFIX}user_del_api", description=f"{PLACEHOLDER_PREFIX}user_del_api")
@require_permissions(permission=SqlbotPermission(role=['admin']))
@require_permissions(permission=SqlbotPermission(role=['admin']))
@system_log(LogConfig(
operation_type=OperationType.DELETE,
module=OperationModules.USER,
resource_id_expr="id"
))
async def delete(session: SessionDep, id: int = Path(description=f"{PLACEHOLDER_PREFIX}uid")):
await single_delete(session, id)
@@ -231,6 +254,11 @@ async def langChange(session: SessionDep, current_user: CurrentUser, trans: Tran
@router.patch("/pwd/{id}", summary=f"{PLACEHOLDER_PREFIX}reset_pwd", description=f"{PLACEHOLDER_PREFIX}reset_pwd")
@require_permissions(permission=SqlbotPermission(role=['admin']))
@clear_cache(namespace=CacheNamespace.AUTH_INFO, cacheName=CacheName.USER_INFO, keyExpression="id")
@system_log(LogConfig(
operation_type=OperationType.UPDATE,
module=OperationModules.USER,
resource_id_expr="id"
))
async def pwdReset(session: SessionDep, current_user: CurrentUser, trans: Trans, id: int = Path(description=f"{PLACEHOLDER_PREFIX}uid")):
if not current_user.isAdmin:
raise Exception(trans('i18n_permission.no_permission', url = " patch[/user/pwd/id],", msg = trans('i18n_permission.only_admin')))
@@ -240,6 +268,11 @@ async def pwdReset(session: SessionDep, current_user: CurrentUser, trans: Trans,
@router.put("/pwd", summary=f"{PLACEHOLDER_PREFIX}update_pwd", description=f"{PLACEHOLDER_PREFIX}update_pwd")
@clear_cache(namespace=CacheNamespace.AUTH_INFO, cacheName=CacheName.USER_INFO, keyExpression="current_user.id")
@system_log(LogConfig(
operation_type=OperationType.UPDATE,
module=OperationModules.USER,
result_id_expr="id"
))
async def pwdUpdate(session: SessionDep, current_user: CurrentUser, trans: Trans, editor: PwdEditor):
new_pwd = editor.new_pwd
if not check_pwd_format(new_pwd):
@@ -249,11 +282,17 @@ async def pwdUpdate(session: SessionDep, current_user: CurrentUser, trans: Trans
raise Exception(trans('i18n_error', key = trans('i18n_user.password')))
db_user.password = md5pwd(new_pwd)
session.add(db_user)
return db_user
@router.patch("/status", summary=f"{PLACEHOLDER_PREFIX}update_status", description=f"{PLACEHOLDER_PREFIX}update_status")
@require_permissions(permission=SqlbotPermission(role=['admin']))
@clear_cache(namespace=CacheNamespace.AUTH_INFO, cacheName=CacheName.USER_INFO, keyExpression="statusDto.id")
@system_log(LogConfig(
operation_type=OperationType.UPDATE,
module=OperationModules.USER,
resource_id_expr="statusDto.id"
))
async def statusChange(session: SessionDep, current_user: CurrentUser, trans: Trans, statusDto: UserStatus):
if not current_user.isAdmin:
raise Exception(trans('i18n_permission.no_permission', url = ", ", msg = trans('i18n_permission.only_admin')))
+19 -4
View File
@@ -8,6 +8,8 @@ from apps.system.models.system_model import UserWsModel, WorkspaceBase, Workspac
from apps.system.models.user import UserModel
from apps.system.schemas.permission import SqlbotPermission, require_permissions
from apps.system.schemas.system_schema import UserWsBase, UserWsDTO, UserWsEditor, UserWsOption, WorkspaceUser
from sqlbot_xpack.audit.models.log_model import OperationType, OperationModules
from sqlbot_xpack.audit.schemas.logger_decorator import system_log, LogConfig
from common.core.deps import CurrentUser, SessionDep, Trans
from common.core.pagination import Paginator
from common.core.schemas import PaginatedResponse, PaginationParams
@@ -121,7 +123,9 @@ async def pager(
@router.post("/uws", summary=f"{PLACEHOLDER_PREFIX}ws_user_bind_api", description=f"{PLACEHOLDER_PREFIX}ws_user_bind_api")
@require_permissions(permission=SqlbotPermission(role=['ws_admin']))
@require_permissions(permission=SqlbotPermission(role=['ws_admin']))
@system_log(LogConfig(operation_type=OperationType.ADD, module=OperationModules.MEMBER, resource_id_expr="creator.uid_list",
))
async def create(session: SessionDep, current_user: CurrentUser, trans: Trans, creator: UserWsDTO):
if not current_user.isAdmin and current_user.weight == 0:
raise Exception(trans('i18n_permission.no_permission', url = '', msg = ''))
@@ -143,7 +147,9 @@ async def create(session: SessionDep, current_user: CurrentUser, trans: Trans, c
session.add_all(db_model_list)
@router.put("/uws", summary=f"{PLACEHOLDER_PREFIX}ws_user_status_api", description=f"{PLACEHOLDER_PREFIX}ws_user_status_api")
@require_permissions(permission=SqlbotPermission(role=['admin']))
@require_permissions(permission=SqlbotPermission(role=['admin']))
@system_log(LogConfig(operation_type=OperationType.UPDATE, module=OperationModules.MEMBER, resource_id_expr="editor.uid_list",
))
async def uws_edit(session: SessionDep, trans: Trans, editor: UserWsEditor):
await edit(session, trans, editor)
@@ -162,7 +168,9 @@ async def edit(session: SessionDep, trans: Trans, editor: UserWsEditor):
await clean_user_cache(editor.uid)
@router.delete("/uws", summary=f"{PLACEHOLDER_PREFIX}ws_user_unbind_api", description=f"{PLACEHOLDER_PREFIX}ws_user_unbind_api")
@require_permissions(permission=SqlbotPermission(role=['ws_admin']))
@require_permissions(permission=SqlbotPermission(role=['ws_admin']))
@system_log(LogConfig(operation_type=OperationType.DELETE, module=OperationModules.MEMBER, resource_id_expr="dto.uid_list",
))
async def delete(session: SessionDep, current_user: CurrentUser, trans: Trans, dto: UserWsBase):
if not current_user.isAdmin and current_user.weight == 0:
raise Exception(trans('i18n_permission.no_permission', url = '', msg = ''))
@@ -189,13 +197,18 @@ async def query(session: SessionDep, trans: Trans):
@router.post("", summary=f"{PLACEHOLDER_PREFIX}ws_create_api", description=f"{PLACEHOLDER_PREFIX}ws_create_api")
@require_permissions(permission=SqlbotPermission(role=['admin']))
@system_log(LogConfig(operation_type=OperationType.CREATE, module=OperationModules.WORKSPACE, result_id_expr="id",
))
async def add(session: SessionDep, creator: WorkspaceBase):
db_model = WorkspaceModel.model_validate(creator)
db_model.create_time = get_timestamp()
session.add(db_model)
return db_model
@router.put("", summary=f"{PLACEHOLDER_PREFIX}ws_update_api", description=f"{PLACEHOLDER_PREFIX}ws_update_api")
@require_permissions(permission=SqlbotPermission(role=['admin']))
@system_log(LogConfig(operation_type=OperationType.UPDATE, module=OperationModules.WORKSPACE, resource_id_expr="editor.id",
))
async def update(session: SessionDep, editor: WorkspaceEditor):
id = editor.id
db_model = session.get(WorkspaceModel, id)
@@ -215,7 +228,9 @@ async def get_one(session: SessionDep, trans: Trans, id: int = Path(description=
return db_model
@router.delete("/{id}", summary=f"{PLACEHOLDER_PREFIX}ws_del_api", description=f"{PLACEHOLDER_PREFIX}ws_del_api")
@require_permissions(permission=SqlbotPermission(role=['admin']))
@require_permissions(permission=SqlbotPermission(role=['admin']))
@system_log(LogConfig(operation_type=OperationType.DELETE, module=OperationModules.WORKSPACE, resource_id_expr="id",
))
async def single_delete(session: SessionDep, current_user: CurrentUser, id: int = Path(description=f"{PLACEHOLDER_PREFIX}oid")):
if not current_user.isAdmin:
raise HTTPException("only admin can delete workspace")
+2 -1
View File
@@ -37,4 +37,5 @@ async def save(request: Request, session: Session, creator: AssistantBase):
db_model.create_time = get_timestamp()
session.add(db_model)
session.commit()
dynamic_upgrade_cors(request=request, session=session)
dynamic_upgrade_cors(request=request, session=session)
return db_model
+7 -1
View File
@@ -19,7 +19,8 @@ from common.core.config import settings
from common.core.deps import SessionDep, CurrentUser, Trans
from common.utils.data_format import DataFormat
from common.utils.excel import get_excel_column_count
from sqlbot_xpack.audit.models.log_model import OperationType, OperationModules
from sqlbot_xpack.audit.schemas.logger_decorator import LogConfig, system_log
router = APIRouter(tags=["Terminology"], prefix="/system/terminology")
@@ -40,6 +41,7 @@ async def pager(session: SessionDep, current_user: CurrentUser, current_page: in
@router.put("", summary=f"{PLACEHOLDER_PREFIX}create_or_update_term")
@system_log(LogConfig(operation_type=OperationType.CREATE_OR_UPDATE, module=OperationModules.TERMINOLOGY,resource_id_expr='info.id', result_id_expr="result_self"))
async def create_or_update(session: SessionDep, current_user: CurrentUser, trans: Trans, info: TerminologyInfo):
oid = current_user.oid
if info.id:
@@ -49,16 +51,19 @@ async def create_or_update(session: SessionDep, current_user: CurrentUser, trans
@router.delete("", summary=f"{PLACEHOLDER_PREFIX}delete_term")
@system_log(LogConfig(operation_type=OperationType.DELETE, module=OperationModules.TERMINOLOGY,resource_id_expr='id_list'))
async def delete(session: SessionDep, id_list: list[int]):
delete_terminology(session, id_list)
@router.get("/{id}/enable/{enabled}", summary=f"{PLACEHOLDER_PREFIX}enable_term")
@system_log(LogConfig(operation_type=OperationType.UPDATE, module=OperationModules.TERMINOLOGY,resource_id_expr='id'))
async def enable(session: SessionDep, id: int, enabled: bool, trans: Trans):
enable_terminology(session, id, enabled, trans)
@router.get("/export", summary=f"{PLACEHOLDER_PREFIX}export_term")
@system_log(LogConfig(operation_type=OperationType.EXPORT, module=OperationModules.TERMINOLOGY))
async def export_excel(session: SessionDep, trans: Trans, current_user: CurrentUser,
word: Optional[str] = Query(None, description="搜索术语(可选)")):
def inner():
@@ -154,6 +159,7 @@ session_maker = scoped_session(sessionmaker(bind=engine, class_=Session))
@router.post("/uploadExcel", summary=f"{PLACEHOLDER_PREFIX}upload_term")
@system_log(LogConfig(operation_type=OperationType.IMPORT, module=OperationModules.TERMINOLOGY))
async def upload_excel(trans: Trans, current_user: CurrentUser, file: UploadFile = File(...)):
ALLOWED_EXTENSIONS = {"xlsx", "xls"}
if not file.filename.lower().endswith(tuple(ALLOWED_EXTENSIONS)):
+7 -1
View File
@@ -156,6 +156,12 @@
"edit": "Edit",
"login": "Login",
"export": "Export",
"import": "Import"
"import": "Import",
"add": "Add",
"create_or_update": "Change",
"api_key": "API Key",
"params_setting": "Parameters Setting",
"rules": "Permission Rules",
"log_setting": "Login Authentication"
}
}
+7 -1
View File
@@ -156,6 +156,12 @@
"edit": "편집",
"login": "로그인",
"export": "내보내기",
"import": "가져오기"
"import": "가져오기",
"add": "추가",
"create_or_update": "변경",
"api_key": "API 키",
"params_setting": "매개변수 설정",
"rules": "권한 규칙",
"log_setting": "로그인 인증"
}
}
+7 -1
View File
@@ -156,6 +156,12 @@
"edit": "编辑",
"login": "登录",
"export": "导出",
"import": "导入"
"import": "导入",
"add": "添加",
"create_or_update": "变更",
"api_key": "API Key",
"params_setting": "参数设置",
"rules": "权限规则",
"log_setting": "登录认证"
}
}
+1 -1
View File
@@ -284,7 +284,7 @@ const initOptions = () => {
/>
<div class="preview-or-schema">
<el-table ref="multipleTableRef" :data="fieldList" style="width: 100%">
<el-table-column prop="word" :label="$t('audit.operation_type')" width="120">
<el-table-column prop="word" :label="$t('audit.operation_type')" width="140">
<template #default="scope">
{{ scope.row.operation_type_name }}
</template>