pub struct Bottleneck {
pub task_id: String,
pub task_name: String,
pub blocks_count: usize,
pub blocked_hours: f32,
pub roi: f32,
pub effort_hours: f32,
}Expand description
A bottleneck task that blocks significant downstream work.
Fields§
§task_id: StringThe bottleneck task ID.
task_name: StringTask name for display.
blocks_count: usizeNumber of tasks blocked by this one (directly or transitively).
blocked_hours: f32Total scheduled hours of work blocked. Uses the scheduled length (duration_hours when set, else effort); earned value reads effort from the graph.
roi: f32ROI: blocked_hours / effort_hours (higher = higher priority). Both
are scheduled lengths; earned value reads effort from the graph.
effort_hours: f32Scheduled length of this task (duration_hours when set, else effort).
Trait Implementations§
Source§impl Clone for Bottleneck
impl Clone for Bottleneck
Source§impl Debug for Bottleneck
impl Debug for Bottleneck
Source§impl<'de> Deserialize<'de> for Bottleneck
impl<'de> Deserialize<'de> for Bottleneck
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Auto Trait Implementations§
impl Freeze for Bottleneck
impl RefUnwindSafe for Bottleneck
impl Send for Bottleneck
impl Sync for Bottleneck
impl Unpin for Bottleneck
impl UnsafeUnpin for Bottleneck
impl UnwindSafe for Bottleneck
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
Mutably borrows from an owned value. Read more
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoToolOutput for Twhere
T: Serialize + 'static,
impl<T> IntoToolOutput for Twhere
T: Serialize + 'static,
Source§fn into_tool_output(self) -> Result<ToolOutput, ToolExecutionError>
fn into_tool_output(self) -> Result<ToolOutput, ToolExecutionError>
Convert this value without routing structured data through a string.