fix(游戏共创): 未知共创档位回平台信封 400,而不是框架 422 纯文本
- api-server `set_fork_authorization`:载荷由裸 `Json(..)` 改为 `Result<Json<GameDistributionSetForkAuthorizationRequest>, JsonRejection>`,拒绝统一映射成 400 + 平台信封(对齐同模块评价保存 / 评价管理两处的既有写法),文案「共创授权档位不合法,只接受 forbidden / nonCommercial / full」 - 保留领域层 `FORK_AUTHORIZATION_UNKNOWN`(map_spacetime_error 里映射 400):procedure 读到库里存的未知档位字符串时仍由它兜底,HTTP 面不再可达不需要删 - 新增 HTTP 级用例 `set_fork_authorization_maps_unknown_authorization_to_envelope_bad_request`:目标档位未知、期望档位未知各断言 400、平台信封(`ok=false` / `data=null` / `error.code=BAD_REQUEST` / message 含「共创授权档位不合法」/ `meta.apiVersion` 存在),并断言响应体不含框架的 `Failed to deserialize` 纯文本;用生产同一套 `attach_request_context` 中间件 + `x-genarrative-response-envelope: v1` 才拿得到信封形状 - 既有的「共创授权路由未带 Bearer 必须 401」用例保持不变(`catalog_and_publish_routes_are_mounted` 通过) - 技术方案 §5.1:新增「未知共创档位(HTTP 面合同)」证据行
This commit is contained in:
@@ -500,6 +500,7 @@ A 路线里有一个必须提前知道的互斥点:`create_npm_scaffold` 的
|
||||
| **软删除语义收敛 ①来源校验** | `resolve_game_distribution_fork_declaration_tx` 增加「来源 `deleted_at` 非空 → `FORK_SOURCE_NOT_AVAILABLE`(409)」,显式判定而不是只靠 `visibility` 复位 | ✅ 已验证(`cargo test -p api-server game_distribution`;领域错误码沿用 `FORK_*` 前缀) |
|
||||
| **软删除语义收敛 ②衍生作品数** | `game_distribution_public_fork_count` 只统计 `deleted_at.is_none() && visibility == published` 的子作品;作者删除子作品后父作品计数随之下降 | ✅ 已验证(同上) |
|
||||
| **软删除语义收敛 ③溯源摘要** | `game_distribution_lineage_snapshot` 在父(或根)作品被软删除时把 `parent_title` / `root_title` 置空、父作者名置空,api-server 原样发 `null`,TS 契约改为 `string \| null`,详情页降级为「原作品已不可用」 | ✅ 已验证(DTO parity + 前端用例 + `fork_lineage_visible_identity` 单测,「父不可用即使传入标题也必须 `(None, None)`」已由 `cargo test -p module-game-distribution` 断言) |
|
||||
| **未知共创档位(HTTP 面合同)** | `PUT /api/game-distribution/games/{gameId}/fork-authorization` 载荷里目标或期望档位为未知值(如 `"allowed"`)时返回 **400 + 平台信封**(不再落到 axum 默认的 422 纯文本);新用例 `set_fork_authorization_maps_unknown_authorization_to_envelope_bad_request` 断言 `ok=false`、`data=null`、`error.code=BAD_REQUEST`、message 含「共创授权档位不合法」、带 `meta.apiVersion`,且不带框架的 `Failed to deserialize` 文案。领域层 `FORK_AUTHORIZATION_UNKNOWN` 分支保留(procedure 读到库里未知档位时仍可达) | ✅ 已验证(`cargo test -p api-server game_distribution`,45 passed) |
|
||||
| **详情页结构对齐 #565** | 详情页改用共享 `GameDetailDisplay`,共创卡通过 `infoCards` 渲染;vitest 用例「展示共创授权、代际与溯源信息,且不提供改造入口」与「旧数据缺少授权与血缘字段时只按禁止共创渲染」通过 | ✅ 已验证 |
|
||||
|
||||
---
|
||||
|
||||
Reference in New Issue
Block a user