# 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 暗示已具备不可逆能力。