Skip to content

Take Resource Unavailability into Account During Scheduling #60

Description

@lredor

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions