Persist PageTree expand state via control-plane view-state and align chevron/DOM with restored expansion; keep Sidex-style shallow page-tree scan and drop the unused recursive scanner that only added cargo noise. Add password vault workbench routes/runtime/skill/CLI, split page_ai_pi into a module package, and retire Hermes/ACP/OpenHub recycle + root harness evidence from the index while gitignoring recycle and local diag dumps. Archive superseded design/bugs docs under old/, point architecture at ARCHITECTURE.md, and refresh smokes for Pi S1–S7, vault, and editor regressions so the working tree can stay clean.
171 lines
9.8 KiB
Markdown
171 lines
9.8 KiB
Markdown
# [recycle] 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 暗示已具备不可逆能力。
|
||
|