pub struct EvReport {Show 22 fields
pub as_of: DateTime<Utc>,
pub baseline_number: u32,
pub backfilled: bool,
pub bac: f32,
pub pv: f32,
pub ev: f32,
pub ac: f32,
pub sv: f32,
pub cv: f32,
pub spi: Option<f32>,
pub cpi: Option<f32>,
pub eac: Option<f32>,
pub etc: Option<f32>,
pub vac: Option<f32>,
pub tcpi: Option<f32>,
pub undefined: Vec<Undefined>,
pub rows: Vec<EvRow>,
pub critical_float_consumed_hours: f32,
pub alerts: Vec<String>,
pub excluded_unbaselined: Vec<String>,
pub archived: bool,
pub active_plan: Option<String>,
}Expand description
Full earned-value report.
Fields§
§as_of: DateTime<Utc>PV status date. EV and AC reflect progress and actuals recorded up to the moment the report was computed.
baseline_number: u32§backfilled: boolTrue when the baseline was taken with backfill_from.
bac: f32§pv: f32§ev: f32§ac: f32§sv: f32§cv: f32§spi: Option<f32>§cpi: Option<f32>§eac: Option<f32>§etc: Option<f32>§vac: Option<f32>§tcpi: Option<f32>§undefined: Vec<Undefined>§rows: Vec<EvRow>§critical_float_consumed_hours: f32§alerts: Vec<String>§excluded_unbaselined: Vec<String>Ids in the live graph but absent from the baseline (sorted, synthetic
endpoints excluded). They earn no value and carry no budget until a
re-baseline, but their spend counts in AC at rate 1.0 (their live
cost_rate applies only once a baseline row exists).
archived: boolTrue when the plan belongs to an effectively archived variant (its
line is archived or the variant itself is); false for unnamed plans
and live variants. Archived variants stay readable through ev.
active_plan: Option<String>Only when EvReport::archived is true: the name of the project’s
single active plan line, so a caller holding a stale id learns where
the live work is. None when not archived or when the project has
zero or several active lines; omitted from the wire when None (the
report’s nulls are reserved for metrics explained by
EvReport::undefined).