# 变更提案: workbench-file-multi-root-explorer ## 元信息 ```yaml 类型: 功能增强 方案类型: implementation 优先级: P1 状态: 进行中 状态说明: 已完成工作台文件多根目录树侧栏,保留右侧现有文件表格并通过前端构建验证 创建: 2026-03-26 ``` --- ## 1. 需求 ### 背景 当前工作台文件页仍是单一路径的文件表格,虽然可以通过路径栏和收藏路径跳转,但无法像参考图那样在同一侧栏里同时展示多个目录根并独立展开浏览。 ### 目标 - 在工作台文件面板中支持同屏显示多个目录根。 - 各目录根可独立展开/折叠,交互接近资源管理器。 - 保留现有文件表格与操作能力,不回退上传、重命名、删除、编辑等已有功能。 ### 约束条件 ```yaml 范围约束: 优先限制在 FileManager.vue,不改后端接口和 SFTP 协议 状态约束: 优先复用现有 favoritePaths 与 SFTP fileTree,不新建第二套远端文件状态链 交互约束: 左侧树作为目录浏览入口,右侧继续保留当前目录表格 兼容约束: 现有路径输入、收藏路径弹窗、上传与上下文菜单行为保持可用 ``` ### 验收标准 - [x] 文件面板出现多根目录树侧栏 - [x] 收藏路径与当前路径可作为多个根目录同时展示 - [x] 点击树节点可切换右侧当前目录或打开文件 - [x] 前端构建通过 --- ## 2. 方案 ### 技术方案 在 `FileManager.vue` 内复用 `favoritePaths.store` 作为多根目录来源,并结合当前 `currentPath` 动态补入当前目录根;树数据直接从 `createSftpActionsManager` 暴露的 `fileTree` 中派生,按目录层级递归展开,左侧渲染资源管理器式树,右侧继续保留现有文件表格与所有文件操作。对尚未加载的目录,点击时复用现有 `loadDirectory(path)` 触发懒加载。 ### 影响范围 ```yaml 涉及模块: - frontend: FileManager.vue 预计变更文件: 1-4 ``` ### 风险评估 | 风险 | 等级 | 应对 | |------|------|------| | `loadDirectory` 会更新当前路径,树懒加载与右侧表格联动可能显得过于激进 | 中 | 将树节点点击定义为“聚焦该目录”,允许目录切换驱动右侧同步更新 | | 收藏路径之间存在父子重叠,侧栏可能出现重复层级 | 中 | 保留多根并明确标识根目录,避免擅自折叠合并破坏用户心智 | | `fileTree` 仅缓存已访问目录,初始树可能不完整 | 低 | 根节点默认可见,展开时按现有 SFTP 请求链路懒加载 |