用户反馈
用户希望 Nowen Note 不再把脑图做成独立入口,而是像一个轻量知识工作区一样,把不同类型内容放在同一目录树中管理:
脑图可以和 md 文档、富文本文档同级,不用单独用一个按钮;文档目录下可以有 md、富文本、脑图、简单的 excel,集中管理。脑图可以参考幕布。
并补充产品参考:
- Markdown 编辑体验参考 Typora;
- 脑图交互参考幕布;
- 小记/随手记参考浮墨笔记;
- 表格只需要基础能力,不要求完整 Excel 函数体系;
- 希望整体比飞书更轻、更适合个人知识管理。
合理性分析
该方向合理,而且比继续增加顶部/侧栏“独立中心”更符合个人知识库产品长期演进。
当前 release/v1.5.0 的结构是:
ViewMode 中 mindmaps 是独立一级模式;
App.tsx 把 MindMapCenter 作为独立工作区;
- Markdown / 富文本属于
notes;
- 脑图使用独立
mindmaps 表和接口;
- 脑图也有自己独立的文件夹体系
mindmap_folders。
因此用户现在会感知为:
笔记目录是一套
脑图又是一套
文件又是一套
任务又是一套
对个人知识管理来说,内容类型越多,这种“功能中心式导航”越容易变重。
不过实现时 不建议简单把所有内容硬塞进 notes 表。更稳妥的方向是增加统一资源树 / 文档节点抽象,底层仍保留各自领域模型。
产品目标
最终用户看到的是一棵统一目录树:
我的知识库
├── 产品方案
│ ├── PRD.md [Markdown]
│ ├── 需求说明 [富文本]
│ ├── 产品结构 [脑图]
│ └── 功能清单 [轻量表格]
│
├── 学习
│ ├── React.md
│ ├── React 知识图谱 [脑图]
│ └── 学习进度 [轻量表格]
│
└── 随手记
不同内容类型在同一个目录中:
- 可创建;
- 可重命名;
- 可拖动排序;
- 可拖到其他文件夹;
- 可收藏;
- 可搜索;
- 可移动;
- 可复制;
- 可删除 / 回收站;
- 可在工作区权限模型下共享。
建议架构:统一 Resource Tree
不要把脑图 / 表格内容全部改造成 note JSON。
建议增加一层统一资源节点,例如:
type ResourceType =
| "richtext"
| "markdown"
| "mindmap"
| "sheet";
interface ResourceTreeItem {
id: string;
parentId: string | null;
workspaceId: string | null;
ownerId: string;
resourceType: ResourceType;
resourceId: string;
title: string;
sortOrder: number;
createdAt: string;
updatedAt: string;
}
或在现有 notebook / knowledge-tree 抽象上扩展 resource type,避免重复建设第三套树。
底层业务数据仍各自保存:
notes
├── markdown
└── tiptap-json
mindmaps
sheets
统一树只负责:
- 父子层级;
- 排序;
- 标题 / 图标;
- 打开哪个 renderer;
- 工作区归属;
- 通用生命周期。
这样可以避免:
- mindmap 被 notes schema 限制;
- sheet 数据污染富文本内容;
- 不同编辑器互相耦合;
- 后续新增白板、数据库等类型时再次重构导航。
P0:先统一导航与目录模型
第一阶段不需要马上做 Excel。
目标:
文件夹
├── Markdown
├── 富文本
└── 脑图
要求:
- 脑图从独立
mindmaps 一级入口降级为可选快捷入口;
- 主知识树中可直接“新建脑图”;
- 脑图可以和笔记同级;
- 脑图可以拖到任意目录;
- 从目录点击脑图直接在主编辑区打开;
- 不再强制跳到独立 MindMapCenter;
- 原 MindMapCenter 可以保留为“全部脑图 / 专注视图”,但不是唯一入口。
新建菜单
目录右键 / +:
新建
├── 富文本
├── Markdown
├── 脑图
└── 轻量表格(后续)
移动端使用 Bottom Sheet。
P1:脑图体验向幕布“结构化”靠拢
参考幕布的是交互原则,不要求 1:1 模仿 UI。
建议优先:
- Enter:同级主题;
- Tab:子主题;
- Shift+Tab:提升层级;
- 拖拽主题调整父子关系 / 顺序;
- 折叠 / 展开;
- 键盘方向键移动;
- 快速编辑主题文字;
- 大纲 ↔ 脑图视图切换(后续);
- 从 Markdown 标题结构生成脑图;
- 脑图可关联原笔记,但不是必须依附笔记。
不建议优先投入自由画布、复杂形状、无限连线,把核心保持在“结构化脑图”。
P1/P2:轻量表格文档
用户明确表示不需要完整 Excel 函数体系,因此建议产品名不要直接叫“Excel”,可叫:
一期能力控制在:
✓ 文本 / 数字 / 日期
✓ 行列新增删除
✓ 行列拖动排序
✓ 调整列宽 / 行高
✓ 基础文字格式
✓ 对齐
✓ 冻结首行(可选)
✓ 简单排序
✓ 简单筛选
✓ CSV/XLSX 导入导出(可选分阶段)
✗ 公式引擎
✗ 宏
✗ 数据透视表
✗ VBA
✗ 复杂图表
建议独立 sheets 数据模型,不在富文本中用 HTML table 模拟整个电子表格。
数据模型一期可以非常简单:
interface SheetDocument {
id: string;
rows: number;
cols: number;
cells: Record<string, {
value: string | number | null;
type?: "text" | "number" | "date";
}>;
}
后续如需求增长再演进为稀疏矩阵 / row-column entity。
搜索与全局能力
统一资源树后,搜索不能只搜 notes。
建议统一搜索结果:
[MD] React Hooks
[富文本] 项目复盘
[脑图] AI Agent 架构
[表格] 服务器清单
脑图搜索:
轻量表格搜索:
数据迁移策略
必须无损兼容现有用户数据。
现有 notes
生成对应统一 resource tree item,保持原 notebook / hierarchy 不变。
现有 mindmaps
将现有:
mindmaps.folderId
mindmap_folders
映射/迁移到统一资源树。
不要直接删除旧 folder 数据:
- 先双读 / migration;
- 校验数量和归属;
- 稳定后再决定是否废弃 mindmap_folders。
旧客户端
如果旧客户端仍依赖独立 MindMapCenter,应保证:
- API 至少一段版本周期兼容;
- 不因树迁移导致旧客户端脑图“全部消失”;
- 必要时提供 compatibility view。
权限模型
统一树不等于统一权限绕过。
- 个人空间 resource 仅本人;
- 工作区沿用 workspace member / role;
- resource move 前后重新校验目标目录权限;
- 不允许把无权限脑图拖到有权限目录实现越权;
- 删除文件夹要定义子资源行为;
- share / publication 是否支持 mindmap/sheet 可分阶段实现。
UI / UX 原则
目标不是做成飞书,而是保持 Nowen Note 的轻量感。
建议:
- 左侧只有一棵主要知识树;
- 图标区分资源类型,不增加多套导航;
- 点击立即打开,不先进入“资源管理页”;
- 常用动作通过右键 /
+ 完成;
- MindMap / Files / Tasks 等专属中心可作为高级视图存在,但不阻塞主路径;
- 避免为了集成功能把顶部 toolbar 堆满。
分阶段建议
Phase 1
统一 Markdown / 富文本 / 脑图目录树。
Phase 2
完善脑图结构化编辑,减少独立中心依赖。
Phase 3
加入轻量表格资源类型。
Phase 4
统一搜索、分享、导入导出和移动端体验。
这比一次性把 Typora + 幕布 + Excel 全部重做风险更低。
验收标准(Phase 1)
验收标准(轻量表格阶段)
当前相关代码
frontend/src/types/index.ts(当前 ViewMode 将 mindmaps 作为独立一级模式)
frontend/src/App.tsx
frontend/src/components/NavRail.tsx
frontend/src/components/Sidebar.tsx
frontend/src/components/MindMapEditor.tsx
frontend/src/components/EditorPane.tsx
backend/src/routes/mindmaps.ts
backend/src/routes/mindmap-folders.ts
- notes / notebooks / knowledge-tree 相关模型与 repository
优先级:P2 / Epic(产品架构演进,不建议和当前 P0 Bug 混在一次提交中)
用户反馈
用户希望 Nowen Note 不再把脑图做成独立入口,而是像一个轻量知识工作区一样,把不同类型内容放在同一目录树中管理:
并补充产品参考:
合理性分析
该方向合理,而且比继续增加顶部/侧栏“独立中心”更符合个人知识库产品长期演进。
当前
release/v1.5.0的结构是:ViewMode中mindmaps是独立一级模式;App.tsx把 MindMapCenter 作为独立工作区;notes;mindmaps表和接口;mindmap_folders。因此用户现在会感知为:
对个人知识管理来说,内容类型越多,这种“功能中心式导航”越容易变重。
不过实现时 不建议简单把所有内容硬塞进 notes 表。更稳妥的方向是增加统一资源树 / 文档节点抽象,底层仍保留各自领域模型。
产品目标
最终用户看到的是一棵统一目录树:
不同内容类型在同一个目录中:
建议架构:统一 Resource Tree
不要把脑图 / 表格内容全部改造成 note JSON。
建议增加一层统一资源节点,例如:
或在现有 notebook / knowledge-tree 抽象上扩展 resource type,避免重复建设第三套树。
底层业务数据仍各自保存:
统一树只负责:
这样可以避免:
P0:先统一导航与目录模型
第一阶段不需要马上做 Excel。
目标:
要求:
mindmaps一级入口降级为可选快捷入口;新建菜单
目录右键 /
+:移动端使用 Bottom Sheet。
P1:脑图体验向幕布“结构化”靠拢
参考幕布的是交互原则,不要求 1:1 模仿 UI。
建议优先:
不建议优先投入自由画布、复杂形状、无限连线,把核心保持在“结构化脑图”。
P1/P2:轻量表格文档
用户明确表示不需要完整 Excel 函数体系,因此建议产品名不要直接叫“Excel”,可叫:
一期能力控制在:
建议独立
sheets数据模型,不在富文本中用 HTML table 模拟整个电子表格。数据模型一期可以非常简单:
后续如需求增长再演进为稀疏矩阵 / row-column entity。
搜索与全局能力
统一资源树后,搜索不能只搜 notes。
建议统一搜索结果:
脑图搜索:
轻量表格搜索:
数据迁移策略
必须无损兼容现有用户数据。
现有 notes
生成对应统一 resource tree item,保持原 notebook / hierarchy 不变。
现有 mindmaps
将现有:
映射/迁移到统一资源树。
不要直接删除旧 folder 数据:
旧客户端
如果旧客户端仍依赖独立 MindMapCenter,应保证:
权限模型
统一树不等于统一权限绕过。
UI / UX 原则
目标不是做成飞书,而是保持 Nowen Note 的轻量感。
建议:
+完成;分阶段建议
Phase 1
统一 Markdown / 富文本 / 脑图目录树。
Phase 2
完善脑图结构化编辑,减少独立中心依赖。
Phase 3
加入轻量表格资源类型。
Phase 4
统一搜索、分享、导入导出和移动端体验。
这比一次性把 Typora + 幕布 + Excel 全部重做风险更低。
验收标准(Phase 1)
验收标准(轻量表格阶段)
当前相关代码
frontend/src/types/index.ts(当前ViewMode将 mindmaps 作为独立一级模式)frontend/src/App.tsxfrontend/src/components/NavRail.tsxfrontend/src/components/Sidebar.tsxfrontend/src/components/MindMapEditor.tsxfrontend/src/components/EditorPane.tsxbackend/src/routes/mindmaps.tsbackend/src/routes/mindmap-folders.ts优先级:P2 / Epic(产品架构演进,不建议和当前 P0 Bug 混在一次提交中)