# 2026-06-01 文件管理页迭代 v2

## 日期
2026-06-01

## 变更摘要
`#/files` 第二轮迭代：修复下载、预览对话框、URL 状态、筛选/拖拽上传、符号链接展示。

## 动机
- 下载 API 返回二进制流，原 `http.post` JSON 解析导致「下载已开始」但实际失败
- 预览用 snackbar 无法阅读；刷新丢失当前路径
- 对标历史 file-manager v2 规划中的状态栏、拖拽、筛选能力

## 涉及文件
- `frontend/src/api/index.ts` — `fetchAuthed` / `http.download`
- `frontend/src/utils/fileDownload.ts` — 浏览器保存 Blob
- `frontend/src/pages/FilesPage.vue` — UI/交互迭代
- `frontend/src/utils/remotePath.ts` — `validatePathSegment`
- `frontend/src/utils/fileBrowse.ts` / `types/api.ts` — symlink
- `server/api/sync_v2.py` — browse 返回 `symlink` + `link_target`
- `docs/design/plans/2026-06-01-files-page-iteration.md`

## 迁移 / 重启
- 前端构建部署至 `web/app/`
- 后端 `sync_v2.py` 需部署并 `supervisorctl restart nexus`（symlink 字段）

## 追加（默认路径）
- 文件管理器初始/切换服务器时默认打开 `/www/wwwroot`（`DEFAULT_FILES_ROOT`）

## 追加（交互）
- 进入目录/符号链接：单击行即可（不再要求双击）
- 普通文件：双击行打开 Monaco 编辑

## 验证方式
1. 选服务器进入子目录，URL 含 `?server_id=&path=`，刷新后位置保持
2. 双击目录进入；面包屑/上级可用
3. 下载文件可本地打开
4. 查看文本文件弹出预览对话框
5. 拖拽文件到列表区域触发上传
6. 筛选框过滤当前目录文件名
