Skip to main content

DailySummary

Struct DailySummary 

Source
pub struct DailySummary {
    pub date: NaiveDate,
    pub duration: Duration,
    pub productivity: f64,
}
Expand description

Represents a complete work summary for a single calendar day.

This structure encapsulates all the key metrics needed to understand work performance on a given day, including both time-based and productivity-based measurements. It serves as the fundamental unit for monthly reporting and analysis.

§Data Components

§Duration Tracking

The duration represents net productive work time:

  • Gross Time: Total presence time (workday start to end)
  • Pause Time: All break periods during the day
  • Net Time: Gross time minus pause time (stored in duration field)

§Productivity Metrics

Productivity is calculated as a percentage representing work efficiency:

  • Formula: (Net Work Time / Gross Presence Time) × 100
  • Range: 0.0 to 100.0 (theoretical maximum)
  • Typical Values: 70-90% for most office work patterns
  • Factors: Affected by meeting frequency, break patterns, and work type

§Use Cases

§Individual Analysis

  • Daily productivity tracking and improvement
  • Work pattern analysis and optimization
  • Break frequency and duration analysis

§Organizational Reporting

  • Monthly time sheets and hour summaries
  • Productivity benchmarking across teams
  • Resource allocation and planning data
  • Compliance with work hour regulations

§External Integration

  • Payroll system integration
  • Project time allocation
  • Client billing and invoicing
  • Performance review documentation

Fields§

§date: NaiveDate

The specific calendar date for this work summary.

Uses NaiveDate to avoid timezone complications in reporting. All daily summaries are associated with local calendar dates for consistency with user expectations and business requirements.

§Date Handling

  • Local Time: Uses system local time for date determination
  • Calendar Days: Aligned with user’s local calendar
  • Reporting Periods: Consistent with organizational calendars
  • Time Zones: Avoids complexity by using naive dates
§duration: Duration

The total net productive work duration for this day.

This represents the actual working time after subtracting all pause periods from the total presence time. It provides the most accurate measure of productive work hours.

§Calculation Method

Net Duration = (Workday End - Workday Start) - Total Pause Time

Example:
Workday: 09:00 - 17:30 (8h 30m total presence)
Pauses: 30m lunch + 15m coffee breaks = 45m
Net Duration: 8h 30m - 45m = 7h 45m

§Quality Considerations

  • Accuracy: Reflects actual productive work time
  • Billing: Suitable for client billing and time tracking
  • Analysis: Enables meaningful productivity analysis
  • Reporting: Meets organizational reporting standards
§productivity: f64

Work productivity percentage for this day (0.0 to 100.0).

This metric provides insight into work efficiency by comparing net productive time against total presence time. It helps identify patterns in work effectiveness and opportunities for improvement.

§Calculation Formula

Productivity = (Net Work Time / Gross Presence Time) × 100

Example:
Net Work: 7h 45m = 465 minutes
Gross Presence: 8h 30m = 510 minutes  
Productivity = (465 / 510) × 100 = 91.2%

§Interpretation Guidelines

  • 90-100%: Highly focused work with minimal interruptions
  • 80-90%: Good productivity with normal break patterns
  • 70-80%: Moderate productivity, may indicate heavy meeting load
  • 60-70%: Lower productivity, worth investigating causes
  • <60%: Potential issues with work patterns or data accuracy

§Factors Affecting Productivity

  • Meeting Density: High meeting days typically show lower productivity
  • Work Type: Creative work may have different patterns than administrative
  • Break Habits: More frequent short breaks vs. fewer long breaks
  • External Factors: Interruptions, system issues, training sessions

Trait Implementations§

Source§

impl Clone for DailySummary

Source§

fn clone(&self) -> DailySummary

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for DailySummary

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
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> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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