2.7 KiB
2.7 KiB
[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_childrensrc/lib/sidebar-data.test.ts已对上述契约做冻结测试
2. Rust Query 最小目标
后续 Rust query 不直接输出 UI rows,而是只负责输出兼容 SidebarInitialData 的共享数据集。
最小目标:
- 输入:
workspace_id
- 输出:
active_workspace_idworkspacesdocumentstrashed_documentsmedia_assetstrashed_media_assetsmindmap_assetstrashed_mindmap_assetstable_assetstrashed_table_assetsmindmap_docsmindmap_asset_children
3. 前后端边界
3.1 Rust query 负责
- 聚合工作区范围内页面、回收站、媒体、导图、表格的原始数据集
- 保持字段命名与共享 contract 一致
- 保持
workspace_id作用域明确
3.2 前端继续负责
buildDocumentTreebuildVisibleRowsstarred/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