fix: 自由创作分类入库区分视频与图片展示

This commit is contained in:
hh
2026-07-07 18:39:01 +08:00
parent 45ff7838d8
commit ff723b4281
7 changed files with 228 additions and 22 deletions
+58 -1
View File
@@ -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。