大量优化修改扣积分规则
This commit is contained in:
@@ -928,29 +928,28 @@ class ProjectViewSet(TeamScopedViewSetMixin, ModelViewSet):
|
||||
|
||||
@action(detail=True, methods=["post"], url_path="extract-entities")
|
||||
def extract_entities_action(self, request, pk=None):
|
||||
"""从已定稿脚本提取角色 / 场景实体(独立步,进资产阶段时调)——**异步**:豆包思考模型流式抽取较慢,
|
||||
Web 层只建任务秒回(不再 502),慢活交 worker(run_extract_entities_task)。前端拿 task_id 轮询
|
||||
extract-status 取结果。已有在途提取则复用(防刷新后重点重复扣费)。落库覆盖 project.metadata +
|
||||
每镜 entity_refs;**商品不提**(参考图层用真实主图)。"""
|
||||
require_worker() # 异步提取依赖 worker 兜底执行,没 worker 直接拒绝(否则任务永远 RESERVED)
|
||||
"""从已定稿脚本**本地**拆出角色 / 场景(不调模型、不扣积分)。
|
||||
读脚本自带 entities,缺则按分镜补最少 1 角色 + 1 场景;商品不提。"""
|
||||
project = self.get_object()
|
||||
try:
|
||||
task = submit_extract_entities(project=project, user=request.user)
|
||||
except ValueError as exc: # 无脚本 / 无分镜 / 无模型 / 额度不足,立即反馈
|
||||
message = str(exc)
|
||||
internal_kind = (
|
||||
"user_credit_insufficient" if "额度不足" in message
|
||||
else "model_unavailable" if "模型" in message
|
||||
else "invalid_input"
|
||||
)
|
||||
except ValueError as exc:
|
||||
public_error = classify_generation_error(
|
||||
exc, operation="entity_extract", internal_kind=internal_kind
|
||||
exc, operation="entity_extract", internal_kind="invalid_input"
|
||||
)
|
||||
return Response(
|
||||
{"detail": public_error.fallback_message, "error": public_error.as_dict()},
|
||||
status=status.HTTP_400_BAD_REQUEST,
|
||||
)
|
||||
return Response({"task_id": str(task.id), "status": task.status})
|
||||
project.refresh_from_db()
|
||||
entities = (task.response_payload or {}).get("entities") or (project.metadata or {}).get("script_entities") or []
|
||||
return Response({
|
||||
"task_id": str(task.id),
|
||||
"status": task.status,
|
||||
"mode": "local",
|
||||
"entities": entities,
|
||||
})
|
||||
|
||||
|
||||
@action(detail=True, methods=["get"], url_path="extract-status")
|
||||
def extract_status_action(self, request, pk=None):
|
||||
|
||||
Reference in New Issue
Block a user