issueAnalyticsEvents.tsx 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309
  1. import type {SourceMapProcessingIssueType} from 'sentry/components/events/interfaces/crashContent/exception/useSourceMapDebug';
  2. import {IntegrationType} from 'sentry/types';
  3. import type {BaseEventAnalyticsParams} from 'sentry/utils/analytics/workflowAnalyticsEvents';
  4. import {CommonGroupAnalyticsData} from 'sentry/utils/events';
  5. type IssueStream = {
  6. group_id: string;
  7. tab: string;
  8. was_shown_suggestion: boolean;
  9. };
  10. type SourceMapDebugParam = {
  11. type: SourceMapProcessingIssueType;
  12. group_id?: string;
  13. } & BaseEventAnalyticsParams;
  14. type SourceMapWizardParam = {
  15. project_id: string;
  16. group_id?: string;
  17. } & BaseEventAnalyticsParams;
  18. interface GroupEventParams extends CommonGroupAnalyticsData, BaseEventAnalyticsParams {}
  19. interface EventDropdownParams {
  20. event_id: string;
  21. from_event_type: string;
  22. group_id: string;
  23. selected_event_type: string;
  24. }
  25. interface ExternalIssueParams extends CommonGroupAnalyticsData {
  26. external_issue_provider: string;
  27. external_issue_type: IntegrationType;
  28. }
  29. export type IssueEventParameters = {
  30. 'device.classification.high.end.android.device': {
  31. processor_count: number;
  32. processor_frequency: number;
  33. class?: string;
  34. family?: string;
  35. model?: string;
  36. };
  37. 'device.classification.unclassified.ios.device': {
  38. model: string;
  39. };
  40. 'event_cause.dismissed': {};
  41. 'event_cause.docs_clicked': {};
  42. 'event_cause.snoozed': {};
  43. 'event_cause.viewed': {
  44. platform?: string;
  45. project_id?: string;
  46. };
  47. 'integrations.integration_reinstall_clicked': {
  48. provider: string;
  49. };
  50. 'issue.search_sidebar_clicked': {};
  51. 'issue.shared_publicly': {};
  52. 'issue_details.copy_event_link_clicked': GroupEventParams;
  53. 'issue_details.escalating_feedback_received': {
  54. group_id: string;
  55. is_high_priority: boolean;
  56. };
  57. 'issue_details.escalating_issues_banner_feedback_received': {
  58. group_id: string;
  59. should_be_escalating: boolean;
  60. reason?: string;
  61. };
  62. 'issue_details.event_details_clicked': GroupEventParams;
  63. 'issue_details.event_dropdown_option_selected': EventDropdownParams;
  64. 'issue_details.external_issue_created': ExternalIssueParams;
  65. 'issue_details.external_issue_loaded': ExternalIssueParams & {success: boolean};
  66. 'issue_details.external_issue_modal_opened': ExternalIssueParams;
  67. 'issue_details.header_view_replay_clicked': GroupEventParams;
  68. 'issue_details.issue_status_docs_clicked': {};
  69. 'issue_details.open_replay_details_clicked': GroupEventParams;
  70. 'issue_details.performance.autogrouped_siblings_toggle': {};
  71. 'issue_details.performance.hidden_spans_expanded': {};
  72. 'issue_details.sourcemap_wizard_copy': SourceMapWizardParam;
  73. 'issue_details.sourcemap_wizard_dismiss': SourceMapWizardParam;
  74. 'issue_details.sourcemap_wizard_learn_more': SourceMapWizardParam;
  75. 'issue_details.view_hierarchy.hover_rendering_system': {
  76. platform?: string;
  77. user_org_role?: string;
  78. };
  79. 'issue_details.view_hierarchy.select_from_tree': {
  80. platform?: string;
  81. user_org_role?: string;
  82. };
  83. 'issue_details.view_hierarchy.select_from_wireframe': {
  84. platform?: string;
  85. user_org_role?: string;
  86. };
  87. 'issue_error_banner.proguard_misconfigured.clicked': {
  88. group?: string;
  89. platform?: string;
  90. };
  91. 'issue_error_banner.proguard_misconfigured.displayed': {
  92. group?: string;
  93. platform?: string;
  94. };
  95. 'issue_error_banner.proguard_missing_mapping.displayed': {
  96. group?: string;
  97. platform?: string;
  98. };
  99. 'issue_error_banner.viewed': {
  100. error_message: string[];
  101. error_type: string[];
  102. group?: string;
  103. platform?: string;
  104. };
  105. 'issue_group_details.anr_root_cause_detected': {
  106. culprit?: string;
  107. group?: string;
  108. };
  109. 'issue_group_details.stack_traces.setup_source_maps_alert.clicked': {
  110. platform?: string;
  111. project_id?: string;
  112. };
  113. 'issue_group_details.tab.clicked': {
  114. tab: string;
  115. browser?: string;
  116. device?: string;
  117. os?: string;
  118. platform?: string;
  119. };
  120. 'issue_group_details.tags.bar.clicked': {
  121. is_mobile: boolean;
  122. tag: string;
  123. value: string;
  124. platform?: string;
  125. };
  126. 'issue_group_details.tags.bar.hovered': {
  127. is_mobile: boolean;
  128. tag: string;
  129. value: string;
  130. platform?: string;
  131. };
  132. 'issue_group_details.tags.show_all_tags.clicked': {
  133. is_mobile: boolean;
  134. platform?: string;
  135. tag?: string;
  136. };
  137. 'issue_group_details.tags.switcher.clicked': {
  138. is_mobile: boolean;
  139. previous_tag: string;
  140. tag: string;
  141. platform?: string;
  142. };
  143. 'issue_group_details.tags_distribution.bar.clicked': {
  144. is_mobile: boolean;
  145. tag: string;
  146. value: string;
  147. platform?: string;
  148. };
  149. 'issue_search.empty': {
  150. query: string;
  151. search_source: string;
  152. search_type: string;
  153. };
  154. 'issue_search.failed': {
  155. error: string;
  156. search_source: string;
  157. search_type: string;
  158. };
  159. 'issues_stream.archived': {
  160. action_status_details?: string;
  161. action_substatus?: string;
  162. };
  163. 'issues_stream.issue_assigned': IssueStream & {
  164. assigned_type: string;
  165. did_assign_suggestion: boolean;
  166. assigned_suggestion_reason?: string;
  167. };
  168. 'issues_stream.paginate': {
  169. direction: string;
  170. };
  171. 'issues_stream.realtime_clicked': {
  172. enabled: boolean;
  173. };
  174. 'issues_stream.sort_changed': {
  175. sort: string;
  176. };
  177. 'issues_tab.viewed': {
  178. num_issues: number;
  179. num_new_issues: number;
  180. num_old_issues: number;
  181. num_perf_issues: number;
  182. page: number;
  183. query: string;
  184. sort: string;
  185. tab?: string;
  186. };
  187. 'quick_trace.connected_services': {
  188. projects: number;
  189. };
  190. 'quick_trace.dropdown.clicked': {
  191. node_key: string;
  192. };
  193. 'quick_trace.dropdown.clicked_extra': {
  194. node_key: string;
  195. };
  196. 'quick_trace.missing_service.dismiss': {
  197. platform: string;
  198. };
  199. 'quick_trace.missing_service.docs': {
  200. platform: string;
  201. };
  202. 'quick_trace.node.clicked': {
  203. node_key: string;
  204. };
  205. 'quick_trace.trace_id.clicked': {
  206. source: string;
  207. };
  208. resolve_issue: {release: string};
  209. 'source_map_debug.docs_link_clicked': SourceMapDebugParam;
  210. 'source_map_debug.expand_clicked': SourceMapDebugParam;
  211. 'span_view.embedded_child.hide': {};
  212. 'span_view.embedded_child.show': {};
  213. 'tag.clicked': {
  214. is_clickable: boolean;
  215. };
  216. };
  217. export type IssueEventKey = keyof IssueEventParameters;
  218. export const issueEventMap: Record<IssueEventKey, string | null> = {
  219. 'event_cause.viewed': null,
  220. 'event_cause.docs_clicked': 'Event Cause Docs Clicked',
  221. 'event_cause.snoozed': 'Event Cause Snoozed',
  222. 'event_cause.dismissed': 'Event Cause Dismissed',
  223. 'issue_details.escalating_feedback_received':
  224. 'Issue Details: Escalating Feedback Received',
  225. 'issue_details.escalating_issues_banner_feedback_received':
  226. 'Issue Details: Escalating Issues Banner Feedback Received',
  227. 'issue_details.view_hierarchy.hover_rendering_system':
  228. 'View Hierarchy: Hovered rendering system icon',
  229. 'issue_details.view_hierarchy.select_from_tree': 'View Hierarchy: Selection from tree',
  230. 'issue_details.view_hierarchy.select_from_wireframe':
  231. 'View Hierarchy: Selection from wireframe',
  232. 'issue_details.issue_status_docs_clicked': 'Issue Details: Issue Status Docs Clicked',
  233. 'issue_error_banner.viewed': 'Issue Error Banner Viewed',
  234. 'issue_error_banner.proguard_misconfigured.displayed':
  235. 'Proguard Potentially Misconfigured Issue Error Banner Displayed',
  236. 'issue_error_banner.proguard_missing_mapping.displayed':
  237. 'Proguard Missing Mapping Issue Error Banner Displayed',
  238. 'issue_error_banner.proguard_misconfigured.clicked':
  239. 'Proguard Potentially Misconfigured Issue Error Banner Link Clicked',
  240. 'issues_tab.viewed': 'Viewed Issues Tab',
  241. 'issue_search.failed': 'Issue Search: Failed',
  242. 'issue_search.empty': 'Issue Search: Empty',
  243. 'issue.search_sidebar_clicked': 'Issue Search Sidebar Clicked',
  244. 'issues_stream.archived': 'Issues Stream: Archived',
  245. 'issues_stream.realtime_clicked': 'Issues Stream: Realtime Clicked',
  246. 'issues_stream.issue_assigned': 'Assigned Issue from Issues Stream',
  247. 'issues_stream.sort_changed': 'Changed Sort on Issues Stream',
  248. 'issues_stream.paginate': 'Paginate Issues Stream',
  249. 'issue.shared_publicly': 'Issue Shared Publicly',
  250. 'issue_group_details.stack_traces.setup_source_maps_alert.clicked':
  251. 'Issue Group Details: Setup Source Maps Alert Clicked',
  252. resolve_issue: 'Resolve Issue',
  253. 'tag.clicked': 'Tag: Clicked',
  254. 'quick_trace.missing_service.dismiss': 'Quick Trace: Missing Service Dismissed',
  255. 'quick_trace.missing_service.docs': 'Quick Trace: Missing Service Clicked',
  256. 'quick_trace.dropdown.clicked': 'Quick Trace: Dropdown clicked',
  257. 'quick_trace.dropdown.clicked_extra': 'Quick Trace: Dropdown clicked',
  258. 'quick_trace.node.clicked': 'Quick Trace: Node clicked',
  259. 'quick_trace.connected_services': 'Quick Trace: Connected Services',
  260. 'quick_trace.trace_id.clicked': 'Quick Trace: Trace ID clicked',
  261. 'span_view.embedded_child.hide': 'Span View: Hide Embedded Transaction',
  262. 'span_view.embedded_child.show': 'Span View: Show Embedded Transaction',
  263. 'issue_group_details.tab.clicked': 'Issue Group Details: Header Tab Clicked',
  264. 'issue_group_details.tags.show_all_tags.clicked':
  265. 'Issue Group Details: Tags show all clicked',
  266. 'issue_group_details.tags.switcher.clicked':
  267. 'Issue Group Details: Tags switcher clicked',
  268. 'issue_group_details.tags.bar.clicked': 'Issue Group Details: Tags value bar clicked',
  269. 'issue_group_details.tags.bar.hovered': 'Issue Group Details: Tags value bar hovered',
  270. 'issue_group_details.tags_distribution.bar.clicked':
  271. 'Issue Group Details: Tags distribution value bar clicked',
  272. 'integrations.integration_reinstall_clicked': 'Integration Reinstall Button Clicked',
  273. // Performance Issue specific events here
  274. 'issue_details.performance.autogrouped_siblings_toggle':
  275. 'Performance Issue Details: Autogrouped Siblings Toggled',
  276. 'issue_details.performance.hidden_spans_expanded':
  277. 'Performance Issue Details: Hidden Spans Expanded',
  278. 'source_map_debug.docs_link_clicked': 'Source Map Debug: Docs Clicked',
  279. 'source_map_debug.expand_clicked': 'Source Map Debug: Expand Clicked',
  280. 'issue_details.copy_event_link_clicked': 'Issue Details: Copy Event Link Clicked',
  281. 'issue_details.event_details_clicked': 'Issue Details: Full Event Details Clicked',
  282. 'issue_details.event_dropdown_option_selected':
  283. 'Issue Details: Event Dropdown Option Selected',
  284. 'issue_details.header_view_replay_clicked': 'Issue Details: Header View Replay Clicked',
  285. 'issue_group_details.anr_root_cause_detected': 'Detected ANR Root Cause',
  286. 'issue_details.external_issue_loaded': 'Issue Details: External Issue Loaded',
  287. 'issue_details.external_issue_modal_opened':
  288. 'Issue Details: External Issue Modal Opened',
  289. 'issue_details.external_issue_created': 'Issue Details: External Issue Created',
  290. 'device.classification.unclassified.ios.device':
  291. 'Event from iOS device missing device.class',
  292. 'device.classification.high.end.android.device': 'Event from high end Android device',
  293. 'issue_details.sourcemap_wizard_dismiss': 'Issue Details: Sourcemap Wizard Dismiss',
  294. 'issue_details.sourcemap_wizard_copy': 'Issue Details: Sourcemap Wizard Copy',
  295. 'issue_details.sourcemap_wizard_learn_more':
  296. 'Issue Details: Sourcemap Wizard Learn More',
  297. 'issue_details.open_replay_details_clicked':
  298. 'Issue Details: Open Replay Details Clicked',
  299. };