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 737d1ff0c..48d64193c 100644 --- a/server-rs/crates/spacetime-module/src/runtime/active/profile.rs +++ b/server-rs/crates/spacetime-module/src/runtime/active/profile.rs @@ -8812,8 +8812,16 @@ fn ensure_default_profile_membership_plan(ctx: &ReducerContext) { } } -fn ensure_default_profile_recharge_product_config(ctx: &ReducerContext) { +/// 模块初始化生命周期:只在数据库首次创建时把会员档位目录整表播种。 +/// +/// 迁移目的:报价 / 充值中心 / 后台查询等只读入口不再调用 `ensure_default_profile_membership_plan` +/// 写库;存量数据库此前已由懒播种写入了目录行,新建数据库则由本 reducer 播种。 +#[spacetimedb::reducer(init)] +pub fn init_profile_membership_plan_catalog(ctx: &ReducerContext) { ensure_default_profile_membership_plan(ctx); +} + +fn ensure_default_profile_recharge_product_config(ctx: &ReducerContext) { if ctx.db.profile_recharge_product_config().count() > 0 { migrate_legacy_default_profile_recharge_product_config(ctx); return; @@ -9146,7 +9154,6 @@ fn membership_plan_row( ctx: &ReducerContext, plan: RuntimeProfileMembershipPlan, ) -> Option { - ensure_default_profile_membership_plan(ctx); ctx.db.profile_membership_plan().plan().find(&plan) } @@ -9186,9 +9193,8 @@ fn membership_plan_snapshot( }) } -/// 充值中心与后台共用的目录行读取,按 `rank` 升序。 +/// 充值中心与后台共用的目录行读取,按 `rank` 升序;只读,不再触发表为空时的懒播种。 fn membership_plan_records(ctx: &ReducerContext) -> Vec { - ensure_default_profile_membership_plan(ctx); let mut rows = ctx.db.profile_membership_plan().iter().collect::>(); rows.sort_by(|left, right| { left.rank