diff --git a/core/backend/apps/ai/services.py b/core/backend/apps/ai/services.py index 729c45d..439d105 100644 --- a/core/backend/apps/ai/services.py +++ b/core/backend/apps/ai/services.py @@ -2419,9 +2419,16 @@ def run_standalone_image_task(*, task_id: str) -> None: asset_id = uuid.uuid4() object_key = f"teams/{team.id}/standalone/{asset_id}{suffix}" stored = TosStorage().upload_fileobj(fileobj=fileobj, object_key=object_key, content_type=content_type) - asset_label = {"model": "模特上身图", "cover": "平台套图", "image": "图片创作"}.get(mode, mode) + # 商品三视图(reference_product):与视频项目基础资产阶段生成的商品三视图同款标记 —— + # category=product_image + 名字含「商品三视图」+ metadata.view=three_view + product_id。 + # 否则商品库自己生成的三视图认不出(无 view 标记),刷新即丢、视频项目第二步也读不到「商品已有三视图」(ZWQ#5 续)。 + is_product_triview = bool(payload.get("reference_product")) + asset_label = "商品三视图" if is_product_triview else {"model": "模特上身图", "cover": "平台套图", "image": "图片创作"}.get(mode, mode) + asset_category = Asset.Category.PRODUCT_IMAGE if is_product_triview else category # 资产元数据:product_id(商品详情页据此只展示该商品素材)+ batch_id(成组)+ mode + model_entity_id(上身图溯源模特库) asset_meta: dict = {"mode": mode} + if is_product_triview: + asset_meta["view"] = "three_view" if product_id: asset_meta["product_id"] = str(product_id) if payload.get("batch_id"): @@ -2430,7 +2437,7 @@ def run_standalone_image_task(*, task_id: str) -> None: asset_meta["model_entity_id"] = str(payload["model_entity_id"]) asset = Asset.objects.create( id=asset_id, team=team, created_by=user, name=f"AI 生成 · {asset_label} · {index + 1}", - asset_type=Asset.Type.IMAGE, source=Asset.Source.AI_GENERATED, category=category, origin_task=task, + asset_type=Asset.Type.IMAGE, source=Asset.Source.AI_GENERATED, category=asset_category, origin_task=task, metadata=asset_meta, # 工作台生成的图默认不进资产库列表,只在工作台展示;用户「加入资产库」后才置 True in_library=False,