Explorar el Código

fix: build 自动拷贝 models.json 到 dist + 清理诊断日志

根因2(更隐蔽): 生产 dist/config/models.json 是旧版,defaultVendor=edge,
导致所有 TTS 任务首选 edge-tts 而非 bailian/cosyvoice. tsc 不拷贝 json,
旧部署只手动 cp 过一次就再没更新过.
改 build = tsc + 自动拷贝 models.json, 杜绝配置漂移.

保留 getInitialNode 的 exhausted 检查(真修复),移除临时诊断日志.
MyFramework User hace 2 meses
padre
commit
abefc36d22
Se han modificado 2 ficheros con 6 adiciones y 4 borrados
  1. 1 1
      server/package.json
  2. 5 3
      server/src/modules/tts/tts.service.ts

+ 1 - 1
server/package.json

@@ -5,7 +5,7 @@
   "main": "dist/app.js",
   "scripts": {
     "dev": "tsx watch src/app.ts",
-    "build": "tsc",
+    "build": "tsc && node -e \"require('fs').copyFileSync('src/config/models.json','dist/config/models.json')\"",
     "start": "node dist/app.js",
     "test:unit": "vitest run --config vitest.config.mts",
     "test:unit:watch": "vitest --config vitest.config.mts",

+ 5 - 3
server/src/modules/tts/tts.service.ts

@@ -1156,11 +1156,13 @@ async function processAudioGeneration(
   const getInitialNode = (): ProviderNode<ITtsProvider> => {
     if (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;
       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();
     if (!primary) throw new Error('没有可用的 TTS Provider');