# 文件管理页迭代(SPA #/files) ## 背景 `FilesPage.vue` 已修复 browse 契约与面包屑;仍缺生产级文件管理体验(下载、预览、状态持久化、过滤等)。 ## 目标 1. 下载:对接 `StreamingResponse`,浏览器真实保存文件 2. 预览:对话框展示文本(非 snackbar 全文) 3. 路由:`?server_id=&path=` 刷新可恢复 4. UX:状态栏、名称过滤、双击进目录、拖拽上传、符号链接展示 ## 涉及文件 - `frontend/src/api/index.ts` — `http.download` - `frontend/src/utils/fileDownload.ts` — 触发浏览器保存 - `frontend/src/utils/fileBrowse.ts` / `types/api.ts` — symlink 类型 - `server/api/sync_v2.py` — browse 返回 `symlink` + `link_target` - `frontend/src/pages/FilesPage.vue` — UI 迭代 ## 验收 - [ ] 点击下载得到本地文件且可打开 - [ ] 预览大文件在对话框内滚动,不超过 read-file 限制 - [ ] 刷新页面保留服务器与路径(query) - [ ] 面包屑/上级/双击目录行为一致 - [ ] 空目录显示「暂无文件」且状态栏计数为 0