fix: 自由创作分类入库区分视频与图片展示
This commit is contained in:
@@ -178,7 +178,7 @@ from django.test import TestCase
|
||||
from rest_framework.test import APIClient
|
||||
|
||||
from apps.accounts.models import Team, TeamMember, User
|
||||
from apps.ai.models import AITask, ImageConversation, ModelConfig
|
||||
from apps.ai.models import AITask, ImageConversation, ModelConfig, ModelProvider
|
||||
from apps.ai.providers.volcano import VolcanoArkProvider
|
||||
from apps.ai.services import enqueue_standalone_images
|
||||
from apps.assets.models import Asset, AssetFile
|
||||
@@ -186,6 +186,63 @@ from apps.billing.models import CreditAccount
|
||||
from apps.products.models import Product
|
||||
|
||||
|
||||
class FreeVideoAssetDeletionTests(TestCase):
|
||||
"""自由创作视频资产删除后,任务流应降级为无可播成品,不能回退到旧 fallback URL。"""
|
||||
|
||||
def setUp(self):
|
||||
self.user = User.objects.create_user(username="fvdel", password="pass")
|
||||
self.team = Team.objects.create(name="FreeVideoDel", owner=self.user)
|
||||
TeamMember.objects.create(team=self.team, user=self.user, role="owner", status="active")
|
||||
provider = ModelProvider.objects.create(name="fv-provider", display_name="FV Provider")
|
||||
self.model = ModelConfig.objects.create(
|
||||
provider=provider,
|
||||
name="fv-model",
|
||||
display_name="FV Model",
|
||||
capability=ModelConfig.Capability.VIDEO,
|
||||
)
|
||||
self.task = AITask.objects.create(
|
||||
team=self.team,
|
||||
created_by=self.user,
|
||||
task_type=AITask.Type.FREE_VIDEO,
|
||||
status=AITask.Status.SUCCEEDED,
|
||||
model_config=self.model,
|
||||
idempotency_key="free-video-delete-test",
|
||||
request_payload={
|
||||
"prompt": "生成一个广告视频",
|
||||
"fallback_video_url": "http://fallback.example/video.mp4",
|
||||
"fallback_note": "fallback",
|
||||
},
|
||||
)
|
||||
self.asset = Asset.objects.create(
|
||||
team=self.team,
|
||||
created_by=self.user,
|
||||
name="自由创作视频",
|
||||
asset_type=Asset.Type.VIDEO,
|
||||
source=Asset.Source.AI_GENERATED,
|
||||
category=Asset.Category.FREE_CREATE,
|
||||
origin_task=self.task,
|
||||
)
|
||||
AssetFile.objects.create(
|
||||
asset=self.asset,
|
||||
object_key="free-video.mp4",
|
||||
bucket="b",
|
||||
content_type="video/mp4",
|
||||
preview_url="http://tos.example/video.mp4",
|
||||
is_primary=True,
|
||||
)
|
||||
|
||||
def test_deleted_persisted_asset_does_not_fall_back_to_raw_video_url(self):
|
||||
from apps.ai.free_video import serialize_free_video_task
|
||||
|
||||
self.assertEqual(serialize_free_video_task(self.task)["video_url"], "http://tos.example/video.mp4")
|
||||
self.asset.is_deleted = True
|
||||
self.asset.save(update_fields=["is_deleted"])
|
||||
task = AITask.objects.prefetch_related("generated_assets", "generated_assets__files").get(id=self.task.id)
|
||||
data = serialize_free_video_task(task)
|
||||
self.assertEqual(data["video_url"], "")
|
||||
self.assertEqual(data["fallback_note"], "fallback")
|
||||
|
||||
|
||||
class StandaloneImageReferenceTests(TestCase):
|
||||
"""独立生图(平台套图 / 模特上身图)必须把商品真实主图(+ 模特图)作为参考图走 image_edit,
|
||||
而不是纯文生图——回归保护 #图片生成没参考商品主图# 这个 bug。
|
||||
|
||||
Reference in New Issue
Block a user