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

1.9 KiB
Raw Blame 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_dirperms
  • 前端 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.tsBrowseResponse 类型与后端对齐
  • 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 数组