argus-cluster/specs/mvp/v3.0/v3.0_api.md

3.8 KiB
Raw Blame History

MVP v3.0 — API 扩展设计(基于 v2.5

v3.0 的原则是:尽量复用 v2.5 API,只增量增加 “数据闭环” 与 “WebUI 支持” 所需的最小接口。

1) 认证与权限

沿用 v2.5

  • HeaderAuthorization: Bearer <token>
  • admin token来自 MVP_INTERNAL_TOKEN
  • 普通用户 token由 admin 颁发并持久化在 SQLite

权限规则:

  • 非 admin只能访问自己的 task、自己的数据空间/private/users/<user_id>/...)。
  • 跨用户访问返回 404不泄露存在性

2) 用户与 SFTPGo 联动(管理员接口)

2.1 创建用户(复用 v2.5

POST /api/v2/users

  • v3.0 行为:成功后,可选联动创建 SFTPGo 用户
    • v3.0 默认启用联动:创建 SFTPGo 用户 + 生成一次性密码password 认证)
    • v3.0 仅保留该方案(方案 A不做外部认证/SSO 集成(留到更后续版本)
    • data.sftpgo.admin_api_base 推荐形如:http://argus-sftpgo:8080/api/v2(包含 /api/v2 前缀)

2.2 下发 token复用 v2.5

POST /api/v2/users/{user_id}/tokens

2.3 禁用用户(复用 v2.5

POST /api/v2/users/{user_id}:disable

  • v3.0 行为:联动禁用 SFTPGo 用户(可选)

2.4 SFTP 凭据管理(新增,管理员或用户自助)

(具体由你确认 v3.0 需要“用户自助”还是“管理员操作”)

重置 SFTP 密码(管理员)

POST /api/v2/users/{user_id}/sftp:reset_password

  • 返回:一次性密码(只返回一次,服务端不保存明文)

v3.0 先只做 password 方案SSH public key 作为后续版本可选增强(不在 v3.0 范围)。

3) 用户自助信息(新增)

3.1 获取当前用户信息

GET /api/v2/me

  • 返回示例:
{
  "user_id": "alice",
  "is_admin": false,
  "paths": {
    "home": "/private/users/alice",
    "datasets": "/private/users/alice/datasets",
    "models": "/private/users/alice/models",
    "code": "/private/users/alice/code",
    "jobs": "/private/users/alice/jobs",
    "trash_jobs": "/private/users/alice/trash/jobs"
  },
  "retention": {
    "jobs_trash_after_days": 3,
    "jobs_purge_after_days": 7
  },
  "sftp": {
    "host": "h1.example.internal",
    "port": 2022,
    "username": "alice"
  }
}

3.2 Jobs Retention 提示(新增)

为了支撑 WebUI 展示与用户预期管理,可在 /api/v2/me 或单独接口返回:

  • jobs_trash_after_days:默认 3
  • jobs_purge_after_days:默认 7
  • jobs_root/private/users/<me>/jobs
  • trash_jobs_root/private/users/<me>/trash/jobs
  • recommendations:提示用户把需要长期保存的产物移动到 models/datasets/

4) 数据浏览/下载可选v3.0 最小化)

说明:上传/下载主通道仍是 SFTP。
WebUI 如果要提供“快速浏览/查看”,可实现只读接口(避免实现大文件上传/断点等复杂逻辑)。

4.1 列目录

GET /api/v2/files?path=/private/users/alice

  • 权限path 必须在 /private/common//private/users/<me>/
  • 返回文件列表name/type/size/mtime

4.2 下载文件(小文件为主)

GET /api/v2/files:download?path=/private/users/alice/jobs/.../logs/...

  • 返回:流式下载
  • 大文件仍建议走 SFTP

5) TaskSpec 路径校验升级v3.0 关键)

v2.5:仅允许 /private/common/...
v3.0:允许 /private/common/.../private/users/<me>/...

应用字段(至少):

  • train_file / val_file
  • code_path:仍仅允许 /private/common/...v3.0 不支持执行用户 code
  • 本地模型路径字段(如果引入):允许 /private/users/<me>/models/...

6) WebUI 路由(新增)

由 API server 托管:

  • GET /ui:主页面
  • GET /ui/logintoken 登录页
  • 静态资源:/ui/static/...

WebUI 的所有操作均调用同源 API不额外开 CORS