From 71c606e82eb0b8611c44ca5d549a609df09b200d Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Tue, 4 Aug 2026 01:18:57 +0800 Subject: [PATCH 1/3] fix: use repo.get(template_id, user_id) instead of repo.get_by_id --- apps/api/app/api/routes/generation_preview.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/apps/api/app/api/routes/generation_preview.py b/apps/api/app/api/routes/generation_preview.py index 0ea4d7edf..db4390203 100755 --- a/apps/api/app/api/routes/generation_preview.py +++ b/apps/api/app/api/routes/generation_preview.py @@ -67,7 +67,9 @@ def _calc_preview_resolution(video_ratio: str = "") -> str: return ratio_map.get(video_ratio.strip(), PREVIEW_RESOLUTION) -def _infer_video_ratio_from_template(template_id: str, db: Session) -> str: +def _infer_video_ratio_from_template( + template_id: str, db: Session, user_id: str = "" +) -> str: """从模板 mode 推断视频比例,前端未传 video_ratio 时使用。 Returns: @@ -77,7 +79,7 @@ def _infer_video_ratio_from_template(template_id: str, db: Session) -> str: return "" try: repo = SQLAlchemyTemplateRepository(db) - template = repo.get_by_id(template_id) + template = repo.get(template_id, user_id) if template: mode = getattr(template, "mode", "") or "" ratio = _TEMPLATE_MODE_TO_RATIO.get(mode.strip(), "") @@ -230,7 +232,7 @@ def create_preview_generation_task( # 确定视频比例:优先前端传入,否则从模板 mode 推断 video_ratio = request.video_ratio or "" if not video_ratio and request.template_id: - video_ratio = _infer_video_ratio_from_template(request.template_id, db) + video_ratio = _infer_video_ratio_from_template(request.template_id, db, user_id) use_case = CreateGenerationTaskUseCase(generation_task_repository) -- 2.54.0 From 4c0925391537bca549ac031d8ec24e83b23bd7bf Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Tue, 4 Aug 2026 01:18:58 +0800 Subject: [PATCH 2/3] fix: update tests for repo.get() signature + add user_id param --- tests/unit/test_generation_preview.py | 50 +++++++++++++++++---------- 1 file changed, 32 insertions(+), 18 deletions(-) diff --git a/tests/unit/test_generation_preview.py b/tests/unit/test_generation_preview.py index 11b584146..fa64cf48f 100755 --- a/tests/unit/test_generation_preview.py +++ b/tests/unit/test_generation_preview.py @@ -1173,9 +1173,11 @@ class TestInferVideoRatioFromTemplate: mock_template.mode = "pip" mock_db = MagicMock() - with patch("app.api.routes.generation_preview.SQLAlchemyTemplateRepository") as MockRepo: - MockRepo.return_value.get_by_id.return_value = mock_template - result = _infer_video_ratio_from_template("tpl_001", mock_db) + with patch( + "app.api.routes.generation_preview.SQLAlchemyTemplateRepository" + ) as MockRepo: + MockRepo.return_value.get.return_value = mock_template + result = _infer_video_ratio_from_template("tpl_001", mock_db, "user_1") assert result == "9:16" def test_standard_mode_returns_16_9(self): @@ -1186,9 +1188,11 @@ class TestInferVideoRatioFromTemplate: mock_template.mode = "standard" mock_db = MagicMock() - with patch("app.api.routes.generation_preview.SQLAlchemyTemplateRepository") as MockRepo: - MockRepo.return_value.get_by_id.return_value = mock_template - result = _infer_video_ratio_from_template("tpl_001", mock_db) + with patch( + "app.api.routes.generation_preview.SQLAlchemyTemplateRepository" + ) as MockRepo: + MockRepo.return_value.get.return_value = mock_template + result = _infer_video_ratio_from_template("tpl_001", mock_db, "user_1") assert result == "16:9" def test_unknown_mode_returns_empty(self): @@ -1199,9 +1203,11 @@ class TestInferVideoRatioFromTemplate: mock_template.mode = "unknown_mode" mock_db = MagicMock() - with patch("app.api.routes.generation_preview.SQLAlchemyTemplateRepository") as MockRepo: - MockRepo.return_value.get_by_id.return_value = mock_template - result = _infer_video_ratio_from_template("tpl_001", mock_db) + with patch( + "app.api.routes.generation_preview.SQLAlchemyTemplateRepository" + ) as MockRepo: + MockRepo.return_value.get.return_value = mock_template + result = _infer_video_ratio_from_template("tpl_001", mock_db, "user_1") assert result == "" def test_template_not_found_returns_empty(self): @@ -1210,9 +1216,11 @@ class TestInferVideoRatioFromTemplate: mock_db = MagicMock() - with patch("app.api.routes.generation_preview.SQLAlchemyTemplateRepository") as MockRepo: - MockRepo.return_value.get_by_id.return_value = None - result = _infer_video_ratio_from_template("nonexistent", mock_db) + with patch( + "app.api.routes.generation_preview.SQLAlchemyTemplateRepository" + ) as MockRepo: + MockRepo.return_value.get.return_value = None + result = _infer_video_ratio_from_template("nonexistent", mock_db, "user_1") assert result == "" def test_empty_template_id_returns_empty(self): @@ -1220,7 +1228,7 @@ class TestInferVideoRatioFromTemplate: from app.api.routes.generation_preview import _infer_video_ratio_from_template mock_db = MagicMock() - result = _infer_video_ratio_from_template("", mock_db) + result = _infer_video_ratio_from_template("", mock_db, "user_1") assert result == "" def test_db_exception_returns_empty(self): @@ -1229,9 +1237,11 @@ class TestInferVideoRatioFromTemplate: mock_db = MagicMock() - with patch("app.api.routes.generation_preview.SQLAlchemyTemplateRepository") as MockRepo: + with patch( + "app.api.routes.generation_preview.SQLAlchemyTemplateRepository" + ) as MockRepo: MockRepo.side_effect = Exception("db connection error") - result = _infer_video_ratio_from_template("tpl_001", mock_db) + result = _infer_video_ratio_from_template("tpl_001", mock_db, "user_1") assert result == "" @@ -1264,9 +1274,13 @@ class TestPreviewRouteAutoInfersVideoRatio: bgm_config={}, ) - with patch("app.api.routes.generation_preview.SQLAlchemyTemplateRepository") as MockRepo: - MockRepo.return_value.get_by_id.return_value = mock_template - with patch("app.api.routes.generation_preview.CreateGenerationTaskUseCase") as MockUC: + with patch( + "app.api.routes.generation_preview.SQLAlchemyTemplateRepository" + ) as MockRepo: + MockRepo.return_value.get.return_value = mock_template + with patch( + "app.api.routes.generation_preview.CreateGenerationTaskUseCase" + ) as MockUC: MockUC.return_value.execute.return_value = task with patch( "app.api.routes.generation_preview.safe_enqueue_generation_task", -- 2.54.0 From 51e068beebe8383d000f362b8d32d7c543f266d2 Mon Sep 17 00:00:00 2001 From: CI Bot Date: Mon, 3 Aug 2026 17:25:48 +0000 Subject: [PATCH 3/3] style: auto-format with black + isort + prettier [skip ci-format-check] --- tests/unit/test_generation_preview.py | 28 +++++++-------------------- 1 file changed, 7 insertions(+), 21 deletions(-) diff --git a/tests/unit/test_generation_preview.py b/tests/unit/test_generation_preview.py index fa64cf48f..b23c6499c 100755 --- a/tests/unit/test_generation_preview.py +++ b/tests/unit/test_generation_preview.py @@ -1173,9 +1173,7 @@ class TestInferVideoRatioFromTemplate: mock_template.mode = "pip" mock_db = MagicMock() - with patch( - "app.api.routes.generation_preview.SQLAlchemyTemplateRepository" - ) as MockRepo: + with patch("app.api.routes.generation_preview.SQLAlchemyTemplateRepository") as MockRepo: MockRepo.return_value.get.return_value = mock_template result = _infer_video_ratio_from_template("tpl_001", mock_db, "user_1") assert result == "9:16" @@ -1188,9 +1186,7 @@ class TestInferVideoRatioFromTemplate: mock_template.mode = "standard" mock_db = MagicMock() - with patch( - "app.api.routes.generation_preview.SQLAlchemyTemplateRepository" - ) as MockRepo: + with patch("app.api.routes.generation_preview.SQLAlchemyTemplateRepository") as MockRepo: MockRepo.return_value.get.return_value = mock_template result = _infer_video_ratio_from_template("tpl_001", mock_db, "user_1") assert result == "16:9" @@ -1203,9 +1199,7 @@ class TestInferVideoRatioFromTemplate: mock_template.mode = "unknown_mode" mock_db = MagicMock() - with patch( - "app.api.routes.generation_preview.SQLAlchemyTemplateRepository" - ) as MockRepo: + with patch("app.api.routes.generation_preview.SQLAlchemyTemplateRepository") as MockRepo: MockRepo.return_value.get.return_value = mock_template result = _infer_video_ratio_from_template("tpl_001", mock_db, "user_1") assert result == "" @@ -1216,9 +1210,7 @@ class TestInferVideoRatioFromTemplate: mock_db = MagicMock() - with patch( - "app.api.routes.generation_preview.SQLAlchemyTemplateRepository" - ) as MockRepo: + with patch("app.api.routes.generation_preview.SQLAlchemyTemplateRepository") as MockRepo: MockRepo.return_value.get.return_value = None result = _infer_video_ratio_from_template("nonexistent", mock_db, "user_1") assert result == "" @@ -1237,9 +1229,7 @@ class TestInferVideoRatioFromTemplate: mock_db = MagicMock() - with patch( - "app.api.routes.generation_preview.SQLAlchemyTemplateRepository" - ) as MockRepo: + with patch("app.api.routes.generation_preview.SQLAlchemyTemplateRepository") as MockRepo: MockRepo.side_effect = Exception("db connection error") result = _infer_video_ratio_from_template("tpl_001", mock_db, "user_1") assert result == "" @@ -1274,13 +1264,9 @@ class TestPreviewRouteAutoInfersVideoRatio: bgm_config={}, ) - with patch( - "app.api.routes.generation_preview.SQLAlchemyTemplateRepository" - ) as MockRepo: + with patch("app.api.routes.generation_preview.SQLAlchemyTemplateRepository") as MockRepo: MockRepo.return_value.get.return_value = mock_template - with patch( - "app.api.routes.generation_preview.CreateGenerationTaskUseCase" - ) as MockUC: + with patch("app.api.routes.generation_preview.CreateGenerationTaskUseCase") as MockUC: MockUC.return_value.execute.return_value = task with patch( "app.api.routes.generation_preview.safe_enqueue_generation_task", -- 2.54.0