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

2.7 KiB
Raw Blame 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 已有稳定 resultactive_workspace_idworkspacesdocumentstrashed_documentsmedia_assetstrashed_media_assetsmindmap_assetstrashed_mindmap_assetstable_assetstrashed_table_assetsmindmap_docsmindmap_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-rustcomponents/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