From 047e6d72e494227c9fc3818b72579ee619b03a1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=BE=B7=E5=AE=87?= Date: Fri, 2 Oct 2026 20:05:51 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E6=9E=84(=E8=AE=A1=E8=B4=B9):=20?= =?UTF-8?q?=E4=BC=9A=E5=91=98=E6=A1=A3=E4=BD=8D=20rank=20=E8=A7=A3?= =?UTF-8?q?=E6=9E=90=E6=94=B9=E4=B8=BA=E5=8F=AF=E5=A4=B1=E8=B4=A5=E8=BF=94?= =?UTF-8?q?=E5=9B=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit runtime_profile_membership_plan_rank 返回 Option,目录缺行时返回 None 去掉 unwrap_or(0),不再把目录缺失伪装成 Normal 而误报 NotUpgrade plan_rank_follows_catalog_order 测试断言同步改为 Some(..) Co-authored-by: Junie --- .../module-runtime/src/membership/catalog.rs | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/server-rs/crates/module-runtime/src/membership/catalog.rs b/server-rs/crates/module-runtime/src/membership/catalog.rs index e7d2860e3..681cf9aa9 100644 --- a/server-rs/crates/module-runtime/src/membership/catalog.rs +++ b/server-rs/crates/module-runtime/src/membership/catalog.rs @@ -173,10 +173,11 @@ pub fn resolve_runtime_profile_membership_plan_snapshot( } /// 升级比较基准:目录里的 `rank`(`Normal = 0`,越大越高)。 -pub fn runtime_profile_membership_plan_rank(plan: RuntimeProfileMembershipPlan) -> u8 { - resolve_runtime_profile_membership_plan_row(plan) - .map(|row| row.rank) - .unwrap_or(0) +/// +/// 返回 `Option` 是为了把「目录缺行」显式化:不再用 `unwrap_or(0)` 把缺失伪装成 `Normal`, +/// 否则缺失会被 `check_..._allowed` 误判成「目标不高于当前」→ 误报 `NotUpgrade`。 +pub fn runtime_profile_membership_plan_rank(plan: RuntimeProfileMembershipPlan) -> Option { + resolve_runtime_profile_membership_plan_row(plan).map(|row| row.rank) } /// 只有在售档位可以下单:`Normal` 与下架档位都不允许购买。 @@ -371,15 +372,15 @@ mod tests { fn plan_rank_follows_catalog_order() { assert_eq!( runtime_profile_membership_plan_rank(RuntimeProfileMembershipPlan::Normal), - 0 + Some(0) ); assert_eq!( runtime_profile_membership_plan_rank(RuntimeProfileMembershipPlan::Plus), - 2 + Some(2) ); assert_eq!( runtime_profile_membership_plan_rank(RuntimeProfileMembershipPlan::Max), - 4 + Some(4) ); }