diff --git a/server-rs/crates/module-runtime/src/lib.rs b/server-rs/crates/module-runtime/src/lib.rs index 2cb68ce6b..bcec66d2e 100644 --- a/server-rs/crates/module-runtime/src/lib.rs +++ b/server-rs/crates/module-runtime/src/lib.rs @@ -4,15 +4,8 @@ pub mod civil_calendar; pub use civil_calendar::*; mod llm_billing; pub use llm_billing::*; -mod membership_cycle; -pub use membership_cycle::*; -mod membership_limits; -pub use membership_limits::*; -mod membership_catalog; -pub use membership_catalog::*; -mod membership_upgrade; -pub use membership_upgrade::*; mod application; +pub mod membership; pub use agc_models::*; mod commands; mod domain; @@ -23,6 +16,7 @@ pub use application::*; pub use commands::*; pub use domain::*; pub use errors::*; +pub use membership::*; use shared_kernel::format_rfc3339 as format_shared_rfc3339; use time::OffsetDateTime; diff --git a/server-rs/crates/module-runtime/src/membership_catalog.rs b/server-rs/crates/module-runtime/src/membership/catalog.rs similarity index 100% rename from server-rs/crates/module-runtime/src/membership_catalog.rs rename to server-rs/crates/module-runtime/src/membership/catalog.rs diff --git a/server-rs/crates/module-runtime/src/membership_cycle.rs b/server-rs/crates/module-runtime/src/membership/cycle.rs similarity index 100% rename from server-rs/crates/module-runtime/src/membership_cycle.rs rename to server-rs/crates/module-runtime/src/membership/cycle.rs diff --git a/server-rs/crates/module-runtime/src/membership_limits.rs b/server-rs/crates/module-runtime/src/membership/limits.rs similarity index 100% rename from server-rs/crates/module-runtime/src/membership_limits.rs rename to server-rs/crates/module-runtime/src/membership/limits.rs diff --git a/server-rs/crates/module-runtime/src/membership/mod.rs b/server-rs/crates/module-runtime/src/membership/mod.rs new file mode 100644 index 000000000..5edfeeb37 --- /dev/null +++ b/server-rs/crates/module-runtime/src/membership/mod.rs @@ -0,0 +1,20 @@ +//! 会员计费领域层(纯函数,无 IO)。 +//! +//! 只放会员侧的规则计算:档位目录与解析、自然月账期推进、并发上限哨兵与补差升级报价。 +//! SpacetimeDB 写入与事务编排留在 `spacetime-module`,HTTP 契约留在 `api-server`。 +//! +//! 子模块按依赖顺序排列: +//! - [`catalog`]:档位枚举 → 可下单套餐(价格 / 每期泥点 / 模型权限 / 并发)。 +//! - [`cycle`]:北京时间自然月账期(1/31 → 2/28 → 3/31,每期从原始锚点重算)。 +//! - [`limits`]:并发上限哨兵,`>= 128` 视为「不设上限」。 +//! - [`upgrade`]:补差升级报价与允许操作矩阵。 + +mod catalog; +mod cycle; +mod limits; +mod upgrade; + +pub use catalog::*; +pub use cycle::*; +pub use limits::*; +pub use upgrade::*; diff --git a/server-rs/crates/module-runtime/src/membership_upgrade.rs b/server-rs/crates/module-runtime/src/membership/upgrade.rs similarity index 98% rename from server-rs/crates/module-runtime/src/membership_upgrade.rs rename to server-rs/crates/module-runtime/src/membership/upgrade.rs index 029f7274f..3f5661eba 100644 --- a/server-rs/crates/module-runtime/src/membership_upgrade.rs +++ b/server-rs/crates/module-runtime/src/membership/upgrade.rs @@ -15,8 +15,8 @@ use serde::{Deserialize, Serialize}; -use crate::membership_catalog::resolve_runtime_profile_membership_plan_snapshot; -use crate::membership_cycle::membership_cycle_remaining_micros; +use super::catalog::resolve_runtime_profile_membership_plan_snapshot; +use super::cycle::membership_cycle_remaining_micros; use crate::{RuntimeProfileMembershipCycleKind, RuntimeProfileMembershipPlan}; /// 比例分母:百万分之一。 @@ -194,7 +194,7 @@ fn ceil_div(numerator: u128, denominator: u128) -> u64 { #[cfg(test)] mod tests { use super::*; - use crate::membership_cycle::beijing_local_micros; + use crate::membership::cycle::beijing_local_micros; const DAY_MICROS: i64 = 86_400_000_000;