77 lines
2.7 KiB
Markdown
77 lines
2.7 KiB
Markdown
# [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`
|