pub struct LabeledAnomaly {Show 24 fields
pub anomaly_id: String,
pub anomaly_type: AnomalyType,
pub document_id: String,
pub document_type: String,
pub company_code: String,
pub anomaly_date: NaiveDate,
pub detection_timestamp: NaiveDateTime,
pub confidence: f64,
pub severity: u8,
pub description: String,
pub related_entities: Vec<String>,
pub monetary_impact: Option<Decimal>,
pub metadata: HashMap<String, String>,
pub is_injected: bool,
pub injection_strategy: Option<String>,
pub cluster_id: Option<String>,
pub original_document_hash: Option<String>,
pub causal_reason: Option<AnomalyCausalReason>,
pub structured_strategy: Option<InjectionStrategy>,
pub parent_anomaly_id: Option<String>,
pub child_anomaly_ids: Vec<String>,
pub scenario_id: Option<String>,
pub run_id: Option<String>,
pub generation_seed: Option<u64>,
}Expand description
A labeled anomaly for supervised learning.
Fields§
§anomaly_id: StringUnique anomaly identifier.
anomaly_type: AnomalyTypeType of anomaly.
document_id: StringDocument or entity that contains the anomaly.
document_type: StringDocument type (JE, PO, Invoice, etc.).
company_code: StringCompany code.
anomaly_date: NaiveDateDate the anomaly occurred.
detection_timestamp: NaiveDateTimeTimestamp when detected/injected.
confidence: f64Confidence score (0.0 - 1.0) for injected anomalies.
severity: u8Severity (1-5).
description: StringDescription of the anomaly.
Related entities (user IDs, account codes, etc.).
monetary_impact: Option<Decimal>Monetary impact if applicable.
metadata: HashMap<String, String>Additional metadata.
is_injected: boolWhether this was injected (true) or naturally occurring (false).
injection_strategy: Option<String>Injection strategy used (if injected) - legacy string field.
cluster_id: Option<String>Cluster ID if part of an anomaly cluster.
original_document_hash: Option<String>Hash of the original document before modification. Enables tracking what the document looked like pre-injection.
causal_reason: Option<AnomalyCausalReason>Causal reason explaining why this anomaly was injected. Provides “why” tracking for each anomaly.
structured_strategy: Option<InjectionStrategy>Structured injection strategy with parameters. More detailed than the legacy string-based injection_strategy field.
parent_anomaly_id: Option<String>Parent anomaly ID if this was derived from another anomaly. Enables anomaly transformation chains.
child_anomaly_ids: Vec<String>Child anomaly IDs that were derived from this anomaly.
scenario_id: Option<String>Scenario ID if this anomaly is part of a multi-step scenario.
run_id: Option<String>Generation run ID that produced this anomaly. Enables tracing anomalies back to their generation run.
generation_seed: Option<u64>Seed used for RNG during generation. Enables reproducibility.
Implementations§
Source§impl LabeledAnomaly
impl LabeledAnomaly
Sourcepub fn new(
anomaly_id: String,
anomaly_type: AnomalyType,
document_id: String,
document_type: String,
company_code: String,
anomaly_date: NaiveDate,
) -> Self
pub fn new( anomaly_id: String, anomaly_type: AnomalyType, document_id: String, document_type: String, company_code: String, anomaly_date: NaiveDate, ) -> Self
Creates a new labeled anomaly.
Sourcepub fn with_description(self, description: &str) -> Self
pub fn with_description(self, description: &str) -> Self
Sets the description.
Sourcepub fn with_monetary_impact(self, impact: Decimal) -> Self
pub fn with_monetary_impact(self, impact: Decimal) -> Self
Sets the monetary impact.
Adds a related entity.
Sourcepub fn with_metadata(self, key: &str, value: &str) -> Self
pub fn with_metadata(self, key: &str, value: &str) -> Self
Adds metadata.
Sourcepub fn with_injection_strategy(self, strategy: &str) -> Self
pub fn with_injection_strategy(self, strategy: &str) -> Self
Sets the injection strategy (legacy string).
Sourcepub fn with_cluster(self, cluster_id: &str) -> Self
pub fn with_cluster(self, cluster_id: &str) -> Self
Sets the cluster ID.
Sourcepub fn with_original_document_hash(self, hash: &str) -> Self
pub fn with_original_document_hash(self, hash: &str) -> Self
Sets the original document hash for provenance tracking.
Sourcepub fn with_causal_reason(self, reason: AnomalyCausalReason) -> Self
pub fn with_causal_reason(self, reason: AnomalyCausalReason) -> Self
Sets the causal reason for this anomaly.
Sourcepub fn with_structured_strategy(self, strategy: InjectionStrategy) -> Self
pub fn with_structured_strategy(self, strategy: InjectionStrategy) -> Self
Sets the structured injection strategy.
Sourcepub fn with_parent_anomaly(self, parent_id: &str) -> Self
pub fn with_parent_anomaly(self, parent_id: &str) -> Self
Sets the parent anomaly ID (for anomaly derivation chains).
Sourcepub fn with_child_anomaly(self, child_id: &str) -> Self
pub fn with_child_anomaly(self, child_id: &str) -> Self
Adds a child anomaly ID.
Sourcepub fn with_scenario(self, scenario_id: &str) -> Self
pub fn with_scenario(self, scenario_id: &str) -> Self
Sets the scenario ID for multi-step scenario tracking.
Sourcepub fn with_run_id(self, run_id: &str) -> Self
pub fn with_run_id(self, run_id: &str) -> Self
Sets the generation run ID.
Sourcepub fn with_generation_seed(self, seed: u64) -> Self
pub fn with_generation_seed(self, seed: u64) -> Self
Sets the generation seed for reproducibility.
Sourcepub fn with_provenance(
self,
run_id: Option<&str>,
seed: Option<u64>,
causal_reason: Option<AnomalyCausalReason>,
) -> Self
pub fn with_provenance( self, run_id: Option<&str>, seed: Option<u64>, causal_reason: Option<AnomalyCausalReason>, ) -> Self
Sets multiple provenance fields at once for convenience.
Sourcepub fn to_features(&self) -> Vec<f64>
pub fn to_features(&self) -> Vec<f64>
Converts to a feature vector for ML.
Returns a vector of 15 features:
- 6 features: Category one-hot encoding (Fraud, Error, ProcessIssue, Statistical, Relational, Custom)
- 1 feature: Severity (normalized 0-1)
- 1 feature: Confidence
- 1 feature: Has monetary impact (0/1)
- 1 feature: Monetary impact (log-scaled)
- 1 feature: Is intentional (0/1)
- 1 feature: Number of related entities
- 1 feature: Is part of cluster (0/1)
- 1 feature: Is part of scenario (0/1)
- 1 feature: Has parent anomaly (0/1) - indicates derivation
Sourcepub fn feature_count() -> usize
pub fn feature_count() -> usize
Returns the number of features in the feature vector.
Sourcepub fn feature_names() -> Vec<&'static str>
pub fn feature_names() -> Vec<&'static str>
Returns feature names for documentation/ML metadata.
Trait Implementations§
Source§impl Clone for LabeledAnomaly
impl Clone for LabeledAnomaly
Source§fn clone(&self) -> LabeledAnomaly
fn clone(&self) -> LabeledAnomaly
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for LabeledAnomaly
impl Debug for LabeledAnomaly
Source§impl<'de> Deserialize<'de> for LabeledAnomaly
impl<'de> Deserialize<'de> for LabeledAnomaly
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for LabeledAnomaly
impl RefUnwindSafe for LabeledAnomaly
impl Send for LabeledAnomaly
impl Sync for LabeledAnomaly
impl Unpin for LabeledAnomaly
impl UnsafeUnpin for LabeledAnomaly
impl UnwindSafe for LabeledAnomaly
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.