refactor(analytics): extract AnalyticsService from JobApplicationsController
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>
This commit is contained in:
@@ -153,6 +153,7 @@ builder.Services.AddHttpClient("ai-service", client =>
|
||||
});
|
||||
|
||||
builder.Services.AddMemoryCache();
|
||||
builder.Services.AddScoped<AnalyticsService>();
|
||||
builder.Services.AddSingleton<ISummarizerService, SummarizerService>();
|
||||
builder.Services.AddSingleton<ICvAiClassifier, CvAiClassifier>();
|
||||
builder.Services.AddSingleton<ICvAiNormalizer, CvAiNormalizer>();
|
||||
|
||||
Reference in New Issue
Block a user