## 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
