文档(会员账期):说明 membership_cycle_window 把 index=0 收敛为第 1 期

- 注明与升级报价显式拒绝 cycle_index=0 的差异及兼容存量行的原因
This commit is contained in:
2026-10-04 10:30:53 +08:00
parent b23ed023fc
commit a16dbf7bc0
@@ -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 {