fix: 修复任务3.09审计问题 P1-1+P2-1~P2-4 #174

Merged
xiaoxia merged 1 commits from feature/fix-309-audit-issues into develop 2026-07-02 17:13:30 +08:00
Owner

修复内容

P1-1(阻塞性):TTS 合成完整异步链路

  • CosyVoiceService 新增 submit/poll 方法
  • TTSWorkflowService 编排层
  • Celery 任务 process_tts_synthesis
  • 路由层调度触发

P2-1:Celery 重试策略注释

  • voice_clone.py 添加详细注释(max_retries/countdown/Retry 异常处理)

P2-2:Session 泄漏修复

  • session=None 安全模式 + finally 判空 close

P2-3:消除重复 count_by_user() 调用

  • ListVoiceLibraryUseCase 返回 (items, count) 元组

P2-4:填充 voice_clone_profile_id

  • 新增 find_profile_ids_by_voice_ids() 批量方法

测试

749 passed, 0 failed

## 修复内容 ### P1-1(阻塞性):TTS 合成完整异步链路 - CosyVoiceService 新增 submit/poll 方法 - TTSWorkflowService 编排层 - Celery 任务 process_tts_synthesis - 路由层调度触发 ### P2-1:Celery 重试策略注释 - voice_clone.py 添加详细注释(max_retries/countdown/Retry 异常处理) ### P2-2:Session 泄漏修复 - session=None 安全模式 + finally 判空 close ### P2-3:消除重复 count_by_user() 调用 - ListVoiceLibraryUseCase 返回 (items, count) 元组 ### P2-4:填充 voice_clone_profile_id - 新增 find_profile_ids_by_voice_ids() 批量方法 ## 测试 749 passed, 0 failed
xiaoxia added 1 commit 2026-07-02 17:01:24 +08:00
fix: 3.09 审计问题修复 — P1-1 TTS Celery 执行器 + P2-1~P2-4
Deploy / Build Production Runtime Images (push) Has been skipped
Deploy / Deploy Production (push) Has been skipped
Deploy / Production Browser E2E (push) Has been skipped
CI/CD Pipeline / Frontend Lint (pull_request) Failing after 163h53m1s
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Failing after 163h53m6s
Deploy / Deploy Staging (push) Failing after 164h23m43s
CI/CD Pipeline / Frontend Lint (push) Failing after 164h23m43s
CI/CD Pipeline / Validate Code Quality And Tests (push) Failing after 164h23m50s
e539105256
P1-1 (阻塞性): TTS 合成完整异步链路
- CosyVoiceService 新增 submit_synthesize_task() + poll_synthesize_task()
- 新建 TTSWorkflowService 编排层 (packages/application/tts_job/workflow.py)
- 新建 Celery 任务 process_tts_synthesis (apps/worker/worker_app/tasks/tts_synthesis.py)
- 注册到 celery_app.conf.imports + tasks/__init__.py 懒加载
- TTS 路由 synthesize() 增加 CosyVoice 提交 + Celery 调度

P2-1: voice_clone.py 添加详细 Celery 重试策略注释
P2-2: 修复 voice_clone.py Session 泄漏 (session=None 安全模式)
P2-3: ListVoiceLibraryUseCase 返回 (items, count) 元组,消除重复 count_by_user()
P2-4: 新增 find_profile_ids_by_voice_ids() 批量方法,填充 voice_clone_profile_id

测试: 749 passed, 0 failed
Author
Owner

🟡 有条件通过 — 任务 3.09 审计修复验证

审查范围:12 文件(2 新增 +10 修改),+544/-38 行

修复验证(5/5 全部通过)

