Skip to main content

TrendsManager

Struct TrendsManager 

Source
pub struct TrendsManager { /* private fields */ }
Expand description

High-level trends manager.

Implementations§

Source§

impl TrendsManager

Source

pub fn new(config: TrendsConfig) -> Self

Create a new trends manager.

Source

pub fn with_dependencies( config: TrendsConfig, dependencies: TrendsManagerDependencies, ) -> Self

Create with dependencies.

Source

pub fn start_background_detection(&self) -> JoinHandle<()>

Start background anomaly detection.

Source

pub fn record_request( &self, entity_id: &str, session_id: Option<&str>, user_agent: Option<&str>, authorization: Option<&str>, client_ip: Option<&str>, ja4: Option<&str>, ja4h: Option<&str>, last_request_time: Option<i64>, ) -> Vec<Signal>

Extract and record signals from request context.

Source

pub fn record_signal(&self, signal: Signal)

Record a single signal.

Source

pub fn record_payload_anomaly( &self, id: String, anomaly_type: AnomalyType, severity: AnomalySeverity, detected_at: i64, template: String, entity_id: String, description: String, metadata: AnomalyMetadata, )

Record a payload anomaly.

Source

pub fn record_login( &self, user_id: &str, timestamp_ms: u64, ip: &str, latitude: f64, longitude: f64, country: &str, country_code: &str, city: Option<&str>, accuracy_km: u32, device_fingerprint: Option<&str>, ) -> bool

Record a login event for impossible travel detection.

Checks if the user’s login pattern indicates geographically impossible travel (e.g., logging in from NYC then London within 10 minutes).

§Arguments
  • user_id - User identifier (session subject, user ID, or email)
  • timestamp_ms - Unix timestamp in milliseconds
  • ip - IP address of the login
  • latitude - Latitude from GeoIP lookup
  • longitude - Longitude from GeoIP lookup
  • country - Country name
  • country_code - ISO country code
  • city - Optional city name
  • accuracy_km - GeoIP accuracy radius in km
  • device_fingerprint - Optional device fingerprint for correlation
§Returns

true if an impossible travel alert was generated.

Source

pub fn whitelist_travel_route( &self, user_id: &str, country1: &str, country2: &str, )

Add a whitelisted travel route for a user.

Known travel patterns (e.g., home <-> work across countries) can be whitelisted to prevent false positives.

Source

pub fn remove_travel_whitelist( &self, user_id: &str, country1: &str, country2: &str, )

Remove a whitelisted travel route.

Source

pub fn travel_stats(&self) -> TravelStats

Get impossible travel detection statistics.

Source

pub fn clear_travel_history(&self, user_id: &str)

Clear impossible travel history for a user.

Source

pub fn get_summary(&self, options: TrendQueryOptions) -> TrendsSummary

Get overall trends summary.

Get detailed trends by type.

Source

pub fn get_signals_for_entity( &self, entity_id: &str, options: TrendQueryOptions, ) -> Vec<Signal>

Get signals for an entity.

Source

pub fn get_signals(&self, options: TrendQueryOptions) -> Vec<Signal>

Get all signals matching criteria.

Source

pub fn get_anomalies(&self, options: AnomalyQueryOptions) -> Vec<Anomaly>

Get anomalies matching criteria.

Source

pub fn get_anomaly(&self, id: &str) -> Option<Anomaly>

Get a specific anomaly by ID.

Source

pub fn active_anomaly_count(&self) -> usize

Get count of active anomalies.

Source

pub fn get_correlations( &self, options: CorrelationQueryOptions, ) -> Vec<Correlation>

Get correlations matching criteria.

Source

pub fn get_entity_correlations( &self, entity_id: &str, options: CorrelationQueryOptions, ) -> Vec<Correlation>

Get correlations for a specific entity.

Source

pub fn stats(&self) -> TrendsManagerStats

Get manager statistics.

Source

pub fn stats_snapshot(&self) -> TrendsStats

Get a stats snapshot for API responses.

Source

pub fn clear(&self)

Clear all data.

Source

pub fn cleanup(&self)

Cleanup old data.

Source

pub fn destroy(&self)

Shutdown the manager.

Source

pub fn is_enabled(&self) -> bool

Check if enabled.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
Source§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
Source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
Source§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Sync + Send>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<A, B, T> HttpServerConnExec<A, B> for T
where B: Body,