Compare commits

...

2 Commits

Author SHA1 Message Date
SaaS Frontend 14dd354a4c fix: 预览视频不创建成片库记录,仅上传 OSS
- _upload_and_record 新增 is_preview 参数
- 预览模式跳过 create_video_record_and_dedup,video_count=0
- generate_video 调用时传入 task_info 的 is_preview 标志
- 修复预览视频出现在成片库的问题
- 关联 Issue #1294
2026-08-08 17:22:54 +08:00
SaaS Frontend 1a74548c6b fix: 预览模式下有 voice_id 时初始化 ASR 以支持配音
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 42s
CI/CD Pipeline / Frontend Lint (pull_request) Has been skipped
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 45s
CI/CD Pipeline / PR Build Web Image (pull_request) Has been skipped
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 1m0s
AI Code Review / AI Code Review (pull_request) Successful in 1m15s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m15s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m44s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 1m51s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 1m51s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 2m6s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m29s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 4m8s
CI/CD Pipeline / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / Canary Release to Production (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Integration Tests (pull_request) Successful in 1m20s
CI/CD Pipeline / CI Gate (pull_request) Successful in 6s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Successful in 46s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 48s
- 修复 render_adapter.py 第508行预览模式无条件跳过 ASR 初始化的问题
- 当 plan.config 中存在 voice_id 时,即使预览模式也初始化 ASR
- 确保配音触发条件(unified_render_service.py:682)能正常执行 TTS
- 关联 Issue #1294
2026-08-08 17:10:06 +08:00
2 changed files with 20 additions and 4 deletions
+5 -3
View File
@@ -504,11 +504,13 @@ class RenderAdapter:
self._report_progress(progress_cb, 40.0, "执行视频渲染")
# 2. 初始化 ASR(预览模式跳过,节省启动开销)
asr_service = None if is_preview else self._get_asr_service()
# 2. 初始化 ASR
# 预览模式下,如果 plan.config 中存在 voice_id,仍需初始化 ASR 以支持配音
plan_config = plan.config or {}
has_voice_id = bool(plan_config.get("voice_id"))
asr_service = None if (is_preview and not has_voice_id) else self._get_asr_service()
# 3. 读取输出分辨率
plan_config = plan.config or {}
export_config = plan_config.get("export", {}) or {}
output_width, output_height = _parse_resolution(export_config.get("resolution"))
logger.info(
+15 -1
View File
@@ -1250,9 +1250,13 @@ def _upload_and_record(
editing_mode,
user_id: str = "",
video_name: str = "",
is_preview: bool = False,
) -> tuple[str, float, int, int]:
"""上传 OSS、创建视频记录并查重。
Args:
is_preview: 是否为预览生成。预览模式只上传 OSS,不创建成片库记录。
Returns:
(file_url, duration, file_size, video_count)
"""
@@ -1290,7 +1294,16 @@ def _upload_and_record(
file_url,
)
# 创建 GeneratedVideo 记录 + 查重
# 预览模式:只上传 OSS,不创建成片库记录
if is_preview:
logger.info(
"[task_id=%s] [预览模式] 跳过成片库记录创建,仅上传 OSS",
task_id,
)
duration = probe_duration(output_path)
return file_url, duration, file_size, 0
# 创建 GeneratedVideo 记录 + 查重(正式生成模式)
duration = probe_duration(output_path)
dedup_session = SessionLocal()
try:
@@ -1463,6 +1476,7 @@ def generate_video(self, task_id: str) -> dict:
editing_mode=editing_mode,
user_id=user_id,
video_name=task_info.get("video_title", ""),
is_preview=task_info.get("is_preview", False),
)
if gen_task: