平台基础特殊接口
涵盖首页导航/菜单(/myapp)、用户信息(/userinfo/api)、项目组(/project_modelview/api)、审批管理(/approval_modelview/api)。
菜单
/myapp/menu与右侧导航/myapp/navbar_right的完整返回体结构另见 菜单与导航接口。
首页导航 /myapp
代码文件:myapp/views/home.py(route_base = '/myapp')
顶部右侧导航
GET /myapp/navbar_right
无需参数。返回右上角导航按钮列表(文档、反馈等)。受配置 DOCUMENTATION_URL、BUG_REPORT_URL 控制;如配置了 NAVBAR_RIGHT 则直接返回该配置。
响应示例:
[
{"icon": "<svg>...</svg>", "link": "https://github.com/data-infra/cube-studio/wiki"},
{"icon": "<svg>...</svg>", "link": "<BUG_REPORT_URL>"}
]
说明:每项为
{icon, link}(文档按钮无text字段)。
左侧平台导航栏
GET /myapp/navbar_left
无需参数。返回平台切换导航列表(取自配置 NAVBAR_LEFT,默认空数组时前端不渲染)。
响应示例:
[
{"icon": "🚀", "text": "小模型训推", "link": "/frontend/"},
{"icon": "📊", "text": "平台二", "link": "/platform2/"}
]
底部智能助手按钮
GET /myapp/navbar_bottom
无需参数。返回 AI 助手入口配置,需后端配置 AI_ASSISTANT_URL(默认 /claude/,见 myapp/config.py:848)。
响应示例:
[
{"title": "AI智能客服", "icon": "<svg>...</svg>", "url": "/claude/"}
]
顶部菜单 + 侧边子菜单
GET /myapp/menu
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| is_admin | bool | 否 | 是否返回管理员菜单(默认根据当前用户 g.user.is_admin() 自动判定) |
返回层级菜单结构,根据用户角色、多租户权限动态过滤。节点 menu_type 取值:api / innerRoute / out_link / iframe(见 home.py)。
响应示例:
[
{
"name": "group",
"title": "项目空间",
"isExpand": false,
"isMenu": true,
"icon": "<svg>...</svg>",
"children": [
{"name": "project_group", "title": "项目组", "children": [...]}
]
}
]
页面弹窗检查
GET /myapp/feature/check
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| url | string | 否 | 当前页面 URL |
根据当前页面路由返回弹窗提示内容(如新功能引导、告警信息)。
响应示例:
{
"title": "弹窗标题",
"content": "弹窗内容(支持HTML)",
"type": "html",
"delay": 30000,
"hit": false,
"target": "/frontend/..."
}
用户信息 /userinfo
代码文件:myapp/views/view_user_role.py(route_base = '/userinfo/api')
查看/编辑个人信息
GET /userinfo/api/current/userinfo # 查看
POST /userinfo/api/current/userinfo # 编辑
GET 响应示例:
{
"username": "user1",
"email": "user@example.com",
"nickname": "用户一",
"roles": "role1,role2",
"active": true,
"org": "org1",
"quota": "all,jupyter,cpu,10",
"secret": "api-key-xyz",
"balance": 100.5,
"created_on": "2024-01-01T00:00:00",
"changed_on": "2024-05-20T00:00:00",
"wechat": "wechat-handle",
"is_admin": true,
"is_system": false,
"org_projects": [
{"name": "project1", "describe": "描述", "id": 1, "users": {"user1": {"id": 1}}}
],
"projects": [
{"name": "project1", "describe": "描述", "id": 1, "role": "dev"}
]
}
POST 请求体(JSON):
{
"username": "user1",
"password": "新密码(可选)",
"email": "new@example.com",
"nickname": "新昵称",
"wechat": "wechat-handle",
"org": "org1"
}
POST 响应:
{"status": 0, "message": "修正完成", "result": {}}
说明: username 和 email 不能与系统中其他用户重复。密码字段如果传入,会自动 hash 后存储。
项目组 /project_modelview
代码文件:myapp/views/view_team.py(route_base = '/project_modelview/api')
我有权限的项目组
GET /project_modelview/api/my/project
无需参数。返回当前用户有权限的项目组列表。
响应示例:
[
{"name": "project1", "id": 1, "describe": "项目描述", "role": "admin"}
]
说明:
- 全局管理员:返回所有 org 类型项目
- 组织管理员(多租户):返回组织内成员创建的项目
- 普通用户:仅返回通过 Project_User 加入的项目
- role 字段可选值:
admin、creator、dev、ops、auditor
审批管理 /approval_modelview
代码文件:myapp/views/view_approval.py(route_base = '/approval_modelview/api')
审批:同意或拒绝
POST /approval_modelview/api/approve/<approval_id>
| 参数 | 位置 | 类型 | 说明 |
|---|---|---|---|
| approval_id | path | int | 审批记录 ID |
| action | body | string | approve 或 reject |
| comment | body | string | 审批意见 |
响应:
{"status": 0, "message": "ok", "result": {"id": 123, "result": "passed"}}
错误响应:
{"status": 1, "message": "错误原因"}
说明: 当前用户必须在该审批当前阶段的审批人列表中。
审批:申请人撤销
POST /approval_modelview/api/cancel/<approval_id>
| 参数 | 位置 | 类型 | 说明 |
|---|---|---|---|
| approval_id | path | int | 审批记录 ID |
响应:
{"status": 0, "message": "ok", "result": {"id": 123, "result": "cancelled"}}
说明: 仅审批申请人或管理员可撤销。
待我审批列表
GET /approval_modelview/api/my_pending
无需参数。返回当前用户需要审批的待处理项(最近 200 条,按 id 降序)。
响应:
{
"status": 0,
"message": "ok",
"result": [
{
"id": 123,
"req_type": "resource_increase",
"label": "资源提额 project=1",
"applicant": "user1",
"stage": "项目组负责人审批"
}
]
}
申请资源提额
GET/POST /approval_modelview/api/apply_quota/<project_id>
| 参数 | 位置 | 类型 | 说明 |
|---|---|---|---|
| project_id | path | int | 项目组 ID |
| quota | query/body | string | 申请的资源配额 |
| reason | query/body | string | 申请原因 |
响应: 302 重定向到 /frontend/group/notifications/approval?id={approval_id}
说明: 自动创建审批流程,审批人为项目组创建者。