2989a6fa2c
First Wave 2 (safe refactor) slice. Move the read-only stats/overview aggregation out of the 3.3k-line JobApplicationsController into a dedicated, injectable AnalyticsService, and lift its response DTOs (JobStats, FunnelStagePoint, ResponseRatePoint, CompanyActivityPoint, AnalyticsOverviewDto) into Models/AnalyticsDtos.cs. - GetStats: ~44 lines -> 3 (delegates to AnalyticsService.GetStatsAsync). - GetAnalyticsOverview: ~82 lines -> 3 (delegates to GetAnalyticsOverviewAsync). - Registered AddScoped<AnalyticsService>(); controller keeps an optional ctor param with a `?? new AnalyticsService(db)` fallback so the 6 test sites that construct the controller directly keep compiling. - Logic is byte-identical (same tenant-scoped context, same projections) so behaviour is preserved. Backend suite: 92/92 green. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>