Add GitLab Duo Code Review requests by role chart

What does this MR do and why?

Add GitLab Duo Code Review requests by role panel – a grouped column chart showing GitLab Duo Code review requests from MR authors and non-authors over time – to the GitLab Duo and SDLC trends analytics dashboard.

Screenshots or screen recordings

Screenshot 2025-11-25 at 12.33.45 PM.png

How to set up and validate locally

Apply the following diff to mock permissions and metric values on the backend

Mock data diff
diff --git a/ee/app/graphql/resolvers/analytics/ai_metrics/code_review_metrics_resolver.rb b/ee/app/graphql/resolvers/analytics/ai_metrics/code_review_metrics_resolver.rb
index 54cfeabc32ec..624c6641eb13 100644
--- a/ee/app/graphql/resolvers/analytics/ai_metrics/code_review_metrics_resolver.rb
+++ b/ee/app/graphql/resolvers/analytics/ai_metrics/code_review_metrics_resolver.rb
@@ -9,15 +9,26 @@ class CodeReviewMetricsResolver < BaseResolver
         type ::Types::Analytics::AiMetrics::CodeReviewMetricsType, null: true
 
         def resolve_with_lookahead
-          usage = ::Analytics::AiAnalytics::UsageEventCountService.new(
-            current_user,
-            namespace: context[:ai_metrics_namespace],
-            from: context[:ai_metrics_params][:start_date],
-            to: context[:ai_metrics_params][:end_date],
-            fields: lookahead.selections.map(&:name)
-          ).execute
+          # usage = ::Analytics::AiAnalytics::UsageEventCountService.new(
+          #   current_user,
+          #   namespace: context[:ai_metrics_namespace],
+          #   from: context[:ai_metrics_params][:start_date],
+          #   to: context[:ai_metrics_params][:end_date],
+          #   fields: lookahead.selections.map(&:name)
+          # ).execute
 
-          usage.payload
+          # usage.payload
+          {
+            encounter_duo_code_review_error_during_review_event_count: rand(0..20),
+            find_no_issues_duo_code_review_after_review_event_count: rand(5..50),
+            find_nothing_to_review_duo_code_review_on_mr_event_count: rand(3..30),
+            post_comment_duo_code_review_on_diff_event_count: rand(10..100),
+            react_thumbs_up_on_duo_code_review_comment_event_count: rand(15..80),
+            react_thumbs_down_on_duo_code_review_comment_event_count: rand(2..25),
+            request_review_duo_code_review_on_mr_by_author_event_count: rand(20..120),
+            request_review_duo_code_review_on_mr_by_non_author_event_count: rand(10..60),
+            excluded_files_from_duo_code_review_event_count: rand(5..40)
+          }
         end
       end
     end
diff --git a/ee/app/graphql/resolvers/analytics/ai_metrics/namespace_metrics_resolver.rb b/ee/app/graphql/resolvers/analytics/ai_metrics/namespace_metrics_resolver.rb
index 3aa7edf35f6d..ef66b387c25b 100644
--- a/ee/app/graphql/resolvers/analytics/ai_metrics/namespace_metrics_resolver.rb
+++ b/ee/app/graphql/resolvers/analytics/ai_metrics/namespace_metrics_resolver.rb
@@ -10,7 +10,6 @@ class NamespaceMetricsResolver < BaseResolver
         type ::Types::Analytics::AiMetrics::NamespaceMetricsType, null: true
 
         authorizes_object!
-        authorize :read_pro_ai_analytics
 
         argument :start_date, Types::DateType,
           required: false,
diff --git a/ee/app/models/ee/user.rb b/ee/app/models/ee/user.rb
index 3da50eae35c4..e55e8e2a5d1f 100644
--- a/ee/app/models/ee/user.rb
+++ b/ee/app/models/ee/user.rb
@@ -538,6 +538,7 @@ def using_gitlab_com_seat?(namespace)
     end
 
     def assigned_to_duo_enterprise?(container)
+      return true
       namespace = ::Gitlab::Saas.feature_available?(:gitlab_duo_saas_only) ? container.root_ancestor : nil
 
       GitlabSubscriptions::AddOnPurchase

Insert at cursorInsert at cursor

MR acceptance checklist

Evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.

Related to #574003 (closed)

Edited by Rudy Crespo

Merge request reports

Loading