测试极速成片

This commit is contained in:
Azmat@qq.com
2026-08-26 15:18:18 +08:00
parent 245525ec53
commit 0ee498d807
30 changed files with 1963 additions and 367 deletions
+46 -5
View File
@@ -1,5 +1,6 @@
import json
from pathlib import Path
from types import SimpleNamespace
from django.conf import settings
from django.test import SimpleTestCase
@@ -1544,6 +1545,7 @@ class StandaloneCategoryTests(TestCase):
)
@override_settings(CACHES={"default": {"BACKEND": "django.core.cache.backends.locmem.LocMemCache"}})
class TriviewModelDecouplingTests(TestCase):
"""项目角色三视图只归项目,不自动创建或更新团队模特。"""
@@ -1606,9 +1608,9 @@ class TriviewModelDecouplingTests(TestCase):
model.refresh_from_db()
self.assertEqual(model.triview_asset_id, existing_tri.id)
@patch("apps.ai.services.generate_person_triview")
def test_person_base_asset_ignores_legacy_auto_triview_flag(self, kickoff_triview):
"""即使旧前端/旧任务传 auto_triview=True,角色立绘完成后也不能自动接力三视图"""
@patch("apps.ai.tasks.generate_base_asset_task.delay")
def test_person_base_asset_marks_auto_triview_for_worker(self, _enqueue_base_asset):
"""角色立绘任务需标记自动接力三视图,实际接力只在立绘成功落库后发生"""
from apps.ai.services import generate_base_asset
from apps.projects.models import BaseAssetGroup
@@ -1633,8 +1635,47 @@ class TriviewModelDecouplingTests(TestCase):
)
task.refresh_from_db()
self.assertFalse(task.request_payload.get("auto_triview"))
kickoff_triview.assert_not_called()
self.assertTrue(task.request_payload.get("auto_triview"))
@patch("apps.assets.review.submit_asset_for_review")
@patch("apps.ai.services.generate_person_triview")
@patch("apps.ai.services._store_generated_media")
@patch("apps.ai.services.execute_routed_image_request")
@patch("apps.ai.tasks.generate_base_asset_task.delay")
def test_completed_auto_person_generation_queues_triview(
self, _enqueue_base_asset, routed, store_media, kickoff_triview, _review
):
"""角色立绘成功落库后,worker 必须自动创建绑定该立绘的三视图任务。"""
from apps.ai.services import generate_base_asset, run_base_asset_task
from apps.projects.models import BaseAssetGroup
ModelConfig.objects.create(
provider=ModelProvider.objects.create(name="auto-tri-success-provider", display_name="Auto Tri Success Provider"),
name="auto-tri-success-img",
display_name="Auto Tri Success Img",
capability=ModelConfig.Capability.IMAGE,
endpoint="images/generations",
unit_price="1.0000",
is_default=True,
)
routed.return_value = SimpleNamespace(value=({"data": [{"url": "http://x/person.png"}]}, "http://x/person.png"))
store_media.return_value = self.portrait
task = generate_base_asset(
project=self.project,
user=self.user,
kind=BaseAssetGroup.Kind.PERSON,
prompt="项目角色立绘",
label="女主",
# 专业模式显式要求时才接力三视图;极速成片传 False 会跳过。
auto_triview=True,
)
with self.captureOnCommitCallbacks(execute=True):
run_base_asset_task(task_id=str(task.id))
kickoff_triview.assert_called_once_with(
project=self.project, user=self.user, portrait_asset=self.portrait
)
class ModelLibraryTriviewTaskTests(TestCase):