mirror of
https://github.com/1Panel-dev/MaxKB.git
synced 2025-12-26 01:33:05 +00:00
fix: 修复批量删除文档没有删除问题的缺陷
--bug=1048687 --user=王孝刚 【知识库】删除文档不会删除文档中分段关联的问题 https://www.tapd.cn/57709429/s/1624544
This commit is contained in:
parent
c54bfc7414
commit
77b15fd7ce
|
|
@ -1091,17 +1091,15 @@ def file_to_paragraph(file, pattern_list: List, with_filter: bool, limit: int):
|
|||
|
||||
|
||||
def delete_problems_and_mappings(document_ids):
|
||||
# 获取所有需要删除的问题ID
|
||||
problem_ids = list(
|
||||
ProblemParagraphMapping.objects.filter(document_id__in=document_ids).values_list('problem_id', flat=True))
|
||||
problem_paragraph_mappings = ProblemParagraphMapping.objects.filter(document_id__in=document_ids)
|
||||
problem_ids = set(problem_paragraph_mappings.values_list('problem_id', flat=True))
|
||||
|
||||
if problem_ids:
|
||||
ProblemParagraphMapping.objects.filter(document_id__in=document_ids).delete()
|
||||
problem_paragraph_mappings.delete()
|
||||
remaining_problem_counts = ProblemParagraphMapping.objects.filter(problem_id__in=problem_ids).values(
|
||||
'problem_id').annotate(count=Count('problem_id'))
|
||||
|
||||
problem_ids_to_delete = [pid for pid in problem_ids if
|
||||
not any(pc['problem_id'] == pid for pc in remaining_problem_counts)]
|
||||
remaining_problem_ids = {pc['problem_id'] for pc in remaining_problem_counts}
|
||||
problem_ids_to_delete = problem_ids - remaining_problem_ids
|
||||
Problem.objects.filter(id__in=problem_ids_to_delete).delete()
|
||||
else:
|
||||
ProblemParagraphMapping.objects.filter(document_id__in=document_ids).delete()
|
||||
problem_paragraph_mappings.delete()
|
||||
|
|
|
|||
|
|
@ -751,16 +751,15 @@ class ParagraphSerializers(ApiMixin, serializers.Serializer):
|
|||
|
||||
|
||||
def delete_problems_and_mappings(paragraph_ids):
|
||||
problem_ids = list(
|
||||
ProblemParagraphMapping.objects.filter(paragraph_id__in=paragraph_ids).values_list('problem_id', flat=True))
|
||||
problem_paragraph_mappings = ProblemParagraphMapping.objects.filter(paragraph_id__in=paragraph_ids)
|
||||
problem_ids = set(problem_paragraph_mappings.values_list('problem_id', flat=True))
|
||||
|
||||
if problem_ids:
|
||||
ProblemParagraphMapping.objects.filter(paragraph_id__in=paragraph_ids).delete()
|
||||
problem_paragraph_mappings.delete()
|
||||
remaining_problem_counts = ProblemParagraphMapping.objects.filter(problem_id__in=problem_ids).values(
|
||||
'problem_id').annotate(count=Count('problem_id'))
|
||||
|
||||
problem_ids_to_delete = [pid for pid in problem_ids if
|
||||
not any(pc['problem_id'] == pid for pc in remaining_problem_counts)]
|
||||
remaining_problem_ids = {pc['problem_id'] for pc in remaining_problem_counts}
|
||||
problem_ids_to_delete = problem_ids - remaining_problem_ids
|
||||
Problem.objects.filter(id__in=problem_ids_to_delete).delete()
|
||||
else:
|
||||
ProblemParagraphMapping.objects.filter(paragraph_id__in=paragraph_ids).delete()
|
||||
problem_paragraph_mappings.delete()
|
||||
|
|
|
|||
Loading…
Reference in New Issue