|
@@ -1156,11 +1156,13 @@ async function processAudioGeneration(
|
|
|
const getInitialNode = (): ProviderNode<ITtsProvider> => {
|
|
const getInitialNode = (): ProviderNode<ITtsProvider> => {
|
|
|
if (preferredName) {
|
|
if (preferredName) {
|
|
|
const pref = registry.get(preferredName);
|
|
const pref = registry.get(preferredName);
|
|
|
- // 诊断 #tts-provider-select: 记录为什么 preferred 被接受/拒绝
|
|
|
|
|
- console.log(`🎯 [TTS Provider] preferred=${preferredName}, found=${!!pref}, enabled=${pref?.enabled}, breakerOpen=${pref?.breaker.isOpen()}, exhausted=${(pref as any)?.exhausted}`);
|
|
|
|
|
|
|
+ // 检查 enabled + breaker + exhausted(之前漏了 exhausted,会误选已耗尽的 provider)
|
|
|
if (pref && pref.enabled && !pref.breaker.isOpen() && !(pref as any).exhausted) return pref;
|
|
if (pref && pref.enabled && !pref.breaker.isOpen() && !(pref as any).exhausted) return pref;
|
|
|
const next = registry.getNextAvailable(preferredName);
|
|
const next = registry.getNextAvailable(preferredName);
|
|
|
- if (next) { console.log(`🎯 [TTS Provider] preferred 不可用,回退到 ${next.provider.name}`); return next; }
|
|
|
|
|
|
|
+ if (next) {
|
|
|
|
|
+ console.log(`[TTS Provider] ${preferredName} 不可用,回退到 ${next.provider.name}`);
|
|
|
|
|
+ return next;
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
const primary = registry.getPrimary();
|
|
const primary = registry.getPrimary();
|
|
|
if (!primary) throw new Error('没有可用的 TTS Provider');
|
|
if (!primary) throw new Error('没有可用的 TTS Provider');
|