|
|
@@ -43,6 +43,7 @@ ACTION_LABELS = {
|
|
|
"ADD_TO_CONTENT_POOL": "入池",
|
|
|
"KEEP_CONTENT_FOR_REVIEW": "待复看",
|
|
|
"REJECT_CONTENT": "淘汰",
|
|
|
+ "TECHNICAL_RETRY_REQUIRED": "技术重试",
|
|
|
}
|
|
|
MEDIA_STATUS_LABELS = {
|
|
|
"oss_uploaded": "已保存",
|
|
|
@@ -451,6 +452,7 @@ class FlowLedgerService:
|
|
|
"total": len(decisions),
|
|
|
"pool_count": actions["ADD_TO_CONTENT_POOL"],
|
|
|
"review_count": actions["KEEP_CONTENT_FOR_REVIEW"],
|
|
|
+ "technical_retry_count": actions["TECHNICAL_RETRY_REQUIRED"],
|
|
|
"reject_count": actions["REJECT_CONTENT"],
|
|
|
"primary_reason": primary_reason,
|
|
|
"primary_reason_label": REASON_LABELS.get(primary_reason, "系统原因待补充"),
|
|
|
@@ -479,6 +481,7 @@ class FlowLedgerService:
|
|
|
sections = {
|
|
|
"content_assets": "入池",
|
|
|
"review_records": "待复看",
|
|
|
+ "technical_retry_records": "技术重试",
|
|
|
"reject_records": "淘汰",
|
|
|
}
|
|
|
counts = {}
|
|
|
@@ -495,10 +498,12 @@ class FlowLedgerService:
|
|
|
"total": total,
|
|
|
"pool_count": counts.get("入池", 0),
|
|
|
"review_count": counts.get("待复看", 0),
|
|
|
+ "technical_retry_count": counts.get("技术重试", 0),
|
|
|
"reject_count": counts.get("淘汰", 0),
|
|
|
"headline": _asset_headline(
|
|
|
counts.get("入池", 0),
|
|
|
counts.get("待复看", 0),
|
|
|
+ counts.get("技术重试", 0),
|
|
|
counts.get("淘汰", 0),
|
|
|
),
|
|
|
}
|
|
|
@@ -510,6 +515,7 @@ class FlowLedgerService:
|
|
|
"total": len(videos),
|
|
|
"pool_count": actions["ADD_TO_CONTENT_POOL"],
|
|
|
"review_count": actions["KEEP_CONTENT_FOR_REVIEW"],
|
|
|
+ "technical_retry_count": actions["TECHNICAL_RETRY_REQUIRED"],
|
|
|
"reject_count": actions["REJECT_CONTENT"],
|
|
|
"not_judged_count": actions["NOT_JUDGED"],
|
|
|
"oss_uploaded_count": media["oss_uploaded"],
|
|
|
@@ -577,6 +583,7 @@ class FlowLedgerService:
|
|
|
"gemini_failed_count": gemini_counts["failed"],
|
|
|
"pool_count": action_counts["ADD_TO_CONTENT_POOL"],
|
|
|
"review_count": action_counts["KEEP_CONTENT_FOR_REVIEW"],
|
|
|
+ "technical_retry_count": action_counts["TECHNICAL_RETRY_REQUIRED"],
|
|
|
"reject_count": action_counts["REJECT_CONTENT"],
|
|
|
}
|
|
|
|
|
|
@@ -705,15 +712,24 @@ def _rule_headline(actions: Counter[str], total: int) -> str:
|
|
|
return f"有 {actions['ADD_TO_CONTENT_POOL']} 条内容入池"
|
|
|
if actions["KEEP_CONTENT_FOR_REVIEW"]:
|
|
|
return f"有 {actions['KEEP_CONTENT_FOR_REVIEW']} 条内容待复看"
|
|
|
+ if actions["TECHNICAL_RETRY_REQUIRED"]:
|
|
|
+ return f"有 {actions['TECHNICAL_RETRY_REQUIRED']} 条内容需要技术重试"
|
|
|
return "本轮没有可沉淀内容"
|
|
|
|
|
|
|
|
|
-def _asset_headline(pool_count: int, review_count: int, reject_count: int) -> str:
|
|
|
+def _asset_headline(
|
|
|
+ pool_count: int,
|
|
|
+ review_count: int,
|
|
|
+ technical_retry_count: int,
|
|
|
+ reject_count: int,
|
|
|
+) -> str:
|
|
|
parts = []
|
|
|
if pool_count:
|
|
|
parts.append(f"入池 {pool_count} 条")
|
|
|
if review_count:
|
|
|
parts.append(f"待复看 {review_count} 条")
|
|
|
+ if technical_retry_count:
|
|
|
+ parts.append(f"技术重试 {technical_retry_count} 条")
|
|
|
if parts:
|
|
|
return ",".join(parts)
|
|
|
if reject_count:
|