dsh-knowhub 0.8.5 → 0.8.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/lib/client/index.js +10 -22
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -116,7 +116,7 @@ cmd /c mklink /J "$env:USERPROFILE\.dsh\profiles\knowhub\node_modules\dsh-knowhu
|
|
|
116
116
|
| Repo Wiki | 按知识库分组的 Wiki 文档树 + 阅读器:正文、来源清单、版本历史、编辑、标记过时、父级 / 子级知识(最多 5 层)、是否有帮助反馈、导出 Markdown;状态过滤与真实分页 |
|
|
117
117
|
| 知识卡片 | 决策 / 约定 / 问题 / 待办四类知识,类型与状态过滤,列表 + 阅读器 |
|
|
118
118
|
| 记忆 | 记忆 / 偏好两类知识,类型与状态过滤,列表 + 阅读器 |
|
|
119
|
-
| 知识库 |
|
|
119
|
+
| 知识库 | 知识库列表(固定列出全部:用户级 + 各工作区,不做工作区筛选)+ 详情:新建与编辑配置、初始化与增量任务(进度 / 日志 / 取消 / 重试)、项目索引、模型调用记录、知识列表分页、导出全部、导入 Markdown、删除 |
|
|
120
120
|
| 待审核 | 候选 / 冲突 / 草稿 / 过时四类队列,真实计数、筛选、排序、批量审批;点「查看详情与差异」进入文档对比页;版本历史与审核日志 |
|
|
121
121
|
| 检索 | 关键词 + 标签 + 知识库 / 类型 / 状态 / 排序;显示来源、作用域、审核状态与检索模式;结果分页加载 |
|
|
122
122
|
| 设置 | 默认策略、提炼开关与阈值、审核人与自动批准、知识注入开关与预算、备份保留、排除目录、存储位置迁移、备份预览与恢复、诊断信息 |
|
package/lib/client/index.js
CHANGED
|
@@ -879,7 +879,6 @@ function KbView(props) {
|
|
|
879
879
|
const [error, setError] = R.useState(null);
|
|
880
880
|
const [showForm, setShowForm] = R.useState(false);
|
|
881
881
|
const [kbQuery, setKbQuery] = R.useState('');
|
|
882
|
-
const [listWorkspace, setListWorkspace] = R.useState('all');
|
|
883
882
|
const [detail, setDetail] = R.useState(null);
|
|
884
883
|
const [detailLoading, setDetailLoading] = R.useState(false);
|
|
885
884
|
const [pendingDelete, setPendingDelete] = R.useState(null);
|
|
@@ -925,16 +924,14 @@ function KbView(props) {
|
|
|
925
924
|
// 增量状态读取失败不影响主流程
|
|
926
925
|
}
|
|
927
926
|
}, []);
|
|
928
|
-
//
|
|
929
|
-
//
|
|
930
|
-
//
|
|
931
|
-
const load = R.useCallback(async (
|
|
927
|
+
// 列表范围:始终展示全部知识库(用户级 + 所有工作区),不按工作区筛选。
|
|
928
|
+
// 知识库允许建在任意工作区;若按 cwd 反查的「当前工作区」过滤,会出现建完看不见、
|
|
929
|
+
// 同名却报已存在的错觉,所以这里固定请求 all=1。
|
|
930
|
+
const load = R.useCallback(async () => {
|
|
932
931
|
setLoading(true);
|
|
933
932
|
setError(null);
|
|
934
|
-
const target = typeof workspaceOverride === 'string' ? workspaceOverride : listWorkspace;
|
|
935
933
|
try {
|
|
936
|
-
const
|
|
937
|
-
const value = await request('/kb' + query);
|
|
934
|
+
const value = await request('/kb?all=1');
|
|
938
935
|
setList(value.knowledgeBases ?? []);
|
|
939
936
|
}
|
|
940
937
|
catch (failure) {
|
|
@@ -943,7 +940,7 @@ function KbView(props) {
|
|
|
943
940
|
finally {
|
|
944
941
|
setLoading(false);
|
|
945
942
|
}
|
|
946
|
-
}, [
|
|
943
|
+
}, []);
|
|
947
944
|
R.useEffect(() => { void load(); }, [load]);
|
|
948
945
|
R.useEffect(() => { void load(); }, [props.refreshKey]);
|
|
949
946
|
// 打开详情后每 1.5s 轮询任务;succeeded 时刷新文档与索引摘要(真实数据,无本地伪造)。
|
|
@@ -1155,14 +1152,8 @@ function KbView(props) {
|
|
|
1155
1152
|
}), h('button', {
|
|
1156
1153
|
type: 'button', style: styles.primary, className: 'kh-primary',
|
|
1157
1154
|
onClick: () => { setShowForm(!showForm); setDetail(null); },
|
|
1158
|
-
}, showForm ? '收起' : '+ 新建')), h('div', { style: { padding: '0 12px 8px',
|
|
1159
|
-
|
|
1160
|
-
value: listWorkspace,
|
|
1161
|
-
onChange: (event) => { setListWorkspace(event.target.value); setDetail(null); },
|
|
1162
|
-
}, h('option', { value: 'all' }, '全部工作区(用户级 + 各工作区)'), (workspaces ?? []).map((workspace) => h('option', { key: workspace.id, value: workspace.id }, (workspace.title ?? workspace.path ?? workspace.id) + (workspace.pathState === 'missing' ? '(目录不可用)' : '')))), h('div', { style: styles.hint }, listWorkspace === 'all'
|
|
1163
|
-
? '显示用户级知识库与所有工作区的知识库。'
|
|
1164
|
-
: '只显示该工作区的知识库,以及用户级知识库。')), error !== null ? h('div', { style: { ...styles.error, margin: '0 10px 10px' } }, error) : null, h('div', { style: styles.listScroll, className: 'kh-scroll' }, list === null ? (loading ? h('div', { style: styles.listEmpty }, '正在加载知识库列表…') : null)
|
|
1165
|
-
: filteredList.length === 0 ? h('div', { style: styles.listEmpty }, list.length === 0 ? (listWorkspace === 'all' ? '还没有任何知识库。点击「+ 新建」创建。' : '该范围还没有知识库。') : '没有匹配的知识库名称。')
|
|
1155
|
+
}, showForm ? '收起' : '+ 新建')), h('div', { style: { padding: '0 12px 8px' } }, h('div', { style: styles.hint }, '已列出全部知识库(用户级 + 各工作区)' + (list !== null ? ',共 ' + list.length + ' 个' : '') + '。')), error !== null ? h('div', { style: { ...styles.error, margin: '0 10px 10px' } }, error) : null, h('div', { style: styles.listScroll, className: 'kh-scroll' }, list === null ? (loading ? h('div', { style: styles.listEmpty }, '正在加载知识库列表…') : null)
|
|
1156
|
+
: filteredList.length === 0 ? h('div', { style: styles.listEmpty }, list.length === 0 ? '还没有任何知识库。点击「+ 新建」创建。' : '没有匹配的知识库名称。')
|
|
1166
1157
|
: filteredList.map((kb) => h('button', {
|
|
1167
1158
|
key: kb.id, type: 'button',
|
|
1168
1159
|
style: detail !== null && detail.knowledgeBase.id === kb.id ? styles.treeRowActive : styles.treeRow,
|
|
@@ -1175,11 +1166,8 @@ function KbView(props) {
|
|
|
1175
1166
|
onCreated: async (kb) => {
|
|
1176
1167
|
setShowForm(false);
|
|
1177
1168
|
notify('知识库「' + kb.name + '」已创建。下一步:在详情里点「开始初始化」。');
|
|
1178
|
-
//
|
|
1179
|
-
|
|
1180
|
-
if (target !== undefined)
|
|
1181
|
-
setListWorkspace(target);
|
|
1182
|
-
await load(target);
|
|
1169
|
+
// 列表固定展示全部知识库,新建后直接刷新并打开详情即可。
|
|
1170
|
+
await load();
|
|
1183
1171
|
await openDetail(kb.id);
|
|
1184
1172
|
},
|
|
1185
1173
|
})) : null, importOpen && detail !== null ? h(Modal, { onClose: () => setImportOpen(false), maxWidth: '760px' }, h(ImportMarkdownForm, {
|