Take Resource Unavailability into Account During Scheduling
Summary
Update Pepper scheduling capabilities to take resource unavailability periods into account when computing task schedules.
This feature depends on #59 ("Add Resource Unavailability Management"), which introduces the ability to define and manage resource unavailability periods.
The goal is to produce more realistic schedules by considering the actual availability of assigned resources.
Depends On
This issue cannot be implemented until resource unavailability periods are available in the domain model.
Motivation
Pepper currently allows project managers to define tasks, durations, and resource assignments.
However, a schedule is only realistic if it reflects the actual availability of the assigned resources.
When a resource is unavailable due to vacation, training, sick leave, or any other planned absence, the scheduling engine should consider these periods when calculating task start and end dates.
Scope
Included
- Consider resource unavailability periods during schedule computation.
- Recompute task dates when resource availability changes.
- Preserve planned effort while extending the calendar duration when required.
- Support tasks assigned to one or several resources.
Excluded
- Automatic conflict resolution.
- Schedule optimization.
Expected Behavior
Single Resource
When a task is assigned to a single resource, the task can only progress while that resource is available.
Periods of unavailability must not contribute to task execution.
Multiple Resources
When a task is assigned to multiple resources, the scheduling engine should take into account the available capacity of the assigned resources.
The loss of one resource may slow down task completion without necessarily stopping the task entirely.
Functional Requirements
FR1 - Ignore Unavailable Periods
Periods marked as unavailable for a resource must not be considered productive time for that resource.
FR2 - Automatic Schedule Recalculation
When an unavailability period is added, modified, or removed, impacted task schedules must be recalculated.
FR3 - Preserve Planned Effort
Resource unavailability must not reduce the planned effort of a task.
Instead, the calendar duration of the task may increase to compensate for the unavailable periods.
FR4 - Support Multiple Resources
Schedule calculations must consider the effective capacity available from all assigned resources.
FR5 - Propagate Schedule Changes
When task dates change due to resource availability, dependent tasks must be updated according to existing scheduling rules.
FR6 - Critical Path Recalculation
Changes in task dates caused by resource unavailability must be reflected in critical path calculations when applicable.
Reference Scenario
Initial Situation
- Task start date: June 8
- Planned duration: 20 working days
- Assigned resources: 1 resource at 100%
- Resource unavailable: June 15 to June 20 inclusive
Expected Result
The unavailable period is excluded from the task execution timeline.
The task end date is automatically postponed to ensure that the resource still contributes the equivalent of 20 effective working days.
User Stories
Schedule a task with unavailable resources
As a project manager,
I want task schedules to reflect the actual availability of assigned resources,
So that project dates are realistic.
Update a resource availability period
As a project manager,
I want schedules to be automatically updated when resource availability changes,
So that I do not have to manually adjust task dates.
Acceptance Criteria
AC1 - Single Resource
Given a task assigned to a single resource,
When that resource becomes unavailable during task execution,
Then the task end date is recalculated to preserve the planned effort.
AC2 - Unavailability Removal
Given a task whose schedule has been extended because of resource unavailability,
When the unavailability period is removed,
Then the task schedule is recalculated accordingly.
AC3 - Multiple Resources
Given a task assigned to multiple resources,
When one of the resources becomes unavailable,
Then the schedule reflects the remaining available capacity.
AC4 - Dependency Propagation
Given a chain of dependent tasks,
When resource unavailability delays one task,
Then dependent tasks are updated according to scheduling rules.
AC5 - Project Persistence
Given a project containing resource assignments and unavailability periods,
When the project is reopened,
Then the computed schedule remains consistent with resource availability.
Notes
This feature establishes the foundation for future planning improvements such as:
- Resource capacity management.
- Conflict detection.
- Workload forecasting.
- Schedule optimization.
The exact scheduling algorithm is intentionally left open and can evolve independently of this functional requirement.
Take Resource Unavailability into Account During Scheduling
Summary
Update Pepper scheduling capabilities to take resource unavailability periods into account when computing task schedules.
This feature depends on #59 ("Add Resource Unavailability Management"), which introduces the ability to define and manage resource unavailability periods.
The goal is to produce more realistic schedules by considering the actual availability of assigned resources.
Depends On
This issue cannot be implemented until resource unavailability periods are available in the domain model.
Motivation
Pepper currently allows project managers to define tasks, durations, and resource assignments.
However, a schedule is only realistic if it reflects the actual availability of the assigned resources.
When a resource is unavailable due to vacation, training, sick leave, or any other planned absence, the scheduling engine should consider these periods when calculating task start and end dates.
Scope
Included
Excluded
Expected Behavior
Single Resource
When a task is assigned to a single resource, the task can only progress while that resource is available.
Periods of unavailability must not contribute to task execution.
Multiple Resources
When a task is assigned to multiple resources, the scheduling engine should take into account the available capacity of the assigned resources.
The loss of one resource may slow down task completion without necessarily stopping the task entirely.
Functional Requirements
FR1 - Ignore Unavailable Periods
Periods marked as unavailable for a resource must not be considered productive time for that resource.
FR2 - Automatic Schedule Recalculation
When an unavailability period is added, modified, or removed, impacted task schedules must be recalculated.
FR3 - Preserve Planned Effort
Resource unavailability must not reduce the planned effort of a task.
Instead, the calendar duration of the task may increase to compensate for the unavailable periods.
FR4 - Support Multiple Resources
Schedule calculations must consider the effective capacity available from all assigned resources.
FR5 - Propagate Schedule Changes
When task dates change due to resource availability, dependent tasks must be updated according to existing scheduling rules.
FR6 - Critical Path Recalculation
Changes in task dates caused by resource unavailability must be reflected in critical path calculations when applicable.
Reference Scenario
Initial Situation
Expected Result
The unavailable period is excluded from the task execution timeline.
The task end date is automatically postponed to ensure that the resource still contributes the equivalent of 20 effective working days.
User Stories
Schedule a task with unavailable resources
As a project manager,
I want task schedules to reflect the actual availability of assigned resources,
So that project dates are realistic.
Update a resource availability period
As a project manager,
I want schedules to be automatically updated when resource availability changes,
So that I do not have to manually adjust task dates.
Acceptance Criteria
AC1 - Single Resource
Given a task assigned to a single resource,
When that resource becomes unavailable during task execution,
Then the task end date is recalculated to preserve the planned effort.
AC2 - Unavailability Removal
Given a task whose schedule has been extended because of resource unavailability,
When the unavailability period is removed,
Then the task schedule is recalculated accordingly.
AC3 - Multiple Resources
Given a task assigned to multiple resources,
When one of the resources becomes unavailable,
Then the schedule reflects the remaining available capacity.
AC4 - Dependency Propagation
Given a chain of dependent tasks,
When resource unavailability delays one task,
Then dependent tasks are updated according to scheduling rules.
AC5 - Project Persistence
Given a project containing resource assignments and unavailability periods,
When the project is reopened,
Then the computed schedule remains consistent with resource availability.
Notes
This feature establishes the foundation for future planning improvements such as:
The exact scheduling algorithm is intentionally left open and can evolve independently of this functional requirement.