diff --git a/ee/db/fixtures/development/94_ai_usage_stats.rb b/ee/db/fixtures/development/94_ai_usage_stats.rb index f8f9133d1a321f17c9c8249452dfa9f116e43ae4..e9b697f9ca40a1a50ceb5332ef3df77c23e0155b 100644 --- a/ee/db/fixtures/development/94_ai_usage_stats.rb +++ b/ee/db/fixtures/development/94_ai_usage_stats.rb @@ -12,7 +12,6 @@ # rubocop:disable Rails/Output -- this is a seed script class Gitlab::Seeder::AiUsageStats # rubocop:disable Style/ClassAndModuleChildren -- this is a seed script - CODE_PUSH_SAMPLE = 10 CS_EVENT_COUNT_SAMPLE = 5 CHAT_EVENT_COUNT_SAMPLE = 2 TROUBLESHOOT_EVENT_COUNT_SAMPLE = 2 @@ -40,19 +39,8 @@ def seed! create_ai_usage_data end - def create_ai_usage_data # rubocop:disable Metrics/AbcSize -- this is a development seed script - project.users.count.times do - user = project.users.sample - - CODE_PUSH_SAMPLE.times do - Event.create!( - project: project, - author: user, - action: :pushed, - created_at: rand(TIME_PERIOD_DAYS).days.ago - ) - end - + def create_ai_usage_data + project.users.limit(10).count.times do payload = { unique_tracking_id: 'FOO', branch_name: 'main' @@ -62,41 +50,35 @@ def create_ai_usage_data # rubocop:disable Metrics/AbcSize -- this is a developm payload[:suggestion_size] = rand(100) payload[:language] = %w[ruby js go].sample - Ai::CodeSuggestionEvent.new( - user: user, - event: 'code_suggestion_shown_in_ide', - timestamp: rand(TIME_PERIOD_DAYS).days.ago, - namespace_path: project.project_namespace.traversal_path, - payload: payload).tap(&:save!).tap(&:store_to_clickhouse) + create_event('code_suggestion_shown_in_ide', payload) next unless rand(100) < 35 # 35% acceptance rate - Ai::CodeSuggestionEvent.new( - user: user, - event: 'code_suggestion_accepted_in_ide', - timestamp: rand(TIME_PERIOD_DAYS).days.ago + 2.seconds, - namespace_path: project.project_namespace.traversal_path, - payload: payload).tap(&:save!).tap(&:store_to_clickhouse) + create_event('code_suggestion_accepted_in_ide', payload) end CHAT_EVENT_COUNT_SAMPLE.times do - Ai::DuoChatEvent.new( - user: user, - event: 'request_duo_chat_response', - timestamp: rand(TIME_PERIOD_DAYS).days.ago).store_to_clickhouse + create_event('request_duo_chat_response') end next unless project.builds.count > 0 TROUBLESHOOT_EVENT_COUNT_SAMPLE.times do - Ai::TroubleshootJobEvent.new( - user: user, - event: 'troubleshoot_job', - job: project.builds.sample, - timestamp: rand(TIME_PERIOD_DAYS).days.ago).tap(&:save!).tap(&:store_to_clickhouse) + create_event('troubleshoot_job') end end end + + def create_event(event_name, extras = {}) + user = project.users.sample + + Ai::UsageEvent.new( + user: user, + event: event_name, + timestamp: rand(TIME_PERIOD_DAYS).days.ago, + namespace_id: project.project_namespace.id, + extras: extras).tap(&:save!).tap(&:store_to_clickhouse) + end end Gitlab::Seeder.quiet do