Add AiTracking for Merge Commit Message Generation
What does this MR do and why?
Adds track_internal_event('generate_merge_commit_message', ...) to
Llm::GenerateCommitMessageService and registers a corresponding
generate_merge_commit_message internal event, so Duo merge-commit-message
generation lands in ai_usage_events.
Today this Duo feature fires no AiTracking event, so the generation is
invisible to AiUsageData, AiUserMetrics, and the Duo and SDLC Trends
dashboard. This closes the Merge Commit Message Generation row of the audit at
#567159.
The event is registered the current way:
ee/config/events/generate_merge_commit_message.yml: the InternalEvents definition. Noextra_trackersblock, sinceGitlab::Tracking::AiTrackingis injected as a default tracker for every EE event viaee/lib/ee/gitlab/tracking/event_definition.rb.ee/lib/gitlab/tracking/ai_tracking.rb: registry entry (event id 32).ee/app/graphql/types/analytics/ai_usage/ai_usage_event_type_enum.rb: GraphQL enum value.
The product aiAction stays :generate_commit_message; only the InternalEvents
event is named generate_merge_commit_message, for what it records (the commit
message generated for a merge request).
The service schedules completion asynchronously, so the event is tracked at
entry, mirroring Llm::ChatService#perform.
Tracks #567159.
How to set up and validate locally
-
Self-managed GitLab (PostgreSQL is enough to see the row; ClickHouse for the full analytics surface).
-
bundle exec rspec ee/spec/services/llm/generate_commit_message_service_spec.rb -
End-to-end in a rails console:
Gitlab::InternalEvents.track_event('generate_merge_commit_message', user: User.first, project: Project.first, namespace: Project.first.project_namespace) UsageEvents::DumpWriteBufferCronWorker.new.perform Ai::UsageEvent.where(event: :generate_merge_commit_message).count # +1
MR acceptance checklist
Evaluate this MR against the MR acceptance checklist.