# MVP v2.5 API 设计(User + Task + Queue) v2.5 在 v2.0 API 基础上,新增 **User Management** 与多租户隔离。 约束: - 仍使用内部 token(API key); - 不引入外部 IAM; - TaskSpec 仍为 YAML(沿用现有结构化字段)。 --- ## 1. Auth Header: - `Authorization: Bearer ` 服务端行为: - 将 `api_token` 映射到 `user_id` - 之后的 task 操作默认仅作用于该 `user_id` Admin token(可选): - 支持额外配置 `MVP_ADMIN_TOKEN`(或 user.role=admin) - admin 可跨用户查询/取消(用于运维)。 --- ## 2. User Management ### 2.1 创建用户(admin) `POST /api/v2/users` Request(JSON): ```json {"user_id":"alice","display_name":"Alice"} ``` Response: ```json {"user_id":"alice","state":"ACTIVE"} ``` ### 2.2 为用户签发 token(admin) `POST /api/v2/users/{user_id}/tokens` Response(只返回一次明文 token): ```json {"user_id":"alice","token":"mvp_u_..."} ``` ### 2.3 禁用用户(admin) `POST /api/v2/users/{user_id}:disable` --- ## 3. Task Management(多租户) ### 3.1 提交任务 `POST /api/v2/tasks` Body: - `Content-Type: application/yaml` - raw TaskSpec YAML(训练语义字段;不含 user_id) Response: ```json {"task_id":"mvp25-ppo-20251225-170001-2a3f","state":"QUEUED"} ``` 服务端 side effects: - 记录 tasks.user_id(由 token 得到) - 计算输出目录:`/private/users//jobs//...` ### 3.2 查询任务(仅本人) `GET /api/v2/tasks/{task_id}` 若 task 不属于当前 user: - 返回 `404`(避免泄露存在性) ### 3.3 取消任务(仅本人) `POST /api/v2/tasks/{task_id}:cancel` --- ## 4. Queue/Debug ### 4.1 查看队列(本人视角) `GET /api/v2/queue` 返回该 user 的 pending/running 列表。 ### 4.2 管理员查看全局队列(admin) `GET /api/v2/admin/queue` --- ## 5. Logs `GET /api/v2/tasks/{task_id}/logs?attempt=latest&tail=2000` 行为与 v2.0 一致:透传 Ray Job logs tail。