# [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`