perf(reports): skip computing hidden metrics in summary

Instead of filtering metrics after computation, skip the expensive
database queries entirely for hidden metrics. This prevents timeouts
on accounts with large datasets.

- MetricBuilder now accepts hidden_metrics param and returns nil for
  hidden metrics (compacted from response)
- Reports controller passes hidden_metrics to builder params
This commit is contained in:
Shivam Mishra
2026-02-04 13:44:15 +05:30
parent a34a916b46
commit a4cee4f72d
2 changed files with 29 additions and 8 deletions
@@ -15,11 +15,11 @@ class Api::V2::Accounts::ReportsController < Api::V1::Accounts::BaseController
end
def summary
render json: filter_summary_with_previous(build_summary(:summary))
render json: build_summary(:summary)
end
def bot_summary
render json: filter_summary_with_previous(build_summary(:bot_summary))
render json: build_summary(:bot_summary)
end
def agents
@@ -107,7 +107,8 @@ class Api::V2::Accounts::ReportsController < Api::V1::Accounts::BaseController
common_params.merge({
since: range[:current][:since],
until: range[:current][:until],
timezone_offset: params[:timezone_offset]
timezone_offset: params[:timezone_offset],
hidden_metrics: hidden_metrics
})
end
@@ -115,7 +116,8 @@ class Api::V2::Accounts::ReportsController < Api::V1::Accounts::BaseController
common_params.merge({
since: range[:previous][:since],
until: range[:previous][:until],
timezone_offset: params[:timezone_offset]
timezone_offset: params[:timezone_offset],
hidden_metrics: hidden_metrics
})
end