fix: 优化AI生成失败提示与素材失效处理
This commit is contained in:
@@ -7,6 +7,7 @@ class NotificationSerializer(serializers.ModelSerializer):
|
||||
type = serializers.CharField(source="notification_type", read_only=True)
|
||||
unread = serializers.SerializerMethodField()
|
||||
project_name = serializers.CharField(source="project.name", read_only=True)
|
||||
brief = serializers.SerializerMethodField()
|
||||
body = serializers.SerializerMethodField()
|
||||
metadata = serializers.SerializerMethodField()
|
||||
|
||||
@@ -48,8 +49,27 @@ class NotificationSerializer(serializers.ModelSerializer):
|
||||
def get_unread(self, obj):
|
||||
return not obj.is_read
|
||||
|
||||
def _current_generation_message(self, obj):
|
||||
metadata = obj.metadata if isinstance(obj.metadata, dict) else {}
|
||||
error = metadata.get("generation_error")
|
||||
if not isinstance(error, dict) or error.get("domain") != "generation":
|
||||
return ""
|
||||
from apps.ai.generation_errors import public_error_for_code
|
||||
|
||||
return public_error_for_code(
|
||||
str(error.get("code") or "unknown"),
|
||||
operation=str(error.get("operation") or "image_generate"),
|
||||
reference_id=str(error.get("reference_id") or "") or None,
|
||||
).fallback_message
|
||||
|
||||
def get_brief(self, obj):
|
||||
return self._current_generation_message(obj) or obj.brief or ""
|
||||
|
||||
def get_body(self, obj):
|
||||
"""兼容早期 AI 失败通知:不再向普通用户回传嵌入正文的上游原始异常。"""
|
||||
current = self._current_generation_message(obj)
|
||||
if current:
|
||||
return current
|
||||
body = obj.body or ""
|
||||
marker = "—— 第三方服务商 API 返回的原始报错 ——"
|
||||
return body.split(marker, 1)[0].strip()
|
||||
|
||||
Reference in New Issue
Block a user