领域层:新增会员计划目录种子与档位解析

- membership_catalog.rs:runtime_profile_membership_plan_catalog 一行一档(Starter ¥39/400/¥390、Plus ¥99/1150/¥990、Pro ¥299/3650/¥2990、Max ¥699/8650/¥6990、Normal 全 0 且不可购买)
- 新增 RuntimeProfileMembershipPlanCatalogRow 与 RuntimeProfileMembershipPlanSnapshot
- resolve_runtime_profile_membership_plan_snapshot 按所选周期取月价 / 年价;rank 与可购买判定只来自目录
- 单测覆盖档位覆盖与排序、价格与点数、年价独立存储、Normal 语义、周期取价
- 设计文档同步登记目录纯函数入口

Co-authored-by: Junie <junie@jetbrains.com>
This commit is contained in:
2026-10-02 14:10:10 +08:00
parent 969ee329d7
commit 33a4c8dbc3
3 changed files with 349 additions and 0 deletions
@@ -247,6 +247,16 @@ pub struct RuntimeProfileMembershipUpgradeQuote {
}
```
目录纯函数(`membership_catalog`,无 IO):
- `runtime_profile_membership_plan_catalog()`:后台 `profile_membership_plan` 表的种子真相源,
一行一档(`title` / `rank` / `month_price_cents` / `year_price_cents` / `period_points` /
`model_access` / `concurrent_job_limit` / `sort_order` / `enabled`)。
- `resolve_runtime_profile_membership_plan_snapshot(plan, cycle_kind)`:
「档位 + 周期 → 可下单套餐」的唯一解析入口,`price_cents` 取所选周期的价格字段。
- `runtime_profile_membership_plan_rank(plan)` / `is_runtime_profile_membership_plan_purchasable(plan)`:
升级比较与可购买判定的唯一入口(`Normal` 与下架档位都不可购买)。
`RuntimeProfileMembershipSnapshot` / `RuntimeProfileMembershipRecord`:
`tier` → `plan`(枚举),删 `cycle_period_days`,新增 `cycle_index` / `cycle_count` / `cycle_kind`。