# 跨服务器文件传输 — 实施计划 ## 涉及文件 | 文件 | 变更 | |------|------| | `server/infrastructure/redis/transfer_package_store.py` | 新建:打包任务 Redis | | `server/application/services/server_file_transfer_service.py` | 新建:直传 / 打包 / 拉取 / 流 | | `server/api/schemas.py` | 请求模型 | | `server/api/sync_v2.py` | 四个端点 | | `server/api/auth_jwt.py` | 下载端点 JWT 豁免 | | `frontend/src/composables/files/useFilesActions.ts` | 对话框逻辑 | | `frontend/src/components/files/FilesDialogs.vue` | UI | | `frontend/src/components/files/FilesList.vue` | 右键菜单 | | `tests/test_server_file_transfer.py` | 单元测试 | | `docs/changelog/2026-06-21-server-file-transfer.md` | 变更记录 | ## 步骤 1. Redis store + service(SFTP 递归中继、远程 tar、目标 curl) 2. API + 审计 3. 前端对话框(模式切换、目标服务器、路径、打包后展示链接与一键 pull) 4. pytest + `scripts/local_verify.sh` 相关用例 ## 回滚 删除新端点与服务文件;Redis key `transfer:pkg:*` 自然过期。无需 DB 迁移。 ## 测试要点 - 校验:同源目标、空 sources、路径非法 - token 过期 / 不存在 → 404 - mock SFTP 的 relay 字节计数(可选)