fix: enrich image failure audit metadata
This commit is contained in:
@@ -27,6 +27,9 @@ pub(crate) struct ExternalApiFailureDraft {
|
||||
pub(crate) prompt_chars: Option<usize>,
|
||||
pub(crate) reference_image_count: Option<usize>,
|
||||
pub(crate) image_model: Option<&'static str>,
|
||||
pub(crate) user_id: Option<String>,
|
||||
pub(crate) profile_id: Option<String>,
|
||||
pub(crate) request_id: Option<String>,
|
||||
}
|
||||
|
||||
impl ExternalApiFailureDraft {
|
||||
@@ -53,6 +56,9 @@ impl ExternalApiFailureDraft {
|
||||
prompt_chars: None,
|
||||
reference_image_count: None,
|
||||
image_model: None,
|
||||
user_id: None,
|
||||
profile_id: None,
|
||||
request_id: None,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -108,6 +114,21 @@ impl ExternalApiFailureDraft {
|
||||
self.image_model = image_model;
|
||||
self
|
||||
}
|
||||
|
||||
pub(crate) fn with_user_id(mut self, user_id: Option<String>) -> Self {
|
||||
self.user_id = user_id;
|
||||
self
|
||||
}
|
||||
|
||||
pub(crate) fn with_profile_id(mut self, profile_id: Option<String>) -> Self {
|
||||
self.profile_id = profile_id;
|
||||
self
|
||||
}
|
||||
|
||||
pub(crate) fn with_request_id(mut self, request_id: Option<String>) -> Self {
|
||||
self.request_id = request_id;
|
||||
self
|
||||
}
|
||||
}
|
||||
|
||||
pub(crate) fn build_external_api_failure_draft_from_platform_image_audit(
|
||||
@@ -130,6 +151,9 @@ pub(crate) fn build_external_api_failure_draft_from_platform_image_audit(
|
||||
.with_prompt_chars(audit.prompt_chars)
|
||||
.with_reference_image_count(audit.reference_image_count)
|
||||
.with_image_model(audit.image_model)
|
||||
.with_user_id(None)
|
||||
.with_profile_id(None)
|
||||
.with_request_id(None)
|
||||
}
|
||||
|
||||
/// 中文注释:下载图片、OSS 读写等非标准 HTTP 状态统一显式归类,避免 OTLP 低基数 label 误落到 `transport`。
|
||||
@@ -203,6 +227,9 @@ pub(crate) fn build_external_api_failure_tracking_draft(
|
||||
);
|
||||
draft.scope_kind = RuntimeTrackingScopeKind::Module;
|
||||
draft.scope_id = failure.provider.to_string();
|
||||
draft.user_id = failure.user_id.clone();
|
||||
draft.owner_user_id = failure.user_id.clone();
|
||||
draft.profile_id = failure.profile_id.clone();
|
||||
draft.metadata = build_external_api_failure_metadata(failure);
|
||||
draft
|
||||
}
|
||||
@@ -233,6 +260,15 @@ fn build_external_api_failure_metadata(failure: &ExternalApiFailureDraft) -> Val
|
||||
if let Some(image_model) = failure.image_model {
|
||||
metadata["imageModel"] = json!(image_model);
|
||||
}
|
||||
if let Some(user_id) = failure.user_id.as_deref().map(str::trim).filter(|value| !value.is_empty()) {
|
||||
metadata["userId"] = json!(truncate_field(user_id, 1_000));
|
||||
}
|
||||
if let Some(profile_id) = failure.profile_id.as_deref().map(str::trim).filter(|value| !value.is_empty()) {
|
||||
metadata["profileId"] = json!(truncate_field(profile_id, 1_000));
|
||||
}
|
||||
if let Some(request_id) = failure.request_id.as_deref().map(str::trim).filter(|value| !value.is_empty()) {
|
||||
metadata["requestId"] = json!(truncate_field(request_id, 1_000));
|
||||
}
|
||||
if let Some(source) = failure
|
||||
.error_source
|
||||
.as_deref()
|
||||
|
||||
Reference in New Issue
Block a user