--- story_id: sprint_2_story_3 sprint: sprint_2 priority: P1 status: completed story_points: 8 estimated_days: 3-4 actual_days: 1 created_date: 2025-11-05 start_date: 2025-11-05 completion_date: 2025-11-05 assignee: Backend Team --- # Story 3: Sprint Management Module **Sprint**: Sprint 2 **Priority**: P1 (Should Have) **Estimated**: 3-4 days (Day 31-34) **Owner**: Backend Team ## Description Implement complete Sprint management functionality to support agile sprint planning, tracking, and burndown analytics. Enable teams to organize work into time-boxed iterations. ## Acceptance Criteria - [x] Sprint entity created with proper domain logic - [x] 11 CQRS API endpoints implemented (Create, Update, Delete, Get, GetByProject, GetActive, GetBurndown, Start, Complete, AddTask, RemoveTask) - [x] Burndown chart data calculation implemented - [x] SignalR real-time notifications for Sprint events - [x] Multi-tenant isolation enforced - [x] Integration tests with >= 90% coverage (20 passing tests) - [x] All tests passing ## Technical Requirements **Sprint Entity**: - Fields: `SprintId`, `TenantId`, `ProjectId`, `Name`, `Goal`, `StartDate`, `EndDate`, `Status` (Planned/Active/Completed) - Relationships: `Project` (many-to-one), `Tasks` (one-to-many) - Business Logic: Validate dates, status transitions, capacity tracking **API Endpoints**: 1. POST /api/sprints - Create Sprint 2. PUT /api/sprints/{id} - Update Sprint 3. DELETE /api/sprints/{id} - Delete Sprint 4. GET /api/sprints/{id} - Get Sprint by ID 5. GET /api/sprints - List Sprints (with filters) 6. POST /api/sprints/{id}/start - Start Sprint 7. POST /api/sprints/{id}/complete - Complete Sprint 8. POST /api/sprints/{id}/tasks/{taskId} - Add Task to Sprint 9. DELETE /api/sprints/{id}/tasks/{taskId} - Remove Task from Sprint **Burndown Chart**: - Calculate remaining story points per day - Track completed vs remaining work - Return data for chart visualization **Technology Stack**: - Domain Layer: Sprint aggregate root + domain events - Application Layer: CQRS (5 commands + 4 queries) - Infrastructure Layer: PostgreSQL + EF Core - Real-time: SignalR SprintHub ## Tasks - [x] [Task 1](sprint_2_story_3_task_1.md) - Create Sprint Aggregate Root and Domain Events - [x] [Task 2](sprint_2_story_3_task_2.md) - Implement Sprint Repository and EF Core Configuration - [x] [Task 3](sprint_2_story_3_task_3.md) - Create CQRS Commands and Queries - [x] [Task 4](sprint_2_story_3_task_4.md) - Implement Burndown Chart Calculation - [x] [Task 5](sprint_2_story_3_task_5.md) - Add SignalR Real-Time Notifications - [x] [Task 6](sprint_2_story_3_task_6.md) - Write Integration Tests **Progress**: 6/6 tasks completed (100%) ## Dependencies **Prerequisites**: - ✅ ProjectManagement Module 95% Production Ready (Day 16) - ✅ SignalR Backend 100% Complete (Day 17) - ✅ Multi-Tenant Security Complete (Day 15) ## Definition of Done - All 6 tasks completed - 9 API endpoints working - Burndown chart data calculation implemented - SignalR notifications working - All tests passing (>= 90% coverage) - Multi-tenant isolation verified - Code reviewed and approved - Git commit created ## Notes **Sprint Lifecycle**: 1. Planned → Active (Start Sprint) 2. Active → Completed (Complete Sprint) 3. Cannot delete Active sprint (must complete first) **Burndown Chart Formula**: - Total Story Points = Sum of all tasks in sprint - Remaining Story Points = Sum of incomplete tasks - Daily Burndown = [(Start Date, Total), ..., (Today, Remaining), ..., (End Date, 0 ideal)] --- **Created**: 2025-11-05 by Backend Agent