diff --git a/apps/application/serializers/chat_serializers.py b/apps/application/serializers/chat_serializers.py index 3d8d7696f..055ec4a62 100644 --- a/apps/application/serializers/chat_serializers.py +++ b/apps/application/serializers/chat_serializers.py @@ -66,6 +66,10 @@ def valid_model_params_setting(model_id, model_params_setting): credential.get_model_params_setting_form(model.model_name).valid_form(model_params_setting) +class ReAbstractInstanceSerializers(serializers.Serializer): + abstract = serializers.CharField(required=True, error_messages=ErrMessage.char(_("abstract"))) + + class ChatSerializers(serializers.Serializer): class Operate(serializers.Serializer): chat_id = serializers.UUIDField(required=True, error_messages=ErrMessage.uuid(_("Conversation ID"))) @@ -78,6 +82,15 @@ class ChatSerializers(serializers.Serializer): is_deleted=True) return True + def re_abstract(self, instance, with_valid=True): + if with_valid: + self.is_valid(raise_exception=True) + ReAbstractInstanceSerializers(data=instance).is_valid(raise_exception=True) + + QuerySet(Chat).filter(id=self.data.get('chat_id'), application_id=self.data.get('application_id')).update( + abstract=instance.get('abstract')) + return True + def delete(self, with_valid=True): if with_valid: self.is_valid(raise_exception=True) diff --git a/apps/application/swagger_api/chat_api.py b/apps/application/swagger_api/chat_api.py index a0cfc8e1b..32522fd94 100644 --- a/apps/application/swagger_api/chat_api.py +++ b/apps/application/swagger_api/chat_api.py @@ -23,6 +23,34 @@ class ChatClientHistoryApi(ApiMixin): description=_('Application ID')) ] + class Operate(ApiMixin): + @staticmethod + def get_request_params_api(): + return [openapi.Parameter(name='application_id', + in_=openapi.IN_PATH, + type=openapi.TYPE_STRING, + required=True, + description=_('Application ID')), + openapi.Parameter(name='chat_id', + in_=openapi.IN_PATH, + type=openapi.TYPE_STRING, + required=True, + description=_('Conversation ID')), + ] + + class ReAbstract(ApiMixin): + @staticmethod + def get_request_body_api(): + return openapi.Schema( + type=openapi.TYPE_OBJECT, + required=['abstract'], + properties={ + 'abstract': openapi.Schema(type=openapi.TYPE_STRING, title=_("abstract"), + description=_("abstract")) + + } + ) + class OpenAIChatApi(ApiMixin): @staticmethod diff --git a/apps/application/views/chat_views.py b/apps/application/views/chat_views.py index b87309bb2..556f99f26 100644 --- a/apps/application/views/chat_views.py +++ b/apps/application/views/chat_views.py @@ -150,7 +150,7 @@ class ChatView(APIView): operation_id=_("Get the conversation list"), manual_parameters=ChatApi.get_request_params_api(), responses=result.get_api_array_response(ChatApi.get_response_body_api()), - tags=[_("Application/Conversation Log")] + tags=[_("Application/Conversation Log")] ) @has_permissions( ViewPermission([RoleConstants.ADMIN, RoleConstants.USER, RoleConstants.APPLICATION_KEY], @@ -222,6 +222,23 @@ class ChatView(APIView): data={'application_id': application_id, 'user_id': request.user.id, 'chat_id': chat_id}).logic_delete()) + @action(methods=['PUT'], detail=False) + @swagger_auto_schema(operation_summary=_("Client modifies dialogue summary"), + operation_id=_("Client modifies dialogue summary"), + request_body=ChatClientHistoryApi.Operate.ReAbstract.get_request_body_api(), + tags=[_("Application/Conversation Log")]) + @has_permissions(ViewPermission( + [RoleConstants.APPLICATION_ACCESS_TOKEN], + [lambda r, keywords: Permission(group=Group.APPLICATION, operate=Operate.USE, + dynamic_tag=keywords.get('application_id'))], + compare=CompareConstants.AND), + compare=CompareConstants.AND) + def put(self, request: Request, application_id: str, chat_id: str): + return result.success( + ChatSerializers.Operate( + data={'application_id': application_id, 'user_id': request.user.id, + 'chat_id': chat_id}).re_abstract(request.data)) + class Page(APIView): authentication_classes = [TokenAuth] diff --git a/apps/locales/en_US/LC_MESSAGES/django.po b/apps/locales/en_US/LC_MESSAGES/django.po index 04cb138e3..eab7f3db8 100644 --- a/apps/locales/en_US/LC_MESSAGES/django.po +++ b/apps/locales/en_US/LC_MESSAGES/django.po @@ -6753,3 +6753,5 @@ msgstr "" msgid "Image download failed, check network" msgstr "" +msgid "Client modifies dialogue summary" +msgstr "" diff --git a/apps/locales/zh_CN/LC_MESSAGES/django.po b/apps/locales/zh_CN/LC_MESSAGES/django.po index 77d444758..9e29bb722 100644 --- a/apps/locales/zh_CN/LC_MESSAGES/django.po +++ b/apps/locales/zh_CN/LC_MESSAGES/django.po @@ -6892,4 +6892,5 @@ msgstr "超出许可证使用限制。" msgid "Image download failed, check network" msgstr "图片下载失败,请检查网络" - +msgid "Client modifies dialogue summary" +msgstr "客户端修改对话摘要" diff --git a/apps/locales/zh_Hant/LC_MESSAGES/django.po b/apps/locales/zh_Hant/LC_MESSAGES/django.po index e0386d030..d61d8e98c 100644 --- a/apps/locales/zh_Hant/LC_MESSAGES/django.po +++ b/apps/locales/zh_Hant/LC_MESSAGES/django.po @@ -6902,4 +6902,7 @@ msgid "License usage limit exceeded." msgstr "超出許可證使用限制。" msgid "Image download failed, check network" -msgstr "圖片下載失敗,檢查網絡" \ No newline at end of file +msgstr "圖片下載失敗,檢查網絡" + +msgid "Client modifies dialogue summary" +msgstr "用戶端修改對話摘要" \ No newline at end of file