修改全能创作发现问题
This commit is contained in:
@@ -21,7 +21,7 @@ from apps.products.models import Product
|
||||
|
||||
from .generation_errors import classify_generation_error, public_error_for_task
|
||||
from .creation import append_message, sync_generating_messages
|
||||
from .creation_agent import apply_session_params, stream_creation_agent, submit_confirmed_video
|
||||
from .creation_agent import apply_confirm_params, apply_session_params, stream_creation_agent, submit_confirmed_image, submit_confirmed_video
|
||||
from .mentions import TYPE_LABELS, VALID_TYPES, refs_from_elicit_answers, search_mentions
|
||||
from .models import AITask, CreationConversation, CreationMessage, ImageConversation, ModelConfig
|
||||
from .serializers import (
|
||||
@@ -693,12 +693,14 @@ def _free_video_list_queryset(team, *, include_replace=False):
|
||||
)
|
||||
if include_replace:
|
||||
return qs.filter(video_replace_q())
|
||||
return qs.exclude(video_replace_q())
|
||||
# 全能创作也走 FREE_VIDEO 任务类型,但不能出现在自由生成任务流里。
|
||||
return qs.exclude(video_replace_q()).exclude(request_payload__feature="omni_create")
|
||||
|
||||
|
||||
def _free_video_trash_queryset(team):
|
||||
return (
|
||||
AITask.objects.filter(team=team, task_type=AITask.Type.FREE_VIDEO, is_deleted=True, purged_at__isnull=True)
|
||||
.exclude(request_payload__feature="omni_create")
|
||||
.select_related("model_config")
|
||||
.prefetch_related("generated_assets", "generated_assets__files")
|
||||
)
|
||||
@@ -1244,9 +1246,15 @@ class FreeVideoUploadView(APIView):
|
||||
|
||||
|
||||
class ModelConfigViewSet(ReadOnlyModelViewSet):
|
||||
# 按创建序固定排序:最早创建的 active 模型排第一 = 前端选择器默认项,与 get_default_model 口径一致
|
||||
# (否则 DB 默认序不稳定,可能默认选到 Gemini 等;用户要默认 = 豆包 2.0 Pro,它最早创建)
|
||||
queryset = ModelConfig.objects.select_related("provider").filter(status=ModelConfig.Status.ACTIVE).order_by("created_at")
|
||||
# 按创建序固定排序:最早创建的 active 模型排第一 = 前端选择器默认项,与 get_default_model 口径一致。
|
||||
# DeepSeek 已停用,下拉里不再出现。
|
||||
queryset = (
|
||||
ModelConfig.objects.select_related("provider")
|
||||
.filter(status=ModelConfig.Status.ACTIVE)
|
||||
.exclude(name__icontains="deepseek")
|
||||
.exclude(display_name__icontains="deepseek")
|
||||
.order_by("created_at")
|
||||
)
|
||||
serializer_class = ModelConfigSerializer
|
||||
search_fields = ["name", "display_name", "capability"]
|
||||
ordering_fields = ["created_at", "display_name"]
|
||||
@@ -1360,9 +1368,28 @@ class CreationConversationViewSet(TeamScopedViewSetMixin, ModelViewSet):
|
||||
if (card.payload or {}).get("submitted"):
|
||||
# 确认闸门是一次性的:连点两下会出两条片、扣两次积分
|
||||
return JsonResponse({"detail": "这条方案已经确认过了"}, status=409)
|
||||
card.payload = {**(card.payload or {}), "submitted": True}
|
||||
incoming = request.data.get("params")
|
||||
if incoming is not None and not isinstance(incoming, dict):
|
||||
return JsonResponse({"detail": "params 必须是对象"}, status=400)
|
||||
latest_params, duration_changed = apply_confirm_params(
|
||||
conversation, incoming if isinstance(incoming, dict) else None
|
||||
)
|
||||
card.payload = {
|
||||
**(card.payload or {}),
|
||||
"submitted": True,
|
||||
"params": latest_params,
|
||||
}
|
||||
card.save(update_fields=["payload", "updated_at"])
|
||||
message, error = submit_confirmed_video(
|
||||
# 改时长会让旧脚本对不上(5 秒方案不能直接出 10 秒)。确认卡作废,前端再发一轮让模型重写。
|
||||
if duration_changed:
|
||||
return JsonResponse({
|
||||
"regenerate": True,
|
||||
"params": latest_params,
|
||||
"message": None,
|
||||
}, status=200)
|
||||
is_image = (card.payload or {}).get("kind") == "image" or conversation.mode == CreationConversation.Mode.IMAGE
|
||||
submitter = submit_confirmed_image if is_image else submit_confirmed_video
|
||||
message, error = submitter(
|
||||
conversation=conversation, user=request.user, confirm_message=card
|
||||
)
|
||||
if error:
|
||||
|
||||
Reference in New Issue
Block a user