fix(assets): 手动送审如实回报,送不出去返回 503 而非空态

submit_asset_for_review 改为返回 bool(是否真进入审核);submit-review 端点据此:
当审核服务未启用/未配 SDK/火山未回 Id/调用异常导致没真正送出去,且素材非终态时,
返回 503「审核服务暂不可用」而不是空 review_status —— 否则前端会把「没送出去」
误显示成「审核中」,刷新就打回灰盾(待审核)。新增 503/200 两条回归测试。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
zyc
2026-06-24 17:11:04 +08:00
co-authored by Claude Opus 4.8
parent d2aa26248d
commit d6cb280018
3 changed files with 38 additions and 6 deletions
+9 -5
View File
@@ -59,26 +59,30 @@ def get_or_create_team_group(team) -> AssetReviewGroup:
return grp
def submit_asset_for_review(asset: Asset) -> None:
"""真人资产静默送审:建组(若无)→ 传素材 → 标 processing。出错只记日志,不抛。"""
def submit_asset_for_review(asset: Asset) -> bool:
"""真人资产送审:建组(若无)→ 传素材 → 标 processing。出错只记日志,不抛。
返回是否真正进入审核(True=已标 processing;False=未送审/未配置/失败),
供手动兜底端点据此如实回报,避免前端把「没送出去」误显示成「审核中」。"""
if not assets_client.is_enabled() or asset.category not in Asset.REVIEW_CATEGORIES:
return
return False
url = _asset_url(asset)
if not url:
return
return False
try:
grp = get_or_create_team_group(asset.team)
remote_id = assets_client.create_asset(group_id=grp.remote_group_id, image_url=url, name=(asset.name or "person")[:64])
if not remote_id:
# 火山没回 Id:不要标 processing(否则 remote_id 为空、poll 永远早退、卡死黄),留空可重试
logger.warning("create_asset 返回空 id,asset %s 暂不送审(可重试)", asset.id)
return
return False
asset.review_remote_id = remote_id
asset.review_status = "processing"
asset.review_error = ""
asset.save(update_fields=["review_remote_id", "review_status", "review_error", "updated_at"])
return True
except Exception as exc: # noqa: BLE001
logger.warning("submit_asset_for_review failed for asset %s: %s", asset.id, exc)
return False
def poll_asset_review(asset: Asset) -> str: