fix: improve document deletion process and ensure related files are removed

--bug=1058582 --user=刘瑞斌 【知识库】知识库的文档删除报错了 https://www.tapd.cn/62980211/s/1729344
This commit is contained in:
CaptainB 2025-07-11 17:29:43 +08:00
parent 02afb6a0bc
commit 31f87119b6

View File

@ -664,16 +664,20 @@ class DocumentSerializers(serializers.Serializer):
@transaction.atomic @transaction.atomic
def delete(self): def delete(self):
document_id = self.data.get("document_id") document_id = self.data.get("document_id")
QuerySet(model=Document).filter(id=document_id).delete() source_file_ids = [
source_file_ids = [doc['meta'].get('source_file_id') for doc in doc['meta'].get(
Document.objects.filter(id__=document_id).values("meta")] 'source_file_id'
) for doc in Document.objects.filter(id=document_id).values("meta")
]
QuerySet(File).filter(id__in=source_file_ids).delete() QuerySet(File).filter(id__in=source_file_ids).delete()
QuerySet(File).filter(source_id=document_id, source_type=FileSourceType.DOCUMENT).delete()
# 删除段落 # 删除段落
QuerySet(model=Paragraph).filter(document_id=document_id).delete() QuerySet(model=Paragraph).filter(document_id=document_id).delete()
# 删除问题 # 删除问题
delete_problems_and_mappings([document_id]) delete_problems_and_mappings([document_id])
# 删除向量库 # 删除向量库
delete_embedding_by_document(document_id) delete_embedding_by_document(document_id)
QuerySet(model=Document).filter(id=document_id).delete()
return True return True
def refresh(self, state_list=None, with_valid=True): def refresh(self, state_list=None, with_valid=True):