修复(AGC模型): 未知权限档反序列化失败开放为 basic
- AgcModelAccess 将 Basic 放到最后一个变体并加 #[serde(other)],未知 access 不再让整份目录解析失败 - 补充未知 access 反序列化回退 Basic 的单测
This commit is contained in:
@@ -23,13 +23,16 @@ pub const MODEL_NOT_AVAILABLE_FOR_PLAN: &str = "MODEL_NOT_AVAILABLE_FOR_PLAN";
|
||||
/// 单个模型要求的权限档。
|
||||
///
|
||||
/// 缺省 `Basic`(失败开放):存量目录 JSON 缺该字段、后台未人工标注都按基础档处理,
|
||||
/// 只有被后台明确标成 `Full` 的模型才会对 `Basic` 档账号产生拦截。
|
||||
/// 只有被后台明确标成 `Full` 的模型才会对 `Basic` 档账号产生拦截。未知取值同样
|
||||
/// 失败开放到 `Basic`(`#[serde(other)]`),避免将来新增档位时旧服务端整份目录解析失败、
|
||||
/// 静默回退到上游目录而丢掉人工标注。
|
||||
#[derive(Clone, Copy, Debug, Default, PartialEq, Eq, Serialize, Deserialize)]
|
||||
#[serde(rename_all = "lowercase")]
|
||||
pub enum AgcModelAccess {
|
||||
#[default]
|
||||
Basic,
|
||||
Full,
|
||||
#[default]
|
||||
#[serde(other)]
|
||||
Basic,
|
||||
}
|
||||
|
||||
impl AgcModelAccess {
|
||||
@@ -246,6 +249,17 @@ mod tests {
|
||||
assert_eq!(catalog.models[0].access, AgcModelAccess::Basic);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn unknown_catalog_json_access_fails_open_to_basic() {
|
||||
// 中文注释:未知 access 取值(例如将来新增档位)不能让整份目录解析失败、
|
||||
// 静默回退上游目录,应失败开放到 Basic。
|
||||
let catalog: AgcModelCatalog = serde_json::from_str(
|
||||
r#"{"revision":1,"defaultModelId":"model-a","models":[{"id":"model-a","alias":"model-a","modelId":"model-a","enabled":true,"agentMode":"codex","access":"premium"}]}"#,
|
||||
)
|
||||
.expect("未知 access 应失败开放到 Basic");
|
||||
assert_eq!(catalog.models[0].access, AgcModelAccess::Basic);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn basic_plan_does_not_see_full_models_and_gets_first_basic_default() {
|
||||
let mut catalog = catalog_from_ids(&["model-a", "model-b", "model-c"], 1);
|
||||
|
||||
Reference in New Issue
Block a user