Crate utf8proj_core

Crate utf8proj_core 

Source
Expand description

§utf8proj-core

Core domain model and traits for the utf8proj scheduling engine.

This crate provides:

  • Domain types: Project, Task, Resource, Calendar, Schedule
  • Core traits: Scheduler, WhatIfAnalysis, Renderer
  • Error types and result aliases

§Example

use utf8proj_core::{Project, Task, Resource, Duration};

let mut project = Project::new("My Project");
project.tasks.push(
    Task::new("design")
        .effort(Duration::days(5))
        .assign("dev")
);
project.tasks.push(
    Task::new("implement")
        .effort(Duration::days(10))
        .depends_on("design")
        .assign("dev")
);
project.resources.push(Resource::new("dev").capacity(1.0));

Structs§

Assignment
Resource assignment for a specific period
Calendar
Working time definitions
CalendarException
Calendar exception (override for specific dates)
CalendarImpact
Impact of calendar on task scheduling
CollectingEmitter
A simple diagnostic emitter that collects diagnostics into a Vec
Conflict
Scheduling conflict
ConstraintEffect
Effect of a temporal constraint on task scheduling
CostRange
Cost range for scheduled tasks (RFC-0001)
Dependency
Task dependency with type and lag
Diagnostic
A diagnostic message emitted during analysis or scheduling
Duration
Duration in working time
Explanation
Explanation of a scheduling decision
FeasibilityResult
Result of feasibility check
Holiday
Holiday definition
Money
Monetary amount with currency
Project
A complete project definition
RateRange
Rate range for abstract resource profiles (RFC-0001)
Resource
A person or equipment that can be assigned to tasks
ResourceProfile
Abstract resource profile for planning (RFC-0001)
ResourceRef
Reference to a resource with allocation units
Scenario
Alternative scenario for what-if analysis
Schedule
The result of scheduling a project
ScheduledTask
A task with computed schedule information
SchedulingCapabilities
Capabilities available for a given scheduling mode
SourceSpan
Source location span for diagnostic highlighting
StatusClassifier
Classifies tasks by progress percentage into workflow stages.
Suggestion
Suggestion for resolving issues
Task
A schedulable unit of work
TimeRange
Time range within a day (in minutes from midnight)
Trait
A trait that modifies resource rates (RFC-0001)
WhatIfReport
Result of what-if analysis

Enums§

ConflictType
Constraint
Constraint for what-if analysis
ConstraintEffectType
Type of effect a constraint has on scheduling
CostPolicy
Policy for calculating expected cost from ranges (RFC-0001)
DependencyType
Types of task dependencies
DiagnosticCode
Diagnostic code identifying the specific diagnostic type
RenderError
Rendering error
ResourceRate
Resource rate that can be either fixed or a range (RFC-0001)
ScenarioOverride
Override for a scenario
ScheduleError
Scheduling error
SchedulingMode
Scheduling mode classification for capability awareness
Severity
Diagnostic severity level
TaskConstraint
Constraint on task scheduling
TaskStatus
Task status for progress tracking

Traits§

Classifier
Classifiers discretize continuous task attributes into categorical labels.
DiagnosticEmitter
Trait for receiving diagnostic messages
Renderer
Output rendering
Scheduler
Core scheduling abstraction
WhatIfAnalysis
What-if analysis capabilities (typically BDD-powered)

Functions§

group_by
Groups tasks by classifier categories.

Type Aliases§

CalendarId
Unique identifier for a calendar
ProfileId
Unique identifier for a resource profile
ResourceId
Unique identifier for a resource
TaskId
Unique identifier for a task
TraitId
Unique identifier for a trait