Files
mnote/design/old/08-legacy-rust-kernel/process/sidebar-rust-query-target.md
T

77 lines
2.7 KiB
Markdown
Raw Normal View History

# [recycle] Sidebar Rust Query 目标说明
> 更新时间:2026-04-14
>
> 适用主仓:`/mnt/Data1T/mnote`
## 1. 当前起点
当前 Sidebar 仍是“同一份数据集,多处复用”的结构,但重复拼装已经先收口到共享 helper:
- 查询 payload / result 契约:`/mnt/Data1T/mnote/wolai-frontend/src/lib/sidebar-data.ts`
- 服务端聚合入口:`/mnt/Data1T/mnote/wolai-frontend/src/lib/server/sidebar-data.ts`
- API route`/mnt/Data1T/mnote/wolai-frontend/src/app/api/sidebar/route.ts`
- 实时订阅 hook`/mnt/Data1T/mnote/wolai-frontend/src/hooks/use-convex-sidebar-data.ts`
当前事实:
- `sidebar.dataset.list` 已有稳定 payload`{ workspace_id }`
- `sidebar.dataset.list` 已有稳定 result`active_workspace_id``workspaces``documents``trashed_documents``media_assets``trashed_media_assets``mindmap_assets``trashed_mindmap_assets``table_assets``trashed_table_assets``mindmap_docs``mindmap_asset_children`
- `src/lib/sidebar-data.test.ts` 已对上述契约做冻结测试
## 2. Rust Query 最小目标
后续 Rust query 不直接输出 UI rows,而是只负责输出兼容 `SidebarInitialData` 的共享数据集。
最小目标:
- 输入:
- `workspace_id`
- 输出:
- `active_workspace_id`
- `workspaces`
- `documents`
- `trashed_documents`
- `media_assets`
- `trashed_media_assets`
- `mindmap_assets`
- `trashed_mindmap_assets`
- `table_assets`
- `trashed_table_assets`
- `mindmap_docs`
- `mindmap_asset_children`
## 3. 前后端边界
### 3.1 Rust query 负责
- 聚合工作区范围内页面、回收站、媒体、导图、表格的原始数据集
- 保持字段命名与共享 contract 一致
- 保持 `workspace_id` 作用域明确
### 3.2 前端继续负责
- `buildDocumentTree`
- `buildVisibleRows`
- `starred/public/shared/private/templates` 分区语义
- `sort_order -> created_at` 排序投影
- `doc/index.md/asset-folder/asset` 文件树行语义
- 拖拽、剪贴板、展开折叠、回收站双 tab 等交互行为
## 4. 本轮明确不做的事
- 不复制 `mnote-rust``components/sidebar/sidebar.tsx`
- 不引入第二套导航壳
- 不在 Rust query 阶段直接输出前端渲染树
- 不改变当前 Sidebar UI 结构与交互
## 5. 验证锚点
以下文件共同构成本轮 Sidebar Rust query 目标冻结点:
- `/mnt/Data1T/mnote/wolai-frontend/src/lib/sidebar-data.ts`
- `/mnt/Data1T/mnote/wolai-frontend/src/lib/server/sidebar-data.ts`
- `/mnt/Data1T/mnote/wolai-frontend/src/app/api/sidebar/route.ts`
- `/mnt/Data1T/mnote/wolai-frontend/src/hooks/use-convex-sidebar-data.ts`
- `/mnt/Data1T/mnote/wolai-frontend/src/lib/sidebar-data.test.ts`