65 lines
1.9 KiB
Rust
65 lines
1.9 KiB
Rust
use super::constants::{VECTOR_ENGINE_GPT_IMAGE_2_MODEL, VECTOR_ENGINE_PROVIDER};
|
|
|
|
#[derive(Clone, Debug)]
|
|
pub struct PlatformImageFailureAudit {
|
|
pub provider: &'static str,
|
|
pub endpoint: String,
|
|
pub operation: String,
|
|
pub failure_stage: &'static str,
|
|
pub status_code: Option<u16>,
|
|
pub status_class: Option<&'static str>,
|
|
pub timeout: bool,
|
|
pub retryable: bool,
|
|
pub error_message: String,
|
|
pub error_source: Option<String>,
|
|
pub raw_excerpt: Option<String>,
|
|
pub latency_ms: Option<u64>,
|
|
pub prompt_chars: Option<usize>,
|
|
pub reference_image_count: Option<usize>,
|
|
pub image_model: Option<&'static str>,
|
|
}
|
|
|
|
pub(crate) fn build_failure_audit(
|
|
request_url: &str,
|
|
operation: &str,
|
|
failure_stage: &'static str,
|
|
status_code: Option<u16>,
|
|
status_class: Option<&'static str>,
|
|
timeout: bool,
|
|
connect: bool,
|
|
error_message: &str,
|
|
error_source: Option<String>,
|
|
raw_excerpt: Option<String>,
|
|
latency_ms: Option<u64>,
|
|
prompt_chars: Option<usize>,
|
|
reference_image_count: Option<usize>,
|
|
) -> PlatformImageFailureAudit {
|
|
PlatformImageFailureAudit {
|
|
provider: VECTOR_ENGINE_PROVIDER,
|
|
endpoint: request_url.to_string(),
|
|
operation: operation.to_string(),
|
|
failure_stage,
|
|
status_code,
|
|
status_class,
|
|
timeout,
|
|
retryable: is_retryable_external_api_failure(status_code, timeout, connect),
|
|
error_message: error_message.to_string(),
|
|
error_source,
|
|
raw_excerpt,
|
|
latency_ms,
|
|
prompt_chars,
|
|
reference_image_count,
|
|
image_model: Some(VECTOR_ENGINE_GPT_IMAGE_2_MODEL),
|
|
}
|
|
}
|
|
|
|
pub(crate) fn is_retryable_external_api_failure(
|
|
status_code: Option<u16>,
|
|
timeout: bool,
|
|
connect: bool,
|
|
) -> bool {
|
|
timeout
|
|
|| connect
|
|
|| status_code.is_some_and(|status| status == 429 || status == 408 || status >= 500)
|
|
}
|