Files
headroom/openspec/changes/headroom-foundation/specs/team-member-management/spec.md

3.1 KiB

ADDED Requirements

Requirement: Create team member

The system SHALL allow authorized users to create new team members with name, role, hourly rate, and active status.

Scenario: Successful team member creation

  • WHEN a manager creates a team member with valid name "John Doe", role "Backend Developer", and hourly rate $150
  • THEN the system creates the team member with active status set to true by default
  • AND the system assigns a unique identifier to the team member
  • AND the system returns the created team member details

Scenario: Invalid hourly rate

  • WHEN a manager attempts to create a team member with hourly rate of $0 or negative value
  • THEN the system rejects the request with validation error "Hourly rate must be greater than 0"

Scenario: Missing required fields

  • WHEN a manager attempts to create a team member without name or role
  • THEN the system rejects the request with validation error listing missing required fields

Requirement: View team members

The system SHALL allow authorized users to view the list of team members with their details.

Scenario: View all team members

  • WHEN a manager requests the team members list
  • THEN the system returns all team members with name, role, hourly rate, and active status
  • AND the list includes both active and inactive team members

Scenario: Filter active team members only

  • WHEN a manager requests team members filtered by active status
  • THEN the system returns only team members where active is true

Requirement: Update team member

The system SHALL allow authorized users to update team member details including role, hourly rate, and active status.

Scenario: Successful update

  • WHEN a manager updates a team member's hourly rate from $150 to $175
  • THEN the system updates the team member record
  • AND the system returns the updated team member details

Scenario: Deactivate team member

  • WHEN a manager sets a team member's active status to false
  • THEN the system marks the team member as inactive
  • AND the system preserves all historical allocation and actuals data for the team member

Scenario: Cannot update non-existent team member

  • WHEN a manager attempts to update a team member that does not exist
  • THEN the system returns a 404 Not Found error

Requirement: Cannot delete team member with allocations

The system SHALL prevent deletion of team members who have active allocations or logged actuals.

Scenario: Attempt to delete team member with allocations

  • WHEN a manager attempts to delete a team member who has allocations in current or future months
  • THEN the system rejects the deletion with error "Cannot delete team member with active allocations"
  • AND the system suggests deactivating the team member instead

Scenario: Attempt to delete team member with actuals

  • WHEN a manager attempts to delete a team member who has logged actuals
  • THEN the system rejects the deletion with error "Cannot delete team member with historical data"
  • AND the system suggests deactivating the team member instead