清理(AGC模型): 删除无档位校验的遗留 resolver
- 移除 AgcModelCatalog::resolve / resolve_requested,统一走带会员档位的 resolve_requested_for - validate 内联默认项检查,测试改用 resolve_requested_for
This commit is contained in:
@@ -144,26 +144,15 @@ impl AgcModelCatalog {
|
||||
));
|
||||
}
|
||||
}
|
||||
self.resolve(&self.default_model_id).map(|_| ())
|
||||
}
|
||||
|
||||
pub fn resolve(&self, id: &str) -> Result<&str, String> {
|
||||
self.models
|
||||
// 默认项必须存在且启用,否则目录无法给出可用默认模型。
|
||||
if !self
|
||||
.models
|
||||
.iter()
|
||||
.find(|m| m.enabled && m.id == id)
|
||||
.map(|m| m.model_id.as_str())
|
||||
.ok_or_else(|| "所选模型不可用,请刷新模型列表".into())
|
||||
}
|
||||
|
||||
/// 请求侧解析:显式选择的标识按目录校验,未选择或占位标识使用默认项。
|
||||
pub fn resolve_requested(&self, requested: Option<&str>) -> Result<&str, String> {
|
||||
let requested = requested
|
||||
.map(str::trim)
|
||||
.filter(|id| !id.is_empty() && *id != AGC_MODEL_PLATFORM_DEFAULT);
|
||||
match requested {
|
||||
Some(id) => self.resolve(id),
|
||||
None => self.resolve(&self.default_model_id),
|
||||
.any(|model| model.enabled && model.id == self.default_model_id)
|
||||
{
|
||||
return Err("所选模型不可用,请刷新模型列表".into());
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
@@ -316,18 +305,30 @@ mod tests {
|
||||
let mut catalog =
|
||||
AgcModelCatalog::from_upstream_models(upstream(&["model-a", "model-b"]), 0).unwrap();
|
||||
assert!(catalog.validate().is_ok());
|
||||
assert_eq!(catalog.resolve("model-a").unwrap(), "model-a");
|
||||
assert_eq!(
|
||||
catalog.resolve_requested_for(Some("model-a"), AgcModelAccess::Basic),
|
||||
Ok("model-a")
|
||||
);
|
||||
// 客户端不能直接指定实际模型名,只能回传目录标识。
|
||||
assert!(catalog.resolve("model-c").is_err());
|
||||
assert_eq!(catalog.resolve_requested(None).unwrap(), "model-a");
|
||||
assert_eq!(
|
||||
catalog.resolve_requested_for(Some("model-c"), AgcModelAccess::Basic),
|
||||
Err(crate::AgcModelResolveError::Unavailable)
|
||||
);
|
||||
assert_eq!(
|
||||
catalog.resolve_requested_for(None, AgcModelAccess::Basic),
|
||||
Ok("model-a")
|
||||
);
|
||||
assert_eq!(
|
||||
catalog
|
||||
.resolve_requested(Some(AGC_MODEL_PLATFORM_DEFAULT))
|
||||
.resolve_requested_for(Some(AGC_MODEL_PLATFORM_DEFAULT), AgcModelAccess::Basic)
|
||||
.unwrap(),
|
||||
"model-a"
|
||||
);
|
||||
catalog.models[0].enabled = false;
|
||||
assert!(catalog.resolve("model-a").is_err());
|
||||
assert_eq!(
|
||||
catalog.resolve_requested_for(Some("model-a"), AgcModelAccess::Basic),
|
||||
Err(crate::AgcModelResolveError::Unavailable)
|
||||
);
|
||||
assert!(catalog.validate().is_err());
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user