pub struct AnalyticsEvent {
pub event_id: String,
pub date: Option<String>,
pub class: EventClass,
pub issue: Option<u32>,
pub scope_id: Option<String>,
pub delta: Option<i64>,
pub unit: Option<String>,
pub source: EventSource,
pub snapshot_id: Option<String>,
pub detail: String,
}Expand description
One recorded contribution to a scope’s series (data-model.md §2).
Every field is either read from the record or explicitly None. delta is the
count-level contribution of the event and is None where the event does not
carry one at that precision — a repoint, a membership change and an estimate
change all name their before/after values in Self::detail, and inventing a
number for them would be the arithmetic C-003 forbids. unit is reserved for the
estimate mode’s explicit conversion (WP03) and is None here.
Fields§
§event_id: StringStable identity, and therefore the idempotency key (C-002).
date: Option<String>The canonical YYYY-MM-DD day the event is placed on, or None when the
recorded timestamp carried no readable calendar date. None is coverage, not
a fabricated day (C-005).
class: EventClassThe closed classification.
issue: Option<u32>The issue the event belongs to, when the source ref is an issue number.
scope_id: Option<String>The scope the event was classified against.
delta: Option<i64>The count-level contribution, when the event carries one.
unit: Option<String>The estimate unit, for the estimate mode’s conversions (WP03).
source: EventSourceWhere the contribution came from.
snapshot_id: Option<String>The closed snapshot the contribution came from, when it is snapshot evidence.
detail: StringThe recorded detail, verbatim, so a reader can see the before/after values the classification did not turn into numbers.
Implementations§
Source§impl AnalyticsEvent
impl AnalyticsEvent
Sourcepub fn from_history(
source_ref: &str,
index: usize,
scope: &AnalyticsScope,
event: &HistoryEvent,
) -> Self
pub fn from_history( source_ref: &str, index: usize, scope: &AnalyticsScope, event: &HistoryEvent, ) -> Self
Classify one recorded History entry (T002–T004).
source_ref names the file the entry lives in (an issue number, a generated
cycle id) and index is its ordinal among that section’s parsed events
(see EventIndex::contribute_history, which is what assigns it); together
they are the event’s stable identity, so re-reading the same file classifies
the same event to the same id.
Sourcepub fn from_snapshot(
snapshot_id: &str,
date: Option<&str>,
class: EventClass,
scope_id: Option<&str>,
delta: Option<i64>,
) -> Self
pub fn from_snapshot( snapshot_id: &str, date: Option<&str>, class: EventClass, scope_id: Option<&str>, delta: Option<i64>, ) -> Self
A contribution read from an immutable closed snapshot (T003/T005).
The caller supplies values it read from the snapshot; nothing here
derives a number from a schedule or a configuration, because those are
exactly what a later edit is allowed to change (C-006). The event id is the
snapshot’s own stable snapshot_id, so the same closed snapshot contributes
once however many times it is read.
Trait Implementations§
Source§impl Clone for AnalyticsEvent
impl Clone for AnalyticsEvent
Source§impl Debug for AnalyticsEvent
impl Debug for AnalyticsEvent
impl Eq for AnalyticsEvent
Source§impl PartialEq for AnalyticsEvent
impl PartialEq for AnalyticsEvent
impl StructuralPartialEq for AnalyticsEvent
Auto Trait Implementations§
impl Freeze for AnalyticsEvent
impl RefUnwindSafe for AnalyticsEvent
impl Send for AnalyticsEvent
impl Sync for AnalyticsEvent
impl Unpin for AnalyticsEvent
impl UnsafeUnpin for AnalyticsEvent
impl UnwindSafe for AnalyticsEvent
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<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.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