feat(reports): filter hidden metrics from API responses

Apply MetricFilter concern to reports controllers:
- ReportsController: return empty array for hidden timeseries metrics,
  filter summary and bot_summary responses
- SummaryReportsController: filter hidden metrics from array responses
This commit is contained in:
Shivam Mishra
2026-02-04 13:20:28 +05:30
parent 7e65cc752e
commit b09a2c25fa
2 changed files with 9 additions and 3 deletions
@@ -1,21 +1,25 @@
class Api::V2::Accounts::ReportsController < Api::V1::Accounts::BaseController
include Api::V2::Accounts::ReportsHelper
include Api::V2::Accounts::HeatmapHelper
include Reports::MetricFilter
before_action :check_authorization
def index
# Return empty timeseries array for hidden metrics (preserves expected response shape)
return render json: [] if metric_hidden?(params[:metric])
builder = V2::Reports::Conversations::ReportBuilder.new(Current.account, report_params)
data = builder.timeseries
render json: data
end
def summary
render json: build_summary(:summary)
render json: filter_summary_with_previous(build_summary(:summary))
end
def bot_summary
render json: build_summary(:bot_summary)
render json: filter_summary_with_previous(build_summary(:bot_summary))
end
def agents
@@ -1,4 +1,6 @@
class Api::V2::Accounts::SummaryReportsController < Api::V1::Accounts::BaseController
include Reports::MetricFilter
before_action :check_authorization
before_action :prepare_builder_params, only: [:agent, :team, :inbox, :label, :channel]
@@ -40,7 +42,7 @@ class Api::V2::Accounts::SummaryReportsController < Api::V1::Accounts::BaseContr
def render_report_with(builder_class)
builder = builder_class.new(account: Current.account, params: @builder_params)
render json: builder.build
render json: filter_hidden_metrics_from_array(builder.build)
end
def permitted_params