From 9620817a8f7fa52e54ff24e51ffcd49893121c90 Mon Sep 17 00:00:00 2001 From: CaptainB Date: Mon, 17 Mar 2025 13:40:23 +0800 Subject: [PATCH] feat: Support dataset log recorder --- apps/dataset/views/dataset.py | 16 ++++++++++++++++ apps/dataset/views/document.py | 27 +++++++++++++++++++++++++++ apps/dataset/views/file.py | 3 +++ apps/dataset/views/image.py | 3 +++ apps/dataset/views/paragraph.py | 14 ++++++++++++++ apps/dataset/views/problem.py | 9 +++++++++ 6 files changed, 72 insertions(+) diff --git a/apps/dataset/views/dataset.py b/apps/dataset/views/dataset.py index 269d5e288..3202cd35b 100644 --- a/apps/dataset/views/dataset.py +++ b/apps/dataset/views/dataset.py @@ -16,6 +16,7 @@ from rest_framework.views import Request from common.auth import TokenAuth, has_permissions from common.constants.permission_constants import PermissionConstants, CompareConstants, Permission, Group, Operate, \ ViewPermission, RoleConstants +from common.log.log import log from common.response import result from common.response.result import get_page_request_params, get_page_api_response, get_api_response from common.swagger_api.common_api import CommonApi @@ -42,6 +43,7 @@ class Dataset(APIView): dynamic_tag=keywords.get('dataset_id'))], compare=CompareConstants.AND), PermissionConstants.DATASET_EDIT, compare=CompareConstants.AND) + @log(menu=_('Knowledge Base'), operate=_("同步Web站点知识库")) def put(self, request: Request, dataset_id: str): return result.success(DataSetSerializers.SyncWeb( data={'sync_type': request.query_params.get('sync_type'), 'id': dataset_id, @@ -60,6 +62,7 @@ class Dataset(APIView): tags=[_('Knowledge Base')] ) @has_permissions(PermissionConstants.DATASET_CREATE, compare=CompareConstants.AND) + @log(menu=_('Knowledge Base'), operate=_("创建QA知识库")) def post(self, request: Request): return result.success(DataSetSerializers.Create(data={'user_id': request.user.id}).save_qa({ 'file_list': request.FILES.getlist('file'), @@ -79,6 +82,7 @@ class Dataset(APIView): tags=[_('Knowledge Base')] ) @has_permissions(PermissionConstants.DATASET_CREATE, compare=CompareConstants.AND) + @log(menu=_('Knowledge Base'), operate=_("Create a web site knowledge base")) def post(self, request: Request): return result.success(DataSetSerializers.Create(data={'user_id': request.user.id}).save_web(request.data)) @@ -92,6 +96,7 @@ class Dataset(APIView): responses=result.get_api_array_response( DataSetSerializers.Application.get_response_body_api()), tags=[_('Knowledge Base')]) + @log(menu=_('Knowledge Base'), operate=_("Get a list of applications available in the knowledge base")) def get(self, request: Request, dataset_id: str): return result.success(DataSetSerializers.Operate( data={'id': dataset_id, 'user_id': str(request.user.id)}).list_application()) @@ -103,6 +108,7 @@ class Dataset(APIView): responses=result.get_api_array_response(DataSetSerializers.Query.get_response_body_api()), tags=[_('Knowledge Base')]) @has_permissions(PermissionConstants.DATASET_READ, compare=CompareConstants.AND) + @log(menu=_('Knowledge Base'), operate=_("Get a list of knowledge bases")) def get(self, request: Request): data = {key: str(value) for key, value in request.query_params.items()} d = DataSetSerializers.Query(data={**data, 'user_id': str(request.user.id)}) @@ -117,6 +123,7 @@ class Dataset(APIView): tags=[_('Knowledge Base')] ) @has_permissions(PermissionConstants.DATASET_CREATE, compare=CompareConstants.AND) + @log(menu=_('Knowledge Base'), operate=_("Create a knowledge base")) def post(self, request: Request): return result.success(DataSetSerializers.Create(data={'user_id': request.user.id}).save(request.data)) @@ -130,6 +137,7 @@ class Dataset(APIView): tags=[_('Knowledge Base')]) @has_permissions(lambda r, keywords: Permission(group=Group.DATASET, operate=Operate.USE, dynamic_tag=keywords.get('dataset_id'))) + @log(menu=_('Knowledge Base'), operate=_("Hit test list")) def get(self, request: Request, dataset_id: str): return result.success( DataSetSerializers.HitTest(data={'id': dataset_id, 'user_id': request.user.id, @@ -150,6 +158,7 @@ class Dataset(APIView): ) @has_permissions(lambda r, keywords: Permission(group=Group.DATASET, operate=Operate.MANAGE, dynamic_tag=keywords.get('dataset_id'))) + @log(menu=_('Knowledge Base'), operate=_("Re-vectorize")) def put(self, request: Request, dataset_id: str): return result.success( DataSetSerializers.Operate(data={'id': dataset_id, 'user_id': request.user.id}).re_embedding()) @@ -164,6 +173,7 @@ class Dataset(APIView): ) @has_permissions(lambda r, keywords: Permission(group=Group.DATASET, operate=Operate.MANAGE, dynamic_tag=keywords.get('dataset_id'))) + @log(menu=_('Knowledge Base'), operate=_("Export knowledge base")) def get(self, request: Request, dataset_id: str): return DataSetSerializers.Operate(data={'id': dataset_id, 'user_id': request.user.id}).export_excel() @@ -178,6 +188,7 @@ class Dataset(APIView): ) @has_permissions(lambda r, keywords: Permission(group=Group.DATASET, operate=Operate.MANAGE, dynamic_tag=keywords.get('dataset_id'))) + @log(menu=_('Knowledge Base'), operate=_("Export knowledge base containing images")) def get(self, request: Request, dataset_id: str): return DataSetSerializers.Operate(data={'id': dataset_id, 'user_id': request.user.id}).export_zip() @@ -193,6 +204,7 @@ class Dataset(APIView): dynamic_tag=keywords.get('dataset_id')), lambda r, k: Permission(group=Group.DATASET, operate=Operate.DELETE, dynamic_tag=k.get('dataset_id')), compare=CompareConstants.AND) + @log(menu=_('Knowledge Base'), operate=_("Delete knowledge base")) def delete(self, request: Request, dataset_id: str): operate = DataSetSerializers.Operate(data={'id': dataset_id}) return result.success(operate.delete()) @@ -205,6 +217,7 @@ class Dataset(APIView): tags=[_('Knowledge Base')]) @has_permissions(lambda r, keywords: Permission(group=Group.DATASET, operate=Operate.USE, dynamic_tag=keywords.get('dataset_id'))) + @log(menu=_('Knowledge Base'), operate=_("Query knowledge base details based on knowledge base id")) def get(self, request: Request, dataset_id: str): return result.success(DataSetSerializers.Operate(data={'id': dataset_id, 'user_id': request.user.id}).one( user_id=request.user.id)) @@ -219,6 +232,7 @@ class Dataset(APIView): ) @has_permissions(lambda r, keywords: Permission(group=Group.DATASET, operate=Operate.MANAGE, dynamic_tag=keywords.get('dataset_id'))) + @log(menu=_('Knowledge Base'), operate=_("Modify knowledge base information")) def put(self, request: Request, dataset_id: str): return result.success( DataSetSerializers.Operate(data={'id': dataset_id, 'user_id': request.user.id}).edit(request.data, @@ -236,6 +250,7 @@ class Dataset(APIView): tags=[_('Knowledge Base')] ) @has_permissions(PermissionConstants.DATASET_READ, compare=CompareConstants.AND) + @log(menu=_('Knowledge Base'), operate=_("Get the knowledge base paginated list")) def get(self, request: Request, current_page, page_size): d = DataSetSerializers.Query( data={'name': request.query_params.get('name', None), 'desc': request.query_params.get("desc", None), @@ -253,6 +268,7 @@ class Dataset(APIView): [lambda r, keywords: Permission(group=Group.DATASET, operate=Operate.MANAGE, dynamic_tag=keywords.get('dataset_id'))], compare=CompareConstants.AND)) + @log(menu=_('Knowledge Base'), operate=_("Get the model list of the knowledge base")) def get(self, request: Request, dataset_id: str): return result.success( ModelSerializer.Query( diff --git a/apps/dataset/views/document.py b/apps/dataset/views/document.py index 7d1136730..76706683b 100644 --- a/apps/dataset/views/document.py +++ b/apps/dataset/views/document.py @@ -15,6 +15,7 @@ from rest_framework.views import Request from common.auth import TokenAuth, has_permissions from common.constants.permission_constants import Permission, Group, Operate, CompareConstants +from common.log.log import log from common.response import result from common.util.common import query_params_to_single_dict from dataset.serializers.common_serializers import BatchSerializer @@ -31,6 +32,7 @@ class Template(APIView): operation_id=_('Get QA template'), manual_parameters=DocumentSerializers.Export.get_request_params_api(), tags=[_('Knowledge Base/Documentation')]) + @log(menu=_('Knowledge Base/Documentation'), operate=_("Get QA template")) def get(self, request: Request): return DocumentSerializers.Export(data={'type': request.query_params.get('type')}).export(with_valid=True) @@ -43,6 +45,7 @@ class TableTemplate(APIView): operation_id=_('Get form template'), manual_parameters=DocumentSerializers.Export.get_request_params_api(), tags=[_('Knowledge Base/Documentation')]) + @log(menu=_('Knowledge Base/Documentation'), operate=_("Get form template")) def get(self, request: Request): return DocumentSerializers.Export(data={'type': request.query_params.get('type')}).table_export(with_valid=True) @@ -60,6 +63,7 @@ class WebDocument(APIView): @has_permissions( lambda r, k: Permission(group=Group.DATASET, operate=Operate.MANAGE, dynamic_tag=k.get('dataset_id'))) + @log(menu=_('Knowledge Base/Documentation'), operate=_("Create Web site documents")) def post(self, request: Request, dataset_id: str): return result.success( DocumentSerializers.Create(data={'dataset_id': dataset_id}).save_web(request.data, with_valid=True)) @@ -78,6 +82,7 @@ class QaDocument(APIView): @has_permissions( lambda r, k: Permission(group=Group.DATASET, operate=Operate.MANAGE, dynamic_tag=k.get('dataset_id'))) + @log(menu=_('Knowledge Base/Documentation'), operate=_("Import QA and create documentation")) def post(self, request: Request, dataset_id: str): return result.success( DocumentSerializers.Create(data={'dataset_id': dataset_id}).save_qa( @@ -98,6 +103,7 @@ class TableDocument(APIView): @has_permissions( lambda r, k: Permission(group=Group.DATASET, operate=Operate.MANAGE, dynamic_tag=k.get('dataset_id'))) + @log(menu=_('Knowledge Base/Documentation'), operate=_("Import tables and create documents")) def post(self, request: Request, dataset_id: str): return result.success( DocumentSerializers.Create(data={'dataset_id': dataset_id}).save_table( @@ -118,6 +124,7 @@ class Document(APIView): @has_permissions( lambda r, k: Permission(group=Group.DATASET, operate=Operate.MANAGE, dynamic_tag=k.get('dataset_id'))) + @log(menu=_('Knowledge Base/Document'), operate=_("Create document")) def post(self, request: Request, dataset_id: str): return result.success( DocumentSerializers.Create(data={'dataset_id': dataset_id}).save(request.data, with_valid=True)) @@ -131,6 +138,7 @@ class Document(APIView): @has_permissions( lambda r, k: Permission(group=Group.DATASET, operate=Operate.USE, dynamic_tag=k.get('dataset_id'))) + @log(menu=_('Knowledge Base/Documentation'), operate=_("Document list")) def get(self, request: Request, dataset_id: str): d = DocumentSerializers.Query( data={**query_params_to_single_dict(request.query_params), 'dataset_id': dataset_id}) @@ -151,6 +159,7 @@ class Document(APIView): @has_permissions( lambda r, k: Permission(group=Group.DATASET, operate=Operate.MANAGE, dynamic_tag=k.get('dataset_id'))) + @log(menu=_('Knowledge Base/Documentation'), operate=_("Modify document hit processing methods in batches")) def put(self, request: Request, dataset_id: str): return result.success( DocumentSerializers.Batch(data={'dataset_id': dataset_id}).batch_edit_hit_handling(request.data)) @@ -170,6 +179,7 @@ class Document(APIView): @has_permissions( lambda r, k: Permission(group=Group.DATASET, operate=Operate.MANAGE, dynamic_tag=k.get('dataset_id'))) + @log(menu=_('Knowledge Base/Documentation'), operate=_("Create documents in batches")) def post(self, request: Request, dataset_id: str): return result.success(DocumentSerializers.Batch(data={'dataset_id': dataset_id}).batch_save(request.data)) @@ -184,6 +194,7 @@ class Document(APIView): @has_permissions( lambda r, k: Permission(group=Group.DATASET, operate=Operate.MANAGE, dynamic_tag=k.get('dataset_id'))) + @log(menu=_('Knowledge Base/Documentation'), operate=_("Batch sync documents")) def put(self, request: Request, dataset_id: str): return result.success(DocumentSerializers.Batch(data={'dataset_id': dataset_id}).batch_sync(request.data)) @@ -198,6 +209,7 @@ class Document(APIView): @has_permissions( lambda r, k: Permission(group=Group.DATASET, operate=Operate.MANAGE, dynamic_tag=k.get('dataset_id'))) + @log(menu=_('Knowledge Base/Documentation'), operate=_("Delete documents in batches")) def delete(self, request: Request, dataset_id: str): return result.success(DocumentSerializers.Batch(data={'dataset_id': dataset_id}).batch_delete(request.data)) @@ -214,6 +226,7 @@ class Document(APIView): @has_permissions( lambda r, k: Permission(group=Group.DATASET, operate=Operate.MANAGE, dynamic_tag=k.get('dataset_id'))) + @log(menu=_('Knowledge Base/Documentation'), operate=_("Synchronize web site types")) def put(self, request: Request, dataset_id: str, document_id: str): return result.success( DocumentSerializers.Sync(data={'document_id': document_id, 'dataset_id': dataset_id}).sync( @@ -233,6 +246,7 @@ class Document(APIView): @has_permissions( lambda r, k: Permission(group=Group.DATASET, operate=Operate.MANAGE, dynamic_tag=k.get('dataset_id'))) + @log(menu=_('Knowledge Base/Documentation'), operate=_("Cancel task")) def put(self, request: Request, dataset_id: str, document_id: str): return result.success( DocumentSerializers.Operate(data={'document_id': document_id, 'dataset_id': dataset_id}).cancel( @@ -253,6 +267,7 @@ class Document(APIView): @has_permissions( lambda r, k: Permission(group=Group.DATASET, operate=Operate.MANAGE, dynamic_tag=k.get('dataset_id'))) + @log(menu=_('Knowledge Base/Documentation'), operate=_("Cancel tasks in batches")) def put(self, request: Request, dataset_id: str): return result.success( DocumentSerializers.Batch(data={'dataset_id': dataset_id}).batch_cancel(request.data)) @@ -271,6 +286,7 @@ class Document(APIView): @has_permissions( lambda r, k: Permission(group=Group.DATASET, operate=Operate.MANAGE, dynamic_tag=k.get('dataset_id'))) + @log(menu=_('Knowledge Base/Documentation'), operate=_("Refresh document vector library")) def put(self, request: Request, dataset_id: str, document_id: str): return result.success( DocumentSerializers.Operate(data={'document_id': document_id, 'dataset_id': dataset_id}).refresh( @@ -291,6 +307,7 @@ class Document(APIView): @has_permissions( lambda r, k: Permission(group=Group.DATASET, operate=Operate.MANAGE, dynamic_tag=k.get('dataset_id'))) + @log(menu=_('Knowledge Base/Documentation'), operate=_("Batch refresh document vector library")) def put(self, request: Request, dataset_id: str): return result.success( DocumentSerializers.Batch(data={'dataset_id': dataset_id}).batch_refresh(request.data)) @@ -313,6 +330,7 @@ class Document(APIView): dynamic_tag=k.get('target_dataset_id')), compare=CompareConstants.AND ) + @log(menu=_('Knowledge Base/Documentation'), operate=_("Migrate documents in batches")) def put(self, request: Request, dataset_id: str, target_dataset_id: str): return result.success( DocumentSerializers.Migrate( @@ -332,6 +350,7 @@ class Document(APIView): @has_permissions( lambda r, k: Permission(group=Group.DATASET, operate=Operate.MANAGE, dynamic_tag=k.get('dataset_id'))) + @log(menu=_('Knowledge Base/Documentation'), operate=_("Export document")) def get(self, request: Request, dataset_id: str, document_id: str): return DocumentSerializers.Operate(data={'document_id': document_id, 'dataset_id': dataset_id}).export() @@ -346,6 +365,7 @@ class Document(APIView): @has_permissions( lambda r, k: Permission(group=Group.DATASET, operate=Operate.MANAGE, dynamic_tag=k.get('dataset_id'))) + @log(menu=_('Knowledge Base/Documentation'), operate=_("Export Zip document")) def get(self, request: Request, dataset_id: str, document_id: str): return DocumentSerializers.Operate(data={'document_id': document_id, 'dataset_id': dataset_id}).export_zip() @@ -361,6 +381,7 @@ class Document(APIView): @has_permissions( lambda r, k: Permission(group=Group.DATASET, operate=Operate.USE, dynamic_tag=k.get('dataset_id'))) + @log(menu=_('Knowledge Base/Documentation'), operate=_("Get document details")) def get(self, request: Request, dataset_id: str, document_id: str): operate = DocumentSerializers.Operate(data={'document_id': document_id, 'dataset_id': dataset_id}) operate.is_valid(raise_exception=True) @@ -377,6 +398,7 @@ class Document(APIView): @has_permissions( lambda r, k: Permission(group=Group.DATASET, operate=Operate.MANAGE, dynamic_tag=k.get('dataset_id'))) + @log(menu=_('Knowledge Base/Documentation'), operate=_("Modify document")) def put(self, request: Request, dataset_id: str, document_id: str): return result.success( DocumentSerializers.Operate(data={'document_id': document_id, 'dataset_id': dataset_id}).edit( @@ -392,6 +414,7 @@ class Document(APIView): @has_permissions( lambda r, k: Permission(group=Group.DATASET, operate=Operate.MANAGE, dynamic_tag=k.get('dataset_id'))) + @log(menu=_('Knowledge Base/Documentation'), operate=_("Delete document")) def delete(self, request: Request, dataset_id: str, document_id: str): operate = DocumentSerializers.Operate(data={'document_id': document_id, 'dataset_id': dataset_id}) operate.is_valid(raise_exception=True) @@ -404,6 +427,7 @@ class Document(APIView): @swagger_auto_schema(operation_summary=_('Get a list of segment IDs'), operation_id=_('Get a list of segment IDs'), tags=[_('Knowledge Base/Documentation')]) + @log(menu=_('Knowledge Base/Documentation'), operate=_("Get a list of segment IDs")) def get(self, request: Request): return result.success(DocumentSerializers.SplitPattern.list()) @@ -416,6 +440,7 @@ class Document(APIView): operation_id=_('Segmented document'), manual_parameters=DocumentSerializers.Split.get_request_params_api(), tags=[_('Knowledge Base/Documentation')]) + @log(menu=_('Knowledge Base/Documentation'), operate=_("Segmented document")) def post(self, request: Request): split_data = {'file': request.FILES.getlist('file')} request_data = request.data @@ -443,6 +468,7 @@ class Document(APIView): @has_permissions( lambda r, k: Permission(group=Group.DATASET, operate=Operate.USE, dynamic_tag=k.get('dataset_id'))) + @log(menu=_('Knowledge Base/Documentation'), operate=_("Get the knowledge base paginated list")) def get(self, request: Request, dataset_id: str, current_page, page_size): d = DocumentSerializers.Query( data={**query_params_to_single_dict(request.query_params), 'dataset_id': dataset_id}) @@ -456,6 +482,7 @@ class Document(APIView): @has_permissions( lambda r, k: Permission(group=Group.DATASET, operate=Operate.MANAGE, dynamic_tag=k.get('dataset_id'))) + @log(menu=_('Knowledge Base/Documentation'), operate=_("Batch generate related documents")) def put(self, request: Request, dataset_id: str): return result.success(DocumentSerializers.BatchGenerateRelated(data={'dataset_id': dataset_id}) .batch_generate_related(request.data)) diff --git a/apps/dataset/views/file.py b/apps/dataset/views/file.py index 53fbcbafe..39885d4f8 100644 --- a/apps/dataset/views/file.py +++ b/apps/dataset/views/file.py @@ -14,6 +14,7 @@ from rest_framework.views import APIView from rest_framework.views import Request from common.auth import TokenAuth +from common.log.log import log from common.response import result from dataset.serializers.file_serializers import FileSerializer from django.utils.translation import gettext_lazy as _ @@ -32,6 +33,7 @@ class FileView(APIView): required=True, description=_('Upload file'))], tags=[_('file')]) + @log(menu=_('file'), operate=_('Upload file')) def post(self, request: Request): return result.success(FileSerializer(data={'file': request.FILES.get('file')}).upload()) @@ -40,5 +42,6 @@ class FileView(APIView): @swagger_auto_schema(operation_summary=_('Get file'), operation_id=_('Get file'), tags=[_('file')]) + @log(menu=_('file'), operate=_('Get file')) def get(self, request: Request, file_id: str): return FileSerializer.Operate(data={'id': file_id}).get() diff --git a/apps/dataset/views/image.py b/apps/dataset/views/image.py index 5c9751678..bb7452ca5 100644 --- a/apps/dataset/views/image.py +++ b/apps/dataset/views/image.py @@ -14,6 +14,7 @@ from rest_framework.views import APIView from rest_framework.views import Request from common.auth import TokenAuth +from common.log.log import log from common.response import result from dataset.serializers.image_serializers import ImageSerializer from django.utils.translation import gettext_lazy as _ @@ -32,6 +33,7 @@ class Image(APIView): required=True, description=_('Upload image'))], tags=[_('Image')]) + @log(menu=_('Image'), operate=_('Upload image')) def post(self, request: Request): return result.success(ImageSerializer(data={'image': request.FILES.get('file')}).upload()) @@ -40,5 +42,6 @@ class Image(APIView): @swagger_auto_schema(operation_summary=_('Get Image'), operation_id=_('Get Image'), tags=[_('Image')]) + @log(menu=_('Image'), operate=_('Get Image')) def get(self, request: Request, image_id: str): return ImageSerializer.Operate(data={'id': image_id}).get() diff --git a/apps/dataset/views/paragraph.py b/apps/dataset/views/paragraph.py index a4e06659b..0df73b076 100644 --- a/apps/dataset/views/paragraph.py +++ b/apps/dataset/views/paragraph.py @@ -13,6 +13,7 @@ from rest_framework.views import Request from common.auth import TokenAuth, has_permissions from common.constants.permission_constants import Permission, Group, Operate, CompareConstants +from common.log.log import log from common.response import result from common.util.common import query_params_to_single_dict from dataset.serializers.common_serializers import BatchSerializer @@ -33,6 +34,7 @@ class Paragraph(APIView): @has_permissions( lambda r, k: Permission(group=Group.DATASET, operate=Operate.USE, dynamic_tag=k.get('dataset_id'))) + @log(menu=_('Knowledge Base/Documentation/Paragraph'), operate=_('Paragraph list')) def get(self, request: Request, dataset_id: str, document_id: str): q = ParagraphSerializers.Query( data={**query_params_to_single_dict(request.query_params), 'dataset_id': dataset_id, @@ -50,6 +52,7 @@ class Paragraph(APIView): @has_permissions( lambda r, k: Permission(group=Group.DATASET, operate=Operate.MANAGE, dynamic_tag=k.get('dataset_id'))) + @log(menu=_('Knowledge Base/Documentation/Paragraph'), operate=_('Create Paragraph')) def post(self, request: Request, dataset_id: str, document_id: str): return result.success( ParagraphSerializers.Create(data={'dataset_id': dataset_id, 'document_id': document_id}).save(request.data)) @@ -67,6 +70,7 @@ class Paragraph(APIView): @has_permissions( lambda r, k: Permission(group=Group.DATASET, operate=Operate.MANAGE, dynamic_tag=k.get('dataset_id'))) + @log(menu=_('Knowledge Base/Documentation/Paragraph'), operate=_('Add associated questions')) def post(self, request: Request, dataset_id: str, document_id: str, paragraph_id: str): return result.success(ParagraphSerializers.Problem( data={"dataset_id": dataset_id, 'document_id': document_id, 'paragraph_id': paragraph_id}).save( @@ -82,6 +86,7 @@ class Paragraph(APIView): @has_permissions( lambda r, k: Permission(group=Group.DATASET, operate=Operate.USE, dynamic_tag=k.get('dataset_id'))) + @log(menu=_('Knowledge Base/Documentation/Paragraph'), operate=_('Get a list of paragraph questions')) def get(self, request: Request, dataset_id: str, document_id: str, paragraph_id: str): return result.success(ParagraphSerializers.Problem( data={"dataset_id": dataset_id, 'document_id': document_id, 'paragraph_id': paragraph_id}).list( @@ -99,6 +104,7 @@ class Paragraph(APIView): @has_permissions( lambda r, k: Permission(group=Group.DATASET, operate=Operate.MANAGE, dynamic_tag=k.get('dataset_id'))) + @log(menu=_('Knowledge Base/Documentation/Paragraph'), operate=_('Disassociation issue')) def put(self, request: Request, dataset_id: str, document_id: str, paragraph_id: str, problem_id: str): return result.success(ParagraphSerializers.Association( data={'dataset_id': dataset_id, 'document_id': document_id, 'paragraph_id': paragraph_id, @@ -116,6 +122,7 @@ class Paragraph(APIView): @has_permissions( lambda r, k: Permission(group=Group.DATASET, operate=Operate.MANAGE, dynamic_tag=k.get('dataset_id'))) + @log(menu=_('Knowledge Base/Documentation/Paragraph'), operate=_('Related questions')) def put(self, request: Request, dataset_id: str, document_id: str, paragraph_id: str, problem_id: str): return result.success(ParagraphSerializers.Association( data={'dataset_id': dataset_id, 'document_id': document_id, 'paragraph_id': paragraph_id, @@ -134,6 +141,7 @@ class Paragraph(APIView): @has_permissions( lambda r, k: Permission(group=Group.DATASET, operate=Operate.MANAGE, dynamic_tag=k.get('dataset_id'))) + @log(menu=_('Knowledge Base/Documentation/Paragraph'), operate=_('Modify paragraph data')) def put(self, request: Request, dataset_id: str, document_id: str, paragraph_id: str): o = ParagraphSerializers.Operate( data={"paragraph_id": paragraph_id, 'dataset_id': dataset_id, 'document_id': document_id}) @@ -149,6 +157,7 @@ class Paragraph(APIView): @has_permissions( lambda r, k: Permission(group=Group.DATASET, operate=Operate.USE, dynamic_tag=k.get('dataset_id'))) + @log(menu=_('Knowledge Base/Documentation/Paragraph'), operate=_('Get paragraph details')) def get(self, request: Request, dataset_id: str, document_id: str, paragraph_id: str): o = ParagraphSerializers.Operate( data={"dataset_id": dataset_id, 'document_id': document_id, "paragraph_id": paragraph_id}) @@ -164,6 +173,7 @@ class Paragraph(APIView): @has_permissions( lambda r, k: Permission(group=Group.DATASET, operate=Operate.MANAGE, dynamic_tag=k.get('dataset_id'))) + @log(menu=_('Knowledge Base/Documentation/Paragraph'), operate=_('Delete paragraph')) def delete(self, request: Request, dataset_id: str, document_id: str, paragraph_id: str): o = ParagraphSerializers.Operate( data={"dataset_id": dataset_id, 'document_id': document_id, "paragraph_id": paragraph_id}) @@ -184,6 +194,7 @@ class Paragraph(APIView): @has_permissions( lambda r, k: Permission(group=Group.DATASET, operate=Operate.MANAGE, dynamic_tag=k.get('dataset_id'))) + @log(menu=_('Knowledge Base/Documentation/Paragraph'), operate=_('Delete paragraphs in batches')) def delete(self, request: Request, dataset_id: str, document_id: str): return result.success(ParagraphSerializers.Batch( data={"dataset_id": dataset_id, 'document_id': document_id}).batch_delete(request.data)) @@ -206,6 +217,7 @@ class Paragraph(APIView): dynamic_tag=k.get('target_dataset_id')), compare=CompareConstants.AND ) + @log(menu=_('Knowledge Base/Documentation/Paragraph'), operate=_('Migrate paragraphs in batches')) def put(self, request: Request, dataset_id: str, target_dataset_id: str, document_id: str, target_document_id): return result.success( ParagraphSerializers.Migrate( @@ -227,6 +239,7 @@ class Paragraph(APIView): @has_permissions( lambda r, k: Permission(group=Group.DATASET, operate=Operate.USE, dynamic_tag=k.get('dataset_id'))) + @log(menu=_('Knowledge Base/Documentation/Paragraph'), operate=_('Get paragraph list by pagination')) def get(self, request: Request, dataset_id: str, document_id: str, current_page, page_size): d = ParagraphSerializers.Query( data={**query_params_to_single_dict(request.query_params), 'dataset_id': dataset_id, @@ -241,6 +254,7 @@ class Paragraph(APIView): @has_permissions( lambda r, k: Permission(group=Group.DATASET, operate=Operate.MANAGE, dynamic_tag=k.get('dataset_id'))) + @log(menu=_('Knowledge Base/Documentation/Paragraph'), operate=_('Batch generate related')) def put(self, request: Request, dataset_id: str, document_id: str): return result.success( ParagraphSerializers.BatchGenerateRelated(data={'dataset_id': dataset_id, 'document_id': document_id}) diff --git a/apps/dataset/views/problem.py b/apps/dataset/views/problem.py index 64e1be461..741d88a43 100644 --- a/apps/dataset/views/problem.py +++ b/apps/dataset/views/problem.py @@ -13,6 +13,7 @@ from rest_framework.views import Request from common.auth import TokenAuth, has_permissions from common.constants.permission_constants import Permission, Group, Operate +from common.log.log import log from common.response import result from common.util.common import query_params_to_single_dict from dataset.serializers.problem_serializers import ProblemSerializers @@ -33,6 +34,7 @@ class Problem(APIView): @has_permissions( lambda r, k: Permission(group=Group.DATASET, operate=Operate.USE, dynamic_tag=k.get('dataset_id'))) + @log(menu=_('Knowledge Base/Documentation/Paragraph/Question'), operate=_('Question list')) def get(self, request: Request, dataset_id: str): q = ProblemSerializers.Query( data={**query_params_to_single_dict(request.query_params), 'dataset_id': dataset_id}) @@ -49,6 +51,7 @@ class Problem(APIView): @has_permissions( lambda r, k: Permission(group=Group.DATASET, operate=Operate.MANAGE, dynamic_tag=k.get('dataset_id'))) + @log(menu=_('Knowledge Base/Documentation/Paragraph/Question'), operate=_('Create question')) def post(self, request: Request, dataset_id: str): return result.success( ProblemSerializers.Create( @@ -66,6 +69,7 @@ class Problem(APIView): @has_permissions( lambda r, k: Permission(group=Group.DATASET, operate=Operate.USE, dynamic_tag=k.get('dataset_id'))) + @log(menu=_('Knowledge Base/Documentation/Paragraph/Question'), operate=_('Get a list of associated paragraphs')) def get(self, request: Request, dataset_id: str, problem_id: str): return result.success(ProblemSerializers.Operate( data={**query_params_to_single_dict(request.query_params), 'dataset_id': dataset_id, @@ -85,6 +89,7 @@ class Problem(APIView): @has_permissions( lambda r, k: Permission(group=Group.DATASET, operate=Operate.MANAGE, dynamic_tag=k.get('dataset_id'))) + @log(menu=_('Knowledge Base/Documentation/Paragraph/Question'), operate=_('Batch deletion issues')) def delete(self, request: Request, dataset_id: str): return result.success( ProblemSerializers.BatchOperate(data={'dataset_id': dataset_id}).delete(request.data)) @@ -99,6 +104,7 @@ class Problem(APIView): @has_permissions( lambda r, k: Permission(group=Group.DATASET, operate=Operate.MANAGE, dynamic_tag=k.get('dataset_id'))) + @log(menu=_('Knowledge Base/Documentation/Paragraph/Question'), operate=_('Batch associated paragraphs')) def post(self, request: Request, dataset_id: str): return result.success( ProblemSerializers.BatchOperate(data={'dataset_id': dataset_id}).association(request.data)) @@ -115,6 +121,7 @@ class Problem(APIView): @has_permissions( lambda r, k: Permission(group=Group.DATASET, operate=Operate.MANAGE, dynamic_tag=k.get('dataset_id'))) + @log(menu=_('Knowledge Base/Documentation/Paragraph/Question'), operate=_('Delete question')) def delete(self, request: Request, dataset_id: str, problem_id: str): return result.success(ProblemSerializers.Operate( data={**query_params_to_single_dict(request.query_params), 'dataset_id': dataset_id, @@ -130,6 +137,7 @@ class Problem(APIView): @has_permissions( lambda r, k: Permission(group=Group.DATASET, operate=Operate.MANAGE, dynamic_tag=k.get('dataset_id'))) + @log(menu=_('Knowledge Base/Documentation/Paragraph/Question'), operate=_('Modify question')) def put(self, request: Request, dataset_id: str, problem_id: str): return result.success(ProblemSerializers.Operate( data={**query_params_to_single_dict(request.query_params), 'dataset_id': dataset_id, @@ -148,6 +156,7 @@ class Problem(APIView): @has_permissions( lambda r, k: Permission(group=Group.DATASET, operate=Operate.USE, dynamic_tag=k.get('dataset_id'))) + @log(menu=_('Knowledge Base/Documentation/Paragraph/Question'), operate=_('Get the list of questions by page')) def get(self, request: Request, dataset_id: str, current_page, page_size): d = ProblemSerializers.Query( data={**query_params_to_single_dict(request.query_params), 'dataset_id': dataset_id})