fix(frontend): 修复文件管理器删除与上传稳定性
补齐文件管理器右键子菜单点击展开,新增拖拽上传目标确认, 并在上传完成后自动刷新当前可见目录 目录删除改为区分仅删空目录与强制递归删除,删除后自动回退 失效路径,避免文件树持续报 No such file 同步后端 sftp:rmdir 的 recursive 分支,并将关于页与版本检查 默认仓库链接切换到 Micah123321/nexus-terminal
This commit is contained in:
+1
@@ -0,0 +1 @@
|
||||
{"status":"completed","completed":5,"failed":0,"pending":0,"total":5,"done":5,"percent":100,"current":"文件管理删除、上传和菜单稳定性修复已完成","updated_at":"2026-03-26 04:14:00"}
|
||||
+63
@@ -0,0 +1,63 @@
|
||||
# 变更提案: file-manager-delete-upload-stability
|
||||
|
||||
## 元信息
|
||||
```yaml
|
||||
类型: 修复增强
|
||||
方案类型: implementation
|
||||
优先级: P1
|
||||
状态: 已完成
|
||||
状态说明: 已完成子菜单点击展开、拖拽上传目标确认、目录删除模式区分与删除后无效路径自动回退
|
||||
创建: 2026-03-26
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 1. 需求
|
||||
|
||||
### 背景
|
||||
文件管理器近期完成了资源管理器树与右键菜单改造,但当前仍存在一组影响可用性的连锁问题:终端/上传/压缩子菜单点击无反应,上传后没有自动刷新且拖拽上传没有目标确认,目录删除缺少“空目录删除 / 强制递归删除”的明确选项,并且删除后树会持续触发 `读取目录失败: No such file`。
|
||||
|
||||
### 目标
|
||||
- 修复文件右键菜单的子菜单交互。
|
||||
- 上传后自动刷新,并在拖拽上传时明确目标目录。
|
||||
- 目录删除提供“仅删除空目录”和“强制递归删除”二次确认。
|
||||
- 删除后不再持续触发已不存在路径的目录加载错误。
|
||||
|
||||
### 约束条件
|
||||
```yaml
|
||||
范围约束: 优先收敛在 FileManager.vue、FileManagerContextMenu.vue、useFileManagerContextMenu.ts 和 useSftpActions.ts
|
||||
后端约束: 可复用现有 sftp:rmdir 能力,必要时仅做最小协议扩展
|
||||
交互约束: 保持当前资源管理器树和右键菜单风格,不回退到旧文件表格
|
||||
兼容约束: 单文件/目录右键、多选和空白处右键仍需可用
|
||||
```
|
||||
|
||||
### 验收标准
|
||||
- [x] 终端 / 上传 / 压缩子菜单可明确展开并可点击执行
|
||||
- [x] 上传完成后自动刷新,拖拽上传前能确认目标目录
|
||||
- [x] 删除目录时弹二次确认并区分空目录删除与强制递归删除
|
||||
- [x] 删除后不再持续报 `读取目录失败: No such file`
|
||||
- [x] 前端构建通过
|
||||
|
||||
---
|
||||
|
||||
## 2. 方案
|
||||
|
||||
### 技术方案
|
||||
在 `FileManagerContextMenu.vue` 中补桌面端点击展开二级菜单与更稳定的 hover/click 保持逻辑;在 `FileManager.vue` 中为拖拽上传新增目标目录提示与确认,并在上传成功回调后触发目标目录刷新;目录删除改成显式二次确认流程,给目录提供“仅删除空目录”和“强制递归删除”两种执行路径。`useSftpActions.ts` 与删除成功后的树更新逻辑同步修正,若当前路径或挂起加载目标落在已删除目录下,则自动回退到父目录或 `/`,避免持续请求不存在路径。
|
||||
|
||||
### 影响范围
|
||||
```yaml
|
||||
涉及模块:
|
||||
- frontend: FileManager.vue
|
||||
- frontend: FileManagerContextMenu.vue
|
||||
- frontend: useFileManagerContextMenu.ts
|
||||
- frontend: useSftpActions.ts
|
||||
预计变更文件: 4-7
|
||||
```
|
||||
|
||||
### 风险评估
|
||||
| 风险 | 等级 | 应对 |
|
||||
|------|------|------|
|
||||
| 删除协议若需扩展 `recursive` 参数,前后端需同步 | 中 | 先核对现有后端 `sftp:rmdir` 能否透传策略,不足时做最小扩展 |
|
||||
| 拖拽上传增加确认可能影响原有快捷操作感 | 低 | 仅在目标不明确时或跨目录时确认,默认场景仍快速上传 |
|
||||
| 删除后自动回退目录可能与用户当前聚焦目录预期不一致 | 低 | 仅在当前路径已失效时回退到父目录,优先保证不报错 |
|
||||
+49
@@ -0,0 +1,49 @@
|
||||
# 任务清单: file-manager-delete-upload-stability
|
||||
|
||||
```yaml
|
||||
@feature: file-manager-delete-upload-stability
|
||||
@created: 2026-03-26
|
||||
@status: in_progress
|
||||
@mode: R2
|
||||
```
|
||||
|
||||
## 进度概览
|
||||
|
||||
| 完成 | 失败 | 跳过 | 总数 |
|
||||
|------|------|------|------|
|
||||
| 5 | 0 | 0 | 5 |
|
||||
|
||||
---
|
||||
|
||||
## 任务列表
|
||||
|
||||
### 1. 方案与范围确认
|
||||
|
||||
- [√] 1.1 创建文件管理稳定性修复方案包并锁定到文件管理前端链路 | depends_on: []
|
||||
|
||||
### 2. 菜单与上传交互修复
|
||||
|
||||
- [√] 2.1 修复右键子菜单展开/点击交互 | depends_on: [1.1]
|
||||
- [√] 2.2 补拖拽上传目标确认和上传完成自动刷新 | depends_on: [2.1]
|
||||
|
||||
### 3. 删除与树状态修复
|
||||
|
||||
- [√] 3.1 为目录删除增加“空目录删除 / 强制递归删除”二次确认 | depends_on: [2.2]
|
||||
- [√] 3.2 修复删除后树持续请求不存在路径的问题 | depends_on: [3.1]
|
||||
|
||||
### 4. 验证与同步
|
||||
|
||||
- [√] 4.1 运行前端构建验证并同步 `.helloagents` 文档与归档记录 | depends_on: [3.2]
|
||||
|
||||
---
|
||||
|
||||
## 执行日志
|
||||
|
||||
| 时间 | 任务 | 状态 | 备注 |
|
||||
|------|------|------|------|
|
||||
| 2026-03-26 03:24 | 1.1 | 完成 | 创建 implementation 方案包,范围锁定为文件管理删除、上传和菜单稳定性修复 |
|
||||
| 2026-03-26 04:03 | 2.1 | 完成 | `FileManagerContextMenu.vue` 桌面端子菜单补点击展开,避免“终端 / 上传 / 压缩”点击无反应 |
|
||||
| 2026-03-26 04:05 | 2.2 | 完成 | 拖拽上传前新增目标目录确认,并在当前可见目录上传完成后主动刷新 |
|
||||
| 2026-03-26 04:08 | 3.1 | 完成 | 目录删除改为“仅删空目录 / 强制递归删除”双确认,后端 `sftp:rmdir` 接收 `recursive` 标志 |
|
||||
| 2026-03-26 04:10 | 3.2 | 完成 | 删除目录后若当前/待加载路径失效,前端自动回退父目录,终止持续 `No such file` 重试 |
|
||||
| 2026-03-26 04:14 | 4.1 | 完成 | `npm run build --workspace @nexus-terminal/frontend` 与 `@nexus-terminal/backend` 均通过 |
|
||||
Reference in New Issue
Block a user