Fix OAuth token import and table filters

This commit is contained in:
fawney19
2026-05-01 02:14:49 +08:00
parent 9570e5c2c1
commit 4fc7cecf30
54 changed files with 3160 additions and 727 deletions

View File

@@ -428,6 +428,11 @@ pub(crate) async fn record_failed_usage_for_runtime_miss_request(
pub(crate) fn beautify_local_execution_client_error_message(message: &str) -> String {
let without_reason_code = strip_parenthesized_reason_code(message);
let mut simplified = collapse_whitespace(without_reason_code.as_str());
if let Some(unavailable_message) =
simplify_all_candidates_skipped_client_error_message(simplified.as_str())
{
return unavailable_message;
}
for marker in [
"。请检查",
"。请确认",
@@ -450,6 +455,35 @@ pub(crate) fn beautify_local_execution_client_error_message(message: &str) -> St
trim_trailing_message_punctuation(simplified.as_str()).to_string()
}
fn simplify_all_candidates_skipped_client_error_message(message: &str) -> Option<String> {
if !message.contains("候选提供商")
|| !(message.contains("全部不可用") || message.contains("都不满足本次"))
{
return None;
}
let request_mode = extract_local_execution_request_mode(message)?;
if let Some(model) = extract_candidate_supported_model(message) {
return Some(format!(
"没有可用提供商支持模型 {model}{request_mode}请求"
));
}
Some(format!("没有可用提供商支持本次{request_mode}请求"))
}
fn extract_local_execution_request_mode(message: &str) -> Option<&str> {
let rest = message.get(message.find("本次")? + "本次".len()..)?;
let mode = rest.get(..rest.find("请求")?)?.trim();
(!mode.is_empty()).then_some(mode)
}
fn extract_candidate_supported_model(message: &str) -> Option<&str> {
let rest = message.get(message.find("支持模型 ")? + "支持模型 ".len()..)?;
let model = rest.get(..rest.find("")?)?.trim();
(!model.is_empty()).then_some(model)
}
fn strip_parenthesized_reason_code(message: &str) -> String {
let Some(reason_index) = message.find("原因代码") else {
return message.to_string();
@@ -1026,6 +1060,12 @@ mod tests {
),
"请求缺少 model 字段,无法选择上游提供商"
);
assert_eq!(
beautify_local_execution_client_error_message(
"找到 1 个支持模型 gpt-5.4 的候选提供商但本次流式请求全部不可用provider_quota_blocked 2 次(原因代码: all_candidates_skipped",
),
"没有可用提供商支持模型 gpt-5.4 的流式请求"
);
}
#[test]