pub struct InsightsEngine { /* private fields */ }Expand description
The ML traffic insights engine (DW-092): in-process, hand-rolled
EWMA forecasting and seasonal-baseline anomaly detection. Held
inside crate::analytics::EmbeddedAnalytics behind an Arc and
fed by the live-sketch window rotation.
Implementations§
Source§impl InsightsEngine
impl InsightsEngine
Sourcepub fn new(config: &AnalyticsInsights) -> Arc<Self>
pub fn new(config: &AnalyticsInsights) -> Arc<Self>
Construct from the insights config. baseline_windows is
clamped to at least 1 (the ring buffer must hold at least one
window).
Sourcepub fn forecast_enabled(&self) -> bool
pub fn forecast_enabled(&self) -> bool
Whether forecasting is enabled.
Sourcepub fn anomaly_enabled(&self) -> bool
pub fn anomaly_enabled(&self) -> bool
Whether anomaly detection is enabled.
Sourcepub fn baseline_windows(&self) -> u64
pub fn baseline_windows(&self) -> u64
The configured baseline window cap.
Sourcepub fn observe(&self, window: BaselineWindow)
pub fn observe(&self, window: BaselineWindow)
Observe one completed sketch window: add it to the recent ring buffer (evicting the oldest when full) and update the minute-of-day seasonal entry with an exponential moving average.
Sourcepub fn forecast(&self, now_ms: i64) -> ForecastResult
pub fn forecast(&self, now_ms: i64) -> ForecastResult
Forecast the next window’s shape: the seasonal average for the next minute-of-day, trend-adjusted by an EWMA over the recent ring. Confidence is the fraction of the seasonal entry’s data volume relative to a full day of observations (capped at 1.0).
Sourcepub fn detect_anomaly(&self, current: &BaselineWindow) -> AnomalyResult
pub fn detect_anomaly(&self, current: &BaselineWindow) -> AnomalyResult
Detect whether the current window is anomalous relative to the
seasonal baseline for its minute-of-day. A metric is flagged
when the current value exceeds the baseline by a factor of 2.0
(the ANOMALY_FACTOR constant). The anomaly score is the
maximum current/baseline ratio across the checked metrics,
normalized to [0, 1].
Auto Trait Implementations§
impl !Freeze for InsightsEngine
impl RefUnwindSafe for InsightsEngine
impl Send for InsightsEngine
impl Sync for InsightsEngine
impl Unpin for InsightsEngine
impl UnwindSafe for InsightsEngine
Blanket Implementations§
§impl<T> AnyExt for T
impl<T> AnyExt for T
§fn downcast_ref<T>(this: &Self) -> Option<&T>where
T: Any,
fn downcast_ref<T>(this: &Self) -> Option<&T>where
T: Any,
T behind reference§fn downcast_mut<T>(this: &mut Self) -> Option<&mut T>where
T: Any,
fn downcast_mut<T>(this: &mut Self) -> Option<&mut T>where
T: Any,
T behind mutable reference§fn downcast_rc<T>(this: Rc<Self>) -> Result<Rc<T>, Rc<Self>>where
T: Any,
fn downcast_rc<T>(this: Rc<Self>) -> Result<Rc<T>, Rc<Self>>where
T: Any,
T behind Rc pointer§fn downcast_arc<T>(this: Arc<Self>) -> Result<Arc<T>, Arc<Self>>where
T: Any,
fn downcast_arc<T>(this: Arc<Self>) -> Result<Arc<T>, Arc<Self>>where
T: Any,
T behind Arc pointer§fn downcast_box<T>(this: Box<Self>) -> Result<Box<T>, Box<Self>>where
T: Any,
fn downcast_box<T>(this: Box<Self>) -> Result<Box<T>, Box<Self>>where
T: Any,
T behind Box pointer§fn downcast_move<T>(this: Self) -> Option<T>
fn downcast_move<T>(this: Self) -> Option<T>
Self to T,
useful only in generic context as a workaround for specializationSource§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
§impl<T, X> CoerceTo<T> for Xwhere
T: CoerceFrom<X> + ?Sized,
impl<T, X> CoerceTo<T> for Xwhere
T: CoerceFrom<X> + ?Sized,
fn coerce_rc_to(self: Rc<X>) -> Rc<T>
fn coerce_box_to(self: Box<X>) -> Box<T>
fn coerce_ref_to(&self) -> &T
fn coerce_mut_to(&mut self) -> &mut T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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