refactor: log add workspace_id
This commit is contained in:
parent
60b3bcdd64
commit
f773792424
@ -50,7 +50,7 @@ class ApplicationAPI(APIView):
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role())
|
||||
@log(menu='Application', operate='Create an application',
|
||||
get_operation_object=lambda r, k: {'name': r.data.get('name')},
|
||||
workspace_id=lambda r, k: k.get('workspace_id'))
|
||||
)
|
||||
def post(self, request: Request, workspace_id: str):
|
||||
return result.success(
|
||||
ApplicationSerializer(data={'workspace_id': workspace_id, 'user_id': request.user.id}).insert(request.data))
|
||||
@ -103,7 +103,7 @@ class ApplicationAPI(APIView):
|
||||
tags=[_('Application')] # type: ignore
|
||||
)
|
||||
@has_permissions(PermissionConstants.APPLICATION_READ, RoleConstants.WORKSPACE_MANAGE.get_workspace_role())
|
||||
@log(menu='Application', operate="Import Application", workspace_id=lambda r, k: k.get('workspace_id'))
|
||||
@log(menu='Application', operate="Import Application", )
|
||||
def post(self, request: Request, workspace_id: str):
|
||||
return result.success(ApplicationSerializer(
|
||||
data={'user_id': request.user.id, 'workspace_id': workspace_id,
|
||||
@ -126,7 +126,7 @@ class ApplicationAPI(APIView):
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role())
|
||||
@log(menu='Application', operate="Export Application",
|
||||
get_operation_object=lambda r, k: get_application_operation_object(k.get('application_id')),
|
||||
workspace_id=lambda r, k: k.get('workspace_id'))
|
||||
)
|
||||
def post(self, request: Request, workspace_id: str, application_id: str):
|
||||
return ApplicationOperateSerializer(
|
||||
data={'application_id': application_id,
|
||||
@ -148,7 +148,7 @@ class ApplicationAPI(APIView):
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role())
|
||||
@log(menu='Application', operate='Deleting application',
|
||||
get_operation_object=lambda r, k: get_application_operation_object(k.get('application_id')),
|
||||
workspace_id=lambda r, k: k.get('workspace_id')
|
||||
|
||||
)
|
||||
def delete(self, request: Request, workspace_id: str, application_id: str):
|
||||
return result.success(ApplicationOperateSerializer(
|
||||
@ -169,7 +169,7 @@ class ApplicationAPI(APIView):
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role())
|
||||
@log(menu='Application', operate="Modify the application",
|
||||
get_operation_object=lambda r, k: get_application_operation_object(k.get('application_id')),
|
||||
workspace_id=lambda r, k: k.get('workspace_id'))
|
||||
)
|
||||
def put(self, request: Request, workspace_id: str, application_id: str):
|
||||
return result.success(
|
||||
ApplicationOperateSerializer(
|
||||
@ -207,7 +207,7 @@ class ApplicationAPI(APIView):
|
||||
)
|
||||
@log(menu='Application', operate='Publishing an application',
|
||||
get_operation_object=lambda r, k: get_application_operation_object(k.get('application_id')),
|
||||
workspace_id=lambda r, k: k.get('workspace_id')
|
||||
|
||||
)
|
||||
def put(self, request: Request, workspace_id: str, application_id: str):
|
||||
return result.success(
|
||||
|
||||
@ -38,7 +38,7 @@ class ApplicationKey(APIView):
|
||||
)
|
||||
@log(menu='Application', operate="Add ApiKey",
|
||||
get_operation_object=lambda r, k: get_application_operation_object(k.get('application_id')),
|
||||
workspace_id=lambda r, k: k.get('workspace_id'))
|
||||
)
|
||||
@has_permissions(PermissionConstants.APPLICATION_OVERVIEW_API_KEY.get_workspace_application_permission(),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
@ -80,7 +80,7 @@ class ApplicationKey(APIView):
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role())
|
||||
@log(menu='Application', operate="Modify application API_KEY",
|
||||
get_operation_object=lambda r, k: get_application_operation_object(k.get('application_id')),
|
||||
workspace_id=lambda r, k: k.get('workspace_id'))
|
||||
)
|
||||
def put(self, request: Request, workspace_id: str, application_id: str, api_key_id: str):
|
||||
return result.success(
|
||||
ApplicationKeySerializer.Operate(
|
||||
@ -102,7 +102,7 @@ class ApplicationKey(APIView):
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role())
|
||||
@log(menu='Application', operate="Delete application API_KEY",
|
||||
get_operation_object=lambda r, k: get_application_operation_object(k.get('application_id')),
|
||||
workspace_id=lambda r, k: k.get('workspace_id'))
|
||||
)
|
||||
def delete(self, request: Request, workspace_id: str, application_id: str, api_key_id: str):
|
||||
return result.success(
|
||||
ApplicationKeySerializer.Operate(
|
||||
|
||||
@ -97,7 +97,7 @@ class ApplicationVersionView(APIView):
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role())
|
||||
@log(menu='Application', operate="Modify application version information",
|
||||
get_operation_object=lambda r, k: get_application_operation_object(k.get('application_id')),
|
||||
workspace_id=lambda r, k: k.get('workspace_id'))
|
||||
)
|
||||
def put(self, request: Request, workspace_id: str, application_id: str, work_flow_version_id: str):
|
||||
return result.success(
|
||||
ApplicationVersionSerializer.Operate(
|
||||
|
||||
17
apps/common/job/__init__.py
Normal file
17
apps/common/job/__init__.py
Normal file
@ -0,0 +1,17 @@
|
||||
# coding=utf-8
|
||||
"""
|
||||
@project: maxkb
|
||||
@Author:虎
|
||||
@file: __init__.py
|
||||
@date:2024/3/14 11:54
|
||||
@desc:
|
||||
"""
|
||||
#from .client_access_num_job import *
|
||||
from .clean_chat_job import *
|
||||
from .clean_debug_file_job import *
|
||||
|
||||
|
||||
def run():
|
||||
#client_access_num_job.run()
|
||||
clean_chat_job.run()
|
||||
clean_debug_file_job.run()
|
||||
81
apps/common/job/clean_chat_job.py
Normal file
81
apps/common/job/clean_chat_job.py
Normal file
@ -0,0 +1,81 @@
|
||||
# coding=utf-8
|
||||
|
||||
import logging
|
||||
import datetime
|
||||
|
||||
from django.db import transaction
|
||||
from django.utils import timezone
|
||||
from apscheduler.schedulers.background import BackgroundScheduler
|
||||
from django_apscheduler.jobstores import DjangoJobStore
|
||||
from application.models import Application, Chat, ChatRecord
|
||||
from django.db.models import Q, Max
|
||||
from common.lock.impl.file_lock import FileLock
|
||||
|
||||
from knowledge.models import File
|
||||
|
||||
scheduler = BackgroundScheduler()
|
||||
scheduler.add_jobstore(DjangoJobStore(), "default")
|
||||
lock = FileLock()
|
||||
|
||||
|
||||
def clean_chat_log_job():
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
logging.getLogger("max_kb").info(_('start clean chat log'))
|
||||
now = timezone.now()
|
||||
|
||||
applications = Application.objects.all().values('id', 'clean_time')
|
||||
cutoff_dates = {
|
||||
app['id']: now - datetime.timedelta(days=app['clean_time'] or 180)
|
||||
for app in applications
|
||||
}
|
||||
|
||||
query_conditions = Q()
|
||||
for app_id, cutoff_date in cutoff_dates.items():
|
||||
query_conditions |= Q(chat__application_id=app_id, create_time__lt=cutoff_date)
|
||||
batch_size = 500
|
||||
while True:
|
||||
with transaction.atomic():
|
||||
chat_records = ChatRecord.objects.filter(query_conditions).select_related('chat').only('id', 'chat_id',
|
||||
'create_time')[
|
||||
:batch_size]
|
||||
if not chat_records:
|
||||
break
|
||||
chat_record_ids = [record.id for record in chat_records]
|
||||
chat_ids = {record.chat_id for record in chat_records}
|
||||
|
||||
# 计算每个 chat_id 的最大 create_time
|
||||
max_create_times = ChatRecord.objects.filter(id__in=chat_record_ids).values('chat_id').annotate(
|
||||
max_create_time=Max('create_time'))
|
||||
|
||||
# 收集需要删除的文件
|
||||
files_to_delete = []
|
||||
for record in chat_records:
|
||||
max_create_time = next(
|
||||
(item['max_create_time'] for item in max_create_times if item['chat_id'] == record.chat_id), None)
|
||||
if max_create_time:
|
||||
files_to_delete.extend(
|
||||
File.objects.filter(meta__chat_id=str(record.chat_id), create_time__lt=max_create_time)
|
||||
)
|
||||
# 删除 ChatRecord
|
||||
deleted_count = ChatRecord.objects.filter(id__in=chat_record_ids).delete()[0]
|
||||
|
||||
# 删除没有关联 ChatRecord 的 Chat
|
||||
Chat.objects.filter(chatrecord__isnull=True, id__in=chat_ids).delete()
|
||||
File.objects.filter(loid__in=[file.loid for file in files_to_delete]).delete()
|
||||
|
||||
if deleted_count < batch_size:
|
||||
break
|
||||
|
||||
logging.getLogger("max_kb").info(_('end clean chat log'))
|
||||
|
||||
|
||||
def run():
|
||||
if lock.try_lock('clean_chat_log_job', 30 * 30):
|
||||
try:
|
||||
scheduler.start()
|
||||
existing_job = scheduler.get_job(job_id='clean_chat_log')
|
||||
if existing_job is not None:
|
||||
existing_job.remove()
|
||||
scheduler.add_job(clean_chat_log_job, 'cron', hour='0', minute='5', id='clean_chat_log')
|
||||
finally:
|
||||
lock.un_lock('clean_chat_log_job')
|
||||
37
apps/common/job/clean_debug_file_job.py
Normal file
37
apps/common/job/clean_debug_file_job.py
Normal file
@ -0,0 +1,37 @@
|
||||
# coding=utf-8
|
||||
|
||||
import logging
|
||||
from datetime import timedelta
|
||||
|
||||
from apscheduler.schedulers.background import BackgroundScheduler
|
||||
from django.db.models import Q
|
||||
from django.utils import timezone
|
||||
from django_apscheduler.jobstores import DjangoJobStore
|
||||
|
||||
from common.lock.impl.file_lock import FileLock
|
||||
from knowledge.models import File
|
||||
|
||||
scheduler = BackgroundScheduler()
|
||||
scheduler.add_jobstore(DjangoJobStore(), "default")
|
||||
lock = FileLock()
|
||||
|
||||
|
||||
def clean_debug_file():
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
logging.getLogger("max_kb").info(_('start clean debug file'))
|
||||
two_hours_ago = timezone.now() - timedelta(hours=2)
|
||||
# 删除对应的文件
|
||||
File.objects.filter(Q(create_time__lt=two_hours_ago) & Q(meta__debug=True)).delete()
|
||||
logging.getLogger("max_kb").info(_('end clean debug file'))
|
||||
|
||||
|
||||
def run():
|
||||
if lock.try_lock('clean_debug_file', 30 * 30):
|
||||
try:
|
||||
scheduler.start()
|
||||
clean_debug_file_job = scheduler.get_job(job_id='clean_debug_file')
|
||||
if clean_debug_file_job is not None:
|
||||
clean_debug_file_job.remove()
|
||||
scheduler.add_job(clean_debug_file, 'cron', hour='2', minute='0', second='0', id='clean_debug_file')
|
||||
finally:
|
||||
lock.un_lock('clean_debug_file')
|
||||
@ -57,7 +57,7 @@ def _get_details(request):
|
||||
|
||||
|
||||
def _get_workspace_id(request, kwargs):
|
||||
return kwargs.get('workspace_id', None)
|
||||
return kwargs.get('workspace_id', 'None')
|
||||
|
||||
|
||||
def log(menu: str, operate, get_user=_get_user, get_ip_address=_get_ip_address, get_details=_get_details,
|
||||
|
||||
@ -44,7 +44,7 @@ class FolderView(APIView):
|
||||
@log(
|
||||
menu='folder', operate='Create folder',
|
||||
get_operation_object=lambda r, k: {'name': r.data.get('name')},
|
||||
workspace_id=lambda r, k: k.get('workspace_id')
|
||||
|
||||
)
|
||||
def post(self, request: Request, workspace_id: str, source: str):
|
||||
return result.success(FolderSerializer.Create(
|
||||
@ -93,7 +93,7 @@ class FolderView(APIView):
|
||||
@log(
|
||||
menu='folder', operate='Edit folder',
|
||||
get_operation_object=lambda r, k: get_folder_operation_object(k.get('folder_id'), k.get('source')),
|
||||
workspace_id=lambda r, k: k.get('workspace_id')
|
||||
|
||||
)
|
||||
def put(self, request: Request, workspace_id: str, source: str, folder_id: str):
|
||||
return result.success(FolderSerializer.Operate(
|
||||
@ -136,7 +136,7 @@ class FolderView(APIView):
|
||||
@log(
|
||||
menu='folder', operate='Delete folder',
|
||||
get_operation_object=lambda r, k: get_folder_operation_object(k.get('folder_id'), k.get('source')),
|
||||
workspace_id=lambda r, k: k.get('workspace_id')
|
||||
|
||||
)
|
||||
def delete(self, request: Request, workspace_id: str, source: str, folder_id: str):
|
||||
return result.success(FolderSerializer.Operate(
|
||||
|
||||
@ -40,7 +40,7 @@ class DocumentView(APIView):
|
||||
@log(menu='document', operate="Create document",
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
{'name': r.data.get('name')}), workspace_id=lambda r, keywords: keywords.get('workspace_id'))
|
||||
{'name': r.data.get('name')}), )
|
||||
def post(self, request: Request, workspace_id: str, knowledge_id: str):
|
||||
return result.success(
|
||||
DocumentSerializers.Create(
|
||||
@ -112,7 +112,7 @@ class DocumentView(APIView):
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
get_document_operation_object(keywords.get('document_id'))
|
||||
), workspace_id=lambda r, keywords: keywords.get('workspace_id')
|
||||
),
|
||||
)
|
||||
def put(self, request: Request, workspace_id: str, knowledge_id: str, document_id: str):
|
||||
return result.success(DocumentSerializers.Operate(data={
|
||||
@ -136,7 +136,7 @@ class DocumentView(APIView):
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
get_document_operation_object(keywords.get('document_id'))
|
||||
), workspace_id=lambda r, keywords: keywords.get('workspace_id')
|
||||
),
|
||||
)
|
||||
def delete(self, request: Request, workspace_id: str, knowledge_id: str, document_id: str):
|
||||
operate = DocumentSerializers.Operate(data={
|
||||
@ -217,7 +217,7 @@ class DocumentView(APIView):
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
get_document_operation_object_batch(r.data.get('id_list'))),
|
||||
workspace_id=lambda r, keywords: keywords.get('workspace_id')
|
||||
|
||||
)
|
||||
def put(self, request: Request, workspace_id: str, knowledge_id: str):
|
||||
return result.success(DocumentSerializers.Batch(
|
||||
@ -246,7 +246,7 @@ class DocumentView(APIView):
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
get_document_operation_object(keywords.get('document_id'))
|
||||
), workspace_id=lambda r, keywords: keywords.get('workspace_id')
|
||||
),
|
||||
)
|
||||
def get(self, request: Request, workspace_id: str, knowledge_id: str, document_id: str):
|
||||
return result.success(DocumentSerializers.Sync(
|
||||
@ -275,7 +275,7 @@ class DocumentView(APIView):
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
get_document_operation_object(keywords.get('document_id'))
|
||||
), workspace_id=lambda r, keywords: keywords.get('workspace_id')
|
||||
),
|
||||
)
|
||||
def put(self, request: Request, workspace_id: str, knowledge_id: str, document_id: str):
|
||||
return result.success(DocumentSerializers.Operate(
|
||||
@ -303,7 +303,7 @@ class DocumentView(APIView):
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
get_document_operation_object(keywords.get('document_id'))
|
||||
), workspace_id=lambda r, keywords: keywords.get('workspace_id')
|
||||
),
|
||||
)
|
||||
def put(self, request: Request, workspace_id: str, knowledge_id: str, document_id: str):
|
||||
return result.success(DocumentSerializers.Operate(
|
||||
@ -331,7 +331,7 @@ class DocumentView(APIView):
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
get_document_operation_object_batch(r.data.get('id_list'))
|
||||
), workspace_id=lambda r, keywords: keywords.get('workspace_id')
|
||||
),
|
||||
)
|
||||
def put(self, request: Request, workspace_id: str, knowledge_id: str):
|
||||
return result.success(DocumentSerializers.Batch(data={
|
||||
@ -361,7 +361,7 @@ class DocumentView(APIView):
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
{'name': f'[{",".join([document.get("name") for document in r.data])}]',
|
||||
'document_list': r.data}), workspace_id=lambda r, keywords: keywords.get('workspace_id')
|
||||
'document_list': r.data}),
|
||||
)
|
||||
def put(self, request: Request, workspace_id: str, knowledge_id: str):
|
||||
return result.success(DocumentSerializers.Batch(
|
||||
@ -391,7 +391,7 @@ class DocumentView(APIView):
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
get_document_operation_object_batch(r.data.get('id_list'))),
|
||||
workspace_id=lambda r, keywords: keywords.get('workspace_id')
|
||||
|
||||
)
|
||||
def put(self, request: Request, workspace_id: str, knowledge_id: str):
|
||||
return result.success(DocumentSerializers.Batch(
|
||||
@ -421,7 +421,7 @@ class DocumentView(APIView):
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
get_document_operation_object_batch(r.data.get('id_list'))),
|
||||
workspace_id=lambda r, keywords: keywords.get('workspace_id')
|
||||
|
||||
)
|
||||
def put(self, request: Request, workspace_id: str, knowledge_id: str):
|
||||
return result.success(DocumentSerializers.Batch(
|
||||
@ -450,7 +450,7 @@ class DocumentView(APIView):
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
get_document_operation_object_batch(r.data.get('id_list'))
|
||||
), workspace_id=lambda r, keywords: keywords.get('workspace_id')
|
||||
),
|
||||
)
|
||||
def put(self, request: Request, workspace_id: str, knowledge_id: str):
|
||||
return result.success(
|
||||
@ -481,7 +481,7 @@ class DocumentView(APIView):
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
get_document_operation_object_batch(r.data.get('document_id_list'))
|
||||
), workspace_id=lambda r, keywords: keywords.get('workspace_id')
|
||||
),
|
||||
)
|
||||
def put(self, request: Request, workspace_id: str, knowledge_id: str):
|
||||
return result.success(DocumentSerializers.BatchGenerateRelated(
|
||||
@ -535,7 +535,7 @@ class DocumentView(APIView):
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
get_document_operation_object(keywords.get('document_id'))
|
||||
), workspace_id=lambda r, keywords: keywords.get('workspace_id')
|
||||
),
|
||||
)
|
||||
def get(self, request: Request, workspace_id: str, knowledge_id: str, document_id: str):
|
||||
return DocumentSerializers.Operate(data={
|
||||
@ -561,7 +561,7 @@ class DocumentView(APIView):
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
get_document_operation_object(keywords.get('document_id'))
|
||||
), workspace_id=lambda r, keywords: keywords.get('workspace_id')
|
||||
),
|
||||
)
|
||||
def get(self, request: Request, workspace_id: str, knowledge_id: str, document_id: str):
|
||||
return DocumentSerializers.Operate(data={
|
||||
@ -607,7 +607,7 @@ class DocumentView(APIView):
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
get_document_operation_object_batch(r.data)
|
||||
), workspace_id=lambda r, keywords: keywords.get('workspace_id')
|
||||
),
|
||||
)
|
||||
def put(self, request: Request, workspace_id, knowledge_id: str, target_knowledge_id: str):
|
||||
return result.success(DocumentSerializers.Migrate(
|
||||
@ -642,7 +642,7 @@ class WebDocumentView(APIView):
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
{'name': f'[{",".join([url for url in r.data.get("source_url_list", [])])}]',
|
||||
'document_list': [{'name': url} for url in r.data.get("source_url_list", [])]}),
|
||||
workspace_id=lambda r, keywords: keywords.get('workspace_id')
|
||||
|
||||
)
|
||||
def post(self, request: Request, workspace_id: str, knowledge_id: str):
|
||||
return result.success(DocumentSerializers.Create(data={
|
||||
@ -673,7 +673,7 @@ class QaDocumentView(APIView):
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
{'name': f'[{",".join([file.name for file in r.FILES.getlist("file")])}]',
|
||||
'document_list': [{'name': file.name} for file in r.FILES.getlist("file")]}),
|
||||
workspace_id=lambda r, keywords: keywords.get('workspace_id')
|
||||
|
||||
)
|
||||
def post(self, request: Request, workspace_id: str, knowledge_id: str):
|
||||
return result.success(DocumentSerializers.Create(data={
|
||||
@ -704,7 +704,7 @@ class TableDocumentView(APIView):
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
{'name': f'[{",".join([file.name for file in r.FILES.getlist("file")])}]',
|
||||
'document_list': [{'name': file.name} for file in r.FILES.getlist("file")]}),
|
||||
workspace_id=lambda r, keywords: keywords.get('workspace_id')
|
||||
|
||||
)
|
||||
def post(self, request: Request, workspace_id: str, knowledge_id: str):
|
||||
return result.success(DocumentSerializers.Create(
|
||||
|
||||
@ -65,7 +65,7 @@ class KnowledgeView(APIView):
|
||||
@log(
|
||||
menu='Knowledge Base', operate="Modify knowledge base information",
|
||||
get_operation_object=lambda r, keywords: get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
workspace_id=lambda r, keywords: keywords.get('workspace_id')
|
||||
|
||||
)
|
||||
def put(self, request: Request, workspace_id: str, knowledge_id: str):
|
||||
return result.success(KnowledgeSerializer.Operate(
|
||||
@ -89,7 +89,7 @@ class KnowledgeView(APIView):
|
||||
@log(
|
||||
menu='Knowledge Base', operate="Delete knowledge base",
|
||||
get_operation_object=lambda r, keywords: get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
workspace_id=lambda r, keywords: keywords.get('workspace_id')
|
||||
|
||||
)
|
||||
def delete(self, request: Request, workspace_id: str, knowledge_id: str):
|
||||
return result.success(KnowledgeSerializer.Operate(
|
||||
@ -162,7 +162,7 @@ class KnowledgeView(APIView):
|
||||
@log(
|
||||
menu='Knowledge Base', operate="Synchronize the knowledge base of the website",
|
||||
get_operation_object=lambda r, keywords: get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
workspace_id=lambda r, keywords: keywords.get('workspace_id')
|
||||
|
||||
)
|
||||
def put(self, request: Request, workspace_id: str, knowledge_id: str):
|
||||
return result.success(KnowledgeSerializer.SyncWeb(
|
||||
@ -224,7 +224,7 @@ class KnowledgeView(APIView):
|
||||
@log(
|
||||
menu='Knowledge Base', operate='Re-vectorize',
|
||||
get_operation_object=lambda r, k: get_knowledge_operation_object(k.get('knowledge_id')),
|
||||
workspace_id=lambda r, keywords: keywords.get('workspace_id')
|
||||
|
||||
)
|
||||
def put(self, request: Request, workspace_id: str, knowledge_id: str):
|
||||
return result.success(KnowledgeSerializer.Operate(
|
||||
@ -248,7 +248,7 @@ class KnowledgeView(APIView):
|
||||
@log(
|
||||
menu='Knowledge Base', operate="Export knowledge base",
|
||||
get_operation_object=lambda r, keywords: get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
workspace_id=lambda r, keywords: keywords.get('workspace_id')
|
||||
|
||||
)
|
||||
def get(self, request: Request, workspace_id: str, knowledge_id: str):
|
||||
return KnowledgeSerializer.Operate(data={
|
||||
@ -272,7 +272,7 @@ class KnowledgeView(APIView):
|
||||
@log(
|
||||
menu='Knowledge Base', operate="Export knowledge base containing images",
|
||||
get_operation_object=lambda r, keywords: get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
workspace_id=lambda r, keywords: keywords.get('workspace_id')
|
||||
|
||||
)
|
||||
def get(self, request: Request, workspace_id: str, knowledge_id: str):
|
||||
return KnowledgeSerializer.Operate(data={
|
||||
@ -299,7 +299,7 @@ class KnowledgeView(APIView):
|
||||
@log(
|
||||
menu='document', operate='Generate related documents',
|
||||
get_operation_object=lambda r, k: get_knowledge_operation_object(k.get('knowledge_id')),
|
||||
workspace_id=lambda r, keywords: keywords.get('workspace_id')
|
||||
|
||||
)
|
||||
def put(self, request: Request, workspace_id: str, knowledge_id: str):
|
||||
return result.success(KnowledgeSerializer.Operate(
|
||||
@ -375,7 +375,7 @@ class KnowledgeBaseView(APIView):
|
||||
@log(
|
||||
menu='knowledge Base', operate='Create base knowledge',
|
||||
get_operation_object=lambda r, k: {'name': r.data.get('name'), 'desc': r.data.get('desc')},
|
||||
workspace_id=lambda r, keywords: keywords.get('workspace_id')
|
||||
|
||||
)
|
||||
def post(self, request: Request, workspace_id: str):
|
||||
return result.success(KnowledgeSerializer.Create(
|
||||
@ -407,7 +407,7 @@ class KnowledgeWebView(APIView):
|
||||
'meta': {'source_url': r.data.get('source_url'),
|
||||
'selector': r.data.get('selector'),
|
||||
'embedding_model_id': r.data.get('embedding_model_id')}}
|
||||
, workspace_id=lambda r, keywords: keywords.get('workspace_id')
|
||||
,
|
||||
)
|
||||
def post(self, request: Request, workspace_id: str):
|
||||
return result.success(KnowledgeSerializer.Create(
|
||||
|
||||
@ -61,7 +61,7 @@ class ParagraphView(APIView):
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
get_document_operation_object(keywords.get('document_id'))
|
||||
), workspace_id=lambda r, k: k.get('workspace_id')
|
||||
),
|
||||
)
|
||||
def post(self, request: Request, workspace_id: str, knowledge_id: str, document_id: str):
|
||||
return result.success(ParagraphSerializers.Create(
|
||||
@ -110,7 +110,7 @@ class ParagraphView(APIView):
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
get_document_operation_object(keywords.get('document_id'))
|
||||
), workspace_id=lambda r, k: k.get('workspace_id')
|
||||
),
|
||||
)
|
||||
def put(self, request: Request, workspace_id: str, knowledge_id: str, document_id: str,
|
||||
target_knowledge_id: str, target_document_id):
|
||||
@ -146,7 +146,7 @@ class ParagraphView(APIView):
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
get_document_operation_object(keywords.get('document_id'))
|
||||
), workspace_id=lambda r, k: k.get('workspace_id')
|
||||
),
|
||||
)
|
||||
def put(self, request: Request, workspace_id: str, knowledge_id: str, document_id: str):
|
||||
return result.success(ParagraphSerializers.Batch(
|
||||
@ -175,7 +175,7 @@ class ParagraphView(APIView):
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
get_document_operation_object(keywords.get('document_id'))
|
||||
), workspace_id=lambda r, k: k.get('workspace_id')
|
||||
),
|
||||
)
|
||||
def put(self, request: Request, workspace_id: str, knowledge_id: str, document_id: str, paragraph_id: str):
|
||||
o = ParagraphSerializers.Operate(
|
||||
@ -231,7 +231,7 @@ class ParagraphView(APIView):
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
get_document_operation_object(keywords.get('document_id'))
|
||||
), workspace_id=lambda r, k: k.get('workspace_id')
|
||||
),
|
||||
)
|
||||
def delete(self, request: Request, workspace_id: str, knowledge_id: str, document_id: str, paragraph_id: str):
|
||||
o = ParagraphSerializers.Operate(
|
||||
@ -267,7 +267,7 @@ class ParagraphView(APIView):
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
get_document_operation_object(keywords.get('document_id'))
|
||||
), workspace_id=lambda r, k: k.get('workspace_id')
|
||||
),
|
||||
)
|
||||
def post(self, request: Request, workspace_id: str, knowledge_id: str, document_id: str, paragraph_id: str):
|
||||
return result.success(ParagraphSerializers.Problem(
|
||||
@ -359,7 +359,7 @@ class ParagraphView(APIView):
|
||||
get_operation_object=lambda r, keywords: get_knowledge_document_operation_object(
|
||||
get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
get_document_operation_object(keywords.get('document_id'))
|
||||
), workspace_id=lambda r, k: k.get('workspace_id')
|
||||
),
|
||||
)
|
||||
def put(self, request: Request, workspace_id: str, knowledge_id: str, document_id: str):
|
||||
return result.success(ParagraphSerializers.Association(
|
||||
|
||||
@ -59,7 +59,7 @@ class ProblemView(APIView):
|
||||
@log(
|
||||
menu='problem', operate='Create question',
|
||||
get_operation_object=lambda r, keywords: get_knowledge_operation_object(keywords.get('knowledge_id'))
|
||||
, workspace_id=lambda r, k: k.get('workspace_id')
|
||||
,
|
||||
)
|
||||
def post(self, request: Request, workspace_id: str, knowledge_id: str):
|
||||
return result.success(ProblemSerializers.Create(
|
||||
@ -110,7 +110,7 @@ class ProblemView(APIView):
|
||||
@log(
|
||||
menu='problem', operate='Batch associated paragraphs',
|
||||
get_operation_object=lambda r, keywords: get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
workspace_id=lambda r, k: k.get('workspace_id')
|
||||
|
||||
)
|
||||
def put(self, request: Request, workspace_id: str, knowledge_id: str):
|
||||
return result.success(ProblemSerializers.BatchOperate(
|
||||
@ -137,7 +137,7 @@ class ProblemView(APIView):
|
||||
@log(
|
||||
menu='problem', operate='Batch deletion issues',
|
||||
get_operation_object=lambda r, keywords: get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
workspace_id=lambda r, k: k.get('workspace_id')
|
||||
|
||||
)
|
||||
def put(self, request: Request, workspace_id: str, knowledge_id: str):
|
||||
return result.success(ProblemSerializers.BatchOperate(
|
||||
@ -163,7 +163,7 @@ class ProblemView(APIView):
|
||||
@log(
|
||||
menu='problem', operate='Delete question',
|
||||
get_operation_object=lambda r, keywords: get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
workspace_id=lambda r, k: k.get('workspace_id')
|
||||
|
||||
)
|
||||
def delete(self, request: Request, workspace_id: str, knowledge_id: str, problem_id: str):
|
||||
return result.success(ProblemSerializers.Operate(
|
||||
@ -192,7 +192,7 @@ class ProblemView(APIView):
|
||||
@log(
|
||||
menu='problem', operate='Modify question',
|
||||
get_operation_object=lambda r, keywords: get_knowledge_operation_object(keywords.get('knowledge_id')),
|
||||
workspace_id=lambda r, k: k.get('workspace_id')
|
||||
|
||||
)
|
||||
def put(self, request: Request, workspace_id: str, knowledge_id: str, problem_id: str):
|
||||
return result.success(ProblemSerializers.Operate(
|
||||
|
||||
@ -67,7 +67,7 @@ class ModelSetting(APIView):
|
||||
@has_permissions(PermissionConstants.MODEL_CREATE.get_workspace_permission())
|
||||
@log(menu='model', operate='Create model',
|
||||
get_operation_object=lambda r, k: {'name': r.date.get('name')},
|
||||
get_details=get_edit_model_details, workspace_id=lambda r, k: k.get('workspace_id')
|
||||
get_details=get_edit_model_details,
|
||||
)
|
||||
def post(self, request: Request, workspace_id: str):
|
||||
return result.success(
|
||||
@ -114,7 +114,7 @@ class ModelSetting(APIView):
|
||||
@has_permissions(PermissionConstants.MODEL_EDIT.get_workspace_permission())
|
||||
@log(menu='model', operate='Update model',
|
||||
get_operation_object=lambda r, k: get_model_operation_object(k.get('model_id')),
|
||||
get_details=get_edit_model_details, workspace_id=lambda r, k: k.get('workspace_id')
|
||||
get_details=get_edit_model_details,
|
||||
)
|
||||
def put(self, request: Request, workspace_id, model_id: str):
|
||||
return result.success(
|
||||
@ -131,7 +131,7 @@ class ModelSetting(APIView):
|
||||
@has_permissions(PermissionConstants.MODEL_DELETE.get_workspace_permission())
|
||||
@log(menu='model', operate='Delete model',
|
||||
get_operation_object=lambda r, k: get_model_operation_object(k.get('model_id')),
|
||||
workspace_id=lambda r, k: k.get('workspace_id'))
|
||||
)
|
||||
def delete(self, request: Request, workspace_id: str, model_id: str):
|
||||
return result.success(
|
||||
ModelSerializer.Operate(data={'id': model_id, 'user_id': request.user.id}).delete())
|
||||
@ -174,7 +174,7 @@ class ModelSetting(APIView):
|
||||
@has_permissions(PermissionConstants.MODEL_READ.get_workspace_permission())
|
||||
@log(menu='model', operate='Save model parameter form',
|
||||
get_operation_object=lambda r, k: get_model_operation_object(k.get('model_id')),
|
||||
workspace_id=lambda r, k: k.get('workspace_id'))
|
||||
)
|
||||
def put(self, request: Request, workspace_id: str, model_id: str):
|
||||
return result.success(
|
||||
ModelSerializer.ModelParams(data={'id': model_id}).save_model_params_form(request.data))
|
||||
|
||||
@ -55,7 +55,7 @@ class SystemSetting(APIView):
|
||||
responses=EmailSettingAPI.get_response(),
|
||||
tags=[_('Email Settings')]) # type: ignore
|
||||
@log(menu='Email settings', operate='Create or update email settings',
|
||||
get_details=get_email_details, workspace_id='None')
|
||||
get_details=get_email_details)
|
||||
@has_permissions(PermissionConstants.EMAIL_SETTING_EDIT)
|
||||
def put(self, request: Request):
|
||||
return result.success(
|
||||
@ -72,7 +72,7 @@ class SystemSetting(APIView):
|
||||
)
|
||||
@has_permissions(PermissionConstants.EMAIL_SETTING_EDIT)
|
||||
@log(menu='Email settings', operate='Test email settings',
|
||||
get_details=get_email_details, workspace_id='None'
|
||||
get_details=get_email_details
|
||||
)
|
||||
def post(self, request: Request):
|
||||
return result.success(
|
||||
|
||||
@ -44,7 +44,7 @@ class ToolView(APIView):
|
||||
)
|
||||
@log(
|
||||
menu="Tool", operate="Create tool",
|
||||
get_operation_object=lambda r, k: r.data.get('name'), workspace_id=lambda r, k: k.get('workspace_id')
|
||||
get_operation_object=lambda r, k: r.data.get('name'),
|
||||
)
|
||||
def post(self, request: Request, workspace_id: str):
|
||||
return result.success(ToolSerializer.Create(
|
||||
@ -110,7 +110,7 @@ class ToolView(APIView):
|
||||
@log(
|
||||
menu='Tool', operate='Update tool',
|
||||
get_operation_object=lambda r, k: get_tool_operation_object(k.get('tool_id')),
|
||||
workspace_id=lambda r, k: k.get('workspace_id')
|
||||
|
||||
)
|
||||
def put(self, request: Request, workspace_id: str, tool_id: str):
|
||||
return result.success(ToolSerializer.Operate(
|
||||
@ -152,7 +152,7 @@ class ToolView(APIView):
|
||||
@log(
|
||||
menu='Tool', operate="Delete tool",
|
||||
get_operation_object=lambda r, k: get_tool_operation_object(k.get('tool_id')),
|
||||
workspace_id=lambda r, k: k.get('workspace_id')
|
||||
|
||||
)
|
||||
def delete(self, request: Request, workspace_id: str, tool_id: str):
|
||||
return result.success(ToolSerializer.Operate(
|
||||
@ -204,7 +204,7 @@ class ToolView(APIView):
|
||||
PermissionConstants.TOOL_IMPORT.get_workspace_permission(),
|
||||
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
|
||||
)
|
||||
@log(menu='Tool', operate='Import tool', workspace_id=lambda r, k: k.get('workspace_id'))
|
||||
@log(menu='Tool', operate='Import tool', )
|
||||
def post(self, request: Request, workspace_id: str):
|
||||
return result.success(ToolSerializer.Import(
|
||||
data={'workspace_id': workspace_id, 'file': request.FILES.get('file'), 'user_id': request.user.id}
|
||||
@ -229,7 +229,7 @@ class ToolView(APIView):
|
||||
@log(
|
||||
menu='Tool', operate="Export function",
|
||||
get_operation_object=lambda r, k: get_tool_operation_object(k.get('id')),
|
||||
workspace_id=lambda r, k: k.get('workspace_id')
|
||||
|
||||
)
|
||||
def get(self, request: Request, tool_id: str, workspace_id: str):
|
||||
return ToolSerializer.Operate(
|
||||
|
||||
Loading…
Reference in New Issue
Block a user