# 变更提案: workbench-file-root-tree ## 元信息 ```yaml 类型: 功能调整 方案类型: implementation 优先级: P1 状态: 已完成 状态说明: 已改为固定 / 根节点的单栏资源管理器树,并通过前端构建验证 创建: 2026-03-26 ``` --- ## 1. 需求 ### 背景 上一轮虽然去掉了单目录文件表格,但仍保留了“文件夹总览”区块,而且根目录会随当前路径变化,不符合实际想要的资源管理器体验。 ### 目标 - 文件区只保留一个资源管理器树。 - 根节点始终固定显示 `/`。 - 目录展开时同时显示子目录和文件,文件作为叶子节点显示。 ### 约束条件 ```yaml 范围约束: 优先只改 FileManager.vue,不改后端接口与 SFTP 协议 状态约束: 继续复用 useSftpActions 的 fileTree 和 loadDirectory(path) 交互约束: 点击目录只展开和聚焦,点击文件按现有逻辑打开 兼容约束: 顶部工具栏、路径栏、上传与新建动作保持可用 ``` ### 验收标准 - [x] 文件区只保留单栏资源管理器树 - [x] 根节点始终固定显示 `/` - [x] 目录下同时展示子目录和文件 - [x] 前端构建通过 --- ## 2. 方案 ### 技术方案 在 `FileManager.vue` 中去掉多根目录和文件夹总览派生结构,改为以 `/` 为唯一 explorer root,树节点直接基于 `fileTree` 递归渲染所有已加载的目录和文件,按“目录在前、文件在后”排序。主内容区改成单栏树视图,点击目录只负责展开与调用 `loadDirectory(path)` 以懒加载子节点,点击文件则继续复用现有 `openFileInWorkspace`。 ### 影响范围 ```yaml 涉及模块: - frontend: FileManager.vue 预计变更文件: 1-4 ``` ### 风险评估 | 风险 | 等级 | 应对 | |------|------|------| | `/` 下初次只会显示已加载到 `fileTree` 的节点 | 中 | 在组件中确保优先加载 `/`,展开目录时继续复用现有懒加载 | | 右侧总览移除后,拖拽与右键的作用区域缩小 | 低 | 保留主容器和现有上下文菜单、上传入口,不改后端动作 | | 树节点数量增多后单栏滚动深度增加 | 低 | 保留当前滚动容器与层级缩进,先满足准确交互 |