From d8e966b5210f7d3711cf7f13122881c49de670dd Mon Sep 17 00:00:00 2001 From: Suzumiya Date: Mon, 5 Oct 2026 00:46:43 +0800 Subject: [PATCH] =?UTF-8?q?docs(=E6=B8=B8=E6=88=8F=E5=85=B1=E5=88=9B):=20?= =?UTF-8?q?=E6=8A=80=E6=9C=AF=E6=96=B9=E6=A1=88=E9=87=8C=E6=8F=90=E5=8D=87?= =?UTF-8?q?=E5=85=B1=E5=88=9B=E6=8E=88=E6=9D=83=E7=9A=84=E6=96=B9=E6=B3=95?= =?UTF-8?q?=E6=94=B9=E4=B8=BA=20PUT=EF=BC=8C=E4=B8=8E=E5=AE=9E=E7=8E=B0?= =?UTF-8?q?=E4=B8=80=E8=87=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - §2.6 流程图 A:`后续提升授权(POST fork-authorization,仅升)` → `后续提升授权(PUT /games/{gameId}/fork-authorization,仅升)` - §3.4 作者路由表:`POST /games/{gameId}/fork-authorization`(新) → `PUT /games/{gameId}/fork-authorization`(新) - 依据:实现侧(api-server `set_fork_authorization` 的 PUT 路由 + 前端 `updateGameForkAuthorization` 的 PUT + M1 实施计划 `PUT /api/game-distribution/games/{game_id}/fork-authorization`)一致为 PUT;表中路径沿用本节开头声明的 `/api/game-distribution` 命名空间,故未重复写前缀 - 顺手扫了全仓 `docs/`:除本文件这两处外没有其它把该路由写成 POST 的地方(`POST /games` 是既有的创建作品路由,与本次无关,未动) --- docs/【技术方案】游戏共创与作品Fork-2026-10-03.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/【技术方案】游戏共创与作品Fork-2026-10-03.md b/docs/【技术方案】游戏共创与作品Fork-2026-10-03.md index 8ac98d729..996aa162f 100644 --- a/docs/【技术方案】游戏共创与作品Fork-2026-10-03.md +++ b/docs/【技术方案】游戏共创与作品Fork-2026-10-03.md @@ -163,7 +163,7 @@ sequenceDiagram A->>API: (AGC 且授权非 forbidden)上传工程源包 API->>API: 校验 zip(复用模板包门禁)→ OSS → version.project_bundle_* Note over A,API: 审核通过后作品公开,且可被改造 - A->>API: 后续提升授权(POST fork-authorization,仅升) + A->>API: 后续提升授权(PUT /games/{gameId}/fork-authorization,仅升) ``` **B. 用户一键改造(目标形态;成品包分支只到「试玩 + 素材」)** @@ -310,7 +310,7 @@ pub(crate) project_bundle_sha256: Option, | 方法 / 路径 | 说明 | | --- | --- | -| `POST /games/{gameId}/fork-authorization`(新) | body `{ expectedForkAuthorization, forkAuthorization }` + `Idempotency-Key`;只允许提升;返回最新 `forkAuthorization` 与 `replayed` | +| `PUT /games/{gameId}/fork-authorization`(新) | body `{ expectedForkAuthorization, forkAuthorization }` + `Idempotency-Key`;只允许提升;返回最新 `forkAuthorization` 与 `replayed` | | `PUT /versions/{versionId}/project-bundle`(新) | `application/octet-stream`,整包或复用现役分片族(`upload-state` / `chunk` / `complete`);服务端校验 zip 门禁后写 OSS 并确认。前置:调用者是该版本作者,且该版本尚**没有**工程包;**发布阶段**上传只要求版本归属,**补齐**场景额外要求该版本是作品当前公开版本且 `fork_authorization != forbidden` | | `GET /games/{gameId}/fork-source`(新) | 校验授权与来源可用性,返回 `{ gameId, versionId, bundleSha256, bundleBytes, downloadPath }`;`downloadPath` 为受鉴权网关路径,不是可匿名访问的对象键 | | `POST /games`(**既有,请求增量**) | 追加可选 `forkedFromGameId` / `forkedFromVersionId` |