@oneuptime/common 9.4.7 → 9.4.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Models/DatabaseModels/Alert.ts +76 -0
- package/Models/DatabaseModels/AlertEpisode.ts +1201 -0
- package/Models/DatabaseModels/AlertEpisodeFeed.ts +529 -0
- package/Models/DatabaseModels/AlertEpisodeInternalNote.ts +455 -0
- package/Models/DatabaseModels/AlertEpisodeMember.ts +586 -0
- package/Models/DatabaseModels/AlertEpisodeOwnerTeam.ts +421 -0
- package/Models/DatabaseModels/AlertEpisodeOwnerUser.ts +419 -0
- package/Models/DatabaseModels/AlertEpisodeStateTimeline.ts +523 -0
- package/Models/DatabaseModels/AlertFeed.ts +1 -0
- package/Models/DatabaseModels/AlertGroupingRule.ts +1432 -0
- package/Models/DatabaseModels/Index.ts +18 -0
- package/Models/DatabaseModels/OnCallDutyPolicyExecutionLog.ts +70 -0
- package/Models/DatabaseModels/OnCallDutyPolicyExecutionLogTimeline.ts +59 -0
- package/Models/DatabaseModels/StatusPageDomain.ts +2 -0
- package/Models/DatabaseModels/UserOnCallLog.ts +48 -0
- package/Models/DatabaseModels/UserOnCallLogTimeline.ts +49 -0
- package/Models/DatabaseModels/WorkspaceNotificationLog.ts +57 -0
- package/Server/API/SlackAPI.ts +21 -0
- package/Server/API/UserOnCallLogTimelineAPI.ts +65 -25
- package/Server/Infrastructure/Postgres/SchemaMigrations/1768938069147-MigrationName.ts +751 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1769125561322-MigrationName.ts +41 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1769170578688-MigrationName.ts +29 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1769172358833-MigrationName.ts +177 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1769176450526-MigrationName.ts +71 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1769190495840-MigrationName.ts +35 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1769199303656-MigrationName.ts +29 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1769202898645-MigrationName.ts +29 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1769428619414-MigrationName.ts +35 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1769428821686-MigrationName.ts +47 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1769469813786-MigrationName.ts +71 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1769517677937-RenameNotificationRuleTypes.ts +67 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +24 -0
- package/Server/Services/AlertEpisodeFeedService.ts +94 -0
- package/Server/Services/AlertEpisodeInternalNoteService.ts +71 -0
- package/Server/Services/AlertEpisodeMemberService.ts +267 -0
- package/Server/Services/AlertEpisodeOwnerTeamService.ts +10 -0
- package/Server/Services/AlertEpisodeOwnerUserService.ts +10 -0
- package/Server/Services/AlertEpisodeService.ts +1096 -0
- package/Server/Services/AlertEpisodeStateTimelineService.ts +557 -0
- package/Server/Services/AlertGroupingEngineService.ts +1120 -0
- package/Server/Services/AlertGroupingRuleService.ts +14 -0
- package/Server/Services/AlertService.ts +12 -0
- package/Server/Services/CallService.ts +2 -0
- package/Server/Services/Index.ts +21 -0
- package/Server/Services/MailService.ts +5 -0
- package/Server/Services/OnCallDutyPolicyEscalationRuleService.ts +18 -1
- package/Server/Services/OnCallDutyPolicyExecutionLogService.ts +64 -2
- package/Server/Services/OnCallDutyPolicyExecutionLogTimelineService.ts +27 -1
- package/Server/Services/OnCallDutyPolicyService.ts +16 -1
- package/Server/Services/PushNotificationService.ts +1 -0
- package/Server/Services/SmsService.ts +2 -0
- package/Server/Services/UserNotificationRuleService.ts +641 -10
- package/Server/Services/UserNotificationSettingService.ts +23 -0
- package/Server/Services/UserOnCallLogService.ts +58 -14
- package/Server/Services/WhatsAppService.ts +5 -0
- package/Server/Services/WorkspaceNotificationRuleService.ts +26 -0
- package/Server/Utils/AnalyticsDatabase/Statement.ts +6 -2
- package/Server/Utils/PushNotificationUtil.ts +75 -16
- package/Server/Utils/WhatsAppTemplateUtil.ts +13 -0
- package/Server/Utils/Workspace/MicrosoftTeams/Actions/ActionTypes.ts +18 -0
- package/Server/Utils/Workspace/MicrosoftTeams/Actions/AlertEpisode.ts +689 -0
- package/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.ts +16 -0
- package/Server/Utils/Workspace/Slack/Actions/ActionTypes.ts +11 -0
- package/Server/Utils/Workspace/Slack/Actions/AlertEpisode.ts +915 -0
- package/Server/Utils/Workspace/Slack/Messages/AlertEpisode.ts +120 -0
- package/Server/Utils/Workspace/WorkspaceMessages/AlertEpisode.ts +74 -0
- package/Tests/Server/Services/AlertEpisodeMemberService.test.ts +200 -0
- package/Tests/Server/Services/AlertEpisodeService.test.ts +240 -0
- package/Tests/Server/Services/AlertGroupingEngineService.test.ts +542 -0
- package/Tests/Server/Services/AlertGroupingRuleService.test.ts +383 -0
- package/Tests/Server/Utils/AnalyticsDatabase/StatementGenerator.test.ts +1 -1
- package/Tests/UI/Components/Input.test.tsx +1 -1
- package/Tests/UI/Components/TextArea.test.tsx +2 -2
- package/Types/BaseDatabase/SortOrder.ts +9 -0
- package/Types/Email/EmailTemplateType.ts +6 -0
- package/Types/NotificationRule/NotificationRuleType.ts +3 -1
- package/Types/NotificationSetting/NotificationSettingEventType.ts +7 -0
- package/Types/Permission.ts +309 -0
- package/Types/UserNotification/UserNotificationEventType.ts +1 -0
- package/Types/WhatsApp/WhatsAppTemplates.ts +24 -0
- package/Types/Workspace/NotificationRules/EventType.ts +1 -0
- package/Types/Workspace/NotificationRules/NotificationRuleCondition.ts +32 -3
- package/UI/Components/Accordion/Accordion.tsx +20 -2
- package/UI/Components/Alerts/Alert.tsx +1 -0
- package/UI/Components/Button/Button.tsx +29 -0
- package/UI/Components/CardSelect/CardSelect.tsx +5 -1
- package/UI/Components/Checkbox/Checkbox.tsx +7 -3
- package/UI/Components/ColorCircle/ColorCircle.tsx +2 -0
- package/UI/Components/ColorViewer/ColorViewer.tsx +19 -3
- package/UI/Components/CopyableButton/CopyableButton.tsx +22 -5
- package/UI/Components/Detail/Detail.tsx +1 -1
- package/UI/Components/Dropdown/Dropdown.tsx +14 -1
- package/UI/Components/Forms/Fields/FormField.tsx +28 -0
- package/UI/Components/FullPageModal/FullPageModal.tsx +35 -4
- package/UI/Components/Input/Input.tsx +14 -2
- package/UI/Components/Link/Link.tsx +1 -0
- package/UI/Components/Loader/Loader.tsx +8 -2
- package/UI/Components/Markdown.tsx/MarkdownViewer.tsx +76 -1
- package/UI/Components/Modal/Modal.tsx +47 -3
- package/UI/Components/ModelTable/BaseModelTable.tsx +42 -1
- package/UI/Components/MoreMenu/MoreMenu.tsx +84 -2
- package/UI/Components/OrderedStatesList/OrderedStatesList.tsx +30 -8
- package/UI/Components/Pagination/Pagination.tsx +113 -8
- package/UI/Components/ProgressBar/ProgressBar.tsx +12 -2
- package/UI/Components/Radio/Radio.tsx +21 -3
- package/UI/Components/SideMenu/CountModelSideMenuItem.tsx +54 -27
- package/UI/Components/StatusBubble/StatusBubble.tsx +7 -2
- package/UI/Components/Table/TableHeader.tsx +20 -3
- package/UI/Components/Tabs/Tab.tsx +16 -1
- package/UI/Components/Tabs/Tabs.tsx +12 -1
- package/UI/Components/TextArea/TextArea.tsx +12 -2
- package/UI/Components/Toggle/Toggle.tsx +14 -3
- package/UI/Components/Tooltip/Tooltip.tsx +11 -1
- package/UI/Components/TopAlert/TopAlert.tsx +2 -0
- package/build/dist/Models/DatabaseModels/Alert.js +77 -0
- package/build/dist/Models/DatabaseModels/Alert.js.map +1 -1
- package/build/dist/Models/DatabaseModels/AlertEpisode.js +1225 -0
- package/build/dist/Models/DatabaseModels/AlertEpisode.js.map +1 -0
- package/build/dist/Models/DatabaseModels/AlertEpisodeFeed.js +553 -0
- package/build/dist/Models/DatabaseModels/AlertEpisodeFeed.js.map +1 -0
- package/build/dist/Models/DatabaseModels/AlertEpisodeInternalNote.js +467 -0
- package/build/dist/Models/DatabaseModels/AlertEpisodeInternalNote.js.map +1 -0
- package/build/dist/Models/DatabaseModels/AlertEpisodeMember.js +607 -0
- package/build/dist/Models/DatabaseModels/AlertEpisodeMember.js.map +1 -0
- package/build/dist/Models/DatabaseModels/AlertEpisodeOwnerTeam.js +437 -0
- package/build/dist/Models/DatabaseModels/AlertEpisodeOwnerTeam.js.map +1 -0
- package/build/dist/Models/DatabaseModels/AlertEpisodeOwnerUser.js +436 -0
- package/build/dist/Models/DatabaseModels/AlertEpisodeOwnerUser.js.map +1 -0
- package/build/dist/Models/DatabaseModels/AlertEpisodeStateTimeline.js +546 -0
- package/build/dist/Models/DatabaseModels/AlertEpisodeStateTimeline.js.map +1 -0
- package/build/dist/Models/DatabaseModels/AlertFeed.js +1 -0
- package/build/dist/Models/DatabaseModels/AlertFeed.js.map +1 -1
- package/build/dist/Models/DatabaseModels/AlertGroupingRule.js +1437 -0
- package/build/dist/Models/DatabaseModels/AlertGroupingRule.js.map +1 -0
- package/build/dist/Models/DatabaseModels/Index.js +16 -0
- package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyExecutionLog.js +69 -0
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyExecutionLog.js.map +1 -1
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyExecutionLogTimeline.js +58 -0
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyExecutionLogTimeline.js.map +1 -1
- package/build/dist/Models/DatabaseModels/StatusPageDomain.js +2 -0
- package/build/dist/Models/DatabaseModels/StatusPageDomain.js.map +1 -1
- package/build/dist/Models/DatabaseModels/UserOnCallLog.js +47 -0
- package/build/dist/Models/DatabaseModels/UserOnCallLog.js.map +1 -1
- package/build/dist/Models/DatabaseModels/UserOnCallLogTimeline.js +48 -0
- package/build/dist/Models/DatabaseModels/UserOnCallLogTimeline.js.map +1 -1
- package/build/dist/Models/DatabaseModels/WorkspaceNotificationLog.js +58 -0
- package/build/dist/Models/DatabaseModels/WorkspaceNotificationLog.js.map +1 -1
- package/build/dist/Server/API/SlackAPI.js +18 -0
- package/build/dist/Server/API/SlackAPI.js.map +1 -1
- package/build/dist/Server/API/UserOnCallLogTimelineAPI.js +55 -15
- package/build/dist/Server/API/UserOnCallLogTimelineAPI.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1768938069147-MigrationName.js +266 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1768938069147-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1769125561322-MigrationName.js +20 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1769125561322-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1769170578688-MigrationName.js +16 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1769170578688-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1769172358833-MigrationName.js +68 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1769172358833-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1769176450526-MigrationName.js +30 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1769176450526-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1769190495840-MigrationName.js +18 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1769190495840-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1769199303656-MigrationName.js +16 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1769199303656-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1769202898645-MigrationName.js +16 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1769202898645-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1769428619414-MigrationName.js +18 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1769428619414-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1769428821686-MigrationName.js +22 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1769428821686-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1769469813786-MigrationName.js +30 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1769469813786-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1769517677937-RenameNotificationRuleTypes.js +67 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1769517677937-RenameNotificationRuleTypes.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +24 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Services/AlertEpisodeFeedService.js +83 -0
- package/build/dist/Server/Services/AlertEpisodeFeedService.js.map +1 -0
- package/build/dist/Server/Services/AlertEpisodeInternalNoteService.js +70 -0
- package/build/dist/Server/Services/AlertEpisodeInternalNoteService.js.map +1 -0
- package/build/dist/Server/Services/AlertEpisodeMemberService.js +256 -0
- package/build/dist/Server/Services/AlertEpisodeMemberService.js.map +1 -0
- package/build/dist/Server/Services/AlertEpisodeOwnerTeamService.js +9 -0
- package/build/dist/Server/Services/AlertEpisodeOwnerTeamService.js.map +1 -0
- package/build/dist/Server/Services/AlertEpisodeOwnerUserService.js +9 -0
- package/build/dist/Server/Services/AlertEpisodeOwnerUserService.js.map +1 -0
- package/build/dist/Server/Services/AlertEpisodeService.js +973 -0
- package/build/dist/Server/Services/AlertEpisodeService.js.map +1 -0
- package/build/dist/Server/Services/AlertEpisodeStateTimelineService.js +494 -0
- package/build/dist/Server/Services/AlertEpisodeStateTimelineService.js.map +1 -0
- package/build/dist/Server/Services/AlertGroupingEngineService.js +893 -0
- package/build/dist/Server/Services/AlertGroupingEngineService.js.map +1 -0
- package/build/dist/Server/Services/AlertGroupingRuleService.js +13 -0
- package/build/dist/Server/Services/AlertGroupingRuleService.js.map +1 -0
- package/build/dist/Server/Services/AlertService.js +11 -0
- package/build/dist/Server/Services/AlertService.js.map +1 -1
- package/build/dist/Server/Services/CallService.js +11 -10
- package/build/dist/Server/Services/CallService.js.map +1 -1
- package/build/dist/Server/Services/Index.js +18 -0
- package/build/dist/Server/Services/Index.js.map +1 -1
- package/build/dist/Server/Services/MailService.js +3 -0
- package/build/dist/Server/Services/MailService.js.map +1 -1
- package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleService.js +10 -1
- package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleService.js.map +1 -1
- package/build/dist/Server/Services/OnCallDutyPolicyExecutionLogService.js +49 -2
- package/build/dist/Server/Services/OnCallDutyPolicyExecutionLogService.js.map +1 -1
- package/build/dist/Server/Services/OnCallDutyPolicyExecutionLogTimelineService.js +21 -1
- package/build/dist/Server/Services/OnCallDutyPolicyExecutionLogTimelineService.js.map +1 -1
- package/build/dist/Server/Services/OnCallDutyPolicyService.js +9 -1
- package/build/dist/Server/Services/OnCallDutyPolicyService.js.map +1 -1
- package/build/dist/Server/Services/PushNotificationService.js.map +1 -1
- package/build/dist/Server/Services/SmsService.js +11 -10
- package/build/dist/Server/Services/SmsService.js.map +1 -1
- package/build/dist/Server/Services/UserNotificationRuleService.js +521 -43
- package/build/dist/Server/Services/UserNotificationRuleService.js.map +1 -1
- package/build/dist/Server/Services/UserNotificationSettingService.js +9 -0
- package/build/dist/Server/Services/UserNotificationSettingService.js.map +1 -1
- package/build/dist/Server/Services/UserOnCallLogService.js +48 -12
- package/build/dist/Server/Services/UserOnCallLogService.js.map +1 -1
- package/build/dist/Server/Services/WhatsAppService.js +3 -0
- package/build/dist/Server/Services/WhatsAppService.js.map +1 -1
- package/build/dist/Server/Services/WorkspaceNotificationRuleService.js +25 -0
- package/build/dist/Server/Services/WorkspaceNotificationRuleService.js.map +1 -1
- package/build/dist/Server/Utils/AnalyticsDatabase/Statement.js +4 -2
- package/build/dist/Server/Utils/AnalyticsDatabase/Statement.js.map +1 -1
- package/build/dist/Server/Utils/PushNotificationUtil.js +51 -16
- package/build/dist/Server/Utils/PushNotificationUtil.js.map +1 -1
- package/build/dist/Server/Utils/WhatsAppTemplateUtil.js +8 -0
- package/build/dist/Server/Utils/WhatsAppTemplateUtil.js.map +1 -1
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/ActionTypes.js +17 -0
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/ActionTypes.js.map +1 -1
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/AlertEpisode.js +545 -0
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/AlertEpisode.js.map +1 -0
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js +13 -0
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js.map +1 -1
- package/build/dist/Server/Utils/Workspace/Slack/Actions/ActionTypes.js +10 -0
- package/build/dist/Server/Utils/Workspace/Slack/Actions/ActionTypes.js.map +1 -1
- package/build/dist/Server/Utils/Workspace/Slack/Actions/AlertEpisode.js +651 -0
- package/build/dist/Server/Utils/Workspace/Slack/Actions/AlertEpisode.js.map +1 -0
- package/build/dist/Server/Utils/Workspace/Slack/Messages/AlertEpisode.js +100 -0
- package/build/dist/Server/Utils/Workspace/Slack/Messages/AlertEpisode.js.map +1 -0
- package/build/dist/Server/Utils/Workspace/WorkspaceMessages/AlertEpisode.js +70 -0
- package/build/dist/Server/Utils/Workspace/WorkspaceMessages/AlertEpisode.js.map +1 -0
- package/build/dist/Tests/Server/Services/AlertEpisodeMemberService.test.js +165 -0
- package/build/dist/Tests/Server/Services/AlertEpisodeMemberService.test.js.map +1 -0
- package/build/dist/Tests/Server/Services/AlertEpisodeService.test.js +193 -0
- package/build/dist/Tests/Server/Services/AlertEpisodeService.test.js.map +1 -0
- package/build/dist/Tests/Server/Services/AlertGroupingEngineService.test.js +412 -0
- package/build/dist/Tests/Server/Services/AlertGroupingEngineService.test.js.map +1 -0
- package/build/dist/Tests/Server/Services/AlertGroupingRuleService.test.js +308 -0
- package/build/dist/Tests/Server/Services/AlertGroupingRuleService.test.js.map +1 -0
- package/build/dist/Tests/Server/Utils/AnalyticsDatabase/StatementGenerator.test.js +1 -1
- package/build/dist/Tests/Server/Utils/AnalyticsDatabase/StatementGenerator.test.js.map +1 -1
- package/build/dist/Tests/UI/Components/Input.test.js +1 -1
- package/build/dist/Tests/UI/Components/Input.test.js.map +1 -1
- package/build/dist/Tests/UI/Components/TextArea.test.js +2 -2
- package/build/dist/Tests/UI/Components/TextArea.test.js.map +1 -1
- package/build/dist/Types/BaseDatabase/SortOrder.js +5 -0
- package/build/dist/Types/BaseDatabase/SortOrder.js.map +1 -1
- package/build/dist/Types/Email/EmailTemplateType.js +5 -0
- package/build/dist/Types/Email/EmailTemplateType.js.map +1 -1
- package/build/dist/Types/NotificationRule/NotificationRuleType.js +3 -1
- package/build/dist/Types/NotificationRule/NotificationRuleType.js.map +1 -1
- package/build/dist/Types/NotificationSetting/NotificationSettingEventType.js +5 -0
- package/build/dist/Types/NotificationSetting/NotificationSettingEventType.js.map +1 -1
- package/build/dist/Types/Permission.js +264 -0
- package/build/dist/Types/Permission.js.map +1 -1
- package/build/dist/Types/UserNotification/UserNotificationEventType.js +1 -0
- package/build/dist/Types/UserNotification/UserNotificationEventType.js.map +1 -1
- package/build/dist/Types/WhatsApp/WhatsAppTemplates.js +15 -0
- package/build/dist/Types/WhatsApp/WhatsAppTemplates.js.map +1 -1
- package/build/dist/Types/Workspace/NotificationRules/EventType.js +1 -0
- package/build/dist/Types/Workspace/NotificationRules/EventType.js.map +1 -1
- package/build/dist/Types/Workspace/NotificationRules/NotificationRuleCondition.js +28 -3
- package/build/dist/Types/Workspace/NotificationRules/NotificationRuleCondition.js.map +1 -1
- package/build/dist/UI/Components/Accordion/Accordion.js +10 -3
- package/build/dist/UI/Components/Accordion/Accordion.js.map +1 -1
- package/build/dist/UI/Components/Alerts/Alert.js +1 -1
- package/build/dist/UI/Components/Alerts/Alert.js.map +1 -1
- package/build/dist/UI/Components/Button/Button.js +8 -2
- package/build/dist/UI/Components/Button/Button.js.map +1 -1
- package/build/dist/UI/Components/CardSelect/CardSelect.js +1 -1
- package/build/dist/UI/Components/CardSelect/CardSelect.js.map +1 -1
- package/build/dist/UI/Components/Checkbox/Checkbox.js +2 -2
- package/build/dist/UI/Components/Checkbox/Checkbox.js.map +1 -1
- package/build/dist/UI/Components/ColorCircle/ColorCircle.js +1 -1
- package/build/dist/UI/Components/ColorCircle/ColorCircle.js.map +1 -1
- package/build/dist/UI/Components/ColorViewer/ColorViewer.js +12 -3
- package/build/dist/UI/Components/ColorViewer/ColorViewer.js.map +1 -1
- package/build/dist/UI/Components/CopyableButton/CopyableButton.js +12 -5
- package/build/dist/UI/Components/CopyableButton/CopyableButton.js.map +1 -1
- package/build/dist/UI/Components/Detail/Detail.js +1 -1
- package/build/dist/UI/Components/Detail/Detail.js.map +1 -1
- package/build/dist/UI/Components/Dropdown/Dropdown.js +5 -3
- package/build/dist/UI/Components/Dropdown/Dropdown.js.map +1 -1
- package/build/dist/UI/Components/Forms/Fields/FormField.js +19 -1
- package/build/dist/UI/Components/Forms/Fields/FormField.js.map +1 -1
- package/build/dist/UI/Components/FullPageModal/FullPageModal.js +24 -5
- package/build/dist/UI/Components/FullPageModal/FullPageModal.js.map +1 -1
- package/build/dist/UI/Components/Input/Input.js +3 -3
- package/build/dist/UI/Components/Input/Input.js.map +1 -1
- package/build/dist/UI/Components/Link/Link.js +1 -1
- package/build/dist/UI/Components/Link/Link.js.map +1 -1
- package/build/dist/UI/Components/Loader/Loader.js +6 -4
- package/build/dist/UI/Components/Loader/Loader.js.map +1 -1
- package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js +56 -3
- package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js.map +1 -1
- package/build/dist/UI/Components/Modal/Modal.js +28 -3
- package/build/dist/UI/Components/Modal/Modal.js.map +1 -1
- package/build/dist/UI/Components/ModelTable/BaseModelTable.js +23 -1
- package/build/dist/UI/Components/ModelTable/BaseModelTable.js.map +1 -1
- package/build/dist/UI/Components/MoreMenu/MoreMenu.js +67 -6
- package/build/dist/UI/Components/MoreMenu/MoreMenu.js.map +1 -1
- package/build/dist/UI/Components/OrderedStatesList/OrderedStatesList.js +14 -3
- package/build/dist/UI/Components/OrderedStatesList/OrderedStatesList.js.map +1 -1
- package/build/dist/UI/Components/Pagination/Pagination.js +69 -13
- package/build/dist/UI/Components/Pagination/Pagination.js.map +1 -1
- package/build/dist/UI/Components/ProgressBar/ProgressBar.js +2 -2
- package/build/dist/UI/Components/ProgressBar/ProgressBar.js.map +1 -1
- package/build/dist/UI/Components/Radio/Radio.js +8 -5
- package/build/dist/UI/Components/Radio/Radio.js.map +1 -1
- package/build/dist/UI/Components/SideMenu/CountModelSideMenuItem.js +23 -4
- package/build/dist/UI/Components/SideMenu/CountModelSideMenuItem.js.map +1 -1
- package/build/dist/UI/Components/StatusBubble/StatusBubble.js +2 -2
- package/build/dist/UI/Components/StatusBubble/StatusBubble.js.map +1 -1
- package/build/dist/UI/Components/Table/TableHeader.js +12 -4
- package/build/dist/UI/Components/Table/TableHeader.js.map +1 -1
- package/build/dist/UI/Components/Tabs/Tab.js +8 -1
- package/build/dist/UI/Components/Tabs/Tab.js.map +1 -1
- package/build/dist/UI/Components/Tabs/Tabs.js +4 -3
- package/build/dist/UI/Components/Tabs/Tabs.js.map +1 -1
- package/build/dist/UI/Components/TextArea/TextArea.js +3 -3
- package/build/dist/UI/Components/TextArea/TextArea.js.map +1 -1
- package/build/dist/UI/Components/Toggle/Toggle.js +7 -4
- package/build/dist/UI/Components/Toggle/Toggle.js.map +1 -1
- package/build/dist/UI/Components/Tooltip/Tooltip.js +4 -1
- package/build/dist/UI/Components/Tooltip/Tooltip.js.map +1 -1
- package/build/dist/UI/Components/TopAlert/TopAlert.js +1 -1
- package/build/dist/UI/Components/TopAlert/TopAlert.js.map +1 -1
- package/package.json +2 -1
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import DatabaseService from "./DatabaseService";
|
|
2
|
+
import Model from "../../Models/DatabaseModels/AlertGroupingRule";
|
|
3
|
+
import { IsBillingEnabled } from "../EnvironmentConfig";
|
|
4
|
+
|
|
5
|
+
export class Service extends DatabaseService<Model> {
|
|
6
|
+
public constructor() {
|
|
7
|
+
super(Model);
|
|
8
|
+
if (IsBillingEnabled) {
|
|
9
|
+
this.hardDeleteItemsOlderThanInDays("createdAt", 3 * 365); // 3 years
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export default new Service();
|
|
@@ -54,6 +54,7 @@ import CaptureSpan from "../Utils/Telemetry/CaptureSpan";
|
|
|
54
54
|
import MetricType from "../../Models/DatabaseModels/MetricType";
|
|
55
55
|
import Dictionary from "../../Types/Dictionary";
|
|
56
56
|
import OnCallDutyPolicy from "../../Models/DatabaseModels/OnCallDutyPolicy";
|
|
57
|
+
import AlertGroupingEngineService from "./AlertGroupingEngineService";
|
|
57
58
|
|
|
58
59
|
export class Service extends DatabaseService<Model> {
|
|
59
60
|
public constructor() {
|
|
@@ -351,6 +352,17 @@ export class Service extends DatabaseService<Model> {
|
|
|
351
352
|
}
|
|
352
353
|
return Promise.resolve();
|
|
353
354
|
})
|
|
355
|
+
.then(async () => {
|
|
356
|
+
// Process alert for grouping into episodes
|
|
357
|
+
try {
|
|
358
|
+
await AlertGroupingEngineService.processAlert(createdItem);
|
|
359
|
+
} catch (error) {
|
|
360
|
+
logger.error(
|
|
361
|
+
`Alert grouping failed in AlertService.onCreateSuccess: ${error}`,
|
|
362
|
+
);
|
|
363
|
+
return Promise.resolve();
|
|
364
|
+
}
|
|
365
|
+
})
|
|
354
366
|
.catch((error: Error) => {
|
|
355
367
|
logger.error(
|
|
356
368
|
`Critical error in AlertService sequential operations: ${error}`,
|
|
@@ -28,6 +28,7 @@ export class CallService extends BaseService {
|
|
|
28
28
|
customTwilioConfig?: TwilioConfig | undefined;
|
|
29
29
|
incidentId?: ObjectID | undefined;
|
|
30
30
|
alertId?: ObjectID | undefined;
|
|
31
|
+
alertEpisodeId?: ObjectID | undefined;
|
|
31
32
|
scheduledMaintenanceId?: ObjectID | undefined;
|
|
32
33
|
statusPageId?: ObjectID | undefined;
|
|
33
34
|
statusPageAnnouncementId?: ObjectID | undefined;
|
|
@@ -57,6 +58,7 @@ export class CallService extends BaseService {
|
|
|
57
58
|
: undefined,
|
|
58
59
|
incidentId: options.incidentId?.toString(),
|
|
59
60
|
alertId: options.alertId?.toString(),
|
|
61
|
+
alertEpisodeId: options.alertEpisodeId?.toString(),
|
|
60
62
|
scheduledMaintenanceId: options.scheduledMaintenanceId?.toString(),
|
|
61
63
|
statusPageId: options.statusPageId?.toString(),
|
|
62
64
|
statusPageAnnouncementId: options.statusPageAnnouncementId?.toString(),
|
package/Server/Services/Index.ts
CHANGED
|
@@ -158,6 +158,17 @@ import AlertOwnerTeamService from "./AlertOwnerTeamService";
|
|
|
158
158
|
import AlertOwnerUserService from "./AlertOwnerUserService";
|
|
159
159
|
import AlertSeverityService from "./AlertSeverityService";
|
|
160
160
|
import AlertNoteTemplateService from "./AlertNoteTemplateService";
|
|
161
|
+
|
|
162
|
+
// AlertEpisode Services
|
|
163
|
+
import AlertEpisodeService from "./AlertEpisodeService";
|
|
164
|
+
import AlertEpisodeFeedService from "./AlertEpisodeFeedService";
|
|
165
|
+
import AlertEpisodeInternalNoteService from "./AlertEpisodeInternalNoteService";
|
|
166
|
+
import AlertEpisodeMemberService from "./AlertEpisodeMemberService";
|
|
167
|
+
import AlertEpisodeOwnerTeamService from "./AlertEpisodeOwnerTeamService";
|
|
168
|
+
import AlertEpisodeOwnerUserService from "./AlertEpisodeOwnerUserService";
|
|
169
|
+
import AlertEpisodeStateTimelineService from "./AlertEpisodeStateTimelineService";
|
|
170
|
+
import AlertGroupingRuleService from "./AlertGroupingRuleService";
|
|
171
|
+
|
|
161
172
|
import TableViewService from "./TableViewService";
|
|
162
173
|
import ScheduledMaintenanceFeedService from "./ScheduledMaintenanceFeedService";
|
|
163
174
|
import AlertFeedService from "./AlertFeedService";
|
|
@@ -351,6 +362,16 @@ const services: Array<BaseService> = [
|
|
|
351
362
|
AlertNoteTemplateService,
|
|
352
363
|
AlertFeedService,
|
|
353
364
|
|
|
365
|
+
// AlertEpisode Services
|
|
366
|
+
AlertEpisodeService,
|
|
367
|
+
AlertEpisodeFeedService,
|
|
368
|
+
AlertEpisodeInternalNoteService,
|
|
369
|
+
AlertEpisodeMemberService,
|
|
370
|
+
AlertEpisodeOwnerTeamService,
|
|
371
|
+
AlertEpisodeOwnerUserService,
|
|
372
|
+
AlertEpisodeStateTimelineService,
|
|
373
|
+
AlertGroupingRuleService,
|
|
374
|
+
|
|
354
375
|
TableViewService,
|
|
355
376
|
MonitorTestService,
|
|
356
377
|
|
|
@@ -23,6 +23,7 @@ export class MailService extends BaseService {
|
|
|
23
23
|
projectId?: ObjectID | undefined;
|
|
24
24
|
incidentId?: ObjectID | undefined;
|
|
25
25
|
alertId?: ObjectID | undefined;
|
|
26
|
+
alertEpisodeId?: ObjectID | undefined;
|
|
26
27
|
scheduledMaintenanceId?: ObjectID | undefined;
|
|
27
28
|
statusPageId?: ObjectID | undefined;
|
|
28
29
|
statusPageAnnouncementId?: ObjectID | undefined;
|
|
@@ -68,6 +69,10 @@ export class MailService extends BaseService {
|
|
|
68
69
|
body["alertId"] = options.alertId.toString();
|
|
69
70
|
}
|
|
70
71
|
|
|
72
|
+
if (options?.alertEpisodeId) {
|
|
73
|
+
body["alertEpisodeId"] = options.alertEpisodeId.toString();
|
|
74
|
+
}
|
|
75
|
+
|
|
71
76
|
if (options?.scheduledMaintenanceId) {
|
|
72
77
|
body["scheduledMaintenanceId"] =
|
|
73
78
|
options.scheduledMaintenanceId.toString();
|
|
@@ -110,6 +110,7 @@ export class Service extends DatabaseService<Model> {
|
|
|
110
110
|
projectId: ObjectID;
|
|
111
111
|
triggeredByIncidentId?: ObjectID | undefined;
|
|
112
112
|
triggeredByAlertId?: ObjectID | undefined;
|
|
113
|
+
triggeredByAlertEpisodeId?: ObjectID | undefined;
|
|
113
114
|
userNotificationEventType: UserNotificationEventType;
|
|
114
115
|
onCallPolicyExecutionLogId: ObjectID;
|
|
115
116
|
onCallPolicyId: ObjectID;
|
|
@@ -173,6 +174,10 @@ export class Service extends DatabaseService<Model> {
|
|
|
173
174
|
log.triggeredByAlertId = options.triggeredByAlertId;
|
|
174
175
|
}
|
|
175
176
|
|
|
177
|
+
if (options.triggeredByAlertEpisodeId) {
|
|
178
|
+
log.triggeredByAlertEpisodeId = options.triggeredByAlertEpisodeId;
|
|
179
|
+
}
|
|
180
|
+
|
|
176
181
|
return log;
|
|
177
182
|
};
|
|
178
183
|
|
|
@@ -192,7 +197,17 @@ export class Service extends DatabaseService<Model> {
|
|
|
192
197
|
!options.triggeredByAlertId
|
|
193
198
|
) {
|
|
194
199
|
throw new BadDataException(
|
|
195
|
-
"triggeredByAlertId is required when userNotificationEventType is
|
|
200
|
+
"triggeredByAlertId is required when userNotificationEventType is AlertCreated",
|
|
201
|
+
);
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
if (
|
|
205
|
+
UserNotificationEventType.AlertEpisodeCreated ===
|
|
206
|
+
options.userNotificationEventType &&
|
|
207
|
+
!options.triggeredByAlertEpisodeId
|
|
208
|
+
) {
|
|
209
|
+
throw new BadDataException(
|
|
210
|
+
"triggeredByAlertEpisodeId is required when userNotificationEventType is AlertEpisodeCreated",
|
|
196
211
|
);
|
|
197
212
|
}
|
|
198
213
|
|
|
@@ -307,6 +322,8 @@ export class Service extends DatabaseService<Model> {
|
|
|
307
322
|
userNotificationEventType: options.userNotificationEventType!,
|
|
308
323
|
triggeredByIncidentId: options.triggeredByIncidentId || undefined,
|
|
309
324
|
triggeredByAlertId: options.triggeredByAlertId || undefined,
|
|
325
|
+
triggeredByAlertEpisodeId:
|
|
326
|
+
options.triggeredByAlertEpisodeId || undefined,
|
|
310
327
|
onCallPolicyExecutionLogId: options.onCallPolicyExecutionLogId,
|
|
311
328
|
onCallPolicyId: options.onCallPolicyId,
|
|
312
329
|
onCallPolicyEscalationRuleId: ruleId,
|
|
@@ -17,9 +17,12 @@ import ObjectID from "../../Types/ObjectID";
|
|
|
17
17
|
import Color from "../../Types/Color";
|
|
18
18
|
import AlertFeedService from "./AlertFeedService";
|
|
19
19
|
import { AlertFeedEventType } from "../../Models/DatabaseModels/AlertFeed";
|
|
20
|
+
import AlertEpisodeFeedService from "./AlertEpisodeFeedService";
|
|
21
|
+
import { AlertEpisodeFeedEventType } from "../../Models/DatabaseModels/AlertEpisodeFeed";
|
|
20
22
|
import BadDataException from "../../Types/Exception/BadDataException";
|
|
21
23
|
import IncidentService from "./IncidentService";
|
|
22
24
|
import AlertService from "./AlertService";
|
|
25
|
+
import AlertEpisodeService from "./AlertEpisodeService";
|
|
23
26
|
|
|
24
27
|
export class Service extends DatabaseService<Model> {
|
|
25
28
|
public constructor() {
|
|
@@ -55,7 +58,11 @@ export class Service extends DatabaseService<Model> {
|
|
|
55
58
|
_onCreate: OnCreate<Model>,
|
|
56
59
|
createdItem: Model,
|
|
57
60
|
): Promise<Model> {
|
|
58
|
-
if (
|
|
61
|
+
if (
|
|
62
|
+
createdItem.triggeredByIncidentId ||
|
|
63
|
+
createdItem.triggeredByAlertId ||
|
|
64
|
+
createdItem.triggeredByAlertEpisodeId
|
|
65
|
+
) {
|
|
59
66
|
const onCallPolicy: OnCallDutyPolicy | null =
|
|
60
67
|
await OnCallDutyPolicyService.findOneById({
|
|
61
68
|
id: createdItem.onCallDutyPolicyId!,
|
|
@@ -90,6 +97,14 @@ export class Service extends DatabaseService<Model> {
|
|
|
90
97
|
incidentOrAlertLink = `[Alert ${alertNumber}](${(await AlertService.getAlertLinkInDashboard(createdItem.projectId!, createdItem.triggeredByAlertId)).toString()})`;
|
|
91
98
|
}
|
|
92
99
|
|
|
100
|
+
if (createdItem.triggeredByAlertEpisodeId) {
|
|
101
|
+
const episodeNumber: number | null =
|
|
102
|
+
await AlertEpisodeService.getEpisodeNumber({
|
|
103
|
+
episodeId: createdItem.triggeredByAlertEpisodeId,
|
|
104
|
+
});
|
|
105
|
+
incidentOrAlertLink = `[Alert Episode ${episodeNumber}](${(await AlertEpisodeService.getEpisodeLinkInDashboard(createdItem.projectId!, createdItem.triggeredByAlertEpisodeId)).toString()})`;
|
|
106
|
+
}
|
|
107
|
+
|
|
93
108
|
const feedInfoInMarkdown: string = `**📞 On Call Policy Started Executing:** On Call Policy **${onCallPolicy.name}** started executing for ${incidentOrAlertLink}. Users on call on this policy will now be notified.`;
|
|
94
109
|
|
|
95
110
|
if (
|
|
@@ -118,6 +133,20 @@ export class Service extends DatabaseService<Model> {
|
|
|
118
133
|
feedInfoInMarkdown: feedInfoInMarkdown,
|
|
119
134
|
});
|
|
120
135
|
}
|
|
136
|
+
|
|
137
|
+
if (
|
|
138
|
+
onCallPolicy &&
|
|
139
|
+
onCallPolicy.id &&
|
|
140
|
+
createdItem.triggeredByAlertEpisodeId
|
|
141
|
+
) {
|
|
142
|
+
await AlertEpisodeFeedService.createAlertEpisodeFeedItem({
|
|
143
|
+
alertEpisodeId: createdItem.triggeredByAlertEpisodeId,
|
|
144
|
+
projectId: createdItem.projectId!,
|
|
145
|
+
alertEpisodeFeedEventType: AlertEpisodeFeedEventType.OnCallPolicy,
|
|
146
|
+
displayColor: Yellow500,
|
|
147
|
+
feedInfoInMarkdown: feedInfoInMarkdown,
|
|
148
|
+
});
|
|
149
|
+
}
|
|
121
150
|
}
|
|
122
151
|
}
|
|
123
152
|
|
|
@@ -159,6 +188,11 @@ export class Service extends DatabaseService<Model> {
|
|
|
159
188
|
userNotificationEventType = UserNotificationEventType.AlertCreated;
|
|
160
189
|
}
|
|
161
190
|
|
|
191
|
+
if (createdItem.triggeredByAlertEpisodeId) {
|
|
192
|
+
userNotificationEventType =
|
|
193
|
+
UserNotificationEventType.AlertEpisodeCreated;
|
|
194
|
+
}
|
|
195
|
+
|
|
162
196
|
if (!userNotificationEventType) {
|
|
163
197
|
throw new BadDataException("Invalid userNotificationEventType");
|
|
164
198
|
}
|
|
@@ -169,6 +203,7 @@ export class Service extends DatabaseService<Model> {
|
|
|
169
203
|
projectId: createdItem.projectId!,
|
|
170
204
|
triggeredByIncidentId: createdItem.triggeredByIncidentId,
|
|
171
205
|
triggeredByAlertId: createdItem.triggeredByAlertId,
|
|
206
|
+
triggeredByAlertEpisodeId: createdItem.triggeredByAlertEpisodeId,
|
|
172
207
|
userNotificationEventType: userNotificationEventType,
|
|
173
208
|
onCallPolicyExecutionLogId: createdItem.id!,
|
|
174
209
|
onCallPolicyId: createdItem.onCallDutyPolicyId!,
|
|
@@ -256,6 +291,7 @@ export class Service extends DatabaseService<Model> {
|
|
|
256
291
|
statusMessage: true,
|
|
257
292
|
triggeredByIncidentId: true,
|
|
258
293
|
triggeredByAlertId: true,
|
|
294
|
+
triggeredByAlertEpisodeId: true,
|
|
259
295
|
},
|
|
260
296
|
props: {
|
|
261
297
|
isRoot: true,
|
|
@@ -266,7 +302,8 @@ export class Service extends DatabaseService<Model> {
|
|
|
266
302
|
if (
|
|
267
303
|
onCalldutyPolicyExecutionLog &&
|
|
268
304
|
(onCalldutyPolicyExecutionLog.triggeredByIncidentId ||
|
|
269
|
-
onCalldutyPolicyExecutionLog.triggeredByAlertId
|
|
305
|
+
onCalldutyPolicyExecutionLog.triggeredByAlertId ||
|
|
306
|
+
onCalldutyPolicyExecutionLog.triggeredByAlertEpisodeId)
|
|
270
307
|
) {
|
|
271
308
|
const onCallPolicy: OnCallDutyPolicy | null =
|
|
272
309
|
await OnCallDutyPolicyService.findOneById({
|
|
@@ -308,6 +345,15 @@ export class Service extends DatabaseService<Model> {
|
|
|
308
345
|
incidentOrAlertLink = `[Alert ${alertNumber}](${(await AlertService.getAlertLinkInDashboard(onCalldutyPolicyExecutionLog.projectId!, onCalldutyPolicyExecutionLog.triggeredByAlertId)).toString()})`;
|
|
309
346
|
}
|
|
310
347
|
|
|
348
|
+
if (onCalldutyPolicyExecutionLog.triggeredByAlertEpisodeId) {
|
|
349
|
+
const episodeNumber: number | null =
|
|
350
|
+
await AlertEpisodeService.getEpisodeNumber({
|
|
351
|
+
episodeId:
|
|
352
|
+
onCalldutyPolicyExecutionLog.triggeredByAlertEpisodeId,
|
|
353
|
+
});
|
|
354
|
+
incidentOrAlertLink = `[Alert Episode ${episodeNumber}](${(await AlertEpisodeService.getEpisodeLinkInDashboard(onCalldutyPolicyExecutionLog.projectId!, onCalldutyPolicyExecutionLog.triggeredByAlertEpisodeId)).toString()})`;
|
|
355
|
+
}
|
|
356
|
+
|
|
311
357
|
const feedInfoInMarkdown: string = `**${this.getEmojiByStatus(onCalldutyPolicyExecutionLog.status)} On Call Policy Status Updated for ${incidentOrAlertLink}:**
|
|
312
358
|
|
|
313
359
|
On-call policy **[${onCallPolicy.name?.toString()}](${(await OnCallDutyPolicyService.getOnCallDutyPolicyLinkInDashboard(onCallPolicy.projectId!, onCallPolicy.id!)).toString()})** status updated to **${onCalldutyPolicyExecutionLog.status}**`;
|
|
@@ -344,6 +390,22 @@ export class Service extends DatabaseService<Model> {
|
|
|
344
390
|
feedInfoInMarkdown: feedInfoInMarkdown,
|
|
345
391
|
});
|
|
346
392
|
}
|
|
393
|
+
|
|
394
|
+
if (onCalldutyPolicyExecutionLog.triggeredByAlertEpisodeId) {
|
|
395
|
+
await AlertEpisodeFeedService.createAlertEpisodeFeedItem({
|
|
396
|
+
alertEpisodeId:
|
|
397
|
+
onCalldutyPolicyExecutionLog.triggeredByAlertEpisodeId,
|
|
398
|
+
projectId: onCalldutyPolicyExecutionLog.projectId!,
|
|
399
|
+
alertEpisodeFeedEventType: AlertEpisodeFeedEventType.OnCallPolicy,
|
|
400
|
+
displayColor: onCalldutyPolicyExecutionLog.status
|
|
401
|
+
? this.getDisplayColorByStatus(
|
|
402
|
+
onCalldutyPolicyExecutionLog.status,
|
|
403
|
+
)
|
|
404
|
+
: Blue500,
|
|
405
|
+
moreInformationInMarkdown: moreInformationInMarkdown,
|
|
406
|
+
feedInfoInMarkdown: feedInfoInMarkdown,
|
|
407
|
+
});
|
|
408
|
+
}
|
|
347
409
|
}
|
|
348
410
|
}
|
|
349
411
|
}
|
|
@@ -11,8 +11,11 @@ import logger from "../Utils/Logger";
|
|
|
11
11
|
import { LIMIT_PER_PROJECT } from "../../Types/Database/LimitMax";
|
|
12
12
|
import AlertFeedService from "./AlertFeedService";
|
|
13
13
|
import { AlertFeedEventType } from "../../Models/DatabaseModels/AlertFeed";
|
|
14
|
+
import AlertEpisodeFeedService from "./AlertEpisodeFeedService";
|
|
15
|
+
import { AlertEpisodeFeedEventType } from "../../Models/DatabaseModels/AlertEpisodeFeed";
|
|
14
16
|
import OnCallDutyPolicyService from "./OnCallDutyPolicyService";
|
|
15
17
|
import AlertService from "./AlertService";
|
|
18
|
+
import AlertEpisodeService from "./AlertEpisodeService";
|
|
16
19
|
import IncidentService from "./IncidentService";
|
|
17
20
|
import UserService from "./UserService";
|
|
18
21
|
import CaptureSpan from "../Utils/Telemetry/CaptureSpan";
|
|
@@ -80,6 +83,7 @@ export class Service extends DatabaseService<Model> {
|
|
|
80
83
|
onCallDutyPolicyId: true,
|
|
81
84
|
triggeredByIncidentId: true,
|
|
82
85
|
triggeredByAlertId: true,
|
|
86
|
+
triggeredByAlertEpisodeId: true,
|
|
83
87
|
projectId: true,
|
|
84
88
|
status: true,
|
|
85
89
|
statusMessage: true,
|
|
@@ -125,7 +129,8 @@ export class Service extends DatabaseService<Model> {
|
|
|
125
129
|
|
|
126
130
|
if (
|
|
127
131
|
!onCallDutyPolicyExecutionLogTimeline.triggeredByIncidentId &&
|
|
128
|
-
!onCallDutyPolicyExecutionLogTimeline.triggeredByAlertId
|
|
132
|
+
!onCallDutyPolicyExecutionLogTimeline.triggeredByAlertId &&
|
|
133
|
+
!onCallDutyPolicyExecutionLogTimeline.triggeredByAlertEpisodeId
|
|
129
134
|
) {
|
|
130
135
|
return;
|
|
131
136
|
}
|
|
@@ -172,6 +177,15 @@ export class Service extends DatabaseService<Model> {
|
|
|
172
177
|
incidentOrAlertLink = `[Alert ${alertNumber}](${(await AlertService.getAlertLinkInDashboard(onCallDutyPolicyExecutionLogTimeline.projectId!, onCallDutyPolicyExecutionLogTimeline.triggeredByAlertId)).toString()})`;
|
|
173
178
|
}
|
|
174
179
|
|
|
180
|
+
if (onCallDutyPolicyExecutionLogTimeline.triggeredByAlertEpisodeId) {
|
|
181
|
+
const episodeNumber: number | null =
|
|
182
|
+
await AlertEpisodeService.getEpisodeNumber({
|
|
183
|
+
episodeId:
|
|
184
|
+
onCallDutyPolicyExecutionLogTimeline.triggeredByAlertEpisodeId,
|
|
185
|
+
});
|
|
186
|
+
incidentOrAlertLink = `[Alert Episode ${episodeNumber}](${(await AlertEpisodeService.getEpisodeLinkInDashboard(onCallDutyPolicyExecutionLogTimeline.projectId!, onCallDutyPolicyExecutionLogTimeline.triggeredByAlertEpisodeId)).toString()})`;
|
|
187
|
+
}
|
|
188
|
+
|
|
175
189
|
let feedInfoInMarkdown: string = `**${this.getEmojiBasedOnStatus(status)} ${incidentOrAlertLink} On-Call Alert ${status} to ${await UserService.getUserMarkdownString(
|
|
176
190
|
{
|
|
177
191
|
userId: onCallDutyPolicyExecutionLogTimeline.alertSentToUserId!,
|
|
@@ -224,6 +238,18 @@ The on-call policy **[${onCallDutyPolicyExecutionLogTimeline.onCallDutyPolicy.na
|
|
|
224
238
|
});
|
|
225
239
|
}
|
|
226
240
|
|
|
241
|
+
if (onCallDutyPolicyExecutionLogTimeline.triggeredByAlertEpisodeId) {
|
|
242
|
+
await AlertEpisodeFeedService.createAlertEpisodeFeedItem({
|
|
243
|
+
alertEpisodeId:
|
|
244
|
+
onCallDutyPolicyExecutionLogTimeline.triggeredByAlertEpisodeId,
|
|
245
|
+
projectId: onCallDutyPolicyExecutionLogTimeline.projectId!,
|
|
246
|
+
alertEpisodeFeedEventType:
|
|
247
|
+
AlertEpisodeFeedEventType.OnCallNotification,
|
|
248
|
+
displayColor: displayColor,
|
|
249
|
+
feedInfoInMarkdown: feedInfoInMarkdown,
|
|
250
|
+
});
|
|
251
|
+
}
|
|
252
|
+
|
|
227
253
|
logger.debug("Incident Feed created");
|
|
228
254
|
}
|
|
229
255
|
}
|
|
@@ -263,6 +263,7 @@ ${onCallPolicy.description || "No description provided."}
|
|
|
263
263
|
options: {
|
|
264
264
|
triggeredByIncidentId?: ObjectID | undefined;
|
|
265
265
|
triggeredByAlertId?: ObjectID | undefined;
|
|
266
|
+
triggeredByAlertEpisodeId?: ObjectID | undefined;
|
|
266
267
|
userNotificationEventType: UserNotificationEventType;
|
|
267
268
|
},
|
|
268
269
|
): Promise<void> {
|
|
@@ -284,7 +285,17 @@ ${onCallPolicy.description || "No description provided."}
|
|
|
284
285
|
!options.triggeredByAlertId
|
|
285
286
|
) {
|
|
286
287
|
throw new BadDataException(
|
|
287
|
-
"triggeredByAlertId is required when userNotificationEventType is
|
|
288
|
+
"triggeredByAlertId is required when userNotificationEventType is AlertCreated",
|
|
289
|
+
);
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
if (
|
|
293
|
+
UserNotificationEventType.AlertEpisodeCreated ===
|
|
294
|
+
options.userNotificationEventType &&
|
|
295
|
+
!options.triggeredByAlertEpisodeId
|
|
296
|
+
) {
|
|
297
|
+
throw new BadDataException(
|
|
298
|
+
"triggeredByAlertEpisodeId is required when userNotificationEventType is AlertEpisodeCreated",
|
|
288
299
|
);
|
|
289
300
|
}
|
|
290
301
|
|
|
@@ -323,6 +334,10 @@ ${onCallPolicy.description || "No description provided."}
|
|
|
323
334
|
log.triggeredByAlertId = options.triggeredByAlertId;
|
|
324
335
|
}
|
|
325
336
|
|
|
337
|
+
if (options.triggeredByAlertEpisodeId) {
|
|
338
|
+
log.triggeredByAlertEpisodeId = options.triggeredByAlertEpisodeId;
|
|
339
|
+
}
|
|
340
|
+
|
|
326
341
|
await OnCallDutyPolicyExecutionLogService.create({
|
|
327
342
|
data: log,
|
|
328
343
|
props: {
|
|
@@ -25,6 +25,7 @@ export interface PushNotificationOptions {
|
|
|
25
25
|
// Optional relations for richer logging
|
|
26
26
|
incidentId?: ObjectID | undefined;
|
|
27
27
|
alertId?: ObjectID | undefined;
|
|
28
|
+
alertEpisodeId?: ObjectID | undefined;
|
|
28
29
|
scheduledMaintenanceId?: ObjectID | undefined;
|
|
29
30
|
statusPageId?: ObjectID | undefined;
|
|
30
31
|
statusPageAnnouncementId?: ObjectID | undefined;
|
|
@@ -28,6 +28,7 @@ export class SmsService extends BaseService {
|
|
|
28
28
|
customTwilioConfig?: TwilioConfig | undefined;
|
|
29
29
|
incidentId?: ObjectID | undefined;
|
|
30
30
|
alertId?: ObjectID | undefined;
|
|
31
|
+
alertEpisodeId?: ObjectID | undefined;
|
|
31
32
|
scheduledMaintenanceId?: ObjectID | undefined;
|
|
32
33
|
statusPageId?: ObjectID | undefined;
|
|
33
34
|
statusPageAnnouncementId?: ObjectID | undefined;
|
|
@@ -58,6 +59,7 @@ export class SmsService extends BaseService {
|
|
|
58
59
|
: undefined,
|
|
59
60
|
incidentId: options.incidentId?.toString(),
|
|
60
61
|
alertId: options.alertId?.toString(),
|
|
62
|
+
alertEpisodeId: options.alertEpisodeId?.toString(),
|
|
61
63
|
scheduledMaintenanceId: options.scheduledMaintenanceId?.toString(),
|
|
62
64
|
statusPageId: options.statusPageId?.toString(),
|
|
63
65
|
statusPageAnnouncementId: options.statusPageAnnouncementId?.toString(),
|