feat(kernel): finish phase3 bridge cutover and phase4 tree projection
- add generic mnote-web query transport and bridge routes for workspace/request/trace - route sidebar compat traffic through mnote-web and tighten fixture fallback to dev/test - unify sidebar/page tree/file tree/picker consumers on page_tree projection - sync phase3/phase4 checklist, breakdown docs, and harness progress state
This commit is contained in:
@@ -52,8 +52,8 @@
|
||||
- `Kernel Phase 0`:`DONE`
|
||||
- `Kernel Phase 1`:`DONE`
|
||||
- `Kernel Phase 2`:`DONE`
|
||||
- `Kernel Phase 3`:`PARTIAL`
|
||||
- `Kernel Phase 4`:`PARTIAL`
|
||||
- `Kernel Phase 3`:`DONE`
|
||||
- `Kernel Phase 4`:`DONE`
|
||||
- `Kernel Phase 5`:`PARTIAL`
|
||||
- `Kernel Phase 6`:`PARTIAL`
|
||||
- `Kernel Phase 7`:`PARTIAL`
|
||||
@@ -62,7 +62,7 @@
|
||||
|
||||
一句话总结:
|
||||
|
||||
> **Kernel 基础层已经进入真实 Rust 主线,搜索/阅读页/AI 也开始带上 node、subtree、evidence 一类结构上下文,但 consumer 主路径仍未切完,旧前端壳依然是主要执行面。**
|
||||
> **Kernel 基础层与 Rust Web 承载层已经进入真实主线,树域 consumer 已统一到稳定 projection family;但旧前端壳仍然是主要执行面,下一步才是独立 Rust Web tree shell 重构。**
|
||||
|
||||
---
|
||||
|
||||
@@ -74,7 +74,7 @@
|
||||
| --- | --- | --- |
|
||||
| Rust 中存在统一的 kernel node / edge / projection / subtree 真相层 | `DONE` | `core-protocol` 已落地 |
|
||||
| Rust 中存在统一的 kernel query / command 面 | `DONE` | `bridge-runtime` 已支持 kernel 查询与写协议 |
|
||||
| Rust Web 能承接 kernel route | `PARTIAL` | `mnote-web` 已有 route,且已接到真实 sidebar dataset query plan,但仍是样板级接入 |
|
||||
| Rust Web 能承接 kernel route | `DONE` | `mnote-web` 已具备通用 query transport、kernel/bridge/compat route、测试专用 fixture 边界,以及可切到真实 Sidebar 流量的兼容入口 |
|
||||
| Sidebar / 页面树 / 文件树直接消费 kernel projection | `PARTIAL` | 前端主 Sidebar 已以 `kernelSidebarTree` 作为主树来源,但仍是重客户端壳,其他树域仍残留旧拼树 helper |
|
||||
| 搜索直接消费 kernel-aware 检索结果 | `PARTIAL` | cron 已有 `kernel-aware refresh` 过渡链,搜索结果也已带 `nodeId` / `subtreeRootId` / `evidence`,但仍是 LightRAG 过渡口径,不是 kernel 真相层检索 |
|
||||
| 阅读页直接消费 page subtree projection | `PARTIAL` | `DocumentReadView` 已直接消费 `pageSubtree`,但 projection 仍在前端读链内生成,不是 Rust/kernel 真相层输出 |
|
||||
@@ -174,7 +174,7 @@
|
||||
|
||||
## 8. Kernel Phase 3:Rust Web 接入 kernel,成为主承载层
|
||||
|
||||
**当前状态:`PARTIAL`**
|
||||
**当前状态:`DONE`**
|
||||
|
||||
### 已落地
|
||||
|
||||
@@ -185,57 +185,99 @@
|
||||
- `/api/kernel/subtree`
|
||||
- `/api/kernel/edges`
|
||||
- `/api/kernel/graph`
|
||||
- sidebar kernel route 已通过 `sidebar.dataset.list` runtime plan + `execute_sidebar_dataset_query(...)` 读取数据集
|
||||
- 已有路由测试,说明 route 不只是声明
|
||||
- sidebar kernel route 已通过 `sidebar.dataset.list` runtime plan + 通用 Convex query transport 读取真实数据集
|
||||
- 已新增真实 workspace / bridge 查询 route:
|
||||
- `/api/bridge/workspace`
|
||||
- `/api/bridge/request`
|
||||
- `/api/bridge/trace`
|
||||
- 已新增 Next 兼容切流入口:
|
||||
- `/api/compat/next/sidebar`
|
||||
- `MNOTE_WEB_QUERY_FIXTURES_JSON` + `allow_dev_fixtures` 已把 fixture 收紧到测试/开发边界
|
||||
- `/api/sidebar` 与服务端 Sidebar 首包在配置 `MNOTE_WEB_BASE_URL` 后,默认经 `mnote-web` 的 Sidebar compat route 取数
|
||||
- `mnote-web` transport 已优先转发真实 `Authorization`,否则才退回开发态 admin/dev identity
|
||||
- 已有 kernel / bridge 路由测试,说明 route 不只是声明
|
||||
|
||||
### 当前真实问题
|
||||
### 已完成判定
|
||||
|
||||
- `mnote-web` 还不是主 Web 入口
|
||||
- kernel route 主链已经不再直接依赖 `demo_sidebar_dataset(...)` helper,但仍保留 `MNOTE_WEB_KERNEL_SIDEBAR_FIXTURE_JSON` 环境变量 fallback
|
||||
- 当前更真实的接缝主要集中在 sidebar dataset 这一条查询上,还没有形成更广的 workspace / storage / bridge 主链
|
||||
- 这只能证明“kernel route 已进入 Rust Web”,不能证明“真实主链已切过去”
|
||||
- Sidebar 这条 kernel 查询主链已不依赖生产态 fixture fallback
|
||||
- `mnote-web` 已不再只有 Sidebar 单点 transport,而是能承接更广的 query / bridge 主链
|
||||
- Next -> Rust Web 的第一条真实切流边界已经明确并可启用
|
||||
|
||||
### 下一阶段必须完成
|
||||
### 当前保留边界
|
||||
|
||||
- 把 fixture fallback 收紧到测试/开发边界,避免环境变量 fixture 成为隐性主链
|
||||
- 在 sidebar dataset 之外,再打通至少一条真实 workspace / storage / bridge 查询主链
|
||||
- 至少让一条真实页面树或工作区查询主链通过 `mnote-web` 提供
|
||||
- 明确 Next -> Rust Web 的真实流量边界
|
||||
- `kernel.subtree.get` / `kernel.project_view` 仍主要建立在 `sidebar.dataset.list` 这一份页面树数据集之上
|
||||
- 更广义的 node pool、reference edge、summary/index node 真相层,仍属于后续阶段
|
||||
- `mnote-web` 还不是整个产品的唯一 Web 入口,这属于更后的双栈收缩问题
|
||||
|
||||
### 完成判定
|
||||
|
||||
- 至少一条不依赖 fixture fallback 的 kernel 查询主链在 `mnote-web` 上稳定运行
|
||||
- 至少一条不依赖 fixture fallback 的 kernel 查询主链已在 `mnote-web` 上稳定运行
|
||||
- 至少一条真实 workspace / bridge 查询主链已通过 `mnote-web` 对外提供
|
||||
- 至少一条真实前端流量已具备默认切到 `mnote-web` 的兼容边界
|
||||
|
||||
---
|
||||
|
||||
## 9. Kernel Phase 4:Sidebar / 页面树 / 文件树切到 kernel projection
|
||||
|
||||
**当前状态:`PARTIAL`**
|
||||
**当前状态:`DONE`**
|
||||
|
||||
### 本阶段边界
|
||||
|
||||
这个阶段只解决一件事:
|
||||
|
||||
> **把树域 consumer 全部统一到稳定的 kernel projection / tree protocol。**
|
||||
|
||||
这里刻意**不**包含:
|
||||
|
||||
- 独立 Rust Web tree shell
|
||||
- `Leptos` / `Dioxus` / `Yew` 树域 UI 重写
|
||||
- Sidebar 整体壳替换
|
||||
|
||||
这些属于 `Phase 4` 完成之后的独立大任务,即:
|
||||
|
||||
- [sidebar-pagetree-filetree-rust-web-rebuild-v1.md](/mnt/Data1T/mnote/design/sidebar-pagetree-filetree-rust-web-rebuild-v1.md)
|
||||
|
||||
### 已落地
|
||||
|
||||
- Sidebar 已有服务端首包
|
||||
- Rust runtime 已能把 `sidebar.dataset.list` 转为统一 kernel subtree / projection 结果
|
||||
- `sidebar-data.ts` 已生成 `kernel_sidebar_projection` 与 `kernelSidebarTree`
|
||||
- 前端主 Sidebar 已以 `sidebarData.kernelSidebarTree` 作为初始化与同步的主树来源
|
||||
- [x] Sidebar 已有服务端首包
|
||||
- [x] Rust runtime 已能把 `sidebar.dataset.list` 转为统一 kernel subtree / projection 结果
|
||||
- [x] `sidebar-data.ts` 已生成 `kernel_sidebar_projection` 与 `kernelSidebarTree`
|
||||
- [x] 前端主 Sidebar 已以 `sidebarData.kernelSidebarTree` 作为初始化与同步的主树来源
|
||||
- [x] 已新增统一 `page_tree` projection protocol:
|
||||
- `rowId`
|
||||
- `nodeId`
|
||||
- `parentNodeId`
|
||||
- `projectionKind`
|
||||
- `depth`
|
||||
- `position`
|
||||
- `capabilities`
|
||||
- `resourceMeta`
|
||||
- [x] `PrivateTree` 已改为直接消费 `page_tree` projection 可见行,而不是自行 flatten 嵌套树
|
||||
- [x] 文件树已改为只消费 `page_tree projection + asset 映射`,`buildVisibleRows(...)` 收口为 projection -> visible rows
|
||||
- [x] `move-embed picker` 空查询态已直接消费 `kernelSidebarTree -> page_tree projection`,不再调用 `buildDocumentTree(...)`
|
||||
- [x] `SidebarInitialData` / `sidebar-data.ts` 已将 `kernelSidebarProjection` 与 `kernelSidebarTree` 收紧为主路径必备字段,不再在映射阶段对缺失 projection 做主路径 fallback
|
||||
|
||||
### 当前真实问题
|
||||
### 本阶段完成后仍保留的问题
|
||||
|
||||
- 前端主 Sidebar 仍是超大客户端组件
|
||||
- 主 Sidebar 已不再以 `DocumentRecord[] -> buildDocumentTree(...)` 作为主树入口,但 `move-embed picker`、`lib/documents.ts` 等兼容场景仍保留旧拼树 helper
|
||||
- 页面树 / 文件树还没有完全统一到 kernel node / edge 真相层
|
||||
- 页面树 / 文件树 / picker 虽已统一协议,但 Rust Web tree shell 仍未开始
|
||||
- 文件树中的 `asset-folder` / `asset` / `index` 仍由前端 adapter 基于现有数据集补齐,不是 Rust 直接输出的 `file_tree projection`
|
||||
- `buildDocumentTree(...)` 仍保留在兼容 helper 与旧单测中,但已退出树域主路径
|
||||
- 现在可以进入树域 Rust Web 壳重写,但不能把这一步与本阶段混写成同一任务
|
||||
|
||||
### 下一阶段必须完成
|
||||
### 下一阶段任务
|
||||
|
||||
- 把主 Sidebar 之外的 page tree、file tree、embed/move picker 也统一改读 kernel projection
|
||||
- 把展开、折叠、拖拽、hover 之类状态收口为纯 UI 层
|
||||
- 收敛 `buildDocumentTree(...)` 一类旧树 helper 的残留 consumer
|
||||
- 让布局层只保留轻 host,不再常驻重树组件
|
||||
- 独立推进 [sidebar-pagetree-filetree-rust-web-rebuild-v1.md](/mnt/Data1T/mnote/design/sidebar-pagetree-filetree-rust-web-rebuild-v1.md)
|
||||
- 把当前 `page_tree` / `file_tree` protocol 下沉成 Rust Web 独立 route / shell
|
||||
- 继续缩小 Sidebar 超大客户端壳,只保留局部交互岛
|
||||
- 让文件树中的更宽对象投影逐步由 Rust projection 直接输出
|
||||
|
||||
### 完成判定
|
||||
|
||||
- 主 Sidebar 以及相关树域已直接消费 kernel projection
|
||||
- 页面树 / 文件树 / 嵌入移动器等不再通过旧对象数组拼树
|
||||
- [x] 主 Sidebar 以及相关树域已直接消费 kernel projection
|
||||
- [x] 页面树 / 文件树 / 嵌入移动器等不再通过旧对象数组拼树
|
||||
- [x] tree row / projection protocol 已冻结,足以支撑下一步独立 Rust Web tree shell 重构
|
||||
- [x] 当前 React/Next 树域可以继续作为 consumer 壳存在,但不再定义树结构真相
|
||||
|
||||
---
|
||||
|
||||
@@ -449,8 +491,9 @@
|
||||
|
||||
如果按当前真实代码继续推进,建议顺序是:
|
||||
|
||||
1. 完成 `Kernel Phase 3` 收尾
|
||||
2. 先打通 `Kernel Phase 4`
|
||||
1. 完成 `Kernel Phase 4`
|
||||
2. 基于稳定 tree protocol,启动树域独立重构:
|
||||
- [sidebar-pagetree-filetree-rust-web-rebuild-v1.md](/mnt/Data1T/mnote/design/sidebar-pagetree-filetree-rust-web-rebuild-v1.md)
|
||||
3. 同步启动 `Kernel Phase 5`
|
||||
4. 再推进 `Kernel Phase 6`
|
||||
5. 再推进 `Kernel Phase 7`
|
||||
@@ -458,7 +501,7 @@
|
||||
|
||||
原因很简单:
|
||||
|
||||
- 如果 `mnote-web` 仍是 demo route,后面的 projection consumer 都会继续挂在旧前端壳上
|
||||
- 如果 Sidebar / 页面树 / 文件树还没切到统一 kernel projection,树域 Rust Web 重写会在协议未冻结前重复返工
|
||||
- 如果 Sidebar / 页面树还没切到 kernel,工作区主导航就还没换真相层
|
||||
- 如果知识刷新与 kernel-aware 检索不成立,AI 和 BookMindmap 路线也无法形成长期闭环
|
||||
|
||||
@@ -472,4 +515,4 @@
|
||||
|
||||
所以后续主线必须固定为:
|
||||
|
||||
> **先补齐 Rust Web 的真实 kernel 主链,再切 Sidebar / 页面树 / 文件树,再建立结构知识刷新与 kernel-aware 检索,之后才轮到 Mindmap、阅读页、AI、`BlockNote` 和旧壳退场。**
|
||||
> **先完成树域的 kernel projection 统一,再基于稳定协议做 Sidebar / 页面树 / 文件树的独立 Rust Web 重构;之后再并行推进结构知识刷新、Mindmap、阅读页、AI、`BlockNote` 与旧壳退场。**
|
||||
|
||||
Reference in New Issue
Block a user