diff --git a/ui/src/api/API_README.md b/ui/src/api/API_README.md index 778455644bd..d64beeffe42 100644 --- a/ui/src/api/API_README.md +++ b/ui/src/api/API_README.md @@ -573,8 +573,8 @@ Workspace、System 资源管理及 System 共享资源的 `knowledge.ts` 提供 返回新增分段详情,默认插入首位并触发索引。 新增载荷可传 `position`,在目标位置插入,用于当前分段上方添加。 `getParagraphDetail` 查询 `/`,返回 `ParagraphDetail`,包含 `problem_list`、 -`hit_num` 和 `last_hit_time`。`putParagraph` 向同一路径提交标题和正文,解包后端三元素编辑响应的 -首项为最新详情;不提交 `problem_list`,关联关系通过专属接口维护。 +`hit_num` 和 `last_hit_time`。`putParagraph` 向同一路径提交标题和正文,直接返回最新详情对象; +后端内部三元素返回值经后置处理转换为详情对象,不作为数组解析。不提交 `problem_list`,关联关系通过专属接口维护。 编辑载荷使用 `ParagraphEditPayload`,允许仅传 `is_active` 更新启用状态,正文表单仍使用 必填标题及正文的 `ParagraphUpdatePayload`。`deleteParagraph` DELETE `/` 删除单个分段。 `putParagraphPosition` PUT `/adjust_position`,查询参数为 `paragraph_id`、`new_position`, diff --git a/ui/src/api/admin/workspace/knowledge/paragraph.ts b/ui/src/api/admin/workspace/knowledge/paragraph.ts index d97ef164eba..42862544ab5 100644 --- a/ui/src/api/admin/workspace/knowledge/paragraph.ts +++ b/ui/src/api/admin/workspace/knowledge/paragraph.ts @@ -30,11 +30,9 @@ const postParagraph = (knowledgeId: string, documentId: string, payload: Paragra const getParagraphDetail = (knowledgeId: string, documentId: string, paragraphId: string) => get(`${getPrefix(knowledgeId, documentId)}/${paragraphId}`) -/** 更新分段正文或启用状态,提取后端编辑响应中的最新详情。 */ +/** 更新分段正文或启用状态,返回最新详情。 */ const putParagraph = (knowledgeId: string, documentId: string, paragraphId: string, payload: ParagraphEditPayload) => - put(`${getPrefix(knowledgeId, documentId)}/${paragraphId}`, payload).then( - ([paragraph]) => paragraph, - ) + put(`${getPrefix(knowledgeId, documentId)}/${paragraphId}`, payload) /** 新增问题并关联到当前分段。 */ const postParagraphProblem = (knowledgeId: string, documentId: string, paragraphId: string, content: string) => diff --git a/ui/src/styles/STYLE_README.md b/ui/src/styles/STYLE_README.md index 55ab0ac47bc..ebcd2c0daab 100644 --- a/ui/src/styles/STYLE_README.md +++ b/ui/src/styles/STYLE_README.md @@ -252,6 +252,12 @@ CSS 自定义属性同样按变量名排序。嵌套选择器、伪类和媒体 段落卡片使用 `app.scss` 中的 `mk-paragraph-card`,普通模式悬停背景为 N100;多选模式添加 `selectable`,未选中卡片悬停为主题色边框、白色背景。已选卡片添加 `active`,沿用 `MkSourceCard` 的主题色边框和 10% 主题色背景,选中背景在悬停时保留。 +禁用样式添加 `disabled`,标题、Markdown 正文和辅助文字使用 N400 浅灰色;此类只改变展示, +悬停时背景和边框不变色,保留选中和操作交互,实际禁用行为由使用方控制。 + +```html +禁用的段落内容 +``` ## 阴影 diff --git a/ui/src/styles/app.scss b/ui/src/styles/app.scss index d4954f87056..073172deb16 100644 --- a/ui/src/styles/app.scss +++ b/ui/src/styles/app.scss @@ -181,12 +181,22 @@ h6 { border-color: var(--mk-primary) !important; } - &.selectable:hover { + &.disabled { + color: var(--mk-N400); + + .md-editor-preview, + .md-editor-preview *, + .text-N600 { + color: var(--mk-N400) !important; + } + } + + &.selectable:not(.disabled):hover { background-color: white; border-color: var(--mk-primary); } - &:hover { + &:not(.disabled):hover { background-color: var(--mk-N100); } } diff --git a/ui/src/views/VIEW_README.md b/ui/src/views/VIEW_README.md index 7853b6064b2..9308c4584de 100644 --- a/ui/src/views/VIEW_README.md +++ b/ui/src/views/VIEW_README.md @@ -897,6 +897,22 @@ Workspace 普通资源、System 资源管理和 System 共享资源允许打开 编辑、启停局部替换卡片,删除、迁移局部移除,保留其他已加载数据和滚动位置。 局部移除后,下一次滚动请求按剩余列表长度定位服务端分页,必要时拼接相邻两页,避免漏载。 正文使用 `MdPreview`;第一页加载完成且无分段时展示空态。 +左侧目录和右侧卡片分别通过 `useSortable` 绑定同一份分段数组,拖拽图标使用与 `MkFormList` +一致的 link 按钮、`text-N600` 和 `h-8!`。左右图标均仅在悬浮所属目录项/卡片或获得焦点时显示, +绝对定位在所属目录项/卡片右侧并向外露出 8px,不占据布局空间;目录图标垂直居中。 +左右均可按住整条目录项/整张卡片或拖拽图标排序,只允许在已加载分段中排序。 +右侧整体过滤悬浮操作区,并过滤正文链接及拖拽图标以外的按钮,保留原有点击行为; +普通点击卡片仍打开详情,位置保存期间不打开详情;左侧点击手柄不触发目录定位。 +左侧使用普通 `div.paragraph-directory-row` 作为排序行,手柄与 `ElAnchorLink` 并列。 +页面局部 `v-disable-link-drag` 指令将 `ElAnchorLink` 内部的 a 设为 `draggable=false`, +不使用 `dragstart.prevent`,避免原生链接拖出浏览器,并让整条目录项正常参与 Sortable 排序。 +拖拽后两侧同步重排,通过目标分段原有的真实 `position` 提交位置接口,搜索不改变位置语义。 +成功后同步移动区间内已加载分段的 `position`,失败恢复原顺序;不重新查询或重置列表。 +批量模式、分段加载、删除确认或提交、弹窗打开、位置保存以及不足两条时禁用拖拽。 +拖拽和保存期间暂停滚动补页,保存时仅在标题栏显示状态,不使用整页 loading 遮挡落位动画; +保存锁继续禁止再次拖拽和修改操作。与 `MkFormList` 一致,两侧使用普通 DOM 容器, +右侧以普通 `div.paragraph-sort-row` 承载卡片,由 `useSortable` 统一提供 150ms 位移动画; +不在可排序元素上叠加 `TransitionGroup`,也不直接对带默认过渡样式的 `ElCard` 做位移动画。 批量选择支持点击整张卡片或复选框切换勾选、全选、取消、“迁移至”、“生成问题”和“删除”; 复选框阻止点击冒泡,避免重复切换。`document-detail/action-dropdown/migrate/` 集中维护 批量按钮 `BatchMigrateParagraphAction`、单项菜单 `MigrateParagraphAction` 和 `ParagraphMigrateDialog`,沿用 chat-log 添加知识库的知识库/文档 diff --git a/ui/src/views/document-detail/index.vue b/ui/src/views/document-detail/index.vue index 6135328f076..10c7dbb694d 100644 --- a/ui/src/views/document-detail/index.vue +++ b/ui/src/views/document-detail/index.vue @@ -1,6 +1,6 @@