测试极速成片
This commit is contained in:
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user