mirror of
https://github.com/1Panel-dev/MaxKB.git
synced 2025-12-26 01:33:05 +00:00
feat: 添加标注删除接口
This commit is contained in:
parent
724f1cc7c5
commit
7950a8c9d0
|
|
@ -34,6 +34,7 @@ from common.util.lock import try_lock, un_lock
|
|||
from common.util.rsa_util import decrypt
|
||||
from common.util.split_model import flat_map
|
||||
from dataset.models import Document, Problem, Paragraph
|
||||
from dataset.serializers.paragraph_serializers import ParagraphSerializers
|
||||
from setting.models import Model
|
||||
from setting.models_provider.constants.model_provider_constants import ModelProvideConstants
|
||||
from smartdoc.conf import PROJECT_DIR
|
||||
|
|
@ -355,7 +356,7 @@ class ChatRecordSerializer(serializers.Serializer):
|
|||
class Improve(serializers.Serializer):
|
||||
chat_id = serializers.UUIDField(required=True, error_messages=ErrMessage.uuid("对话id"))
|
||||
|
||||
chat_record_id = serializers.UUIDField(required=True, error_messages=ErrMessage.uuid("对话id"))
|
||||
chat_record_id = serializers.UUIDField(required=True, error_messages=ErrMessage.uuid("对话记录id"))
|
||||
|
||||
dataset_id = serializers.UUIDField(required=True, error_messages=ErrMessage.uuid("知识库id"))
|
||||
|
||||
|
|
@ -403,3 +404,36 @@ class ChatRecordSerializer(serializers.Serializer):
|
|||
# 添加标注
|
||||
chat_record.save()
|
||||
return ChatRecordSerializerModel(chat_record).data, paragraph.id
|
||||
|
||||
class Operate(serializers.Serializer):
|
||||
chat_id = serializers.UUIDField(required=True, error_messages=ErrMessage.uuid("对话id"))
|
||||
|
||||
chat_record_id = serializers.UUIDField(required=True, error_messages=ErrMessage.uuid("对话记录id"))
|
||||
|
||||
dataset_id = serializers.UUIDField(required=True, error_messages=ErrMessage.uuid("知识库id"))
|
||||
|
||||
document_id = serializers.UUIDField(required=True, error_messages=ErrMessage.uuid("文档id"))
|
||||
|
||||
paragraph_id = serializers.UUIDField(required=True, error_messages=ErrMessage.uuid("段落id"))
|
||||
|
||||
def delete(self, with_valid=True):
|
||||
if with_valid:
|
||||
self.is_valid(raise_exception=True)
|
||||
|
||||
chat_record_id = self.data.get('chat_record_id')
|
||||
chat_id = self.data.get('chat_id')
|
||||
dataset_id = self.data.get('dataset_id')
|
||||
document_id = self.data.get('document_id')
|
||||
paragraph_id = self.data.get('paragraph_id')
|
||||
chat_record = QuerySet(ChatRecord).filter(id=chat_record_id, chat_id=chat_id).first()
|
||||
if chat_record is None:
|
||||
raise AppApiException(500, '不存在的对话记录')
|
||||
if not chat_record.improve_paragraph_id_list.__contains__(uuid.UUID(paragraph_id)):
|
||||
raise AppApiException(500, f'段落id错误,当前对话记录不存在【{paragraph_id}】段落id')
|
||||
chat_record.improve_paragraph_id_list = [row for row in chat_record.improve_paragraph_id_list if
|
||||
str(row) != paragraph_id]
|
||||
chat_record.save()
|
||||
o = ParagraphSerializers.Operate(
|
||||
data={"dataset_id": dataset_id, 'document_id': document_id, "paragraph_id": paragraph_id})
|
||||
o.is_valid(raise_exception=True)
|
||||
return o.delete()
|
||||
|
|
|
|||
|
|
@ -36,6 +36,9 @@ urlpatterns = [
|
|||
name=''),
|
||||
path('application/<str:application_id>/chat/<chat_id>/chat_record/<str:chat_record_id>/improve',
|
||||
views.ChatView.ChatRecord.ChatRecordImprove.as_view()),
|
||||
path('application/chat_message/<str:chat_id>', views.ChatView.Message.as_view())
|
||||
|
||||
path('application/chat_message/<str:chat_id>', views.ChatView.Message.as_view()),
|
||||
path(
|
||||
'application/<str:application_id>/chat/<chat_id>/chat_record/<str:chat_record_id>/dataset/<str:dataset_id>/document_id/<str:document_id>/improve/<str:paragraph_id>',
|
||||
views.ChatView.ChatRecord.Improve.Operate.as_view(),
|
||||
name='')
|
||||
]
|
||||
|
|
|
|||
|
|
@ -264,3 +264,33 @@ class ChatView(APIView):
|
|||
return result.success(ChatRecordSerializer.Improve(
|
||||
data={'chat_id': chat_id, 'chat_record_id': chat_record_id,
|
||||
'dataset_id': dataset_id, 'document_id': document_id}).improve(request.data))
|
||||
|
||||
class Operate(APIView):
|
||||
authentication_classes = [TokenAuth]
|
||||
|
||||
@action(methods=['DELETE'], detail=False)
|
||||
@swagger_auto_schema(operation_summary="标注",
|
||||
operation_id="标注",
|
||||
manual_parameters=ImproveApi.get_request_params_api(),
|
||||
responses=result.get_api_response(ChatRecordApi.get_response_body_api()),
|
||||
tags=["应用/对话日志/标注"]
|
||||
)
|
||||
@has_permissions(
|
||||
ViewPermission([RoleConstants.ADMIN, RoleConstants.USER],
|
||||
[lambda r, keywords: Permission(group=Group.APPLICATION, operate=Operate.USE,
|
||||
dynamic_tag=keywords.get('application_id'))],
|
||||
|
||||
), ViewPermission([RoleConstants.ADMIN, RoleConstants.USER],
|
||||
[lambda r, keywords: Permission(group=Group.DATASET,
|
||||
operate=Operate.MANAGE,
|
||||
dynamic_tag=keywords.get(
|
||||
'dataset_id'))],
|
||||
compare=CompareConstants.AND
|
||||
), compare=CompareConstants.AND)
|
||||
def delete(self, request: Request, application_id: str, chat_id: str, chat_record_id: str,
|
||||
dataset_id: str,
|
||||
document_id: str, paragraph_id: str):
|
||||
return result.success(ChatRecordSerializer.Improve.Operate(
|
||||
data={'chat_id': chat_id, 'chat_record_id': chat_record_id,
|
||||
'dataset_id': dataset_id, 'document_id': document_id,
|
||||
'paragraph_id': paragraph_id}).delete())
|
||||
|
|
|
|||
Loading…
Reference in New Issue