diff --git a/app/api/routers/rbac_opc.py b/app/api/routers/rbac_opc.py index b44fa20..d8fc49e 100644 --- a/app/api/routers/rbac_opc.py +++ b/app/api/routers/rbac_opc.py @@ -537,11 +537,21 @@ async def opc_compute_tokens(user: dict = Depends(require_roles("opc_member"))): return {"items": out} +class OpcTokenCreateRequest(BaseModel): + """创建算力令牌请求:name 为空时按用户令牌数自动编号(令牌1/令牌2/…)。""" + name: str = "" + + @router.post("/compute/tokens", summary="创建算力令牌") -async def opc_compute_tokens_create(user: dict = Depends(require_roles("opc_member"))): +async def opc_compute_tokens_create( + body: OpcTokenCreateRequest | None = None, + user: dict = Depends(require_roles("opc_member")), +): """为当前用户签发一枚消费令牌(供应商自动对接 PineAgents)。""" try: - token = await compute_client.issue_user_token(user.get("username"), name="OPC 端令牌") + token = await compute_client.issue_user_token( + user.get("username"), name=(body.name if body else "") + ) except compute_client.ComputeError as exc: raise HTTPException(status_code=502, detail=f"算力引擎对接失败: {exc}") from exc token = dict(token or {}) diff --git a/app/services/compute_client.py b/app/services/compute_client.py index 574b15b..8da21fc 100644 --- a/app/services/compute_client.py +++ b/app/services/compute_client.py @@ -111,7 +111,13 @@ async def get_logs(user_pat: str) -> dict: async def issue_user_token(username: str, name: str = "") -> dict: - """为某引擎用户签发消费令牌,返回 {id, key, ...}。""" + """为某引擎用户签发消费令牌,返回 {id, key, ...}。 + + name 为空时自动编号(按该用户名下已有令牌数 +1,如“令牌1”“令牌2”)。 + """ + if not name: + existing = await list_user_tokens(username) + name = f"令牌{len(existing or []) + 1}" data = await _request( method="POST", path="/api/token", headers=_admin_headers(), json={"username": username, "name": name},