Skip to content

Commit c9fb38d

Browse files
committed
chore: update document deletion logic to handle paragraph IDs and related mappings
--bug=1063248 --user=刘瑞斌 【知识库】删除文档时,分段与问题的关联关系没有清除 https://www.tapd.cn/62980211/s/1793500
1 parent d636d6e commit c9fb38d

File tree

2 files changed

+14
-9
lines changed

2 files changed

+14
-9
lines changed

apps/knowledge/serializers/document.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -683,10 +683,11 @@ def delete(self):
683683
]
684684
QuerySet(File).filter(id__in=source_file_ids).delete()
685685
QuerySet(File).filter(source_id=document_id, source_type=FileSourceType.DOCUMENT).delete()
686+
paragraph_ids = QuerySet(model=Paragraph).filter(document_id=document_id).values_list("id", flat=True)
687+
# 删除问题
688+
delete_problems_and_mappings(paragraph_ids)
686689
# 删除段落
687690
QuerySet(model=Paragraph).filter(document_id=document_id).delete()
688-
# 删除问题
689-
delete_problems_and_mappings([document_id])
690691
# 删除向量库
691692
delete_embedding_by_document(document_id)
692693
QuerySet(model=DocumentTag).filter(document_id=document_id).delete()
@@ -1217,9 +1218,12 @@ def batch_delete(self, instance: Dict, with_valid=True):
12171218
Document.objects.filter(id__in=document_id_list).values("meta")]
12181219
QuerySet(File).filter(id__in=source_file_ids).delete()
12191220
QuerySet(Document).filter(id__in=document_id_list).delete()
1220-
QuerySet(Paragraph).filter(document_id__in=document_id_list).delete()
12211221
QuerySet(DocumentTag).filter(document_id__in=document_id_list).delete()
1222-
delete_problems_and_mappings(document_id_list)
1222+
paragraph_ids = QuerySet(Paragraph).filter(document_id__in=document_id_list).values_list("id", flat=True)
1223+
# 删除问题关系
1224+
delete_problems_and_mappings(paragraph_ids)
1225+
# 删除段落
1226+
QuerySet(Paragraph).filter(document_id__in=document_id_list).delete()
12231227
# 删除向量库
12241228
delete_embedding_by_document_list(document_id_list)
12251229
return True
Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
SELECT
2-
problem.*,
3-
(SELECT "count"("id") FROM "problem_paragraph_mapping" WHERE problem_id="problem"."id") as "paragraph_count"
4-
FROM
5-
problem problem
1+
SELECT problem.*,
2+
(SELECT COUNT(ppm.id)
3+
FROM problem_paragraph_mapping ppm
4+
INNER JOIN paragraph p ON ppm.paragraph_id = p.id
5+
WHERE ppm.problem_id = problem.id) AS "paragraph_count"
6+
FROM problem problem

0 commit comments

Comments
 (0)