diff --git a/server-rs/crates/spacetime-module/src/runtime/active/profile.rs b/server-rs/crates/spacetime-module/src/runtime/active/profile.rs index 2d25e248a..fff05e9dd 100644 --- a/server-rs/crates/spacetime-module/src/runtime/active/profile.rs +++ b/server-rs/crates/spacetime-module/src/runtime/active/profile.rs @@ -8383,9 +8383,15 @@ fn upsert_profile_membership_plan_record( .plan() .find(&validated.plan); // 代码内目录是 `rank` 的唯一来源:后台改价、改权益、改上下架都不会动升级比较基准。 + // 缺失档位必须显式报错:回退成 rank 0 会与 Normal 占位同档,产生误导性的校验结果。 let rank = resolve_runtime_profile_membership_plan_row(validated.plan) - .map(|row| row.rank) - .unwrap_or(0); + .ok_or_else(|| { + format!( + "会员目录缺少档位 {},无法解析升级比较基准", + validated.plan.as_str() + ) + })? + .rank; let inserted = ProfileMembershipPlan { plan: validated.plan,