Files
Nexus/docs/changelog/2026-06-01-files-browse-fix.md
T

38 lines
1.9 KiB
Markdown
Raw Normal View History

# 2026-06-01 文件管理浏览修复
## 日期
2026-06-01
## 变更摘要
修复 SPA 文件管理页(`#/files`)目录列表为空、breadcrumb 无法点击、路径不一致等问题;统一 `/api/sync/browse` 响应为 `items` 字段。
## 2026-06-01 追加(全面巡检)
- 面包屑:Vuetify 4 `#item` 槽 + `onBreadcrumbClick`,当前层级禁用
- 新增 `remotePath.ts`:路径规范化、拼接、面包屑数据、上级目录
- 工具栏「上级」按钮;未选服务器时提示
- `parseBrowseResponse`:空目录 `items: []` 不再误判
- 预览截断 800 字;批量删除反馈成功/失败数
## 动机
- 后端 `POST /api/sync/browse` 返回 `{ entries: [...] }`(字段 `is_dir``perms`
- 前端 `FilesPage.vue` 仅读取 `res.items`,且条目需要 `type: directory|file`
- 生产环境表现为「暂无文件」,浏览/进入子目录均不可用
## 涉及文件
- `server/api/sync_v2.py` — 返回 `items`(含 `type`/`permissions`),过滤 `.` / `..`
- `frontend/src/utils/fileBrowse.ts` — 解析 `items`,兼容旧版 `entries`
- `frontend/src/pages/FilesPage.vue` — 使用 `parseBrowseResponse`,展示 SSH `error`
- `frontend/src/types/api.ts``BrowseResponse` 类型与后端对齐
- `frontend/src/pages/FilesPage.vue` — 表格 `return-object`、面包屑/上级/路径规范化
- `frontend/src/utils/remotePath.ts` — 远程路径与面包屑工具
- `docs/audit/2026-06-01-files-page-inspection.md` — 巡检审计
## 迁移 / 重启
- 需重新构建并部署前端至 `web/app/`
- 需部署后端并 `supervisorctl restart nexus`(或仅前端亦可临时兼容旧 API
## 验证方式
1. 打开 `app/#/files`,选择一台可 SSH 的服务器
2. 应看到 `/` 下文件列表;点击目录可进入
3. `curl -H "Authorization: Bearer …" -d '{"server_id":1,"path":"/"}' …/api/sync/browse` 响应含 `items` 数组