问题 修复方式 验证
P1-1 TTS 合成无执行器 新增完整异步链路:CosyVoiceService → TTSWorkflowService → Celery task → 路由调度 链路完整,支持同步/异步双模式,Celery 调度失败有 fallback
P2-1 重试策略缺注释 voice_clone.py 每个 except 块添加详细策略说明 注释清晰(临时性 vs 永久性故障区分)
P2-2 Session 泄漏 session = None + finally: if session is not None: session.close() 两个 Celery task 均已修复
P2-3 重复 count_by_user UseCase.execute() 返回 (items, total) 元组 路由层不再重复查询
P2-4 profile_id 未填充 新增 find_profile_ids_by_voice_ids() 批量方法 统一配音列表正确填充

📝 新发现 P3(不阻塞合并)

  • P3-1tts_synthesis.py L73-98 — CosyVoiceError 和 Exception 块的 mark_failed 逻辑重复(~10行×2),可抽取辅助函数
  • P3-2submit_synthesize_task()format 参数遮蔽 Python 内置函数(建议重命名为 output_format
  • P3-3find_profile_ids_by_voice_ids() 当多 profile 对应同一 voice_id 时静默覆盖,建议加注释说明假设

💡 架构评价

TTS 异步链路的设计比音色克隆更成熟:

  • Workflow 不碰 Session(只管编排),Celery task 只管 Session 管理 — 职责分离清晰
  • 支持同步返回(直接 audio_url)和异步轮询(task_id + poll)双模式
  • Celery 调度失败有 fallback(标记 job failed),不会留下 pending 死状态

建议:可合并。P3 问题可在后续 PR 中处理。

📄 审计报告:/docs/audit/task309-pr174-audit-report.md

## 🟡 有条件通过 — 任务 3.09 审计修复验证 **审查范围**:12 文件(2 新增 +10 修改),+544/-38 行 ### ✅ 修复验证(5/5 全部通过) | 问题 | 修复方式 | 验证 | |------|----------|------| | **P1-1** TTS 合成无执行器 | 新增完整异步链路:CosyVoiceService → TTSWorkflowService → Celery task → 路由调度 | ✅ 链路完整,支持同步/异步双模式,Celery 调度失败有 fallback | | **P2-1** 重试策略缺注释 | voice_clone.py 每个 except 块添加详细策略说明 | ✅ 注释清晰(临时性 vs 永久性故障区分) | | **P2-2** Session 泄漏 | `session = None` + `finally: if session is not None: session.close()` | ✅ 两个 Celery task 均已修复 | | **P2-3** 重复 count_by_user | UseCase.execute() 返回 (items, total) 元组 | ✅ 路由层不再重复查询 | | **P2-4** profile_id 未填充 | 新增 find_profile_ids_by_voice_ids() 批量方法 | ✅ 统一配音列表正确填充 | ### 📝 新发现 P3(不阻塞合并) - **P3-1**:`tts_synthesis.py` L73-98 — CosyVoiceError 和 Exception 块的 mark_failed 逻辑重复(~10行×2),可抽取辅助函数 - **P3-2**:`submit_synthesize_task()` 的 `format` 参数遮蔽 Python 内置函数(建议重命名为 `output_format`) - **P3-3**:`find_profile_ids_by_voice_ids()` 当多 profile 对应同一 voice_id 时静默覆盖,建议加注释说明假设 ### 💡 架构评价 TTS 异步链路的设计比音色克隆更成熟: - Workflow 不碰 Session(只管编排),Celery task 只管 Session 管理 — 职责分离清晰 - 支持同步返回(直接 audio_url)和异步轮询(task_id + poll)双模式 - Celery 调度失败有 fallback(标记 job failed),不会留下 pending 死状态 **建议**:可合并。P3 问题可在后续 PR 中处理。 📄 审计报告:`/docs/audit/task309-pr174-audit-report.md`
xiaoxia merged commit 8395f2a219 into develop 2026-07-02 17:13:30 +08:00
Author
Owner

审查通过,已合并。merge_commit: 8395f2a

✅ 审查通过,已合并。merge_commit: 8395f2a
Sign in to join this conversation.