优化住流程和添加复刻视频页面

This commit is contained in:
Azmat@qq.com
2026-08-26 18:44:03 +08:00
parent 0ee498d807
commit c25060c6c6
30 changed files with 2574 additions and 155 deletions
+13 -4
View File
@@ -21,6 +21,7 @@ from apps.ai.script_agent import (
SEGMENT_DURATION_MIN,
combo_keys,
coerce_total_duration,
recommend_script_setup,
stream_script_agent,
)
from apps.ai.services import (
@@ -607,6 +608,11 @@ class ProjectViewSet(TeamScopedViewSetMixin, ModelViewSet):
return Response({"detail": "请至少上传一张商品图片"}, status=status.HTTP_400_BAD_REQUEST)
if len(reused_assets) + len(uploads) > 9:
return Response({"detail": "商品图片最多上传9张"}, status=status.HTTP_400_BAD_REQUEST)
category = str(request.data.get("category") or "").strip()
if not category:
return Response({"detail": "请选择商品品类"}, status=status.HTTP_400_BAD_REQUEST)
if category not in Product.ECOMMERCE_CATEGORIES:
return Response({"detail": "请选择有效的商品品类"}, status=status.HTTP_400_BAD_REQUEST)
with transaction.atomic():
assets = list(reused_assets)
@@ -628,6 +634,7 @@ class ProjectViewSet(TeamScopedViewSetMixin, ModelViewSet):
created_by=request.user,
title=name,
business_type=Product.BusinessType.ECOMMERCE,
category=category,
cover_asset=assets[0],
)
ProductImage.objects.bulk_create(
@@ -641,6 +648,7 @@ class ProjectViewSet(TeamScopedViewSetMixin, ModelViewSet):
for index, asset in enumerate(assets)
]
)
rec = recommend_script_setup(category, name)
project = Project.objects.create(
team=team,
created_by=request.user,
@@ -657,9 +665,9 @@ class ProjectViewSet(TeamScopedViewSetMixin, ModelViewSet):
"video_model_config_id": str(video_model.id),
"video_model_name": video_model.name,
"video_model_label": video_model.display_name,
"presentation_format": "oral",
"video_structure": "pain",
"persona": "reviewer",
"presentation_format": rec["format"],
"video_structure": rec["structure"],
"persona": rec["persona"],
},
},
)
@@ -697,9 +705,10 @@ class ProjectViewSet(TeamScopedViewSetMixin, ModelViewSet):
def _quick_job_queryset(self):
return (
QuickCreateJob.objects.select_related("project__product", "project__timeline")
QuickCreateJob.objects.select_related("project__product", "project__product__cover_asset", "project__timeline")
.prefetch_related(
"project__product__images__asset__files",
"project__product__cover_asset__files",
"project__script_versions",
"project__base_asset_groups",
"project__storyboard_shots__adopted_version__asset__files",