4.9 KiB
4.9 KiB
ADDED Requirements
Requirement: Create project
The system SHALL allow authorized users to create projects with project code, title, type, and status.
Scenario: Create new project
- WHEN a manager creates a project with code "PROJ-001", title "Client Dashboard Redesign", and type "Project"
- THEN the system creates the project with initial status "Initial"
- AND the system assigns a unique identifier to the project
Scenario: Project code must be unique
- WHEN attempting to create a project with a code that already exists
- THEN the system rejects the request with validation error "Project code must be unique"
Requirement: Project status state machine
The system SHALL enforce project status transitions according to defined workflow states.
Scenario: Valid status transition
- WHEN a project in "Initial" status transitions to "Gathering Estimates"
- THEN the system updates the project status
Scenario: Project reaches Estimate Approved
- WHEN a project transitions to "Estimate Approved" status
- THEN the system requires approved estimate to be set
- AND the approved estimate must be greater than 0
Scenario: Project workflow progression
- WHEN a project progresses through statuses: Initial → Gathering Estimates → Estimate Pending Approval → Estimate Approved → Funded → Scheduled → In-Progress → Ready for Prod → Done
- THEN the system allows each transition in sequence
Scenario: Estimate rework path
- WHEN a project in "Estimate Pending Approval" status requires changes
- THEN the system allows transition back to "Estimate Rework" status
- AND from "Estimate Rework" the project can return to "Estimate Pending Approval"
Scenario: Project on hold
- WHEN a project is placed "On-Hold" from any active status
- THEN the system allows the transition
- AND allocations for future months are flagged but not deleted
Scenario: Project cancelled
- WHEN a project is marked as "Cancelled"
- THEN the system prevents new allocations
- AND existing allocations are preserved for historical tracking
Requirement: Manage approved estimate
The system SHALL track the total approved billable hours for each project.
Scenario: Set approved estimate
- WHEN a project reaches "Estimate Approved" status with approved estimate of 120 hours
- THEN the system stores the approved estimate
- AND the approved estimate becomes the baseline for allocation validation
Scenario: Update approved estimate
- WHEN a manager updates the approved estimate from 120 to 150 hours
- THEN the system updates the approved estimate
- AND the system re-validates all allocations against the new estimate
Requirement: Manage forecasted effort
The system SHALL track month-by-month breakdown of forecasted effort for each project.
Scenario: Set forecasted effort
- WHEN a manager sets forecasted effort for a 120-hour project as: February 40h, March 60h, April 20h
- THEN the system stores the forecasted effort as JSON: {"2026-02": 40, "2026-03": 60, "2026-04": 20}
Scenario: Forecasted effort must equal approved estimate
- WHEN the sum of forecasted effort (40 + 60 + 20 = 120) equals the approved estimate (120)
- THEN the system accepts the forecasted effort
Scenario: Forecasted effort validation fails
- WHEN the sum of forecasted effort (40 + 60 + 30 = 130) exceeds the approved estimate (120) by more than 5%
- THEN the system rejects the forecasted effort with validation error "Forecasted effort exceeds approved estimate"
Scenario: Under-forecasted effort
- WHEN the sum of forecasted effort (40 + 50 + 10 = 100) is less than the approved estimate (120)
- THEN the system displays a YELLOW warning "Under-forecasted by 20 hours"
Requirement: Distinguish project types
The system SHALL differentiate between "Project" (billable) and "Support" (ongoing ops) project types.
Scenario: Billable project
- WHEN a project is created with type "Project"
- THEN the system tracks it as billable work
- AND it appears in revenue forecasts
Scenario: Support project
- WHEN a project is created with type "Support"
- THEN the system tracks it as ongoing operations
- AND it appears in capacity allocation but may have different reporting treatment
Requirement: Cannot allocate to completed or cancelled projects
The system SHALL prevent new allocations to projects in "Done" or "Cancelled" status.
Scenario: Attempt to allocate to done project
- WHEN attempting to create an allocation for a project with status "Done"
- THEN the system rejects the allocation with error "Cannot allocate to completed projects"
Scenario: Attempt to allocate to cancelled project
- WHEN attempting to create an allocation for a project with status "Cancelled"
- THEN the system rejects the allocation with error "Cannot allocate to cancelled projects"