refactor: extract platform media crates
This commit is contained in:
64
server-rs/crates/platform-image/src/vector_engine/audit.rs
Normal file
64
server-rs/crates/platform-image/src/vector_engine/audit.rs
Normal file
@@ -0,0 +1,64 @@
|
||||
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)
|
||||
}
|
||||
Reference in New Issue
Block a user