@@ -1,6 +1,6 @@
|
||||
from rest_framework import serializers
|
||||
|
||||
from .creation_presets import PLOT_TWIST_PRESET
|
||||
from .creation_presets import is_plot_twist_preset
|
||||
from .models import (
|
||||
AITask,
|
||||
CreationConversation,
|
||||
@@ -248,18 +248,20 @@ class CreationConversationSerializer(serializers.ModelSerializer):
|
||||
return progress
|
||||
|
||||
def create(self, validated_data):
|
||||
# 剧情反转带货的新会话直接以完整短剧的 60 秒开场,不再弹故事深度选择。
|
||||
# 旧客户端仍传「智能时长」时也要在服务端落成确定参数。
|
||||
if validated_data.get("mode") == CreationConversation.Mode.VIDEO and validated_data.get("preset") == PLOT_TWIST_PRESET:
|
||||
# 短剧带货现阶段固定为完整的 60 秒短剧,旧客户端传任何时长也不能覆盖。
|
||||
if validated_data.get("mode") == CreationConversation.Mode.VIDEO and is_plot_twist_preset(validated_data.get("preset")):
|
||||
params = dict(validated_data.get("params") or {})
|
||||
if not str(params.get("duration") or "").strip() or str(params.get("duration")).strip() == "智能时长":
|
||||
params["duration"] = "60 秒"
|
||||
params["duration"] = "60 秒"
|
||||
validated_data["params"] = params
|
||||
return super().create(validated_data)
|
||||
|
||||
def update(self, instance, validated_data):
|
||||
# mode 定死:允许传但忽略,避免前端误改后顶栏参数与已生成内容对不上
|
||||
validated_data.pop("mode", None)
|
||||
if instance.mode == CreationConversation.Mode.VIDEO and is_plot_twist_preset(validated_data.get("preset", instance.preset)):
|
||||
params = dict(validated_data.get("params", instance.params) or {})
|
||||
params["duration"] = "60 秒"
|
||||
validated_data["params"] = params
|
||||
return super().update(instance, validated_data)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user