diff --git a/server-rs/crates/module-runtime/src/membership/cycle.rs b/server-rs/crates/module-runtime/src/membership/cycle.rs index 6af6f93eb..306f8afab 100644 --- a/server-rs/crates/module-runtime/src/membership/cycle.rs +++ b/server-rs/crates/module-runtime/src/membership/cycle.rs @@ -59,6 +59,10 @@ pub fn advance_beijing_months_clamped(anchor_micros: i64, months: u32) -> i64 { /// 年付只是把同样的月度窗口重复 12 次;期数总数由 /// [`RuntimeProfileMembershipCycleKind::cycle_count`](crate::RuntimeProfileMembershipCycleKind::cycle_count) /// 给出。 +/// +/// `index = 0` 会被 `max(1)` 收敛为第 1 期(开通当期),不报错:这是为兼容「期号水位尚未初始化」 +/// 的存量行。它不同于 `quote_runtime_profile_membership_upgrade` 对 `cycle_index == 0` 的显式拒绝 +/// (报价要求调用方给出明确期号),调用方若已能拿到真实期号,不应把 `0` 当合法期号传入。 pub fn membership_cycle_window(anchor_micros: i64, index: u32) -> (i64, i64) { let index = index.max(1); let start = if index == 1 {