fix: enrich image failure audit metadata
This commit is contained in:
@@ -34,6 +34,9 @@ pub(crate) struct OpenAiImageSettings {
|
||||
pub api_key: String,
|
||||
pub request_timeout_ms: u64,
|
||||
pub external_api_audit_state: Option<AppState>,
|
||||
pub external_api_audit_user_id: Option<String>,
|
||||
pub external_api_audit_profile_id: Option<String>,
|
||||
pub external_api_audit_request_id: Option<String>,
|
||||
}
|
||||
|
||||
impl std::fmt::Debug for OpenAiImageSettings {
|
||||
@@ -47,6 +50,18 @@ impl std::fmt::Debug for OpenAiImageSettings {
|
||||
"external_api_audit_enabled",
|
||||
&self.external_api_audit_state.is_some(),
|
||||
)
|
||||
.field(
|
||||
"external_api_audit_user_id",
|
||||
&self.external_api_audit_user_id,
|
||||
)
|
||||
.field(
|
||||
"external_api_audit_profile_id",
|
||||
&self.external_api_audit_profile_id,
|
||||
)
|
||||
.field(
|
||||
"external_api_audit_request_id",
|
||||
&self.external_api_audit_request_id,
|
||||
)
|
||||
.finish()
|
||||
}
|
||||
}
|
||||
@@ -87,6 +102,9 @@ pub(crate) fn require_openai_image_settings(
|
||||
api_key: api_key.to_string(),
|
||||
request_timeout_ms: state.config.vector_engine_image_request_timeout_ms.max(1),
|
||||
external_api_audit_state: Some(state.clone()),
|
||||
external_api_audit_user_id: None,
|
||||
external_api_audit_profile_id: None,
|
||||
external_api_audit_request_id: None,
|
||||
})
|
||||
}
|
||||
|
||||
@@ -240,6 +258,21 @@ pub(crate) fn build_openai_image_request_body(
|
||||
}
|
||||
|
||||
impl OpenAiImageSettings {
|
||||
pub(crate) fn with_external_api_audit_context(
|
||||
mut self,
|
||||
user_id: Option<String>,
|
||||
profile_id: Option<String>,
|
||||
) -> Self {
|
||||
self.external_api_audit_user_id = user_id;
|
||||
self.external_api_audit_profile_id = profile_id;
|
||||
self
|
||||
}
|
||||
|
||||
pub(crate) fn with_external_api_audit_request_id(mut self, request_id: Option<String>) -> Self {
|
||||
self.external_api_audit_request_id = request_id;
|
||||
self
|
||||
}
|
||||
|
||||
fn provider_settings(&self) -> VectorEngineImageSettings {
|
||||
VectorEngineImageSettings {
|
||||
base_url: self.base_url.clone(),
|
||||
@@ -310,6 +343,10 @@ pub(crate) async fn record_openai_image_failure_if_configured(
|
||||
let Some(draft) = build_openai_image_failure_audit_draft(error) else {
|
||||
return;
|
||||
};
|
||||
let draft = draft
|
||||
.with_user_id(settings.external_api_audit_user_id.clone())
|
||||
.with_profile_id(settings.external_api_audit_profile_id.clone())
|
||||
.with_request_id(settings.external_api_audit_request_id.clone());
|
||||
record_external_api_failure(state, draft).await;
|
||||
}
|
||||
|
||||
@@ -422,12 +459,18 @@ mod tests {
|
||||
api_key: "test-key".to_string(),
|
||||
request_timeout_ms: 1_000_000,
|
||||
external_api_audit_state: None,
|
||||
external_api_audit_user_id: None,
|
||||
external_api_audit_profile_id: None,
|
||||
external_api_audit_request_id: None,
|
||||
};
|
||||
let v1_settings = OpenAiImageSettings {
|
||||
base_url: "https://vector.example/v1".to_string(),
|
||||
api_key: "test-key".to_string(),
|
||||
request_timeout_ms: 1_000_000,
|
||||
external_api_audit_state: None,
|
||||
external_api_audit_user_id: None,
|
||||
external_api_audit_profile_id: None,
|
||||
external_api_audit_request_id: None,
|
||||
};
|
||||
|
||||
assert_eq!(
|
||||
@@ -447,12 +490,18 @@ mod tests {
|
||||
api_key: "test-key".to_string(),
|
||||
request_timeout_ms: 1_000_000,
|
||||
external_api_audit_state: None,
|
||||
external_api_audit_user_id: None,
|
||||
external_api_audit_profile_id: None,
|
||||
external_api_audit_request_id: None,
|
||||
};
|
||||
let v1_settings = OpenAiImageSettings {
|
||||
base_url: "https://vector.example/v1".to_string(),
|
||||
api_key: "test-key".to_string(),
|
||||
request_timeout_ms: 1_000_000,
|
||||
external_api_audit_state: None,
|
||||
external_api_audit_user_id: None,
|
||||
external_api_audit_profile_id: None,
|
||||
external_api_audit_request_id: None,
|
||||
};
|
||||
|
||||
assert_eq!(
|
||||
@@ -472,6 +521,9 @@ mod tests {
|
||||
api_key: "test-key".to_string(),
|
||||
request_timeout_ms: 1_000_000,
|
||||
external_api_audit_state: None,
|
||||
external_api_audit_user_id: None,
|
||||
external_api_audit_profile_id: None,
|
||||
external_api_audit_request_id: None,
|
||||
};
|
||||
let http_client = reqwest::Client::new();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user