d93c518a14
Co-authored-by: Cursor <cursoragent@cursor.com>
49 lines
1.5 KiB
Markdown
49 lines
1.5 KiB
Markdown
# 文件管理:剪切 / 复制 / 粘贴
|
||
|
||
**日期**:2026-06-01
|
||
|
||
## 摘要
|
||
|
||
实现 v2 设计中的远程文件剪贴板:`POST /api/sync/file-clipboard`(`cp -r` / `mv -t`),前端 Ctrl+C/X/V、工具栏粘贴、右键菜单与状态芯片。
|
||
|
||
## 动机
|
||
|
||
用户要求补齐此前因缺少后端 API 未实现的剪切/复制/粘贴。
|
||
|
||
## 涉及文件
|
||
|
||
- `server/api/schemas.py` — `FileClipboardApply`
|
||
- `server/api/remote_path_validation.py`(新建)
|
||
- `server/api/sync_v2.py` — `/file-clipboard`
|
||
- `frontend/src/composables/useFilesClipboard.ts`(新建)
|
||
- `frontend/src/composables/useFilesHotkeys.ts`
|
||
- `frontend/src/pages/FilesPage.vue`
|
||
- `tests/test_remote_path_validation.py`(新建)
|
||
- `docs/design/specs/2026-06-01-files-clipboard-transfer-design.md`
|
||
|
||
## 安全
|
||
|
||
- 绝对路径 + 禁止 `..`
|
||
- 禁止粘贴到源目录子路径
|
||
- 审计 `file_copy` / `file_move`
|
||
|
||
## 迁移 / 重启
|
||
|
||
需部署**后端 + 前端**(新 API)。
|
||
|
||
## 验证
|
||
|
||
```bash
|
||
pytest tests/test_remote_path_validation.py -q
|
||
```
|
||
|
||
浏览器:复制→进入另一目录→粘贴;剪切→粘贴后源消失;跨服务器粘贴应提示。
|
||
|
||
---
|
||
|
||
## 2026-06-01 补充:跨目录粘贴
|
||
|
||
- 粘贴目标:默认当前目录;**单选一个文件夹**时粘贴到该文件夹;**右键目录**「粘贴到 xxx」;**目录树右键**粘贴到该节点
|
||
- 状态栏显示剪贴板内容与粘贴目标路径
|
||
- 前端 `validatePasteTarget` 与后端一致,禁止粘贴到源目录内部
|