Contact Information
1966236926@qq.com
MaxKB Version
2.10.3
Problem Description
在文档分段页面拖拽段落调整顺序时, adjust_position 方法中的两次 update 只按 position 范围过滤,缺失 document_id 条件,导致该操作会同时修改 整个数据库中所有文档 在该 position 范围内的段落。多人操作时反复相互覆盖,最终所有文档的段落 position 全部坍缩为同一个值,进而导致"上方插入分段"功能失效。
Steps to Reproduce
- 创建知识库 A,上传文档,确认段落 position 正常(1, 2, 3...)
- 创建知识库 B,上传文档,确认段落 position 正常(1, 2, 3...)
- 在知识库 A 的文档中,将第 1 段拖到第 5 位
- 查看知识库 B 文档的段落 position——已被连带修改,不再是 1, 2, 3...
The expected correct result
拖拽段落只影响当前文档内的段落 position,不应影响其他文档。
Related log output
日志:
026-07-08 16:13:17 CST [15442] root@maxkb LOG: statement: UPDATE "paragraph" SET "create_time" = '2026-05-09 06:39:58.843238+00:00'::timestamptz, "update_time" = '2026-07-08 08:13:17.850801+00:00'::timestamptz, "document_id" = '019e0b76d4247210a02d9ee7df137ec7'::uuid, "knowledge_id" = '019e0b7129497db2be663f8bcca3d29e'::uuid, "content" = '“今风尘碌碌,一事无成,忽念及当日所有之女子,一一细考较去,觉其行止见识,皆出于我之上.何我堂堂须眉', "title" = '', "status" = 'nn2', "status_meta" = '{"state_time": {"1": {"0": "2026-05-09 14:40:05.032270+0800", "1": "2026-05-09 15:13:18.455484+0800", "2": "2026-05-09 15:13:18.547165+0800"}}}'::jsonb, "hit_num" = 0, "is_active" = true, "position" = 6, "chunks" = '{}'::varchar[] WHERE "paragraph"."id" = '019e0b76d42873e3a4459d62bfd5c7b2'::uuid
#定位的代码位置:
apps/knowledge/serializers/paragraph.py 第 794 行 和 第 799 行 :
# 行 794
Paragraph.objects.filter(position__gt=old_position, position__lte=new_position).update(
position=F("position") - 1
)
# 行 799
Paragraph.objects.filter(position__lt=old_position, position__gte=new_position).update(
position=F("position") + 1
)
两处均应加上 document_id=paragraph.document_id 过滤条件。
Additional Information

Contact Information
1966236926@qq.com
MaxKB Version
2.10.3
Problem Description
在文档分段页面拖拽段落调整顺序时, adjust_position 方法中的两次 update 只按 position 范围过滤,缺失 document_id 条件,导致该操作会同时修改 整个数据库中所有文档 在该 position 范围内的段落。多人操作时反复相互覆盖,最终所有文档的段落 position 全部坍缩为同一个值,进而导致"上方插入分段"功能失效。
Steps to Reproduce
The expected correct result
拖拽段落只影响当前文档内的段落 position,不应影响其他文档。
Related log output
Additional Information