issueAnalyticsEvents.tsx 9.5 KB

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