feat: CosyVoice 配置 + VoiceCloneProfile/TTSJob 领域模型 (task 3.01-3.03) #161
Reference in New Issue
Block a user
Delete Branch "feature/cosyvoice-config-models"
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?
阶段 3 CosyVoice 集成 - 任务 3.01-3.03
3.01 CosyVoice 配置
3.02 VoiceCloneProfile 领域模型
3.03 TTSJob 领域模型
测试
PR #161 代码审计报告
分支: feature/cosyvoice-config-models → develop
提交:
f7c8b44变更: 9 文件,+1343 / -0
结论: ✅ 有条件通过(无 P0/P1,3 P2 + 5 P3,不阻塞合并)
审查范围
packages/shared/config.py.env.example.env.production.examplepackages/domain/voice_clone_profile.pypackages/domain/tts_job.pypackages/ports/voice_clone_profile_repository.pypackages/ports/tts_job_repository.pytests/unit/test_voice_clone_profile.pytests/unit/test_tts_job.py审查结论
1. Hexagonal 架构 ✅ 优秀
Protocol定义仓储接口,标准 Python 鸭子类型2. 状态机设计 ✅ 严谨
PENDING → PROCESSING → READY/FAILED → DISABLED,支持FAILED → PENDING重试PENDING → PROCESSING → COMPLETED/FAILED → CANCELLED,支持FAILED → PENDING重试_VALID_TRANSITIONS白名单控制,非法转换抛 ValueErrormark_*方法封装了转换 + 副作用(清除错误、设置时间戳等)3. 配置安全性 ✅ 合理
.env.example使用占位符your-cosyvoice-api-key.env.production.example使用CHANGE_ME_*前缀,提示明确4. 测试覆盖 ✅ 充分
问题清单
P2(建议修复,不阻塞合并)
max_retries未校验负值if max_retries < 0: raise ValueErrorsample_rate未校验正整数if sample_rate <= 0: raise ValueErrorformat参数遮蔽 Python 内置函数名output_format或audio_formatP3(可忽略)
packages/shared/metadata: dict缺少类型参数,应为dict[str, Any]source_audio_url未校验 URL 格式list_by_project查询方法,后续大概率需要TERMINAL_STATUSES包含 FAILED,但 FAILED 可重试回 PENDING —— "终态" 语义不严格(建议改名为FINAL_STATUSES或文档说明)亮点
结论
✅ 有条件通过 — 无 P0/P1,代码质量优秀,符合 Hexagonal 架构规范。3 个 P2 建议下一轮修复,不阻塞合并。Mergeable=True,可直接合并。