Merge pull request #635 from zouzhe1/fix/mimo-asr-credential-gate
fix(asr): validate MiMo credentials as ASR provider
This commit is contained in:
2 files changed
+45
-15
No files matched your search
@@ -8,6 +8,25 @@
|
||||
|
||||
use super::*;
|
||||
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
||||
pub(crate) enum CloudAsrCredentialRequirement {
|
||||
AsrApiKey,
|
||||
Volcengine,
|
||||
}
|
||||
|
||||
pub(crate) fn cloud_asr_credential_requirement(
|
||||
active_asr: &str,
|
||||
) -> CloudAsrCredentialRequirement {
|
||||
if is_whisper_compatible_provider(active_asr)
|
||||
|| is_bailian_provider(active_asr)
|
||||
|| is_mimo_provider(active_asr)
|
||||
{
|
||||
CloudAsrCredentialRequirement::AsrApiKey
|
||||
} else {
|
||||
CloudAsrCredentialRequirement::Volcengine
|
||||
}
|
||||
}
|
||||
|
||||
pub(crate) fn ensure_microphone_permission(_inner: &Arc<Inner>) -> Result<(), String> {
|
||||
use crate::permissions::{self, PermissionStatus};
|
||||
|
||||
@@ -78,22 +97,25 @@ pub(crate) fn ensure_asr_credentials() -> Result<(), String> {
|
||||
}
|
||||
}
|
||||
|
||||
if is_whisper_compatible_provider(&active_asr) || is_bailian_provider(&active_asr) {
|
||||
let api_key = CredentialsVault::get(CredentialAccount::AsrApiKey)
|
||||
.ok()
|
||||
.flatten()
|
||||
.unwrap_or_default();
|
||||
if api_key.trim().is_empty() {
|
||||
return Err("请先在设置中填写 ASR 服务商 API Key".to_string());
|
||||
match cloud_asr_credential_requirement(&active_asr) {
|
||||
CloudAsrCredentialRequirement::AsrApiKey => {
|
||||
let api_key = CredentialsVault::get(CredentialAccount::AsrApiKey)
|
||||
.ok()
|
||||
.flatten()
|
||||
.unwrap_or_default();
|
||||
if api_key.trim().is_empty() {
|
||||
return Err("请先在设置中填写 ASR 服务商 API Key".to_string());
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
CloudAsrCredentialRequirement::Volcengine => {
|
||||
let creds = read_volc_credentials();
|
||||
if creds.app_id.trim().is_empty() || creds.access_token.trim().is_empty() {
|
||||
Err("请先在设置中填写火山引擎 ASR App Key 和 Access Key".to_string())
|
||||
} else {
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
return Ok(());
|
||||
}
|
||||
|
||||
let creds = read_volc_credentials();
|
||||
if creds.app_id.trim().is_empty() || creds.access_token.trim().is_empty() {
|
||||
Err("请先在设置中填写火山引擎 ASR App Key 和 Access Key".to_string())
|
||||
} else {
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -211,6 +211,14 @@ fn windows_local_providers_are_keyless_and_not_whisper_compatible() {
|
||||
));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn credential_gate_classifies_mimo_as_api_key_asr_provider() {
|
||||
assert_eq!(
|
||||
cloud_asr_credential_requirement(crate::asr::mimo::PROVIDER_ID),
|
||||
CloudAsrCredentialRequirement::AsrApiKey
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn verbose_json_enabled_only_for_whisper_family() {
|
||||
// verbose_json + 幻听过滤只对返回完整 Whisper 指标的 provider 开启。
|
||||
|
||||
Reference in new issue
Block a user