大量优化修改扣积分规则

This commit is contained in:
Azmat@qq.com
2026-09-04 17:20:22 +08:00
parent 3e904479d9
commit 15718a60bf
41 changed files with 1590 additions and 429 deletions
+13 -14
View File
@@ -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):