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.rsa_util import decrypt
|
||||||
from common.util.split_model import flat_map
|
from common.util.split_model import flat_map
|
||||||
from dataset.models import Document, Problem, Paragraph
|
from dataset.models import Document, Problem, Paragraph
|
||||||
|
from dataset.serializers.paragraph_serializers import ParagraphSerializers
|
||||||
from setting.models import Model
|
from setting.models import Model
|
||||||
from setting.models_provider.constants.model_provider_constants import ModelProvideConstants
|
from setting.models_provider.constants.model_provider_constants import ModelProvideConstants
|
||||||
from smartdoc.conf import PROJECT_DIR
|
from smartdoc.conf import PROJECT_DIR
|
||||||
@ -355,7 +356,7 @@ class ChatRecordSerializer(serializers.Serializer):
|
|||||||
class Improve(serializers.Serializer):
|
class Improve(serializers.Serializer):
|
||||||
chat_id = serializers.UUIDField(required=True, error_messages=ErrMessage.uuid("对话id"))
|
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"))
|
dataset_id = serializers.UUIDField(required=True, error_messages=ErrMessage.uuid("知识库id"))
|
||||||
|
|
||||||
@ -403,3 +404,36 @@ class ChatRecordSerializer(serializers.Serializer):
|
|||||||
# 添加标注
|
# 添加标注
|
||||||
chat_record.save()
|
chat_record.save()
|
||||||
return ChatRecordSerializerModel(chat_record).data, paragraph.id
|
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=''),
|
name=''),
|
||||||
path('application/<str:application_id>/chat/<chat_id>/chat_record/<str:chat_record_id>/improve',
|
path('application/<str:application_id>/chat/<chat_id>/chat_record/<str:chat_record_id>/improve',
|
||||||
views.ChatView.ChatRecord.ChatRecordImprove.as_view()),
|
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(
|
return result.success(ChatRecordSerializer.Improve(
|
||||||
data={'chat_id': chat_id, 'chat_record_id': chat_record_id,
|
data={'chat_id': chat_id, 'chat_record_id': chat_record_id,
|
||||||
'dataset_id': dataset_id, 'document_id': document_id}).improve(request.data))
|
'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
Block a user