171 lines
9.8 KiB
Markdown
171 lines
9.8 KiB
Markdown
# 7-68 WeKnora 知识库页面 UI 参考
|
||
|
||
状态:reference
|
||
范围:只记录 WeKnora 知识库页面可嫁接的页面结构、状态与 MNote 字段映射;不修改 MNote runtime,不修改 WeKnora 源码。
|
||
|
||
## 结论
|
||
|
||
7-68 的知识库页不应继续保留 MNote 原来的简陋“知识库设置面板”形态。更合适的嫁接目标是复用 WeKnora 的“知识库列表 + 知识库详情文档管理页”体验:列表页提供知识库卡片、分组、上传进度和能力徽标;详情页提供面包屑、文档/ Wiki / 图谱页签、标签侧栏、文档筛选栏、网格/列表切换、上传入口、解析状态和批量管理。
|
||
|
||
MNote 应保留本地 source registry、allowed roots、workspace path、provider 映射和打开引用能力;WeKnora 页面结构只作为 UI / 交互参考,不直接接管 MNote 的事实源、鉴权、文件写入或索引生命周期。
|
||
|
||
## WeKnora 源文件
|
||
|
||
- `/mnt/Data1T/Mnote_data/weknora/WeKnora/frontend/src/views/knowledge/KnowledgeBaseList.vue`
|
||
- 知识库列表页主入口。
|
||
- 核心结构:`kb-list-container`、`ListSpaceSidebar`、标题区、未初始化提示、上传进度面板、知识库卡片网格、分组标题、收藏 / 置顶 / 设置 / 删除菜单、能力徽标。
|
||
- `/mnt/Data1T/Mnote_data/weknora/WeKnora/frontend/src/views/knowledge/KnowledgeBase.vue`
|
||
- 单个知识库详情页主入口。
|
||
- 核心结构:`knowledge-layout`、面包屑 + `KBSwitcherDropdown`、`KBInfoPopover`、设置按钮、Documents / Wiki / Graph 页签、标签侧栏、文档筛选栏、文档卡片网格、列表视图、`DocContent` 抽屉。
|
||
- `/mnt/Data1T/Mnote_data/weknora/WeKnora/frontend/src/views/knowledge/components/DocumentListView.vue`
|
||
- 文档列表视图。
|
||
- 核心结构:吸顶表头、复选框、多列 row、来源、大小、解析状态、更新时间、行菜单。
|
||
- `/mnt/Data1T/Mnote_data/weknora/WeKnora/frontend/src/views/knowledge/components/KbUploadSourceDropdown.vue`
|
||
- 添加文档入口。
|
||
- 支持上传文件、上传文件夹、导入 URL,可选手动创建。
|
||
- `/mnt/Data1T/Mnote_data/weknora/WeKnora/frontend/src/views/knowledge/components/DocumentBatchBar.vue`
|
||
- 批量选择后的浮动操作条。
|
||
- `/mnt/Data1T/Mnote_data/weknora/WeKnora/frontend/src/components/knowledge-processing-timeline.vue`
|
||
- 解析 / 后处理 trace 时间线。
|
||
- 显示 docreader、chunking、embedding、multimodal、postprocess 等阶段,以及 live polling、失败、取消和耗时。
|
||
- `/mnt/Data1T/Mnote_data/weknora/WeKnora/frontend/src/components/empty-knowledge.vue`
|
||
- 空知识库占位。
|
||
- `/mnt/Data1T/Mnote_data/weknora/WeKnora/frontend/src/api/knowledge-base/index.ts`
|
||
- API 字段参考:`listKnowledgeBases`、`getKnowledgeBaseById`、`uploadKnowledgeFile`、`createKnowledgeFromURL`、`listKnowledgeFiles`、`reparseKnowledge`、`cancelKnowledgeParse`、`batchDeleteKnowledge`、`getKnowledgeSpans`。
|
||
- `/mnt/Data1T/Mnote_data/weknora/WeKnora/frontend/src/i18n/locales/zh-CN.ts`
|
||
- 中文文案参考:`knowledgeBase`、`knowledgeList`、`knowledgeEditor`。
|
||
|
||
## 可嫁接页面结构
|
||
|
||
### 1. 知识库列表
|
||
|
||
最小结构:
|
||
|
||
- 左侧范围筛选:全部 / 我的 / 收藏 / 最近 / 空间,MNote 首版可降级为全部 + 当前 workspace。
|
||
- 顶部标题:`知识库`,副标题采用 WeKnora 语义“管理和组织您的知识库,支持文档型和问答型知识库”。
|
||
- 新建按钮:图标按钮或小按钮,接 MNote 创建 KB / 绑定本地 folder 的流程。
|
||
- 全局状态提示:
|
||
- 未初始化 / provider 未连接提示。
|
||
- 上传或索引中的 progress panel。
|
||
- 卡片网格:
|
||
- 标题、描述。
|
||
- 文档数量 / FAQ 数量 / processing loading。
|
||
- 能力徽标:知识图谱、多模态、问题生成、共享。
|
||
- 卡片菜单:置顶、设置、删除。
|
||
- hover 显示边框与更多按钮。
|
||
|
||
MNote 首版不需要完整照搬 WeKnora 的组织共享分组,但应保留分组能力的视觉槽位,避免后续 workspace / shared KB 接入时重做页面。
|
||
|
||
### 2. 知识库详情
|
||
|
||
最小结构:
|
||
|
||
- 面包屑:`知识库 / 当前知识库 / 文档`。
|
||
- 当前 KB 下拉切换:参考 `KBSwitcherDropdown`,MNote 可映射为当前 workspace 下 KB registry。
|
||
- 右侧动作:信息 popover、设置按钮。
|
||
- 文档页签:
|
||
- `文档` 为默认主视图。
|
||
- 若 provider 暴露 wiki / graph 能力,再显示 `Wiki`、`图谱` 页签。
|
||
- 左侧标签侧栏:
|
||
- `文档分类` 标题、数量、搜索、标签列表、新建 / 重命名 / 删除。
|
||
- MNote 首版可先映射为 source kind / folder / tag,不能伪造 WeKnora 后端 tag 写入。
|
||
- 主内容筛选栏:
|
||
- 搜索文档。
|
||
- 文件类型筛选。
|
||
- 解析状态筛选。
|
||
- 来源筛选。
|
||
- 更新时间范围。
|
||
- 网格 / 列表切换。
|
||
- 添加文档入口。
|
||
- 文档区:
|
||
- skeleton loading。
|
||
- grid 卡片作为默认视图。
|
||
- list 作为密集视图。
|
||
- 空状态。
|
||
- 批量选择浮动条。
|
||
- 文档详情:
|
||
- 点击文档打开 `DocContent` 风格抽屉,展示全文、分块、原文件 / 引用。
|
||
|
||
### 3. 上传与导入
|
||
|
||
参考 `KbUploadSourceDropdown.vue` 的四类入口:
|
||
|
||
- 上传文档。
|
||
- 上传文件夹。
|
||
- 导入网页 URL。
|
||
- 手动创建。
|
||
|
||
MNote 映射时应改成:
|
||
|
||
- 上传文档 / 文件夹:落到 MNote local-first source registry,记录 local path / providerKnowledgeBaseId / providerKnowledgeId,再交 WeKnora provider ingest。
|
||
- 导入 URL:可作为 provider source,不对应本地文件。
|
||
- 手动创建:如果没有明确的 MNote 文档创建语义,首版不启用,避免产生第二套正文事实源。
|
||
|
||
### 4. 状态与交互
|
||
|
||
WeKnora 的文档状态结构可直接作为 MNote UI 状态模型参考:
|
||
|
||
- `pending` / `processing`:显示 loading、解析中,可打开 trace。
|
||
- `finalizing`:主解析完成但 summary / question / graph 等后处理仍在跑。
|
||
- `failed`:红色失败状态,可重建 / 查看 trace。
|
||
- `cancelled`:黄色取消状态。
|
||
- `draft`:草稿。
|
||
- `completed`:绿色完成。
|
||
- `completed + summary pending/processing`:显示“生成摘要中”。
|
||
|
||
重要交互:
|
||
|
||
- 卡片和列表都能打开文档详情。
|
||
- 更多菜单提供重建、取消解析、移动、批量管理、删除。
|
||
- 解析中 / 失败状态应能打开 trace。
|
||
- 网格 / 列表视图选择可持久化到 localStorage。
|
||
- 批量选择不能与普通打开文档冲突。
|
||
|
||
## MNote 字段映射
|
||
|
||
| WeKnora UI 字段 | MNote 映射建议 |
|
||
| --- | --- |
|
||
| `kb.id` | MNote `knowledge_base_id` / registry entry id |
|
||
| `kb.name` | 知识库显示名,默认可来自 folder name |
|
||
| `kb.description` | registry description / provider description |
|
||
| `kb.type` | MNote 首版固定 `document`,FAQ 暂不作为主路径 |
|
||
| `kb.knowledge_count` | provider 文档数 + registry source count |
|
||
| `kb.chunk_count` | provider chunk count,可从 WeKnora status / search metadata 显示 |
|
||
| `kb.isProcessing` | registry processing count 或 provider parse in-flight count |
|
||
| `extract_config.enabled` | WeKnora graph / MNote graph capability |
|
||
| `vlm_config.enabled` | 多模态 / 图片解析能力 |
|
||
| `question_generation_config.enabled` | 问题生成能力 |
|
||
| `storage_provider_config.provider` | provider / vector store / file store 显示,不作为 MNote 文件事实源 |
|
||
| `knowledge.id` | `providerKnowledgeId` |
|
||
| `knowledge.file_name` | source display name / local file basename |
|
||
| `knowledge.file_type` | 文件扩展名 / source kind |
|
||
| `knowledge.file_size` | source file size,URL/manual 可为空 |
|
||
| `knowledge.tag_id` | MNote tag / folder / source group 映射,首版可只读 |
|
||
| `knowledge.parse_status` | provider parse status |
|
||
| `knowledge.summary_status` | provider postprocess status |
|
||
| `knowledge.channel` | `web` / `api` / `url` / `manual` / local upload 映射 |
|
||
| `knowledge.source` | local path / URL / provider source |
|
||
| `knowledge.updated_at` | registry updated_at 或 provider updated_at |
|
||
|
||
## 不能直接接管的边界
|
||
|
||
- 不直接把 WeKnora Vue 组件复制进 MNote runtime;MNote 当前主壳是 Rust SSR / browser runtime,不是 WeKnora Vue 应用。
|
||
- 不让 WeKnora 成为 MNote 的文件事实源;本地 `.md`、source registry、workspace path、allowed roots 仍归 MNote。
|
||
- 不把 WeKnora 的 tenant / organization / share 语义直接套到 MNote;MNote 的 auth、membership、share grants 由 Rust SQLite control-plane 管。
|
||
- 不把 WeKnora 的 tag 删除语义直接映射到 MNote folder 删除;WeKnora tag delete 可能级联删除文档,MNote 需要独立确认。
|
||
- 不直接启用手动创建文档,除非 MNote 明确将其映射到本地文件或页面创建命令。
|
||
- 不直接复用 WeKnora 的轮询策略作为 MNote 主链;MNote 可展示 provider status,但刷新应优先走 MNote watcher / event / command result。
|
||
- 不直接暴露 WeKnora 的删除 KB / 删除文档为本地文件删除;首版删除应只删除 provider index 与 registry 映射,是否删除本地文件必须单独确认。
|
||
- 不把 WeKnora `Wiki` / `Graph` 页签默认显示为可用;只有 provider capability 明确可用时展示。
|
||
|
||
## MNote 最小呈现建议
|
||
|
||
首版替换原知识库设置面板时,建议至少实现以下可见结构:
|
||
|
||
1. 知识库列表页:标题、副标题、新建/绑定入口、KB 卡片网格、文档数、processing 状态、provider 能力徽标、设置入口。
|
||
2. 知识库详情页:面包屑、KB 切换、文档分类侧栏、搜索/筛选栏、添加文档下拉、网格/列表切换。
|
||
3. 文档项:文件名、描述/摘要、标签或来源、文件类型、更新时间、解析状态、打开引用。
|
||
4. 状态层:pending / processing / finalizing / completed / failed / cancelled / draft 至少要有不同视觉表达。
|
||
5. 安全边界:删除、移动、手动创建、共享、Wiki / Graph、tag 写入可以先隐藏或只读,避免 UI 暗示已具备不可逆能力。
|
||
|