Move reviewer tracking logic inside the non-empty rows guard in both
approved-only and include-unapproved modes. This ensures zero-row
approved sheets don't pollute the reviewer set, fixing the approverName
calculation to only consider reviewers from included ReportDays.
Add test: approved sheet with zero rows and different reviewer correctly
excluded from approver tracking.
All 9 tests passing.
Co-Authored-By: claude-flow <ruv@ruv.net>
Implement AccomplishmentReportData and buildAccomplishmentReportData() for
generating programmer accomplishment reports. Supports both approved-only and
include-unapproved modes, with proper row filtering, day aggregation, metrics
calculation (totalSeconds, tasksCompleted, helpSeconds, secondsByCategory),
and approver tracking.
All 8 tests passing.
Co-Authored-By: claude-flow <ruv@ruv.net>