25 lines
1.1 KiB
Markdown
25 lines
1.1 KiB
Markdown
|
|
# 文件管理页迭代(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
|