From 22d86f046a78cc053107a740d196f51154f7d871 Mon Sep 17 00:00:00 2001 From: CaptainB Date: Fri, 27 Jun 2025 18:38:44 +0800 Subject: [PATCH] refactor: adjust paragraph positions during migration for consistency --- apps/knowledge/serializers/paragraph.py | 26 +++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/apps/knowledge/serializers/paragraph.py b/apps/knowledge/serializers/paragraph.py index a4b08eed4..f90f5a0ce 100644 --- a/apps/knowledge/serializers/paragraph.py +++ b/apps/knowledge/serializers/paragraph.py @@ -489,6 +489,19 @@ class ParagraphSerializers(serializers.Serializer): target_document_id, target_knowledge_id, None) # 修改段落信息 paragraph_list.update(document_id=target_document_id) + + # 将当前文档中所有段落的位置向下移动,为新段落腾出空间 + Paragraph.objects.filter(document_id=target_document_id).exclude( + id__in=paragraph_id_list + ).update(position=F('position') + len(paragraph_id_list)) + # 重新查询迁移的段落 + paragraph_list = Paragraph.objects.filter( + id__in=paragraph_id_list, document_id=target_document_id + ) + # 将迁移的段落位置设置为从0开始的序号 + for i, paragraph in enumerate(paragraph_list): + paragraph.position = i + paragraph.save() # 不同数据集迁移 else: problem_list = QuerySet(Problem).filter( @@ -522,6 +535,19 @@ class ParagraphSerializers(serializers.Serializer): pid_list = [paragraph.id for paragraph in paragraph_list] # 修改段落信息 paragraph_list.update(knowledge_id=target_knowledge_id, document_id=target_document_id) + + # 将当前文档中所有段落的位置向下移动,为新段落腾出空间 + Paragraph.objects.filter(document_id=target_document_id).exclude( + id__in=pid_list + ).update(position=F('position') + len(pid_list)) + # 重新查询迁移的段落 + paragraph_list = Paragraph.objects.filter( + id__in=pid_list, document_id=target_document_id + ) + # 将迁移的段落位置设置为从0开始的序号 + for i, paragraph in enumerate(paragraph_list): + paragraph.position = i + paragraph.save() # 修改向量段落信息 update_embedding_document_id(pid_list, target_document_id, target_knowledge_id, embedding_model_id)