Files
nexus-terminal/.helloagents/plan/202603260324_file-manager-delete-upload-stability/proposal.md
T
yinjianm cda7e0a018 fix(frontend): 修复文件管理器删除与上传稳定性
补齐文件管理器右键子菜单点击展开,新增拖拽上传目标确认,
并在上传完成后自动刷新当前可见目录

目录删除改为区分仅删空目录与强制递归删除,删除后自动回退
失效路径,避免文件树持续报 No such file

同步后端 sftp:rmdir 的 recursive 分支,并将关于页与版本检查
默认仓库链接切换到 Micah123321/nexus-terminal
2026-03-26 03:48:50 +08:00

3.1 KiB

变更提案: file-manager-delete-upload-stability

元信息

类型: 修复增强
方案类型: implementation
优先级: P1
状态: 已完成
状态说明: 已完成子菜单点击展开、拖拽上传目标确认、目录删除模式区分与删除后无效路径自动回退
创建: 2026-03-26

1. 需求

背景

文件管理器近期完成了资源管理器树与右键菜单改造,但当前仍存在一组影响可用性的连锁问题:终端/上传/压缩子菜单点击无反应,上传后没有自动刷新且拖拽上传没有目标确认,目录删除缺少“空目录删除 / 强制递归删除”的明确选项,并且删除后树会持续触发 读取目录失败: No such file

目标

  • 修复文件右键菜单的子菜单交互。
  • 上传后自动刷新,并在拖拽上传时明确目标目录。
  • 目录删除提供“仅删除空目录”和“强制递归删除”二次确认。
  • 删除后不再持续触发已不存在路径的目录加载错误。

约束条件

范围约束: 优先收敛在 FileManager.vue、FileManagerContextMenu.vue、useFileManagerContextMenu.ts 和 useSftpActions.ts
后端约束: 可复用现有 sftp:rmdir 能力,必要时仅做最小协议扩展
交互约束: 保持当前资源管理器树和右键菜单风格,不回退到旧文件表格
兼容约束: 单文件/目录右键、多选和空白处右键仍需可用

验收标准

  • 终端 / 上传 / 压缩子菜单可明确展开并可点击执行
  • 上传完成后自动刷新,拖拽上传前能确认目标目录
  • 删除目录时弹二次确认并区分空目录删除与强制递归删除
  • 删除后不再持续报 读取目录失败: No such file
  • 前端构建通过

2. 方案

技术方案

FileManagerContextMenu.vue 中补桌面端点击展开二级菜单与更稳定的 hover/click 保持逻辑;在 FileManager.vue 中为拖拽上传新增目标目录提示与确认,并在上传成功回调后触发目标目录刷新;目录删除改成显式二次确认流程,给目录提供“仅删除空目录”和“强制递归删除”两种执行路径。useSftpActions.ts 与删除成功后的树更新逻辑同步修正,若当前路径或挂起加载目标落在已删除目录下,则自动回退到父目录或 /,避免持续请求不存在路径。

影响范围

涉及模块:
  - frontend: FileManager.vue
  - frontend: FileManagerContextMenu.vue
  - frontend: useFileManagerContextMenu.ts
  - frontend: useSftpActions.ts
预计变更文件: 4-7

风险评估

风险 等级 应对
删除协议若需扩展 recursive 参数,前后端需同步 先核对现有后端 sftp:rmdir 能否透传策略,不足时做最小扩展
拖拽上传增加确认可能影响原有快捷操作感 仅在目标不明确时或跨目录时确认,默认场景仍快速上传
删除后自动回退目录可能与用户当前聚焦目录预期不一致 仅在当前路径已失效时回退到父目录,优先保证不报错