From 6f9b728ac3e1076a33e7b4cff1b0db12a934320f Mon Sep 17 00:00:00 2001 From: zyc <1439655764@qq.com> Date: Mon, 29 Jun 2026 17:01:16 +0800 Subject: [PATCH] =?UTF-8?q?fix(=E8=A7=86=E9=A2=91):=20=E5=9C=BA=E6=99=AF/?= =?UTF-8?q?=E5=95=86=E5=93=81=E4=B9=9F=E9=80=81=E7=81=AB=E5=B1=B1=E5=AE=A1?= =?UTF-8?q?=E6=A0=B8,=20=E9=81=BF=E5=85=8D=E5=90=AB=E7=9C=9F=E4=BA=BA?= =?UTF-8?q?=E5=8F=82=E8=80=83=E5=9B=BE=E8=A2=AB=E5=88=A4=E3=80=8C=E7=96=91?= =?UTF-8?q?=E4=BC=BC=E7=9C=9F=E4=BA=BA=E3=80=8D=E6=8B=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 场景图与商品图可能出现真人(模特出镜/上身), 此前从不送审, 视频路只能 传原始直链 → 火山报 InputImageSensitiveContentDetected.PrivacyInformation → 整批段失败。现按角色流程把 scene/product_image 也纳入送审: - REVIEW_CATEGORIES 增加 scene + product_image(送审 + 轮询自动覆盖) - 场景/商品基础资产生成后 on_commit 自动静默送审, 拿到 remote_id → 视频路 _seedance_ref_url 换成 asset:// 素材库引用即可放行 - 前端场景卡 + 商品三视图面板挂同款审核盾牌, 可查状态/手动补送审 未改动生成前硬性过审闸(避免无真人的场景/商品被误拦; asset:// 在 processing 态也能引用, 故不拦也能正常出片)。 Co-Authored-By: Claude Opus 4.8 --- core/backend/apps/ai/services.py | 9 +++++---- core/backend/apps/assets/models.py | 6 ++++-- core/frontend/src/routes/pipeline.tsx | 15 +++++++++++++-- 3 files changed, 22 insertions(+), 8 deletions(-) diff --git a/core/backend/apps/ai/services.py b/core/backend/apps/ai/services.py index 7beb6a8..683a028 100644 --- a/core/backend/apps/ai/services.py +++ b/core/backend/apps/ai/services.py @@ -1337,11 +1337,12 @@ def run_base_asset_task(*, task_id: str) -> None: group.candidate_assets.add(asset) group.adopted_asset = asset group.save(update_fields=["adopted_asset", "prompt", "updated_at"]) - # 真人资产:事务提交后静默送火山审核(best-effort,网络调用放 on_commit 避免占着事务) - if kind == BaseAssetGroup.Kind.PERSON: - from apps.assets.review import submit_asset_for_review + # 含人脸资产(角色 / 场景 / 商品):事务提交后静默送火山审核(best-effort,网络调用放 on_commit 避免占着事务)。 + # 场景 / 商品也送审,因为它们可能出现真人(模特出镜/上身),拿到 remote_id 后视频路才能换 asset:// 引用, + # 否则传原始直链会被火山判「疑似真人」拒。submit_asset_for_review 自身按 REVIEW_CATEGORIES 兜底,非送审类不会真送。 + from apps.assets.review import submit_asset_for_review - transaction.on_commit(lambda a=asset: submit_asset_for_review(a)) + transaction.on_commit(lambda a=asset: submit_asset_for_review(a)) except Exception as exc: # noqa: BLE001 — 失败要退费并把错误记进 AITask 供前端轮询读取;不向上抛(避免 celery 重试二次扣费) task.status = AITask.Status.FAILED task.error_message = str(exc) diff --git a/core/backend/apps/assets/models.py b/core/backend/apps/assets/models.py index e13d0a4..d4968e0 100644 --- a/core/backend/apps/assets/models.py +++ b/core/backend/apps/assets/models.py @@ -34,8 +34,10 @@ class Asset(TeamOwnedModel): FREE_CREATE = "free_create", "Free Create" # 自由创作(图片趴) STORYBOARD = "storyboard", "Storyboard" # 分镜图(视频趴·送审) - # 送审范围(火山人像审核):视频趴含人脸 = 角色定妆照 / 三视图 / 分镜图。图片趴(上身图/套图/创作)不送审。 - REVIEW_CATEGORIES = ("person", "tri_view", "storyboard") + # 送审范围(火山人像审核):视频趴含人脸 = 角色定妆照 / 三视图 / 分镜图 / 场景 / 商品图。 + # 场景图与商品图也可能出现真人(模特出镜/上身),不送审则视频路只能传原始直链 → 火山判「疑似真人」拒; + # 送审后拿到 remote_id,视频路换 asset:// 素材库引用即可放行。图片趴(上身图/套图/创作)仍不送审。 + REVIEW_CATEGORIES = ("person", "tri_view", "storyboard", "scene", "product_image") name = models.CharField(max_length=255) asset_type = models.CharField(max_length=24, choices=Type.choices) diff --git a/core/frontend/src/routes/pipeline.tsx b/core/frontend/src/routes/pipeline.tsx index 5086b68..2591c50 100644 --- a/core/frontend/src/routes/pipeline.tsx +++ b/core/frontend/src/routes/pipeline.tsx @@ -2942,6 +2942,16 @@ export function PipelinePage(props: { })()} {previewTriAsset && (
+ {/* 商品图也挂审核盾:商品图可能出现模特,送审后视频路才能换 asset:// 引用(与角色/场景同款) */} + {adoptedTriAsset && ( + submitAssetReview(adoptedTriAsset)} + /> + )}