From b23ed023fc0e10a9319e0a0c6b4aeb3d8a5a3b47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=BE=B7=E5=AE=87?= Date: Sun, 4 Oct 2026 10:30:50 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=87=E6=A1=A3(=E4=BC=9A=E5=91=98=E7=9B=AE?= =?UTF-8?q?=E5=BD=95)=EF=BC=9A=E6=B3=A8=E6=98=8E=E5=8D=95=E8=B0=83?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C=E8=A6=81=E6=B1=82=20existing=20=E8=A6=86?= =?UTF-8?q?=E7=9B=96=E5=AE=8C=E6=95=B4=E6=A1=A3=E4=BD=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 说明缺失档位会让倒挂静默通过,要求新增调用方传全量目录表 --- server-rs/crates/module-runtime/src/membership/catalog.rs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/server-rs/crates/module-runtime/src/membership/catalog.rs b/server-rs/crates/module-runtime/src/membership/catalog.rs index 12cde7e7a..8d0bce005 100644 --- a/server-rs/crates/module-runtime/src/membership/catalog.rs +++ b/server-rs/crates/module-runtime/src/membership/catalog.rs @@ -146,6 +146,11 @@ pub fn resolve_runtime_profile_membership_plan_row( /// 只比较 `candidate` 与其余每一行:这样任何单次改写都不能制造新的倒挂,而目录原本单调时 /// 写完后仍严格单调;同时历史脏目录不会把后台彻底锁死,后台仍能逐档修正。 /// +/// **前置条件**:`existing` 必须覆盖除 `candidate.plan` 外的全部在售档位。本函数只校验 +/// `candidate` 相对现存行的单调性,无法发现「缺失档位」导致的倒挂(例如漏传某一行时, +/// 月价 / 年价 / 每期泥点的反转关系会静默通过,之后才在报价或目录读取时暴露)。当前唯一 +/// 调用方传入完整目录表,新增调用方时必须保持这一约定。 +/// /// `model_access` 与 `concurrent_job_limit` 本期只落字段、只用于展示与人工判断,服务端不做拦截, /// 因此这里不校验它们随 rank 单调;若将来据其做准入判定,需要在此补充倒挂校验。 pub fn validate_runtime_profile_membership_plan_row_against_catalog(