参考模型 create_version 不再要求幂等 key

自然幂等键只由 `(game_id, version_number)` 派生,只校验摘要非空;与生产统一发布「版本号即身份」口径一致,去掉无意义的 Idempotency-Key 必填
This commit is contained in:
2026-10-08 12:49:28 +08:00
parent 685eb16ec9
commit 222993af97
@@ -145,17 +145,21 @@ impl GameDistributionService {
let package_sha256 = normalize_package_digest(&input.package_sha256)?;
validate_package_bytes(input.package_bytes)?;
let price_mud_points = normalize_game_price_mud_points(input.price_mud_points)?;
let idem = normalize_idempotency(input.idempotency)?;
// 新版本的自然幂等键只有 `(game_id, version_number)`:调用方不再需要传 key,这里从版本号
// 派生;只要求摘要非空。`IdempotencyRequest.key` 对这条命令不再有意义。
let request_digest = normalize_id(input.idempotency.request_digest).ok_or(
GameDistributionError::Field(GameDistributionFieldError::MissingRequestDigest),
)?;
let scope = scope(
&owner_user_id,
GameDistributionAction::CreateVersion,
&IdempotencyRequest {
key: game_distribution_version_key(&game_id, None, input.version_number),
request_digest: idem.request_digest.clone(),
request_digest: request_digest.clone(),
},
);
let mut state = lock(&self.store)?;
if let Some(outcome) = replay_outcome(&state, &scope, &idem.request_digest)? {
if let Some(outcome) = replay_outcome(&state, &scope, &request_digest)? {
return version_result(outcome, true);
}
let game = state
@@ -186,7 +190,7 @@ impl GameDistributionService {
remember(
&mut state,
scope,
idem.request_digest,
request_digest,
StoredOutcome::Version(snapshot.clone()),
);
Ok(GameOperationResult {