34 lines
1.2 KiB
Markdown
34 lines
1.2 KiB
Markdown
|
|
# 跨服务器文件传输 — 实施计划
|
|||
|
|
|
|||
|
|
## 涉及文件
|
|||
|
|
|
|||
|
|
| 文件 | 变更 |
|
|||
|
|
|------|------|
|
|||
|
|
| `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 字节计数(可选)
|