issueAnalyticsEvents.tsx 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415
  1. import type {SourceMapProcessingIssueType} from 'sentry/components/events/interfaces/crashContent/exception/useSourceMapDebug';
  2. import type {FieldValue} from 'sentry/components/forms/model';
  3. import type {PriorityLevel} from 'sentry/types/group';
  4. import type {IntegrationType} from 'sentry/types/integrations';
  5. import type {BaseEventAnalyticsParams} from 'sentry/utils/analytics/workflowAnalyticsEvents';
  6. import type {CommonGroupAnalyticsData} from 'sentry/utils/events';
  7. type IssueStream = {
  8. group_id: string;
  9. tab: string;
  10. was_shown_suggestion: boolean;
  11. };
  12. type SourceMapDebugParam = {
  13. type: SourceMapProcessingIssueType;
  14. group_id?: string;
  15. } & BaseEventAnalyticsParams;
  16. type ActionableItemDebugParam = {
  17. type: string;
  18. group_id?: string;
  19. } & BaseEventAnalyticsParams;
  20. type SourceMapWizardParam = {
  21. project_id: string;
  22. group_id?: string;
  23. } & BaseEventAnalyticsParams;
  24. interface GroupEventParams extends CommonGroupAnalyticsData, BaseEventAnalyticsParams {}
  25. interface EventDropdownParams {
  26. event_id: string;
  27. from_event_type: string;
  28. group_id: string;
  29. selected_event_type: string;
  30. }
  31. interface ExternalIssueParams extends CommonGroupAnalyticsData {
  32. external_issue_provider: string;
  33. external_issue_type: IntegrationType;
  34. }
  35. interface SetPriorityParams extends CommonGroupAnalyticsData {
  36. from_priority: PriorityLevel;
  37. to_priority: PriorityLevel;
  38. }
  39. export type IssueEventParameters = {
  40. 'actionable_items.expand_clicked': ActionableItemDebugParam;
  41. 'autofix.setup_modal_viewed': {
  42. groupId: string;
  43. projectId: string;
  44. setup_gen_ai_consent: boolean;
  45. setup_integration: boolean;
  46. setup_write_integration: boolean;
  47. };
  48. 'breadcrumbs.drawer.action': {control: string; value?: string};
  49. 'breadcrumbs.issue_details.change_time_display': {value: string};
  50. 'breadcrumbs.issue_details.drawer_opened': {control: string};
  51. 'device.classification.high.end.android.device': {
  52. processor_count: number;
  53. processor_frequency: number;
  54. class?: string;
  55. family?: string;
  56. model?: string;
  57. };
  58. 'device.classification.unclassified.ios.device': {
  59. model: string;
  60. };
  61. 'event_cause.dismissed': {};
  62. 'event_cause.docs_clicked': {};
  63. 'event_cause.snoozed': {};
  64. 'event_cause.viewed': {
  65. platform?: string;
  66. project_id?: string;
  67. };
  68. 'highlights.edit_modal.add_context_key': {};
  69. 'highlights.edit_modal.add_tag': {};
  70. 'highlights.edit_modal.cancel_clicked': {};
  71. 'highlights.edit_modal.remove_context_key': {};
  72. 'highlights.edit_modal.remove_tag': {};
  73. 'highlights.edit_modal.save_clicked': {};
  74. 'highlights.edit_modal.use_default_clicked': {};
  75. 'highlights.issue_details.edit_clicked': {};
  76. 'highlights.issue_details.view_all_clicked': {};
  77. 'highlights.project_settings.updated_manually': {};
  78. 'integrations.integration_reinstall_clicked': {
  79. provider: string;
  80. };
  81. 'issue-details.replay-cta-dismiss': {type: string};
  82. 'issue.search_sidebar_clicked': {};
  83. 'issue.shared_publicly': {};
  84. 'issue_details.copy_event_link_clicked': GroupEventParams;
  85. 'issue_details.escalating_feedback_received': {
  86. group_id: string;
  87. is_high_priority: boolean;
  88. };
  89. 'issue_details.escalating_issues_banner_feedback_received': {
  90. group_id: string;
  91. should_be_escalating: boolean;
  92. reason?: string;
  93. };
  94. 'issue_details.event_details_clicked': GroupEventParams;
  95. 'issue_details.event_dropdown_option_selected': EventDropdownParams;
  96. 'issue_details.external_issue_created': ExternalIssueParams;
  97. 'issue_details.external_issue_loaded': ExternalIssueParams & {success: boolean};
  98. 'issue_details.external_issue_modal_opened': ExternalIssueParams;
  99. 'issue_details.header_view_replay_clicked': GroupEventParams;
  100. 'issue_details.issue_status_docs_clicked': {};
  101. 'issue_details.performance.autogrouped_siblings_toggle': {};
  102. 'issue_details.performance.hidden_spans_expanded': {};
  103. 'issue_details.related_trace_issue.trace_issue_clicked': {
  104. group_id: number;
  105. };
  106. 'issue_details.section_fold': {
  107. open: boolean;
  108. sectionKey: string;
  109. };
  110. 'issue_details.set_priority': SetPriorityParams;
  111. 'issue_details.similar_issues.diff_clicked': {
  112. error_message?: string;
  113. group_id?: string;
  114. parent_error_message?: string;
  115. parent_group_id?: string;
  116. parent_stacktrace?: string;
  117. parent_transaction?: string;
  118. project_id?: string;
  119. shouldBeGrouped?: string;
  120. stacktrace?: string;
  121. transaction?: string;
  122. };
  123. 'issue_details.similar_issues.similarity_embeddings_feedback_recieved': {
  124. groupId: string;
  125. parentGroupId: string;
  126. value: string;
  127. projectId?: string;
  128. wouldGroup?: string;
  129. };
  130. 'issue_details.sourcemap_wizard_copy': SourceMapWizardParam;
  131. 'issue_details.sourcemap_wizard_dismiss': SourceMapWizardParam;
  132. 'issue_details.sourcemap_wizard_learn_more': SourceMapWizardParam;
  133. 'issue_details.streamline_ui_toggle': {
  134. isEnabled: boolean;
  135. };
  136. 'issue_details.view_hierarchy.hover_rendering_system': {
  137. platform?: string;
  138. user_org_role?: string;
  139. };
  140. 'issue_details.view_hierarchy.select_from_tree': {
  141. platform?: string;
  142. user_org_role?: string;
  143. };
  144. 'issue_details.view_hierarchy.select_from_wireframe': {
  145. platform?: string;
  146. user_org_role?: string;
  147. };
  148. 'issue_error_banner.proguard_misconfigured.clicked': {
  149. group?: string;
  150. platform?: string;
  151. };
  152. 'issue_error_banner.proguard_misconfigured.displayed': {
  153. group?: string;
  154. platform?: string;
  155. };
  156. 'issue_error_banner.proguard_missing_mapping.displayed': {
  157. group?: string;
  158. platform?: string;
  159. };
  160. 'issue_error_banner.viewed': {
  161. error_message: string[];
  162. error_type: string[];
  163. group?: string;
  164. platform?: string;
  165. };
  166. 'issue_group_details.anr_root_cause_detected': {
  167. culprit?: string;
  168. group?: string;
  169. };
  170. 'issue_group_details.stack_traces.setup_source_maps_alert.clicked': {
  171. platform?: string;
  172. project_id?: string;
  173. };
  174. 'issue_group_details.tab.clicked': {
  175. tab: string;
  176. browser?: string;
  177. device?: string;
  178. os?: string;
  179. platform?: string;
  180. };
  181. 'issue_group_details.tags.bar.clicked': {
  182. is_mobile: boolean;
  183. tag: string;
  184. value: string;
  185. platform?: string;
  186. };
  187. 'issue_group_details.tags.show_all_tags.clicked': {
  188. is_mobile: boolean;
  189. platform?: string;
  190. tag?: string;
  191. };
  192. 'issue_group_details.tags.switcher.clicked': {
  193. is_mobile: boolean;
  194. previous_tag: string;
  195. tag: string;
  196. platform?: string;
  197. };
  198. 'issue_group_details.tags_distribution.bar.clicked': {
  199. is_mobile: boolean;
  200. tag: string;
  201. value: string;
  202. platform?: string;
  203. };
  204. 'issue_search.empty': {
  205. query: string;
  206. search_source: string;
  207. search_type: string;
  208. };
  209. 'issue_search.failed': {
  210. error: string;
  211. search_source: string;
  212. search_type: string;
  213. };
  214. 'issues_stream.archived': {
  215. action_status_details?: string;
  216. action_substatus?: string | null;
  217. };
  218. 'issues_stream.issue_assigned': IssueStream & {
  219. assigned_type: string;
  220. did_assign_suggestion: boolean;
  221. assigned_suggestion_reason?: string;
  222. };
  223. 'issues_stream.merged': {
  224. items_merged: number | 'all_in_query' | undefined;
  225. platform: string | undefined;
  226. project_id: string | undefined;
  227. };
  228. 'issues_stream.paginate': {
  229. direction: string;
  230. };
  231. 'issues_stream.realtime_clicked': {
  232. enabled: boolean;
  233. };
  234. 'issues_stream.sort_changed': {
  235. sort: string;
  236. };
  237. 'issues_stream.updated_priority': {
  238. priority: PriorityLevel;
  239. };
  240. 'issues_tab.viewed': {
  241. num_issues: number;
  242. num_new_issues: number;
  243. num_old_issues: number;
  244. num_perf_issues: number;
  245. page: number;
  246. query: string;
  247. sort: string;
  248. total_issues_count: number | null;
  249. tab?: string;
  250. };
  251. 'project_modal.created': {
  252. issue_alert: 'Default' | 'Custom' | 'No Rule';
  253. project_id: string;
  254. rule_id: string;
  255. };
  256. 'quick_trace.connected_services': {
  257. projects: number;
  258. };
  259. 'quick_trace.dropdown.clicked': {
  260. node_key: string;
  261. };
  262. 'quick_trace.dropdown.clicked_extra': {
  263. node_key: string;
  264. };
  265. 'quick_trace.missing_service.dismiss': {
  266. platform: string;
  267. };
  268. 'quick_trace.missing_service.docs': {
  269. platform: string;
  270. };
  271. 'quick_trace.node.clicked': {
  272. node_key: string;
  273. };
  274. 'quick_trace.trace_id.clicked': {
  275. source: string;
  276. };
  277. resolve_issue: {release: string};
  278. 'settings.inbound_filter_updated': {
  279. filter: string;
  280. new_state: FieldValue;
  281. project_id: number;
  282. };
  283. 'source_map_debug.docs_link_clicked': SourceMapDebugParam;
  284. 'source_map_debug.expand_clicked': SourceMapDebugParam;
  285. 'span_view.embedded_child.hide': {};
  286. 'span_view.embedded_child.show': {};
  287. 'tag.clicked': {
  288. is_clickable: boolean;
  289. };
  290. 'whats_new.link_clicked': {title?: string};
  291. };
  292. export type IssueEventKey = keyof IssueEventParameters;
  293. export const issueEventMap: Record<IssueEventKey, string | null> = {
  294. 'autofix.setup_modal_viewed': 'Autofix: Setup Modal Viewed',
  295. 'breadcrumbs.issue_details.change_time_display': 'Breadcrumb Time Display Toggled',
  296. 'breadcrumbs.issue_details.drawer_opened': 'Breadcrumb Drawer Opened',
  297. 'breadcrumbs.drawer.action': 'Breadcrumb Drawer Action Taken',
  298. 'event_cause.viewed': null,
  299. 'event_cause.docs_clicked': 'Event Cause Docs Clicked',
  300. 'event_cause.snoozed': 'Event Cause Snoozed',
  301. 'event_cause.dismissed': 'Event Cause Dismissed',
  302. 'highlights.edit_modal.add_context_key': 'Highlights: Add Context in Edit Modal',
  303. 'highlights.edit_modal.add_tag': 'Highlights: Add Tag in Edit Modal',
  304. 'highlights.edit_modal.cancel_clicked': 'Highlights: Cancel from Edit Modal',
  305. 'highlights.edit_modal.remove_context_key': 'Highlights: Remove Context in Edit Modal',
  306. 'highlights.edit_modal.remove_tag': 'Highlights: Remove Tag in Edit Modal',
  307. 'highlights.edit_modal.save_clicked': 'Highlights: Save from Edit Modal',
  308. 'highlights.edit_modal.use_default_clicked':
  309. 'Highlights: Defaults Applied from Edit Modal',
  310. 'highlights.issue_details.edit_clicked': 'Highlights: Open Edit Modal',
  311. 'highlights.issue_details.view_all_clicked': 'Highlights: View All Clicked',
  312. 'highlights.project_settings.updated_manually':
  313. 'Highlights: Updated Manually from Settings',
  314. 'issue_details.escalating_feedback_received':
  315. 'Issue Details: Escalating Feedback Received',
  316. 'issue_details.escalating_issues_banner_feedback_received':
  317. 'Issue Details: Escalating Issues Banner Feedback Received',
  318. 'issue_details.similar_issues.diff_clicked':
  319. 'Issue Details: Similar Issues: Diff Clicked',
  320. 'issue_details.similar_issues.similarity_embeddings_feedback_recieved':
  321. 'Issue Details: Similar Issues: Similarity Embeddings Feedback Recieved',
  322. 'issue_details.streamline_ui_toggle': 'Streamline: UI Toggle Clicked',
  323. 'issue_details.view_hierarchy.hover_rendering_system':
  324. 'View Hierarchy: Hovered rendering system icon',
  325. 'issue_details.view_hierarchy.select_from_tree': 'View Hierarchy: Selection from tree',
  326. 'issue_details.view_hierarchy.select_from_wireframe':
  327. 'View Hierarchy: Selection from wireframe',
  328. 'issue_details.issue_status_docs_clicked': 'Issue Details: Issue Status Docs Clicked',
  329. 'issue_details.related_trace_issue.trace_issue_clicked':
  330. 'Related Issue: Trace Issue Clicked',
  331. 'issue_error_banner.viewed': 'Issue Error Banner Viewed',
  332. 'issue_error_banner.proguard_misconfigured.displayed':
  333. 'Proguard Potentially Misconfigured Issue Error Banner Displayed',
  334. 'issue_error_banner.proguard_missing_mapping.displayed':
  335. 'Proguard Missing Mapping Issue Error Banner Displayed',
  336. 'issue_error_banner.proguard_misconfigured.clicked':
  337. 'Proguard Potentially Misconfigured Issue Error Banner Link Clicked',
  338. 'issues_tab.viewed': 'Viewed Issues Tab',
  339. 'issue_search.failed': 'Issue Search: Failed',
  340. 'issue_search.empty': 'Issue Search: Empty',
  341. 'issue.search_sidebar_clicked': 'Issue Search Sidebar Clicked',
  342. 'issues_stream.archived': 'Issues Stream: Archived',
  343. 'issues_stream.updated_priority': 'Issues Stream: Updated Priority',
  344. 'issues_stream.realtime_clicked': 'Issues Stream: Realtime Clicked',
  345. 'issues_stream.issue_assigned': 'Assigned Issue from Issues Stream',
  346. 'issues_stream.merged': 'Merged Issues from Issues Stream',
  347. 'issues_stream.sort_changed': 'Changed Sort on Issues Stream',
  348. 'issues_stream.paginate': 'Paginate Issues Stream',
  349. 'issue.shared_publicly': 'Issue Shared Publicly',
  350. 'issue_group_details.stack_traces.setup_source_maps_alert.clicked':
  351. 'Issue Group Details: Setup Source Maps Alert Clicked',
  352. resolve_issue: 'Resolve Issue',
  353. 'tag.clicked': 'Tag: Clicked',
  354. 'project_modal.created': 'Project Modal: Created',
  355. 'quick_trace.missing_service.dismiss': 'Quick Trace: Missing Service Dismissed',
  356. 'quick_trace.missing_service.docs': 'Quick Trace: Missing Service Clicked',
  357. 'quick_trace.dropdown.clicked': 'Quick Trace: Dropdown clicked',
  358. 'quick_trace.dropdown.clicked_extra': 'Quick Trace: Dropdown clicked',
  359. 'quick_trace.node.clicked': 'Quick Trace: Node clicked',
  360. 'quick_trace.connected_services': 'Quick Trace: Connected Services',
  361. 'quick_trace.trace_id.clicked': 'Quick Trace: Trace ID clicked',
  362. 'settings.inbound_filter_updated': 'Settings: Inbound Filter Updated',
  363. 'span_view.embedded_child.hide': 'Span View: Hide Embedded Transaction',
  364. 'span_view.embedded_child.show': 'Span View: Show Embedded Transaction',
  365. 'issue_group_details.tab.clicked': 'Issue Group Details: Header Tab Clicked',
  366. 'issue_group_details.tags.show_all_tags.clicked':
  367. 'Issue Group Details: Tags show all clicked',
  368. 'issue_group_details.tags.switcher.clicked':
  369. 'Issue Group Details: Tags switcher clicked',
  370. 'issue_group_details.tags.bar.clicked': 'Issue Group Details: Tags value bar clicked',
  371. 'issue_group_details.tags_distribution.bar.clicked':
  372. 'Issue Group Details: Tags distribution value bar clicked',
  373. 'integrations.integration_reinstall_clicked': 'Integration Reinstall Button Clicked',
  374. // Performance Issue specific events here
  375. 'issue_details.performance.autogrouped_siblings_toggle':
  376. 'Performance Issue Details: Autogrouped Siblings Toggled',
  377. 'issue_details.performance.hidden_spans_expanded':
  378. 'Performance Issue Details: Hidden Spans Expanded',
  379. 'source_map_debug.docs_link_clicked': 'Source Map Debug: Docs Clicked',
  380. 'source_map_debug.expand_clicked': 'Source Map Debug: Expand Clicked',
  381. 'actionable_items.expand_clicked': 'Actionable Item: Expand Clicked',
  382. 'issue_details.copy_event_link_clicked': 'Issue Details: Copy Event Link Clicked',
  383. 'issue_details.event_details_clicked': 'Issue Details: Full Event Details Clicked',
  384. 'issue_details.event_dropdown_option_selected':
  385. 'Issue Details: Event Dropdown Option Selected',
  386. 'issue_details.header_view_replay_clicked': 'Issue Details: Header View Replay Clicked',
  387. 'issue-details.replay-cta-dismiss': 'Issue Details Replay CTA Dismissed',
  388. 'issue_group_details.anr_root_cause_detected': 'Detected ANR Root Cause',
  389. 'issue_details.external_issue_loaded': 'Issue Details: External Issue Loaded',
  390. 'issue_details.external_issue_modal_opened':
  391. 'Issue Details: External Issue Modal Opened',
  392. 'issue_details.external_issue_created': 'Issue Details: External Issue Created',
  393. 'device.classification.unclassified.ios.device':
  394. 'Event from iOS device missing device.class',
  395. 'device.classification.high.end.android.device': 'Event from high end Android device',
  396. 'issue_details.sourcemap_wizard_dismiss': 'Issue Details: Sourcemap Wizard Dismiss',
  397. 'issue_details.sourcemap_wizard_copy': 'Issue Details: Sourcemap Wizard Copy',
  398. 'issue_details.sourcemap_wizard_learn_more':
  399. 'Issue Details: Sourcemap Wizard Learn More',
  400. 'issue_details.set_priority': 'Issue Details: Set Priority',
  401. 'issue_details.section_fold': 'Issue Details: Section Fold',
  402. 'whats_new.link_clicked': "What's New: Link Clicked",
  403. };