Files
Volcano-Engine-TTS-UI/controller
sun a655f8ae0e fix(tts): voice.enabled=0 真生效,返回 403 voice_disabled
Bug: admin UI 切换"启用/禁用"toggle → DB 字段更新 ✓,
但 controller/tts.go 路由时不查 enabled, 关掉的 voice 仍能正常调通。
admin 关闭形同虚设。

修法: 在 voice 查库命中后, 立即检查 v.Enabled:
  - enabled=1 → 走原流程
  - enabled=0 → 立即 403, 错误码 voice_disabled

Body 格式(对齐 OpenAI error 规范):
  {
    "error": {
      "code": "voice_disabled",
      "message": "voice 'chun' is disabled",
      "type": "invalid_request_error"
    }
  }

为什么 403 (vs 400 / 410):
- 400: 客户端发错 — 不准, voice 存在, 只是被关
- 410: 资源 gone — 不准, 不是永久弃用, 可能再开
- 403: 资源存在但无权用 — 准确, admin 关 = 拒绝调用
  (OpenAI 其他端点对禁用资源用 403, 这是惯例)

e2e (本机):
- TEST 1: voice=chun, enabled=1 → 500 (volcano 假 key 401, 路由通了)
- TEST 2: voice=chun, enabled=0 → 403 voice_disabled ✓
- TEST 3: voice=ghost, 不存在 → 400 unknown_voice (原有行为不变)

副作用:
- 没有任何 admin 路径失败 (admin 改 enabled 字段直接生效, 无需 reload)
- metrics 没加新 label (后续可加 voice_disabled 计数, 留给 M4)

未 push (待用户)
2026-08-30 19:25:05 +08:00
..