1717from rest_framework import serializers
1818from rest_framework .utils .formatting import lazy_format
1919
20- from application .models import ChatRecord , ApplicationAccessToken
20+ from application .models import ChatRecord , ApplicationAccessToken , Application
2121from application .serializers .common import ChatInfo
2222from common .db .search import page_search
2323from common .exception .app_exception import AppApiException
2424from common .utils .common import post
25- from knowledge .models import Paragraph , Document , Problem , ProblemParagraphMapping
25+ from knowledge .models import Paragraph , Document , Problem , ProblemParagraphMapping , Knowledge
2626from knowledge .serializers .common import get_embedding_model_id_by_knowledge_id , update_document_char_length
2727from knowledge .serializers .paragraph import ParagraphSerializers
2828from knowledge .task .embedding import embedding_by_paragraph , embedding_by_paragraph_list
@@ -39,12 +39,18 @@ class Meta:
3939
4040class ChatRecordOperateSerializer (serializers .Serializer ):
4141 chat_id = serializers .UUIDField (required = True , label = _ ("Conversation ID" ))
42- workspace_id = serializers .CharField (required = False , label = _ ("Workspace ID" ))
42+ workspace_id = serializers .CharField (required = False , allow_null = True , allow_blank = True , label = _ ("Workspace ID" ))
4343 application_id = serializers .UUIDField (required = True , label = _ ("Application ID" ))
4444 chat_record_id = serializers .UUIDField (required = True , label = _ ("Conversation record id" ))
4545
4646 def is_valid (self , * , debug = False , raise_exception = False ):
4747 super ().is_valid (raise_exception = True )
48+ workspace_id = self .data .get ('workspace_id' )
49+ query_set = QuerySet (Application ).filter (id = self .data .get ('application_id' ))
50+ if workspace_id :
51+ query_set = query_set .filter (workspace_id = workspace_id )
52+ if not query_set .exists ():
53+ raise AppApiException (500 , _ ('Application id does not exist' ))
4854 application_access_token = QuerySet (ApplicationAccessToken ).filter (
4955 application_id = self .data .get ('application_id' )).first ()
5056 if application_access_token is None :
@@ -72,10 +78,20 @@ def one(self, debug):
7278
7379
7480class ApplicationChatRecordQuerySerializers (serializers .Serializer ):
81+ workspace_id = serializers .CharField (required = False , allow_null = True , allow_blank = True , label = _ ("Workspace ID" ))
7582 application_id = serializers .UUIDField (required = True , label = _ ("Application ID" ))
7683 chat_id = serializers .UUIDField (required = True , label = _ ("Chat ID" ))
7784 order_asc = serializers .BooleanField (required = False , allow_null = True , label = _ ("Is it in order" ))
7885
86+ def is_valid (self , * , raise_exception = False ):
87+ super ().is_valid (raise_exception = True )
88+ workspace_id = self .data .get ('workspace_id' )
89+ query_set = QuerySet (Application ).filter (id = self .data .get ('application_id' ))
90+ if workspace_id :
91+ query_set = query_set .filter (workspace_id = workspace_id )
92+ if not query_set .exists ():
93+ raise AppApiException (500 , _ ('Application id does not exist' ))
94+
7995 def list (self , with_valid = True ):
8096 if with_valid :
8197 self .is_valid (raise_exception = True )
@@ -137,11 +153,24 @@ class Meta:
137153
138154
139155class ChatRecordImproveSerializer (serializers .Serializer ):
156+ workspace_id = serializers .CharField (required = False , allow_null = True , allow_blank = True , label = _ ("Workspace ID" ))
157+
158+ application_id = serializers .UUIDField (required = True , label = _ ("Application ID" ))
159+
140160 chat_id = serializers .UUIDField (required = True , label = _ ("Conversation ID" ))
141161
142162 chat_record_id = serializers .UUIDField (required = True ,
143163 label = _ ("Conversation record id" ))
144164
165+ def is_valid (self , * , raise_exception = False ):
166+ super ().is_valid (raise_exception = True )
167+ workspace_id = self .data .get ('workspace_id' )
168+ query_set = QuerySet (Application ).filter (id = self .data .get ('application_id' ))
169+ if workspace_id :
170+ query_set = query_set .filter (workspace_id = workspace_id )
171+ if not query_set .exists ():
172+ raise AppApiException (500 , _ ('Application id does not exist' ))
173+
145174 def get (self , with_valid = True ):
146175 if with_valid :
147176 self .is_valid (raise_exception = True )
@@ -173,13 +202,21 @@ class ApplicationChatRecordImproveInstanceSerializer(serializers.Serializer):
173202
174203
175204class ApplicationChatRecordAddKnowledgeSerializer (serializers .Serializer ):
205+ workspace_id = serializers .CharField (required = False , allow_null = True , allow_blank = True , label = _ ("Workspace ID" ))
206+ application_id = serializers .UUIDField (required = True , label = _ ("Application ID" ))
176207 knowledge_id = serializers .UUIDField (required = True , label = _ ("Knowledge base id" ))
177208 document_id = serializers .UUIDField (required = True , label = _ ("Document id" ))
178209 chat_ids = serializers .ListSerializer (child = serializers .UUIDField (), required = True ,
179210 label = _ ("Conversation ID" ))
180211
181212 def is_valid (self , * , raise_exception = False ):
182213 super ().is_valid (raise_exception = True )
214+ workspace_id = self .data .get ('workspace_id' )
215+ query_set = QuerySet (Application ).filter (id = self .data .get ('application_id' ))
216+ if workspace_id :
217+ query_set = query_set .filter (workspace_id = workspace_id )
218+ if not query_set .exists ():
219+ raise AppApiException (500 , _ ('Application id does not exist' ))
183220 if not Document .objects .filter (id = self .data ['document_id' ], knowledge_id = self .data ['knowledge_id' ]).exists ():
184221 raise AppApiException (500 , gettext ("The document id is incorrect" ))
185222
@@ -255,6 +292,19 @@ class ApplicationChatRecordImproveSerializer(serializers.Serializer):
255292
256293 def is_valid (self , * , raise_exception = False ):
257294 super ().is_valid (raise_exception = True )
295+ workspace_id = self .data .get ('workspace_id' )
296+ query_set = QuerySet (Application ).filter (id = self .data .get ('application_id' ))
297+ if workspace_id :
298+ query_set = query_set .filter (workspace_id = workspace_id )
299+ if not query_set .exists ():
300+ raise AppApiException (500 , _ ('Application id does not exist' ))
301+
302+ query_set = QuerySet (Knowledge ).filter (id = self .data .get ('knowledge_id' ))
303+ if workspace_id :
304+ query_set = query_set .filter (workspace_id = workspace_id )
305+ if not query_set .exists ():
306+ raise AppApiException (500 , _ ('Knowledge id does not exist' ))
307+
258308 if not QuerySet (Document ).filter (id = self .data .get ('document_id' ),
259309 knowledge_id = self .data .get ('knowledge_id' )).exists ():
260310 raise AppApiException (500 , gettext ("The document id is incorrect" ))
0 commit comments