feat(#1195): 新增克隆音色试听接口 /voice-clones/{id}/preview #1201
Reference in New Issue
Block a user
Delete Branch "feat/voice-clone-preview-1195"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
功能
GET /api/v1/voice-clones/{clone_id}/preview端点变更
测试
本地10个单测全绿,覆盖:
- 新增 GET /voice-clones/{clone_id}/preview 端点 - 支持默认试听文本(缓存7天)和自定义文本 - 状态校验:仅 ready 状态可试听 - 10 个单元测试覆盖成功/失败/缓存/权限等场景🚀 预览环境已部署
52ead68415tod6dfb48687代码审查结果 - PR #1201
⚠️ 问题(2个需要修改)
if clone_id in _clone_preview_cache)和写入缓存(_clone_preview_cache[clone_id] = ...)之间存在时间窗口。由于synthesize_speech是耗时操作,在多线程/并发环境下,多个请求可能同时通过缓存检查,导致对同一个clone_id重复调用昂贵的 TTS 接口,造成资源浪费和计费异常。_clone_preview_cache为全局字典,仅在读操作时检查 TTL,从未有过期清理机制。随着时间推移,如果clone_id不断增长或产生大量废弃 ID,该字典将无限膨胀,导致服务内存溢出(OOM)。💡 建议(2个可选)
text参数的长度校验。text传递给下游 TTS 服务。如果用户传入超长文本,可能导致请求耗时过长或费用异常。建议限制最大长度(如 500 字符)。100644变更为100755。Python 脚本通常不需要可执行权限,这不符合安全最佳实践和 Git 规范。✅ 格式检查通过 | ❌ 逻辑审查审查需修改 | ⚠️ 建议关注性能
🤖 由 AI 代码审查机器人自动生成 | 2026-07-30 06:38:12 | 模型:
🗑️ 预览环境已清理
PR #1201 已关闭或合并,对应的预览环境已被清理。