mirror of
https://github.com/fawney19/Aether.git
synced 2026-10-09 10:57:03 +08:00
refactor(workspace): enforce layered crate boundaries
This commit is contained in:
@@ -0,0 +1,117 @@
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
||||
#[allow(clippy::enum_variant_names)]
|
||||
pub enum AiCandidatePersistencePolicyKind {
|
||||
StandardDecision,
|
||||
SameFormatProviderDecision,
|
||||
OpenAiChatDecision,
|
||||
OpenAiResponsesDecision,
|
||||
ImageDecision,
|
||||
GeminiFilesDecision,
|
||||
VideoDecision,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
||||
pub struct AiCandidatePersistencePolicySpec {
|
||||
pub available_error_context: &'static str,
|
||||
pub skipped_error_context: &'static str,
|
||||
pub record_runtime_miss_diagnostic: bool,
|
||||
}
|
||||
|
||||
pub fn ai_candidate_persistence_policy_spec(
|
||||
kind: AiCandidatePersistencePolicyKind,
|
||||
) -> AiCandidatePersistencePolicySpec {
|
||||
match kind {
|
||||
AiCandidatePersistencePolicyKind::StandardDecision => AiCandidatePersistencePolicySpec {
|
||||
available_error_context:
|
||||
"gateway local standard decision request candidate upsert failed",
|
||||
skipped_error_context:
|
||||
"gateway local standard decision failed to persist skipped candidate",
|
||||
record_runtime_miss_diagnostic: true,
|
||||
},
|
||||
AiCandidatePersistencePolicyKind::SameFormatProviderDecision => {
|
||||
AiCandidatePersistencePolicySpec {
|
||||
available_error_context:
|
||||
"gateway local same-format decision request candidate upsert failed",
|
||||
skipped_error_context:
|
||||
"gateway local same-format decision failed to persist skipped candidate",
|
||||
record_runtime_miss_diagnostic: true,
|
||||
}
|
||||
}
|
||||
AiCandidatePersistencePolicyKind::OpenAiChatDecision => AiCandidatePersistencePolicySpec {
|
||||
available_error_context:
|
||||
"gateway local openai chat decision request candidate upsert failed",
|
||||
skipped_error_context:
|
||||
"gateway local openai chat decision failed to persist skipped candidate",
|
||||
record_runtime_miss_diagnostic: true,
|
||||
},
|
||||
AiCandidatePersistencePolicyKind::OpenAiResponsesDecision => {
|
||||
AiCandidatePersistencePolicySpec {
|
||||
available_error_context:
|
||||
"gateway local openai responses decision request candidate upsert failed",
|
||||
skipped_error_context:
|
||||
"gateway local openai responses decision failed to persist skipped candidate",
|
||||
record_runtime_miss_diagnostic: true,
|
||||
}
|
||||
}
|
||||
AiCandidatePersistencePolicyKind::ImageDecision => AiCandidatePersistencePolicySpec {
|
||||
available_error_context:
|
||||
"gateway local openai image decision request candidate upsert failed",
|
||||
skipped_error_context:
|
||||
"gateway local openai image decision failed to persist skipped candidate",
|
||||
record_runtime_miss_diagnostic: false,
|
||||
},
|
||||
AiCandidatePersistencePolicyKind::GeminiFilesDecision => AiCandidatePersistencePolicySpec {
|
||||
available_error_context: "gateway local gemini files request candidate upsert failed",
|
||||
skipped_error_context: "gateway local gemini files failed to persist skipped candidate",
|
||||
record_runtime_miss_diagnostic: false,
|
||||
},
|
||||
AiCandidatePersistencePolicyKind::VideoDecision => AiCandidatePersistencePolicySpec {
|
||||
available_error_context: "gateway local video decision request candidate upsert failed",
|
||||
skipped_error_context:
|
||||
"gateway local video decision failed to persist skipped candidate",
|
||||
record_runtime_miss_diagnostic: false,
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn decision_policies_define_candidate_persistence_side_effects() {
|
||||
let standard = ai_candidate_persistence_policy_spec(
|
||||
AiCandidatePersistencePolicyKind::StandardDecision,
|
||||
);
|
||||
assert_eq!(
|
||||
standard.available_error_context,
|
||||
"gateway local standard decision request candidate upsert failed"
|
||||
);
|
||||
assert_eq!(
|
||||
standard.skipped_error_context,
|
||||
"gateway local standard decision failed to persist skipped candidate"
|
||||
);
|
||||
assert!(standard.record_runtime_miss_diagnostic);
|
||||
|
||||
let same_format = ai_candidate_persistence_policy_spec(
|
||||
AiCandidatePersistencePolicyKind::SameFormatProviderDecision,
|
||||
);
|
||||
assert_eq!(
|
||||
same_format.available_error_context,
|
||||
"gateway local same-format decision request candidate upsert failed"
|
||||
);
|
||||
assert_eq!(
|
||||
same_format.skipped_error_context,
|
||||
"gateway local same-format decision failed to persist skipped candidate"
|
||||
);
|
||||
assert!(same_format.record_runtime_miss_diagnostic);
|
||||
|
||||
let image =
|
||||
ai_candidate_persistence_policy_spec(AiCandidatePersistencePolicyKind::ImageDecision);
|
||||
assert_eq!(
|
||||
image.available_error_context,
|
||||
"gateway local openai image decision request candidate upsert failed"
|
||||
);
|
||||
assert!(!image.record_runtime_miss_diagnostic);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user